chore(i18n): update translations from Weblate#2680
Conversation
📝 WalkthroughWalkthroughRemoved Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
9784d88 to
cd96edb
Compare
There was a problem hiding this comment.
Actionable comments posted: 12
🧹 Nitpick comments (1)
src/i18n/locale/fr.json (1)
76-76: Minor terminology inconsistency (optional).Line 76 uses "Plateformes de streaming" while line 110 uses "Services de streaming". Both are valid translations, but you may want to standardize on one term for consistency across the UI.
Also applies to: 110-110
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/fr.json` at line 76, The translation keys use two different French terms; standardize the wording by updating the value for "components.Discover.FilterSlideover.streamingservices" (and the duplicate at the other occurrence) to the chosen consistent term—e.g., change both entries from "Plateformes de streaming" to "Services de streaming" (or vice versa) so all instances of that key use the exact same string across the file.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/i18n/locale/it.json`:
- Line 1441: Update the Italian translation typos: change the value for
components.Discover.FilterSlideover.excludeKeywords from "Parole chiavi escluse"
to "Parole chiave escluse", and find and fix the other two occurrences by
replacing "ULR Youtube" with "URL YouTube" and "parola chiava" with "parola
chiave" wherever they appear in this locale file so the shipped strings are
correct.
- Line 1489: The ICU plural selector for the key
components.Settings.SettingsJobsCache.editJobScheduleSelectorDays uses an
invalid plural category "1"; update the ICU message to use the correct plural
keyword "one" (i.e. change "plural, 1 {giorno}" to "plural, one {giorno}") so it
matches React Intl's expected syntax and other locales.
- Around line 1579-1581: Update the three locale keys that use the wrong
singular prefix to the plural prefix: change
"component.BlocklistBlock.blocklistdate",
"component.BlocklistBlock.blocklistedby", and
"component.BlocklistModal.blocklisting" to
"components.BlocklistBlock.blocklistdate",
"components.BlocklistBlock.blocklistedby", and
"components.BlocklistModal.blocklisting" respectively in this locale file; after
renaming, run a quick search for those old keys in the codebase (references to
BlocklistBlock / BlocklistModal) and update any usages to the new keys to keep
translations wired correctly.
In `@src/i18n/locale/pt_BR.json`:
- Line 1184: Update the two pt-BR localization entries: change the product name
"Seer" to the correct project name in the key
"components.Settings.SettingsJobsCache.imagecacheDescription" and fix the typo
"especias" to "especiais" in the other settings string referenced in the review
(the key around line 1417); ensure the Portuguese text preserves surrounding
formatting like the <code>{appDataPath}/cache/images</code> placeholder and only
corrects the misspellings.
- Around line 1429-1430: The two translation keys for DNS TTL are identical;
update the value for components.Settings.SettingsNetwork.dnsCacheForceMinTtl so
it reads as the minimum TTL (e.g., "TTL mínimo do cache DNS") while leaving
components.Settings.SettingsNetwork.dnsCacheForceMaxTtl unchanged, ensuring the
min/max labels are distinct in src/i18n/locale/pt_BR.json.
- Line 1563: The translation for the key
"components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.activesubscription"
is empty and results in a blank label in pt-BR; open src/i18n/locale/pt_BR.json,
locate that exact key and replace the empty string with the appropriate
Portuguese label (e.g., "Inscrição ativa" or another agreed phrase), ensuring
valid JSON string formatting and escaping if needed so the UI shows the web push
label correctly.
- Line 1404: The pluralization string for the scheduler label
"components.Settings.SettingsJobsCache.editJobScheduleSelectorDays" contains
English words ("day"/"days"); update the ICU plural branches so the singular
branch uses "dia" and the other branch uses "{jobScheduleDays} dias" (preserving
the {jobScheduleDays} interpolation) so the pt-BR translation reads "Cada dia"
for one and "Cada {jobScheduleDays} dias" for other counts.
In `@src/i18n/locale/pt_PT.json`:
- Line 1615: The string for the settings label
"components.Settings.SonarrModal.monitorNewItems" is written as an imperative
phrase ("Acompanhe as novas temporadas"); change it to a noun/label form such as
"Monitorizar novas temporadas" so it reads like a setting label rather than an
instruction and matches other settings copy.
In `@src/i18n/locale/ru.json`:
- Around line 1600-1607: Two typos exist in the Russian locale strings for
blocklisted-tag import: correct the misspellings in the keys
components.Settings.blocklistedTagImportInstructions (replace "конифгурацию"
with "конфигурацию") and components.Settings.importBlocklistedTagsTip (replace
"Импоритровать" with "Импортировать") so the user-facing settings UI shows the
proper Russian words.
- Around line 1455-1457: The translation value for the key
components.Settings.Notifications.NotificationsNtfy.embedPoster contains a
trailing soft-hyphen/non-printing character; open the string for that key and
remove the invisible character so the value becomes "Добавлять постер" (no
soft-hyphen or other hidden characters), then save the JSON ensuring encoding
remains UTF-8.
In `@src/i18n/locale/zh_Hans.json`:
- Around line 1446-1451: Replace the mistaken "证书" wording with a media-rating
term (e.g., "分级" or "内容分级") for the Certification selector translations: update
the values for "components.Selector.CertificationSelector.errorLoading",
"components.Selector.CertificationSelector.maxRating",
"components.Selector.CertificationSelector.minRating",
"components.Selector.CertificationSelector.noOptions", and
"components.Selector.CertificationSelector.selectCertification" to use "分级" or
"内容分级" (for example change "证书加载失败" to "分级信息加载失败" or "内容分级加载失败") so the text
clearly refers to content rating rather than a certificate.
- Around line 1571-1584: Summary: The translations mix three terms ("封锁清单",
"黑名单", "被屏蔽") for the same feature; pick one and make them consistent. Fix:
choose a single term (e.g., "黑名单") and update all affected keys so wording is
consistent—replace "封锁清单" and instances of "被屏蔽"/"被屏蔽的" with "黑名单"/contextual
phrases like "黑名单设置", "显示所有被列入黑名单的媒体", "管理黑名单", "查看黑名单中的媒体", and "从黑名单中移除" for
the keys components.Blocklist.* (blocklistsettings, showAllBlocklisted,
filterBlocklistedTags, etc.), components.Layout.Sidebar.blocklist,
components.PermissionEdit.manageblocklist and related description/view keys,
i18n.removefromBlocklist, and the unableToConnect keys in
components.Discover.RecentRequestsSlider and components.RequestList so the
namespace uses the same term throughout.
---
Nitpick comments:
In `@src/i18n/locale/fr.json`:
- Line 76: The translation keys use two different French terms; standardize the
wording by updating the value for
"components.Discover.FilterSlideover.streamingservices" (and the duplicate at
the other occurrence) to the chosen consistent term—e.g., change both entries
from "Plateformes de streaming" to "Services de streaming" (or vice versa) so
all instances of that key use the exact same string across the file.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 0a0733e9-83e0-44e9-ab12-5f6f68f0ede4
📒 Files selected for processing (37)
src/i18n/locale/ar.jsonsrc/i18n/locale/bg.jsonsrc/i18n/locale/ca.jsonsrc/i18n/locale/cs.jsonsrc/i18n/locale/da.jsonsrc/i18n/locale/de.jsonsrc/i18n/locale/el.jsonsrc/i18n/locale/es.jsonsrc/i18n/locale/es_MX.jsonsrc/i18n/locale/et.jsonsrc/i18n/locale/eu.jsonsrc/i18n/locale/fi.jsonsrc/i18n/locale/fr.jsonsrc/i18n/locale/he.jsonsrc/i18n/locale/hi.jsonsrc/i18n/locale/hr.jsonsrc/i18n/locale/hu.jsonsrc/i18n/locale/it.jsonsrc/i18n/locale/ja.jsonsrc/i18n/locale/ko.jsonsrc/i18n/locale/lt.jsonsrc/i18n/locale/nb_NO.jsonsrc/i18n/locale/nl.jsonsrc/i18n/locale/pl.jsonsrc/i18n/locale/pt_BR.jsonsrc/i18n/locale/pt_PT.jsonsrc/i18n/locale/ro.jsonsrc/i18n/locale/ru.jsonsrc/i18n/locale/sk.jsonsrc/i18n/locale/sl.jsonsrc/i18n/locale/sq.jsonsrc/i18n/locale/sr.jsonsrc/i18n/locale/sv.jsonsrc/i18n/locale/tr.jsonsrc/i18n/locale/uk.jsonsrc/i18n/locale/zh_Hans.jsonsrc/i18n/locale/zh_Hant.json
💤 Files with no reviewable changes (22)
- src/i18n/locale/nl.json
- src/i18n/locale/bg.json
- src/i18n/locale/fi.json
- src/i18n/locale/lt.json
- src/i18n/locale/ca.json
- src/i18n/locale/pl.json
- src/i18n/locale/es.json
- src/i18n/locale/sq.json
- src/i18n/locale/tr.json
- src/i18n/locale/uk.json
- src/i18n/locale/hr.json
- src/i18n/locale/el.json
- src/i18n/locale/sl.json
- src/i18n/locale/ar.json
- src/i18n/locale/ko.json
- src/i18n/locale/he.json
- src/i18n/locale/sr.json
- src/i18n/locale/ro.json
- src/i18n/locale/hi.json
- src/i18n/locale/es_MX.json
- src/i18n/locale/zh_Hant.json
- src/i18n/locale/nb_NO.json
| "components.Discover.updatefailed": "Algo deu errado com a mudança das configurações de descoberta personalizadas.", | ||
| "components.Discover.updatesuccess": "Configurações personalizadas de descoberta atualizadas.", | ||
| "components.Settings.SettingsJobsCache.imagecacheDescription": "Quando ativado nas configurações, o Overseer irá obter e guardar imagens de fontes externas pré configuradas. As imagens guardadas são salvas na sua pasta de configuração. Você pode encontrar os arquivos em <code>{appDataPath}/cache/images</code>.", | ||
| "components.Settings.SettingsJobsCache.imagecacheDescription": "Quando ativado nas configurações, o Seer irá obter e guardar imagens de fontes externas pré configuradas. As imagens guardadas são salvas na sua pasta de configuração. Você pode encontrar os arquivos em <code>{appDataPath}/cache/images</code>.", |
There was a problem hiding this comment.
Fix the remaining pt-BR typos in these new settings strings.
Line 1184 misspells the product name as Seer, and Line 1417 uses especias instead of especiais.
Suggested fix
- "components.Settings.SettingsJobsCache.imagecacheDescription": "Quando ativado nas configurações, o Seer irá obter e guardar imagens de fontes externas pré configuradas. As imagens guardadas são salvas na sua pasta de configuração. Você pode encontrar os arquivos em <code>{appDataPath}/cache/images</code>.",
+ "components.Settings.SettingsJobsCache.imagecacheDescription": "Quando ativado nas configurações, o Seerr irá obter e guardar imagens de fontes externas pré-configuradas. As imagens guardadas são salvas na sua pasta de configuração. Você pode encontrar os arquivos em <code>{appDataPath}/cache/images</code>.",
- "components.Settings.SettingsMain.enableSpecialEpisodes": "Permitir pedidos de episódios especias",
+ "components.Settings.SettingsMain.enableSpecialEpisodes": "Permitir pedidos de episódios especiais",Also applies to: 1417-1417
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/i18n/locale/pt_BR.json` at line 1184, Update the two pt-BR localization
entries: change the product name "Seer" to the correct project name in the key
"components.Settings.SettingsJobsCache.imagecacheDescription" and fix the typo
"especias" to "especiais" in the other settings string referenced in the review
(the key around line 1417); ensure the Portuguese text preserves surrounding
formatting like the <code>{appDataPath}/cache/images</code> placeholder and only
corrects the misspellings.
| "components.Selector.CertificationSelector.errorLoading": "证书加载失败", | ||
| "components.Selector.CertificationSelector.maxRating": "", | ||
| "components.Selector.CertificationSelector.minRating": "", | ||
| "components.Selector.CertificationSelector.noOptions": "", | ||
| "components.Selector.CertificationSelector.selectCertification": "", | ||
| "components.Selector.CertificationSelector.selectCountry": "", | ||
| "components.Selector.CertificationSelector.selectCountry": "选择国家/地区", |
There was a problem hiding this comment.
Use a media-rating term instead of 证书 here.
In this selector, Certification refers to content rating / age classification, not a document or TLS certificate. 证书加载失败 will read like the wrong feature failed to load.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/i18n/locale/zh_Hans.json` around lines 1446 - 1451, Replace the mistaken
"证书" wording with a media-rating term (e.g., "分级" or "内容分级") for the
Certification selector translations: update the values for
"components.Selector.CertificationSelector.errorLoading",
"components.Selector.CertificationSelector.maxRating",
"components.Selector.CertificationSelector.minRating",
"components.Selector.CertificationSelector.noOptions", and
"components.Selector.CertificationSelector.selectCertification" to use "分级" or
"内容分级" (for example change "证书加载失败" to "分级信息加载失败" or "内容分级加载失败") so the text
clearly refers to content rating rather than a certificate.
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (9)
src/i18n/locale/pt_BR.json (4)
1404-1404:⚠️ Potential issue | 🟡 MinorTranslate the ICU plural branches for the scheduler label.
Line 1404 still renders English (
day/days) inside the pt-BR message.Suggested fix
- "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays": "Cada {jobScheduleDays, plural, one {day} other {{jobScheduleDays} days}}", + "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays": "A cada {jobScheduleDays, plural, one {dia} other {{jobScheduleDays} dias}}",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1404, The ICU plural branches for the key "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays" are still in English; update the plural forms so the singular and plural Portuguese words are used (e.g., "dia" for one and "dias" for other) while preserving the ICU plural syntax and the {jobScheduleDays} interpolation; ensure the full value becomes something like the Portuguese equivalent for "Every {n} day(s)" using the same key.
1429-1430:⚠️ Potential issue | 🟡 MinorDifferentiate the min/max DNS TTL labels.
Lines 1429-1430 currently show the same text, so the minimum TTL field is mislabeled in pt-BR.
Suggested fix
"components.Settings.SettingsNetwork.dnsCacheForceMaxTtl": "TTL máximo do cache DNS", - "components.Settings.SettingsNetwork.dnsCacheForceMinTtl": "TTL máximo do cache DNS", + "components.Settings.SettingsNetwork.dnsCacheForceMinTtl": "TTL mínimo do cache DNS",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` around lines 1429 - 1430, The pt-BR locale has the same translation for both DNS TTL entries; update the value for "components.Settings.SettingsNetwork.dnsCacheForceMinTtl" so it correctly reads "TTL mínimo do cache DNS" instead of the duplicate "TTL máximo do cache DNS" (leave "components.Settings.SettingsNetwork.dnsCacheForceMaxTtl" unchanged).
1563-1563:⚠️ Potential issue | 🟡 MinorDon’t leave the new web push label empty.
Line 1563 is still empty, so the active-subscription label will render blank in pt-BR.
Suggested fix
- "components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.activesubscription": "", + "components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.activesubscription": "Assinatura ativa",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1563, The translation key components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.activesubscription is empty and will render blank; open the pt_BR.json and provide the Portuguese (Brazil) text for the "active subscription" label (for example "Assinatura ativa" or your chosen localized phrase) by replacing the empty string value for that key so the label displays correctly in pt-BR.
1184-1184:⚠️ Potential issue | 🟡 MinorFix the remaining pt-BR typos in these settings strings.
Line 1184 still says
Seer, and Line 1417 still hasespecias, so both labels will show obvious typos in the pt-BR UI.Suggested fix
- "components.Settings.SettingsJobsCache.imagecacheDescription": "Quando ativado nas configurações, o Seer irá obter e guardar imagens de fontes externas pré configuradas. As imagens guardadas são salvas na sua pasta de configuração. Você pode encontrar os arquivos em <code>{appDataPath}/cache/images</code>.", + "components.Settings.SettingsJobsCache.imagecacheDescription": "Quando ativado nas configurações, o Seerr irá obter e guardar imagens de fontes externas pré-configuradas. As imagens guardadas são salvas na sua pasta de configuração. Você pode encontrar os arquivos em <code>{appDataPath}/cache/images</code>.", - "components.Settings.SettingsMain.enableSpecialEpisodes": "Permitir pedidos de episódios especias", + "components.Settings.SettingsMain.enableSpecialEpisodes": "Permitir pedidos de episódios especiais",Also applies to: 1417-1417
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1184, Replace the incorrect occurrences in the pt-BR locale: update the value for components.Settings.SettingsJobsCache.imagecacheDescription to use the product/display name used elsewhere in translations instead of the literal "Seer" (keep the rest of the sentence and the {appDataPath} placeholder intact), and locate the other pt_BR.json entry containing the misspelling "especias" (search the file for that token) and correct it to the appropriate Portuguese word "especiais" (or the correct accented form used in your project), ensuring consistency with other pt-BR strings.src/i18n/locale/it.json (3)
1579-1581:⚠️ Potential issue | 🟠 MajorKeep the Blocklist keys under the
components.namespace.Lines 1579-1581 switch to
component.while the rest of this locale file usescomponents.. Since i18n lookups are exact, these keys are likely to miss the existing Blocklist namespace.🗂️ Suggested fix
- "component.BlocklistBlock.blocklistdate": "Data blocco", - "component.BlocklistBlock.blocklistedby": "Bloccato da", - "component.BlocklistModal.blocklisting": "Bloccaggio", + "components.BlocklistBlock.blocklistdate": "Data blocco", + "components.BlocklistBlock.blocklistedby": "Bloccato da", + "components.BlocklistModal.blocklisting": "Bloccaggio",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/it.json` around lines 1579 - 1581, The three i18n keys "component.BlocklistBlock.blocklistdate", "component.BlocklistBlock.blocklistedby", and "component.BlocklistModal.blocklisting" are using the wrong namespace; rename them to use the existing components. namespace (i.e. "components.BlocklistBlock.blocklistdate", "components.BlocklistBlock.blocklistedby", "components.BlocklistModal.blocklisting") so lookups match the rest of the locale and existing Blocklist keys.
1489-1489:⚠️ Potential issue | 🟠 MajorUse a valid ICU plural selector on Line 1489.
plural, 1 {giorno}is invalid ICU syntax. React Intl expects a category likeone, so this message can fail to format at runtime.🧩 Suggested fix
- "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays": "Ogni {jobScheduleDays, plural, 1 {giorno} other {{jobScheduleDays} giorni}}", + "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays": "Ogni {jobScheduleDays, plural, one {giorno} other {{jobScheduleDays} giorni}}",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/it.json` at line 1489, The ICU plural form for the key components.Settings.SettingsJobsCache.editJobScheduleSelectorDays is using an invalid category "1"; update the plural selector to use ICU categories (e.g., one and other) and use the numeric placeholder inside the other branch (or #) so React Intl can format it: change the plural selector from "plural, 1 {giorno} other {{jobScheduleDays} giorni}" to use "one {giorno} other {# giorni}" or "one {giorno} other {{jobScheduleDays} giorni}" accordingly.
1441-1441:⚠️ Potential issue | 🟡 MinorFix the remaining Italian typos before shipping these strings.
Lines 1441, 1498, 1501, and 1516 still contain obvious mistakes (
Parole chiavi,dalla pagine,ULR Youtube,parola chiava). These strings surface directly in the UI.✏️ Suggested fixes
- "components.Discover.FilterSlideover.excludeKeywords": "Parole chiavi escluse", + "components.Discover.FilterSlideover.excludeKeywords": "Parole chiave escluse", - "components.Settings.SettingsMain.hideAvailableTip": "Nascondi i media disponibili dalla pagine di esplorazione, ma non dai risultati di ricerca", + "components.Settings.SettingsMain.hideAvailableTip": "Nascondi i media disponibili dalle pagine di esplorazione, ma non dai risultati di ricerca", - "components.Settings.SettingsMain.youtubeUrl": "ULR Youtube", + "components.Settings.SettingsMain.youtubeUrl": "URL YouTube", - "components.Settings.invalidKeyword": "{keywordId} non è una parola chiava TMDB.", + "components.Settings.invalidKeyword": "{keywordId} non è una parola chiave TMDB.",Also applies to: 1498-1501, 1516-1516
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/it.json` at line 1441, Update the Italian strings to correct typos: change "Parole chiavi escluse" (key: components.Discover.FilterSlideover.excludeKeywords) to "Parole chiave escluse", change any occurrences of "dalla pagine" to "dalla pagina", change "ULR Youtube" to "URL YouTube", and change "parola chiava" to "parola chiave" so the UI shows correct Italian.src/i18n/locale/ru.json (2)
1456-1456:⚠️ Potential issue | 🟡 MinorRemove the hidden trailing character in the ntfy poster label.
Добавлять постерstill contains a stray non-printing character, which can render inconsistently and makes the string harder to copy/search cleanly.💬 Suggested fix
- "components.Settings.Notifications.NotificationsNtfy.embedPoster": "Добавлять постер", + "components.Settings.Notifications.NotificationsNtfy.embedPoster": "Добавлять постер",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/ru.json` at line 1456, The translation string for key components.Settings.Notifications.NotificationsNtfy.embedPoster contains a hidden trailing non-printing character (likely a soft hyphen or similar) after "Добавлять постер"; open the value for that key, remove the invisible character so the value is exactly "Добавлять постер", and save ensuring no extra whitespace or control characters remain (you can detect/remove \u00AD or other non-printing chars when editing).
1600-1607:⚠️ Potential issue | 🟡 MinorFix the typos in the blocklist import copy.
конифгурациюandИмпоритроватьare still misspelled and will ship directly into the settings UI.💬 Suggested fix
- "components.Settings.blocklistedTagImportInstructions": "Вставьте конифгурацию блокируемого тега ниже.", + "components.Settings.blocklistedTagImportInstructions": "Вставьте конфигурацию блокируемого тега ниже.", … - "components.Settings.importBlocklistedTagsTip": "Импоритровать конфигурацию блокируемого тега", + "components.Settings.importBlocklistedTagsTip": "Импортировать конфигурацию блокируемого тега",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/ru.json` around lines 1600 - 1607, Update the Russian strings to correct typos: change components.Settings.blocklistedTagImportInstructions value from "Вставьте конифгурацию блокируемого тега ниже." to use "конфигурацию", and change components.Settings.importBlocklistedTagsTip value from "Импоритровать конфигурацию заблокированного тега" to "Импортировать конфигурацию заблокированного тега"; leave other keys (components.Settings.blocklistedTagImportTitle, components.Settings.blocklistedTagsText, components.Settings.clearBlocklistedTagsConfirm, components.Settings.copyBlocklistedTags, components.Settings.copyBlocklistedTagsEmpty, components.Settings.copyBlocklistedTagsTip) unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/i18n/locale/de.json`:
- Line 1557: The German pluralization for
components.Settings.SettingsJobsCache.editJobScheduleSelectorDays is wrong for
the singular case ("Alle Tag"); update the ICU plural message so the one-case
reads a proper German phrase (e.g. "jeden Tag") instead of "Tag" — change the
value to use one {jeden Tag} and keep other {{jobScheduleDays} Tage} for the
other case.
In `@src/i18n/locale/ru.json`:
- Line 1597: The tooltip for
"components.Settings.SettingsNetwork.proxyEnabledTip" contains a protocol typo
that contradicts the first clause; update the string so the second clause reads
that it does NOT enable "HTTPS" (not "HTTP") in the phrase after the
parenthesis, i.e., change the final word from HTTP to HTTPS while keeping the
rest of the Russian text intact.
- Around line 1474-1475: The label string for the section title key
components.Settings.Notifications.NotificationsWebhook.supportVariables is
currently an action-style phrase and should be a noun phrase; update that
localization value to a section label like "Поддерживаемые переменные URL" (or
similar noun-form) so it matches the section title used in NotificationsWebhook
and avoids implying a toggle.
---
Duplicate comments:
In `@src/i18n/locale/it.json`:
- Around line 1579-1581: The three i18n keys
"component.BlocklistBlock.blocklistdate",
"component.BlocklistBlock.blocklistedby", and
"component.BlocklistModal.blocklisting" are using the wrong namespace; rename
them to use the existing components. namespace (i.e.
"components.BlocklistBlock.blocklistdate",
"components.BlocklistBlock.blocklistedby",
"components.BlocklistModal.blocklisting") so lookups match the rest of the
locale and existing Blocklist keys.
- Line 1489: The ICU plural form for the key
components.Settings.SettingsJobsCache.editJobScheduleSelectorDays is using an
invalid category "1"; update the plural selector to use ICU categories (e.g.,
one and other) and use the numeric placeholder inside the other branch (or #) so
React Intl can format it: change the plural selector from "plural, 1 {giorno}
other {{jobScheduleDays} giorni}" to use "one {giorno} other {# giorni}" or "one
{giorno} other {{jobScheduleDays} giorni}" accordingly.
- Line 1441: Update the Italian strings to correct typos: change "Parole chiavi
escluse" (key: components.Discover.FilterSlideover.excludeKeywords) to "Parole
chiave escluse", change any occurrences of "dalla pagine" to "dalla pagina",
change "ULR Youtube" to "URL YouTube", and change "parola chiava" to "parola
chiave" so the UI shows correct Italian.
In `@src/i18n/locale/pt_BR.json`:
- Line 1404: The ICU plural branches for the key
"components.Settings.SettingsJobsCache.editJobScheduleSelectorDays" are still in
English; update the plural forms so the singular and plural Portuguese words are
used (e.g., "dia" for one and "dias" for other) while preserving the ICU plural
syntax and the {jobScheduleDays} interpolation; ensure the full value becomes
something like the Portuguese equivalent for "Every {n} day(s)" using the same
key.
- Around line 1429-1430: The pt-BR locale has the same translation for both DNS
TTL entries; update the value for
"components.Settings.SettingsNetwork.dnsCacheForceMinTtl" so it correctly reads
"TTL mínimo do cache DNS" instead of the duplicate "TTL máximo do cache DNS"
(leave "components.Settings.SettingsNetwork.dnsCacheForceMaxTtl" unchanged).
- Line 1563: The translation key
components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.activesubscription
is empty and will render blank; open the pt_BR.json and provide the Portuguese
(Brazil) text for the "active subscription" label (for example "Assinatura
ativa" or your chosen localized phrase) by replacing the empty string value for
that key so the label displays correctly in pt-BR.
- Line 1184: Replace the incorrect occurrences in the pt-BR locale: update the
value for components.Settings.SettingsJobsCache.imagecacheDescription to use the
product/display name used elsewhere in translations instead of the literal
"Seer" (keep the rest of the sentence and the {appDataPath} placeholder intact),
and locate the other pt_BR.json entry containing the misspelling "especias"
(search the file for that token) and correct it to the appropriate Portuguese
word "especiais" (or the correct accented form used in your project), ensuring
consistency with other pt-BR strings.
In `@src/i18n/locale/ru.json`:
- Line 1456: The translation string for key
components.Settings.Notifications.NotificationsNtfy.embedPoster contains a
hidden trailing non-printing character (likely a soft hyphen or similar) after
"Добавлять постер"; open the value for that key, remove the invisible character
so the value is exactly "Добавлять постер", and save ensuring no extra
whitespace or control characters remain (you can detect/remove \u00AD or other
non-printing chars when editing).
- Around line 1600-1607: Update the Russian strings to correct typos: change
components.Settings.blocklistedTagImportInstructions value from "Вставьте
конифгурацию блокируемого тега ниже." to use "конфигурацию", and change
components.Settings.importBlocklistedTagsTip value from "Импоритровать
конфигурацию заблокированного тега" to "Импортировать конфигурацию
заблокированного тега"; leave other keys
(components.Settings.blocklistedTagImportTitle,
components.Settings.blocklistedTagsText,
components.Settings.clearBlocklistedTagsConfirm,
components.Settings.copyBlocklistedTags,
components.Settings.copyBlocklistedTagsEmpty,
components.Settings.copyBlocklistedTagsTip) unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: d70e80ca-4da7-4a3b-8efc-f275138c2901
📒 Files selected for processing (38)
src/i18n/locale/ar.jsonsrc/i18n/locale/bg.jsonsrc/i18n/locale/ca.jsonsrc/i18n/locale/cs.jsonsrc/i18n/locale/da.jsonsrc/i18n/locale/de.jsonsrc/i18n/locale/el.jsonsrc/i18n/locale/es.jsonsrc/i18n/locale/es_MX.jsonsrc/i18n/locale/et.jsonsrc/i18n/locale/eu.jsonsrc/i18n/locale/fi.jsonsrc/i18n/locale/fr.jsonsrc/i18n/locale/he.jsonsrc/i18n/locale/hi.jsonsrc/i18n/locale/hr.jsonsrc/i18n/locale/hu.jsonsrc/i18n/locale/it.jsonsrc/i18n/locale/ja.jsonsrc/i18n/locale/ko.jsonsrc/i18n/locale/lb.jsonsrc/i18n/locale/lt.jsonsrc/i18n/locale/nb_NO.jsonsrc/i18n/locale/nl.jsonsrc/i18n/locale/pl.jsonsrc/i18n/locale/pt_BR.jsonsrc/i18n/locale/pt_PT.jsonsrc/i18n/locale/ro.jsonsrc/i18n/locale/ru.jsonsrc/i18n/locale/sk.jsonsrc/i18n/locale/sl.jsonsrc/i18n/locale/sq.jsonsrc/i18n/locale/sr.jsonsrc/i18n/locale/sv.jsonsrc/i18n/locale/tr.jsonsrc/i18n/locale/uk.jsonsrc/i18n/locale/zh_Hans.jsonsrc/i18n/locale/zh_Hant.json
💤 Files with no reviewable changes (22)
- src/i18n/locale/lt.json
- src/i18n/locale/hr.json
- src/i18n/locale/nl.json
- src/i18n/locale/zh_Hant.json
- src/i18n/locale/tr.json
- src/i18n/locale/el.json
- src/i18n/locale/ko.json
- src/i18n/locale/nb_NO.json
- src/i18n/locale/hi.json
- src/i18n/locale/es.json
- src/i18n/locale/ar.json
- src/i18n/locale/he.json
- src/i18n/locale/sq.json
- src/i18n/locale/sr.json
- src/i18n/locale/pl.json
- src/i18n/locale/ro.json
- src/i18n/locale/bg.json
- src/i18n/locale/ca.json
- src/i18n/locale/uk.json
- src/i18n/locale/sl.json
- src/i18n/locale/es_MX.json
- src/i18n/locale/fi.json
🚧 Files skipped from review as they are similar to previous changes (5)
- src/i18n/locale/sk.json
- src/i18n/locale/hu.json
- src/i18n/locale/ja.json
- src/i18n/locale/pt_PT.json
- src/i18n/locale/sv.json
cd96edb to
0af215c
Compare
Co-authored-by: Gallyam <gallyamb@gmail.com> Co-authored-by: Jamal R. <jamal2362@googlemail.com> Co-authored-by: Josiel Jordão <josiel-junior2@hotmail.com> Co-authored-by: Marek <mara.pavelka@gmail.com> Co-authored-by: Nehogy Irj <nehogyirj@gmail.com> Co-authored-by: Nils Karlsson Pyssling <nisse@users.noreply.translate.seerr.dev> Co-authored-by: Pysta <stefanjanckulik@gmail.com> Co-authored-by: Roberto Saleri <roberto.saleri@gmail.com> Co-authored-by: Sebastian Langer <sl@scn.cx> Co-authored-by: SulliL <susu.leduc@gmail.com> Co-authored-by: Thadah D. Denyse <thadahdenyse@protonmail.com> Co-authored-by: Ulrik J <ulrikj@users.noreply.translate.seerr.dev> Co-authored-by: Vincenzo Gianfelice <gianfelicevincenzo.dev@gmail.com> Co-authored-by: Weblate <noreply@weblate.org> Co-authored-by: chenhui_li <lichenhui1997@gmail.com> Co-authored-by: fallenbagel <98979876+fallenbagel@users.noreply.github.com> Co-authored-by: markspoiss007-web <markspoiss007@gmail.com> Co-authored-by: tkymmm <lempicka@sluice.xyz> Co-authored-by: ugyes <ferenc.bodi@live.com>
0af215c to
50e1b57
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (1)
src/i18n/locale/pt_BR.json (1)
1404-1404:⚠️ Potential issue | 🟡 MinorRegression: English "day/days" still present in pt-BR translation.
This issue was previously flagged and marked as addressed, but the translation still contains English words "day" and "days" which will render incorrectly in the pt-BR UI (e.g., "Cada day" or "Cada 3 days"). The Weblate sync may have overwritten the fix.
Suggested fix
- "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays": "Cada {jobScheduleDays, plural, one {day} other {{jobScheduleDays} days}}", + "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays": "A cada {jobScheduleDays, plural, one {dia} other {{jobScheduleDays} dias}}",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1404, The pt-BR translation for the key components.Settings.SettingsJobsCache.editJobScheduleSelectorDays still contains English singular/plural words; update the ICU plural message so the Portuguese terms are used instead — replace the English tokens "day" and "days" with "dia" and "dias" respectively (e.g., use one {dia} and other {{jobScheduleDays} dias}) so the string renders correctly for 1 and N days.
🧹 Nitpick comments (2)
src/i18n/locale/pt_BR.json (2)
1242-1242: Minor: "Por favor" should be lowercase.Mid-sentence capitalization of "Por favor" is non-standard; "por favor" would be more grammatically correct.
Suggested fix
- "components.MovieDetails.watchlistError": "Algo deu errado, Por favor, tente novamente.", + "components.MovieDetails.watchlistError": "Algo deu errado, por favor, tente novamente.",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1242, Update the localized string value for the key "components.MovieDetails.watchlistError" to use lowercase "por favor" instead of "Por favor"; locate the JSON entry for components.MovieDetails.watchlistError and change "Algo deu errado, Por favor, tente novamente." to "Algo deu errado, por favor, tente novamente." ensuring JSON punctuation remains valid.
1454-1557: Numerous untranslated keys will render blank in pt-BR UI.Over 100 new keys have empty values (
""). While this is expected in a Weblate sync, these will display blank labels to pt-BR users. Key areas affected include:
- User authentication settings (
SettingsUsers.atLeastOneAuth,loginMethods)- Sonarr modal (
animeSeriesType,seriesType,tagRequests)- Setup flow (
configemby,configjellyfin,configplex)- User profile settings (linked accounts, web push notifications)
Consider prioritizing these in Weblate or adding fallback to English.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` around lines 1454 - 1557, Many pt_BR JSON keys (e.g., "components.Settings.SettingsUsers.atLeastOneAuth", "components.Settings.SonarrModal.seriesType", "components.Setup.configjellyfin", "components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.enablewebpush", and many others) are empty and will render blank in the UI; populate these keys with Portuguese (pt-BR) translations in src/i18n/locale/pt_BR.json (prioritize authentication, Sonarr modal, setup flow, and user profile/webpush keys) or implement a fallback to English by ensuring the i18n lookup returns the default English string when a pt_BR value is empty. Ensure each referenced key is updated (no empty ""), validate the JSON, and run the localization lint/CI to confirm no missing translations remain.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/i18n/locale/fr.json`:
- Line 1557: The translation key
components.Settings.SettingsJobsCache.editJobScheduleSelectorDays uses the wrong
singular French word; change the ICU plural mapping so the `one` case uses
"jour" (singular) instead of "jours", keeping the `other` case as
"{jobScheduleDays} jours" and preserving the existing ICU placeholders and
punctuation.
In `@src/i18n/locale/hu.json`:
- Line 558: The current translation value for the i18n key "i18n.showingresults"
includes both Hungarian suffix variants ("-tól/től" and "-ból/ből") which
renders incorrectly; update the value of "i18n.showingresults" to a wording that
avoids case-dependent suffixes (for example: "Eredmények:
<strong>{from}</strong>–<strong>{to}</strong> / <strong>{total}</strong>") so
the UI shows a clean, language-correct pagination label.
In `@src/i18n/locale/ru.json`:
- Around line 1540-1542: The Russian label for enabling web-push is inconsistent
with nearby keys: replace the informal imperative value of
"components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.enablewebpush"
("Включи веб-пуш") with the infinitive form to match "Отключить веб-пуш" — e.g.,
change it to "Включить веб-пуш" so all action labels use the same grammatical
form.
---
Duplicate comments:
In `@src/i18n/locale/pt_BR.json`:
- Line 1404: The pt-BR translation for the key
components.Settings.SettingsJobsCache.editJobScheduleSelectorDays still contains
English singular/plural words; update the ICU plural message so the Portuguese
terms are used instead — replace the English tokens "day" and "days" with "dia"
and "dias" respectively (e.g., use one {dia} and other {{jobScheduleDays} dias})
so the string renders correctly for 1 and N days.
---
Nitpick comments:
In `@src/i18n/locale/pt_BR.json`:
- Line 1242: Update the localized string value for the key
"components.MovieDetails.watchlistError" to use lowercase "por favor" instead of
"Por favor"; locate the JSON entry for components.MovieDetails.watchlistError
and change "Algo deu errado, Por favor, tente novamente." to "Algo deu errado,
por favor, tente novamente." ensuring JSON punctuation remains valid.
- Around line 1454-1557: Many pt_BR JSON keys (e.g.,
"components.Settings.SettingsUsers.atLeastOneAuth",
"components.Settings.SonarrModal.seriesType", "components.Setup.configjellyfin",
"components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.enablewebpush",
and many others) are empty and will render blank in the UI; populate these keys
with Portuguese (pt-BR) translations in src/i18n/locale/pt_BR.json (prioritize
authentication, Sonarr modal, setup flow, and user profile/webpush keys) or
implement a fallback to English by ensuring the i18n lookup returns the default
English string when a pt_BR value is empty. Ensure each referenced key is
updated (no empty ""), validate the JSON, and run the localization lint/CI to
confirm no missing translations remain.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 57e52f47-2dd5-4eb3-83c2-aeffd6b3b613
📒 Files selected for processing (38)
src/i18n/locale/ar.jsonsrc/i18n/locale/bg.jsonsrc/i18n/locale/ca.jsonsrc/i18n/locale/cs.jsonsrc/i18n/locale/da.jsonsrc/i18n/locale/de.jsonsrc/i18n/locale/el.jsonsrc/i18n/locale/es.jsonsrc/i18n/locale/es_MX.jsonsrc/i18n/locale/et.jsonsrc/i18n/locale/eu.jsonsrc/i18n/locale/fi.jsonsrc/i18n/locale/fr.jsonsrc/i18n/locale/he.jsonsrc/i18n/locale/hi.jsonsrc/i18n/locale/hr.jsonsrc/i18n/locale/hu.jsonsrc/i18n/locale/it.jsonsrc/i18n/locale/ja.jsonsrc/i18n/locale/ko.jsonsrc/i18n/locale/lb.jsonsrc/i18n/locale/lt.jsonsrc/i18n/locale/nb_NO.jsonsrc/i18n/locale/nl.jsonsrc/i18n/locale/pl.jsonsrc/i18n/locale/pt_BR.jsonsrc/i18n/locale/pt_PT.jsonsrc/i18n/locale/ro.jsonsrc/i18n/locale/ru.jsonsrc/i18n/locale/sk.jsonsrc/i18n/locale/sl.jsonsrc/i18n/locale/sq.jsonsrc/i18n/locale/sr.jsonsrc/i18n/locale/sv.jsonsrc/i18n/locale/tr.jsonsrc/i18n/locale/uk.jsonsrc/i18n/locale/zh_Hans.jsonsrc/i18n/locale/zh_Hant.json
💤 Files with no reviewable changes (22)
- src/i18n/locale/he.json
- src/i18n/locale/nl.json
- src/i18n/locale/el.json
- src/i18n/locale/pl.json
- src/i18n/locale/hr.json
- src/i18n/locale/bg.json
- src/i18n/locale/es_MX.json
- src/i18n/locale/ro.json
- src/i18n/locale/ko.json
- src/i18n/locale/ca.json
- src/i18n/locale/lt.json
- src/i18n/locale/sq.json
- src/i18n/locale/es.json
- src/i18n/locale/tr.json
- src/i18n/locale/uk.json
- src/i18n/locale/sr.json
- src/i18n/locale/fi.json
- src/i18n/locale/ar.json
- src/i18n/locale/hi.json
- src/i18n/locale/nb_NO.json
- src/i18n/locale/zh_Hant.json
- src/i18n/locale/sl.json
🚧 Files skipped from review as they are similar to previous changes (4)
- src/i18n/locale/de.json
- src/i18n/locale/sk.json
- src/i18n/locale/lb.json
- src/i18n/locale/pt_PT.json
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (9)
src/i18n/locale/hu.json (1)
558-558:⚠️ Potential issue | 🟡 MinorHungarian pagination label still renders both suffix variants literally.
-tól/tőland-ból/bőlwill both show up in the UI, so this label still reads broken in Hungarian. Please correct the translation in Weblate rather than editing this sync PR directly.Based on learnings, translation/i18n issues in automated Weblate sync PRs should be fixed in Weblate so they flow in through the sync process.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/hu.json` at line 558, The Hungarian translation for the key "i18n.showingresults" currently contains both alternate suffixes ("-tól/től" and "-ból/ből") which render literally; open the string for "i18n.showingresults" in Weblate and replace the combined variants with the correct single Hungarian suffixes (or an appropriate localized phrasing) so only the proper forms appear in the UI, then save so the change flows back via the sync PR process rather than editing this sync PR directly.src/i18n/locale/pt_BR.json (4)
1404-1404:⚠️ Potential issue | 🟡 MinorLocalize the ICU plural branches.
Line 1404 still uses English
day/days, so pt-BR users will see mixed-language scheduler text. Please update this string in Weblate rather than in the generated sync commit.Based on learnings, for automated Weblate sync PRs from
seerr-weblate-botonweblate/translations-frontend, translation fixes should be submitted on Weblate so they flow in through the sync process.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1404, The plural ICU string for the key "components.Settings.SettingsJobsCache.editJobScheduleSelectorDays" still uses English ("day"/"days"); update the Portuguese translations for the plural branches to localized singular and plural forms (e.g., "dia" and "dias") by editing this key in Weblate (not in the generated sync commit) so the corrected translation will flow back through the automated weblate sync process.
1429-1430:⚠️ Potential issue | 🟡 MinorDifferentiate the min/max DNS TTL labels.
Lines 1429-1430 still render both fields as
TTL máximo do cache DNS, so users cannot tell which input is the minimum TTL. Please fix the min-label in Weblate.Based on learnings, for automated Weblate sync PRs from
seerr-weblate-botonweblate/translations-frontend, translation fixes should be submitted on Weblate so they flow in through the sync process.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` around lines 1429 - 1430, The two i18n keys components.Settings.SettingsNetwork.dnsCacheForceMaxTtl and components.Settings.SettingsNetwork.dnsCacheForceMinTtl currently have identical Portuguese values; change the value for components.Settings.SettingsNetwork.dnsCacheForceMinTtl from "TTL máximo do cache DNS" to "TTL mínimo do cache DNS" so min/max are differentiated, and make this change via Weblate (weblate/translations-frontend) so it flows through the automated sync from seerr-weblate-bot rather than editing the JSON directly.
1563-1563:⚠️ Potential issue | 🟡 MinorDon’t leave the new web push label empty.
Line 1563 is still an empty string, which will render a blank label in the pt-BR notification settings UI. Please fill this in via Weblate.
Based on learnings, for automated Weblate sync PRs from
seerr-weblate-botonweblate/translations-frontend, translation fixes should be submitted on Weblate so they flow in through the sync process.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1563, The pt-BR translation key "components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.activesubscription" is empty and must be populated; open the Weblate project for this repo (weblate/translations-frontend), find that key in the pt_BR locale and provide the proper Portuguese label (do not edit the JSON file directly in the repo), then save/submit the translation so it flows through the automated sync from seerr-weblate-bot.
1184-1184:⚠️ Potential issue | 🟡 MinorSubmit these remaining pt-BR typo fixes through Weblate.
Line 1184 still spells the product name as
Seer, and Line 1417 still hasespecias. Both will ship visible typos in Settings. Please correct them in Weblate instead of editing this sync PR directly.Based on learnings, for automated Weblate sync PRs from
seerr-weblate-botonweblate/translations-frontend, translation fixes should be submitted on Weblate so they flow in through the sync process.Also applies to: 1417-1417
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/pt_BR.json` at line 1184, Do not edit the sync PR directly; instead open Weblate and submit translation fixes: update the value for "components.Settings.SettingsJobsCache.imagecacheDescription" to replace the incorrect product name `Seer` with the canonical product name used across the project, and on the string at line 1417 (the other pt-BR entry containing "especias") correct the typo to "especiais"; submit both fixes through Weblate so they propagate via the automated seerr-weblate-bot sync.src/i18n/locale/zh_Hans.json (2)
1446-1446:⚠️ Potential issue | 🟡 MinorUse a media-rating term instead of
证书here.
Certificationin this selector refers to content rating / age classification, so证书加载失败reads like the wrong feature failed to load. Please update this in Weblate to something like分级信息加载失败or内容分级加载失败.Based on learnings, translation/i18n issues in automated Weblate sync PRs for this repo should be fixed in Weblate so they flow back through the sync.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/zh_Hans.json` at line 1446, Update the translation for the key "components.Selector.CertificationSelector.errorLoading" to use a media-rating term instead of "证书"; replace "证书加载失败" with a phrase like "分级信息加载失败" or "内容分级加载失败" via Weblate so the change flows through the automated i18n sync.
1571-1583:⚠️ Potential issue | 🟡 MinorKeep blocklist terminology consistent across this namespace.
This block still mixes
封锁清单,黑名单, and被屏蔽, so the sidebar, permissions, and actions no longer read as one cohesive feature. Please normalize these strings in Weblate to a single term for the feature.Based on learnings, translation/i18n issues in automated Weblate sync PRs for this repo should be fixed in Weblate so they flow back through the sync.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/zh_Hans.json` around lines 1571 - 1583, Normalize the blocklist terminology across the zh_Hans namespace by picking one term (e.g., "黑名单" or "封锁清单") and updating all affected translation entries in Weblate so they stay consistent; specifically update components.Blocklist.blocklistsettings, components.Blocklist.filterManual, components.Blocklist.mediaType, components.Blocklist.showAllBlocklisted, components.Blocklist.filterBlocklistedTags, components.Discover.RecentRequestsSlider.unableToConnect, components.Layout.Sidebar.blocklist, components.PermissionEdit.manageblocklist, components.PermissionEdit.manageblocklistDescription, components.PermissionEdit.viewblocklistedItems, components.PermissionEdit.viewblocklistedItemsDescription, components.RequestList.unableToConnect, and i18n.removefromBlocklist to use the chosen single term and adjust surrounding phrasing (e.g., change 被屏蔽/被屏蔽的 to the chosen noun/adjective form) so the sidebar, permission labels, descriptions and actions read consistently.src/i18n/locale/it.json (2)
1579-1581:⚠️ Potential issue | 🟠 MajorThese blocklist entries are under the wrong namespace.
These three new keys use
component.while the surrounding blocklist namespace in this file iscomponents.. That mismatch can leave the Italian strings unresolved at runtime and force a fallback/missing message on the blocklist UI.Based on learnings, translation fixes for automated Weblate sync PRs in this repo should be submitted on Weblate so they flow back through the sync.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/it.json` around lines 1579 - 1581, The three i18n keys "component.BlocklistBlock.blocklistdate", "component.BlocklistBlock.blocklistedby", and "component.BlocklistModal.blocklisting" are using the wrong namespace; change their prefixes from "component." to "components." so they match the surrounding blocklist keys (i.e., rename to "components.BlocklistBlock.blocklistdate", "components.BlocklistBlock.blocklistedby", and "components.BlocklistModal.blocklisting"), then submit this correction through the Weblate translation interface so it flows back through the automated sync.
1441-1441:⚠️ Potential issue | 🟡 MinorReintroduced Italian typos in shipped strings.
These additions still contain obvious typos:
Parole chiavi escluse,ULR Youtube, andparola chiava. Please correct them in Weblate before the next sync so the Italian UI does not ship broken copy.Based on learnings, translation fixes for automated Weblate sync PRs in this repo should be submitted on Weblate so they flow back through the sync.
Also applies to: 1501-1501, 1516-1516
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/i18n/locale/it.json` at line 1441, Fix the Italian typos in Weblate (so they flow through the automated sync): update the value for components.Discover.FilterSlideover.excludeKeywords from "Parole chiavi escluse" to "Parole chiave escluse", replace any "ULR Youtube" occurrences with "URL YouTube", and change any "parola chiava" to "parola chiave"; apply the same corrections to the other affected i18n keys mentioned in the PR and save the changes in Weblate so the next sync picks them up.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/i18n/locale/it.json`:
- Around line 1605-1606: The tooltip text for
components.Settings.SettingsMain.hideBlocklistedTip is inverted relative to the
label components.Settings.SettingsMain.hideBlocklisted; update
hideBlocklistedTip so it matches the label meaning (e.g., "Nascondi i bloccati
dalla pagina di esplorazione per tutti gli utenti con il permesso \"Gestisci
lista blocchi\"") and submit the change via Weblate so it flows back through the
automated sync.
---
Duplicate comments:
In `@src/i18n/locale/hu.json`:
- Line 558: The Hungarian translation for the key "i18n.showingresults"
currently contains both alternate suffixes ("-tól/től" and "-ból/ből") which
render literally; open the string for "i18n.showingresults" in Weblate and
replace the combined variants with the correct single Hungarian suffixes (or an
appropriate localized phrasing) so only the proper forms appear in the UI, then
save so the change flows back via the sync PR process rather than editing this
sync PR directly.
In `@src/i18n/locale/it.json`:
- Around line 1579-1581: The three i18n keys
"component.BlocklistBlock.blocklistdate",
"component.BlocklistBlock.blocklistedby", and
"component.BlocklistModal.blocklisting" are using the wrong namespace; change
their prefixes from "component." to "components." so they match the surrounding
blocklist keys (i.e., rename to "components.BlocklistBlock.blocklistdate",
"components.BlocklistBlock.blocklistedby", and
"components.BlocklistModal.blocklisting"), then submit this correction through
the Weblate translation interface so it flows back through the automated sync.
- Line 1441: Fix the Italian typos in Weblate (so they flow through the
automated sync): update the value for
components.Discover.FilterSlideover.excludeKeywords from "Parole chiavi escluse"
to "Parole chiave escluse", replace any "ULR Youtube" occurrences with "URL
YouTube", and change any "parola chiava" to "parola chiave"; apply the same
corrections to the other affected i18n keys mentioned in the PR and save the
changes in Weblate so the next sync picks them up.
In `@src/i18n/locale/pt_BR.json`:
- Line 1404: The plural ICU string for the key
"components.Settings.SettingsJobsCache.editJobScheduleSelectorDays" still uses
English ("day"/"days"); update the Portuguese translations for the plural
branches to localized singular and plural forms (e.g., "dia" and "dias") by
editing this key in Weblate (not in the generated sync commit) so the corrected
translation will flow back through the automated weblate sync process.
- Around line 1429-1430: The two i18n keys
components.Settings.SettingsNetwork.dnsCacheForceMaxTtl and
components.Settings.SettingsNetwork.dnsCacheForceMinTtl currently have identical
Portuguese values; change the value for
components.Settings.SettingsNetwork.dnsCacheForceMinTtl from "TTL máximo do
cache DNS" to "TTL mínimo do cache DNS" so min/max are differentiated, and make
this change via Weblate (weblate/translations-frontend) so it flows through the
automated sync from seerr-weblate-bot rather than editing the JSON directly.
- Line 1563: The pt-BR translation key
"components.UserProfile.UserSettings.UserNotificationSettings.UserNotificationsWebPush.activesubscription"
is empty and must be populated; open the Weblate project for this repo
(weblate/translations-frontend), find that key in the pt_BR locale and provide
the proper Portuguese label (do not edit the JSON file directly in the repo),
then save/submit the translation so it flows through the automated sync from
seerr-weblate-bot.
- Line 1184: Do not edit the sync PR directly; instead open Weblate and submit
translation fixes: update the value for
"components.Settings.SettingsJobsCache.imagecacheDescription" to replace the
incorrect product name `Seer` with the canonical product name used across the
project, and on the string at line 1417 (the other pt-BR entry containing
"especias") correct the typo to "especiais"; submit both fixes through Weblate
so they propagate via the automated seerr-weblate-bot sync.
In `@src/i18n/locale/zh_Hans.json`:
- Line 1446: Update the translation for the key
"components.Selector.CertificationSelector.errorLoading" to use a media-rating
term instead of "证书"; replace "证书加载失败" with a phrase like "分级信息加载失败" or
"内容分级加载失败" via Weblate so the change flows through the automated i18n sync.
- Around line 1571-1583: Normalize the blocklist terminology across the zh_Hans
namespace by picking one term (e.g., "黑名单" or "封锁清单") and updating all affected
translation entries in Weblate so they stay consistent; specifically update
components.Blocklist.blocklistsettings, components.Blocklist.filterManual,
components.Blocklist.mediaType, components.Blocklist.showAllBlocklisted,
components.Blocklist.filterBlocklistedTags,
components.Discover.RecentRequestsSlider.unableToConnect,
components.Layout.Sidebar.blocklist, components.PermissionEdit.manageblocklist,
components.PermissionEdit.manageblocklistDescription,
components.PermissionEdit.viewblocklistedItems,
components.PermissionEdit.viewblocklistedItemsDescription,
components.RequestList.unableToConnect, and i18n.removefromBlocklist to use the
chosen single term and adjust surrounding phrasing (e.g., change 被屏蔽/被屏蔽的 to the
chosen noun/adjective form) so the sidebar, permission labels, descriptions and
actions read consistently.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 9c07fafc-80cd-4af1-9c9f-fef06615a026
📒 Files selected for processing (38)
src/i18n/locale/ar.jsonsrc/i18n/locale/bg.jsonsrc/i18n/locale/ca.jsonsrc/i18n/locale/cs.jsonsrc/i18n/locale/da.jsonsrc/i18n/locale/de.jsonsrc/i18n/locale/el.jsonsrc/i18n/locale/es.jsonsrc/i18n/locale/es_MX.jsonsrc/i18n/locale/et.jsonsrc/i18n/locale/eu.jsonsrc/i18n/locale/fi.jsonsrc/i18n/locale/fr.jsonsrc/i18n/locale/he.jsonsrc/i18n/locale/hi.jsonsrc/i18n/locale/hr.jsonsrc/i18n/locale/hu.jsonsrc/i18n/locale/it.jsonsrc/i18n/locale/ja.jsonsrc/i18n/locale/ko.jsonsrc/i18n/locale/lb.jsonsrc/i18n/locale/lt.jsonsrc/i18n/locale/nb_NO.jsonsrc/i18n/locale/nl.jsonsrc/i18n/locale/pl.jsonsrc/i18n/locale/pt_BR.jsonsrc/i18n/locale/pt_PT.jsonsrc/i18n/locale/ro.jsonsrc/i18n/locale/ru.jsonsrc/i18n/locale/sk.jsonsrc/i18n/locale/sl.jsonsrc/i18n/locale/sq.jsonsrc/i18n/locale/sr.jsonsrc/i18n/locale/sv.jsonsrc/i18n/locale/tr.jsonsrc/i18n/locale/uk.jsonsrc/i18n/locale/zh_Hans.jsonsrc/i18n/locale/zh_Hant.json
💤 Files with no reviewable changes (21)
- src/i18n/locale/zh_Hant.json
- src/i18n/locale/nl.json
- src/i18n/locale/sq.json
- src/i18n/locale/pl.json
- src/i18n/locale/el.json
- src/i18n/locale/lt.json
- src/i18n/locale/bg.json
- src/i18n/locale/he.json
- src/i18n/locale/ro.json
- src/i18n/locale/sr.json
- src/i18n/locale/es_MX.json
- src/i18n/locale/ca.json
- src/i18n/locale/sl.json
- src/i18n/locale/hr.json
- src/i18n/locale/nb_NO.json
- src/i18n/locale/ar.json
- src/i18n/locale/uk.json
- src/i18n/locale/hi.json
- src/i18n/locale/ko.json
- src/i18n/locale/es.json
- src/i18n/locale/fi.json
✅ Files skipped from review due to trivial changes (1)
- src/i18n/locale/sk.json
🚧 Files skipped from review as they are similar to previous changes (2)
- src/i18n/locale/pt_PT.json
- src/i18n/locale/eu.json
Translations update from Weblate for Seerr/Seerr Frontend.
Current translation status:
Summary by CodeRabbit