急速な国際化国際化をサポートSpringBoot

学習目標

  • どのようにすぐにプロジェクトの国際言語サポートをご覧ください。

クイックビュー

テーマ別読む:「SpringBootの説教シリーズ」

ダウンロード出典:springboot-ロケールI18N

- 男ねえ、スターやフォークを忘れないでください。 -

プロジェクト構造:

 
 

チュートリアル

まず、国際的な背景

図1に示すように、構成パラメータの国際

デフォルトのパーサ:LocaleResolver現在のセッションのデフォルトの国際言語を設定するために使用されます。

デフォルトインターセプタ:LocaleChangeInterceptor国際言語を切り替えるには指定されたパラメータ名。例えば、?lang=zh_CNそれは国際的な文書を読むことを意味しますmessages_zh_CN.properties

/**
 * 配置国际化语言
 */
@Configuration
public class LocaleConfig { /** * 默认解析器 其中locale表示默认语言 */ @Bean public LocaleResolver localeResolver() { SessionLocaleResolver localeResolver = new SessionLocaleResolver(); localeResolver.setDefaultLocale(Locale.US); return localeResolver; } /** * 默认拦截器 其中lang表示切换语言的参数名 */ @Bean public WebMvcConfigurer localeInterceptor() { return new WebMvcConfigurer() { @Override public void addInterceptors(InterceptorRegistry registry) { LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor(); localeInterceptor.setParamName("lang"); registry.addInterceptor(localeInterceptor); } }; } } 

2、国際化ファイルを追加

まず、設定ファイルapplication.yml読み込みのための国際文書の相対パスに記入しますclasspath:/static/i18n/messages_language_country.properties例えば:

spring:
  messages:
    basename: static/i18n/messages #相对路径 开头请勿添加斜杠

そして中にclasspath:/static/i18nディレクトリ、以下の国際文書を追加します。

デフォルトのファイル:messages.properties

#这里填写默认翻译,内容可以留空,但文件必须存在。

アメリカ英語:messages_en_US.properties

#这里填写英语翻译。
user.title=User Login
user.welcome=Welcome
user.username=Username
user.password=Password
user.login=Sign In

簡体字中国語:messages_zh_CN.properties

#这里填写中文翻译
user.title=用户登陆
user.welcome=欢迎
user.username=登陆用户
user.password=登陆密码
user.login=登陆

繁体字中国語:messages_zh_TW.properties

#这里填写繁体翻译
user.title=用戶登陸
user.welcome=歡迎
user.username=登陸用戶
user.password=登陸密碼
user.login=登陸

3、国際コード

ツールの静的メソッドによってMessageUtils.get("user.title")すぐに現在の国際の翻訳値を取得します。


/**
 * 国际化工具类
 */
@Component
public class MessageUtils{ private static MessageSource messageSource; public MessageUtils(MessageSource messageSource) { FastLocale.messageSource = messageSource; } /** * 获取单个国际化翻译值 */ public static String get(String msgKey) { try { return messageSource.getMessage(msgKey, null, LocaleContextHolder.getLocale()); } catch (Exception e) { return msgKey; } } 

第二に、国際的なページ

まずポンポンファイル内に導入Thymeleafし、Web単純で、その後、依存ページをth:xx="#{x.label}"翻訳に対応した国際的な値を取得します。

        <dependency>
            <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 

例えば:

<title th:text="#{user.title}">用户登陆</title> 

三、JS国際

POMファイルが最初に導入されjQueryjquery-properties-i18nそしてそう依存、および初期化後国際JS関数によってファイルに対応するコンテンツを取得することができます。

        <dependency><!--webjars版本定位器 用于省略版本号-->
            <groupId>org.webjars</groupId> <artifactId>webjars-locator-core</artifactId> </dependency> <dependency><!--jQuery前端依赖--> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.3.1</version> </dependency> <dependency><!--jQuery国际化插件--> <groupId>org.webjars.bower</groupId> <artifactId>jquery-i18n-properties</artifactId> <version>1.2.7</version> </dependency> 

たとえば:可用性を高めるために、ここで国際翻訳に現在の国際言語とのアクセスを取得する方法を提供します。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"> <head> <title th:text="#{user.title}">用户登陆</title> <script th:src="@{/webjars/jquery/jquery.min.js}"></script> <script th:src="@{/webjars/jquery-i18n-properties/jquery.i18n.properties.min.js}"></script> <script th:inline="javascript"> //获取应用路径 var ROOT = [[${#servletContext.contextPath}]]; //获取默认语言 var LANG_COUNTRY = [[${#locale.language+'_'+#locale.country}]]; //初始化i18n插件 $.i18n.properties({ path: ROOT + '/i18n/',//这里表示访问路径 name: 'messages',//文件名开头 language: LANG_COUNTRY,//文件名语言 例如en_US mode: 'both'//默认值 }); //初始化i18n函数 function i18n(msgKey) { try { return $.i18n.prop(msgKey); } catch (e) { return msgKey; } } //获取国际化翻译值 console.log(i18n('user.title')); console.log(i18n('User Login')); </script> </head> <body> <div class="logo_box"> <select id="locale"> <option value="zh_CN">中文简体</option> <option value="zh_TW">中文繁体</option> <option value="en_US">English</option> </select> <h3 th:text="#{user.welcome}">欢迎登陆</h3> <form> <div class="input_outer"> <span class="u_user"></span> <input id="username" name="username" class="text" type="text" th:placeholder="#{user.username}"> </div> <div class="input_outer"> <span class="us_uer"></span> <input id="password" name="password" class="text" type="password" th:placeholder="#{user.password}"> </div> <div class="mb2"> <a class="act-but submit" th:text="#{user.login}">登录</a> </div> </form> </div> <script th:inline="javascript"> //选中语言 $("#locale").find('option[value="' + LANG_COUNTRY + '"]').attr('selected', true); //切换语言 $("#locale").change(function () { $.get(ROOT + '/?lang=' + $("#locale").val(), function () { location.reload(); }); }); </script> </body> </html> 

設定項目をプラグインの国際化についての詳細はを参照してくださいjqueryの-性質-i18nの公式文書

第四に、言語の切り替え

多くの新規参入者の国際言語を切り替える方法がわからないフロントはインターセプタを設定されているので、一度設定され実際には非常に簡単ですLocaleChangeInterceptor、この時点で我々は唯一のすべての要求に言語パラメータを添付する必要があるがlang、もちろん、すぐにAJAXを介してスイッチにすることができます。

たとえば、次のように
デフォルトの英語:http://http://127.0.0.1:8080?lang=en_US
簡体字中国語:http://http://127.0.0.1:8080?lang=zh_CN
繁体字中国語:http://http://127.0.0.1:8080?lang=zh_TW

第五に、プロジェクトのプレゼンテーション

英語のインターフェース

 
 

中国のインターフェース

 
 

どこでも素敵なフレームワーク、および関心のより良いよりも1の効率的な統合、注意SpringBoot、Javaはプログラミングが簡単になり!



著者:yizhiwazi
リンクします。https://www.jianshu.com/p/e2eae08f3255
出典:ジェーン・ブック
著者によって予約ジェーンブックの著作権、いかなる形で再現され、承認を得るために、作者に連絡して、ソースを明記してください。

おすすめ

転載: www.cnblogs.com/weizhxa/p/11005819.html