使joomla3.1自定义组件多语言平台兼容的最佳解决方法是什么?我的意思是我让网站运行3种语言,我的组件应该能够显示我的组件的翻译项目
realestates
--realestate(items) - en-EN
--realestate(items) - de-DE
--realestate(items) - cn-CN
使用列translation
扩展我的items表是一个很好的解决方法,它会在每次查询考虑这一点时保留翻译语言代码
select * item from realestets where translation = 'en-EN'
还是有更好的方法可以做到这一点?
答案 0 :(得分: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