تقوم 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.
شكرا على التقرير! ومع ذلك ، لا يمكنني العثور على أي وثائق في RFC 7231 تنص رسميًا على هذه المجموعات. هل يمكنك توجيهنا إلى أي منها؟ بخلاف ذلك ، يبدو من المحتمل أننا سنحتاج إلى الاحتفاظ بخريطة ثابتة للمجموعات المحتملة لتوليفات مقبولة ، وهو أمر لا نرغب في القيام به على الأرجح.
لا يمكنني العثور على قائمة رسمية أيضًا. أعتقد أن Safari لديه قائمة خاصة به من المجموعات المقبولة. 😕
مرحبا simonliotier ،
شكرا لتقريرك المفصل هنا ... أقدر كثيرا. ما علينا جميعًا أن نضعه في الاعتبار هو أنه في حين أن حالة الاستخدام الخاصة بك لا تريد تلقي fr-US
، فإن الآخرين قد يفعلون ذلك. يمكنك دائمًا تحويل fr-US
إلى fr-FR
على جانب الخادم لإجراء تعيين مناسب ، لكنك لن تعرف أبدًا كيفية عكس fr-FR
إلى ما يمتلكه المستخدم بالفعل الذي تم تعيينه هو fr-US
.
يقوم Alamofire بتعيين Accept-Language
بشكل افتراضي فقط ، لكنك مرحب بك لتجاوزه لحالة الاستخدام الخاصة بك. لا أشعر أنه سيكون من الصحيح لنا محاولة جعل لغة المستخدم أكثر عمومية.
هتافات. 🍻
التعليق الأكثر فائدة
مرحبا simonliotier ،
شكرا لتقريرك المفصل هنا ... أقدر كثيرا. ما علينا جميعًا أن نضعه في الاعتبار هو أنه في حين أن حالة الاستخدام الخاصة بك لا تريد تلقي
fr-US
، فإن الآخرين قد يفعلون ذلك. يمكنك دائمًا تحويلfr-US
إلىfr-FR
على جانب الخادم لإجراء تعيين مناسب ، لكنك لن تعرف أبدًا كيفية عكسfr-FR
إلى ما يمتلكه المستخدم بالفعل الذي تم تعيينه هوfr-US
.يقوم Alamofire بتعيين
Accept-Language
بشكل افتراضي فقط ، لكنك مرحب بك لتجاوزه لحالة الاستخدام الخاصة بك. لا أشعر أنه سيكون من الصحيح لنا محاولة جعل لغة المستخدم أكثر عمومية.هتافات. 🍻