diff --git a/apps/client/src/widgets/type_widgets/options/i18n.tsx b/apps/client/src/widgets/type_widgets/options/i18n.tsx index 309f164bb..d69e2a395 100644 --- a/apps/client/src/widgets/type_widgets/options/i18n.tsx +++ b/apps/client/src/widgets/type_widgets/options/i18n.tsx @@ -24,9 +24,13 @@ export default function InternationalizationOptions() { function LocalizationOptions() { const { uiLocales, formattingLocales: contentLocales } = useMemo(() => { - const allLocales = getAvailableLocales(); + const allLocales = getAvailableLocales(); return { - uiLocales: allLocales.filter(locale => !locale.contentOnly), + uiLocales: allLocales.filter(locale => { + if (locale.contentOnly) return false; + if (locale.devOnly && !glob.isDev) return false; + return true; + }), formattingLocales: allLocales.filter(locale => locale.electronLocale), } }, []); @@ -53,7 +57,7 @@ function LocaleSelector({ id, locales, currentValue, onChange }: { id?: string; return ; } @@ -74,7 +78,7 @@ function DateSettings() { ]} currentValue={firstDayOfWeek} onChange={setFirstDayOfWeek} /> - + ({ days: String(i + 1) }))} /> } @@ -139,4 +143,4 @@ export function ContentLanguagesList() { columnWidth="300px" /> ); -} \ No newline at end of file +} diff --git a/packages/commons/src/lib/i18n.ts b/packages/commons/src/lib/i18n.ts index a6679f542..4941c2db7 100644 --- a/packages/commons/src/lib/i18n.ts +++ b/packages/commons/src/lib/i18n.ts @@ -5,6 +5,8 @@ export interface Locale { rtl?: boolean; /** `true` if the language is not supported by the application as a display language, but it is selectable by the user for the content. */ contentOnly?: boolean; + /** `true` if the language should only be visible while in development mode, and not in production. */ + devOnly?: boolean; /** The value to pass to `--lang` for the Electron instance in order to set it as a locale. Not setting it will hide it from the list of supported locales. */ electronLocale?: "en" | "de" | "es" | "fr" | "zh_CN" | "zh_TW" | "ro" | "af" | "am" | "ar" | "bg" | "bn" | "ca" | "cs" | "da" | "el" | "en_GB" | "es_419" | "et" | "fa" | "fi" | "fil" | "gu" | "he" | "hi" | "hr" | "hu" | "id" | "it" | "ja" | "kn" | "ko" | "lt" | "lv" | "ml" | "mr" | "ms" | "nb" | "nl" | "pl" | "pt_BR" | "pt_PT" | "ru" | "sk" | "sl" | "sr" | "sv" | "sw" | "ta" | "te" | "th" | "tr" | "uk" | "ur" | "vi"; } @@ -28,7 +30,13 @@ const UNSORTED_LOCALES: Locale[] = [ * * These are only displayed while in dev mode, to test some language particularities (such as RTL) more easily. */ - { id: "en_rtl", name: "English (right-to-left) [dev]", electronLocale: "en", rtl: true }, + { + id: "en_rtl", + name: "English (right-to-left) [dev]", + electronLocale: "en", + rtl: true, + devOnly: true + }, /* * Right to left languages