vtiger多语言的研究

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

vtiger多语言的研究_第1张图片
图片.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];
                    }
                }

你可能感兴趣的:(vtiger多语言的研究)