【问题标题】:joomla custom component translation compatibilityjoomla 自定义组件翻译兼容性
【发布时间】:2013-09-28 23:32:07
【问题描述】:

使 joomla3.1 自定义组件多语言平台兼容的最佳解决方法是什么?我的意思是我的网站以 3 种语言运行,我的组件应该能够显示我的组件的翻译项

realestates

  --realestate(items) - en-EN
  --realestate(items) - de-DE
  --realestate(items) - cn-CN

使用translation 列扩展我的项目表将是一个很好的解决方法,该列保留翻译语言代码,每次查询都会考虑到这一点

select * item from realestets where translation = 'en-EN'

或者有更好的方法来做到这一点?

【问题讨论】:

    标签: components translate joomla3.1


    【解决方案1】:

    要使您的组件支持多语言,您需要定义语言文件,这些文件存储在网站管理员和公共端的language 文件夹中。这些语言文件是.ini 文件,应该为您要包含的每种语言定义。因此,如果您使用英语和荷兰语,您的文件 .ini 文件应该在:

    /language/en-GB/en-GB.com_yourcom.ini

    /language/nl-NL/nl-NL.com_yourcom.ini

    然后每个字符串都应该传递给JText 类中的翻译方法_()(是的,这是一个下划线),如下所示:

    JText::_("COM_YOURCOM_STRING") 其中COM_YOURCOM_STRING 只是组件中的一个字符串。

    如果您要翻译的字符串是一大块文本,我建议使用简短的字符串描述。

    编辑: 对于您的具体情况,我会在存储项目的表中添加一列 translation_id。然后创建一个包含 3(或 4)列存储翻译的新表:

    id, item_id, (language), translation

    在您的组件 xml 中,您可以添加一个条目,该条目会生成一个下拉列表来定义您的项目所使用的语言。如果它不是默认语言,它应该在翻译表中创建一个新条目。

    我还建议看看 Joomla!在内部管理语言以及 Joomfish 的工作方式!

    好资源:

    http://docs.joomla.org/Embedding_translatable_strings_in_the_template

    http://docs.joomla.org/Specification_of_language_files

    http://docs.joomla.org/Language_Guidelines_for_3rd_Party_Extensions

    【讨论】:

    • 那么动态创建的记录如何翻译主题? Whit ini 文件我没有任何问题
    • 您不应该动态生成语言。例如,如果您生成如下内容:我有 $x 个苹果,您需要使用 JText::sprintf()。谷歌:jtext sprintf。然后,您将变量作为参数传递给语言字符串。在语言字符串定义中,您可以将%d 用于数字,将%s 用于字符串。
    • 也许不清楚我想要什么。我希望能够将我的组件内容翻译成不同的语言。内容由mysql处理。
    • @fefe 这是您组件的根本问题。您不应该在数据库中存储可翻译的字符串。为什么还要将它存储在数据库中?
    • 好吧,让我更具体一点:我有一个房地产(en)属性保存在数据库中(如价格、描述!!!)。如果需要在不同情况下更新描述,您将如何用德语翻译房地产描述?
    猜你喜欢
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2013-05-17
    • 2011-03-20
    相关资源
    最近更新 更多