2013-09-23 71 views
4

什么是最好的解决方案,以使joomla3.1自定义组件多语言平台兼容?我的意思是我有3种语言运行的网站,我的组件应该能够证明我的组件的翻译项目joomla自定义组件翻译compability

realestates 

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

将是一个很好的解决方法,以延长我的项目表列translation这使翻译语言代码每次查询会考虑到这一点

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

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

回答

3

要使组件成为多语言,您需要定义存储在网站管理员和公共端的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

+0

,哪些哪些是动态创建的,你如何翻译主题的记录?惠特ini文件我没有问题,这是行不通 – fefe

+0

你不应该动态生成语言。例如,如果你生成了这样的东西:我有$ x苹果,你需要使用'JText :: sprintf()'。 Google:jtext sprintf。然后您将该变量作为参数传递给语言字符串。在语言字符串定义里面,你可以使用'%d'作为数字,'%s'作为字符串。 – Ortix92

+0

也许不清楚我想要什么。我希望能够用不同的语言翻译我的组件的内容。内容由mysql处理。 – fefe