הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
תכירו Boost.Locale
אחרי תהיות עמוקות על תמיכה בלוקליזציה ב־C++, הבנתי שלא ניתן יהיה ללכת איתה רחוק. לקחתי ICU והתחלתי לעטוף אותו בסביבה ידידותית לתכנות C++ מודרני.
אחרי הרבה עבודה הבנתי... כל מה שאני עושה יהיה שימושי הרבה מעבר ל־CppCMS ולכן החלטתי להכין ספריה נפרדת שמטפלת בלוקליזציה במטרה לשלב אותה ב־Boost. כך נולד Boost.Locale שנותנת כלים פשוטים וחזקים לעבודה עם לוקליזציה.
דוגמה פשוטה שתבהיר את החשיבותה ועוצמתה. הנה קטע קוד שמציג למשל את תאריך המאמר באתר:
out << format(translate("{1}, posted at {2,date} on {2,time} by {3}"))
% title % date % author;
ועכשיו המתרגם יכול לתרגם את המשפט לצורה הבאה:
"{1}, פורסם ב{2,locale=he_IL@calendar=hebrew,date} (לועזי {2,date}) ב־{2,time} ע"י {3}"
מה קרה כאן? התצוגה באנגלית תהיה
Some article was published at 11/8/2009 on 10:30 PM by somebody
כאשר התצוגה בעברית תהיה
מאמר מסוים פורסם בכ"א בחשון התש"ע (לועזי 08/11/2009) ב־22:30 ע"י מישהו
למעשה, בלי שימוש ב־libhdate, בלי לעבוד קשה מידי, קיבלתי אפשרות להציג את התאריך העברי והלועזי לפי הלוקל העברי, רק בגלל ש־ICU תומך בלוח־השנה העברי.
למעשה, עבזרת Boost.Locale ניתן לעשות המון דברים בצורה פשוטה. למשל:
cout << as::spellout << 123 <<endl;
יידפיס בלוקל עברי
מאה עשרים ושלוש
יאפשר לחלק מילה "שָלוֹם" לארבעה תווים בהתחשב בניקוד: "שָ", "ל", "וֹ" ו־"ם" ועוד. למיין טקסט בצורה נכונה ועוד עשרות פעולות חשובות שניתנות ע"י ICU רק בצורה נוחה וטבעית ל־C++.
תכירו Boost.Locale:
- תיעוד מלא: http://cppcms.sourceforge.net/boost_locale/html/index.html
- מדריך: http://cppcms.sourceforge.net/boost_locale/html/tutorial.html
- הורדה: https://sourceforge.net/projects/cppcms/files/
תהנו, אשמח גם לתגובות.
תגובות
שוחררה Boost.Locale
שוחררה גרסה חדשה של הספריה שמיועדת ל־boost Boost.Locale (ראה הודעה ברשמת התפוצה של Boost):
הגרסה הזו מכילה את השיפורים הבאים:
תכנון מחדש של איטרטור
הוסף תגובה:
חובה לאפשר JavaScript כדי להגיב.