ما هو الفرق بين خصائص CurrentCulture وCurrentUICulture الخاصة بـ CultureInfo في .NET؟

StackOverflow https://stackoverflow.com/questions/329033

  •  11-07-2019
  •  | 
  •  

سؤال

في .NET يوجد CultureInfo الطبقة في System.Globalization مساحة الاسم.له خاصيتان متشابهتان كلاهما يعيدان قيم CultureInfo يكتب: CurrentCulture و CurrentUICulture.

ما الفرق بينهم؟

أي واحد يجب أن أستخدمه ومتى ولماذا؟

هل كانت مفيدة؟

المحلول

وCurrentCulture هو التمثيل. NET من لغة المستخدم الافتراضي للنظام. هذا يتحكم الرقم الافتراضي والتنسيق التاريخ وما شابه ذلك.

وCurrentUICulture يشير إلى لغة واجهة المستخدم الافتراضي، وهو وضع قدم في نظام التشغيل Windows 2000. وهذا هو في المقام الأول فيما يتعلق جزء UI التعريب / ترجمة التطبيق الخاص بك.

مهما كانت الخيارات الإقليمية تم تكوين النظام لديك سوف تكون القيم "الحالية" في التطبيق. NET الخاص بك.

وفي كثير من الأحيان كلاهما نفس الشيء. ولكن على نظام بلدي أنها ستكون مختلفة: أنا أفضل لي الأرقام والتواريخ في شكل الألمانية، وبالتالي فإن CurrentCulture سيكون الألماني، ولكن أنا أفضل أيضا كل ما عندي من التطبيقات في اللغة الإنجليزية، وبالتالي فإن CurrentUICulture هي اللغة الإنجليزية

وهناك مادة لطيفة حول هذا الموضوع: فرز كل ذلك خارج: لماذا نحن على حد سواء CurrentCulture وCurrentUICulture

نصائح أخرى

وهذا هو خدعة بسيطة يمكنني استخدامها لتذكر أي واحد لاستخدام:

(date, currency, double).tostring = CurrentCulture

resource.fr-CA.resx file = currentUICulture

اختلافات:

  1. CurrentCulture مخصص لتنسيق التواريخ والعملة CurrentUICulture يذهب مع اللغة/الترجمات.سيتم استخدامه من قبل ResourceManager للبحث عن الموارد حسب الثقافة.
  2. مساحة الاسم CurrentCulture الصف في System.Globalization بينما CurrentUICulture يأتي من System.Threading.
  3. CurrentCulture يستمر عبر طلبات مختلفة في الجلسة أثناء CurrentUICulture يجب ضبطه مع كل طلب.

التشابه:

كلاهما كذلك System.Globalization.CultureInfo الحالات.

طريقة جيدة لإحداث فرق بالإضافة إلى التوضيحات اللطيفة التي قدمها زملائك المستخدمين، وجانب مهم في تطوير تطبيقات الويب هو ما يلي:

  • CurrentCulture يمثل إعداد خادم الويب.على سبيل المثال، إذا تمت استضافة تطبيق الويب ASP.NET الخاص بك في ألمانيا، فستكون قيمة CutlureInfo.CurrentCulture على الأرجح سيكون de-DE.وهكذا الافتراضي .ToString() التنسيق ل IFormattable ستستخدم الأنواع التنسيقات الألمانية الافتراضية، أو تلك التي تم إعدادها على نظام تشغيل الخادم كإعدادات افتراضية.

  • CurrentUICulture يمكن التقاطها من وكيل المستخدم، وقد تمثل ثقافة واجهة المستخدم الخاصة بالعميل الذي يتصل بموقع الويب.على سبيل المثال، إذا قمت بتحميل موقع الويب هذا من روسيا، فسيتم تعيين إعداداتك المحلية لاستخدام اللغة الروسية، وسيرسل وكيل المستخدم إعداداتك المحلية إلى الخادم (Opera وIE يقومان بذلك تلقائيًا، ولست متأكدًا بالنسبة لمتصفح Chrome وFireFox)، CurrenUICulture سيمثل ru-RU.سيؤدي هذا إلى أن تكون أي موارد مثل السلاسل المترجمة التي تم استردادها عبر ResourceManager أو تعبيرات الترجمة في ملفات ASP.NET aspx/ascx باللغة الروسية (إذا كانت الترجمات متوفرة).

والجدير بالذكر أن CurrentUICulture يدعم عدم البلاد غات محددة مثل "أون" (ثقافات المحايدة) في حين CurrentCulture تدعم الدولة غات محددة مثل "أون-GB". ووضع CurrentCulture إلى ثقافة محايدة رمي ArgumentException.

وأفترض أن هذا يرجع صيغ مثل التمور والعملة ترتبط بقوة أكبر إلى البلد نفسه، ولكن اللغة المعروضة في كثير من الأحيان للتبادل بين الدول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top