feat(client/rtl): hide English RTL from production

This commit is contained in:
Elian Doran 2025-10-08 21:35:57 +03:00
parent c4358d52d5
commit d35f97d99a
No known key found for this signature in database
2 changed files with 19 additions and 7 deletions

View File

@ -24,9 +24,13 @@ export default function InternationalizationOptions() {
function LocalizationOptions() { function LocalizationOptions() {
const { uiLocales, formattingLocales: contentLocales } = useMemo(() => { const { uiLocales, formattingLocales: contentLocales } = useMemo(() => {
const allLocales = getAvailableLocales(); const allLocales = getAvailableLocales();
return { 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), formattingLocales: allLocales.filter(locale => locale.electronLocale),
} }
}, []); }, []);
@ -53,7 +57,7 @@ function LocaleSelector({ id, locales, currentValue, onChange }: { id?: string;
return <FormSelect return <FormSelect
id={id} id={id}
values={locales} values={locales}
keyProperty="id" titleProperty="name" keyProperty="id" titleProperty="name"
currentValue={currentValue} onChange={onChange} currentValue={currentValue} onChange={onChange}
/>; />;
} }
@ -74,7 +78,7 @@ function DateSettings() {
]} ]}
currentValue={firstDayOfWeek} onChange={setFirstDayOfWeek} currentValue={firstDayOfWeek} onChange={setFirstDayOfWeek}
/> />
</OptionsRow> </OptionsRow>
<OptionsRow name="first-week-of-year" label={t("i18n.first-week-of-the-year")}> <OptionsRow name="first-week-of-year" label={t("i18n.first-week-of-the-year")}>
<FormRadioGroup <FormRadioGroup
@ -93,7 +97,7 @@ function DateSettings() {
keyProperty="days" keyProperty="days"
currentValue={minDaysInFirstWeek} onChange={setMinDaysInFirstWeek} currentValue={minDaysInFirstWeek} onChange={setMinDaysInFirstWeek}
values={Array.from( values={Array.from(
{ length: 7 }, { length: 7 },
(_, i) => ({ days: String(i + 1) }))} /> (_, i) => ({ days: String(i + 1) }))} />
</OptionsRow>} </OptionsRow>}
@ -139,4 +143,4 @@ export function ContentLanguagesList() {
columnWidth="300px" columnWidth="300px"
/> />
); );
} }

View File

@ -5,6 +5,8 @@ export interface Locale {
rtl?: boolean; 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. */ /** `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; 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. */ /** 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"; 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. * 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 * Right to left languages