25 שפות בשידור חי — אבן דרך
cutty.dev מדבר כעת בעשרים וחמש שפות. סיפור קצר על מה זה אומר, למה דווקא השפות הללו, ואיך זה נעשה מבלי לשלוח נתונים החוצה.
- כל כך הרבה שפות הוספנו בכמה שבועות. ההתחלה הייתה צנועה: פולנית ואנגלית, שתיים, וסוף הרשימה. היום cutty.dev מברכת אתכם בעשרים וחמש. המספר יפה, אבל כשלעצמו הוא לא אומר כלום. המשמעות טמונה במי שעומד מאחורי העמודות האלה.
חשב מהר. ערבית היא הרבה מעל 400 מיליון אנשים. הינדי עוד כמה מאות מיליונים. סינית, אם סופרים מנדרינית, עולה על מיליארד. הוסף את הספרדית (ספרד פלוס כמעט כל אמריקה הלטינית) ואת פורטוגזית (בעיקר בזכות ברזיל). בסיכום השווקים הללו, מדובר בכמה מיליארדי אנשים שיכולים לראות את הכלי מיד בשפתם. מהשנייה הראשונה.
למה דווקא ה-25 האלה
רשימה מלאה, לסדר. פולנית, אנגלית, גרמנית, צרפתית, ספרדית, איטלקית, צ'כית, רומנית, הונגרית, יוונית, הולנדית, שוודית, פינית, אוקראינית, טורקית. בנוסף ערבית ועברית (שתיהן נכתבות מימין לשמאל). סינית, יפנית, קוריאנית. הינדי, תאילנדית, וייטנאמית, אינדונזיסית. ופורטוגזית.
שום דבר כאן לא הגיע משום מקום. השכבה הראשונה היא פשוט אירופה, שוק אחר שוק. השנייה היא המקומות שסטארט-אפ אירופי בדרך כלל לא נוגע בהם עד ש"מופיעה תנועה": המזרח התיכון וצפון אפריקה, ישראל, מזרח אסיה, תת-היבשת ההודית, דרום מזרח אסיה.
הצרפתית היא דוגמה טובה לכך שכל לוקאל (locale) אחד גורר איתו חצי עולם. צרפת, כמובן, אבל גם בלגיה, קוויבק וחלק נכבד ממערב אפריקה. קובץ תרגום אחד, עשרות מדינות.
מאיפה הגיעו התרגומים האלה
כאן יש חלק שאני כנראה הכי מרוצה ממנו. זה לא עבר דרך שום API חיצוני. מודל AI מקומי, שהופעל על החומרה שלנו, ברשת שלנו, תרגם אותו.
מה זה אומר, בשפה פשוטה:
- אף משפט מהממשק לא יצא החוצה. אף ספק AI לא קיבל את הטקסטים שלנו ל"עיבוד". לא בגלל שיש לנו מה להסתיר בכפתור "קצר". פשוט כך אנחנו מגדירים את הפרויקט הזה מההתחלה ולא עושים חריגים, כי חריגים גדלים אחר כך.
- זה יוצא טוב יותר מתרגום מילה במילה. המודל שומר על ההקשר, הטון, לפעמים גם על הבדיחה. ל-"Short link" בשלוש שפות יכולים להיות שלושה מקבילים הגיוניים שונים, ולא רק תרגום מילולי אחד.
- אפס עלות לשאילתה. אני רוצה לתקן משפט אחד בעשרים וחמש גרסאות? אני עושה זאת ולא מסתכל על המונה בחשבונית.
לאחר המעבר הראשון, בכל מקרה עברתי על כל גרסה בעיניים. האם הפריסה נשמרת, האם הגרסה הגרמנית (השמות הארוכים והמדהימים שלו) לא דוחקת את הטקסט מחוץ לכפתור, האם הערבית באמת זורמת לכיוון הנכון.
מראה דף, כלומר ערבית ועברית
זו הייתה עבודה נפרדת, לא "שינוי דגל". כל הדף עבור שני השפות הללו מראה היפוך אופקי. הניווט יורד לצד ימין, החצים פונים לכיוון השני, אפילו הגרדיאנט ב-hero רץ הפוך.
ניתן היה לוותר. שירותים רבים מוותרים ואז הגרסה הערבית נראית כמו אתר מערבי שמישהו הפך חלקית והשאיר כך. רואים זאת מיד. רצינו שלמצרי או לישראלי תהיה התחושה שהאתר נעשה עבורו, ולא שתורגם עבורו בשעות העבודה המאוחרות.
גופנים, או הבעיה שאף אחד לא חושב עליה עד שהיא נשברת
סינית, יפנית, קוריאנית. תווים CJK שגופן אינטרנטי רגיל פשוט לא מכיל בתוכו. לו היינו משאירים זאת כך, המשתמש היה מקבל ריבועים במקום טקסט (התצוגה הקלאסית של דף שבור). לכן אנחנו טוענים גופנים נוספים, אך רק בגרסאות הללו. שאר עשרות השפות (locales) משתמשות בגופן הסטנדרטי והקל שלנו ולא נושאות בשום דבר מיותר. תאילנדית, הינדי ושאר מערכות הכתיבה קיבלו בדיוק את אותו הגישה.
סדר הפוך
התכנית ידועה: אתה משיק מוצר באנגלית, ושאר השפות "מתישהו, כשיהיה תנועה". רק שאין תנועה בספרדית, כל עוד ספרד שחוקרת בגוגל רואה אנגלית ויוצאת.
הלכנו הפוך. 25 שפות לבוקר טוב. מישהו מחוץ ל become צ'כיה, טייוואן, וייטנאם או מצרים נכנס דרך מנוע החיפוש ומהמסך הראשון מרגיש בבית.
יש בזה גם אדיבות פשוטה. הרשת מניחה כברירת מחדל שתתקשרו באנגלית. כלי קטן מאירופה, שמדבר אליך בקוריאנית או בתאילנדית, אומר תוך כדי כך גם משהו נוסף: שהוא נעשה עבור כולם, ולא רק עבור המרכז דובר האנגלית.
ומה אם שלך לא נמצא
הרשימה ארוכה, אך אינה סופית לחלוטין. לא רואה את השפה שלך? כתוב לנו. הוספת שפה נוספת היא אצלנו עניין של ימים, באמת, לא רבעונים.
ואם אנחנו כבר מסוכמים, אז אתה יודע מה לעשות. קצר קישור כלשהו ותראה אם זה באמת נראה כמו אצלך. אם משהו לא תקין, תעדכן גם כן.