5. Örnek 04 – Uluslararasılaştırma
Bu örnek, ilk örnekte incelenen uluslararasılaştırma konusuna geri dönmektedir.
5.1. NetBeans projesi
![]() | ![]() |
Burada şunlar bulunur:
- bir [Page1.JSP] görünümü
- iki mesaj dosyası [messages*.properties]
- hiçbir eylem yok
5.2. Proje yapılandırması
[struts.xml] dosyası şu şekildedir:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- uluslararasılaştırma -->
<constant name="struts.custom.i18n.resources" value="messages" />
<!-- varsayılan paket -->
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<action name="index">
<result type="redirectAction">
<param name="actionName">Action1</param>
<param name="namespace">/actions</param>
</result>
</action>
</package>
<!-- paket eylemleri -->
<package name="actions" namespace="/actions" extends="struts-default">
<action name="Action1">
<result name="success">/vues/Page1.JSP</result>
</action>
</package>
</struts>
- 8. satırda, uluslararasılaştırılmış mesaj dosyasının adını belirleyen bir Struts sabiti tanımlanmıştır; burada bu ad messages'tir. [messages_xx.properties] dosyaları, projenin ClassPath dizininde aranacaktır. Bu nedenle, bu dosyalar [Source Packages] ve [1] dizinlerinin kök dizinine yerleştirilmiştir.
- 21-23. satırlar: İlişkili bir sınıfı olmayan bir [Action1] eylemini tanımlar. Bu durumda, Struts'un varsayılan sınıfı kullanılır ve bu sınıfın execute yöntemi, success anahtarını döndürür. Böylece [/vues/Page1.JSP] görünümü istemciye geri gönderilecektir. Bunun, [/vues/Page1.JSP] görünümünü doğrudan çağırmakla aynı şey olmadığını anlamak önemlidir. Çünkü bir eylemin çağrılması, interceptörlerin çalışmasını tetikler; oysa bir görünümü doğrudan çağırmak bunu yapmaz. Interceptörlerden biri uluslararasılaştırmayı yönetir.
5.3. Mesaj dosyaları
messages.properties
page.texte=Ici, on met un texte fran\u00e7ais...
page.titre1=Fran\u00e7ais
page.titre2=Fran\u00e7ais
messages_en.properties
page.texte=Here, we put some english text...
page.titre1=English
page.titre2=English
Bu dosyalar üç anahtar tanımlar: page.texte, page.titre1, page.titre2. Sayfanın dili İngilizce (en) ise [messages_en.properties] dosyası kullanılacaktır. Diğer tüm diller için [messages.properties] dosyası kullanılacaktır. Bu, varsayılan mesaj dosyasıdır. Kullanılan dil şunlardan biridir:
- sunucuya gönderilen tercihlerinde belirtilen istemci tarayıcısının dili
- request_locale=xx parametresiyle istemcinin isteğinde belirtilen dil.
5.4. [Page1.JSP] görünümü
Görünüm şu şekildedir:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><s:text name="page.titre1"/></title>
</head>
<body>
<h1><s:text name="page.titre2"/></h1>
<s:text name="page.texte"/>
</body>
</html>
- 7. satır: page.titre1 anahtar mesajını görüntüler
- 10. satır: page.titre2 anahtar mesajını görüntüler
- 11. satır: page.texte anahtar mesajını görüntüler
5.5. Testler
Projeyi çalıştıralım:
![]() |
- [1]'te sayfa Fransızca olarak görüntülendi. Kullanılan tarayıcının tercih edilen dili Fransızca olduğu için [messages.properties] dosyası kullanıldı.
- [3] dosyasında sayfa İngilizce olarak görüntülendi. [messages_en.properties] dosyası kullanıldı çünkü URL ve [2] dosyalarında request_locale=en parametresi kullanılmıştı.
![]() |
[4] dosyasında, Almanca (de) bir sayfa istenmiştir. [messages_de.properties] dosyası bulunmadığından, varsayılan dosya olan [messages.properties] kullanılır [5].
[6]'te, tarayıcının tercih edilen dili olarak İngilizce ayarlanır.
![]() |
[7]'te, [Action1] eylemi dil parametreleri olmadan talep edilir. İstek, tercih edilen dili İngilizce (en) olan bir tarayıcıdan geliyor. Dolayısıyla, [8] yerine [messages_en.properties] dosyası kullanılır.
Bundan böyle, tüm projelerde tüm diller için kullanılacak tek bir [messages.properties] dosyası bulunacaktır. Bu durum, bu dosyanın anahtarlarını kullanan görünümler yazmamızı gerektirecektir. İngilizceye uluslararasılaştırma işlemi, İngilizce mesajlar için [messages_en.properties] dosyasını oluşturmakla gerçekleşecektir. Yapılması gereken başka bir değişiklik yoktur.




