123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- 'use strict';
- var Ardublockly = Ardublockly || {};
- Ardublockly.LANGUAGE_NAME = {
- 'en': 'English',
- 'zh-hant': '繁体中文',
- 'zh-hans': '简体中文'
- };
- Ardublockly.LANG = 'en';
- Ardublockly.DEFAULT_LANG_TEXT = {};
- Ardublockly.initLanguage = function () {
-
- var defaultLang = Ardublockly.LANG;
-
- Ardublockly.LANG = Ardublockly.getUrlLanguage() ||
- Ardublockly.getLanguageSetting() || Ardublockly.LANG;
-
- Ardublockly.injectLanguageJsSources(Ardublockly.LANG);
- Ardublockly.duplicateDefaultLang();
- Ardublockly.updateLanguageText();
-
- };
- Ardublockly.getLanguageSetting = function () {
-
- return null;
- };
- Ardublockly.getUrlLanguage = function () {
- var langKey = 'lang';
- var val = location.search.match(new RegExp('[?&]' + langKey + '=([^&]+)'));
- var language = val ? decodeURIComponent(val[1].replace(/\+/g, '%20')) : '';
- if (Ardublockly.LANGUAGE_NAME[language] == null) { language = 'en'; }
- return language;
- };
- Ardublockly.duplicateDefaultLang = function () {
- for (var textId in Ardublockly.LOCALISED_TEXT) {
- Ardublockly.DEFAULT_LANG_TEXT[textId] = Ardublockly.LOCALISED_TEXT[textId];
- }
- };
- Ardublockly.updateLanguageText = function () {
- for (var textId in Ardublockly.LOCALISED_TEXT) {
- var textStrings = document.getElementsByClassName('translatable_' + textId);
- for (var i = 0; i < textStrings.length; i++) {
- textStrings[i].innerHTML = Ardublockly.getLocalStr(textId);
- }
- }
- };
- Ardublockly.injectLanguageJsSources = function (langKey) {
- var head = document.getElementsByTagName('head')[0];
-
- var appLangJsLoad = document.createElement('script');
- var request = ArdublocklyServer.createAjaxRequest();
- var appLangJdPath = 'msg/' + langKey + '.js';
- try {
- request.open('GET', appLangJdPath, false);
- request.send('');
- appLangJsLoad.text = request.responseText;
- } catch (e) {
-
- Ardublockly.alertMessage(
- Ardublockly.getLocalStr('noServerTitle'),
- Ardublockly.getLocalStr('noServerNoLangBody'),
- false);
-
- appLangJsLoad.src = appLangJdPath;
- }
- head.appendChild(appLangJsLoad);
-
- var blocklyLangJsLoad = document.createElement('script');
- blocklyLangJsLoad.src = 'blockly/msg/js/' + langKey + '.js';
- head.appendChild(blocklyLangJsLoad);
- };
- Ardublockly.changeLanguage = function () {
-
-
- var languageMenu = document.getElementById('language');
- var newLang = encodeURIComponent(
- languageMenu.options[languageMenu.selectedIndex].value);
- var search = window.location.search;
- if (search.length <= 1) {
- search = '?lang=' + newLang;
- } else if (search.match(/[?&]lang=[^&]*/)) {
- search = search.replace(/([?&]lang=)[^&]*/, '$1' + newLang);
- } else {
- search = search.replace(/\?/, '?lang=' + newLang + '&');
- }
- window.location = window.location.protocol + '//' +
- window.location.host + window.location.pathname + search;
- };
- Ardublockly.getLocalStr = function (stringId) {
- var text = Ardublockly.LOCALISED_TEXT[stringId];
- if (!text) {
- console.log('Localised text string ID "' + stringId + '" does not exists!');
- }
- return text || Ardublockly.DEFAULT_LANG_TEXT[stringId] || '';
- };
|