GWT - Uluslararasılaştırma

GWT, bir GWT uygulamasını uluslararasılaştırmak için üç yol sağlar. Static String Internationalization'ın, projeler arasında en yaygın olarak kullanılan kullanımını göstereceğiz.

Sr.No. Teknik ve Açıklama
1

Static String Internationalization

Bu teknik en yaygın olanıdır ve çalışma zamanında çok az ek yük gerektirir; hem sabit hem de parametreleştirilmiş dizeleri çevirmek için çok verimli bir tekniktir; uygulaması en basitidir.

Statik dize uluslararasılaştırma, çevrilmiş dizeleri ve parametreleştirilmiş mesajları depolamak için standart Java özellik dosyalarını kullanır ve değerlerini almak için güçlü biçimde yazılmış Java arabirimleri oluşturulur.

2

Dynamic String Internationalization

Bu teknik çok esnektir ancak statik dizi uluslararasılaştırmadan daha yavaştır. Ana bilgisayar sayfası yerelleştirilmiş dizeleri içerir, bu nedenle, yeni bir yerel ayar eklediğimizde uygulamaların yeniden derlenmesine gerek yoktur. GWT uygulaması mevcut bir sunucu tarafı yerelleştirme sistemi ile entegre edilecekse, bu teknik kullanılacaktır.

3

Localizable Interface

Bu teknik, üç teknik arasında en güçlü olanıdır. Localizable'ı uygulamak, özel türlerin yerelleştirilmiş sürümlerini oluşturmamıza olanak tanır. Gelişmiş bir uluslararasılaştırma tekniğidir.

Bir GWT Uygulamasını Uluslararasılaştırma İş Akışı

Adım 1 - Özellikler dosyaları oluşturun

Uygulamada kullanılacak mesajları içeren özellikler dosyası oluşturun. Bir yarattıkHelloWorldMessages.properties örneğimizdeki dosyası.

enterName = Enter your name
clickMe = Click Me
applicationTitle = Application Internationalization Demonstration
greeting = Hello {0}

Yere özgü çevrilmiş değerleri içeren özellikler dosyaları oluşturun. Bir yarattıkHelloWorldMessages_de.propertiesörneğimizdeki dosyası. Bu dosya, Almanca çevirileri içermektedir. _de Almanca yerel ayarı belirtir ve biz uygulamamızda almanca dilini destekleyeceğiz.

Eclipse kullanarak özellikler dosyası oluşturuyorsanız, dosyanın kodlamasını UTF-8 olarak değiştirin. Dosyayı seçin ve ardından özellikler penceresini açmak için dosyaya sağ tıklayın. Other UTF-8. Değişikliği uygulayın ve kaydedin.

enterName = Geben Sie Ihren Namen
clickMe = Klick mich
applicationTitle = Anwendung Internationalisierung Demonstration
greeting = Hallo {0}

Adım 2 - i18n modülünü Module Descriptor XML Dosyasına ekleyin

Modül dosyasını güncelle HelloWorld.gwt.xml almanca yerel ayar desteği dahil etmek

<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
   ...
   <extend-property name = "locale" values="de" />
   ...
</module>

Adım 3 - Özellikler dosyasına eşdeğer Arayüz oluşturun

GWT'nin Mesajlar arayüzünü içselleştirme desteği içerecek şekilde genişleterek HelloWorldMessages.java arayüzü oluşturun. Özellikler dosyasındaki anahtarlarla aynı yöntem adlarını içermelidir. Yer tutucu, Dize bağımsız değişkeni ile değiştirilir.

public interface HelloWorldMessages extends Messages {
	
   @DefaultMessage("Enter your name")
   String enterName();
 
   @DefaultMessage("Click Me")
   String clickMe();
 
   @DefaultMessage("Application Internalization Demonstration")
   String applicationTitle();

   @DefaultMessage("Hello {0}")
   String greeting(String name);
}

Adım 4 - UI bileşeninde Mesaj Arayüzünü kullanın.

Nesnesini kullan HelloWorldMessages içinde HelloWorld mesajları almak için.

public class HelloWorld implements EntryPoint {
   
   /* create an object of HelloWorldMessages interface 
      using GWT.create() method */
   private HelloWorldMessages messages = 
   GWT.create(HelloWorldMessages.class);
   
   public void onModuleLoad() {
   ...
      Label titleLabel = new Label(messages.applicationTitle());
      //Add title to the application
      RootPanel.get("gwtAppTitle").add(titleLabel);
   ...
   }
}

Uluslararasılaştırma - Tam Örnek

Bu örnek, bir GWT uygulamasının Uluslararasılaştırma yeteneğini göstermek için sizi basit adımlardan geçirecektir.

GWT - Uygulama Oluştur bölümünde oluşturduğumuz GWT uygulamasını güncellemek için aşağıdaki adımları izleyin -

Adım Açıklama
1 GWT - Uygulama Oluştur bölümünde açıklandığı gibi com.tutorialspoint paketinin altında HelloWorld adıyla bir proje oluşturun .
2 Değiştir HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html ve HelloWorld.java olarak aşağıda açıklanmıştır. Geri kalan dosyaları değiştirmeden tutun.
3 Uygulanan mantığın sonucunu doğrulamak için uygulamayı derleyin ve çalıştırın.

Değiştirilmiş modül tanımlayıcısının içeriği aşağıdadır src/com.tutorialspoint/HelloWorld.gwt.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
  <!-- Inherit the core Web Toolkit stuff.                        -->
  <inherits name = 'com.google.gwt.user.User'/>

  <!-- Inherit the default GWT style sheet.                       -->
  <inherits name = 'com.google.gwt.user.theme.clean.Clean'/>

  <!-- Specify the app entry point class.                         -->
  <entry-point class = 'com.tutorialspoint.client.HelloWorld'/>
  <extend-property name = "locale" values="de" />
  <!-- Specify the paths for translatable code                    -->
  <source path = 'client'/>
  <source path = 'shared'/>

</module>

Değiştirilen Stil Sayfası dosyasının içeriği aşağıdadır war/HelloWorld.css.

body {
   text-align: center;
   font-family: verdana, sans-serif;
}

h1 {
   font-size: 2em;
   font-weight: bold;
   color: #777777;
   margin: 40px 0px 70px;
   text-align: center;
}

Aşağıda, değiştirilmiş HTML ana bilgisayar dosyasının içeriği verilmiştir war/HelloWorld.html.

<html>
   <head>
      <title>Hello World</title>
      <link rel = "stylesheet" href = "HelloWorld.css"/>
      <script language = "javascript" src = "helloworld/helloworld.nocache.js">
      </script>
   </head>
   <body>

      <h1 id = "gwtAppTitle"></h1>
      <div id = "gwtContainer"></div>

   </body>
</html>

Şimdi HelloWorldMessages.properties dosyasını oluşturun. src/com.tutorialspoint/client aşağıdaki içeriği paketleyin ve içine yerleştirin

enterName = Enter your name
clickMe = Click Me
applicationTitle = Application Internationalization Demonstration
greeting = Hello {0}

Şimdi HelloWorldMessages_de.properties dosyasını oluşturun. src/com.tutorialspoint/client aşağıdaki içeriği paketleyin ve içine yerleştirin

enterName = Geben Sie Ihren Namen
clickMe = Klick mich
applicationTitle = Anwendung Internationalisierung Demonstration
greeting = Hallo {0}

Şimdi HelloWorldMessages.java sınıfını src/com.tutorialspoint/client aşağıdaki içeriği paketleyin ve içine yerleştirin

package com.tutorialspoint.client;
import com.google.gwt.i18n.client.Messages;

public interface HelloWorldMessages extends Messages {	
   @DefaultMessage("Enter your name")
   String enterName();
 
   @DefaultMessage("Click Me")
   String clickMe();
 
   @DefaultMessage("Application Internationalization Demonstration")
   String applicationTitle();

   @DefaultMessage("Hello {0}")
   String greeting(String name);
}

Aşağıdaki Java dosyası içeriğine sahip olalım src/com.tutorialspoint/HelloWorld.java bunu kullanarak GWT Kodunun Uluslararasılaştırma yeteneğini göstereceğiz.

package com.tutorialspoint.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

public class HelloWorld implements EntryPoint {

   /* create an object of HelloWorldMessages interface 
      using GWT.create() method */
   private HelloWorldMessages messages = 
   GWT.create(HelloWorldMessages.class);
   
   public void onModuleLoad() {
      /*create UI */
      final TextBox txtName = new TextBox(); 
      txtName.setWidth("200");
      txtName.addKeyUpHandler(new KeyUpHandler() {
         @Override
         public void onKeyUp(KeyUpEvent event) {
            if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER){
               Window.alert(getGreeting(txtName.getValue()));
            }				
         }
      });
      Label lblName = new Label(messages.enterName() + ": ");

      Button buttonMessage = new Button(messages.clickMe() + "!");

      buttonMessage.addClickHandler(new ClickHandler() {			
         @Override
         public void onClick(ClickEvent event) {
            Window.alert(getGreeting(txtName.getValue()));
         }
      });

      HorizontalPanel hPanel = new HorizontalPanel();	
      hPanel.add(lblName);
      hPanel.add(txtName);      

      VerticalPanel vPanel = new VerticalPanel();
      vPanel.setSpacing(10);
      vPanel.add(hPanel);
      vPanel.add(buttonMessage);
      vPanel.setCellHorizontalAlignment(buttonMessage, 
      HasHorizontalAlignment.ALIGN_RIGHT);

      DecoratorPanel panel = new DecoratorPanel();
      panel.add(vPanel);
      Label titleLabel = new Label(messages.applicationTitle());
      //Add title to the application
      RootPanel.get("gwtAppTitle").add(titleLabel);
      // Add widgets to the root panel.
      RootPanel.get("gwtContainer").add(panel);
   }  
   
   public String getGreeting(String name){
      return messages.greeting(name + "!");
   }
}

Yapılan tüm değişikliklere hazır olduğunuzda, uygulamayı GWT - Uygulama Oluştur bölümünde yaptığımız gibi geliştirme modunda derleyip çalıştıralım . Başvurunuzda her şey yolundaysa, bu aşağıdaki sonucu verecektir -

Şimdi URL'yi locale = de.Set URL - http://127.0.0.1:8888/HelloWorld.html?gwt.codesvr=127.0.0.1:9997 içerecek şekilde güncelleyin&locale=de. Başvurunuzla ilgili her şey yolundaysa, bu aşağıdaki sonucu verecektir -