قبل أن نبدأ، لا بد من توضيح عدة مفاهيم مهمة:
التدويل (i18n): يشير إلى أنه سيتم عرض الصفحة بترجمات مختلفة بناءً على لغة الزائر أو بلده.
التعريب (l10n): إضافة موارد إلى موقع ويب لتكييفه مع المناطق والثقافات المختلفة. مثل النسخة الهندية من الموقع.
المنطقة: هذه منطقة أو ثقافة محددة، وعادة ما تعتبر علامة لغوية وعلامة وطنية متصلة بشرطة سفلية. على سبيل المثال، يمثل "en_US" المنطقة الناطقة باللغة الإنجليزية في الولايات المتحدة.
إذا كنت ترغب في إنشاء موقع عالمي، فأنت بحاجة إلى الاهتمام بسلسلة من العناصر. سيخبرك هذا الفصل بالتفصيل كيفية التعامل مع قضايا التدويل ويعطي بعض الأمثلة لتعميق فهمك.
يمكن لحاوية JSP توفير إصدار الصفحة الصحيح بناءً على سمة الإعدادات المحلية للطلب. بعد ذلك، يتم تقديم صيغة كيفية الحصول على كائن Locale من خلال كائن الطلب:
java.util.Locale request.getLocale()
يسرد الجدول التالي الأساليب الأكثر أهمية في كائن Locale، والتي يتم استخدامها لاكتشاف المنطقة واللغة والمنطقة الخاصة بكائن الطلب. ستعرض كل هذه الطرق اسم البلد واسم اللغة في المتصفح:
رقم سري | الطريقة والوصف |
---|---|
1 | تقوم String getCountry() بإرجاع رمز البلد/المنطقة بأحرف كبيرة باللغة الإنجليزية، أو المنطقة بتنسيق ISO 3166 المكون من حرفين |
2 | تقوم String getDisplayCountry() بإرجاع اسم البلد ليتم عرضه للمستخدم |
3 | تقوم String getLanguage() بإرجاع النسخة الإنجليزية الصغيرة من رمز اللغة، أو المنطقة بتنسيق ISO 639 |
4 | تقوم String getDisplayLanguage() بإرجاع اسم اللغة ليتم عرضه للمستخدم |
5 | تقوم String getISO3Country() بإرجاع اختصار مكون من ثلاثة أحرف لاسم البلد |
6 | تقوم String getISO3Language() بإرجاع اختصار مكون من ثلاثة أحرف لاسم اللغة |
يوضح لنا هذا المثال كيفية عرض اللغة والبلد في JSP:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% //الحصول على العملاء معلومات الترجمة الطرفية Locale locale = request.getLocale(); String language = locale.getLanguage(); String Country = locale.getCountry(); %><html><head><title>Detecting اللغة</title></head><body><center><h1>اكتشاف اللغة</h1></center><p align="center"><% out.println("اللغة : " + language + " <br />"); out.println("البلد : " + البلد + "<br />");%></p></body></html>
يمكن لـ JSP استخدام لغات أوروبا الغربية لإخراج صفحة، مثل الإنجليزية والإسبانية والألمانية والفرنسية والإيطالية وما إلى ذلك. يمكن ملاحظة أنه من المهم تعيين رأس لغة المحتوى لعرض كافة الأحرف بشكل صحيح.
النقطة الثانية هي أنك تحتاج إلى استخدام كيانات أحرف HTML لعرض أحرف خاصة، على سبيل المثال، يمثل "ñ" "؟" ويمثل "¡"
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><% // تعيين الاستجابة نوع المحتوى Response.setContentType("text/html"); // تعيين رمز اللغة الإسبانية Response.setHeader("Content-Language", "es"); %><html><head><title><% out.print(title); %></title></head><body><center><h1><% out.print(title); </h1></center><div align="center"><p>En Espa?ol</p><p>?Hola Mundo!</p></div></body></html>
يمكنك استخدام فئة java.text.DateFormat وطريقتها الثابتة getDateTimeInstance() لتنسيق التواريخ والأوقات. يوضح المثال التالي كيفية تنسيق التواريخ والأوقات وفقًا لنطاق محدد:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.DateFormat,java.util.Date" %><% String title = "التواريخ المحددة للإعدادات المحلية"; // احصل على الإعدادات المحلية للعميل locale = request.getLocale(); DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( )); %><html><head><title><% out.print(title); /head><body><center><h1><% out.print(title); %></h1></center><div align="center"><p>التاريخ المحلي: <%; print(date%></p></div></body></html>
يمكن تنسيق الأرقام باستخدام فئة java.text.NumberFormat وطريقتها الثابتة getCurrencyInstance(). على سبيل المثال، الشراء والمضاعف بعملات خاصة بالمنطقة. يوضح المثال التالي كيفية تنسيق العملة وفقًا للغة محددة:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.NumberFormat,java.util.Date" %><% String title = "العملة المحلية المحددة"; // احصل على اللغة المحلية للعميل locale = request.getLocale( ); NumberFormat.getCurrencyInstance(locale); String formattedCurr = nft.format(1000000); %><html><head><title><% out.print(title); <center><h1><% out.print(title); %></h1></center><div align="center"><p>العملة المنسقة: <% out.print(formattedCurr %></p></div></body></html>
يمكنك تنسيق النسب المئوية باستخدام فئة java.text.NumberFormat وطريقتها الثابتة getPercentInstance(). يوضح لنا المثال التالي كيفية تنسيق النسبة المئوية بناءً على نطاق محدد:
<%@ page import="java.io.*,java.util.Locale" %><%@ page import="javax.servlet.*,javax.servlet.http.* "%><%@ page import= "java.text.NumberFormat,java.util.Date" %><% String title = "النسبة المئوية للإعدادات المحلية"; // احصل على الإعدادات المحلية للعميل locale = request.getLocale(); NumberFormat.getPercentInstance(locale); String formattedPerc = nft.format(0.51); %><html><head><title><% out.print(title); <center><h1><% out.print(title); %></h1></center><div align="center"><p>النسبة المئوية المنسقة: <% out.print(formattedPerc%></p></div></body></html>