java locale 印尼_java国际化Locale详解

随着国际化的潮流,越来越多的APP产品开发了多个国际版本。而在网页产品中,很多就是对于网页上显示的文字内容进行了一个翻译操作,根据用户的需求翻译为不同的语言。

java提供了一个强大的Locale类可以帮助我们实现这一功能。

locale类提供了三种初始化的方法,每一个初始化的方法需要的参数个数不同。一共有三个参数:

language:这个是一个必须的参数,初始化需要使用的语言。

比如:en(英语),zh(中文), de(德语)等等。

country:国家,指定语言的国家版本。

比如:US,CA等等。

variant:个人把这个理解为类别,比如有四川话,湖南话等等,但都是中文。

public Locale(String language, String country, String variant) {

if (language== null || country == null || variant == null) {

throw new NullPointerException();

}

baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), "", country, variant);

localeExtensions = getCompatibilityExtensions(language, "", country, variant);

}

public Locale(String language, String country) {

this(language, country, "");

}

public Locale(String language) {

this(language, "", "");

}

接下来讲一讲locale的应用。

创建需要properties文件,以及对应的不同语言的版本。放在resource目录下。文件的内容

test=文件名。

简单的进行一个测试

package com.leetcode.arrayAndString;

import java.util.Locale;

import java.util.ResourceBundle;

/**

* created by Eden

*/

public class ResouceTest {

public static void main(String[] args) {

//对应获取到的文件就是test_zh

Locale locale1 = new Locale("zh");

ResourceBundle resourceBundle1 = ResourceBundle.getBundle("test", locale1);

System.out.println("locale1:" + resourceBundle1.getString("test"));

//对应获取到的文件应该是是test_de,但这个文件不存在,获取系统默认的locale初始化的文件test_en_US,因为系统的初始化环境的locale的language是en,country是US.

//该文件不存在进一步获取test_en,依旧不存在则获取test文件,都不存在则会报错。

Locale locale2 = new Locale("de");

ResourceBundle resourceBundle2 = ResourceBundle.getBundle("test", locale2);

System.out.println("locale2:"+resourceBundle2.getString("test"));

//对应获取到的文件就是test_en

Locale locale3 = new Locale("en");

ResourceBundle resourceBundle3 = ResourceBundle.getBundle("test", locale3);

System.out.println("locale3:"+resourceBundle3.getString("test"));

//对应获取到的文件就是test_de_CA_1

Locale locale4 = new Locale("de", "CA", "1");

ResourceBundle resourceBundle4 = ResourceBundle.getBundle("test", locale4);

System.out.println("locale5:"+resourceBundle4.getString("test"));

//对应获取到的文件就是test_de_CA_2

Locale locale5 = new Locale("de", "CA", "2");

ResourceBundle resourceBundle5 = ResourceBundle.getBundle("test", locale5);

System.out.println("locale5:"+resourceBundle5.getString("test"));

//对应获取到的文件就是test_en_US

Locale locale6 = new Locale("en","US");

ResourceBundle resourceBundle6 = ResourceBundle.getBundle("test", locale6);

System.out.println("locale6:"+resourceBundle6.getString("test"));

}

}

测试结果

可以根据初始化locale的语言参数(language),国家参数(country),类别参数(variant),获取不同文件里面的内容。

在实际项目中就可以根据前端用户选择的语言、国家等来初始化locale,从而实现页面的翻译。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值