最佳做法Joomla多语言国家/地区列表数据库表?

问题描述 投票:0回答:1

设计多语言数据库表的最佳实践是什么(取决于Joomla中的用户语言,该表包含特定国家/地区的翻译数据)?

我无法添加像在其他Joomla数据库表(例如com_content)中所使用的那样的语言键行,因为某些行是而且必须是唯一的。

这是当前数据库表

图1:当前数据库表内容

图2:当前数据库表结构

图3:当前数据库表索引

这是我需要的结果。

语言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

还是有其他更好的方法? 提前致谢!

mysql joomla
1个回答
0
投票

由于您正在创建自己的组件,因此无需使用Joomla的本机多语言功能。

我会按原样保留您的表格,使用该名称作为缺少翻译的备用。 添加另一个表, country_names ,将languagecode3作为主键,以保留翻译后的国家/地区名称。

因此,您将得到(简化)

#__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)

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

© www.soinside.com 2019 - 2024. All rights reserved.