mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-03 16:54:16 +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);
							 |