Repair Tamazight label text and lookup errors

Replace Arabic label/create-label/no-results text and French username/label/color lookup errors with native terminology and reference-supported clauses. Preserve all percent placeholders and distinguish missing username, named label and label color. Composed errors, create-label usage and color/tag morphology remain low confidence pending fluent review. All 17309 correction/rendering checks pass.

Thanks to xet7 !
This commit is contained in:
Lauri Ojansivu committed 2026-09-14 02:54:33 +03:00
1 parent 47951fd81a
commit 1d4ad977d7
3 files changed
+56 -6

No files matched your search

+6 -6
View File
@@ -825,14 +825,14 @@
"joined": "انضمّ",
"just-invited": "Vous venez d'être invité à ce tableau",
"keyboard-shortcuts": "اختصار لوحة المفاتيح",
"label-create": "إنشاء علامة",
"label-create": "ⵙⵏⵓⵍⴼⵓ ⴰⵔⵛⵓⵎ",
"label-default": "%s علامة (افتراضية)",
"label-delete-pop": "لا يوجد تراجع. سيؤدي هذا إلى إزالة هذه العلامة من جميع بطاقات والقضاء على تأريخها",
"label-text-follows-board": "yeṭṭafar amsettel n tfelwit",
"label-text-overridden": "yettwabeddel",
"label-text-override": "(abeddel udmawan)",
"label-text-use-board-default": "Seqdec amsettel n tfelwit",
"labels": "علامات",
"labels": "ⵉⵔⵛⵓⵎⵏ",
"language": "ⵜⵓⵜⵍⴰⵢⵜ",
"last-admin-desc": "لا يمكن تعديل الأدوار لأن ذلك يتطلب صلاحيات المدير.",
"leave-board": "مغادرة اللوحة",
@@ -893,7 +893,7 @@
"no-archived-cards": "Aucune carte archivée.",
"no-archived-lists": "Aucune liste archivée.",
"no-archived-swimlanes": "Aucun couloir archivé.",
"no-results": "لا توجد نتائج",
"no-results": "ⵓⵔ ⵍⵍⵉⵏⵜ ⵜⵢⴰⴼⵓⵜⵉⵏ",
"normal": "عادي",
"normal-desc": "يمكن مشاهدة و تعديل البطاقات. لا يمكن تغيير إعدادات الضبط.",
"normal-assigned-only": "Assigné uniquement Normal",
@@ -1677,9 +1677,9 @@
"board-title-not-found": "Tableau '%s' non trouvé.",
"swimlane-title-not-found": "Couloir '%s' non trouvé.",
"list-title-not-found": "Liste '%s' non trouvée.",
"label-not-found": "Étiquette '%s' non trouvée.",
"label-color-not-found": "Étiquette de couleur '%s' non trouvée",
"user-username-not-found": "Utilisateur '%s' non trouvé.",
"label-not-found": "ⴰⵔⵛⵓⵎ '%s' ⵓⵔ ⵉⵍⵍⴰ.",
"label-color-not-found": "ⴰⴽⵍⵓ ⵏ ⵓⵔⵛⵓⵎ %s ⵓⵔ ⵉⵍⵍⴰ.",
"user-username-not-found": "ⵉⵙⵎ ⵏ ⵓⵏⵙⵙⵎⵔⵙ '%s' ⵓⵔ ⵉⵍⵍⴰ.",
"comment-not-found": "Carte dont le commentaire contient '%s' non trouvée",
"org-name-not-found": "Organisation '%s' non trouvée.",
"team-name-not-found": "Équipe '%s' non trouvée.",
@@ -121119,5 +121119,47 @@
"before": "Nom d'utilisateur et mot de passe requis",
"after": "ⵉⵍⵍⴰ ⴼⵍⵍⴰⴽ ⴰⴷ ⵜⴼⴽⴷ ⵉⵙⵎ ⵏ ⵓⵏⵙⵙⵎⵔⵙ ⴷ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ",
"reason": "LOW CONFIDENCE composed username/password-required message: adapts the native noemailcreate obligation-to-provide clause with userlogin-yourname and userlogin-yourpassword nouns, joined with native and (ⴷ). Removes email-specific validity qualifier; adds no failure reason. Complete clause/object coordination needs fluent review. Reference: https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/zgh.json"
},
{
"locale": "zgh",
"key": "user-username-not-found",
"before": "Utilisateur '%s' non trouvé.",
"after": "ⵉⵙⵎ ⵏ ⵓⵏⵙⵙⵎⵔⵙ '%s' ⵓⵔ ⵉⵍⵍⴰ.",
"reason": "LOW CONFIDENCE composed missing-username error: native userlogin-yourname noun with masculine negative-existence clause from passwordreset-nosuchcaller; retains English %s and identifies a username rather than changing the subject to a user. Complete named-subject clause and lookup usage need fluent review. Reference: https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/zgh.json"
},
{
"locale": "zgh",
"key": "label-not-found",
"before": "Étiquette '%s' non trouvée.",
"after": "ⴰⵔⵛⵓⵎ '%s' ⵓⵔ ⵉⵍⵍⴰ.",
"reason": "LOW CONFIDENCE composed missing-label error: singular tag noun from tag-list-wrapper with masculine negative-existence clause from passwordreset-nosuchcaller. Preserves named label %s. Kanban label/tag usage and full clause need fluent review. Reference: https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/zgh.json"
},
{
"locale": "zgh",
"key": "label-color-not-found",
"before": "Étiquette de couleur '%s' non trouvée",
"after": "ⴰⴽⵍⵓ ⵏ ⵓⵔⵛⵓⵎ %s ⵓⵔ ⵉⵍⵍⴰ.",
"reason": "LOW CONFIDENCE composed missing-label-color error: color noun based on rcfilters-highlightmenu-title (bound uklu), tag noun from tag-list-wrapper and masculine negative-existence clause from passwordreset-nosuchcaller. Keeps %s associated with color, not the label name. Free-state color/bound-state tag morphology and complete technical phrase need fluent review. Reference: https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/zgh.json"
},
{
"locale": "zgh",
"key": "labels",
"before": "علامات",
"after": "ⵉⵔⵛⵓⵎⵏ",
"reason": "Native plural tag noun directly attested in tag-filter and tag-list-wrapper; replaces Arabic label text. No upstream wiki syntax or unrelated placeholders imported. Label/tag application to kanban needs wider fluent terminology review. Reference: https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/zgh.json"
},
{
"locale": "zgh",
"key": "label-create",
"before": "إنشاء علامة",
"after": "ⵙⵏⵓⵍⴼⵓ ⴰⵔⵛⵓⵎ",
"reason": "LOW CONFIDENCE composed create-label command: native createaccount command verb plus singular tag noun from tag-list-wrapper. Replaces Arabic; full kanban command usage needs fluent review. Reference: https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/zgh.json"
},
{
"locale": "zgh",
"key": "no-results",
"before": "لا توجد نتائج",
"after": "ⵓⵔ ⵍⵍⵉⵏⵜ ⵜⵢⴰⴼⵓⵜⵉⵏ",
"reason": "Native negative-results main clause directly attested in search-nonefound; removes only the query-matching qualifier because English says generic No results. Keeps native feminine plural negative agreement, adds no network/failure reason. Reference: https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/zgh.json"
}
]
@@ -35,6 +35,14 @@ const tokens = value => [...value.matchAll(/__[A-Za-z0-9]+(?:_[A-Za-z0-9]+)*__|%
assert.doesNotMatch(cache.zgh[key], /Mot de passe|Nom d.utilisateur|requis/);
assert.match(cache.zgh[key], /ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ/);
}
assert.equal(cache.zgh.labels, 'ⵉⵔⵛⵓⵎⵏ');
assert.equal(cache.zgh['no-results'], 'ⵓⵔ ⵍⵍⵉⵏⵜ ⵜⵢⴰⴼⵓⵜⵉⵏ');
for (const key of ['user-username-not-found', 'label-not-found', 'label-color-not-found']) {
assert.doesNotMatch(cache.zgh[key], /Utilisateur|Étiquette|non trouv/);
assert.match(cache.zgh[key], /%s/);
assert.match(cache.zgh[key], /ⵓⵔ ⵉⵍⵍⴰ/);
}
assert.doesNotMatch(cache.zgh['label-create'], /[\u0600-\u06ff]/);
// Exact native UI references replace French without normalizing valid Latin-script Tamazight.
assert.equal(cache.zgh.help, 'ⵜⵉⵡⵉⵙⵉ');
assert.equal(cache.zgh.next, 'ⵉⵏⴹⴼⵔ');