cakephp中每种语言有多个短语

cakephp中每种语言有多个短语,cakephp,localization,Cakephp,Localization,我正在使用CakePHP创建一个网站,它不仅需要翻译成多种语言,还需要根据登录用户的类型将每种语言翻译成多个短语。这将允许相同的功能,但使用更正式或更友好的语言,而不会重复 作为一个非常简单的例子: 类型1:“客户”、“采购”、“购物车” 类型2:“客户”、“购买”、“篮子” 类型3:“用户”、“订单”、“发票” 每种类型都有多种语言版本 我已经在CakePHP中使用了标准本地化(我选择它的原因之一!),并且在/Locale/[lang]/LC_MESSAGES/目录中有适当的default

我正在使用CakePHP创建一个网站,它不仅需要翻译成多种语言,还需要根据登录用户的类型将每种语言翻译成多个短语。这将允许相同的功能,但使用更正式或更友好的语言,而不会重复

作为一个非常简单的例子:

  • 类型1:“客户”、“采购”、“购物车”
  • 类型2:“客户”、“购买”、“篮子”
  • 类型3:“用户”、“订单”、“发票”
每种类型都有多种语言版本

我已经在CakePHP中使用了标准本地化(我选择它的原因之一!),并且在/Locale/[lang]/LC_MESSAGES/目录中有适当的default.po文件,所有这些都在那里工作正常(感谢在本网站上指出ger需要deu才能工作的用户;)

在我深入应用程序之前,我想添加短语,以便我可以将语言设置为法语,短语设置为type2。如果我是在框架之外做这件事,我会进行矩阵查找,根据语言和短语键找到正确的字符串,但我不确定如何在CakePHP的本地化中做到这一点

目前我使用的是标准的_([string])约定,但由于这是开发周期的早期,如果有必要的话,对其进行更改是微不足道的

我曾考虑使用uu d([phrase],[string]),但如果不将我的应用程序创建为插件,我就看不到如何设置它,然后我又回到了/Locale的同样问题/

我在SO或cakePHP社区网站上的搜索中找不到这方面的任何例子,因此如果有任何建议,我将不胜感激

在cakePHP中有没有标准的方法来实现这一点?如果不是,那么什么是实现这一点的好“最佳实践”方法

编辑-以下是它的实施方式:

在/app/Locale/[lang]/LC_MESSAGES/I中,我创建了一个新的.po文件,其中的新措辞为phrase1.po、phrase2.po等

在设置语言的地方,我还设置了短语文件与po文件名称匹配的短语:

Configure::write('Config.language', 'deu');
Configure::write('App.langDomain', 'phrase1');
所有的线都用以下材料包裹:

__d(Configure::read('App.langDomain', 'string') 
它就是这样工作的。

像这样使用:

__d(Configure::read('App.langDomain'), 'Some string');
在bootstrap.php中,检查条件并根据需要设置App.langDomain

__d()与插件无关,您可以在任何地方使用它

另一种方法是使用自定义方法包装您的翻译,例如

__dd(Configure::read('App.langDomain'), array('foo' => __('String1', 'bar' => __('String2'));

该数组是langDomain=>stringForThatDomain映射的数组。您的uu dd()方法将采用在第一个参数中传递的方法。

非常感谢-知道会有一些简单的方法可以“正常工作”:@Yssybyl为了避免必须使用
\uu d(…)
为每个字符串设置域,还可以更改默认域;e、 g.
I18n::$defaultDomain='mydomain'
我希望您能提供反馈,解释为什么投票被否决。我相信问题很清楚,我找不到重复的。提前谢谢。