lavkach3

Форк
0
90 строк · 1.8 Кб
1
// The locale our app first shows
2
const defaultLocale = "en";
3

4
// The active locale
5

6
let locale;
7

8
// Gets filled with active locale translations
9

10
let translations = {};
11

12
// When the page content is ready...
13

14
document.addEventListener("DOMContentLoaded", () => {
15

16
    // Translate the page to the default locale
17

18
    setLocale(userSettings.locale);
19

20
});
21

22
// Load translations for the given locale and translate
23

24
// the page to this locale
25

26
async function setLocale(newLocale) {
27
    document.getElementsByTagName('html')[0].setAttribute('lang', newLocale);
28
    userSettings.locale = newLocale;
29
    document.cookie = "locale="+userSettings.locale+";path=/;"
30
    if (newLocale === locale) return;
31

32
    const newTranslations = await fetchTranslationsFor(newLocale);
33

34
    locale = newLocale;
35

36
    translations = newTranslations;
37

38
    translatePage();
39

40
}
41

42
// Retrieve translations JSON object for the given
43

44
// locale over the network
45

46
async function fetchTranslationsFor(newLocale) {
47

48
    const response = await fetch(`/static/js/i18n/${newLocale}.json`);
49

50
    return await response.json();
51

52
}
53

54
// Replace the inner text of each element that has a
55

56
// data-i18n-key attribute with the translation corresponding
57

58
// to its data-i18n-key
59

60
function translatePage() {
61

62
    document.querySelectorAll("[data-key]").forEach(translateElement);
63

64
}
65

66
// Replace the inner text of the given HTML element
67

68
// with the translation in the active locale,
69

70
// corresponding to the element's data-i18n-key
71

72
function translateElement(element) {
73

74
    const key = element.getAttribute("data-key");
75

76
    const translation = translations[key];
77
    if (!translation) {
78

79
        console.warn(`No translation found for key: ${key}`);
80

81
        return
82

83

84
    } else {
85
        element.innerText = translation;
86
    }
87
}
88

89

90
///--->
91

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.