locale(7)

الاسم
locale - وصف لدعم اللغات المتعددة

موجز
#include <locale.h>

الوصف
المحلية (locale) هي مجموعة من القواعد اللغوية والثقافية. تغطي هذه القواعد جوانب مثل لغة الرسائل، ومجموعات المحارف المختلفة، والاتفاقيات المعجمية، وما إلى ذلك. يحتاج البرنامج إلى القدرة على تحديد محليته والتصرف وفقًا لذلك ليكون قابلًا للنقل عبر الثقافات المختلفة.

تُصرّح الترويسة <locale.h> عن أنواع بيانات ودوال وماكروهات مفيدة في هذه المهمة.

الدوال التي تُصرّح عنها هي setlocale(3) لضبط المحلية الحالية، وlocaleconv(3) للحصول على معلومات حول تنسيق الأرقام.

هناك فئات مختلفة لمعلومات المحلية التي قد يحتاجها البرنامج؛ وهي مُصرّح عنها كماكروهات. باستخدامها كمعامل أول للدالة setlocale(3)، يمكن ضبط إحداها على المحلية المطلوبة:

LC_ADDRESS (امتداد GNU، منذ glibc 2.2)
    يغير الإعدادات التي تصف التنسيقات (مثل العناوين البريدية) المستخدمة لوصف المواقع والعناصر المتعلقة بالجغرافيا. يمكن للتطبيقات التي تحتاج هذه المعلومات استخدام nl_langinfo(3) لاسترداد عناصر غير قياسية، مثل _NL_ADDRESS_COUNTRY_NAME (اسم البلد، بلغة المحلية) و_NL_ADDRESS_LANG_NAME (اسم اللغة، بلغة المحلية)، والتي تعيد سلاسل نصية مثل "Deutschland" و "Deutsch" (لمحليات اللغة الألمانية). (تُسرد أسماء العناصر الأخرى في <langinfo.h>.)

LC_COLLATE
    تحكم هذه الفئة قواعد المقارنة المستخدمة للفرز والتعبيرات النمطية، بما في ذلك فئات تكافؤ المحارف وعناصر المقارنة متعددة المحارف. تغير فئة المحلية هذه سلوك الدوال strcoll(3) وstrxfrm(3)، واللتان تُستخدمان لمقارنة السلاسل في الأبجدية المحلية. على سبيل المثال، يُفرز حرف s الحاد الألماني كـ "ss".

LC_CTYPE
    تحدد هذه الفئة تفسير تسلسلات البايت كمحارف (مثل المحارف الأحادية مقابل متعددة البايتات)، وتصنيفات المحارف (مثل الأبجدية أو الأرقام)، وسلوك فئات المحارف. في أنظمة glibc، تحدد هذه الفئة أيضًا قواعد نقل الحروف لـ iconv(1) وiconv(3). تغير سلوك دوال معالجة وتصنيف المحارف، مثل isupper(3) وtoupper(3)، ودوال المحارف متعددة البايتات مثل mblen(3) أو wctomb(3).

LC_IDENTIFICATION (امتداد GNU، منذ glibc 2.2)
    تغيير الإعدادات المتعلقة بالبيانات الوصفية للمحلية. يمكن للتطبيقات التي تحتاج لهذه المعلومات استخدام nl_langinfo(3) لاسترداد العناصر غير القياسية، مثل _NL_IDENTIFICATION_TITLE (عنوان مستند المحلية هذا) و_NL_IDENTIFICATION_TERRITORY (الإقليم الجغرافي الذي ينطبق عليه مستند المحلية هذا)، والتي قد تعيد سلاسل نصية مثل "English locale for the USA" و "USA". (تُسرد أسماء العناصر الأخرى في <langinfo.h>.)

LC_MONETARY
    تحدد هذه الفئة التنسيق المستخدم للقيم الرقمية المتعلقة بالعملات. يغير هذا المعلومات التي تعيدها localeconv(3)، والتي تصف الطريقة التي تُطبع بها الأرقام عادةً، مع تفاصيل مثل النقطة العشرية مقابل الفاصلة العشرية. تُستخدم هذه المعلومات داخليًا بواسطة الدالة strfmon(3).

LC_MESSAGES
    تؤثر هذه الفئة على اللغة التي تُعرض بها الرسائل وشكل الإجابة بالإيجاب أو النفي. تحتوي مكتبة GNU C على دوال gettext(3) وngettext(3) وrpmatch(3) لتسهيل استخدام هذه المعلومات. تلتزم عائلة دوال GNU gettext أيضًا بمتغير البيئة LANGUAGE (الذي يحتوي على قائمة محليات مفصولة بنقطتين رأسيين) إذا ضُبطت الفئة على محلية صالحة بخلاف "C". تؤثر هذه الفئة أيضًا على سلوك catopen(3).

LC_MEASUREMENT (امتداد GNU، منذ glibc 2.2)
    تغيير الإعدادات المتعلقة بنظام القياس في المحلية (أي النظام المتري مقابل الوحدات العرفية الأمريكية). يمكن للتطبيقات استخدام nl_langinfo(3) لاسترداد العنصر غير القياسي _NL_MEASUREMENT_MEASUREMENT، الذي يعيد مؤشرًا إلى محرف له القيمة 1 (متري) أو 2 (وحدات عرفية أمريكية).

LC_NAME (امتداد GNU، منذ glibc 2.2)
    تغيير الإعدادات التي تصف التنسيقات المستخدمة لمخاطبة الأشخاص. يمكن للتطبيقات التي تحتاج لهذه المعلومات استخدام nl_langinfo(3) لاسترداد العناصر غير القياسية، مثل _NL_NAME_NAME_MR (التحية العامة للرجال) و _NL_NAME_NAME_MS (التحية العامة للنساء)، والتي تعيد سلاسل نصية مثل "Herr" و "Frau" (لمحليات اللغة الألمانية). (تُسرد أسماء العناصر الأخرى في <langinfo.h>.)

LC_NUMERIC
    تحدد هذه الفئة قواعد التنسيق المستخدمة للقيم الرقمية غير المتعلقة بالعملات \m على سبيل المثال، فاصل الآلاف والمحرف الجذري (نقطة في معظم البلدان الناطقة بالإنجليزية، ولكنها فاصلة في العديد من المناطق الأخرى). تؤثر على دوال مثل printf(3) وscanf(3) وstrtod(3). يمكن أيضًا قراءة هذه المعلومات باستخدام الدالة localeconv(3).

LC_PAPER (امتداد GNU، منذ glibc 2.2)
    تغيير الإعدادات المتعلقة بأبعاد حجم الورق القياسي (مثل US letter مقابل A4). يمكن للتطبيقات التي تحتاج للأبعاد الحصول عليها باستخدام nl_langinfo(3) لاسترداد العنصرين غير القياسيين _NL_PAPER_WIDTH و _NL_PAPER_HEIGHT، واللذان يعيدان قيم int تحدد الأبعاد بالمليمترات.

LC_TELEPHONE (امتداد GNU، منذ glibc 2.2)
    تغيير الإعدادات التي تصف التنسيقات المستخدمة مع خدمات الهاتف. يمكن للتطبيقات التي تحتاج لهذه المعلومات استخدام nl_langinfo(3) لاسترداد العناصر غير القياسية، مثل _NL_TELEPHONE_INT_PREFIX (البادئة الدولية المستخدمة للاتصال بالأرقام في هذه المحلية)، والتي تعيد سلسلة نصية مثل "49" (لألمانيا). (تُسرد أسماء العناصر الأخرى في <langinfo.h>.)

LC_TIME
    تحكم هذه الفئة التنسيق المستخدم لقيم التاريخ والوقت. على سبيل المثال، تستخدم معظم أوروبا نظام 24 ساعة مقابل نظام 12 ساعة المستخدم في الولايات المتحدة. يؤثر ضبط هذه الفئة على سلوك دوال مثل strftime(3) وstrptime(3).

LC_ALL
    كل ما سبق.

إذا كان المعامل الثاني لـ setlocale(3) هو سلسلة فارغة، ""، للمحلية المبدئية، فإنها تُحدد باستخدام الخطوات التالية:

(1) إذا وُجد متغير بيئة LC_ALL غير فارغ، تُستخدم قيمة LC_ALL.

(2) إذا وُجد متغير بيئة بنفس اسم إحدى الفئات المذكورة أعلاه وكان غير فارغ، تُستخدم قيمته لتلك الفئة.

(3) إذا وُجد متغير بيئة LANG غير فارغ، تُستخدم قيمة LANG.

تُتاح القيم المتعلقة بالتنسيق الرقمي المحلي في struct lconv الذي تعيده دالة localeconv(3)، والتي لها التصريح التالي:

    struct lconv {

        /* معلومات رقمية (غير نقدية) */

        char *decimal_point;     /* المحرف الجذري */
        char *thousands_sep;     /* فاصل لمجموعات الأرقام يسار
                                    المحرف الجذري */
        char *grouping;     /* كل عنصر هو عدد الأرقام في
                               مجموعة؛ العناصر ذات الفهارس الأعلى
                               تكون أبعد جهة اليسار. العنصر ذو القيمة
                               CHAR_MAX يعني عدم إجراء المزيد من التجميع.
                               العنصر ذو القيمة 0 يعني استخدام العنصر
                               السابق لجميع المجموعات الأبعد جهة اليسار. */

        /* الحقول المتبقية للمعلومات النقدية */

        char *int_curr_symbol;   /* المحارف الثلاثة الأولى هي رمز عملة
                                    من ISO 4217. المحرف الرابع
                                    هو الفاصل. المحرف الخامس
                                    هو '\0'. */
        char *currency_symbol;   /* رمز العملة المحلي */
        char *mon_decimal_point; /* المحرف الجذري */
        char *mon_thousands_sep; /* مثل thousands_sep أعلاه */
        char *mon_grouping;      /* مثل grouping أعلاه */
        char *positive_sign;     /* علامة للقيم الموجبة */
        char *negative_sign;     /* علامة للقيم السالبة */
        char  int_frac_digits;   /* الأرقام الكسرية الدولية */
        char  frac_digits;       /* الأرقام الكسرية المحلية */
        char  p_cs_precedes;     /* 1 إذا سبق رمز_العملة قيمة
                                    موجبة، 0 إذا تبعها */
        char  p_sep_by_space;    /* 1 إذا فصلت مسافة
                                    رمز_العملة عن قيمة موجبة */
        char  n_cs_precedes;     /* 1 إذا سبق رمز_العملة قيمة
                                    سالبة، 0 إذا تبعها */
        char  n_sep_by_space;    /* 1 إذا فصلت مسافة
                                    رمز_العملة عن قيمة سالبة */
        /* مواضع العلامة الموجبة والسالبة:
           0 الأقواس تحيط بالكمية ورمز_العملة.
           1 سلسلة العلامة تسبق الكمية ورمز_العملة.
           2 سلسلة العلامة تلي الكمية ورمز_العملة.
           3 سلسلة العلامة تسبق رمز_العملة مباشرة.
           4 سلسلة العلامة تلي رمز_العملة مباشرة. */
        char  p_sign_posn;
        char  n_sign_posn;
    };

  امتدادات POSIX.1-2008 لواجهة برمجة تطبيقات المحلية
وضعت POSIX.1-2008 معايير لعدد من الامتدادات لواجهة برمجة تطبيقات المحلية، بناءً على التطبيقات التي ظهرت لأول مرة في glibc 2.3. صُممت هذه الامتدادات لمعالجة مشكلة أن واجهات برمجة تطبيقات المحلية التقليدية لا تتوافق جيدًا مع التطبيقات متعددة الخيوط والتطبيقات التي يجب أن تتعامل مع محليات متعددة.

تأخذ الامتدادات شكل دوال جديدة لإنشاء كائنات المحلية والتلاعب بها (newlocale(3)، وfreelocale(3)، وduplocale(3)، وuselocale(3)) ودوال مكتبية مختلفة جديدة باللاحقة "_l" (مثل toupper_l(3)) التي توسع واجهات برمجة التطبيقات التقليدية المعتمدة على المحلية (مثل toupper(3)) للسماح بتحديد كائن محلية يجب تطبيقه عند تنفيذ الدالة.

البيئة
يستخدم متغير البيئة التالي بواسطة newlocale(3) وsetlocale(3)، وبالتالي يؤثر على جميع البرامج المحلية غير المميزة:

LOCPATH
    قائمة من مسارات الأسماء، مفصولة بنقطتين رأسيين (':')، والتي يجب استخدامها للعثور على بيانات المحلية. إذا ضُبط هذا المتغير، تُستخدم فقط ملفات بيانات المحلية المجمعة الفردية من LOCPATH ومسار بيانات المحلية المبدئي للنظام؛ ولا تُستخدم أي أرشيفات محلية متاحة (انظر localedef(1)). يُبحث عن ملفات بيانات المحلية المجمعة الفردية تحت أدلة فرعية تعتمد على المحلية المستخدمة حاليًا. على سبيل المثال، عند استخدام en_GB.UTF-8 لفئة ما، يُبحث في الأدلة الفرعية التالية، بهذا الترتيب: en_GB.UTF-8، وen_GB.utf8، وen_GB، وen.UTF-8، وen.utf8، وen.

الملفات

/usr/lib/locale/locale-archive
    موقع أرشيف المحلية المبدئي المعتاد.

/usr/lib/locale
    المسار المبدئي المعتاد لملفات المحلية الفردية المجمعة.

المعايير
POSIX.1-2001.

انظر أيضًا
iconv(1)، وlocale(1)، وlocaledef(1)، وcatopen(3)، وgettext(3)، وiconv(3)، وlocaleconv(3)، وmbstowcs(3)، وnewlocale(3)، وngettext(3)، وnl_langinfo(3)، وrpmatch(3)، وsetlocale(3)، وstrcoll(3)، وstrfmon(3)، وstrftime(3)، وstrxfrm(3)، وuselocale(3)، وwcstombs(3)، وlocale(5)، وcharsets(7)، وunicode(7)، وutf-8(7)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.