سلام دوستان
بدون مقدمه می رم سر اصل مطلب.
اصلی ترین کلاس برای پیاده سازی برنامه های چند زبانی در جاوا استفاده از شی Locale است.
Locale locale = new Locale("fa");
خوب تابلوست دیگه Locale زیر مشخص کننده زبان فارسی است.
از طریق بالا شما می تونید خودتون مقدار دهی زبان رو داشته باشید ولی یک راه دیگه بدست آوردن نوع زبان از Browser وجود داره که اون رو از طریق HTTP Header با نام Accept-Language ارسال می کنه:
Locale requestedLocale = request.getLocale();
خوب اینطوری می تونید بفهمید که کاربر(Browser) از چه زبانی استفاده می کنه.
محتویات صفحاتی که می خواهید به زبانهای مختلف نشان داده شود را باید در فایل های .properties وارد نمائید.
برای ساخت فایل های .properties می بایست در محیط Neatbeans 5.5 کلید Ctrl+N را بزنید سپس کاتالوگ Other را انتخاب و سپس در قسمت File Types گزینه Properties File رو انتخاب کنید. و سپس Next و یک نام دلخواه داده مثلا fa یا en بسته به نوع زبانی که خواستار طراحی آن هستید و سپس Finish را بزنید.
خوب بریم سراغ دو Tutorial :
خوب یک پروژه درست کنید (همونی که توی اولین پست خدمتون عرض کردم)
دو تا فایل .propertiesبا نام های en , fa درست کنید (en.properties , fa.properties)
خوب اطلاعات زیر را داخلشون وارد کنید
ApplicationResources_fa.properites :
reg.name = نام
reg.family = نام خانوادگی
reg.id = کد
ApplicationResources.properties:
reg.name = name
reg.family = family
reg.id = ID code
خوب حالا هر فایل Jspی که دلتون می خواد درست کنید و سپس کد زیر را وارد کنید:
<table border="1">
<form action="GetTheseInfo.do" method="POST">
<thead>
<tr>
<th><bean:message key="reg.name"/></th>
<th><input type="text" name="name" value="" /></th>
</tr>
</thead>
<tbody>
<tr>
<td><bean:message key="reg.family"/></td>
<td><input type="text" name="family" value="" /></td>
</tr>
<tr>
<td><bean:message key="reg.id"/></td>
<td><input type="text" name="IDcode" value="" /></td>
</tr>
<tr>
<td><input type="submit" value="Send" /></td>
<td><input type="reset" value="Cancel" /></td>
</tr>
</tbody>
</form>
</table>
به اون هایی که bold شدن توجه کنید و خصیصه key رو هم در نظر بگیرید.
برای دسترسی به کلید هایی که در فایل های .properties معرفی کرده ایم می بایست از تگ bean:message استفاده کنیم و در خصیصه key نیز نام کلیدی که می خواهیم بروی صفحه نوشته شود را می آوریم.
خوب و اما چگونه زبان را تعیین کنیم ؟؟؟؟!!!
برای تعیین زبان می بایست از یک Actionاستفاده کرد.
یک Action بنام ChangeLanguageساخته و اطلاعات زیر را وارد کنید:
package com.myapp.struts;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
public class ChangeLangAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String selectedLang = "en" ;
String language = request.getParameter("lang");
if ((language != null) && language.equalsIgnoreCase("fa")) {
selectedLang = "fa";
}
Locale locale = new Locale(selectedLang);
setLocale(request, locale);
return mapping.findForward("mainPage");
}
}
وارد فایل struts-config شوید و کد زیر را در قسمت action-mappings وارد کنید
<action path="/changeLocale" type="com.myapp.struts.ChangeLangAction">
<forward name="mainPage" path="/RegistrationForm.jsp"/>
</action>
و حالا برای فرستادن دستور تغییر زبان به دو دکمه یا لینک در فایل Jsp مورد نظری که ساخته ایم نیاز دازیم.
<a href="changeLocale.do?lang=fa">Farsi</a>
<a href="changeLocale.do?lang=en">English</a>
و سپس این خط را نیز فایل struts-config اضافه کنید:
<message-resources parameter="com/myapp/struts/ApplicationResources"/>
اگر این خط وجود داشت دست بهش نزنید.
خوب تموم شد.
حالا این رو داشته باشید تا دربارش بیشتر صحبت کنیم.