fix(i18n): translate provider visibility/free-paid filter labels across 15 locales (#6694)

This commit is contained in:
Diego Rodrigues de Sa e Souza 2026-07-09 04:48:17 -03:00
parent f4fb0d310b
commit de9be04fe6
17 changed files with 207 additions and 135 deletions

View file

@ -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

View file

@ -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",

View file

@ -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": "モデルを非表示",

View file

@ -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": "모델 숨기기",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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",

View file

@ -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": "Скрыть модель",

View file

@ -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",

View file

@ -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",

View 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")}`
);
});