feat: added Kurdish Sorani (ckb-IQ) localization#3248
Conversation
📝 WalkthroughWalkthroughAdds the ChangesKurdish Sorani localization
Estimated code review effort: 3 (Moderate) | ~20 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches✨ Simplify code
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 |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/web/locales/ckb-IQ.po`:
- Around line 1907-1909: Correct the corrupted gettext source-reference comments
in the locale file: update the reference for the “Filter by” entry associated
with `src/routes/dashboard/resumes/index.msgid` to use `index.tsx`, and update
the “Unarchive” entry associated with
`src/features/applications/components/application-detail-sheet.msgid` to use
`application-detail-sheet.tsx`.
- Around line 79-82: Fill the empty <2></2> span in the Kurdish Sorani FAQ
heading translation with the appropriate translation of “Questions,” preserving
all three translated words in the msgstr.
In `@apps/web/locales/uk-UA.po`:
- Around line 2473-2475: Replace the Latin C in the Ukrainian msgstr for
“Kurdish Sorani” with Cyrillic С, resulting in “Курдська Сорані”.
In `@apps/web/locales/vi-VN.po`:
- Around line 2473-2475: Update the Vietnamese translation for msgid "Kurdish
Sorani" in the locale catalog from "người Kurd Sorani" to the standard CLDR name
"Tiếng Kurd Sorani".
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: d3dcab7e-e67f-42e8-a6d3-12c96d1710e3
📒 Files selected for processing (61)
apps/web/lingui.config.tsapps/web/locales/af-ZA.poapps/web/locales/am-ET.poapps/web/locales/ar-SA.poapps/web/locales/az-AZ.poapps/web/locales/bg-BG.poapps/web/locales/bn-BD.poapps/web/locales/ca-ES.poapps/web/locales/ckb-IQ.poapps/web/locales/cs-CZ.poapps/web/locales/da-DK.poapps/web/locales/de-DE.poapps/web/locales/el-GR.poapps/web/locales/en-GB.poapps/web/locales/en-US.poapps/web/locales/es-ES.poapps/web/locales/fa-IR.poapps/web/locales/fi-FI.poapps/web/locales/fr-FR.poapps/web/locales/he-IL.poapps/web/locales/hi-IN.poapps/web/locales/hu-HU.poapps/web/locales/id-ID.poapps/web/locales/it-IT.poapps/web/locales/ja-JP.poapps/web/locales/km-KH.poapps/web/locales/kn-IN.poapps/web/locales/ko-KR.poapps/web/locales/lt-LT.poapps/web/locales/lv-LV.poapps/web/locales/ml-IN.poapps/web/locales/mr-IN.poapps/web/locales/ms-MY.poapps/web/locales/ne-NP.poapps/web/locales/nl-NL.poapps/web/locales/no-NO.poapps/web/locales/or-IN.poapps/web/locales/pl-PL.poapps/web/locales/pt-BR.poapps/web/locales/pt-PT.poapps/web/locales/ro-RO.poapps/web/locales/ru-RU.poapps/web/locales/sk-SK.poapps/web/locales/sl-SI.poapps/web/locales/sq-AL.poapps/web/locales/sr-SP.poapps/web/locales/sv-SE.poapps/web/locales/ta-IN.poapps/web/locales/te-IN.poapps/web/locales/th-TH.poapps/web/locales/tr-TR.poapps/web/locales/uk-UA.poapps/web/locales/uz-UZ.poapps/web/locales/vi-VN.poapps/web/locales/zh-CN.poapps/web/locales/zh-TW.poapps/web/locales/zu-ZA.poapps/web/src/libs/locale.test.tsapps/web/src/libs/locale.tspackages/utils/src/locale.test.tspackages/utils/src/locale.ts
| #: src/routes/_home/-sections/faq.tsx | ||
| msgctxt "Home page FAQ section heading with each word visually separated into individual spans" | ||
| msgid "<0>Frequently</0><1>Asked</1><2>Questions</2>" | ||
| msgstr "<0>پرسیارە</0><1>باوەکان</1><2></2>" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Missing translation content in <2></2> tag.
The third span is empty, dropping the word "Questions" entirely from the translated FAQ heading — other locale catalogs (e.g. af-ZA, ar-SA) populate all three tags. This will render a visibly incomplete heading in the Kurdish Sorani UI.
🐛 Proposed fix
-msgstr "<0>پرسیارە</0><1>باوەکان</1><2></2>"
+msgstr "<0>پرسیارە</0><1>باوەکان</1><2>؟</2>"(Use the appropriate Kurdish Sorani word/punctuation for "Questions" instead of an empty tag.)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/web/locales/ckb-IQ.po` around lines 79 - 82, Fill the empty <2></2> span
in the Kurdish Sorani FAQ heading translation with the appropriate translation
of “Questions,” preserving all three translated words in the msgstr.
| #: src/routes/dashboard/resumes/index.msgid | ||
| msgid "Filter by" | ||
| msgstr "پاڵاوتن بەپێی" |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Corrupted source-reference comments (.msgid instead of .tsx).
Two #: reference comments point to non-existent files: src/routes/dashboard/resumes/index.msgid (should be index.tsx, matching the "Filter by" entry in other locales) and src/features/applications/components/application-detail-sheet.msgid (should be .tsx, matching the "Unarchive" entry elsewhere). These are metadata-only but broken source paths can confuse Crowdin/Lingui sync tooling that matches strings by source location.
🐛 Proposed fix
-#: src/routes/dashboard/resumes/index.msgid
+#: src/routes/dashboard/resumes/index.tsx-#: src/features/applications/components/application-detail-sheet.msgid
+#: src/features/applications/components/application-detail-sheet.tsxAlso applies to: 4618-4621
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/web/locales/ckb-IQ.po` around lines 1907 - 1909, Correct the corrupted
gettext source-reference comments in the locale file: update the reference for
the “Filter by” entry associated with `src/routes/dashboard/resumes/index.msgid`
to use `index.tsx`, and update the “Unarchive” entry associated with
`src/features/applications/components/application-detail-sheet.msgid` to use
`application-detail-sheet.tsx`.
| #: src/libs/locale.ts | ||
| msgid "Kurdish Sorani" | ||
| msgstr "Курдська Cорані" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use Cyrillic С in the Ukrainian translation.
Line [2475] uses Latin C (U+0043) in Курдська Cорані. Replace it with Cyrillic С (U+0421): Курдська Сорані.
Proposed fix
-msgstr "Курдська Cорані"
+msgstr "Курдська Сорані"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| #: src/libs/locale.ts | |
| msgid "Kurdish Sorani" | |
| msgstr "Курдська Cорані" | |
| #: src/libs/locale.ts | |
| msgid "Kurdish Sorani" | |
| msgstr "Курдська Сорані" |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/web/locales/uk-UA.po` around lines 2473 - 2475, Replace the Latin C in
the Ukrainian msgstr for “Kurdish Sorani” with Cyrillic С, resulting in
“Курдська Сорані”.
| #: src/libs/locale.ts | ||
| msgid "Kurdish Sorani" | ||
| msgstr "người Kurd Sorani" |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Correct the Vietnamese language name.
Unicode CLDR uses Tiếng Kurd Sorani for this locale, but the catalog currently uses người Kurd Sorani, which is not the standard language display name. (unicode.org)
Proposed fix
msgid "Kurdish Sorani"
-msgstr "người Kurd Sorani"
+msgstr "Tiếng Kurd Sorani"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| #: src/libs/locale.ts | |
| msgid "Kurdish Sorani" | |
| msgstr "người Kurd Sorani" | |
| #: src/libs/locale.ts | |
| msgid "Kurdish Sorani" | |
| msgstr "Tiếng Kurd Sorani" |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@apps/web/locales/vi-VN.po` around lines 2473 - 2475, Update the Vietnamese
translation for msgid "Kurdish Sorani" in the locale catalog from "người Kurd
Sorani" to the standard CLDR name "Tiếng Kurd Sorani".
Here is the full localization for Kurdish Sorani (ckb-IQ).
I went through and added the translations into a new
ckb-IQ.pofile. To get everything wired up properly across the app, I also made a few necessary config updates:Added ckb-IQ to the Lingui configuration and the locale schemas.
Updated all the existing .po files so "Kurdish Sorani" shows up correctly in the language switcher for users currently using other locales.
Updated localeMap and added a couple of quick tests in locale.test.ts to make sure isLocale recognizes the new code.
Summary by CodeRabbit
New Features
Tests