新在Symfoob娱乐下载ny 4.2: IntlMessageFormatter
2018年10月5日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
的ob娱乐下载Symfony的翻译组件提供国际化PHP应用程序的工具。这些工具之一transChoice ()
基于一个数字,选择翻译方法适合照顾多元化。
然而,该方法使用专有格式定义翻译和它不允许选择消息基于其他条件(例如一个人的性别)。
与此同时,MessageFormat创建的ICU项目是一个标准的用于许多应用程序和支持更多的特性。这就是为什么ob娱乐下载Symfony 4.2引入了一个IntlFormatter类作为一个更好的替代transChoice ()
。
的满MessageFormat格式指南起初是令人生畏的,因为它所支持的所有功能。下面的示例选择翻译基于性别和数量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27日28
使用ob娱乐下载\组件\翻译\格式化程序\IntlFormatter;美元翻译=< < <“_TRANSLATION_”{gender_of_host、选择、女性{{num_guests,复数,抵消:1 = 0{{主机}不给一个聚会。}= 1{{主机}邀请{客人}她的政党。}= 2{{主机}邀请{客人}和另一个人她的政党。其他}{{主机}邀请{客人}#的人邀请参加她的聚会。男性}}}{{num_guests,复数,抵消:1 = 0{{主机}不给一个聚会。}= 1{{主机}邀请{客人}。}= 2{{主机}邀请{客人}和另一个人他的政党。其他}{{主机}邀请{客人}#的人邀请参加他的聚会。其他}}}{{num_guests,复数,抵消:1 = 0{{主机}不给一个聚会。}= 1{{主机}邀请{客人}他们聚会。}= 2{{主机}邀请{客人}和一个人聚会。其他}{{主机}邀请{客人}#的人邀请参加他们的聚会。}}}}_TRANSLATION_;美元消息= (新IntlFormatter ())- >formatIntl (美元翻译,“en”,(“gender_of_host”= >“男”,“num_guests”= >10,“主机”= >“乔”,“客人”= >“简”]);/ /消息美元= ' Jon邀请简的9人邀请去他的聚会。
在Syob娱乐下载mfony应用程序中,这种新的格式化程序显式地启用基于您的翻译文件的名称。具体来说,添加+ intl-icu
后缀,如果你想要翻译的文件处理这个新的格式化程序。例如,messages.en.xlf
使用旧格式器,消息+ intl-icu.en.xlf
使用新的格式化程序。
最后,新的格式化程序也不赞成transChoice ()
方法,所取代反式()
方法的参数%数%
。
发表在#生活在边缘
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
Malte Wunsch is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now如果你需要加护病房翻译但不能等待/更新Symfony 4.2,您可能想看一看https://github.com/weob娱乐下载bfactory/WebfactoryIcuTranslationBundle。