翻译成分

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.6,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

翻译成分

Translation组件提供了国际化应用程序的工具。

安装

你可以用两种不同的方式安装组件:

然后,要求供应商/ autoload.php文件以启用Composer提供的自动加载机制。否则,您的应用程序将无法找到这个Symfony组件的类。ob娱乐下载

构建翻译器

Translation组件的主要访问点是翻译.在使用它之前,您需要配置它并加载要翻译的消息(称为信息目录).

配置

的构造函数。翻译类需要一个参数:区域设置。

1 2 3 4
使用ob娱乐下载组件翻译翻译使用ob娱乐下载组件翻译MessageSelector翻译翻译(“fr_FR”MessageSelector ());

请注意

此处设置的语言环境是要使用的默认语言环境。在翻译字符串时,可以重写此区域设置。

请注意

这个词语言环境大致指用户的语言和国家。它可以是应用程序用来管理翻译和其他格式差异(例如货币格式)的任何字符串。的ISO 639 - 1语言代码,一个下划线(_),然后ISO 3166-1 alpha-2国家代码(如。fr_FR法语/法国)。

加载消息目录

类中的消息目录中存储消息翻译类。消息目录类似于特定地区的翻译字典。

Translation组件使用Loader类来加载目录。您可以为同一地区加载多个资源,然后将这些资源组合到一个目录中。

该组件带有一些默认的加载器,您也可以创建自己的加载器。默认的加载器是:

所有文件加载程序都要求配置组件

你也可以创建自己的Loader,以防默认加载器之一不支持该格式。

方法中添加一个或多个加载器翻译

1 2
/ /……翻译->addLoader (“数组”ArrayLoader ());

第一个参数是可以在翻译器中引用加载器的名称,第二个参数是加载器本身的实例。在此之后,您可以使用正确的加载器添加资源。

使用ArrayLoader

可以通过调用来加载消息addResource ().第一个参数是加载器名称(这是addLoader方法),第二个参数是资源,第三个参数是区域设置:

1 2 3 4
/ /……翻译->addResource (“数组”数组“Hello World !”= >“你好”),“fr_FR”);

使用文件加载器加载消息

如果使用其中一个文件加载程序,还应该使用addResource方法。唯一的区别是你应该把文件名作为资源文件的第二个参数,而不是一个数组:

1 2 3
/ /……翻译->addLoader (yaml的YamlFileLoader ());翻译->addResource (yaml的“路径/ / messages.fr.yml”“fr_FR”);

翻译过程

要真正翻译消息,Translator使用一个简单的过程:

  • 类定义的翻译资源加载已翻译消息的目录语言环境(如。fr_FR).来自翻译成分也会加载并添加到目录中(如果它们不存在的话)。最终的结果是一个庞大的翻译“字典”;
  • 如果消息位于目录中,则返回翻译。如果不是,翻译器将返回原始消息。

你通过呼叫开始这个过程反式()transChoice ().然后,Translator在适当的消息目录中查找确切的字符串并返回它(如果它存在)。

回退地区

如果消息不在特定区域设置的目录中,翻译器将查找一个或多个备用区域设置的目录。例如,假设你要把它翻译成fr_FR地区:

  1. 首先,翻译器在fr_FR语言环境;
  2. 如果没有找到,翻译器将在fr语言环境;
  3. 如果仍然没有找到翻译,则翻译器使用在翻译器上显式设置的一个或多个备用区域设置。

对于(3),可以通过调用setFallbackLocales ()

1 2
/ /……翻译->setFallbackLocales (数组“en”));

使用消息域

如您所见,消息文件按照它们所翻译的不同地区进行组织。消息文件还可以进一步组织成“域”。

属性的第四个参数指定域addResource ()方法。默认域为消息.例如,为了组织,假设将翻译分为三个不同的领域:消息管理而且导航.法语翻译是这样加载的:

1 2 3 4 5 6 7 8 9 10 11
/ /……翻译->addLoader (“xlf”XliffFileLoader ());翻译->addResource (“xlf”“messages.fr.xlf”“fr_FR”);翻译->addResource (“xlf”“admin.fr.xlf”“fr_FR”“管理”);翻译->addResource (“xlf”“navigation.fr.xlf”“fr_FR”“导航”);

当翻译不在默认域中的字符串时(消息),则必须将域指定为的第三个参数反式()

1
翻译->反式(“ob娱乐下载Symfony很棒”数组(),“管理”);

ob娱乐下载Symfony现在将在管理指定区域设置的域。

使用

中如何使用Translation组件使用翻译工具

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。