diff --git a/apps/app/src/app/lib/model-behavior.ts b/apps/app/src/app/lib/model-behavior.ts
index 2883be910..a8cccd76e 100644
--- a/apps/app/src/app/lib/model-behavior.ts
+++ b/apps/app/src/app/lib/model-behavior.ts
@@ -143,7 +143,7 @@ const getVariantDescription = (
if (key === "xhigh" || key === "max") return family === "anthropic"
? t("model_behavior.desc_max_anthropic")
: t("model_behavior.desc_max");
- return t("model_behavior.desc_generic", undefined, { label: label.toLowerCase() });
+ return t("model_behavior.desc_generic", { label: label.toLowerCase() });
};
export const getModelBehaviorOptions = (
diff --git a/apps/app/src/app/utils/index.ts b/apps/app/src/app/utils/index.ts
index aa556c228..294401db9 100644
--- a/apps/app/src/app/utils/index.ts
+++ b/apps/app/src/app/utils/index.ts
@@ -269,15 +269,15 @@ export function formatRelativeTime(timestampMs: number) {
}
if (delta < 60_000) {
- return t("time.seconds_ago", undefined, { count: Math.max(1, Math.round(delta / 1000)) });
+ return t("time.seconds_ago", { count: Math.max(1, Math.round(delta / 1000)) });
}
if (delta < 60 * 60_000) {
- return t("time.minutes_ago", undefined, { count: Math.max(1, Math.round(delta / 60_000)) });
+ return t("time.minutes_ago", { count: Math.max(1, Math.round(delta / 60_000)) });
}
if (delta < 24 * 60 * 60_000) {
- return t("time.hours_ago", undefined, { count: Math.max(1, Math.round(delta / (60 * 60_000))) });
+ return t("time.hours_ago", { count: Math.max(1, Math.round(delta / (60 * 60_000))) });
}
return new Date(timestampMs).toLocaleDateString();
diff --git a/apps/app/src/hooks/use-translate.ts b/apps/app/src/hooks/use-translate.ts
index 311872ab4..502ba7ffb 100644
--- a/apps/app/src/hooks/use-translate.ts
+++ b/apps/app/src/hooks/use-translate.ts
@@ -1,11 +1,10 @@
import * as React from "react";
-import { currentLocale, t } from "@/i18n";
+import { t } from "@/i18n";
export function useTranslate() {
- const tr = React.useCallback((key: string) => t(key, currentLocale()), []);
+ const tr = React.useCallback((key: string) => t(key), []);
const tx = React.useCallback(
- (key: string, params?: Record
@@ -149,7 +148,7 @@ export function SkillDestinationModal(props: SkillDestinationModalProps) { {props.skill?.trigger?.trim() ? (
- {translate("share_skill_destination.subtitle")} + {t("share_skill_destination.subtitle")}
{translate("mcp.auth.open_browser_signin")}
+{t("mcp.auth.open_browser_signin")}
{translate("mcp.auth.waiting_authorization")}
-{translate("mcp.auth.follow_browser_steps")}
+{t("mcp.auth.waiting_authorization")}
+{t("mcp.auth.follow_browser_steps")}
{props.reloadBlocked - ? translate("mcp.auth.waiting_for_conversation_title") - : translate("mcp.auth.applying_changes_title")} + ? t("mcp.auth.waiting_for_conversation_title") + : t("mcp.auth.applying_changes_title")}
{props.reloadBlocked - ? translate("mcp.auth.waiting_for_conversation_body") - : translate("mcp.auth.applying_changes_body")} + ? t("mcp.auth.waiting_for_conversation_body") + : t("mcp.auth.applying_changes_body")}
{translate("mcp.auth.already_connected")}
+{t("mcp.auth.already_connected")}
- {translate("mcp.auth.already_connected_description", { server: serverName })} + {t("mcp.auth.already_connected_description", { server: serverName })}
{translate("mcp.auth.configured_previously")}
+{t("mcp.auth.configured_previously")}
) : null} @@ -712,14 +701,14 @@ export function McpAuthModal(props: McpAuthModalProps) { variant="secondary" onClick={() => void handleReloadAndRetry()} disabled={props.reloadBlocked} - title={props.reloadBlocked ? translate("mcp.reload_banner_blocked_hint") : undefined} + title={props.reloadBlocked ? t("mcp.reload_banner_blocked_hint") : undefined} >{translate("mcp.auth.invalid_refresh_token")}
+{t("mcp.auth.invalid_refresh_token")}
{!props.isRemoteWorkspace ? ( isDesktopRuntime() ? ( ) : ({translate("mcp.auth.step1_title")}
+{t("mcp.auth.step1_title")}
- {translate("mcp.auth.step1_description", { server: serverName })} + {t("mcp.auth.step1_description", { server: serverName })}
{translate("mcp.auth.step2_title")}
-{translate("mcp.auth.step2_description")}
+{t("mcp.auth.step2_title")}
+{t("mcp.auth.step2_description")}
{translate("mcp.auth.step3_title")}
-{translate("mcp.auth.step3_description")}
+{t("mcp.auth.step3_title")}
+{t("mcp.auth.step3_description")}
{translate("mcp.auth.waiting_authorization")}
-{translate("mcp.auth.follow_browser_steps")}
+{t("mcp.auth.waiting_authorization")}
+{t("mcp.auth.follow_browser_steps")}
- {tr("mcp.add_modal_subtitle")} + {t("mcp.add_modal_subtitle")}
- {tr("mcp.control_chrome_browser_hint")} + {t("mcp.control_chrome_browser_hint")}
- {tr("mcp.control_chrome_profile_hint")} + {t("mcp.control_chrome_profile_hint")}
- {translate( + {t( props.target === "default" ? "model_picker.default_model_desc" : "model_picker.chat_model_desc", @@ -515,13 +509,13 @@ export function ModelPickerModal(props: ModelPickerModalProps) { type="text" value={props.query} onChange={(event) => props.setQuery(event.currentTarget.value)} - placeholder={translate("settings.search_models")} + placeholder={t("settings.search_models")} className="w-full bg-dls-surface border border-dls-border rounded-xl py-2.5 pl-9 pr-3 text-sm text-dls-text placeholder:text-dls-secondary focus:outline-none focus:ring-1 focus:ring-[rgba(var(--dls-accent-rgb),0.2)] focus:border-dls-accent" />
- {translate("session.rename_description")} + {t("session.rename_description")}
{resetConfirmationHint()} @@ -78,23 +75,23 @@ export function ResetModal(props: ResetModalProps) {
{tr("mcp.apps_subtitle")}
+{t("mcp.apps_subtitle")}
{connectedCount > 0 ? (- {translate("workspace.rename_description")} + {t("workspace.rename_description")}