i18n - איך מומלץ לכתוב את מזהי התרגומים
-
אני משתמש בVue i18n כדי לעשות לוקליזציה של אתר לעברית ואנגלית,
הקובץ שפה לדוגמה שהCLI של יצירת הפרויקט (Quasar CLI) יצר לי נראה ככה:// This is just an example, // so you can safely delete all default props below export default { failed: 'Action failed', success: 'Action was successful' }
ומשתמשים לדוגמה ככה:
{{ $t('faild') }}
כלומר פשוט מייצאים אובייקט כשמזהה המחרוזת הוא הkey והתרגום הוא הvalue, ויוצרים קובץ כזה לכל שפה שרוצים לתרגם.
השאלה איך מומלץ לקרוא למזהי המחרוזות (הkey באובייקט)?
- אם פשוט כל פעם אני ימציא מזהה, לדוגמה לכיתוב של "הדף לא נמצא" בדף שגיאה 404 אקרא
page-not-found
:
א. אני יצטרך כל פעם להשקיע מחשבה בשם מזהה מתאים
ב. אני עלול להשתמש בטעות במזהה שכבר קיים - ואם אני ישתמש בטקסט האנגלית כמזהה (כלומר
Page not found
, ואז צריך לכתוב רק את התרגום עברית - ובאנגלית זה פשוט ישתמש בסטרינג המקור) - כל פעם שאני ישנה את הטקסט באנגלית, ואפילו שינוי מאות קטנה לגדולה, אני יהיה חייב לעדכן גם את המזהה בעברית.
והאם כדאי לקבץ את התרגומים לפי מוסכמה כלשהיא (לדוגמה קידומת של שם הדף)?
תודה!
- אם פשוט כל פעם אני ימציא מזהה, לדוגמה לכיתוב של "הדף לא נמצא" בדף שגיאה 404 אקרא
-
@צדיק-תמים https://stackoverflow.com/q/44905345/1271037
ככה עשו בנטפרי כשעבדתי שמה, כמו namespace:customer.new-connection.save-now
השאלה מצויינת וטוב שאתה חושב על זה בהתחלה ולא אח"כ (אם כי אל תגזים בגישה הזו, זה הכי תוקע).
זה בהחלט מחייב מחשבה וזה לפעמים קשה ומשגע (כי לפעמים יש פסקה עם שני חלקים וכל מיני כאלה, ובכלל לא תמיד יש לך הגדרה לכל מקטע. אני עשיתי מספור בכאלה מקרים) -
@צדיק-תמים לדעתי האפשרות הראשונה היא הטובה, למרות החסרונות שציינת.
ודרך אגב, אני לא יודע אם זה תקני, אבל אני תמיד מוסיף לרשימת המילים של השפה מאפיין שמציין את כיוון הזרימה של הטקסט ושל כל התוכן בדף שרלוונטי לאותה השפה (לדוג' לעברית
rtl
ולאנגליתltr
) ואח"כ מקשר אותו ל-dir
במקומות שצריך. ככה אני מרוויח שברגע שאני משנה את השפה מאנגלית לעברית ולהיפך הכיוון של הדף גם משתנה בהתאם.אני לא יודע איך עושים את זה ב-Vue אבל אני מניח שאפשר.
-
@קומפיונט בQuasar הRTL הוא אוטומטי לפי השפה,
בתוך הבורר שפת מערכת (שמשפיע על הקומפוננטות המובנות והRTL) שיצרתי לפי ההוראות בתיעוד, הוספתי גם הגדרה של השפת i18n (אחרי$q.lang.set(lang.default)
), וככה כשמשנים שפה בבורר מתחלף גם השפה של i18n וגם הRTL (שמשתנה בגלל שינוי שפת המערכת) -
@dovid תודה!
לגבי המבנה אובייקט עצמו, מה אתה ממליץ?
לעשות הכל בקובץ אחד, או בקבצים נפרדים לפי namespace ולפרק אותם לייצוא בקובץ המרכזי?
והאם לעשות אובייקט אחד גדול עם קינון בkey של התרגום'customer.new-connection.save-now': 'Save'
או אובייקט מקונן?
customer: { 'new-connection': { 'save-now': 'Save' } }