2012-03-07 149 views
3

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

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

在此先感谢!

+1

复杂的问题,像这样的工作做得更好与以下内容:1 - 更多的问题格式,而不是一个长的段落。 2-代码示例以帮助证明您正在做什么,因此帮助人员无需将所有内容可视化或尝试从描述中重新创建它。 – 2012-03-08 02:08:52

+0

好吧,让我们以更简单的方式尝试: 首先,我有多个翻译记录,我想获取每行存在的语言/区域设置名称。例如:我有4行数据,每行可以有不同语言的翻译,我想知道每行有多少种语言。 – 2012-03-08 07:29:57

回答

1

我有一个Cakephp2.0的解决方案,它可能与CakePHP1.3一起工作,我也从来没有测试过。你必须重新命名和编辑一些东西,但它可能会起作用。 案例:只要您处于项目的早期状态,我建议您更新Cakephp2.0。自从CakePHP2.1最终发布以来,1.3已经被弃用了。 我经历了大约两三次的更新过程,这是一天的工作,也许是两天。在我的情况是从头开始重新启动项目。尽管它做的非常棒,但我并不完全相信更新后的shell。

长话短说。

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

下面是压缩文件。

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

只要我想通了如何正确使用GIT,我就会把它要求给他们。 带有文件的票已经在:http://cakephp.lighthouseapp.com/projects/42648/tickets/2463-multi-language-forms#ticket-2463-4;)

这个用法很简单。 在控制器中包含组件和帮助程序。这些模型获得了翻译和翻译行为。翻译首先是因为回调问题。但是剧本无论如何都会抛出异常。

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

在视图中使用$ this-> Translation-> inputs('Modelname.field');. 模型名称是重要的,因为我还没有想出一种方法,以确定自动,因为我不知道如果我的助手中的FormHelper实例是在视图中相同。我有时间泄漏。^^

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

如果有任何疑问:询问^^ 通过我在这里不是很经常,我会尝试看看在这个问题上)

问候 func0der