diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 4c08d2554..4f25380d9 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -27,7 +27,7 @@ import SettingsListener from './utility/SettingsListener.svelte'; import { handleAuthOnStartup } from './clientAuth'; import { initializeAppUpdates } from './utility/appUpdate'; - import { _t } from './translations'; + import { _t, saveSelectedLanguageToCache } from './translations'; import { installCloudListeners } from './utility/cloudListeners'; export let isAdminPage = false; @@ -61,6 +61,7 @@ initializeAppUpdates(); installCloudListeners(); refreshPublicCloudFiles(); + saveSelectedLanguageToCache(); } loadedApi = loadedApiValue; diff --git a/packages/web/src/commands/registerCommand.ts b/packages/web/src/commands/registerCommand.ts index 117532965..7bb8a32d5 100644 --- a/packages/web/src/commands/registerCommand.ts +++ b/packages/web/src/commands/registerCommand.ts @@ -10,8 +10,8 @@ export interface GlobalCommand { id: string; category: string; // null for group commands isGroupCommand?: boolean; - name: string; - text?: string /* category: name */; + name: string | (() => string); + text?: string | (() => string); keyText?: string; keyTextFromGroup?: string; // automatically filled from group group?: string; @@ -27,7 +27,7 @@ export interface GlobalCommand { menuName?: string; toolbarOrder?: number; disableHandleKeyText?: string; - isRelatedToTab?: boolean, + isRelatedToTab?: boolean; systemCommand?: boolean; } diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index df5d6da95..52ba6e300 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -152,7 +152,7 @@ id: 'dataGrid.editJsonDocument', category: 'Data grid', keyText: 'CtrlOrCommand+J', - name: _t('command.datagrid.editJsonDocument', { defaultMessage: 'Edit row as JSON document' }), + name: __t('command.datagrid.editJsonDocument', { defaultMessage: 'Edit row as JSON document' }), testEnabled: () => getCurrentDataGrid()?.editJsonEnabled(), onClick: () => getCurrentDataGrid().editJsonDocument(), }); @@ -421,7 +421,7 @@ import { openJsonLinesData } from '../utility/openJsonLinesData'; import contextMenuActivator from '../utility/contextMenuActivator'; import InputTextModal from '../modals/InputTextModal.svelte'; - import { _t } from '../translations'; + import { __t, _t } from '../translations'; import { isProApp } from '../utility/proTools'; import SaveArchiveModal from '../modals/SaveArchiveModal.svelte'; import hasPermission from '../utility/hasPermission'; diff --git a/packages/web/src/translations.ts b/packages/web/src/translations.ts index b1665567b..5893399a8 100644 --- a/packages/web/src/translations.ts +++ b/packages/web/src/translations.ts @@ -15,15 +15,22 @@ const compiledMessages: Partial string { + return () => _t(key, options); +} diff --git a/packages/web/src/utility/contextMenu.ts b/packages/web/src/utility/contextMenu.ts index d5da4d202..d9cd5b997 100644 --- a/packages/web/src/utility/contextMenu.ts +++ b/packages/web/src/utility/contextMenu.ts @@ -112,8 +112,9 @@ function mapItem(item, commands) { if (item.command) { const command = commands[item.command]; if (command) { + const commandText = item.text || command.menuName || command.toolbarName || command.name; return { - text: item.text || command.menuName || command.toolbarName || command.name, + text: _.isFunction(commandText) ? commandText() : commandText, keyText: command.keyText || command.keyTextFromGroup || command.disableHandleKeyText, onClick: () => { if (command.isGroupCommand) {