Maison Java javaDidacticiel Introduction détaillée au code international dans la série d'apprentissage SpringMVC (8)

Introduction détaillée au code international dans la série d'apprentissage SpringMVC (8)

Mar 03, 2017 am 11:04 AM

Dans la série (7), nous avons parlé de l'affichage formaté des données. Spring a déjà effectué un traitement d'internationalisation lors du formatage de l'affichage. Alors, comment internationaliser d'autres contenus de notre site Web (comme les menus, les titres, etc.) Qu'en est-il des produits chimiques. traitement? C’est le sujet de cet article -> l’internationalisation.

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8). Implémentation de l'internationalisation en fonction des requêtes du navigateur :

Configurez d'abord le fichier springservlet-config.xml de notre projet et ajoutez le contenu suivant :

<bean>
    <!-- 国际化信息所在的文件名 -->                     
    <property></property>   
    <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称  -->               
    <property></property>           </bean>
Copier après la connexion


Ajoutez GlobalController.java dans le package com.demo.web.controllers avec le contenu suivant :

package com.demo.web.controllers;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.support.RequestContext;import com.demo.web.models.FormatModel;

@Controller
@RequestMapping(value = "/global")public class GlobalController {
    
    @RequestMapping(value="/test", method = {RequestMethod.GET})    public String test(HttpServletRequest request,Model model){        if(!model.containsAttribute("contentModel")){            
            //从后台代码获取国际化信息
            RequestContext requestContext = new RequestContext(request);
            model.addAttribute("money", requestContext.getMessage("money"));
            model.addAttribute("date", requestContext.getMessage("date"));

            
            FormatModel formatModel=new FormatModel();

            formatModel.setMoney(Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8).Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)78);
            formatModel.setDate(new Date());
            
            model.addAttribute("contentModel", formatModel);
        }        return "globaltest";
    }
    
}
Copier après la connexion


Le modèle présenté ici utilise également la série (7) à titre de démonstration.

Ajoutez trois fichiers : messages.properties, messages_zh_CN.properties et messages_en_US.properties aux ressources du dossier source du projet. Parmi eux, "money" et "date" dans messages.properties et messages_zh_CN.properties sont. Chinois, messages_en_US.properties sont en anglais.

Ajoutez la vue globaltest.jsp dans le dossier vues avec le contenu suivant :

nbsp;html PUBLIC "-//WIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)C//DTD HTML Introduction détaillée au code international dans la série dapprentissage SpringMVC (8).0Introduction détaillée au code international dans la série dapprentissage SpringMVC (8) Transitional//EN" "http://www.wIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8).org/TR/htmlIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)/loose.dtd"><meta><title>Insert title here</title>

    下面展示的是后台获取的国际化信息:<br>
    ${money}<br>
    ${date}<br>

    下面展示的是视图中直接绑定的国际化信息:<br>
    <message></message>:<br>
    <eval></eval><br>
    <message></message>:<br>
    <eval></eval><br>
    
Copier après la connexion


Exécutez le test :

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)

Modifiez l'ordre des langues du navigateur et actualisez la page :

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8). Implémentation de l'internationalisation basée sur la session :

Ajoutez le contenu suivant au fichier springservlet-config.xml du projet (le contenu ajouté dans la première méthode doit être conservé) :

<interceptors>  
    <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 --> 
    <bean d au code international dans la s dapprentissage springmvc></bean>  </interceptors>  <bean d au code international dans la s dapprentissage springmvc></bean>
Copier après la connexion


Modifier la vue globaltest.jsp sur le contenu suivant :

nbsp;html PUBLIC "-//WIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)C//DTD HTML Introduction détaillée au code international dans la série dapprentissage SpringMVC (8).0Introduction détaillée au code international dans la série dapprentissage SpringMVC (8) Transitional//EN" "http://www.wIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8).org/TR/htmlIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)/loose.dtd"><meta><title>Insert title here</title>
    <a>中文</a> | <a>英文</a><br>

    下面展示的是后台获取的国际化信息:<br>
    ${money}<br>
    ${date}<br>

    下面展示的是视图中直接绑定的国际化信息:<br>
    <message></message>:<br>
    <eval></eval><br>
    <message></message>:<br>
    <eval></eval><br>
    
Copier après la connexion


Remplacez GlobalController.java par le contenu suivant :

package com.demo.web.controllers;import java.util.Date;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import org.springframework.context.iIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)8n.LocaleContextHolder;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.servlet.iIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)8n.SessionLocaleResolver;import org.springframework.web.servlet.support.RequestContext;import com.demo.web.models.FormatModel;

@Controller
@RequestMapping(value = "/global")public class GlobalController {
    
    @RequestMapping(value="/test", method = {RequestMethod.GET})    public String test(HttpServletRequest request,Model model, @RequestParam(value="langType", defaultValue="zh") String langType){        if(!model.containsAttribute("contentModel")){            
            if(langType.equals("zh")){
                Locale locale = new Locale("zh", "CN"); 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale); 
            }            else if(langType.equals("en")){
                Locale locale = new Locale("en", "US"); 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);
            }            else 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());            
            //从后台代码获取国际化信息
            RequestContext requestContext = new RequestContext(request);
            model.addAttribute("money", requestContext.getMessage("money"));
            model.addAttribute("date", requestContext.getMessage("date"));

            
            FormatModel formatModel=new FormatModel();

            formatModel.setMoney(Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8).Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)78);
            formatModel.setDate(new Date());
            
            model.addAttribute("contentModel", formatModel);
        }        return "globaltest";
    }
    
}
Copier après la connexion


Lancer le test :

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8). Implémentation de l'internationalisation basée sur les cookies :

Implémentez la deuxième méthode : commentez le

<bean d au code international dans la s dapprentissage springmvc></bean>
Copier après la connexion
Copier après la connexion
Copier après la connexion


ajouté dans le fichier springservlet-config.xml du projet et ajoutez le contenu suivant :

<bean d au code international dans la s dapprentissage springmvc></bean>
Copier après la connexion
Copier après la connexion
Copier après la connexion


Modifiez GlobalController.java avec le contenu suivant :

package com.demo.web.controllers;import java.util.Date;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.context.iIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)8n.LocaleContextHolder;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.servlet.iIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)8n.CookieLocaleResolver;//import org.springframework.web.servlet.iIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)8n.SessionLocaleResolver;import org.springframework.web.servlet.support.RequestContext;import com.demo.web.models.FormatModel;

@Controller
@RequestMapping(value = "/global")public class GlobalController {
    
    @RequestMapping(value="/test", method = {RequestMethod.GET})    public String test(HttpServletRequest request, HttpServletResponse response, Model model, @RequestParam(value="langType", defaultValue="zh") String langType){        if(!model.containsAttribute("contentModel")){            
            /*if(langType.equals("zh")){
                Locale locale = new Locale("zh", "CN"); 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale); 
            }
            else if(langType.equals("en")){
                Locale locale = new Locale("en", "US"); 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);
            }
            else 
                request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());*/
            
            if(langType.equals("zh")){
                Locale locale = new Locale("zh", "CN"); 
                //request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);
                (new CookieLocaleResolver()).setLocale (request, response, locale);
            }            else if(langType.equals("en")){
                Locale locale = new Locale("en", "US"); 
                //request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);
                (new CookieLocaleResolver()).setLocale (request, response, locale);
            }            else 
                //request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());
                (new CookieLocaleResolver()).setLocale (request, response, LocaleContextHolder.getLocale());            
            //从后台代码获取国际化信息
            RequestContext requestContext = new RequestContext(request);
            model.addAttribute("money", requestContext.getMessage("money"));
            model.addAttribute("date", requestContext.getMessage("date"));

            
            FormatModel formatModel=new FormatModel();

            formatModel.setMoney(Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)Introduction détaillée au code international dans la série dapprentissage SpringMVC (8).Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)78);
            formatModel.setDate(new Date());
            
            model.addAttribute("contentModel", formatModel);
        }        return "globaltest";
    }
    
}
Copier après la connexion


运行测试:

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)

Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)

关于bean id="localeResolver" class="org.springframework.web.servlet.iIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)8n.CookieLocaleResolver" />Introduction détaillée au code international dans la série dapprentissage SpringMVC (8)个属性的说明(可以都不设置而用其默认值):

<bean d au code international dans la s dapprentissage springmvc>
    <!-- 设置cookieName名称,可以根据名称通过js来修改设置,也可以像上面演示的那样修改设置,默认的名称为 类名+LOCALE(即:org.springframework.web.servlet.iIntroduction détaillée au code international dans la série dapprentissage SpringMVC (8)8n.CookieLocaleResolver.LOCALE-->
    <property></property>
    <!-- 设置最大有效时间,如果是-Introduction détaillée au code international dans la série dapprentissage SpringMVC (8),则不存储,浏览器关闭后即失效,默认为Integer.MAX_INT-->
    <property d au code international dans la s dapprentissage springmvc>
    <!-- 设置cookie可见的地址,默认是“/”即对网站所有地址都是可见的,如果设为其它地址,则只有该地址或其后的地址才可见-->
    <property></property></property></bean>
Copier après la connexion


四.基于URL请求的国际化的实现:

首先添加一个类,内容如下:

import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.DispatcherServlet;import org.springframework.web.servlet.LocaleResolver;public class MyAcceptHeaderLocaleResolver extends AcceptHeaderLocaleResolver {    private Locale myLocal;    public Locale resolveLocale(HttpServletRequest request) {        return myLocal;
    } 

    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
        myLocal = locale;
    }
  
}
Copier après la connexion


然后把实现第二种方法时在项目的springservlet-config.xml文件中添加的

<bean d au code international dans la s dapprentissage springmvc></bean>
Copier après la connexion
Copier après la connexion
Copier après la connexion


注释掉,并添加以下内容:

<bean></bean>
Copier après la connexion


“xx.xxx.xxx”是刚才添加的MyAcceptHeaderLocaleResolver 类所在的包名。

保存之后就可以在请求的URL后附上 locale=zh_CN 或 locale=en_US 如 http://www.php.cn/ 来改变语言了,具体这里不再做演示了。


国际化部分的内容到此结束。

以上就是SpringMVC学习系列(8) 之 国际化代码详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utiliser le framework Gin pour implémenter l'internationalisation et les fonctions de support multilingue Utiliser le framework Gin pour implémenter l'internationalisation et les fonctions de support multilingue Jun 23, 2023 am 11:07 AM

Avec le développement de la mondialisation et la popularité d'Internet, de plus en plus de sites Web et d'applications ont commencé à s'efforcer d'atteindre l'internationalisation et des fonctions de support multilingues pour répondre aux besoins de différents groupes de personnes. Afin de réaliser ces fonctions, les développeurs doivent utiliser des technologies et des frameworks avancés. Dans cet article, nous présenterons comment utiliser le framework Gin pour implémenter des capacités d'internationalisation et de support multilingue. Le framework Gin est un framework web léger écrit en langage Go. Il est efficace, facile à utiliser et flexible, et est devenu le framework préféré de nombreux développeurs. en plus,

Comparaison et analyse des différences entre SpringBoot et SpringMVC Comparaison et analyse des différences entre SpringBoot et SpringMVC Dec 29, 2023 am 11:02 AM

SpringBoot et SpringMVC sont tous deux des frameworks couramment utilisés dans le développement Java, mais il existe des différences évidentes entre eux. Cet article explorera les fonctionnalités et les utilisations de ces deux frameworks et comparera leurs différences. Tout d’abord, découvrons SpringBoot. SpringBoot a été développé par l'équipe Pivotal pour simplifier la création et le déploiement d'applications basées sur le framework Spring. Il fournit un moyen rapide et léger de créer des fichiers exécutables autonomes.

Créez des applications Web internationales à l'aide du framework FastAPI Créez des applications Web internationales à l'aide du framework FastAPI Sep 29, 2023 pm 03:53 PM

Utilisez le framework FastAPI pour créer des applications Web internationales FastAPI est un framework Web Python hautes performances qui combine des annotations de type Python et une prise en charge asynchrone hautes performances pour rendre le développement d'applications Web plus simple, plus rapide et plus fiable. Lors de la création d'une application Web internationale, FastAPI fournit des outils et des concepts pratiques qui permettent à l'application de prendre facilement en charge plusieurs langues. Ci-dessous, je vais donner un exemple de code spécifique pour présenter comment utiliser le framework FastAPI pour construire

Bibliothèque d'internationalisation en PHP8.0 Bibliothèque d'internationalisation en PHP8.0 May 14, 2023 pm 05:51 PM

Bibliothèque d'internationalisation en PHP8.0 : extensions UnicodeCLDR et Intl Avec le processus de mondialisation, le développement d'applications multilingues et interrégionales est devenu de plus en plus courant. L'internationalisation est un élément important pour atteindre cet objectif. Dans PHP8.0, les extensions UnicodeCLDR et Intl ont été introduites, qui offrent toutes deux aux développeurs une meilleure prise en charge de l'internationalisation. UnicodeCLDRUnicodeCLDR(CommonLocaleDat

Comment utiliser le framework Webman pour réaliser l'internationalisation et le support multilingue ? Comment utiliser le framework Webman pour réaliser l'internationalisation et le support multilingue ? Jul 09, 2023 pm 03:51 PM

De nos jours, avec le développement continu de la technologie Internet, de plus en plus de sites Web et d'applications doivent prendre en charge le multilinguisme et l'internationalisation. Dans le développement Web, l'utilisation de frameworks peut grandement simplifier le processus de développement. Cet article présentera comment utiliser le framework Webman pour réaliser l'internationalisation et la prise en charge multilingue, et fournira quelques exemples de code. 1. Qu'est-ce que le framework Webman ? Webman est un framework léger basé sur PHP qui fournit des fonctionnalités riches et des outils faciles à utiliser pour développer des applications Web. L’un d’eux est l’internationalisation et le multi-

Créer des sites Web multilingues avec PHP : éliminer les barrières linguistiques Créer des sites Web multilingues avec PHP : éliminer les barrières linguistiques Feb 19, 2024 pm 07:10 PM

1. Préparez la base de données pour créer une nouvelle table pour les données multilingues, comprenant les champs suivants : CREATETABLEtranslations(idINTNOTNULLAUTO_INCREMENT,localeVARCHAR(255)NOTNULL,keyVARCHAR(255)NOTNULL,valueTEXTNOTNULL,PRIMARYKEY(id)); sur le site Web Ajoutez un sélecteur de langue en haut ou dans la barre latérale pour permettre aux utilisateurs de sélectionner leur langue préférée. //Obtenir la langue actuelle $current_locale=isset($_GET["locale"])?$_

Comment gérer les problèmes de multilinguisme et d'internationalisation dans le développement PHP Comment gérer les problèmes de multilinguisme et d'internationalisation dans le développement PHP Oct 09, 2023 pm 04:24 PM

La manière de gérer les problèmes de multilinguisme et d'internationalisation dans le développement PHP nécessite des exemples de code spécifiques. Avec le développement d'Internet, la demande de multilinguisme et d'internationalisation est de plus en plus forte. Dans le développement PHP, la manière de gérer efficacement les problèmes de multilinguisme et d’internationalisation est devenue une tâche importante que les développeurs doivent résoudre. Gestion de l'encodage des caractères Dans le développement PHP, nous devons d'abord nous assurer que l'encodage des caractères est géré correctement. Dans les environnements multilingues, l’utilisation du codage UTF-8 est le choix le plus courant. Vous pouvez ajouter le code suivant en tête du fichier PHP : header('C

Comment utiliser le framework Hyperf pour la prise en charge de l'internationalisation Comment utiliser le framework Hyperf pour la prise en charge de l'internationalisation Oct 22, 2023 am 08:14 AM

Comment utiliser le framework Hyperf pour le support international Avec le développement rapide de la mondialisation, de nombreuses applications doivent disposer de fonctions de support multilingues pour répondre aux besoins des utilisateurs de différents pays et régions. En tant que framework léger et hautes performances, le framework Hyperf fournit des fonctions de support international et peut aider les développeurs à développer rapidement des applications multilingues. Cet article expliquera comment utiliser les fonctions d'internationalisation dans le framework Hyperf et fournira des exemples de code correspondants. 1. Configurez la prise en charge multilingue. Tout d'abord, vous devez configurer le fichier de configuration Hyperf.

See all articles