simplesamlphp/twig-configurable-i18n

此软件包已被废弃,不再维护。未建议替代软件包。

这是Twig的i18n扩展的一个扩展,允许您自定义用于翻译的函数。

v2.3.5 2022-11-28 16:34 UTC

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__'
));