最佳实践Joomla多语言国家列表数据库表?

时间:2017-12-08 14:56:52

标签: mysql joomla

根据Joomla中的用户语言设计包含翻译的国家/地区特定数据的多语言数据库表的最佳做法是什么?

我无法添加像com_content这样的其他Joomla数据库表中使用的语言键行,因为有些行是且必须是唯一的。

这是当前的数据库表

Image 1: Current database table content

Image 2: Current database table structure

Image 3: Current database table Indexes

这是我需要的结果。

语言A的数据

ID| Name     | Code3 | Code2 | TaxRateID | EU
- - - - - - - - - - - - - - - - - - - - - -
12  Aruba       ABW     AW         1       0
13  Australia   AUS     AU         1       0
14  Austria     AUT     AT         2       1

语言B的数据

ID | Name     | Code3 | Code2 | TaxRateID | EU
- - - - - - - - - - - - - - - - - - - - - - -
12  Aruba        ABW     AW         1       0
13  Australien   AUS     AU         1       0
14  Österreich   AUT     AT         2       1

我应该为每种语言添加带有语言后缀的额外表吗?

prefix_table_LANGUAGE

或者还有其他更好的方法吗? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

由于您正在创建自己的组件,因此您不需要使用Joomla的原生多语言功能。

我保持你的桌面不变,使用名称作为缺失翻译的后备。添加另一个表country_nameslanguagecode3作为主键,以保留已翻译的国家/地区名称。

所以你最终会得到(简化)

#__countries {
    id,
    name,
    code3,
    code2,
    tax_rate_id,
    eu
}

#__country_names {
    code3,
    language,
    name
}

您的查询将如下所示:

   SELECT a.id, COALESCE(b.name, a.name) AS name, a.code3, a.code2, a.tax_rate_id, a.eu
     FROM #__countries AS a
LEFT JOIN #__country_names AS b ON (a.code3=b.code3 AND b.language=$lang)

(未经测试 - 将其作为草图)。