Alamofire: رؤوس قبول-اللغة غير صحيحة لبعض مجموعات اللغة / المنطقة

تم إنشاؤها على ٧ أبريل ٢٠١٧  ·  3تعليقات  ·  مصدر: Alamofire/Alamofire

تقوم Alamofire بإنشاء رؤوس Accept-Language باستخدام خاصية preferredLanguages Locale ، وهي مزيج من اللغة والمنطقة.

يعمل هذا بشكل جيد مع التركيبات القياسية: en-US ، fr-FR ، fr-CA ...

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

على سبيل المثال ، خذ جهازًا تمت تهيئته بالتوليفة التالية:

  • اللغة: الفرنسية
  • المنطقة: الولايات المتحدة

أول preferredLanguages هو ثم fr-US ، وهذا لا يمثل لغة حقيقية (لا توجد نسخة محددة من اللغة الفرنسية المستخدمة في الولايات المتحدة).

وبالتالي ، فإن Accept-Language الذي تم إنشاؤه يحتوي على قيمة لن يتم التعرف عليها في كثير من الحالات. هنا قائمة الرموز الصالحة .

على جهاز فرنسي / أمريكي ، يولد Alamofire Accept-Language : fr-US;q=1.0, en-US;q=0.9
لم يتم التعرف عليها بشكل صحيح بواسطة وظيفة PHP هذه ، التي تحاول معرفة أفضل لغة متاحة. سيعود en بدلاً من fr .

على النقيض من ذلك ، يتأكد Safari iOS من إرسال Accept-Language :

على جهاز فرنسي / أمريكي ، يكون Accept-Language هو fr-fr . (هذه طريقة سريعة لمعرفة رؤوس HTTP المرسلة بواسطة المتصفح).

من الناحية المثالية ، يجب أن يولد Alamofire نفس Accept-Language مثل Safari.

  • إصدار Xcode: 8.2.1
  • إصدار iOS: iOS 10
http headers question

التعليق الأكثر فائدة

مرحبا simonliotier ،

شكرا لتقريرك المفصل هنا ... أقدر كثيرا. ما علينا جميعًا أن نضعه في الاعتبار هو أنه في حين أن حالة الاستخدام الخاصة بك لا تريد تلقي fr-US ، فإن الآخرين قد يفعلون ذلك. يمكنك دائمًا تحويل fr-US إلى fr-FR على جانب الخادم لإجراء تعيين مناسب ، لكنك لن تعرف أبدًا كيفية عكس fr-FR إلى ما يمتلكه المستخدم بالفعل الذي تم تعيينه هو fr-US .

يقوم Alamofire بتعيين Accept-Language بشكل افتراضي فقط ، لكنك مرحب بك لتجاوزه لحالة الاستخدام الخاصة بك. لا أشعر أنه سيكون من الصحيح لنا محاولة جعل لغة المستخدم أكثر عمومية.

هتافات. 🍻

ال 3 كومينتر

شكرا على التقرير! ومع ذلك ، لا يمكنني العثور على أي وثائق في RFC 7231 تنص رسميًا على هذه المجموعات. هل يمكنك توجيهنا إلى أي منها؟ بخلاف ذلك ، يبدو من المحتمل أننا سنحتاج إلى الاحتفاظ بخريطة ثابتة للمجموعات المحتملة لتوليفات مقبولة ، وهو أمر لا نرغب في القيام به على الأرجح.

لا يمكنني العثور على قائمة رسمية أيضًا. أعتقد أن Safari لديه قائمة خاصة به من المجموعات المقبولة. 😕

مرحبا simonliotier ،

شكرا لتقريرك المفصل هنا ... أقدر كثيرا. ما علينا جميعًا أن نضعه في الاعتبار هو أنه في حين أن حالة الاستخدام الخاصة بك لا تريد تلقي fr-US ، فإن الآخرين قد يفعلون ذلك. يمكنك دائمًا تحويل fr-US إلى fr-FR على جانب الخادم لإجراء تعيين مناسب ، لكنك لن تعرف أبدًا كيفية عكس fr-FR إلى ما يمتلكه المستخدم بالفعل الذي تم تعيينه هو fr-US .

يقوم Alamofire بتعيين Accept-Language بشكل افتراضي فقط ، لكنك مرحب بك لتجاوزه لحالة الاستخدام الخاصة بك. لا أشعر أنه سيكون من الصحيح لنا محاولة جعل لغة المستخدم أكثر عمومية.

هتافات. 🍻

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات