我必须说,cakephp(使用1.3版本,因为项目是用它建立的)有一个奇怪的i18 n概念。
我确实成功地翻译了静态字符串,但是动态字符串...... cake关于如何管理多语言内容的想法对我来说似乎有点,比方说,笨拙。(稍后我会把它分成几个表格),并把转换行为附加到所需的模型上。在add-actions中,我添加了一个包含locale(en_us,de_de...)的选择字段,以便用户可以决定保存哪一个。
记录保存成功,但是出现了问题:
- 我有一个索引操作,其中包含大量记录,我希望用户能够为每个项目提供不同的翻译(比如:一个项目被翻译成英语(美国)和德语,另一个项目被翻译成英语(美国)、意大利语和法语,我如何给予用户能够编辑/删除单个翻译?
- 我确实使用了
$this->Modelname->bindTranslation(...)
内部操作,在那里我需要获得区域设置名称(存在哪些翻译),以便用户可以决定编辑哪个,是否有其他更优雅的方法来完成这一点?此外,当我这样做时:$this->Modelname->bindTranslation(...);
,然后我不使用find()方法,而是使用paginate(),它不返回任何翻译...
1条答案
按热度按时间8wigbo561#
我有一个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将根据字段名称验证每一个语言字段。
如有疑问:问:由于我不经常在这里,我将试着看一下这个问题;)
问候函式