simplesamlphp / twig-configurable-i18n
这是Twig的i18n扩展的一个扩展,允许您自定义用于翻译的函数。
Requires
- php: >=7.1
- twig/extensions: @dev
Requires (Dev)
- phpunit/phpunit: ^7.5
- sensiolabs/security-checker: ~6.0.3
- simplesamlphp/simplesamlphp-test-framework: ~0.1.2
- squizlabs/php_codesniffer: ^3.5
- twig/twig: ^2.15.3
This package is auto-updated.
Last update: 2022-12-28 16:46:06 UTC
README
这是一个将Twig的本地国际化扩展与其他翻译系统(如PHP的本地gettext扩展)一起工作的解决方案。这样,您可以使用其他实现,例如gettext/gettext,或者甚至您自己的实现,前提是您有一个函数可以用于翻译单数字符串,另一个函数用于翻译复数字符串。
安装
如果您使用composer,安装就像要求此软件包一样简单
composer require jaimeperez/twig-configurable-i18n
如果您不使用composer,您需要手动将此项目中所有的(四个)源文件包含到您的脚本中,并确保您已安装twig/extension
软件包。
使用方法
使用此扩展非常简单,不需要您修改代码或现有的模板,只需修改您希望进行国际化的PHP脚本中的一两个地方。
首先,为两个类创建别名,以便在此扩展中定义的类覆盖默认类
use SimpleSAML\TwigConfigurableI18n\Twig\Environment as Twig_Environment; use SimpleSAML\TwigConfigurableI18n\Twig\Extensions\Extension\I18n as Twig_Extensions_Extension_I18n;
第一行允许您重新定义twig环境类,这样您就可以保留传递给构造函数的配置选项。第二行安装此扩展而不是本地扩展。现在,您的代码将使用此扩展而无需进一步修改,PHP的本地gettext将继续被使用。
现在,您可以配置扩展以使用不同的翻译函数。您将通过传递选项给刚刚导入的Twig环境类来完成此操作
$twig = new Twig_Environment($loader, array( 'translation_function' => 'translate', 'translation_function_plural' => 'translate_plural' ));
这些是唯一支持的两个选项。 translation_function
允许您指定一个能够翻译字符串的函数,相当于 gettext()
。另一方面,translate_function_plural
允许您指定一个处理字符串复数翻译的函数。这相当于 ngettext()
。
现在您已经设置好了。Twig将使用您刚刚指定的 translate()
和 translate_plural()
函数,而不是本地的 gettext()
和 ngettext()
函数。当然,您需要指定一些实际存在的函数,但这取决于您想要使用哪个gettext实现。例如,如果您计划使用Oscar Otero的纯PHP实现gettext/gettext,您可以这样做
use \Gettext\Translator as Translator; ... $this->translator = new Translator(); $this->translator->register(); ... $twig = new Twig_Environment($loader, array( 'translation_function' => '__', 'translation_function_plural' => 'n__' ));