דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. i18n - איך מומלץ לכתוב את מזהי התרגומים

i18n - איך מומלץ לכתוב את מזהי התרגומים

מתוזמן נעוץ נעול הועבר תכנות
7 פוסטים 3 כותבים 281 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • צדיק תמיםצ מנותק
    צדיק תמיםצ מנותק
    צדיק תמים
    כתב ב נערך לאחרונה על ידי צדיק תמים
    #1

    אני משתמש ב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, ואז צריך לכתוב רק את התרגום עברית - ובאנגלית זה פשוט ישתמש בסטרינג המקור) - כל פעם שאני ישנה את הטקסט באנגלית, ואפילו שינוי מאות קטנה לגדולה, אני יהיה חייב לעדכן גם את המזהה בעברית.

    והאם כדאי לקבץ את התרגומים לפי מוסכמה כלשהיא (לדוגמה קידומת של שם הדף)?

    תודה!

    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
    טיפים

    dovidD קומפיונטק 2 תגובות תגובה אחרונה
    4
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      השיב לצדיק תמים ב נערך לאחרונה על ידי dovid
      #2

      @צדיק-תמים https://stackoverflow.com/q/44905345/1271037
      ככה עשו בנטפרי כשעבדתי שמה, כמו namespace:

      customer.new-connection.save-now
      

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

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      צדיק תמיםצ תגובה 1 תגובה אחרונה
      3
      • קומפיונטק מנותק
        קומפיונטק מנותק
        קומפיונט
        השיב לצדיק תמים ב נערך לאחרונה על ידי
        #3

        @צדיק-תמים לדעתי האפשרות הראשונה היא הטובה, למרות החסרונות שציינת.

        ודרך אגב, אני לא יודע אם זה תקני, אבל אני תמיד מוסיף לרשימת המילים של השפה מאפיין שמציין את כיוון הזרימה של הטקסט ושל כל התוכן בדף שרלוונטי לאותה השפה (לדוג' לעברית rtl ולאנגלית ltr) ואח"כ מקשר אותו ל-dir במקומות שצריך. ככה אני מרוויח שברגע שאני משנה את השפה מאנגלית לעברית ולהיפך הכיוון של הדף גם משתנה בהתאם.

        אני לא יודע איך עושים את זה ב-Vue אבל אני מניח שאפשר.

        צדיק תמיםצ תגובה 1 תגובה אחרונה
        1
        • צדיק תמיםצ מנותק
          צדיק תמיםצ מנותק
          צדיק תמים
          השיב לקומפיונט ב נערך לאחרונה על ידי צדיק תמים
          #4

          @קומפיונט בQuasar הRTL הוא אוטומטי לפי השפה,
          בתוך הבורר שפת מערכת (שמשפיע על הקומפוננטות המובנות והRTL) שיצרתי לפי ההוראות בתיעוד, הוספתי גם הגדרה של השפת i18n (אחרי $q.lang.set(lang.default)), וככה כשמשנים שפה בבורר מתחלף גם השפה של i18n וגם הRTL (שמשתנה בגלל שינוי שפת המערכת)

          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
          טיפים

          תגובה 1 תגובה אחרונה
          3
          • צדיק תמיםצ מנותק
            צדיק תמיםצ מנותק
            צדיק תמים
            השיב לdovid ב נערך לאחרונה על ידי צדיק תמים
            #5

            @dovid תודה!
            לגבי המבנה אובייקט עצמו, מה אתה ממליץ?
            לעשות הכל בקובץ אחד, או בקבצים נפרדים לפי namespace ולפרק אותם לייצוא בקובץ המרכזי?
            והאם לעשות אובייקט אחד גדול עם קינון בkey של התרגום

            'customer.new-connection.save-now': 'Save'
            

            או אובייקט מקונן?

              customer: {
                'new-connection': {
                  'save-now': 'Save'
                }
              }
            

            Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
            טיפים

            dovidD תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              השיב לצדיק תמים ב נערך לאחרונה על ידי
              #6

              @צדיק-תמים קןבץ אחד, כמה שפחות לסבך.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              dovidD תגובה 1 תגובה אחרונה
              2
              • dovidD מחובר
                dovidD מחובר
                dovid ניהול
                השיב לdovid ב נערך לאחרונה על ידי
                #7

                ובלי קינון.

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                2

                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום