mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-04 01:04:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			128 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* by jiawanlong*/
 | 
						||
/***
 | 
						||
 * 该文件用来根据语言环境加载相应的示例页面文本提示
 | 
						||
 * notice:
 | 
						||
 * 1.依赖jQuery
 | 
						||
 * 2.配置:依赖locales目录,具体的文本键值对在locales下的resources.js文件中配置。
 | 
						||
 * 3.使用:在具体的示例页使用键值对,命名空间为resources.
 | 
						||
 *   如 alert(resources.msg_tip),alert(resources.text_btn)
 | 
						||
 */
 | 
						||
var Localization = {
 | 
						||
    //初始化加载国际化资源文件
 | 
						||
    initializeI18N: null,
 | 
						||
    //执行翻译替换
 | 
						||
    localize: null,
 | 
						||
    //挂在全局变量
 | 
						||
    initGlobal: null
 | 
						||
};
 | 
						||
(function (nameSpace, $) {
 | 
						||
    var targetScript = (function () {
 | 
						||
        var r = new RegExp("(^|(.*?\\/js\\/))(localization\.js)(\\?|$)"),
 | 
						||
            s = document.getElementsByTagName('script');
 | 
						||
        for (var i = 0; i < s.length; i++) {
 | 
						||
            var src = s[i].getAttribute('src');
 | 
						||
            if (src && src.match(r)) {
 | 
						||
                return s[i];
 | 
						||
            }
 | 
						||
        }
 | 
						||
    })();
 | 
						||
 | 
						||
 | 
						||
    function initializeI18N(path, callback) {
 | 
						||
        var localPath = path + "./locales",
 | 
						||
            file = "/resources.js";
 | 
						||
 | 
						||
        var filePathMap = {
 | 
						||
            "en-US": localPath + "/en-US" + file,
 | 
						||
            "zh-CN": localPath + "/zh-CN" + file
 | 
						||
        };
 | 
						||
 | 
						||
        //脚本加载完成标志
 | 
						||
        var lang = utils.getLanguage();
 | 
						||
 | 
						||
        inputScript(filePathMap[lang], function () {
 | 
						||
 | 
						||
            i18next.init({
 | 
						||
                lng: lang,
 | 
						||
                whitelist: ["zh-CN", "en-US"],
 | 
						||
                fallbackLng: ["zh-CN", "en-US"]
 | 
						||
            },function(){
 | 
						||
                if (window.isSite) {
 | 
						||
                    var webResourceURL = '../../web/locales/'+lang+'/resources.js';
 | 
						||
                    $.get(webResourceURL, function () {
 | 
						||
                        for (var name in window.webResources) {
 | 
						||
                            var subWeb = window.webResources[name];
 | 
						||
                            var subExamples = window.examplesResources[name];
 | 
						||
                            //重名以webResource为准
 | 
						||
                            if (typeof window.webResources[name] == 'object') {
 | 
						||
    
 | 
						||
                                if (!subExamples) {
 | 
						||
                                    subExamples = {};
 | 
						||
                                }
 | 
						||
                                for (var name1 in subWeb) {
 | 
						||
                                    subExamples[name1] = subWeb[name1];
 | 
						||
                                }
 | 
						||
                            } else {
 | 
						||
                                subExamples[name1] = subWeb[name];
 | 
						||
                            }
 | 
						||
    
 | 
						||
                        }
 | 
						||
                        window.resources = window.examplesResources;
 | 
						||
                        i18next.addResourceBundle && i18next.addResourceBundle(lang, 'translation', window.resources);
 | 
						||
                        callback && callback();
 | 
						||
    
 | 
						||
                    })
 | 
						||
    
 | 
						||
                } else {
 | 
						||
                    window.resources = window.examplesResources;
 | 
						||
                    i18next.addResourceBundle && i18next.addResourceBundle(lang, 'translation', window.resources);
 | 
						||
                    callback && callback();
 | 
						||
                }
 | 
						||
            });
 | 
						||
            
 | 
						||
 | 
						||
        });
 | 
						||
 | 
						||
    }
 | 
						||
 | 
						||
    //国际化dom中的文本
 | 
						||
    function localize() {
 | 
						||
        jqueryI18next.init(i18next, $);
 | 
						||
        $("html").localize(); //翻译页面所有含data-i18n属性的标签的文本
 | 
						||
    }
 | 
						||
 | 
						||
    //全局变量挂载
 | 
						||
    function initGlobal(root) {
 | 
						||
        var rootNameSpace = root || window;
 | 
						||
        if (rootNameSpace.resources) {
 | 
						||
            rootNameSpace.oldResources = rootNameSpace.resources;
 | 
						||
        }
 | 
						||
        //example只开放资源映射到resources字段
 | 
						||
        var resources = i18next.getResourceBundle && i18next.getResourceBundle(utils.getLanguage());
 | 
						||
        rootNameSpace.resources = resources && resources.resources;
 | 
						||
    }
 | 
						||
 | 
						||
    //插入script
 | 
						||
    function inputScript(url, callback) {
 | 
						||
        var script = document.createElement("script");
 | 
						||
        script.type = "text/javascript";
 | 
						||
        if (script.readyState) { //for IE
 | 
						||
            script.onreadystatechange = function () {
 | 
						||
                if (script.readyState === "loaded" || script.readyState === "complete") {
 | 
						||
                    script.onreadystatechange = null;
 | 
						||
                    callback && callback();
 | 
						||
                }
 | 
						||
            };
 | 
						||
        } else { //for Others
 | 
						||
            script.onload = function () {
 | 
						||
                callback && callback();
 | 
						||
            };
 | 
						||
        }
 | 
						||
        script.src = url;
 | 
						||
        targetScript.parentElement.insertBefore(script, targetScript);
 | 
						||
    }
 | 
						||
 | 
						||
    nameSpace.initializeI18N = initializeI18N;
 | 
						||
    nameSpace.localize = localize;
 | 
						||
    nameSpace.initGlobal = initGlobal;
 | 
						||
})(Localization, jQuery); |