הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
הוספת הקשר לתרגומי Gettext
אחת התכונות החסרות ביותר ב־gettext הייתה עד לא מזמן היא העדר אפשרות להעביר מידע על הקשר המילה. כך למשל, מילה "exchange" יכולה להיות מתורגמת ל"החלף" כשמדובר בחפצים ו"המר" כשמדובר בכסף. אבל אם שתי המילים מופיעות באותה תוכנה הדורשות תרגומים שונים בהקשרים שונים, ב־gettext לא הייתה שום דרך להבחין ביניהם.
החל מגרסה 0.15 התווספה התמיכה במה שנקרא הקשר. אם עד היום התרגום של מחרוזת "exchange" נעשה כ:
gettext("exchange");
אז הפונקציה pgettext מאפשרת להוסיף הקשר לתרגום:
pgettext("currency","exchange");
שיכולה להיות מתורגמת בצורה נכונה בכל הקשר. בקטלוג מחרוזות po הדוגמה הזו תופיע כ־
msgctxt "currency"
msgid "exchange"
msgstr "המר"
חשוב לזכור:
- צריך להשתמש ב־gettext עדכני
צריך להשתמש בכלי תרגום עדכניים שיודעים לעבוד עם msgctxt.
כך KBabel כלל לא תומך ב־msgctxt, poedit לא מציג מידע על הקשר. עד כמה שידוע לי, גרסאות עדכניות של lokalize ו־gtranslator תומכות בהקשרים במילוני gettext.
כמובן שגם Boost.Locale תומך בהקשרים של Gettext.
תגובות
lokalize אכן תומך בזה.
למי שכתוב קוד, בבקשה, ב"הקשר" לתת הסבר מלא, או משפט לדוגמה "Currency. Exchange 5usd to euro".
נכון, במיוחד ש־exchange יכול להיות: המר, המרה, החלף, החלפה ועוד אלף ואחד דברים.
כמובן תמיד כדאי להביא משפטים מלאים לתרגום, ואם זה בלתי אפשרי (נגיד כפתור) אז צריך לספק הקשר
מידה=מידע
שנקרה=שנקרא
סתם הערות קטנוניות, אבל מוזיפות לקריאות של הפוסט.
א', תודה, תיקנתי
הוסף תגובה:
חובה לאפשר JavaScript כדי להגיב.