mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-20 14:12:59 +03:00
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:
2040
src/i18n/messages/ar.json
Normal file
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
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
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
2040
src/i18n/messages/de.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
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
2040
src/i18n/messages/fi.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user