הוספת הקשר לתרגומי Gettext

ב־24.5.2010, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, Unicode; ‏4 תגובות

אחת התכונות החסרות ביותר ב־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.

תגובות

elcuco, ב־24.5.2010, 20:16

lokalize אכן תומך בזה.

למי שכתוב קוד, בבקשה, ב"הקשר" לתת הסבר מלא, או משפט לדוגמה "Currency. Exchange 5usd to euro".

ארתיום, ב־24.5.2010, 22:26

נכון, במיוחד ש־exchange יכול להיות: המר, המרה, החלף, החלפה ועוד אלף ואחד דברים.

כמובן תמיד כדאי להביא משפטים מלאים לתרגום, ואם זה בלתי אפשרי (נגיד כפתור) אז צריך לספק הקשר

א, ב־24.5.2010, 22:47

מידה=מידע

שנקרה=שנקרא

סתם הערות קטנוניות, אבל מוזיפות לקריאות של הפוסט.

ארתיום, ב־25.5.2010, 5:53

א', תודה, תיקנתי

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים