ماذا يفعل "default locale"؟

سؤال بمستوى 101 للغاية مرة أخرى. في ملف app.yml، لدي fi كإعداد اللغة الافتراضي. ولكن هل يقوم بشيء أكثر من مجرد تعيين الافتراضيات لكل شيء ولكل شخص؟

وإذا كان الأمر كذلك، فهل سيرى المستخدم كل شيء بهذه اللغة الافتراضية، الآن fi، حتى يتم تغيير السماح بلغة المستخدم؟

ولكن ماذا عن تعيين اللغة من رأس قبول اللغة؟ إذا كان لدى شخص ما en_US، فهل يتم تقديم النسخة الإنجليزية؟ وهل هذا يعني أن اللغة الافتراضية هي مجرد اقتراح وسيتم تجاوزها إذا كان Accept-Language شيئًا آخر؟

والسبب لماذا أطرح هذا السؤال هو موقعي الجديد، والذي يستهدف بشكل كبير الولايات المتحدة، ويحتاج إلى منتدى. لكنني لا أعتقد أنه يلفت الانتباه كثيرًا لدرجة أن هناك فائدة للقيام بكل العمل الذي يتطلبه بدء منتدى. لذلك كنت أفكر في حل حيث أقوم بتوجيه هؤلاء الزوار من الولايات المتحدة / العالميين إلى فئة واحدة مخصصة لهذا الغرض.

لكن منتدى الخاص بي هو باللغة الفنلندية في كل الأحوال، وإذا لم يغير Accept-Language اللغة الافتراضية، فلن ينجح ذلك.

(وجزئيًا آمل أن تعمل أداة المترجم يومًا ما :smirking_face:).

أعلم أن هذا ليس سؤال دعم حقيقي، لكنني أحاول تجنب القسم العام…

إعجاب واحد (1)

ليس هذا شيئًا أعرف الكثير عنه، ولكن في غياب أي ردود أخرى حتى الآن…

أعتقد أن إضافة اللغة الافتراضية إلى ملف app.yml الخاص بك يتجاوز أي شيء قمت بتعيينه لـ اللغة الافتراضية في إعدادات موقعك (ويزيلها أيضًا من صفحة الإعدادات). ولكن هذا سيكون الافتراضي فقط، ويمكنك السماح للأشخاص بالاختيار (أو السماح لمتصفحاتهم بالاختيار) لبديل أكثر ملاءمة لهم.

نأمل أن يكون هذا ذا صلة، إن لم يكن، يمكن أن يكون هذا مجرد دفعة مفيدة لمعرفة ما إذا كان بإمكاننا الحصول على رد أكثر معرفة. :slight_smile: :crossed_fingers:

هناك فرعان من المنطق في ApplicationController#with_resolved_locale: المستخدمون المسجلون دخولهم والمستخدمون غير المسجلين دخولهم.

المستخدمون غير المسجلين دخولهم (1) يحددون اللغة من الطلب، ثم (2) يستخدمون إعداد الموقع “اللغة الافتراضية” إذا لم يتم اكتشاف أي لغة.

الأولوية هي ?lang= في عنوان URL، ثم ملف تعريف الارتباط locale، ثم Accept-Language إذا تم تمكين كل إعداد موقع على حدة.

منطق المستخدمين المسجلين دخولهم أبسط: تفضيل المستخدم، ثم “اللغة الافتراضية” إذا كان تفضيل المستخدم محظورًا.

في جميع الحالات، إذا تم إلغاء تحميل اللغة التي تم حلها من خادم Discourse، يتم استخدام en. (هذا يحدث في الغالب أثناء اختبارات الوحدة والتكامل، على ما أذكر.)

locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)

لذا، باختصار، ما يفعله:

  • إنها اللغة للطلبات المجهولة بدون رأس Accept-Language.
    • بما في ذلك، على وجه الخصوص، عملية تسجيل الحساب.
  • إنها اللغة التي سيتم استخدامها دائمًا إذا لم تسمح للمستخدمين باختيار لغتهم الخاصة، أو إذا لم يقم المستخدم بتعيين لغة مفضلة.
3 إعجابات