vtiger多语言的研究
2018-01-09 本文已影响7人
明月半倚深秋_f45e
vtiger是支持多语言的
在翻译文件中包括网页基本翻译和JS的翻译
这个翻译原理估计和thinkphp类似
vtiger的翻译模式是这样的
每种语言放一个文件夹
文件夹下面每个模块再放一个文件
只需要调用 vtranslate这个方法,传入key的值和模块名,就能返回对应的字符串
他会去找对应文件下的对应字符串
function vtranslate($key, $moduleName = '') {
$args = func_get_args();
$formattedString = call_user_func_array(array('Vtiger_Language_Handler', 'getTranslatedString'), $args);
array_shift($args);
array_shift($args);
if (is_array($args) && !empty($args)) {
$formattedString = call_user_func_array('vsprintf', array($formattedString, $args));
}
return $formattedString;
}
JS的翻译
因为经常会有弹窗提示信息,所以JS也是需要翻译的
他的做法是,在后台获取到该模块的JS翻译,输出到页面的div中
然后给该div设置为display:none
![](https://img.haomeiwen.com/i6360496/de8abf7bbc93c096.png)
需要调用的时候去获取这个盒子的内容,转成JSON格式
传入对应的key,就能返回所需的字符串了
var strings = jQuery('#js_strings').text();
if (strings != '') {
app.languageString = JSON.parse(strings);
if (key in app.languageString) {
translatedString = app.languageString[key];
}
}