كيفية الوصول إلى قيمة "اللغة المحلية" (لتطبيق التدويل) في جانب الخادم في GWT؟
سؤال
حسنًا، أنا أعمل على تطوير تطبيق يدعم التدويل.انا استخدم Static String Internationalization
طريقة لتطبيقي .
دعنا أقول يمكن أن يحتوي تطبيقي على نسخة باللغة الإنجليزية والألمانية ، لذلك -لقد قمت بإنشائها MyMessages.java
الذي يحتوي على جميع نصوص الرسائل مكتوبة باللغة الإنجليزية.ثم قمت بإنشاء MyMessages_ge
وهو تقريبا نفس MyMessages.java
باستثناء أن النص مكتوب باللغة الألمانية
-الثاني، في MyProject.html
أملك <meta http-equiv="content-type" content="text/html; charset=UTF-8">
للتأكد من أنه سيدعم جميع اللغات
- الثالثة، في MyProject.gwt.xml
أملك <extend-property name="locale" values="ge"/>
الآن أقوم بتشغيل تطبيقي في Eclipse http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge
ويظهر كل النص الألماني كما كنت أتوقع.
ومع ذلك، أريد أن أعرف أن تطبيقي ألماني At Server Side
.وهذا يعني أنه عندما يكون GWT Gui الخاص بي في النسخة الألمانية، فسيعرف الخادم الخاص بي ذلك languageCode=1
إذا كان باللغة الإنجليزية، فسيستخدم الخادم اللغة الافتراضية languageCode=0
وهنا ما فعلته.في HeaderPresenter.java
@Override
public void prepareFromRequest(PlaceRequest request){
super.prepareFromRequest(request);
String locale=request.getParameter("locale", "");
setLanguage(locale); // servercall back here
}
لذا، عند تشغيل تطبيقي لأول مرة، يجب أن يسمح للخادم بمعرفة اللغة التي يستخدمها تطبيق Gwt
@Override
public SetLanguageResult execute(SetLanguage action, ExecutionContext context)
throws ActionException {
String locale=action.getLocale();
if("ge".equals(locale)){
Data.languageType=1;
}
return null;
}
ومع ذلك ، لا يبدو العمل عندما أذهب إلى طلب order ، سيكون عنوان URL http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge#!orderPage
ليس في الشكل http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997#!orderPage;locale=ge
ولهذا السبب لم يتمكن الخادم من التقاط ملف locale
قيمة.
أعتقد أنني أساءت فهم شيء ما هنا.أنا مربكة جدا.
إذًا كيف يمكن الوصول إلى قيمة "الإعدادات المحلية" (لتطبيق التدويل) في جانب الخادم في GWT؟
المحلول
توجد فئة فائدة للتعامل مع المعلومات المحلية في GWT SDK.لا حاجة لتحليل معلمات URL بنفسك.القي نظرة على LocaleInfo.getCurrentLocale() ثم استخدم getLocaleName() طريقة للحصول على الكود الفعلي كسلسلة.
لم أفهم تمامًا كيفية تخزين المعلومات المحلية على جانب الخادم؟مع الأخذ في الاعتبار أن servlets مشتركة بين المستخدمين، يجب عليك إرفاق الملف المحلي بالجلسة أو تمريره مع كل مكالمة.