在数据库中存储Joomla组件的翻译版本

在数据库中存储Joomla组件的翻译版本,joomla,internationalization,joomla-extensions,Joomla,Internationalization,Joomla Extensions,我目前正在为Joomla 3.x开发我的第一个MVC组件。总而言之,我正在为数据库中的语言/翻译问题而挣扎 我的问题是,我需要存储来自后端的用户生成内容的翻译内容。例如,有人用德语输入一个新项目(存储在数据库中),并需要另一种语言的翻译。如何在Joomla做到这一点?我不喜欢在其他语言都相同的情况下为每种不同的语言生成一个新项目 我想到了一个表“item”和一个表“item_language”,其结构是这样的(为了便于查看,对其进行了高度简化): 项目 id PRIMARY INT price

我目前正在为Joomla 3.x开发我的第一个MVC组件。总而言之,我正在为数据库中的语言/翻译问题而挣扎

我的问题是,我需要存储来自后端的用户生成内容的翻译内容。例如,有人用德语输入一个新项目(存储在数据库中),并需要另一种语言的翻译。如何在Joomla做到这一点?我不喜欢在其他语言都相同的情况下为每种不同的语言生成一个新项目

我想到了一个表“item”和一个表“item_language”,其结构是这样的(为了便于查看,对其进行了高度简化):

项目

id PRIMARY INT
price DOUBLE(4,2)
项目语言

itemid PRIMARY INT
language PRIMARY CHAR(5)
name VARCHAR(50)
item\u language
中,我想存储不同的翻译版本。在
language
字段中,将有地区代码(例如de de)来标识语言

我的问题:

  • 如何在后端显示不同的(翻译的)版本
  • 这是正确的数据库模型吗
感谢您的帮助

对于Joomla中的第一个组件,您确实找到了一个不错的任务

一个相当笼统的回答:

  • 数据库模型似乎是正确的。或者,您可以用JSON编码语言数据,但这可能会使以后的查询操作变得潜在困难。这样,您将只有一张桌子可以使用

  • 据我所知(如果您使用JModel/JTable来操作数据),不能直接这样做,因为JTable实际上只设计用于操作单个表

你能做什么:

  • 用于编辑:以图形方式表示此关系(供用户查看和编辑此一对多关系)并将此数据(语言文本作为数组)发布到JModel。在模型中,您可以维护所需的关系,并使用JTable保存数据

  • 查看(不编辑)不应该是一个问题,这将是一个简单的连接


如果您愿意在github上创建一个基本组件,我甚至可以帮助您使用JModel/JTable。

我找到了处理所需内容的方法。
感谢瓦伦丁·德斯帕(Valentin Despa)为我指引了正确的方向:-)

这里是整个过程(简化-验证和精确步骤省略):

  • models/forms/site.xml
    中正常定义表单字段
  • views/site/tmpl/edit.php
    中添加自编码Javascript(基于jQuery),以处理数据库中以JSON形式存储有多种语言内容的字段。
    • 克隆原始表单元素并修改所需的属性(id、名称,…)以仅显示定义语言的特殊版本。作为内容-从原始字段内容中提取所需语言的JSON并显示
    • 使用Javascript隐藏原始字段,并将自定义版本附加到DOM
  • 之后,在
    tables/site.php
    中,我使用
    JInput
    阅读了动态生成的内容,并通过生成JSON并保存到数据库来构建原始字段

工作正常。

谢谢您的回复。我只是想知道用JForm表示它的最好方式是什么。我想对于不同的语言,首选的方法是定制JFormField实现。你能提出一些建议吗?:-)在列表中读取和显示正确的版本不是问题。我只是想知道创建/编辑不同版本条目的表单。谢谢尝试找到一个通用的JavaScript/jQuery解决方案来满足您的需要。让它独立工作,然后找到一种使用JFormField的方法