הקדמה

ה-locale הוא אוסף משתני סביבה הנוגעים להגדרות איזוריות כמו תסדיר הצגת התאריך, שפת הכתיבה, מידות וכו' משתני ה-locale יכולים לקבל ערך אחיד (לדוגמה כל משתני הסביבה יכולים להיות מכוונים להגדרות המתאימות לישראל ועברית) אך ניתן גם ליצור מקבץ הגדרות שאינן אחידות (לדוגמה שימוש בשפה העברית אך מדידת גדלים ביחידות האופיניות לארה”ב), הכל בהתאם לצרכי המשתמש. מסמך זה יסקור את המשתנים השונים הנכללים ב-locale וכיצד הם משפיעים על המערכת.

משתני ה-locale

משתנים תואמי תקן POSIX.
LC_ALL אם הוגדר ערך למשתנה זה יקבלו גם כל משתני ה-loacle האחרים את אותו ערך קבוע
LC_COLLATE ערך משתנה זה קובע לפי איזו שפה ימוינו קטעים כתובים ומחרוזות על ידי פונקציות כמו strcoll ו- strxfrm
LC_CTYPE ערך משתנה זה קובע את השפה להקלדה
LC_MESSAGES ערך משתנה זה קובע את השפה בה יוצגו הודעות למשתמש.
תוכנות המשתמשות ב- GNU gettex יקבלו גם משתנה בשם LANGUAGE לאותה מטרה
LC_MONETARY ערך משתנה זה קובע את המטבע איתו תעבוד המערכת ואת תסדיר הצגת הערכים הכספיים
LC_NUMERIC ערך משתנה זה קובע את התסדיר לפיו יוצגו מספרים שאינם מייצגים ערכים כספיים
LC_TIME ערך משתנה זה קובע את התסדיר לפיו יוצגו השעה והתאריך
LANG כל משתנה ממשתני ה-locale שאין לו ערך מוגדר יקבל ערך זה.
אם לא נקבע ערך למשתנה זה ברירת המחדל היא “C”.
אם נקבע למשתנה זה או למשתנה אחר ממשתני ה-locale ערך שאינו תקף יחשב ערכו כערך ברירת המחדל
הרחבות לתקן הנכללות ב- glibc. מקור הרחבות אלו במערכת ה-gettext.
LC_NAME ערך משתנה זה קובע את התסדיר לפיו יוצגו שמות
LC_ADDRESS ערך משתנה זה קובע את התסדיר לפיו יוצגו כתובות
LC_PAPER ערך משתנה זה קובע את הגודל הסטנדרטי לדף
LC_MEASUREMENT ערך משתנה זה קובע את יחידות המדידה בסיסיות (בסיס מטרי או אחר)
LC_TELEPHONE ערך משתנה זה קובע את התסדיר לפיו יוצגו מספרי טלפון
LANGUAGE אם הוגדר ערך למשתנה זה יקבל המשתנה LC_MESSAGES את אותו הערך.
משתנה זה יכול לקבל מספר ערכים אשר יסודרו לפי סדר עדיפות.

אפשרויות וערכים קבילים

  • משתני ה-locale יכולים לקבל תחום מוגדר ומצומצם של אפשרויות.
    כדי לדעת אילו ערכים יכולים המשתנים לקבל עליך להריץ את הפקודה
    locale -a #lists All available locales in the system
  • משתנים שונים ב-locale אינם מחייבים הגדרת קידוד אך לאלו הדורשים הגדרה כזו ניתן לקבל את רשימת מפות התווים הזמינות על ידי הרצת הפקודה
     locale -m #lists all available charMaps
    • משתמשי מנדריבה בלבד - כדי לקבל מידע זה יהיה עליכם להתקין את החבילה glibc-i18ndata
  • המשתנה LANGUAGE יכול מספר ערכים המסודרים לפי סדר עדיפות ובינהם ניתן להזין גם ערכי שפה ללא ציון המדינה הנלווה כמו לדוגמה
    LANGUAGE=he:en_US:pt_BR.UTF-8
  • כדי לאחזר את התוכן הנוכחי של קטגוריה מסוימת יש להריץ את הפקודה
     locale -c category_name

    שימו לב כי קיים הבדל מהותי בין הגדרת ה-locale לקטגוריה לבין תוכנה הממשי. ההגדרה רק מנחה באילו קבצים קבועים מראש יש להשתמש. לדוגמה עבור הקטגוריה LC_TIME שקיבלה את הערך he_IL יתקבל הפלט הבא:

    DoK@DoKsBoKs ~]$ locale -c LC_TIME
    LC_TIME
    א';ב';ג';ד';ה';ו';ש'
    ראשון;שני;שלישי;רביעי;חמישי;שישי;שבת
    ינו;פבר;מרץ;אפר;מאי;יונ;יול;אוג;ספט;אוק;נוב;דצמ
    ינואר;פברואר;מרץ;אפריל;מאי;יוני;יולי;אוגוסט;ספטמבר;אוקטובר;נובמבר;דצמבר
    
    
    
    
    0
    \uffff
    7
    19971130
    0
    1
    1
    1
    
    %a %b %e %H:%M:%S %Z %Y
    UTF-8
    
  • כדי לאחזר ערך של מילת מפתח מסויימת יש להריץ את הפקודה
    locale -k keyword

    כך לדוגמה עבור אותו מקרה שתואר לעיל תתקבל התוצאה הבאה

    DoK@DoKsBoKs ~]$ locale -k day
    day="ראשון;שני;שלישי;רביעי;חמישי;שישי;שבת"
    

הוספת locale למערכת

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

localedef -f charmapfile -i inputfile options new_locale

עבור charmapfile יש לתת את הנתיב לקובץ מפת התווים הרצוי ועבור inpufile יש לתת את הנתיב לקובץ המידע הרצוי ל-locale, אם לא צויין נתיב מפורש ל-inputfile תחפש המערכת הגדרות מתאימות גם בנתיב ברירת המחדל המוגדר על ידי משתנה הסביבה I18NPATH וגם בתיקית ברירת המחדל להגדרות locale אותה ניתן לקבל מפלט הפקודה localedef –help.
במקום options ניתן להזין אפשרויות שונות שלעת עתה לא יפורטו כאן.

הגדרת ה-locale במערכת

למדת ושיננת את כל שיש לדעת אודות משתני ה-loacle השונים ועכשיו הזמן להגדיר את המערכת לפי דרישותיך אבל… איפה?
לרוע המזל הגדרת ה-locale נמצאת במקומות שונים בהפצות שונות המשתמשות במבני קבצים שונים.
במערכות המשתמשות ב- sysconfig (לדוגמה רד-אהט, פידורה, CentOS, WhiteBox, מנדריבה וכו') ימצאו ההגדרות לכלל המערכת בנתיב etc/sysconfig/i18n/ וניתן להגדיר locale שונה לכל משתמש על ידי יצירת קובץ i18n. בתקית הבית של המשתמש ובו ערכים שיקבלו עדיפות על פני הגדרות המערכת כולה.
בדביאן ונגזרותיה השונות ככלל ההגדרות למערכת כולה ימצאו בנתיב etc/environment/ והגדרות לכל משתמש יש לכלול בתסריט הגדרת המעטפת של המשתמש כמו לדוגמה במקרה של שימוש במעטפת bash יש לכלול את הגדרות ה-locale של המשתמש בקובץ ה- bashrc. שבתקית הבית שלו (ניתן למקם את ההגדרות בקובץ profile. בתיקית הבית כדי שההגדרות יקראו על ידי כל מעטפת תואמת sh).
אחרי ביצוע השינויים יש לאתחל את המעטפת של המשתמש כדי שהם יכנסו לתוקף (במילים אחרות - יש לצאת מהמערכת ולהכנס שנית).

קישורים ומידע נוסף

http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html - אתר בו תוכלו למצוא פירוט נרחב על הגדרות POSIX ל- locale כולל המילים השמורות בכל קטגוריה, הערכים הקבילים ומידע רב נוסף.

אם נתקלתם בבעיות עם מדריך זה נא דווחו לדוא"ל

מדריכים/locale.txt · שונה לאחרונה ב: 2008/06/19 18:34 (עריכה חיצונית)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0