Cakephp i18n获得翻译区域设置

时间:2012-03-07 22:09:32

标签: cakephp internationalization cakephp-1.3

我必须说cakephp(使用1.3版本,因为项目设置了它)有一个奇怪的概念i18n。 我确实将静态字符串翻译成功,但动态的字符串...蛋糕的想法如何管理多语言内容似乎有点让我说。 我确实设置了i18n表(稍后当我使用它时会在几个表中拆分)并将转换行为附加到所需的模型。 到目前为止一直很好,然后,在add-actions中我添加了一个包含locales(en_us,de_de ...)的select字段,以便用户可以决定保存一个。 Bevore保存记录,我做了一个$this->Modelname->locale = $locale;告诉模型使用的语言环境。 记录成功保存,但是,这里出现了问题:   - 我有一个索引动作有很多记录,我希望用户有可能为每个项目有不同的翻译(假设:一个项目被翻译成英语(我们)和德语,另一个被翻译成英语(我们),意大利语和法语,我如何给用户编辑/删除单个翻译的可能性?   - 我确实使用了$this->Modelname->bindTranslation(...)内部操作,我需要获取区域设置名称(存在翻译),以便用户可以决定编辑哪一个,是否有另一种更优雅的方法来完成此操作?另外,当我这样做:$this->Modelname->bindTranslation(...);然后使用find()方法,而不是使用paginate(),它不返回任何翻译... = /

我希望有人理解我有点过于复杂的文字,可以帮助我; - )

提前致谢!!

1 个答案:

答案 0 :(得分:1)

我有一个Cakephp2.0的解决方案,它可能也适用于Cakephp1.3,我也从未测试过。你必须重命名东西并编辑一些东西,但它可能有效。 如果:我建议您更新到Cakephp2.0,只要您处于项目的早期状态。自Cakephp2.1终于发布以来,1.3已被弃用。 我经历了大约两三次更新过程,这是一天的工作,也许是两天。在我的情况下,从头开始重新启动项目。我真的不相信更新的shell,尽管它做得很好。

长话短说。

我的方法包括覆盖现有的TranslateBehavior,添加了一个新的TranslationBehavior,一个帮助器和一个组件。

这是包含文件的zip。

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

一旦我弄清楚如何正确使用GIT,我就会向他们提出请求。 带文件的票证已在:http://cakephp.lighthouseapp.com/projects/42648/tickets/2463-multi-language-forms#ticket-2463-4;)

用法非常简单。 在Controller中,您包含组件和帮助程序。模型获得翻译和翻译行为。由于回调问题,Translatio首先出现。但是无论如何,脚本都会抛出异常。

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

在视图中,您使用$ this-> Translation-> inputs('Modelname.field');. 模型名称很重要,因为我还没有想出办法,自动确定,因为我不确定我的帮助器中的FormHelper实例是否与View中的相同。而且我有时间的漏洞。 ^^

TranslationBehavior将验证每个!基于字段名称的语言字段。

如果有任何问题:请问^^ 通过我不经常在这里,我会试着看看这个问题;)

问候 func0der