我目前正在为Joomla 3.x开发我的第一个MVC组件。总而言之,我在数据库中遇到语言/翻译问题。
我的问题是我需要存储来自后端的用户生成内容的翻译内容。例如,有人用德语输入一个新项目(存储在数据库中),需要另一种语言的翻译。如何在Joomla实现这一目标?我不喜欢在其余语言完全相同的情况下为每种语言生成一个新项目。
我想到了一个表“item”和一个带有该结构的表“item_language”(为了查看目的而大大简化):
项目
id PRIMARY INT
price DOUBLE(4,2)
item_language
itemid PRIMARY INT
language PRIMARY CHAR(5)
name VARCHAR(50)
在item_language
中,我想存储不同的翻译版本。在language
字段中,将有区域代码(例如de-DE)来标识语言。
我的问题:
感谢任何帮助!
答案 0 :(得分:1)
你真的发现自己在Joomla中的第一个组件是一个很好的任务!
一个相当通才的回答:
数据库模型似乎正确。或者,您可以使用JSON语言数据进行编码,但这可能会使以后的查询操作变得困难。这样,您只能使用一个表。
据我所知(如果您使用JModel / JTable来操作数据)不能直接执行此操作,因为JTable实际上只是为了操作单个表而设计的。
你能做什么:
用于编辑:想象一种以图形方式表示(供用户查看和编辑这种一对多关系)并将此数据(语言文本作为数组)发布到JModel的方法。在模型中,您可以使用JTable维护所需的关系并保存数据。
查看(不进行编辑)应该不是问题,这将是一个简单的JOIN。
如果你愿意在github上创建一个基本组件,我甚至可以帮你一把JModel / JTable。
答案 1 :(得分:0)
我找到了处理我需要的东西的方法 感谢 Valentin Despa 指导我朝着正确的方向前进: - )。
这里整个过程(简化 - 验证和省略的确切步骤):
models/forms/site.xml
中的表单字段。views/site/tmpl/edit.php
中添加自编码的Javascript(基于jQuery)来处理在数据库中存储为JSON的多种语言内容的字段。
tables/site.php
中,我使用JInput
阅读动态生成的内容,并通过生成JSON并保存到数据库来构建原始字段。它的运作与预期的一样。