mirror of
https://github.com/JannisX11/blockbench.git
synced 2025-04-06 17:31:09 +08:00
139 lines
3.4 KiB
TypeScript
139 lines
3.4 KiB
TypeScript
|
|
import cz from '../lang/cz.json';
|
|
import de from '../lang/de.json';
|
|
import en from '../lang/en.json';
|
|
import es from '../lang/es.json';
|
|
import fr from '../lang/fr.json';
|
|
import it from '../lang/it.json';
|
|
import ja from '../lang/ja.json';
|
|
import ko from '../lang/ko.json';
|
|
import nl from '../lang/nl.json';
|
|
import pl from '../lang/pl.json';
|
|
import pt from '../lang/pt.json';
|
|
import ru from '../lang/ru.json';
|
|
import sv from '../lang/sv.json';
|
|
import uk from '../lang/uk.json';
|
|
import vi from '../lang/vi.json';
|
|
import zh from '../lang/zh.json';
|
|
import zh_tw from '../lang/zh_tw.json';
|
|
|
|
export const data = {
|
|
cz: cz,
|
|
de: de,
|
|
en: en,
|
|
es: es,
|
|
fr: fr,
|
|
it: it,
|
|
ja: ja,
|
|
ko: ko,
|
|
nl: nl,
|
|
pl: pl,
|
|
pt: pt,
|
|
ru: ru,
|
|
sv: sv,
|
|
uk: uk,
|
|
vi: vi,
|
|
zh: zh,
|
|
zh_tw: zh_tw,
|
|
};
|
|
|
|
/**
|
|
* Returns a translated string in the current language
|
|
* @param key Translation key
|
|
* @param variables Array of variables that replace anchors (%0, etc.) in the translation. Items can be strings or anything that can be converted to strings
|
|
* @param default_value String value to default to if the translation is not available
|
|
*/
|
|
export const tl = function(string: string, variables?: string | string[], default_value?: string): string {
|
|
if (string && string.length > 100) return string;
|
|
var result = Language.data[string]
|
|
if (result && result.length > 0) {
|
|
if (variables) {
|
|
if (variables instanceof Array == false) {
|
|
variables = [variables];
|
|
}
|
|
var i = variables.length;
|
|
while (i > 0) {
|
|
i--;
|
|
result = result.replace(new RegExp('%'+i, 'g'), variables[i])
|
|
}
|
|
}
|
|
return result;
|
|
} else if (default_value != undefined) {
|
|
return default_value;
|
|
} else {
|
|
return string;
|
|
}
|
|
}
|
|
export const translateUI = function() {
|
|
$('.tl').each(function(i, obj) {
|
|
var text = tl($(obj).text())
|
|
$(obj).text(text)
|
|
})
|
|
}
|
|
|
|
export const Language = {
|
|
/**
|
|
* Translation data for the current language
|
|
*/
|
|
data: {},
|
|
/**
|
|
* Language code indicating the currently selected language
|
|
*/
|
|
code: 'en',
|
|
options: {
|
|
en: 'English',
|
|
cz: 'Čeština (Czech)',
|
|
de: 'Deutsch (German)',
|
|
es: 'Espa\u00F1ol (Spanish)',
|
|
fr: 'Fran\u00E7ais (French)',
|
|
it: 'Italiano (Italian)',
|
|
ja: '\u65E5\u672C\u8A9E (Japanese)',//日本語
|
|
ko: '\uD55C\uAD6D\uC5B4 (Korean)',//日本語
|
|
nl: 'Nederlands (Dutch)',
|
|
pl: 'Polski (Polish)',
|
|
pt: 'Portugu\u00EAs (Portuguese)',
|
|
ru: '\u0440\u0443\u0441\u0441\u043A\u0438\u0439 (Russian)',
|
|
sv: 'Svenska (Swedish)',
|
|
uk: 'Українська (Ukrainian)',
|
|
vi: 'Tiếng việt (Vietnamese)',
|
|
zh: '\u4e2d\u6587 (Chinese)',//中文
|
|
zh_tw: '\u4E2D\u6587(\u81FA\u7063) (Traditional Chinese)',//中文(臺灣)
|
|
},
|
|
/**
|
|
* Add translations for custom translation strings
|
|
* @param language Two letter language code, e. G. 'en'
|
|
* @param strings Object listing the translation keys and values
|
|
*/
|
|
addTranslations(language: string, strings: Record<string, string>): void {
|
|
for (var key in strings) {
|
|
if (language == Language.code || (language == 'en' && Language.data[key] == undefined)) {
|
|
Language.data[key] = strings[key];
|
|
}
|
|
}
|
|
},
|
|
toString: () => Language.code
|
|
}
|
|
|
|
|
|
// Get language code
|
|
let code;
|
|
try {
|
|
code = JSON.parse(localStorage.getItem('settings')).language.value
|
|
} catch (err) {}
|
|
|
|
if (!code) {
|
|
code = navigator.language.replace(/-\w+/, '')
|
|
}
|
|
if (code && Language.options[code]) {
|
|
Language.code = code
|
|
document.body.parentElement.setAttribute('lang', Language.code);
|
|
}
|
|
|
|
|
|
Language.data = data[Language.code];
|
|
|
|
Object.assign(window, {
|
|
tl,
|
|
Language
|
|
})
|