التدويل في الإقلاع او التمهيد الربيع Spring Boot Internationalization

التدويل في الإقلاع او التمهيد الربيع 

Spring Boot - Internationalization

التدويل في الإقلاع او التمهيد الربيع Spring Boot - Internationalization

التدويل هو عملية تجعل تطبيقك قابلاً للتكيف مع لغات ومناطق مختلفة دون إجراء تغييرات هندسية على الكود المصدري.  في بعض الكلمات ، التدويل هو استعداد الترجمة.

 في هذا الفصل ، سنتعلم بالتفصيل حول كيفية تطبيق التدويل في برنامج Spring Boot.

الاعتماديات Dependencies

نحتاج إلى اعتماد Spring Boot Starter Web و Spring Boot Starter Thymeleaf لتطوير تطبيق ويب في Spring Boot.

Maven


   org.springframework.boot
spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf

Gradle

compile('org.springframework.boot:spring-boot-starter-web')
compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'

LocaleResolver

نحتاج إلى تحديد الإعدادات المحلية الافتراضية للتطبيق الخاص بك.  نحتاج إلى إضافة حبة LocaleResolver في تطبيق Spring Boot الخاص بنا.
@Bean
public LocaleResolver localeResolver() {
   SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
   sessionLocaleResolver.setDefaultLocale(Locale.US);
   return sessionLocaleResolver;
}

LocaleChangeInterceptor

LocaleChangeInterceptor يستخدم لتغيير الإعدادات المحلية الجديدة بناءً على قيمة معلمة اللغة المضافة إلى الطلب.
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
   LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
   localeChangeInterceptor.setParamName("language");
   return localeChangeInterceptor;
}

لتنفيذ هذا التأثير ، نحتاج إلى إضافة LocaleChangeInterceptor إلى معترض تسجيل التطبيق.  يجب على فئة التكوين توسيع فئة WebMvcConfigurerAdapter وتجاوز الأسلوب addInterceptors ().
@Override
public void addInterceptors(InterceptorRegistry registry) {
   registry.addInterceptor(localeChangeInterceptor());
}

مصادر الرسائل Messages Sources

يأخذ تطبيق Spring Boot افتراضيًا مصادر الرسائل من مجلد src / main / resources أسفل classpath.  يجب أن يكون اسم ملف رسالة الإعدادات المحلية الافتراضي هو message.properties ويجب تسمية الملفات لكل لغة باسم messages_XX.properties.  يمثل "XX" الرمز المحلي.

 يجب استخدام جميع خصائص الرسالة كقيم زوج المفاتيح.  إذا لم يتم العثور على أي خصائص على الإعدادات المحلية ، فسيستخدم التطبيق الخاصية الافتراضية من ملف messages.properties.
 سيتم عرض الرسائل الافتراضية.
welcome.text=Hi Welcome to Everyone
messages_fr.properties اللغة الفرنسية سوف
  كما هو موضح -

welcome.text=Salut Bienvenue à tous

ملاحظة - يجب حفظ الملف المصدر للرسائل بتنسيق ملف "UTF-8".

 ملف HTML
 في ملف HTML ، استخدم بناء الجملة # {key} لعرض الرسائل من ملف الخصائص.


ويرد ركامل أدناه 

Maven – pom.xml

xml version = "1.0" encoding = "UTF-8"?>
 xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   4.0.0
com.ahmedalmahallawi demo 0.0.1-SNAPSHOT jar demo Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 1.5.8.RELEASE /> UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-maven-plugin

Gradle – build.gradle

buildscript {
   ext {
      springBootVersion = '1.5.8.RELEASE'
   }
   repositories {
      mavenCentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.ahmedalmahallawi'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
   mavenCentral()
}
dependencies {
   compile('org.springframework.boot:spring-boot-starter-web')
   compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'
   testCompile('org.springframework.boot:spring-boot-starter-test')
}
فيما يلي ملف فئة تطبيق Spring Boot الرئيسي -

package com.ahmedalmahallawi.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}
The controller class file is given below −
package com.ahmedalmahallawi.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ViewController {
   @RequestMapping("/locale")
   public String locale() {
      return "locale";
   }
}
فئة التكوين لدعم التدويل

package com.ahmedalmahallawi.demo;

import java.util.Locale;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;

@Configuration
public class Internationalization extends WebMvcConfigurerAdapter {
   @Bean
   public LocaleResolver localeResolver() {
      SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
      sessionLocaleResolver.setDefaultLocale(Locale.US);
      return sessionLocaleResolver;
   }
   @Bean
   public LocaleChangeInterceptor localeChangeInterceptor() {
      LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
      localeChangeInterceptor.setParamName("language");
      return localeChangeInterceptor;
   }
   @Override
   public void addInterceptors(InterceptorRegistry registry) {
      registry.addInterceptor(localeChangeInterceptor());
   }
}

مصادر الرسائل - messages.properties كما هو موضح -
welcome.text = Hi Welcome to Everyone
مصادر الرسائل - message_fr.properties كما هو موضح -
welcome.text = Salut Bienvenue à tous
يجب وضع ملف HTML locale.html تحت دليل القوالب على classpath كما هو موضح -


   
       charset = "ISO-8859-1"/>
      </span><span class="pln" style="color: rgb(0, 0, 0);">Internationalization</span><span class="tag" style="color: rgb(0, 0, 136);">
   

th:text = "#{welcome.text}">

يمكنك إنشاء ملف JAR قابل للتنفيذ ، وتشغيل تطبيق تمهيد Spring باستخدام أوامر Maven أو Gradle التالية -

 بالنسبة إلى Maven ، استخدم الأمر التالي -
mvn clean install
بعد "BUILD SUCCESS" ، يمكنك العثور على ملف JAR ضمن الدليل الهدف.

 بالنسبة إلى Gradle ، استخدم الأمر التالي -
gradle clean build
بعد "BUILD SUCCESSFUL" ، يمكنك العثور على ملف JAR ضمن دليل build / libs.

 الآن ، قم بتشغيل ملف JAR باستخدام الأمر كما هو موضح -
java –jar  

ستجد أن التطبيق قد بدأ تشغيله على منفذ Tomcat 8080.
Started Application on Tomcat Port_8080
الآن ، اضغط على عنوان URL http: // localhost: 8080 / الإعدادات المحلية في متصفح الويب الخاص بك ويمكنك رؤية المخرجات التالية -
Output Web Browser
عنوان URL http: // localhost: 8080 / locale؟ اللغة = fr ستمنحك المخرجات كما هو موضح -
Output Web Browser Salut Bienvenue