التمييز بين البلد واللغة من تلك الفروق التي يوافق عليها الجميع نظريا ثم يخالفونها في أول بيانات ثابتة. تكتب مصفوفة الاختبار بصف واحد لكل لغة، ويلحق بكل صف بلد لتبدو البيانات واقعية، فيصبح المحوران محورا واحدا بلا ضجيج.
يفصل هذا الدليل بينهما. يصف الطبقات الثلاث التي يخفيها عادة مصطلح الإعدادات المحلية، ولماذا يؤدي وسم اللغة ورمز المنطقة وظيفتين مختلفتين، وكيف تؤخذ عينتان من محورين دون التظاهر بأنهما محور واحد.
لماذا لا يمكن اشتقاق البلد واللغة أحدهما من الآخر؟
يمكن أن تكون اللغة الواحدة لغة رسمية في بلدان كثيرة، ويمكن أن يكون للبلد الواحد عدة لغات رسمية. فالاتجاهان في العلاقة تعدديان معا، ولذلك لا تحدد أي من القيمتين الأخرى.
والنتيجة على الاختبار فورية. فإذا قرنت كل لغة ببلد واحد بالضبط، صارت المصفوفة على شكل قطر: تحتوي الأزواج التي رآها أحدهم طبيعية ولا تحتوي غيرها. الأعطال المثيرة تسكن خارج ذلك القطر—اللغة نفسها تنتج تنسيقا مختلفا، والتنسيق نفسه يظهر تحت لغة أخرى.
وثمة نتيجة ثانية أدق. لأن أزواج القطر تميل إلى أن تكون مألوفة ثقافيا لمن كتب المصفوفة، فهي أيضا الأزواج التي تكون فيها افتراضات الفريق أصح ما يمكن. أي أن المصفوفة في أقوى حالاتها حيث تكون الحاجة إليها أقل.
الإعدادات المحلية ثلاث طبقات في الحقيقة
عامل الإعدادات المحلية كثلاثة قرارات تصادف أنها تشترك في كلمة واحدة.
| الطبقة | السؤال الذي تجيب عنه | المالك المعتاد |
|---|---|---|
| لغة الواجهة | بأي لغة تكتب التسميات والأزرار والرسائل؟ | المحتوى أو المنتج |
| منطقة المحتوى | قواعد أي سوق وأسعاره وعروضه هي المطبقة؟ | العمل التجاري |
| تنسيق البيانات | أي الأعراف تحكم التواريخ والأرقام والأسماء والعناوين؟ | البيانات أو الهندسة |
ويمكن ضبط كل طبقة على حدة، وفي الأنظمة الحقيقية يحدث ذلك كثيرا. فقد يتصفح القارئ بلغة، وتطبق عليه قواعد سوق يسافر فيها، ويدخل عنوانا يتبع أعراف موضع ثالث.
وما إن تنفصل الطبقات الثلاث حتى تصبح معظم عيوب الإعدادات المحلية قابلة للوصف. فالعيب حالة افترض فيها أن طبقتين تتحركان معا فلم تتحركا.
وسم اللغة ورمز المنطقة يؤديان وظيفتين مختلفتين
وسم اللغة يصف النص. يقول بأي لغة كتبت سلسلة محارف، وأحيانا يقول بأي كتابة أو لهجة. أما رمز المنطقة فيصف الأعراف التي تتبعها القيمة: كيف ترتب التواريخ، وكيف ترقم الفواصل، وكيف ينسق الاسم.
وهما ليسا قابلين للتبادل، وليس أحدهما نسخة أدق من الآخر. فالنظام الذي يخزن وسم لغة فقط قد ألقى المعلومات اللازمة لتفسير تاريخ، والنظام الذي يخزن رمز منطقة فقط قد ألقى المعلومات اللازمة لاختيار كتالوج رسائل.
وإبقاء الاثنين ليس زيادة مكررة، بل هو الحد الأدنى اللازم لوصف صفحة معروضة. والعطل الذي يجب الحذر منه هو الطريق المختصر في الاتجاه الآخر—استخدام وسم اللغة مفتاحا لتنسيق البيانات، وهو يعمل تماما حتى أول بلد يتشارك لغته مع بلد آخر.
ما الذي ينكسر حين يتبع التنسيق اللغة؟
العطل الكلاسيكي هو قيمة تحقق مقابل أعراف البلد الخطأ لأن البلدين يتشاركان لغة. لغة المستخدم مضبوطة بشكل صحيح، وقاعدة التنسيق مختارة من تلك اللغة، فترفض القيمة رغم أنها سليمة تماما للبلد الذي يعيش فيه المستخدم فعلا.
وثمة نسخ أهدأ. حقل اسم يعيد ترتيب أجزائه لأن الواجهة بلغة ما لا لأن السجل ينتمي إلى منطقة تتبع ذلك الترتيب. وحقل رقمي يقبل فاصل عشري من عرف خاطئ فيخزن قيمة تفصلها عن الصحيحة مراتب كثيرة. وتاريخ يفسر يوميا في موضع وشهريا في آخر فيصل إلى التقرير لحظة معقولة لكنها خاطئة.
ولا شيء من هذه مشاكل لغة. إنها كلها حالات اتخذ فيها قرار منطقة بمدخل لغة، والعلاج بنيوي لا مجرد جدول بحث أفضل.
كيف ينبغي أن تأخذ مصفوفة الاختبار عينة من محورين؟
خذ عينة من كل محور بشروطه الخاصة، ثم اقطع عددا صغيرا من التوليفات المختارة عمدا بدل تغطية كل خلية.
ابدأ بمحور اللغة واختر مدخلات تختلف في ما تحتاجه الواجهة: لغة يتضخم نصها كثيرا، ولغة تحتاج كتابة مختلفة، ولغة تختلف قواعد ترتيبها عن الأصل اللاتيني. ثم خذ محور المنطقة منفصلا واختر مدخلات تختلف في ما تحتاجه البيانات: منطقة لا يوجد فيها الحقل، وأخرى تكون فيها القيمة طويلة بشكل غير معتاد، وثالثة تتناقض أعرافها مع جار يتشارك لغتها.
والتقاطعات الأهم هي الخارجة عن القطر—اللغة نفسها في منطقتين، ولغتان في منطقة واحدة. هذه الخلايا الأربع تلتقط نوع العيوب الذي لا تستطيع صيغة لغة واحدة وبلد واحد التعبير عنه، وإضافتها رخيصة بمجرد تخزين المحورين منفصلين.
أما التفصيل اللغوي لكيفية تصرف الأسماء والنصوص في كل إعداد محلي فله دليل آخر يبقى مع محور اللغة، بينما محور المنطقة هو موضوع هذا الدليل.
للمطورين: دع المنطقة تقود التنسيق
خزن القيمتين، وكن صريحا في أي منهما يقود أي قرار. ينبغي أن تختار قواعد التنسيق من المنطقة، وأن تختار كتالوجات الرسائل وتخطيط النص من اللغة، ولا ينبغي استنتاج أحدهما من الآخر وقت العرض.
وأبق الإعدادين في موضعين مختلفين من إعداداتك، بأسماء تقول ما هي. فحقل باسم locale يحمل وسم لغة هو دعوة دائمة للمطور التالي كي يستخدمه كمنطقة. وحقل يحمل رمز منطقة لا ينبغي أن يوصف أبدا بأنه اللغة التي يتكلمها المستخدم.
ثم أثبت الفصل في الاختبارات. فالاختبار الذي يعرض لغة واحدة في عدة مناطق، ومنطقة واحدة بعدة لغات، يفشل بصوت عال في اللحظة التي يعيد فيها أحدهم الطريق المختصر. ويبين دليل البلدان والمناطق وصفحة بلد مثل الهند كيف توصف أعراف بلد واحد حين تحفظ بجانب بعضها، وهو مرجع أوثق من اسم لغة.
ولا ينبغي قراءة أي شيء هنا كوصف لحركة زوار حقيقية. فتوليفات اللغة والمنطقة المستخدمة أمثلة في هذا الدليل اختيارات عينات مصطنعة، وليست ملاحظات عن أي جمهور مستخدمين حقيقي، ولا تقول شيئا عن مكان عيش أي شخص أو اللغة التي يتكلمها.
كيف تختار الأزواج التي تستحق الاختبار؟
ليس بضرب كل بلد في كل لغة. فالمصفوفة الكاملة تنمو بسرعة وتتوقف عن كونها قابلة للقراءة، ومعظم خلاياها لا يختبر شيئا جديدا لأن اللغة والمنطقة فيهما على وفاق.
والأنفع أن تختار الأزواج التي يمثل كل واحد منها مفارقة مختلفة. زوج تتطابق فيه اللغة والمنطقة، وزوج تختلفان فيه اختلافا معتادا، وزوج تكون فيه اللغة هي اللغة المشتركة بين بلدان عدة، وزوج تكون فيه المنطقة الواحدة صاحبة أكثر من لغة رسمية. أربعة أزواج مختارة بهذه الطريقة تغطي ما لا تغطيه أربعون خلية منتقاة بالضرب.
واكتب بجانب كل زوج ما يفترض أن يظهر في التنسيق والترتيب وفي أسماء الأشهر وأسماء الأماكن. وعندئذ يصبح الزوج وثيقة اختبار لا مجرد سطر في جدول.
الخطوات التالية
اكتب الطبقات الثلاث لشاشة واحدة يملكها فريقك، وحدد القيمة التي تغذي كل واحدة منها. وإذا كانت طبقتان تتغذيان من القيمة نفسها فقد وجدت الطريق المختصر. وينزل دليل اختبار حقول اختيار البلد بمحور المنطقة إلى العنصر الذي يلمسه المستخدم فعلا، بينما يغطي دليل تجميعات المنطقة كيفية تعريف المناطق نفسها.