.\" -*- coding: UTF-8 -*- .\" Copyright 2014, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH newlocale 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم newlocale, freelocale \- إنشاء وتعديل وتحرير كائن محلي .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP .P \fBlocale_t newlocale(int \fP\fIcategory_mask\fP\fB, const char *\fP\fIlocale\fP\fB,\fP \fB locale_t \fP\fIbase\fP\fB);\fP \fBvoid freelocale(locale_t \fP\fIlocobj\fP\fB);\fP .fi .P .RS -4 متطلبات ماكروات اختبار الميزات لـ glibc (انظر \fBfeature_test_macros\fP(7)): .RE .P \fBnewlocale\fP()، \fBfreelocale\fP(): .nf منذ glibc 2.10: _XOPEN_SOURCE >= 700 قبل glibc 2.10: _GNU_SOURCE .fi .SH الوصف تنشئ الدالة \fBnewlocale\fP() كائنًا محليًا جديدًا، أو تعدل كائنًا موجودًا، وتعيد مرجعًا إلى الكائن الجديد أو المعدل كنتيجة للدالة. يُحدد ما إذا كان الاستدعاء ينشئ كائنًا جديدًا أو يعدل كائنًا موجودًا بقيمة \fIbase\fP: .IP \[bu] 3 إذا كان \fIbase\fP هو \fI(locale_t)\ 0\fP، يُنشأ كائن جديد. .IP \[bu] إذا كان \fIbase\fP يشير إلى كائن محلي موجود صالح (أي كائن أُعيد بواسطة استدعاء سابق لـ \fBnewlocale\fP() أو \fBduplocale\fP(3))، فسيُعدل ذلك الكائن بواسطة الاستدعاء. إذا نجح الاستدعاء، تكون محتويات \fIbase\fP غير محددة (على وجه الخصوص، قد يُحرر الكائن المشار إليه بـ \fIbase\fP، ويُنشأ كائن جديد). لذلك، يجب على المستدعي التأكد من توقف استخدام \fIbase\fP قبل استدعاء \fBnewlocale\fP()، ويجب عليه لاحقًا الإشارة إلى الكائن المعدل عبر المرجع المُعاد كنتيجة للدالة. إذا فشل الاستدعاء، تظل محتويات \fIbase\fP صالحة ودون تغيير. .P إذا كان \fIbase\fP هو الكائن المحلي الخاص \fBLC_GLOBAL_LOCALE\fP (انظر \fBduplocale\fP(3))، أو لم يكن \fI(locale_t)\ 0\fP ولم يكن مقبض كائن محلي صالح، فالسلوك غير محدد. .P الوسيطة \fIcategory_mask\fP هي قناع بت يحدد فئات المحلية التي ستُضبط في كائن محلي منشأ حديثًا أو تُعدل في كائن موجود. يُنشأ القناع بواسطة OR أحادي البت للثوابت \fBLC_ADDRESS_MASK\fP و\fBLC_CTYPE_MASK\fP و\fBLC_COLLATE_MASK\fP و\fBLC_IDENTIFICATION_MASK\fP و\fBLC_MEASUREMENT_MASK\fP و\fBLC_MESSAGES_MASK\fP و\fBLC_MONETARY_MASK\fP و\fBLC_NUMERIC_MASK\fP و\fBLC_NAME_MASK\fP و\fBLC_PAPER_MASK\fP و\fBLC_TELEPHONE_MASK\fP و\fBLC_TIME_MASK\fP. بدلاً من ذلك، يمكن تحديد القناع كـ \fBLC_ALL_MASK\fP، وهو ما يعادل OR لجميع الثوابت السابقة. .P لكل فئة محددة في \fIcategory_mask\fP، ستُستخدم بيانات المحلية من \fIlocale\fP في الكائن المُعاد بواسطة \fBnewlocale\fP(). إذا كان يُنشأ كائن محلي جديد، تُؤخذ بيانات جميع الفئات غير المحددة في \fIcategory_mask\fP من المحلية المبدئية ("POSIX"). .P القيم المحددة مسبقًا التالية لـ \fIlocale\fP مُعرفة لجميع الفئات التي يمكن تحديدها في \fIcategory_mask\fP: .TP "POSIX" بيئة محلية دنيا لبرامج لغة C. .TP "C" مكافئ لـ "POSIX". .TP "" بيئة أصلية مُعرفة بالتطبيق تتوافق مع قيم متغيرات البيئة \fBLC_*\fP و\fBLANG\fP (انظر \fBlocale\fP(7)). .SS freelocale() تحرر الدالة \fBfreelocale\fP() الموارد المرتبطة بـ \fIlocobj\fP، وهو كائن محلي أُعيد سابقًا بواسطة استدعاء لـ \fBnewlocale\fP() أو \fBduplocale\fP(3). إذا كان \fIlocobj\fP هو \fBLC_GLOBAL_LOCALE\fP أو لم يكن مقبض كائن محلي صالح، فالنتائج غير محددة. .P بمجرد تحرير كائن محلي، يجب ألا يستخدمه البرنامج بعد ذلك. .SH "قيمة الإرجاع" عند النجاح، تُعيد \fBnewlocale\fP() مقبضًا يمكن استخدامه في استدعاءات \fBduplocale\fP(3) و\fBfreelocale\fP() ودوال أخرى تأخذ وسيطة \fIlocale_t\fP. عند الخطأ، تُعيد \fBnewlocale\fP() \fI(locale_t)\ 0\fP، وتضبط \fIerrno\fP للإشارة إلى الخطأ. .SH الأخطاء .TP \fBEINVAL\fP بت واحد أو أكثر في \fIcategory_mask\fP لا يتوافق مع فئة محلية صالحة. .TP \fBEINVAL\fP \fIlocale\fP هو NULL. .TP \fBENOENT\fP \fIlocale\fP ليس مؤشر سلسلة محارف يشير إلى محلية صالحة. .TP \fBENOMEM\fP ذاكرة غير كافية لإنشاء كائن محلي. .SH المعايير POSIX.1\-2008. .SH التاريخ glibc 2.3. .SH ملاحظات يجب تحرير كل كائن محلي أُنشئ بواسطة \fBnewlocale\fP() باستخدام \fBfreelocale\fP(). .SH أمثلة يقبل البرنامج التالي وسيطتين لسطر الأوامر كحد أقصى، كل منهما يُعرّف محلية. الوسيطة الأولى مطلوبة، وتُستخدم لتعيين فئة \fBLC_NUMERIC\fP في كائن محلي أُنشئ باستخدام \fBnewlocale\fP(). الوسيطة الثانية اختيارية؛ إذا وُجدت، تُستخدم لتعيين فئة \fBLC_TIME\fP للكائن المحلي. .P بعد إنشاء وتهيئة الكائن المحلي، يُطبّقه البرنامج باستخدام \fBuselocale\fP(3)، ثم يختبر تأثير تغييرات المحلية عن طريق: .IP (1) 5 عرض رقم فاصلة عائمة بجزء كسري. سيتأثر هذا المخرج بإعداد \fBLC_NUMERIC\fP. في العديد من المحليات ذات اللغات الأوروبية، يُفصل الجزء الكسري عن الجزء الصحيح باستخدام فاصلة بدلاً من نقطة. .IP (2) عرض التاريخ. سيتأثر تنسيق ولغة المخرج بإعداد \fBLC_TIME\fP. .P تُظهر جلسات الصدفة التالية بعض الأمثلة لتشغيل هذا البرنامج. .P اضبط فئة \fBLC_NUMERIC\fP على \fIfr_FR\fP (الفرنسية): .P .in +4n .EX $\fB ./a.out fr_FR\fP; 123456,789 Fri Mar 7 00:25:08 2014 .EE .in .P اضبط فئة \fBLC_NUMERIC\fP على \fIfr_FR\fP (الفرنسية)، وفئة \fBLC_TIME\fP على \fIit_IT\fP (الإيطالية): .P .in +4n .EX $\fB ./a.out fr_FR it_IT\fP; 123456,789 ven 07 mar 2014 00:26:01 CET .EE .in .P حدد إعداد \fBLC_TIME\fP كسلسلة فارغة، مما يؤدي إلى أخذ القيمة من إعدادات متغيرات البيئة (التي تحدد هنا \fImi_NZ\fP، الماوري النيوزيلندي): .P .in +4n .EX $ LC_ALL=mi_NZ ./a.out fr_FR "" 123456,789 Te Paraire, te 07 o Poutū\-te\-rangi, 2014 00:38:44 CET .EE .in .SS "مصدر البرنامج" .\" SRC BEGIN (newlocale.c) .EX #define _XOPEN_SOURCE 700 #include #include #include #include #include \& int main(int argc, char *argv[]) { char buf[100]; time_t t; size_t s; struct tm *tm; locale_t loc, nloc; \& if (argc < 2) { fprintf(stderr, "Usage: %s locale1 [locale2]\[rs]n", argv[0]); exit(EXIT_FAILURE); } \& /* Create a new locale object, taking the LC_NUMERIC settings from the locale specified in argv[1]. */ \& loc = newlocale(LC_NUMERIC_MASK, argv[1], (locale_t) 0); if (loc == (locale_t) 0) err(EXIT_FAILURE, "newlocale"); \& /* If a second command\-line argument was specified, modify the locale object to take the LC_TIME settings from the locale specified in argv[2]. We assign the result of this newlocale() call to \[aq]nloc\[aq] rather than \[aq]loc\[aq], since in some cases, we might want to preserve \[aq]loc\[aq] if this call fails. */ \& if (argc > 2) { nloc = newlocale(LC_TIME_MASK, argv[2], loc); if (nloc == (locale_t) 0) err(EXIT_FAILURE, "newlocale"); loc = nloc; } \& /* Apply the newly created locale to this thread. */ \& uselocale(loc); \& /* Test effect of LC_NUMERIC. */ \& printf("%8.3f\[rs]n", 123456.789); \& /* Test effect of LC_TIME. */ \& t = time(NULL); tm = localtime(&t); if (tm == NULL) err(EXIT_FAILURE, "time"); \& s = strftime(buf, sizeof(buf), "%c", tm); if (s == 0) err(EXIT_FAILURE, "strftime"); \& printf("%s\[rs]n", buf); \& /* Free the locale object. */ \& uselocale(LC_GLOBAL_LOCALE); /* So \[aq]loc\[aq] is no longer in use */ freelocale(loc); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "انظر أيضًا" \fBlocale\fP(1), \fBduplocale\fP(3), \fBsetlocale\fP(3), \fBuselocale\fP(3), \fBlocale\fP(5), \fBlocale\fP(7) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .