123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /* Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.*/
- /***
- * 该文件用来根据语言环境加载相应的示例页面文本提示
- * 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);
|