Skip to content

Commit b98c02c

Browse files
Parvin MehrabaniParvin Mehrabani
authored andcommitted
feat(i18n): add Russian, Chinese, Portuguese, Italian, Japanese, Turkish, and Korean translations
1 parent e5517e6 commit b98c02c

11 files changed

Lines changed: 149 additions & 9 deletions

File tree

src/i18n/it_IT.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default {
2+
buttons: {
3+
next: "Avanti",
4+
prev: "Indietro",
5+
skip: "Salta",
6+
done: "Fine",
7+
gotIt: "Capito",
8+
},
9+
messages: {
10+
dontShowAgainLabel: "Non mostrare più",
11+
stepNumbersOfLabel: "di",
12+
},
13+
};

src/i18n/ja_JP.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default {
2+
buttons: {
3+
next: "次へ",
4+
prev: "戻る",
5+
skip: "スキップ",
6+
done: "完了",
7+
gotIt: "了解",
8+
},
9+
messages: {
10+
dontShowAgainLabel: "今後表示しない",
11+
stepNumbersOfLabel: "/",
12+
},
13+
};

src/i18n/ko_KR.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default {
2+
buttons: {
3+
next: "다음",
4+
prev: "이전",
5+
skip: "건너뛰기",
6+
done: "완료",
7+
gotIt: "확인",
8+
},
9+
messages: {
10+
dontShowAgainLabel: "다시 보지 않기",
11+
stepNumbersOfLabel: "/",
12+
},
13+
};

src/i18n/language.test.ts

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ describe("Translator", () => {
4646
});
4747

4848
it("should fallback to en_US for unsupported languages", () => {
49-
createMockNavigator("zh-CN");
49+
createMockNavigator("sv-SE");
5050
const translator = new Translator();
5151
expect(translator.translate("buttons.next")).toBe("Next");
5252
});
@@ -74,15 +74,48 @@ describe("Translator", () => {
7474

7575
it("should work with all supported languages", () => {
7676
const translator = new Translator();
77-
(["en_US", "es_ES", "fr_FR", "de_DE", "fa_IR"] as LanguageCode[]).forEach(
78-
(code) => {
79-
translator.setLanguage(code);
80-
expect(typeof translator.translate("buttons.next")).toBe("string");
81-
}
82-
);
77+
getAvailableLanguages().forEach((code) => {
78+
translator.setLanguage(code);
79+
expect(typeof translator.translate("buttons.next")).toBe("string");
80+
});
8381
});
8482
});
8583

84+
describe("newly added languages", () => {
85+
it.each([
86+
["ru_RU", "Далее"],
87+
["zh_CN", "下一步"],
88+
["pt_BR", "Próximo"],
89+
["it_IT", "Avanti"],
90+
["ja_JP", "次へ"],
91+
["tr_TR", "İleri"],
92+
["ko_KR", "다음"],
93+
])("translates buttons.next for %s", (code, expected) => {
94+
const translator = new Translator(code as LanguageCode);
95+
expect(translator.translate("buttons.next")).toBe(expected);
96+
});
97+
98+
it.each(["ru_RU", "zh_CN", "pt_BR", "it_IT", "ja_JP", "tr_TR", "ko_KR"])(
99+
"has non-empty translations for every key in %s",
100+
(code) => {
101+
const translator = new Translator(code as LanguageCode);
102+
[
103+
"buttons.next",
104+
"buttons.prev",
105+
"buttons.skip",
106+
"buttons.done",
107+
"buttons.gotIt",
108+
"messages.dontShowAgainLabel",
109+
"messages.stepNumbersOfLabel",
110+
].forEach((key) => {
111+
const translated = translator.translate(key);
112+
expect(translated).not.toBe(key);
113+
expect(translated.length).toBeGreaterThan(0);
114+
});
115+
}
116+
);
117+
});
118+
86119
describe("translate", () => {
87120
let translator: Translator;
88121

src/i18n/language.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ import deDE from "./de_DE";
44
import esES from "./es_ES";
55
import frFR from "./fr_FR";
66
import ar_SA from "./ar_SA";
7+
import ru_RU from "./ru_RU";
8+
import zh_CN from "./zh_CN";
9+
import pt_BR from "./pt_BR";
10+
import it_IT from "./it_IT";
11+
import ja_JP from "./ja_JP";
12+
import tr_TR from "./tr_TR";
13+
import ko_KR from "./ko_KR";
714

815
const languages = {
916
en_US: enUS,
@@ -12,6 +19,13 @@ const languages = {
1219
es_ES: esES,
1320
fr_FR: frFR,
1421
ar_SA: ar_SA,
22+
ru_RU: ru_RU,
23+
zh_CN: zh_CN,
24+
pt_BR: pt_BR,
25+
it_IT: it_IT,
26+
ja_JP: ja_JP,
27+
tr_TR: tr_TR,
28+
ko_KR: ko_KR,
1529
} as const;
1630

1731
export type LanguageCode = keyof typeof languages;

src/i18n/pt_BR.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default {
2+
buttons: {
3+
next: "Próximo",
4+
prev: "Voltar",
5+
skip: "Pular",
6+
done: "Concluído",
7+
gotIt: "Entendi",
8+
},
9+
messages: {
10+
dontShowAgainLabel: "Não mostrar novamente",
11+
stepNumbersOfLabel: "de",
12+
},
13+
};

src/i18n/ru_RU.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default {
2+
buttons: {
3+
next: "Далее",
4+
prev: "Назад",
5+
skip: "Пропустить",
6+
done: "Готово",
7+
gotIt: "Ясно",
8+
},
9+
messages: {
10+
dontShowAgainLabel: "Больше не показывать",
11+
stepNumbersOfLabel: "из",
12+
},
13+
};

src/i18n/tr_TR.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default {
2+
buttons: {
3+
next: "İleri",
4+
prev: "Geri",
5+
skip: "Atla",
6+
done: "Bitti",
7+
gotIt: "Anladım",
8+
},
9+
messages: {
10+
dontShowAgainLabel: "Bir daha gösterme",
11+
stepNumbersOfLabel: "/",
12+
},
13+
};

src/i18n/zh_CN.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default {
2+
buttons: {
3+
next: "下一步",
4+
prev: "上一步",
5+
skip: "跳过",
6+
done: "完成",
7+
gotIt: "知道了",
8+
},
9+
messages: {
10+
dontShowAgainLabel: "不再显示",
11+
stepNumbersOfLabel: "/",
12+
},
13+
};

src/packages/hint/option.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ export interface HintOptions {
3333
tooltipRenderAsHtml?: boolean;
3434
/* Optional property to set the language of the hint.
3535
Can be a Language object for custom languages or a language code string for built-in languages.
36-
Built-in language codes: "en_US", "es_ES", "fr_FR", "de_DE", "fa_IR"
36+
Built-in language codes: "en_US", "es_ES", "fr_FR", "de_DE", "fa_IR",
37+
"ar_SA", "ru_RU", "zh_CN", "pt_BR", "it_IT", "ja_JP", "tr_TR", "ko_KR"
3738
Defaults to the user's browser language if not provided. */
3839
language?: LanguageCode;
3940
}

0 commit comments

Comments
 (0)