i18n(fa): add Persian interface translation (#4558)

* i18n(fa): add Persian interface translation catalog

Add crates/ui-egui/src/i18n/fa.tsv covering the current 2,776-key union, register fa (right-to-left, one/other plurals) in i18n and the date languages, and credit the catalog in ATTRIBUTION.

* i18n(fa): fix missing ZWNJ in compound suffixes

Join participles (شده/نشده) and productive suffixes (سازی, گذاری, گیری, بندی, پذیری, کننده, ...) and compound prefixes (هم, غیر, پیش, پس, چند, تک, باز) with U+200C, plus reviewer wording fixes.

* fix(i18n): Persian counts 0 as singular (CLDR fa) and writes weekday names with ZWNJ

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Brandon Thomas <echelon@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Shahriar Hooshmand
2026-10-25 10:02:17 -04:00
committed by GitHub
co-authored by Claude Opus 5.5 Brandon Thomas
parent 0db7d57619
commit 737aeb4359
7 changed files with 2877 additions and 8 deletions
+12 -1
View File
@@ -63,7 +63,7 @@ const CKB_DAYS: [&str; 7] = ["یەکشەممە", "دووشەممە", "سێشەم
/// The languages month and weekday names can be written in (Preferences ▸ Date format ▸ Language):
/// the interface languages, in the same order and with the same names.
pub static DATE_LANGUAGES: [DateLanguage; 34] = [
pub static DATE_LANGUAGES: [DateLanguage; 35] = [
DateLanguage {
code: "en",
name: "English",
@@ -267,6 +267,17 @@ pub static DATE_LANGUAGES: [DateLanguage; 34] = [
days: CKB_DAYS,
days_short: CKB_DAYS,
},
// Persian (Farsi); Gregorian month and weekday names, right to left like Arabic and Kurdish.
// Persian does not change the month form after a day number, so `months_with_day` is `None`.
DateLanguage {
code: "fa",
name: "فارسی",
months: ["ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"],
months_with_day: None,
months_short: ["ژانویه", "فوریه", "مارس", "آوریل", "مه", "ژوئن", "ژوئیه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "دسامبر"],
days: ["یکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه"],
days_short: ["یک", "دو", "سه", "چه", "پن", "جم", "شن"],
},
DateLanguage {
code: "pl",
name: "Polski",