Add Korean localization to desktop app (#9856)
Signed-off-by: lhs <lhs@lhsui-Macmini.local> Signed-off-by: soolmuk <72430756+soolmuk@users.noreply.github.com> Co-authored-by: lhs <lhs@lhsui-Macmini.local>
This commit is contained in:
@@ -82,6 +82,7 @@ const i18n = defineMessages({
|
||||
languageHindi: { id: 'settings.language.hindi', defaultMessage: 'Hindi' },
|
||||
languageJapanese: { id: 'settings.language.japanese', defaultMessage: 'Japanese' },
|
||||
languageSpanish: { id: 'settings.language.spanish', defaultMessage: 'Spanish' },
|
||||
languageKorean: { id: 'settings.language.korean', defaultMessage: 'Korean' },
|
||||
helpTitle: { id: 'settings.help.title', defaultMessage: 'Help & feedback' },
|
||||
helpDesc: {
|
||||
id: 'settings.help.description',
|
||||
@@ -148,6 +149,7 @@ const LANGUAGE_OPTIONS: Array<{ value: LanguageSetting; message: keyof typeof i1
|
||||
{ value: 'es', message: 'languageSpanish' },
|
||||
{ value: 'hi', message: 'languageHindi' },
|
||||
{ value: 'ja', message: 'languageJapanese' },
|
||||
{ value: 'ko', message: 'languageKorean' },
|
||||
{ value: 'ru', message: 'languageRussian' },
|
||||
{ value: 'tr', message: 'languageTurkish' },
|
||||
{ value: 'zh-CN', message: 'languageChineseSimplified' },
|
||||
|
||||
@@ -73,6 +73,23 @@ describe('getLocale', () => {
|
||||
expect(getLocale()).toEqual({ locale: 'tr', messageLocale: 'tr' });
|
||||
});
|
||||
|
||||
it('supports Korean from navigator.languages', () => {
|
||||
vi.stubGlobal('navigator', { languages: ['ko-KR'] });
|
||||
expect(getLocale()).toEqual({ locale: 'ko-KR', messageLocale: 'ko' });
|
||||
});
|
||||
|
||||
it('supports explicit Korean locale', () => {
|
||||
mockAppConfig({ GOOSE_LOCALE: 'ko' });
|
||||
vi.stubGlobal('navigator', { languages: ['xx-XX'] });
|
||||
expect(getLocale()).toEqual({ locale: 'ko', messageLocale: 'ko' });
|
||||
});
|
||||
|
||||
it('supports POSIX-style Korean locale from GOOSE_LOCALE', () => {
|
||||
mockAppConfig({ GOOSE_LOCALE: 'ko_KR' });
|
||||
vi.stubGlobal('navigator', { languages: ['xx-XX'] });
|
||||
expect(getLocale()).toEqual({ locale: 'ko-KR', messageLocale: 'ko' });
|
||||
});
|
||||
|
||||
it('supports Japanese from navigator.languages', () => {
|
||||
vi.stubGlobal('navigator', { languages: ['ja-JP'] });
|
||||
expect(getLocale()).toEqual({ locale: 'ja-JP', messageLocale: 'ja' });
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
export { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
/** The set of locales that have translation catalogs. */
|
||||
export const SUPPORTED_LOCALES = ['en', 'es', 'hi', 'ja', 'ru', 'tr', 'zh-CN'] as const;
|
||||
export const SUPPORTED_LOCALES = ['en', 'es', 'hi', 'ja', 'ko', 'ru', 'tr', 'zh-CN'] as const;
|
||||
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];
|
||||
const SUPPORTED_LOCALE_SET = new Set<string>(SUPPORTED_LOCALES);
|
||||
|
||||
|
||||
@@ -4100,6 +4100,9 @@
|
||||
"settings.language.japanese": {
|
||||
"defaultMessage": "Japanese"
|
||||
},
|
||||
"settings.language.korean": {
|
||||
"defaultMessage": "Korean"
|
||||
},
|
||||
"settings.language.russian": {
|
||||
"defaultMessage": "Russian"
|
||||
},
|
||||
|
||||
@@ -4100,6 +4100,9 @@
|
||||
"settings.language.japanese": {
|
||||
"defaultMessage": "Japonés"
|
||||
},
|
||||
"settings.language.korean": {
|
||||
"defaultMessage": "Coreano"
|
||||
},
|
||||
"settings.language.russian": {
|
||||
"defaultMessage": "Ruso"
|
||||
},
|
||||
|
||||
@@ -4100,6 +4100,9 @@
|
||||
"settings.language.japanese": {
|
||||
"defaultMessage": "जापानी"
|
||||
},
|
||||
"settings.language.korean": {
|
||||
"defaultMessage": "कोरियाई"
|
||||
},
|
||||
"settings.language.russian": {
|
||||
"defaultMessage": "रूसी"
|
||||
},
|
||||
|
||||
@@ -4100,6 +4100,9 @@
|
||||
"settings.language.japanese": {
|
||||
"defaultMessage": "日本語"
|
||||
},
|
||||
"settings.language.korean": {
|
||||
"defaultMessage": "韓国語"
|
||||
},
|
||||
"settings.language.russian": {
|
||||
"defaultMessage": "ロシア語"
|
||||
},
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4100,6 +4100,9 @@
|
||||
"settings.language.japanese": {
|
||||
"defaultMessage": "Японский"
|
||||
},
|
||||
"settings.language.korean": {
|
||||
"defaultMessage": "Корейский"
|
||||
},
|
||||
"settings.language.russian": {
|
||||
"defaultMessage": "Русский"
|
||||
},
|
||||
|
||||
@@ -4100,6 +4100,9 @@
|
||||
"settings.language.japanese": {
|
||||
"defaultMessage": "Japonca"
|
||||
},
|
||||
"settings.language.korean": {
|
||||
"defaultMessage": "Korece"
|
||||
},
|
||||
"settings.language.russian": {
|
||||
"defaultMessage": "Rusça"
|
||||
},
|
||||
|
||||
@@ -4100,6 +4100,9 @@
|
||||
"settings.language.japanese": {
|
||||
"defaultMessage": "日语"
|
||||
},
|
||||
"settings.language.korean": {
|
||||
"defaultMessage": "韩语"
|
||||
},
|
||||
"settings.language.russian": {
|
||||
"defaultMessage": "俄语"
|
||||
},
|
||||
|
||||
@@ -174,6 +174,7 @@ const validLanguageSettings = new Set<Settings['language']>([
|
||||
'es',
|
||||
'hi',
|
||||
'ja',
|
||||
'ko',
|
||||
'ru',
|
||||
'tr',
|
||||
'zh-CN',
|
||||
|
||||
@@ -28,7 +28,7 @@ export interface SessionSharingConfig {
|
||||
baseUrl: string;
|
||||
}
|
||||
|
||||
export type LanguageSetting = 'system' | 'en' | 'es' | 'hi' | 'ja' | 'ru' | 'tr' | 'zh-CN';
|
||||
export type LanguageSetting = 'system' | 'en' | 'es' | 'hi' | 'ja' | 'ko' | 'ru' | 'tr' | 'zh-CN';
|
||||
|
||||
export interface Settings {
|
||||
// Desktop app settings
|
||||
|
||||
Reference in New Issue
Block a user