diff --git a/apps/desktop/src/renderer/src/lib/translate.ts b/apps/desktop/src/renderer/src/lib/translate.ts index 925a51844..383ff68dd 100644 --- a/apps/desktop/src/renderer/src/lib/translate.ts +++ b/apps/desktop/src/renderer/src/lib/translate.ts @@ -1,7 +1,7 @@ import { parseHtml } from "@follow/components/ui/markdown/parse-html.js" import { views } from "@follow/constants" import type { SupportedLanguages } from "@follow/models/types" -import { LANGUAGE_MAP } from "@follow/shared" +import { ACTION_LANGUAGE_MAP } from "@follow/shared" import { franc } from "franc-min" import type { FlatEntryModel } from "~/store/entry" @@ -23,7 +23,7 @@ export const checkLanguage = ({ const pureContent = parseHtml(content) .toText() .replaceAll(/https?:\/\/\S+|www\.\S+/g, " ") - const { code } = LANGUAGE_MAP[language] + const { code } = ACTION_LANGUAGE_MAP[language] if (!code) { return false } diff --git a/apps/desktop/src/renderer/src/modules/settings/tabs/general.tsx b/apps/desktop/src/renderer/src/modules/settings/tabs/general.tsx index cb96770e8..a995ee5ca 100644 --- a/apps/desktop/src/renderer/src/modules/settings/tabs/general.tsx +++ b/apps/desktop/src/renderer/src/modules/settings/tabs/general.tsx @@ -2,7 +2,7 @@ import { useMobile } from "@follow/components/hooks/useMobile.js" import { ResponsiveSelect } from "@follow/components/ui/select/responsive.js" import { UserRole } from "@follow/constants" import { useTypeScriptHappyCallback } from "@follow/hooks" -import { LANGUAGE_MAP } from "@follow/shared" +import { ACTION_LANGUAGE_MAP } from "@follow/shared" import { IN_ELECTRON } from "@follow/shared/constants" import { cn } from "@follow/utils/utils" import { useQuery } from "@tanstack/react-query" @@ -302,7 +302,7 @@ const ActionLanguageSelector = () => { }} items={[ { label: t("general.action_language.default"), value: DEFAULT_ACTION_LANGUAGE }, - ...Object.values(LANGUAGE_MAP), + ...Object.values(ACTION_LANGUAGE_MAP), ]} /> diff --git a/apps/mobile/src/modules/settings/routes/General.tsx b/apps/mobile/src/modules/settings/routes/General.tsx index b1252f5e6..9a2a704f1 100644 --- a/apps/mobile/src/modules/settings/routes/General.tsx +++ b/apps/mobile/src/modules/settings/routes/General.tsx @@ -1,10 +1,10 @@ -import type { SupportedLanguage } from "@follow/shared" -import { LANGUAGE_MAP } from "@follow/shared" +import { ACTION_LANGUAGE_KEYS } from "@follow/shared" import i18next from "i18next" import { useMemo } from "react" import { useTranslation } from "react-i18next" import { Text, View } from "react-native" +import type { MobileSupportedLanguages } from "@/src/@types/constants" import { currentSupportedLanguages } from "@/src/@types/constants" import { setGeneralSetting, useGeneralSettingKey } from "@/src/atoms/settings/general" import { @@ -25,17 +25,18 @@ import type { NavigationControllerView } from "@/src/lib/navigation/types" function LanguageSelect({ settingKey }: { settingKey: "language" | "actionLanguage" }) { const { t } = useTranslation("lang") const languageMapWithTranslation = useMemo(() => { - const data = (Object.keys(LANGUAGE_MAP) as SupportedLanguage[]).map((key) => ({ - subLabel: t(`langs.${key}`, { lng: key }), + const languageKeys = + settingKey === "language" + ? (currentSupportedLanguages as MobileSupportedLanguages[]) + : ACTION_LANGUAGE_KEYS.sort( + (a, b) => currentSupportedLanguages.indexOf(a) - currentSupportedLanguages.indexOf(b), + ) + + return languageKeys.map((key) => ({ + subLabel: settingKey === "language" ? t(`langs.${key}`, { lng: key }) : undefined, label: t(`langs.${key}`), value: key, })) - - return settingKey === "language" - ? data.filter((item) => { - return currentSupportedLanguages.includes(item.value) - }) - : data }, [settingKey, t]) const language = useGeneralSettingKey(settingKey) diff --git a/packages/shared/src/language.ts b/packages/shared/src/language.ts index 3cbd0d0f6..f9a5deac9 100644 --- a/packages/shared/src/language.ts +++ b/packages/shared/src/language.ts @@ -2,9 +2,9 @@ import type { z } from "zod" import type { languageSchema } from "./hono" -export type SupportedLanguage = z.infer -export const LANGUAGE_MAP: Record< - SupportedLanguage, +export type SupportedActionLanguage = z.infer +export const ACTION_LANGUAGE_MAP: Record< + SupportedActionLanguage, { label: string value: string @@ -106,3 +106,4 @@ export const LANGUAGE_MAP: Record< code: "tur", }, } +export const ACTION_LANGUAGE_KEYS = Object.keys(ACTION_LANGUAGE_MAP) as SupportedActionLanguage[]