1. تسمية ملف الموارد
شكل تسمية ملفات الموارد الدولية كما يلي:
basename_language_country.properties basename_language.properties basename.properties
عندما يكون الاسم الأساسي هو الاسم الأساسي لملف الموارد ، يجب أن تكون اللغة والبلد هي اللغة والبلد المدعوم من Java. الرموز اللغوية والبلد التي تحصل على دعم Java هي كما يلي:
locale [] standes = locale.getavailableLoCales () ؛ لـ (locale locale: standes) {system.out.println ("country:" + locale.getCountry () + "، language:" + locale.getLanguage ()) ؛ }2. التكوين واكتساب ملفات الموارد
إنشاء ملف مورد جديد. في بيئة صينية ، يجب تحويل قيمة القيمة في ملف المورد ASCII. يمكنك إدخال native2ascii بعد الجري. بالإضافة إلى ذلك ، تستخدم هذه المقالة المكون الإضافي لملف سمة Eclipse ، لذلك يتم عرضه مباشرة باللغة الصينية. تم تكوين ملف الخصائص على النحو التالي:
info_en_us.properties
اسم المستخدم = Zhangsaninfo_zh_cn.propertiesusername = Zhangsaninfo_zh.propertiesusername = li si password = lisiinfo.propertiesusername = wangwu password = wangwuemail = mailbox
بالإضافة إلى ذلك ، إذا كنت بحاجة إلى قراءة القيمة في ملف الخصائص ، فأنت بحاجة إلى تكوين الثوابت في ملف Struts-Config.xml.
<!-استخدم اسم ملف المورد ، حيث تمثل قيمة القيمة اسم ملف المورد-> <name constate = "struts.custom.i18n.resources" value = "info"> </statent>
طريقة الحصول على ملفات الموارد على الصفحة هي استخدام علامة الدعامات <s: text/> ، كما هو موضح أدناه:
<!-يحصل ملف المورد على قيمة المفتاح-> <s: text name = "username"/> <s: text name = "password"/> <s: text name = "email"/>
بالإضافة إلى ذلك ، إذا حصلت على قيمة المفتاح في النموذج ، فإن الطريقة هي كما يلي:
<!- حيث تكون قيمة المفتاح هي قيمة المفتاح في ملف المورد ، والوظيفة هي إضافة اسم تسمية إلى مربع الإدخال ، وهو نفس قيمة سمة التسمية. ومع ذلك ، في الثوابت ، لا يمكن الحصول على القيمة الرئيسية من ملف السمة. -> <s: textfield name = "login.username" key = "username"> </s: textfield>
لاحظ أيضًا أنه عند استخدام <s statter name = "struts.ui.theme" value = "simple"/> ، لا يمكن أن تحصل قيمة المفتاح في <s: textfield/> على القيمة المقابلة من ملف السمة.
تعرض الصفحة النهائية النتائج على النحو التالي:
من ملفات التكوين أعلاه ، يمكننا أن نرى مصدر قيم هذه القيم الثلاث. من هذا ، يمكننا أن نرى أن ترتيب البحث في ملف المورد هو كما يلي:
أولاً ، ابحث عن القيمة الرئيسية ذات الصلة من basename_language_country.properties. إذا لم يكن الأمر كذلك ، فابحث عن القيمة الرئيسية ذات الصلة في basename_language.properties. إذا لم يكن كذلك ، ابحث عن القيمة الرئيسية ذات الصلة في basename.properties. إذا لم يكن كذلك ، ابحث عن القيمة الرئيسية ذات الصلة. إذا لم يكن الأمر كذلك ، فسيتم عرضه كاسم.
3. استخدام العناصر النائبة في ملفات السمات
محتوى التكوين لملف الخصائص كما يلي:
اسم المستخدم = Zhang San ، {0} ، {1}
استخدم العلامة <s: param> value </s: param> لتمرير المعلمات في JSP.
<s: text name = "username"> <s: param> hello </s: param> <s: param> مرحبًا! </s: param> </s: text>
4. ملفات موارد التطبيق في العمل
لاستخدام ملفات الموارد في العمل ، تحتاج إلى ورث فئة Actionupport. تقوم فئة Actionupport بتنفيذ الواجهتين: TextProvider و LocaleProvider. يوفر TextProvider طريقة للحصول على قيمة ملف المورد GetText () ، في حين أن واجهة LocaleProvider تحتوي على طريقة واحدة فقط getLocale () للحصول على اللغة.
تعديل ملف التكوين info_zh_cn.properties:
اسم المستخدم = Zhang San ، {0} ، {1} usernameerror = لا يمكن أن يكون اسم المستخدم فارغًا! الرجاء تأكيد!في العمل ، طريقة الحصول على ملف الخصائص هي كما يلي:
this.getText ("usernameerror") ؛استخدام العناصر النائبة في العمل للعمل ، فإن الرمز هو كما يلي:
this.getText ("username" ، سلسلة جديدة [] {"Hello" ، "مرحبًا"}) ؛5. ملفات الموارد على مستوى الحزمة
يمكن للإجراء الموجود تحت هذه الحزمة والوصول الفرعي الوصول إلى ملف المورد. يقع الموضع تحت حزمة معينة ، وتنسيق التسمية هو: package_language_country.properties. حيث الحزمة هي تنسيق ثابت. حزمة ملف التكوين _zh_cn.properties كما يلي:
اسم المستخدم = اسم المستخدم ضمن نطاق الحزمة
في الإجراء أدناه الحزمة ، يمكنك استخدام GetText ("اسم المستخدم") للحصول عليها.
6. ملفات الموارد في نطاق العمل
يمكنك تحديد ملف خاصية لإجراء منفصل ، ووضعه في دليل من نفس المستوى مثل الإجراء. تنسيق الاسم هو
Actionname_language_country.properties
.
تكوين ملف الخصائص لنطاق الإجراء:
اسم المستخدم = اسم المستخدم ضمن نطاق العمل
يتم استخدام طريقة getText ("اسم المستخدم") أيضًا في الإجراء للحصول على القيمة.
7. ترتيب تحميل ملفات الموارد
لاستخدام قيمة getText (مفتاح) للعمل ، عندما يكون هناك ملفان خاصين في نطاق الإجراء ، وملفات الخصائص ضمن نطاق الحزمة وملفات الخصائص العالمية ، يكون ترتيب التحميل كما يلي:
أولاً ، ما إذا كانت القيمة الرئيسية موجودة في ملف السمة في الإجراء المحدد. إذا كانت موجودة ، فسيتم أخذ القيمة. إذا لم يكن موجودًا ، فابحث عما إذا كان ملف سمة نطاق الحزمة مع قيمة المفتاح المحددة موجودة في حزمة المستوى العلوي من الإجراء الحالي. إذا لم يكن موجودًا ، فاستمر في البحث في حزمة المستوى السابق. إذا لم يتم العثور عليها ، فابحث عن ما إذا كانت القيمة الرئيسية المحددة موجودة في ملف السمة العالمي. في حالة وجود قيمة المفتاح المحددة ، يتم أخذ القيمة المقابلة لقيمة المفتاح. إذا لم يكن موجودًا ، فإن الافتراضي هو القيمة الرئيسية.
بالإضافة إلى ذلك ، عندما يكون هناك العديد من ملفات الموارد في ملف السمة العالمي ، تحتاج إلى البحث بترتيب basename_language_country و basename_language و basename.
8. احصل على ملفات الموارد على الصفحة
(1) استخدم <s: i18n/> للوصول إلى ملف مورد.
الرمز كما يلي:
<!-استخدم علامة i18n للحصول على ملف السمة-> <!-احصل على ملف المورد في نطاق الحزمة-> <s: i18n name = "com/struts/package"> <s: text name = "username"> </s: text> </s: i18n> <! <s: text name = "username"> </s: text> </s: i18n>
(2) استخدام <fmt/>
يتضمن JSTL علامات التدويل والتنسيق. يتيح استخدام علامات التدويل لصفحة JSP إخراج تعبيرات صفحة بلغات مختلفة وفقًا للمنطقة التي يوجد بها الزائر. هنا تحتاج إلى استخدام Maven لإضافة حزم جرة التبعية. ملف التكوين كما يلي:
<!-تقديم مكتبة علامات JSTL-> <reperency> <roupiD> jstl </rougeid> <StifactId> jstl </suntifactid> <الإصدار> 1.2 </version> </dependency>
استخدم علامة FMT في صفحة JSP ، ورمز التطبيق كما يلي:
<!-باستخدام علامة JSTL FMT-> <!-سيقوم إعداد الموقع بالكتابة فوق الشكاوى التي يتم تمريرها بواسطة العميل-> <fmt: setlocale value = "zh_cn" scope = "request"/> <!-تحميل مجموعة موارد وحفظها في المتغير EL. الاسم الأساسي هو الاسم الأساسي. إذا كان ذلك في نطاق الحزمة ، فهو com.struts.package ، وتحت نطاق الإجراء ، هو com.struts.service.loginservice-> <fmt: setBundle basename = "info" scope = request "var =" basename "/> <fmt: param value = "hello"/> <fmt: param value = "مرحبًا"/> </fmt: message> <br/> <!-fmt: bundle قم بتعيين مجموعة مورد يمكن الوصول إليها فقط في جسم العلامات-> <! </fmt: bundle> <!-ملف المورد في نطاق الإجراء-> <fmt: bundle basename = "com.struts.service.loginservice"> <fmt: message key = "username"/> </fmt: backdle>