לוקליזציה של תוכנה לעברית היא אחת המשימות התובעניות בתחום, והיא משתלמת לצוותים שמתייחסים אליה כאל שילוב של הנדסה ושפה ולא כאל החלפת מחרוזות שגרתית. העברית נכתבת ונקראת מימין לשמאל, היא מטה שמות עצם ופעלים לפי מין דקדוקי, והיא נושאת צורת מספר שאין לה מקבילה באנגלית. מעל הדקדוק מונח שוק עם מוסכמות משלו: פורמט תאריך ישראלי, נוף האמצעים לתשלום ולזיהוי המקומי, וקהל משתמשים שעובר בנוחות בין עברית, אנגלית ולעיתים גם ערבית או רוסית.
בניב תרגומים בינלאומיים, שנוסדה בראשון לציון בשנת 1999, ביצענו לוקליזציה של ממשקים עבור שירותי ממשלה, גופי בריאות ותאגידים הפועלים ברחבי ישראל. הלקח החוזר פשוט. גרסה עברית שרק מתרגמת את המחרוזות תרגיש זרה למשתמש הישראלי, ואילו גרסה שמכבדת את כיווניות הכתיבה, את הדקדוק ואת ההקשר המקומי תרגיש כאילו נבנתה בתל אביב. מאמר זה עובר על ההחלטות הטכניות והלשוניות שמבדילות בין השתיים.
כיווניות מימין לשמאל היא בעיית פריסה, לא בעיית תרגום
הדבר הראשון שצוותים מגלים הוא שהעברית הופכת את כל הממשק. הטקסט מיושר לימין, סדר הקריאה רץ מימין לשמאל, וזרימת המסך משקפת את העיצוב המקורי שנבנה משמאל לימין. תפריטי צד נפתחים מצד ימין, חצי החזרה מצביעים ימינה, פסי התקדמות מתמלאים מימין לשמאל, ופינת המוצא הטבעית של העין עוברת לפינה הימנית העליונה. מסגרות פיתוח מודרניות תומכות בכך באמצעות מתג כיווניות יחיד (מאפיין dir עם הערך rtl באינטרנט, או ממשקי כיוון פריסה ב-iOS וב-Android), אך המתג פותר רק את היישור. הוא אינו פותר את המקרים שהמעצבים מעולם לא בדקו.
טקסט דו-כיווני, המכונה לרוב bidi, הוא המקום שבו שוכנים רוב הבאגים. משפט עברי שמכיל שם מוצר באנגלית, מספר טלפון, כתובת אינטרנט או מחיר מערבב כיוונים בתוך שורה אחת, ואלגוריתם הכיווניות הדו-כיוונית של יוניקוד הוא שמכריע כיצד כל רצף יזרום. בלי תשומת לב מתקבל פלט משובש: סוגריים שנוחתים בצד הלא נכון, סימן אחוז שמתנתק מהמספר שלו, או נתיב קובץ שנקרא הפוך. הפתרון הוא לתת למנוע הפריסה לטפל בכיוון במקום לקבע יישור בקוד, לבדוק עם מחרוזות מעורבות ריאליסטיות, ולהשתמש בסימני בידוד כיווני במקומות שבהם תו ניטרלי היה נצמד לרצף הלא נכון.
גם הצלמיות והנכסים הגרפיים דורשים תשומת לב. כל סמל שמרמז על תנועה או על רצף (חצים, שברונים, מחוונים, חצי בטל ובצע מחדש) צריך לעבור היפוך, ואילו לוגואים, פני שעון וסמלי מותג צריכים להישאר כפי שהם. כלל מעשי שאנו מיישמים: להפוך סמלים שמשמעותם כיוון, ולהשאיר סמלים שמשמעותם זהות. המספרים עצמם נשארים בכיוון משמאל לימין גם בתוך טקסט עברי, דבר שמפתיע מהנדסים בפעם הראשונה, וזו בדיוק הסיבה שבדיקה ידנית של דובר ילידי אינה בגדר מותרות.
ריבוי, צורת הזוגי ומין דקדוקי בשכבת המחרוזות
לאנגלית יש שתי צורות מספר, יחיד ורבים, ולכן מפתחים נוטים אינסטינקטיבית לכתוב מחרוזת אחת וצורת גיבוי אחת. לעברית יש בפועל שלוש קטגוריות רלוונטיות: אחד, שניים והרבה, משום שהעברית משמרת צורת זוגי עבור שמות עצם וזוגות מסוימים. כללי הריבוי התקניים של CLDR לעברית חושפים את הקטגוריות one, two, many ו-other, וממשק שמתעלם מהן יפיק ניסוחים שייקראו כשגיאת דקדוק לעין ילידית. יש להתייחס לבחירת צורת הריבוי כאל נתון, ולא כאל שרשור מחרוזות, ולתת למסגרת הלוקליזציה לבחור את הצורה הנכונה מתוך מערך שהמתרגם מספק.
המין הדקדוקי הוא המלכודת השנייה. העברית מסמנת מין על שמות עצם, על שמות תואר, ובאופן מכריע גם על פעלים, כולל פעלים הפונים אל המשתמש. הודעת אישור שאומרת ששמרת את השינויים שלך משתמשת בצורת פועל שונה בהתאם לשאלה אם המשתמשת או המשתמש. אם האפליקציה מכירה את מין המשתמש, אפשר לבחור את הצורה הנכונה; אם לא, נדרשת אסטרטגיית ניסוח ניטרלי שמסוכמת עם המתרגם מראש, משום שברירת מחדל בלשון זכר נקראת כרשלנות לחצי מהקהל. התוצאה הגרועה ביותר היא משפט שמורכב מקטעים בזמן ריצה, שכן ההתאם בעברית מתפרש על פני כל הפסוקית ותפירת קטעים כמעט תמיד שוברת אותו.
ההשלכה ההנדסית היא שהמחרוזות חייבות לנדוד יחד עם ההקשר שלהן. מפתח בשם button_save אינו אומר למתרגם דבר על מי הנמען או על כמות הפריטים המעורבת. יש להוסיף הערות, רמזי מין וערכי דוגמה לכל ערך, ולעולם לא לפצל יחידה דקדוקית בין שני מפתחות. אנו מחזירים באופן שגרתי קובצי מחרוזות שנראים שלמים באנגלית אך בלתי אפשריים להצגה תקינה בעברית, וההלוך ושוב הזה זול בהרבה לפני ההשקה מאשר אחריה.
התאמה תרבותית לשוק הישראלי
מעבר לדקדוק, המשתמש הישראלי מצפה למוסכמות מקומיות. תאריכים נכתבים יום, חודש, שנה, ושבוע העבודה רץ מיום ראשון עד יום חמישי, כאשר יום שישי ושבת הם סוף השבוע, ולכן לוח שנה שמאפיר את שבת וראשון ייראה שגוי. הלוח העברי מתקיים לצד הלוח הגרגוריאני לצורך חגים ומועדים רשמיים, ואפליקציות שנוגעות בקביעת מועדים, במועדים מול הרשויות או בשמירת מצוות זקוקות לעיתים קרובות לשניהם. המטבע הוא השקל החדש, הנכתב עם תת-היחידה אגורות, ועיצוב המספרים נוהג לפי הציפיות המקומיות ולא לפי ברירת מחדל גנרית.
גם פרטי הזהות והרגולציה חשובים. טפסים שאוספים מספר תעודת זהות צריכים לאמת את ספרת הביקורת ואת הפורמט, שדות הכתובת צריכים לשקף את מבנה הדואר הישראלי, ושדות הטלפון צריכים לקבל את תוכנית המספור המקומית. כאשר המוצר נוגע בתהליכים רשמיים, על השפה להלום את המינוח שבו משתמשים משרד הפנים, בתי המשפט ומערכת הבריאות, משום שהמשתמשים מזהים את הנוסח הרשמי ובוטחים בו. גם הטון הוא חלק מההתאמה התרבותית: נוסח ממשק ישראלי נוטה להיות ישיר ותמציתי, וניסוח רשמי מדי או שיווקי מדי עלול להרגיש נוקשה או מתחמק.
תהליך עבודה שמפיק תוצאה ברמת דובר ילידי
הלוקליזציות שמחזיקות מעמד הן אלו שמשולבות בתהליך הפיתוח ולא מורכבות בסופו. יש להוציא כל מחרוזת הפונה למשתמש החוצה כבר מהיום הראשון, להעניק לכל אחת מפתח יציב והערה למתרגם, ולשמור את צורות הריבוי והמין בתוך פורמט המשאבים עצמו ולא בקוד. כדאי להריץ מעבר של פסאודו-לוקליזציה שמאריך מחרוזות ומכפה כיווניות מימין לשמאל בשלב מוקדם, כך ששבירת פריסה תתגלה כשתיקונה עדיין זול. יש לשמור מקום לטקסט העברי, שלעיתים קצר מהאנגלי אך פעמים רבות בלתי צפוי בהקשרים מעורבי כיוון.
ולבסוף, יש לשלב בתהליך בלשן עברית ילידי, ולא מעבר של תרגום מכונה עם עריכה קלה. תרגום מקצועי תופס את הפועל שצריך להיות בלשון נקבה, את צורת הזוגי שהמסגרת קבעה כברירת מחדל לרבים, ואת המונח שבו משרד הפנים אכן משתמש. הוא גם בוחן את המסכים המורכבים בהקשרם, משום שמחרוזת שנכונה בבידוד עדיין עלולה להיקרא שגוי כשהיא יושבת בתוך פריסה אמיתית. השורה התחתונה המעשית: תקצבו את לוקליזציית העברית כחלק מההנדסה, ספקו למתרגמים הקשר מלא, ואמתו את התוצאה על המכשיר בכיווניות אמיתית מימין לשמאל לפני ההשקה.
