Cakephp i18n获取翻译语言环境

3
我必须说,cakephp(使用1.3版本,因为项目是这样设置的)对i18n有一个奇怪的概念。
我已经成功地翻译了静态字符串,但动态字符串... cake如何管理多语言内容的想法似乎有点让人尴尬。
我设置了i18n表格(稍后会将其拆分成几个表格,以便在获得工作时进行操作),并将翻译行为附加到所需的模型上。
到目前为止一切顺利,然后,在添加操作中,我添加了一个包含区域设置(en_us、de_de...)的选择字段,以便用户可以决定保存哪个区域设置。在保存记录之前,我执行了$this->Modelname->locale = $locale;来告诉模型要使用哪个区域设置。
记录被成功保存,但是,问题来了:
  • 我有一个带有很多记录的索引操作,我希望用户有可能为每个项目提供不同的翻译(比如:一个项目被翻译成英语(美国)和德语,另一个项目被翻译成英语(美国)、意大利语和法语,我该如何让用户有可能编辑/删除单个翻译?
  • 我在需要获取区域设置名称(哪些翻译存在)的操作中使用了$this->Modelname->bindTranslation(...),以便用户可以决定要编辑哪个区域设置,是否有另一种更优雅的方法来完成这个操作?此外,当我执行$this->Modelname->bindTranslation(...);而不是使用find()方法时,我使用paginate()方法时,它不会返回任何翻译...

1
这样的复杂问题最好采用以下方式:1- 在问题中使用更多格式而不是单个长段落。2- 提供代码示例以帮助演示您正在做什么,这样帮助者就不必想象一切或尝试从描述中重新创建它。 - Chuck Burgess
好的,让我们用更简单的方式来尝试一下: 首先,我有多个翻译的记录,我想获取每行存在的语言/区域名称。 例如:我有4行数据,对于每行可能有不同语言的翻译,我想知道每行存在哪些语言。 - AlexFr.
1个回答

1

我有一个Cakephp2.0的解决方案,可能也适用于Cakephp1.3,但我从未测试过。您需要重命名一些东西并编辑一些内容,但它可能有效。

如果可以的话:我建议您在项目处于早期阶段时更新到Cakephp2.0。自从Cakephp2.1最终发布以来,1.3已经被弃用。

我大约进行了两到三次更新过程,这需要一天或两天的工作时间。在我的情况下,我从头开始重新启动了项目。虽然更新的shell确实做得很好,但我并不真的信任它。

长话短说。

我的方法包括覆盖现有的TranslateBehavior,添加新的TranslationBehavior、helper和component。

这里是包含文件的zip文件。

http://www.func0der.de/cakephp/MultiLanguageForms.zip

一旦我学会了如何正确使用GIT,我就会向他们发起拉取请求。 带有文件的工单已经在这里:http://cakephp.lighthouseapp.com/projects/42648/tickets/2463-multi-language-forms#ticket-2463-4 ;)

使用方法非常简单。 在控制器中,您需要包含组件和助手。模型获取翻译和翻译行为。由于回调问题,Translatio应该放在前面。但是如果不这样做,脚本也会抛出异常。

组件将自动查找“Locale”文件夹中存在的所有语言,并将它们安全地保存到Configure类中。

在视图中,您可以使用$this->Translation->inputs('Modelname.field');。 模型名称很重要,因为我还没有找到一种自动确定它的方法,因为我不确定我的助手中的FormHelper实例是否与视图中的相同。而且我时间不多。^^

TranslationBehavior将根据字段名称验证每个语言字段。

如果有任何问题:请问^^ 虽然我不经常在这里,但我会尽量查看这个问题;)

问候 func0der


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接