【问题标题】:Best practice Joomla multilingual country list database tables?最佳实践 Joomla 多语言国家列表数据库表?
【发布时间】:2017-12-09 00:52:44
【问题描述】:

根据用户在 Joomla 中的语言,设计包含翻译国家特定数据的多语言数据库表的最佳实践是什么?

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

这是当前数据库表

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

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

【问题讨论】:

    标签: mysql joomla


    【解决方案1】:

    由于您正在创建自己的组件,因此您不需要使用 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)
    

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

    【讨论】:

    • 谢谢!我会试一试的。
    猜你喜欢
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多