


Introduction détaillée au code international dans la série d'apprentissage SpringMVC (8)
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>
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"; } }
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>
Exécutez le test :
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). 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>
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>
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"; } }
Lancer le test :
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>
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>
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"; } }
运行测试:
关于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>
四.基于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; } }
然后把实现第二种方法时在项目的springservlet-config.xml文件中添加的
<bean d au code international dans la s dapprentissage springmvc></bean>
注释掉,并添加以下内容:
<bean></bean>
“xx.xxx.xxx”是刚才添加的MyAcceptHeaderLocaleResolver 类所在的包名。
保存之后就可以在请求的URL后附上 locale=zh_CN 或 locale=en_US 如 http://www.php.cn/ 来改变语言了,具体这里不再做演示了。
国际化部分的内容到此结束。
以上就是SpringMVC学习系列(8) 之 国际化代码详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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,

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.

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 : 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

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-

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"])?$_

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 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.
