התאמת מודל LookML לשוק המקומי (לוקליזציה)

בעזרת לוקליזציה של מודלים, אתם יכולים להתאים אישית את האופן שבו התוויות והתיאורים של המודל מוצגים בהתאם ללוקאל של המשתמש.

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

בדף הזה מתוארים השלבים להתאמה לשוק המקומי של הפרויקט:

  1. כדי לקבוע אילו אלמנטים יעברו לוקליזציה, מוסיפים תוויות, תוויות קבוצה ותיאורים למודל.
  2. כדי לספק את הגדרות הלוקליזציה לפרויקט, יוצרים קובצי מחרוזות של לוקאלים.
  3. כדי להפעיל לוקליזציה לפרויקט, מוסיפים הגדרות לוקליזציה לקובץ המניפסט של הפרויקט.
  4. כדי לקבוע את התצוגה למשתמשים שונים, מקצים משתמשים לאזורים.

לוקליזציה של מודלים מתרחשת לעיתים קרובות בשילוב עם אדמין שמציין הגדרות של לוקליזציה של פורמט מספרים ושל שפת ממשק המשתמש.

לוקליזציה של תוויות ותיאורים במודל

אפשר להתאים לשפה המקומית תוויות, תוויות קבוצה ותיאורים במודל, כולל:

אפשר גם ליצור לוחות בקרה של LookML שעברו לוקליזציה בפרויקט. אפשר לבצע התאמה לשוק המקומי של הפרמטרים הבאים במרכז שליטה של LookML:

כדי לראות את כל השדות בפרויקט שאפשר להתאים לשפה מסוימת, אפשר להגדיר את רמת הלוקליזציה של הפרויקט לערך strict. אם ההגדרה הזו מופעלת, סביבת הפיתוח המשולבת (IDE) של Looker מחזירה שגיאת אימות של LookML לכל רכיבי LookML שאפשר להתאים לשפה מסוימת אבל אין להם תוויות, ולכל מחרוזות במודל LookML שאפשר להתאים לשפה מסוימת אבל לא מוגדרות בקובצי המחרוזות של הלוקאל.

בדוגמה הבאה של LookML, יש תוויות לתצוגה flights ולשדות id, country ו-number_of_engines. מופיע גם תיאור של השדה country.

view: flights {
  label: "flight_info"
  sql_table_name: flightstats.accidents ;;

  dimension: id {
    label: "id"
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }

  dimension: country {
    label: "country"
    description: "country_of_departure"
    type: string
    map_layer_name: countries
    sql: ${TABLE}.country ;;
  }

  dimension: number_of_engines {
    label: "number_of_engines"
    type: string
    sql: ${TABLE}.number_of_engines ;;
  }

  dimension: location {
    type: string
    sql: ${TABLE}.location ;;
  }
}

בדוגמאות שבהמשך הדף הזה, נבצע לוקליזציה של הערכים האלה בקובצי המחרוזות באמצעות permissive רמת לוקליזציה. שימו לב שלממד location אין תווית, כך שנוכל להדגים כיצד מוצג ממד ללא לוקליזציה.

יצירת קבצי מחרוזות מקומיות

קבצים של מחרוזות לוקאל משתמשים בזוגות של מפתח-ערך כדי להגדיר איך התוויות והתיאורים במודל מוצגים לכל לוקאל. בצד שמאל של כל זוג מפתח-ערך נמצא ה-מפתח לוקליזציה, שהוא תווית או מחרוזת תיאור מהמודל שלך. בצד שמאל של צמד המפתח/ערך מגדירים איך רוצים שהמחרוזת תוצג בממשק המשתמש של Looker.

לכל לוקאל שבו רוצים להשתמש בפרויקט, צריך ליצור קובץ מחרוזות ייעודי. צור קובץ מחרוזות אחד בלבד עבור כל מקומי. צריך שיהיה לכם קובץ מחרוזות ששמו זהה ללוקאל ברירת המחדל. לדוגמה, אם ציינתם default_locale: en בקובץ המניפסט של הפרויקט, צריך שיהיה קובץ במודל בשם en.strings.json. כל מחרוזת צריכה להיות מוגדרת בקובץ המחרוזות של הלוקאל default, אחרת היא לא תעבור לוקליזציה.

הדוגמה הזו של קובץ en.strings.json תשמש את כל המשתמשים שהערך Locale שלהם הוא en. בדוגמה הבאה של LookML, ‏ en מוגדר גם כמקום ברירת המחדל, ולכן צריך להגדיר את כל המחרוזות בקובץ הזה כדי להתאים אותן לשוק המקומי.

{
  "flight_info": "Flights",
  "id": "Identifier",
  "country_of_departure": "Country of Departure",
  "number_engines": "Number of Engines"
}

בטבלה הבאה אפשר לראות מה משתמש שהלוקאל שלו מוגדר ל-en יראה בטבלת הנתונים של ניתוח ב-Looker:

Flights Identifier Flights country Flights Location Flights Number of Engines
493 Congo Kisangani, Congo 3
2167 Saudi Arabia Riyadh, Saudi Arabia 3
2657 Austria Vienna, Austria 2
17992 United States Kansas City, MO 2
18893 United States Anchorage, AK 4

שימו לב לנקודות הבאות:

  • בדוגמה flights LookML שמוצגת בהמשך הדף, לא צוינה תווית למאפיין location, ולכן Looker משתמש באותיות רישיות בשם המאפיין ומציג אותו כ-Location.
  • הלוקליזציה של התווית country לא הוגדרה בקובץ en.strings.json, ולכן Looker מציג את התווית כפי שהיא מוגדרת בקובץ התצוגה, בלי אותיות רישיות: country.

דוגמה נוספת: אפשר ליצור קובץ es_ES.strings.json שמשמש את כל המשתמשים עם ערך Locale של es_ES:

{
  "flight_info": "Vuelos",
  "id": "Identificador",
  "country": "País",
  "country_of_departure": "País de Partida",
  "number_engines": "Número de Motores"
}

בטבלה הבאה מוצג מה שמשתמש שהלוקאל שלו מוגדר ל-es_ES יראה ב-Looker:

Vuelos Identificador Vuelos country Vuelos Location Vuelos Número de Motores
493 Congo Kisangani, Congo 3
2167 Saudi Arabia Riyadh, Saudi Arabia 3
2657 Austria Vienna, Austria 2
17992 United States Kansas City, MO 2
18893 United States Anchorage, AK 4

שימו לב לנקודות הבאות:

  • כמו בדוגמה הקודמת, בתצוגה המקורית עם התוויות והתיאורים שנוספו, לא סופקה תווית למאפיין המיקום, ולכן Looker משתמש באותיות רישיות ומציג את שם המאפיין כ-"Location".
  • לא הוגדר לוקליזציה לתווית 'country' בקובץ en.strings.json, שהוא קובץ ברירת המחדל של מחרוזות הלוקאל. המשמעות היא שלמרות שהמחרוזת country הוגדרה בקובץ es_ES.strings.json,‏ Looker לא מבצע לוקליזציה של המחרוזת הזו ומציג את התווית כפי שהיא מוגדרת בקובץ התצוגה: country.

הוספת הגדרות לוקליזציה לקובץ המניפסט של הפרויקט

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

מוסיפים את הגדרות הלוקליזציה לקובץ המניפסט. הנה דוגמה:

localization_settings: {
  default_locale: en
  localization_level: permissive
}

default_locale

הפרמטר default_locale מציין את השם של קובץ המחרוזות של הלוקאל שמוגדר כברירת מחדל בפרויקט.

קובץ המחרוזות של הלוקאל שמוגדר כברירת מחדל קובע אילו מחרוזות מהמודל שלכם יותאמו לשפה המקומית. גם אם מחרוזת של תווית או תיאור מוגדרת בקובץ מחרוזות של לוקאל אחר, אם היא לא מוגדרת בקובץ המחרוזות של לוקאל ברירת המחדל, ממשק המשתמש של Looker יציג את המחרוזת הלא מותאמת.

חשוב לא להתבלבל בין הלוקאל שמוגדר כברירת מחדל לפרויקט לבין הלוקאל שמוגדר כברירת מחדל למשתמשי Looker. האדמין שלכם ב-Looker יכול להגדיר לוקאל כברירת מחדל למופע שלכם. אם לא מוגדר ערך ברירת מחדל, ברירת המחדל של Looker היא en. אם האדמין לא יזין ערך Locale ספציפי למשתמש או לקבוצת משתמשים שהמשתמש שייך אליה, מערכת Looker תקצה למשתמש את הלוקאל שמוגדר כברירת מחדל במופע. בנוסף, אם האדמין לא הגדיר את הלוקאל של ברירת המחדל של המופע, מערכת Looker מקצה למשתמש את הלוקאל en.

לכן, אלא אם אתם בטוחים שאדמין Looker יגדיר את הערך של Locale לכל משתמשי Looker, כדאי להגדיר את הפרמטר default_locale של הפרויקט ללוקאל שמוגדר כברירת מחדל למופע (או ל-en אם לא הוגדרה ברירת מחדל), ולהגדיר את הלוקליזציה לכל התוויות והתיאורים בקובץ .strings.json של הלוקאל הזה.

localization_level

רמת הלוקליזציה של הפרויקט קובעת אם מותר להשתמש ברכיבים לא מותאמים במודל:

  • מגדירים את רמת הלוקליזציה ל-strict כדי לדרוש תוויות מותאמות ללוקאל לכל המודלים, התצוגות והשדות בפרויקט. ה-IDE של Looker מחזיר שגיאת אימות של LookML עבור כל אחד מהאלמנטים הללו שאין להם תוויות, וכן עבור כל תוויות ותיאורים שאינם מוגדרים בקובץ מחרוזות ה-locale המוגדר כברירת מחדל.
  • מגדירים את רמת הלוקליזציה ל-permissive כדי לאפשר שימוש ברכיבים ללא תוויות, וכדי לאפשר שימוש בתוויות ובתיאורים שלא מוגדרים בקובץ ברירת המחדל של מחרוזות הלוקליזציה.

גם אם אתם רוצים את רמת הלוקליזציה של strict, ייתכן שיהיה שימושי להגדיר את רמת הלוקליזציה של הפרויקט שלכם ל-permissive כשאתם מפתחים אותו כדי למנוע שגיאות אימות. אחרי שמסיימים להתאים לשפה המקומית את כל התוויות והתיאורים, אפשר להגדיר את רמת הלוקליזציה לstrict כדי לראות אם יש שגיאות.

הקצאת משתמשים לאזור

אחרי שמגדירים את קובצי מחרוזות הלוקאל, אפשר להקצות למשתמשים לוקאל שתואם לאחד מקובצי מחרוזות הלוקאל. ניתן לעשות זאת ברמת ה-instance, קבוצת משתמשים או משתמש בודד, באמצעות השדה Locale או מאפיין המשתמש locale.

לדוגמה, אם רוצים שהמשתמש יראה את התוויות והתיאורים שמוגדרים בקובץ es_ES.strings.json, האדמין ב-Looker צריך להגדיר את ההגדרה Locale של המשתמש ל-es_ES.

אפשר להזין לוקאלים מותאמים אישית שיוצרים באמצעות קובצי מחרוזות בשדה לוקאל. לשם כך, לוחצים על השדה ומקלידים את שם קובץ המחרוזת במקום לבחור לוקאל מובנה מהתפריט הנפתח. מידע נוסף זמין בדף התיעוד בנושא משתמשים.

הגדרת הלוקאל למשתמשים שמוטמעים עם חתימה

אפשר לכלול את ערך הלוקאל של משתמש בכתובת URL מוטמעת עם חתימה, בדיוק כמו כל מאפיין אחר של משתמש. הפורמט המדויק שנדרש להטמעות חתומות תלוי בשפת התכנות שבה משתמשים כדי ליצור את סקריפט כתובת ה-URL של ההטמעה החתומה, אבל שם מאפיין המשתמש הוא locale. מידע נוסף על כתובות URL חתומות להטמעה ועל כלים ליצירת כתובות URL חתומות להטמעה זמין בדף התיעוד בנושא הטמעה חתומה.

התאמה לשוק המקומי של קבוצות מאפיינים

אפשר להשתמש בלוקליזציה של המודל באמצעות הפרמטר dimension_group. התכונה הזו מאפשרת למפתחי LookML לספק תרגומים בהתאמה אישית לפריטים הבאים:

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

כדי לתרגם או לשנות את השם של ערכי מסגרת הזמן והמרווח שנוצרים על ידי קבוצת מאפיינים, מוסיפים את מחרוזת מסגרת הזמן, המרווח או מסגרת הזמן המותאמת אישית כמפתח בקובצי המחרוזות של הלוקאל (כמו en.strings.json ו-es_ES.strings.json) ומספקים את ערך התצוגה המתורגם.

הנה קוד LookML לדוגמה של קבוצת מאפיינים:

  dimension_group: created {
    type: time
    timeframes: [time, date, week, month, year]
    sql: ${TABLE}.created_at ;;
  }

זו דוגמה לקובץ מחרוזות של לוקאל en.strings.json שמספק תרגום של צמד מפתח/ערך ל-year:

{
  "year": "translated year",
}

בכלי לבחירת מאפיינים בשדה 'ניתוח', קבוצת המאפיינים מוצגת כך:

Created Date
  Date
  Month
  Time
  translated year
  Week

התאמה לשפה המקומית של קבוצות מאפיינים מותאמים אישית של היומן

לגבי קבוצות מאפיינים של type: custom_calendar, צריך להוסיף את טווח התאריכים המותאם אישית (למשל custom_date ו-custom_year) כמפתח בקובצי מחרוזות הלוקאל, ולספק את ערך התצוגה המתורגם.

הנה קבוצת מאפיינים של לוח שנה מותאם אישית לדוגמה ב-LookML:

  dimension_group: cust_created_localized {
    type: custom_calendar
    custom_timeframes: [custom_date, custom_week, custom_period, custom_year]
    sql: ${TABLE}.created_at ;;
    based_on_calendar: retail_custom_calendar_v2
  }

זו דוגמה לקובץ מחרוזות של לוקאל en.strings.json שמספק תרגומים של צמדי מפתח/ערך עבור period ו-custom_week:

{
  "period": "translated period",
  "custom_week": "translated custom week"
}

בבורר הניתוחים, קבוצת המאפיינים של היומן המותאם אישית מוצגת כך:

Cust Created Localized
  Fiscal Date
  Fiscal Period
  Fiscal Year
  translated custom week

חשוב לשים לב לנקודות הבאות לגבי האופן שבו קבוצת המאפיינים של היומן המותאם אישית מוצגת בבורר Explore ב-Looker:

  • מכיוון שקובץ המחרוזות של הלוקאל en.strings.json מציין תרגום ל-custom_week, טווח הזמן custom_week של קבוצת המאפיינים משתמש בערך התרגום (translated custom week) במקום בערך ברירת המחדל (Fiscal Week).
  • קובץ המחרוזות של הלוקאל en.strings.json מספק תרגום ל-period אבל לא ל-custom_period, ולכן מסגרת הזמן custom_period של קבוצת המאפיינים המותאמים אישית לא מתורגמת ומוצגת באמצעות התווית שמוגדרת כברירת מחדל (תקופה פיסקלית). כדי ש-Looker יתרגם את custom_period, בקובץ המחרוזות צריך להיות תרגום של זוג מפתח/ערך ספציפי ל-custom_period.
  • שאר מסגרות הזמן של קבוצת המאפיינים המותאמים אישית לא מתורגמות. במקום זאת, התוויות מתחילות ב-Fiscal, כמו שמתואר במאמר תוויות לקבוצות של מאפיינים מותאמים אישית של יומן.

שימוש באזור במשתני Liquid

כמו שצוין קודם, לוקליזציה של מודל מאפשרת להתאים אישית את התצוגה של התוויות והתיאורים של המודל ללוקאלים שונים. אבל אפשר גם לכלול מפתחות לוקליזציה במשתני Liquid, וכך לבצע לוקליזציה גם של ערכי הנתונים.

לדוגמה, בקובץ ברירת המחדל של מחרוזות לוקאל בשם en.strings.json, אפשר ליצור את מפתחות הלוקליזציה domestic ו-international עם הערכים הבאים:

{
  "domestic": "Domestic",
  "international": "International"
}

ואז בקובץ es_ES.strings.json, אנחנו יכולים לספק גרסאות בספרדית של מפתחות הלוקליזציה האלה:

{
  "domestic": "Nacional",
  "international": "Internacional"
}

מכאן, אנחנו יכולים להשתמש במפתחות הלוקליזציה domestic ו-international במשתני Liquid כדי לבצע לוקליזציה של הפלט של מאפיין:

dimension: from_US {
    label: "from_us"
    type: string
    sql: CASE
         WHEN ${TABLE}.country = 'United States' THEN '{{ _localization['domestic'] }}'
         ELSE '{{ _localization['international'] }}'
         END;;
  }

משתמשים עם לוקאל en יראו את התוצאות הבאות:

Flights Identifier Flights country Flights From the US?
289 United States Domestic
400 Canada International
493 Congo International
936 United States Domestic

משתמשים עם לוקאל es_ES יראו את התוצאות הבאות:

Vuelos Identificador Vuelos País Vuelos ¿De Los Estados Unidos?
289 United States Nacional
400 Canada Internacional
493 Congo Internacional
936 United States Nacional

משתמשים עם לוקאל es_ES רואים את הנתונים 'מקומי' ו'בינלאומי' בלוקליזציה 'Nacional' ו'Internacional', בהתאמה.

אפשר גם להשתמש ב-Liquid במסננים של לוחות בקרה ב-LookML ובמסננים של רכיבים בלוחות בקרה ב-LookML כדי להתאים את ערך ברירת המחדל במסנן לשפה המקומית. לדוגמה, אם בלוח בקרה ב-LookML יש משבצת שמשתמשת בנתונים מהמודל המותאם לשוק המקומי, ויש מסנן במשבצת הזו שמוגדר ב-LookML באופן הבא:

filters:
  flights.from_US: "{{ _localization['domestic'] }}"

כשמשתמש עם הלוקאל en יבצע ניתוח מהמשבצת הזו בלוח הבקרה, הניתוח יסונן לפי הערך Domestic בשדה Flights From the US?, וטבלת הנתונים בניתוח תכלול את התוצאות הבאות:

Flights Identifier Flights country Flights From the US?
289 United States Domestic
936 United States Domestic

כשמשתמש עם הלוקאל es_ES מנתח נתונים מהמשבצת הזו בלוח הבקרה, הניתוח מסונן לפי הערך Nacional בשדה Vuelos ¿De Los Estados Unidos?, וטבלת הנתונים בניתוח כוללת את התוצאות הבאות:

Vuelos Identificador Vuelos País Vuelos ¿De Los Estados Unidos?
289 United States Nacional
936 United States Nacional

הסבר על האופן שבו כללי לוקליזציה חלים על אובייקטים מורחבים ומדויקים

חשוב לדעת שכללי לוקליזציה חלים כשמרחיבים תצוגות, ניתוחים או לוחות בקרה של LookML, וכשמשפרים תצוגות או ניתוחים.

אם הרחבתם או שיפרתם אובייקט ואז הוספתם תוויות או תיאורים חדשים, אתם צריכים לספק הגדרות לוקליזציה בקבצים של מחרוזות הלוקאל.

לדוגמה, אם יש לנו תצוגה של flights:


view: flights {
  label: "flight_info"
  sql_table_name: flightstats.accidents ;;
  ...
}

לאחר מכן יוצרים תצוגה חדשה שמרחיבה את התצוגה flights:

include: "/views/flights.view"

view: flights_enhanced {
  extends: [flights]
  label: "enhanced_flight_info"
}

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

לוקליזציה של מודלים וייבוא פרויקטים

אפשר להשתמש בלוקליזציה של מודלים בפרויקטים שמייבאים פרויקטים אחרים. התנהגות ברירת המחדל היא ש-Looker ישתמש בהגדרות הלוקאל רק מהפרויקט המיובא, אם יש בו הגדרות לוקאל. עם זאת, אם רוצים למזג את הגדרות הלוקאל מפרויקט מיובא עם הגדרות הלוקאל של הפרויקט המייבא, אפשר להוסיף את ההצהרה import_locale_defs: yes לפרמטר localization_settings במניפסט (קובץ manifest.lkml) של הפרויקט המייבא:

project_name: "my_project"

localization_settings: {
  default_locale: en
  localization_level: permissive
  import_locale_defs: yes
}

כשהערך של import_locale_defs הוא yes, ‏ Looker משלב קובץ מחרוזות אחד שמתאים לכל לוקאל מכל פרויקט.

כללי קדימות למפתחות כפולים

אם אותו מפתח מוגדר בקובצי מחרוזות שונים בפרויקטים המיובאים וגם בפרויקט המייבא, Looker יחיל את כללי הקדימות הבאים כשהוא משלב את הגדרות הלוקאל:

  • לייבוא מפתחות פרויקט יש עדיפות: מפתחות שמוגדרים בקובצי הלוקאל של הפרויקט שממנו מייבאים תמיד מבטלים מפתחות כפולים מקובצי הלוקאל של כל פרויקט מיובא.
  • סדר הייבוא קובע את העדיפות: אם קיים מפתח כפול רק בקובצי לוקאל של פרויקטים מיובאים, Looker פותר את הקונפליקט על סמך הסדר שבו הפרויקטים מיובאים בקובץ המניפסט של הפרויקט המייבא. הגדרות של מפתח/ערך בפרויקטים שמייבאים מאוחר יותר בקובץ המניפסט מקבלות עדיפות על פני הגדרות שמייבאים מוקדם יותר.
  • הגדרות הפרויקט המיובא נמצאות בשימוש: הגדרות הלוקליזציה של הפרויקט המייבא (כמו default_locale ו-localization_level) נמצאות בשימוש בכל הקבצים המשולבים, ומבטלות את כל הגדרות הלוקליזציה שמוגדרות בקובצי המניפסט של הפרויקטים המיובאים.