検索
ホームページJava&#&チュートリアルSpringMVC学習シリーズ(8) 国際コードの詳しい紹介

シリーズ (7) では、Spring は表示をフォーマットするときにすでに国際化処理を行っています。では、Web サイトの他のコンテンツ (メニュー、タイトルなど) を国際化するにはどうすればよいでしょうか。この記事の内容→国際化です。

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介. ブラウザー要求に基づく国際化の実装:

まず、プロジェクトの springservlet-config.xml ファイルを構成し、次の内容を追加します:

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


com.demo.web.controllers パッケージに GlobalController を追加します。 Java の内容は次のとおりです。

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(SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介.SpringMVC学習シリーズ(8) 国際コードの詳しい紹介78);
            formatModel.setDate(new Date());
            
            model.addAttribute("contentModel", formatModel);
        }        return "globaltest";
    }
    
}


ここで示されているモデルは、シリーズ (7) のモデルもデモンストレーションとして使用しています。

messages.properties、messages_zh_CN.properties、messages_en_US.properties の SpringMVC学習シリーズ(8) 国際コードの詳しい紹介 つのファイルをプロジェクトのソース フォルダー リソースに追加します。このうち、messages.properties とmessages_zh_CN.properties の「money」と「date」は中国語のmessages_en_USです。プロパティ内の単語は英語です。

次の内容を含む globaltest.jsp ビューを views フォルダーに追加します:

nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(8) 国際コードの詳しい紹介C//DTD HTML SpringMVC学習シリーズ(8) 国際コードの詳しい紹介.0SpringMVC学習シリーズ(8) 国際コードの詳しい紹介 Transitional//EN" "http://www.wSpringMVC学習シリーズ(8) 国際コードの詳しい紹介.org/TR/htmlSpringMVC学習シリーズ(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>
    


テストを実行します:

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介

ブラウザーの言語順序を変更し、ページを更新します:

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介セッション インターナショナルの実装に基づいて:

次のコンテンツをプロジェクトの springservlet-config.xml ファイルに追加します (最初のメソッドで追加されたコンテンツは保持する必要があります):

<interceptors>  
    <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 --> 
    <bean></bean>  </interceptors>  <bean></bean>


globaltest.jsp ビューを次のように変更します。次の内容:

nbsp;html PUBLIC "-//WSpringMVC学習シリーズ(8) 国際コードの詳しい紹介C//DTD HTML SpringMVC学習シリーズ(8) 国際コードの詳しい紹介.0SpringMVC学習シリーズ(8) 国際コードの詳しい紹介 Transitional//EN" "http://www.wSpringMVC学習シリーズ(8) 国際コードの詳しい紹介.org/TR/htmlSpringMVC学習シリーズ(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>
    


GlobalController.java を次の内容に変更します:

package com.demo.web.controllers;import java.util.Date;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import org.springframework.context.iSpringMVC学習シリーズ(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.iSpringMVC学習シリーズ(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(SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介.SpringMVC学習シリーズ(8) 国際コードの詳しい紹介78);
            formatModel.setDate(new Date());
            
            model.addAttribute("contentModel", formatModel);
        }        return "globaltest";
    }
    
}


テストを実行します:

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介. Cookie ベースの国際化実装:

を実装するプロジェクトの SpringMVC学習シリーズ(8) 国際コードの詳しい紹介 番目のメソッド springservlet-config.xml ファイルに追加された

<bean></bean>


をコメントアウトし、次の内容を追加します:

<bean></bean>


GlobalController.java を次の内容に変更します:

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.iSpringMVC学習シリーズ(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.iSpringMVC学習シリーズ(8) 国際コードの詳しい紹介8n.CookieLocaleResolver;//import org.springframework.web.servlet.iSpringMVC学習シリーズ(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(SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介SpringMVC学習シリーズ(8) 国際コードの詳しい紹介.SpringMVC学習シリーズ(8) 国際コードの詳しい紹介78);
            formatModel.setDate(new Date());
            
            model.addAttribute("contentModel", formatModel);
        }        return "globaltest";
    }
    
}

运行测试:

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介

SpringMVC学習シリーズ(8) 国際コードの詳しい紹介

关于bean id="localeResolver" class="org.springframework.web.servlet.iSpringMVC学習シリーズ(8) 国際コードの詳しい紹介8n.CookieLocaleResolver" />SpringMVC学習シリーズ(8) 国際コードの詳しい紹介个属性的说明(可以都不设置而用其默认值):

<bean>
    <!-- 设置cookieName名称,可以根据名称通过js来修改设置,也可以像上面演示的那样修改设置,默认的名称为 类名+LOCALE(即:org.springframework.web.servlet.iSpringMVC学習シリーズ(8) 国際コードの詳しい紹介8n.CookieLocaleResolver.LOCALE-->
    <property></property>
    <!-- 设置最大有效时间,如果是-SpringMVC学習シリーズ(8) 国際コードの詳しい紹介,则不存储,浏览器关闭后即失效,默认为Integer.MAX_INT-->
    <property>
    <!-- 设置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></bean>


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

<bean></bean>


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

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


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

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


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール