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

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

Mar 03, 2017 am 11:04 AM

シリーズ (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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Gin フレームワークを使用して国際化および多言語サポート機能を実装する Gin フレームワークを使用して国際化および多言語サポート機能を実装する Jun 23, 2023 am 11:07 AM

グローバル化の進展とインターネットの普及に伴い、さまざまな人々のニーズを満たすために、ますます多くの Web サイトやアプリケーションが国際化や多言語サポート機能の実現に努め始めています。これらの機能を実現するには、開発者はいくつかの高度なテクノロジーとフレームワークを使用する必要があります。この記事では、Gin フレームワークを使用して国際化と多言語サポート機能を実装する方法を紹介します。 Gin フレームワークは、Go 言語で書かれた軽量の Web フレームワークです。効率的で使いやすく、柔軟性が高いため、多くの開発者にとって好ましいフレームワークとなっています。その上、

FastAPI フレームワークを使用して国際的な Web アプリケーションを構築する FastAPI フレームワークを使用して国際的な Web アプリケーションを構築する Sep 29, 2023 pm 03:53 PM

FastAPI フレームワークを使用して国際的な Web アプリケーションを構築します。FastAPI は、Python 型の注釈と高性能の非同期サポートを組み合わせた高性能 Python Web フレームワークで、Web アプリケーションの開発をよりシンプル、高速、信頼性の高いものにします。国際的な Web アプリケーションを構築する場合、FastAPI は、アプリケーションで複数の言語を簡単にサポートできるようにする便利なツールと概念を提供します。以下に、FastAPI フレームワークを使用してビルドする方法を紹介する具体的なコード例を示します。

SpringBootとSpringMVCの比較と差異分析 SpringBootとSpringMVCの比較と差異分析 Dec 29, 2023 am 11:02 AM

SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivo​​tal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

PHP8.0の国際化ライブラリ PHP8.0の国際化ライブラリ May 14, 2023 pm 05:51 PM

PHP8.0 の国際化ライブラリ: UnicodeCLDR および Intl 拡張 グローバリゼーションのプロセスに伴い、言語や地域を超えたアプリケーションの開発がますます一般的になりました。国際化はこの目標を達成するために重要な部分です。 PHP8.0 では、UnicodeCLDR および Intl 拡張機能が導入され、どちらも開発者により優れた国際化サポートを提供します。 UnicodeCLDRUnicodeCLDR(CommonLocaleDat

PHP を使用した多言語 Web サイトの構築: 言語の壁を取り除く PHP を使用した多言語 Web サイトの構築: 言語の壁を取り除く Feb 19, 2024 pm 07:10 PM

1. 次のフィールドを含む、多言語データ用の新しいテーブルを作成するデータベースを準備します: CREATETABLEtranslations(idINTNOTNULLAUTO_INCREMENT,localeVARCHAR(255)NOTNULL,keyVARCHAR(255)NOTNULL,valueTEXTNOTNULL,PRIMARYKEY(id)); 2. 言語切り替えメカニズムを設定します。 Web サイト上で言語スイッチャーをトップまたはサイドバーに追加して、ユーザーが好みの言語を選択できるようにします。 // 現在の言語を取得 $current_locale=isset($_GET["locale"])?$_

Webman フレームワークを使用して国際化と多言語サポートを実現するにはどうすればよいですか? Webman フレームワークを使用して国際化と多言語サポートを実現するにはどうすればよいですか? Jul 09, 2023 pm 03:51 PM

現在、インターネット技術の継続的な発展に伴い、多言語化と国際化をサポートする必要がある Web サイトやアプリケーションがますます増えています。 Web 開発では、フレームワークを使用すると、開発プロセスを大幅に簡素化できます。この記事では、Webman フレームワークを使用して国際化と多言語サポートを実現する方法を紹介し、いくつかのコード例を示します。 1. Webman フレームワークとは何ですか? Webman は、Web アプリケーション開発のための豊富な機能と使いやすいツールを提供する軽量の PHP ベースのフレームワークです。その 1 つは国際化と多元化です。

PHP 開発における多言語と国際化の問題に対処する方法 PHP 開発における多言語と国際化の問題に対処する方法 Oct 09, 2023 pm 04:24 PM

PHP 開発における多言語化と国際化の問題にどのように対処するかには、具体的なコード例が必要ですが、インターネットの発展に伴い、多言語化と国際化に対する人々の要求はますます高まっています。 PHP 開発では、多言語と国際化の問題を効果的に処理する方法が、開発者が解決する必要がある重要な課題となっています。文字エンコーディングの処理 PHP 開発では、まず文字エンコーディングが正しく処理されることを確認する必要があります。複数言語環境では、UTF-8 エンコーディングを使用することが最も一般的な選択です。 PHP ファイルの先頭に次のコードを追加できます。 header('C

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC の違いは何ですか? Dec 29, 2023 am 10:46 AM

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC は、Web アプリケーションを構築するための 2 つの非常に人気のある Java 開発フレームワークです。これらは別々に使用されることが多いですが、両者の違いは明らかです。まず、SpringBoot は Spring フレームワークの拡張版または強化版とみなすことができます。 Spring アプリケーションの初期化と構成プロセスを簡素化し、開発者を支援するように設計されています。

See all articles