feat(i18n): add Arabic and Finnish translation files

Add complete i18n message files for Arabic (ar.json) and Finnish
(fi.json) locales covering all UI sections including common, sidebar,
providers, analytics, costs, health, limits, settings, modals, and
loggers translations.
This commit is contained in:
diegosouzapw
2026-02-26 16:50:01 -03:00
parent c2a777580a
commit 7bab9e09d3
8 changed files with 12250 additions and 10 deletions

2040
src/i18n/messages/ar.json Normal file

File diff suppressed because it is too large Load Diff

2040
src/i18n/messages/bg.json Normal file

File diff suppressed because it is too large Load Diff

2040
src/i18n/messages/da.json Normal file

File diff suppressed because it is too large Load Diff

2040
src/i18n/messages/de.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -192,7 +192,7 @@
"deleteConfirm": "Delete this API key?",
"usageTips": "Usage Tips",
"tipAuth": "Use API keys in the Authorization header as Bearer YOUR_KEY",
"tipSecure": "Keys are only shown once during creation \u2014 store them securely",
"tipSecure": "Keys are only shown once during creation store them securely",
"tipSeparate": "Create separate keys for different clients or environments",
"tipRestrict": "Restrict keys to specific models for better security and cost control",
"keyName": "Key Name",
@@ -200,7 +200,7 @@
"keyNameDesc": "Choose a descriptive name to identify this key's purpose",
"keyCreated": "API Key Created",
"keyCreatedSuccess": "Key created successfully!",
"keyCreatedNote": "Copy and store this key now \u2014 it won't be shown again.",
"keyCreatedNote": "Copy and store this key now it won't be shown again.",
"done": "Done",
"savePermissions": "Save Permissions",
"allowAll": "Allow All",
@@ -594,8 +594,8 @@
"syncing": "Syncing...",
"disabling": "Disabling...",
"cloudConnectedVerified": "Cloud Proxy connected and verified!",
"connectedVerificationPending": "Connected \u2014 verification pending",
"connectedVerificationPendingWithError": "Connected \u2014 verification pending: {error}",
"connectedVerificationPending": "Connected verification pending",
"connectedVerificationPendingWithError": "Connected verification pending: {error}",
"cloudDisabledSuccess": "Cloud disabled successfully",
"syncedSuccess": "Synced successfully",
"failedDisable": "Failed to disable cloud",
@@ -605,7 +605,7 @@
"cloudWorkerUnreachable": "Could not reach cloud worker. Make sure the cloud service is running (npm run dev in /cloud).",
"connectionFailed": "Connection failed",
"syncFailed": "Failed to sync cloud data",
"providerModelsTitle": "{provider} \u2014 Models",
"providerModelsTitle": "{provider} Models",
"noModelsForProvider": "No models available for this provider.",
"chat": "Chat",
"embedding": "Embedding",
@@ -737,7 +737,7 @@
"confirmPasswordPlaceholder": "Confirm password",
"passwordsMismatch": "Passwords do not match",
"setupComplete": "Setup Complete!",
"goToDashboard": "Go to Dashboard \u2192",
"goToDashboard": "Go to Dashboard ",
"welcomeDesc": "OmniRoute is your local AI API proxy. It routes requests to multiple AI providers with load balancing, failover, and usage tracking.",
"multiProvider": "Multi-Provider",
"usageTracking": "Usage Tracking",
@@ -759,7 +759,8 @@
"retry": "Retry",
"failedSetPassword": "Failed to set password. Try again.",
"failedAddProvider": "Failed to add provider. Try again.",
"connectionError": "Connection error. Please try again."
"connectionError": "Connection error. Please try again.",
"provider": "Provider"
},
"providers": {
"title": "Providers",
@@ -856,7 +857,7 @@
"apiTypeLabel": "API Type",
"prefixHint": "Required. Unique prefix for model names.",
"nameHint": "Required. A friendly label for this node.",
"baseUrlHint": "Required. \u2003Provider API base URL.",
"baseUrlHint": "Required. Provider API base URL.",
"anthropicPrefixPlaceholder": "ac-prod",
"openaiPrefixPlaceholder": "oc-prod",
"anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
@@ -989,7 +990,6 @@
"openaiCompatibleModelPlaceholder": "gpt-4o",
"apiKeyValidationFailed": "API key validation failed. Please check your key and try again.",
"addProviderApiKeyTitle": "Add {provider} API Key",
"apiKeyLabel": "API Key",
"checking": "Checking...",
"check": "Check",
"valid": "Valid",

2040
src/i18n/messages/es.json Normal file

File diff suppressed because it is too large Load Diff

2040
src/i18n/messages/fi.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -65,7 +65,7 @@ export default function LanguageSelector() {
{/* Dropdown */}
{open && (
<div className="absolute right-0 top-full mt-1 w-40 rounded-xl border border-border bg-bg shadow-xl z-50 overflow-hidden animate-in fade-in slide-in-from-top-1 duration-150">
<div className="absolute right-0 top-full mt-1 w-56 max-h-80 rounded-xl border border-border bg-bg shadow-xl z-50 overflow-y-auto animate-in fade-in slide-in-from-top-1 duration-150">
{LANGUAGES.map((lang) => (
<button
key={lang.code}