2013-12-12 57 views
2

我已经构建了一个发送电子邮件的简单组件。在这个组件里面,我有我的翻译字符串存储在ini中。下面是我做的一些示例代码:joomla语言文件未加载其他语言

$body = $this->getDetails["name"]." ".JText::_('COM_MYCOMPNOTIFY_MAIL_BODY1')."\n\n". 
JText::_('COM_MYCOMPNOTIFY_MAIL_BODY2')." ".$this->getDetails["name"]."\n\n". 
JText::_('COM_MYCOMPNOTIFY_MAIL_BODY3')." http://".$this->getDetails["domain"]."\n"; 

此目录结构我有我的组件具有

language 
    en-GB 
    en-GB.com_mycompnotify.ini 
    pt-BR 
    pt-BR.com_mycompnotify.ini 

我安装的XML文件中有这样的:

<files folder="site"> 
     <filename>index.html</filename> 
... 
     <folder>helpers</folder> 
     <folder>language</folder> 
</files> 

这工作正常为en-GB语言。但我无法翻译为pt-BR。我认为问题是我有一个调用我的组件的外部php文件。所以它不知道加载pt-BR语言文件(我认为)。

于是,我就用它强制负载:

$lang = JFactory::getLanguage(); 
$lang->load('com_mycompnotify', JPATH_BASE, 'pt-BR'); //also tried JPATH_SITE 

但无论我怎么努力,我总是得到英语。

+0

您需要显示代码不工作。还要确保你已经启动了调试模式,并且错误报告一直转到开发。 – Craig

回答

0

在组件XML文件中指定的语言文件,你应该增加财产以后这样的:

<languages folder="admin"> 
    <language tag="en-GB">language/en-GB/en-GB.com_NAME.ini</language> 
    <language tag="en-GB">language/en-GB/en-GB.com_NAME.sys.ini</language> 
    <language tag="pt-BR">language/pt-BR/pt-BR.com_NAME.ini</language> 
    <language tag="pt-BR">language/pt-BR/pt-BR.com_NAME.sys.ini</language> 
</languages> 

,如果你只Not just for administrator边开发一个组件,您可以添加网站语言,像这样的文件:

<languages folder="site"> 
    <language tag="en-GB">language/en-GB/en-GB.com_NAME.ini</language> 
    <language tag="en-GB">language/en-GB/en-GB.com_NAME.sys.ini</language> 
    <language tag="pt-BR">language/pt-BR/pt-BR.com_NAME.ini</language> 
    <language tag="pt-BR">language/pt-BR/pt-BR.com_NAME.sys.ini</language> 
</languages> 

以及joomla使用非英语的语言文件,您应该将网站的语言更改为您的母语。您可以从joomla的官方网站下载多种语言的翻译。

+0

你的建议与我刚刚使用'language'文件夹一样。感谢您的回应,但这并没有帮助。 – Tom

+0

您应该使用标记而不是。确保当您将组件安装到joomla时!安装程序会将语言文件复制到正确的路径中。 –

+0

我使用'语言'而不是文档解释是相同的。但无论如何,我尝试了你的建议,但我仍然遇到同样的问题。我有很多组件,除了这个,它们都翻译得很好。我相信问题是我如何调用语言文件:'$ lang-> load('com_mycompnotify',JPATH_SITE,'pt-BR',true);'。这件事一定是错的。 – Tom