mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-09 17:28:51 +00:00
fix(i18n): translate provider visibility/free-paid filter labels across 15 locales (#6694)
This commit is contained in:
parent
f4fb0d310b
commit
de9be04fe6
17 changed files with 207 additions and 135 deletions
|
|
@ -97,6 +97,12 @@ Thanks to everyone whose work landed in v3.8.47:
|
|||
|
||||
---
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- **fix(i18n):** the provider-detail (`/dashboard/providers/[id]`) visibility + free/paid model filter labels (`showVisibleOnly`, `showHiddenOnly`, `freeFilterAll`, `freeFilterFreeOnly`, `freeFilterPaidOnly`, `hideAllModels`, plus the currently-unused `filterVisible`/`filterHidden`/`filterByVisibility`) rendered as the literal `__MISSING__:<english>` sentinel in 15 locales, including pt-BR ([#6694](https://github.com/diegosouzapw/OmniRoute/issues/6694)) — `providerText()` (`providerPageHelpers.ts`) checks `t.has(key)` before falling back to clean English, and `t.has()` returns `true` even when the stored value is the `__MISSING__:` sentinel `scripts/i18n/sync-ui-keys.mjs` writes when mirroring keys across locales, so the sentinel rendered verbatim instead of the fallback. Disjoint key set from #6290 (`filterAll`/`filterActive`/`filterError`/`filterBanned`/`filterCreditsExhausted`). All 9 keys now carry real translations across the 15 affected locale files (`it`, `ja`, `ko`, `mr`, `ms`, `nl`, `no`, `phi`, `pl`, `pt`, `pt-BR`, `ro`, `ru`, `sk`, `sv`). Regression guard: `tests/unit/i18n-provider-visibility-filter-keys-6694.test.ts`.
|
||||
|
||||
---
|
||||
|
||||
## [3.8.46] — 2026-07-07
|
||||
|
||||
### ✨ New Features
|
||||
|
|
|
|||
|
|
@ -3988,13 +3988,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Solo visibili",
|
||||
"freeFilterAll": "Tutti",
|
||||
"freeFilterFreeOnly": "Solo gratuiti",
|
||||
"freeFilterPaidOnly": "Solo a pagamento",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Solo nascosti",
|
||||
"filterByVisibility": "Filtra per visibilità",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Connesso",
|
||||
|
|
@ -4003,8 +4003,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Tutti",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Solo visibili",
|
||||
"filterHidden": "Solo nascosti",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Attenzione",
|
||||
"noConnections": "Nessuna connessione",
|
||||
|
|
@ -4172,7 +4172,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Nascondi tutti",
|
||||
"modelsActive": "attivi",
|
||||
"showModel": "Mostra modello",
|
||||
"hideModel": "Nascondi modello",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "表示のみ",
|
||||
"freeFilterAll": "すべて",
|
||||
"freeFilterFreeOnly": "無料のみ",
|
||||
"freeFilterPaidOnly": "有料のみ",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "非表示のみ",
|
||||
"filterByVisibility": "表示状態で絞り込み",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} 接続されました",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "すべて",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "表示のみ",
|
||||
"filterHidden": "非表示のみ",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} 警告",
|
||||
"noConnections": "接続がありません",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "すべて非表示",
|
||||
"modelsActive": "有効",
|
||||
"showModel": "モデルを表示",
|
||||
"hideModel": "モデルを非表示",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "표시된 항목만",
|
||||
"freeFilterAll": "전체",
|
||||
"freeFilterFreeOnly": "무료만",
|
||||
"freeFilterPaidOnly": "유료만",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "숨겨진 항목만",
|
||||
"filterByVisibility": "표시 여부로 필터링",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} 연결됨",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "전체",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "표시된 항목만",
|
||||
"filterHidden": "숨겨진 항목만",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} 경고",
|
||||
"noConnections": "연결 없음",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "모두 숨기기",
|
||||
"modelsActive": "활성",
|
||||
"showModel": "모델 표시",
|
||||
"hideModel": "모델 숨기기",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "फक्त दृश्यमान",
|
||||
"freeFilterAll": "सर्व",
|
||||
"freeFilterFreeOnly": "फक्त मोफत",
|
||||
"freeFilterPaidOnly": "फक्त सशुल्क",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "फक्त लपवलेले",
|
||||
"filterByVisibility": "दृश्यमानतेनुसार फिल्टर करा",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Connected",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "सर्व",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "फक्त दृश्यमान",
|
||||
"filterHidden": "फक्त लपवलेले",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} चेतावणी",
|
||||
"noConnections": "No connections",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "सर्व लपवा",
|
||||
"modelsActive": "Active",
|
||||
"showModel": "Show model",
|
||||
"hideModel": "Hide model",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Kelihatan sahaja",
|
||||
"freeFilterAll": "Semua",
|
||||
"freeFilterFreeOnly": "Percuma sahaja",
|
||||
"freeFilterPaidOnly": "Berbayar sahaja",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Tersembunyi sahaja",
|
||||
"filterByVisibility": "Tapis mengikut keterlihatan",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Disambungkan",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Semua",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Kelihatan sahaja",
|
||||
"filterHidden": "Tersembunyi sahaja",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Amaran",
|
||||
"noConnections": "Tiada sambungan",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Sembunyikan semua",
|
||||
"modelsActive": "aktif",
|
||||
"showModel": "Tunjukkan model",
|
||||
"hideModel": "Sembunyikan model",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Alleen zichtbaar",
|
||||
"freeFilterAll": "Alle",
|
||||
"freeFilterFreeOnly": "Alleen gratis",
|
||||
"freeFilterPaidOnly": "Alleen betaald",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Alleen verborgen",
|
||||
"filterByVisibility": "Filteren op zichtbaarheid",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Verbonden",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Alle",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Alleen zichtbaar",
|
||||
"filterHidden": "Alleen verborgen",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Waarschuwing",
|
||||
"noConnections": "Geen verbindingen",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Alles verbergen",
|
||||
"modelsActive": "actief",
|
||||
"showModel": "Model tonen",
|
||||
"hideModel": "Model verbergen",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Kun synlige",
|
||||
"freeFilterAll": "Alle",
|
||||
"freeFilterFreeOnly": "Kun gratis",
|
||||
"freeFilterPaidOnly": "Kun betalte",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Kun skjulte",
|
||||
"filterByVisibility": "Filtrer etter synlighet",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Tilkoblet",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Alle",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Kun synlige",
|
||||
"filterHidden": "Kun skjulte",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Advarsel",
|
||||
"noConnections": "Ingen tilkoblinger",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Skjul alle",
|
||||
"modelsActive": "aktive",
|
||||
"showModel": "Vis modell",
|
||||
"hideModel": "Skjul modell",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Nakikita lang",
|
||||
"freeFilterAll": "Lahat",
|
||||
"freeFilterFreeOnly": "Libre lang",
|
||||
"freeFilterPaidOnly": "Bayad lang",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Nakatago lang",
|
||||
"filterByVisibility": "I-filter ayon sa pagkakita",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Nakakonekta",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Lahat",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Nakikita lang",
|
||||
"filterHidden": "Nakatago lang",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Babala",
|
||||
"noConnections": "Walang koneksyon",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Itago lahat",
|
||||
"modelsActive": "aktibo",
|
||||
"showModel": "Ipakita ang modelo",
|
||||
"hideModel": "Itago ang modelo",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Tylko widoczne",
|
||||
"freeFilterAll": "Wszystkie",
|
||||
"freeFilterFreeOnly": "Tylko darmowe",
|
||||
"freeFilterPaidOnly": "Tylko płatne",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Tylko ukryte",
|
||||
"filterByVisibility": "Filtruj według widoczności",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Połączono",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Wszystkie",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Tylko widoczne",
|
||||
"filterHidden": "Tylko ukryte",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Ostrzeżenie",
|
||||
"noConnections": "Brak połączeń",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Ukryj wszystkie",
|
||||
"modelsActive": "aktywne",
|
||||
"showModel": "Pokaż model",
|
||||
"hideModel": "Ukryj model",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Somente visíveis",
|
||||
"freeFilterAll": "Todos",
|
||||
"freeFilterFreeOnly": "Somente gratuitos",
|
||||
"freeFilterPaidOnly": "Somente pagos",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Somente ocultos",
|
||||
"filterByVisibility": "Filtrar por visibilidade",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Conectado(s)",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Todos",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Somente visíveis",
|
||||
"filterHidden": "Somente ocultos",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Aviso",
|
||||
"noConnections": "Sem conexões",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Selecionar todos",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Ocultar todos",
|
||||
"modelsActive": "ativos",
|
||||
"showModel": "Mostrar modelo",
|
||||
"hideModel": "Ocultar modelo",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Apenas visíveis",
|
||||
"freeFilterAll": "Todos",
|
||||
"freeFilterFreeOnly": "Apenas gratuitos",
|
||||
"freeFilterPaidOnly": "Apenas pagos",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Apenas ocultos",
|
||||
"filterByVisibility": "Filtrar por visibilidade",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Conectado",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Todos",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Apenas visíveis",
|
||||
"filterHidden": "Apenas ocultos",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Aviso",
|
||||
"noConnections": "Sem conexões",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Selecionar todos",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Ocultar todos",
|
||||
"modelsActive": "ativos",
|
||||
"showModel": "Mostrar modelo",
|
||||
"hideModel": "Ocultar modelo",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Doar vizibile",
|
||||
"freeFilterAll": "Toate",
|
||||
"freeFilterFreeOnly": "Doar gratuite",
|
||||
"freeFilterPaidOnly": "Doar plătite",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Doar ascunse",
|
||||
"filterByVisibility": "Filtrează după vizibilitate",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Conectat",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Toate",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Doar vizibile",
|
||||
"filterHidden": "Doar ascunse",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Avertisment",
|
||||
"noConnections": "Fără conexiuni",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Ascunde tot",
|
||||
"modelsActive": "active",
|
||||
"showModel": "Afișează modelul",
|
||||
"hideModel": "Ascunde modelul",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Только видимые",
|
||||
"freeFilterAll": "Все",
|
||||
"freeFilterFreeOnly": "Только бесплатные",
|
||||
"freeFilterPaidOnly": "Только платные",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Только скрытые",
|
||||
"filterByVisibility": "Фильтр по видимости",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} подключено",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Все",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Только видимые",
|
||||
"filterHidden": "Только скрытые",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Предупреждение",
|
||||
"noConnections": "Нет соединений",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Скрыть все",
|
||||
"modelsActive": "активные",
|
||||
"showModel": "Показать модель",
|
||||
"hideModel": "Скрыть модель",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Len viditeľné",
|
||||
"freeFilterAll": "Všetky",
|
||||
"freeFilterFreeOnly": "Len bezplatné",
|
||||
"freeFilterPaidOnly": "Len platené",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Len skryté",
|
||||
"filterByVisibility": "Filtrovať podľa viditeľnosti",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Pripojené",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Všetky",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Len viditeľné",
|
||||
"filterHidden": "Len skryté",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Upozornenie",
|
||||
"noConnections": "Žiadne spojenia",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Skryť všetky",
|
||||
"modelsActive": "aktívne",
|
||||
"showModel": "Zobraziť model",
|
||||
"hideModel": "Skryť model",
|
||||
|
|
|
|||
|
|
@ -3960,13 +3960,13 @@
|
|||
"testAllResults": "__MISSING__:{ok} of {total} models working",
|
||||
"noModelsToTest": "__MISSING__:No models match the current filter",
|
||||
"showAllModels": "__MISSING__:All",
|
||||
"showVisibleOnly": "__MISSING__:Visible only",
|
||||
"freeFilterAll": "__MISSING__:All",
|
||||
"freeFilterFreeOnly": "__MISSING__:Free only",
|
||||
"freeFilterPaidOnly": "__MISSING__:Paid only",
|
||||
"showVisibleOnly": "Endast synliga",
|
||||
"freeFilterAll": "Alla",
|
||||
"freeFilterFreeOnly": "Endast gratis",
|
||||
"freeFilterPaidOnly": "Endast betalda",
|
||||
"sortFreeFirst": "__MISSING__:Free first",
|
||||
"showHiddenOnly": "__MISSING__:Hidden only",
|
||||
"filterByVisibility": "__MISSING__:Filter by visibility",
|
||||
"showHiddenOnly": "Endast dolda",
|
||||
"filterByVisibility": "Filtrera efter synlighet",
|
||||
"autoHideFailed": "__MISSING__:Auto-hide failed models",
|
||||
"autoHideFailedHint": "__MISSING__:When enabled, Test all hides non-transient failures from public catalogs such as /v1/models. Single-model tests never auto-hide.",
|
||||
"connected": "{count} Ansluten",
|
||||
|
|
@ -3975,8 +3975,8 @@
|
|||
"testAllCompleted": "__MISSING__:Tested {total} models: {ok} OK, {failed} failed",
|
||||
"modelAutoHidden": "__MISSING__:Model {model} auto-hidden (test failed)",
|
||||
"filterAll": "Alla",
|
||||
"filterVisible": "__MISSING__:Visible only",
|
||||
"filterHidden": "__MISSING__:Hidden only",
|
||||
"filterVisible": "Endast synliga",
|
||||
"filterHidden": "Endast dolda",
|
||||
"modelsHiddenCount": "__MISSING__:{count} hidden",
|
||||
"warningCount": "{count} Varning",
|
||||
"noConnections": "Inga anslutningar",
|
||||
|
|
@ -4144,7 +4144,7 @@
|
|||
"testAllRateLimited": "__MISSING__:Rate limit reached, stopped early",
|
||||
"hideFailedAuto": "__MISSING__:Auto-hide failed models",
|
||||
"selectAllModels": "Select all",
|
||||
"hideAllModels": "__MISSING__:Hide all",
|
||||
"hideAllModels": "Dölj alla",
|
||||
"modelsActive": "aktiva",
|
||||
"showModel": "Visa modell",
|
||||
"hideModel": "Dölj modell",
|
||||
|
|
|
|||
66
tests/unit/i18n-provider-visibility-filter-keys-6694.test.ts
Normal file
66
tests/unit/i18n-provider-visibility-filter-keys-6694.test.ts
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
import { test } from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import { readdirSync, readFileSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
/**
|
||||
* Regression guard for #6694.
|
||||
*
|
||||
* On the provider detail page the visibility + free/paid filter row
|
||||
* (`providers.filterVisible/filterHidden/freeFilterAll/freeFilterFreeOnly/
|
||||
* freeFilterPaidOnly/showVisibleOnly/showHiddenOnly/filterByVisibility/
|
||||
* hideAllModels`) rendered as the literal `__MISSING__:<english>` sentinel in
|
||||
* 15 locales (including pt-BR) because those keys were mirrored by
|
||||
* scripts/i18n/sync-ui-keys.mjs but never translated.
|
||||
*
|
||||
* This is a DISJOINT key set from #6290 (filterAll/filterActive/filterError/
|
||||
* filterBanned/filterCreditsExhausted, guarded by
|
||||
* tests/unit/i18n-provider-filter-keys-6290.test.ts).
|
||||
*/
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const MESSAGES_DIR = path.resolve(__dirname, "..", "..", "src", "i18n", "messages");
|
||||
const PLACEHOLDER_PREFIX = "__MISSING__:";
|
||||
const FILTER_KEYS = [
|
||||
"filterVisible",
|
||||
"filterHidden",
|
||||
"freeFilterAll",
|
||||
"freeFilterFreeOnly",
|
||||
"freeFilterPaidOnly",
|
||||
"showVisibleOnly",
|
||||
"showHiddenOnly",
|
||||
"filterByVisibility",
|
||||
"hideAllModels",
|
||||
] as const;
|
||||
|
||||
function localeFiles(): string[] {
|
||||
return readdirSync(MESSAGES_DIR)
|
||||
.filter((f) => f.endsWith(".json"))
|
||||
.sort();
|
||||
}
|
||||
|
||||
test("every shipped locale has real (non-__MISSING__) providers visibility filter labels (#6694)", () => {
|
||||
const offenders: string[] = [];
|
||||
|
||||
for (const file of localeFiles()) {
|
||||
const locale = file.replace(/\.json$/, "");
|
||||
const json = JSON.parse(readFileSync(path.join(MESSAGES_DIR, file), "utf8"));
|
||||
const providers = json.providers ?? {};
|
||||
|
||||
for (const key of FILTER_KEYS) {
|
||||
const value = providers[key];
|
||||
// Absent is harmless here (t.has() is false -> clean English fallback fires).
|
||||
if (value === undefined || value === null) continue;
|
||||
if (typeof value === "string" && value.startsWith(PLACEHOLDER_PREFIX)) {
|
||||
offenders.push(`${locale}: providers.${key} is sentinel "${value}"`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assert.equal(
|
||||
offenders.length,
|
||||
0,
|
||||
`Untranslated provider visibility filter labels (#6694 regression):\n${offenders.join("\n")}`
|
||||
);
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue