ב־14 מתוך 42 השפות שלנו, צורת הרבים שנקראת "one" אינה מיועדת רק ל־1

שפות

המחרוזת באפליקציה "One habit left today" כוללת בן־זוג לרבים, "%d habits left today". אנדרואיד בוחרת ביניהן לפי קטגוריה: באנגלית משתמשים ב־"one" עבור 1 וב־"other" עבור כל השאר. ברוסית הקטגוריה "one" משמשת עבור 1, 21, 31, 41 וכדומה. בדיקת התרגום שלנו טעתה בכך פעמיים באותו יום, פעם בכל כיוון.

התרגום הנכון שהיא דחתה

ב־2 בנובמבר הרצנו שוב את ערכת התרגום שלנו על אפליקציית הדוגמה שלה. עבור "one" ברוסית המודל כתב "Осталась %d привычка на сегодня": "%d habit left today", עם המספר. הבדיקה שלנו השוותה אותו לצורת ה־"one" באנגלית, מצאה %d שלא היה באנגלית, ודחתה אותו כplaceholder שהומצא. המודל צדק. משתמש עם 21 הרגלים שנותרו מקבל צורה זו, ולכן היא חייבת להציג את המספר. שינינו את הבדיקה: צורה רשאית להוסיף את הספירה שצורת ה־"other" באנגלית משתמשת בה. ההרצה הבאה כתבה את כל 350 המחרוזות של הדוגמה.

התרגום השגוי שהיא הייתה מאשרת

אותה בדיקה אפשרה את ההפך. אם המודל היה כותב "Осталась одна привычка" ("one habit left"), לא היה הולך לאיבוד דבר במחרוזת, ולכן היא עברה, והמשתמש עם 21 הרגלים שנותרו היה מקבל הודעה שיש לו אחד. הכלל הישן אפשר לכל צורת "one" להשמיט את המספר, כי באנגלית "one" הוא רק 1.

כעת הבדיקה יודעת אילו מספרים כל קטגוריה מכסה, מתוך CLDR, כללי הרבים של יוניקוד שאנדרואיד ו־ICU משתמשים בהם. צורה לקטגוריה שמכסה מספרים רבים חייבת להציג את המספר. צורה למספר יחיד רשאית להשמיט אותו: ה־"one" בגרמנית הוא רק 1, ולכן "Noch eine Gewohnheit" תקין שם.

היכן ש־"one" אינו רק 1

ב־14 מתוך 41 שפות היעד שהנתונים של CLDR ב־Babel 2.10 מכירים, "one" מכסה יותר מהמספר 1:

בהודעות ICU ענף משלו משנה זאת. עם =0{…} בהודעה, ה־"one" בצרפתית נשאר רק עם 1, והבדיקה לוקחת זאת בחשבון.

נבדק מול המחרוזות של אנדרואיד עצמה

לפני שהוצאנו את הכלל לייצור, הרצנו אותו על הודעות ריבוי במחרוזות המסגרת של Android: 897 תרגומים ב-39 מהשפות שלנו. הוא לא סימן אף אחת. המתרגמים של גוגל הכניסו את המספר לכל ענף שמכסה מספרים מרובים, כולל ה"אחד" הרוסי, גם במקומות שבהם האנגלית מקצה ל-1 ענף משלה. כשהוצאנו ידנית את המספר מענף "אחד" רוסי אחד, הבדיקה אמרה שהצורה משמשת גם עבור 21, 31, 41 ו-51.

הכלל נמצא ב-translation-checks 1.2.0, חינם ב-GitHub, עבור הודעות ICU, וב-Polyglot 1.2.0 עבור ריבוי ב-Android וכן הודעות ICU. הבדיקות האחרות שהוספנו השבוע נמצאות ב-ההערה על אותיות מכתב אחר.

עודכן: