四、JAVA常用类库之程序国际化Locale

玩转 Java 国际化:进击的Locale! Locale使用场景示例技术/类说明国际化文本通过不同 Locale 加载不同语言资源格式化显示本地化的日期、时间、数字、货币多语言 UI根据 Locale 显示不同文本内容排序与比较Collator根据语言规则进行字符串排序与匹配默认偏好设置决定默认显示语言和格式。 阅读详情

1.使用场景:

一份代码,实现不同语言的显示。

代码示例:

1.新建properties资源文件:(key-value)

       info_en_US.properties(info前缀,en_US代表外语)

system.name = Employee Manager System
input.username = please input username
input.password = please input password
login.success = Login Success!
login.error = Login error!

      info_zh_CN.properties(info前缀,zh_CN代表汉语)

system.name=\u5458\u5DE5\u7BA1\u7406\u7CFB\u7EDF\uFF1A
input.username=\u8BF7\u8F93\u5165\u7528\u6237\u540D\uFF1A
input.password=\u8BF7\u8F93\u5165\u5BC6\u7801\uFF1A
login.success=\u767B\u5F55\u6210\u529F\uFF01
login.error=\u767B\u5F55\u5931\u8D25\uFF01

注意:上面只是一种编码方式,并不是乱码。

I18NDemo.java主函数:

import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Scanner;

public class I18NDemo {

	public static void main(String[] args) {
		
		//创建一个本地语言环境对象,该对象会根据参数设置来自动选择与之相关的语言环境
		//参数: 语言,地区
		//汉语
		Locale locale_CN = new Locale("ch","CN");
		//英语
		Locale locale_US = new Locale("en","US");
		//获取当前系统默认语言环境  也就是汉语
		Locale locale_default = Locale.getDefault();
		
		Scanner scanner = new Scanner(System.in);
		
		//用于绑定属性的工具类(参数:属性文件的基本名(就是前缀,比如前缀,info))      //默认获取系统语言
		//ResourceBundle r = ResourceBundle.getBundle("com.lemon.info");//默认用汉语
		ResourceBundle r = ResourceBundle.getBundle("com.lemon.info",locale_US);//用英语
		System.out.println(r.getString("system.name"));
	    System.out.println(r.getString("input.username"));
	    String username = scanner.nextLine();
	    System.out.println(r.getString("input.password"));
	    String password = scanner.nextLine();
	    if(username.equals("admin") && password.equals("123456")) {
	    	System.out.println(r.getString("login.success"));
	    }else {
	    	System.out.println(r.getString("login.error"));
	    }
		
		
	}

}

注意包名:

运行结果:

其他语种,可以在浏览器中查看:

2.动态文本格式化

在上面的基础上:

主函数:

import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Scanner;

public class I18NDemo {

	public static void main(String[] args) {
		
		//创建一个本地语言环境对象,该对象会根据参数设置来自动选择与之相关的语言环境
		//参数: 语言,地区
		//汉语
		Locale locale_CN = new Locale("ch","CN");
		//英语
		Locale locale_US = new Locale("en","US");
		//获取当前系统默认语言环境  也就是汉语
		Locale locale_default = Locale.getDefault();
		
		Scanner scanner = new Scanner(System.in);
		
		//用于绑定属性的工具类(参数:属性文件的基本名(就是前缀,比如前缀,info))      //默认获取系统语言
		ResourceBundle r = ResourceBundle.getBundle("com.lemon.info");
		//ResourceBundle r = ResourceBundle.getBundle("com.lemon.info",locale_US);//用英语
		System.out.println(r.getString("system.name"));
	    System.out.println(r.getString("input.username"));
	    String username = scanner.nextLine();
	    System.out.println(r.getString("input.password"));
	    String password = scanner.nextLine();
	    if(username.equals("admin") && password.equals("123456")) {
	    	System.out.println(r.getString("login.success"));
	    	//动态文本实现
	    	String welcome = r.getString("welcome");
	    	//动态文本格式化
	    	welcome = MessageFormat.format(welcome, username);
	    	System.out.println(welcome);
	    	//可以实现多个
	    	String welcome2 = r.getString("welcome2");
	    	//动态文本格式化
	    	welcome2 = MessageFormat.format(welcome2, username,password);
	    	System.out.println(welcome2);
	    	
	    }else {
	    	System.out.println(r.getString("login.error"));
	    }
		
		
	}

}

运行结果:

 

 

 

 

 

咱们继续学Java——高级篇 第九十九篇:之Java国际化(Locale对象与基础概念) 大家好!在我们之前的Java学习中,主要关注的是程序的功能实现和性能优化等方面。然而,在当今全球化的时代,开发能够适应不同地区和语言环境的国际化软件变得越来越重要。今天,我们将开启Java国际化的学习之旅,首先从Locale对象这个基础但关键的概念入手。我希望通过这篇博客,用通俗易懂的语言为大家详细讲解Locale对象的作用、组成部分以及如何在Java程序中使用它来处理不同地区的语言和格式差异。这将为我们后续学习更复杂的国际化功能,如数字、日期时间、消息的本地化等奠定坚实的基础。我会结合实际代码示例,让大家 阅读详情

相关推荐

Java国际化i18n实战:ResourceBundle与Locale深层原理

Java国际化(i18n)本质是运行时环境协商机制,而非简单的字符串替换。其核心依托Locale作为JVM级上下文标识符,驱动日期格式、数字分隔、货币符号及排序规则;ResourceBundle则基于候选Locale匹配、类加载器绑定与缓存策略实现动态资源加载。该机制深刻影响Spring Boot多语言支持、REST API本地化响应、跨时区时间格式化等关键场景。理解Locale.getDefault()的三重来源(JVM参数/系统属性/OS设置)、ResourceBundle的层级继承逻辑(zh_CN →

weixin_33924770的博客 691

java locale.us_JAVA实现国际化

## 1 Java国际化的思路Java程序的国际化的思路是将程序中的标签、提示等信息放在资源文件中,程序需要支持哪些国家、语言环境,就对应提供相应的资源文件。资源文件是key-value对,每个资源文件中的key是不变的,但value则随不同国家、语言改变。Java程序的国际化主要通过如下三个类完成:Ø java.util.ResourceBundle:用于加载一个国家、语言资源包。Resourc...

weixin_36422707的博客 2334

Java Locale深度解析:从国际化原理到实战避坑指南

国际化(i18n)与本地化(l10n)是现代软件开发中的核心概念,它们使应用能够适配不同地域用户的语言、格式习惯。其底层原理依赖于区域设置(Locale)机制,它定义了数字、日期、货币等数据的显示规则。在Java生态中,Locale类的技术价值在于为格式化操作提供了标准化接口,并与ResourceBundle等组件协同实现多语言资源管理。典型应用场景包括全球电商平台的货币结算、多语言内容管理系统以及跨时区协作工具。本文将聚焦Locale.getDefault()方法,解析其从操作系统环境到JVM参数的来源机

weixin_33725807的博客 432

Locale.US

Integer.parseInt(String) 以前有bug,Integer.parseInt(“アラビア数字“) 是不能正确的识别的。现在修正了。String.format(Locale.US, “%02d”, 数字) 如果不指定的的话,显示会交给lib内部,但是内部是怎样的并不知道,于是,为了app的统一,全部Locale指定!如果多语言对应的话,基本上显示的时候需要用Locale.get

工作生活的memo 3162

Cobalt Strike4.0安装包(内附中文版)

1.什么是 Cobalt Strike Cobalt Strike 是一个为对手模拟和红队行动而设计的平台,主要用于执行有目标的攻击和模拟高级威胁 者的后渗透行动。 Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、W...

梦之序章的博客 2万+

西门子1500T系列凸轮同步(CAMIN指令用法)

添加凸轮工艺对象(TO_CAM),也就是凸轮表。开始编程,先写2个轴的使能、回原点与主轴的定位。监控主轴与从轴的位置、速度关系是否满足实验要求。1.添加工艺对象(1个定位轴,1个同步轴)调用CAMIN指令 ,凸轮耦合。主轴为旋转轴且为模数轴。3.调用插补凸轮盘指令。4.仿真、监控、调试。

gyxgyx789的博客 1万+

java locale.us_JAVA 时间"dd/MMM/yyyy:HH:mm:ss Z", Locale.US

工作遇到时间格式转换问题,就是在日志分析时,需要将格式“15/Oct/2009:14:00:00 +0800”转为格式“2009-10-15 14:00:00”,找了好久没有找到合适的,终于在友人的帮助下解决了:String viewtime = "15/Oct/2009:14:00:00 +0800";Date time = new Date();//Z对于格式化来说,使用 RFC 822...

weixin_39753397的博客 1058

【原理图PCB专题】Allegro模块化移动器件报...has the LOCKED property怎么解锁?

正常来说做好一个模块化,如果不需要再动,最好还是lock,防止不明白的工程师异动导致问题。如果复用布局设计时,因为有些器件和拓扑并不完全一致,那需要调整部分器件,被锁之后只能全选,无法修改。所以解开锁定后,就能正常编辑了。

一点硬件 2392

Java基础——Local和国际化

Local和国际化Local和国际化是什么?Local中的静态函数构建Local显示名字数字格式化货币格式化百分比格式化时间日期格式化使用DateTimeFormatter.ofLocalizedDate格式化LocalDate使用DateTimeFormatter.ofLocalizedTime格式化LocalTime使用DateTimeFormatter.ofLocalizedDateTime格式化localDateTime使用DateTimeFormatter.ofLocalizedDateTime格

松仔Log的博客 2478

【Go语言实战】(3) Gin + Gorm 简单备忘录 | 含接口文档

Go语言实战:TodoList 备忘录

面向生活编程 6140

汽车行业OTD业务模式入门学习

本文是在学习彭俊松老师的《汽车行业整车订单交付系统》后,对于OTD理解的一些摘录,供诸位参考学习。

qq_40664711的博客 1万+

【Java基础教程】(四十一)常用类库篇 · 第十一讲:国际化支持类——解析 Locale 类与 ResourceBundle 类对国际化编程的支持~

国际化程序指的是同一套程序代码可以在不同的国家使用,那么在假设项目功能不变的情况下,文字就成为这一操作中最为重要的处理环节。所谓的国际化程序实际上指的就是同一套程序,可以根据其应用的国家自动在项目中显示出本国的相应文字信息,如下图所示。而在本操作中需要两个关键的技术实现点:如何确定当前的软件项目运行的语言环境;要想实现多语言切换,必须针对每一个语言提供一个资源文件,并 且可以根据语言环境选择不同的资源文件进行信息的读取。如果要对用户使用的语言环境进行定义,则可以使用类完成...

Technology changes the world of life 1万+

使用再生龙备份还原liunx系统(精确每一步)

再生龙镜像可自行到官网下载(ISO/ZIP格式均可),然后使用tuxboot烧录工具制作启动盘,另外准备一个U盘用来存储备份的镜像文件,即再生龙盘和存储盘是两个分开的。当然也可以用分区工具把同一个硬盘分区来使用,比较方便,先学会基本的吧,只是告诉有个捷径,省个U盘。

米可的博客! 8374

Java常用类库——国际化程序(Locale,ResourceBundle以及MessageFormat处理动态文本)

本章目标 掌握国际化程序的基本实现原理。 掌握资源文件的作用。 掌握Locale类的基本实现原理。 掌握ResourceBundle类的作用。 可以使用MessageFormat处理动态文本。 了解资源类的使用。  国际化程序 国际化的操作就是指一个程序可以同时适应多门语言,即:如果现在程序的使用者是中国人,则会以中文为显示文字,如果现在程序的使用者是英国人,则会以英语为显示文字,

5725

Pixhawk2.4.8接口及引脚定义

pixhawk2.4.8接口定义图解

加斯顿工程师的博客 8749

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

详解Java中用于国际化的locale类

详解Java中用于国际化的locale类Java中也有用于转换和划分地区的国际化类java.lang.Locale,国际化在程序中设置语言和时间等时非常有用,下面我们就来详解Java中用于国际化的locale类1. Locale 介绍Locale 表示地区。每一个Locale对象都代表了一个特定的地理、政治和文化地区。 在操作 Date, Calendar等表示日期/时间的对象时,经常会用到;因为...

Junit的博客 5632

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

国际化: 理解Java平台上的Locale

语言和地理环境对我们的文化产生重要影响.我们同他人之间的交流以及生活中的事件都发生在语言和地理环境所产生的一个系统里.由于语言和环境的不同,以至需要我们来制定一个适合的方式来达到向他人表述我们自己或者我们的想法的目的.为了有效地与他人交流,需要考虑对方的文化,环境以及使用对方的语言.      类似地,一套有实效的软件系统也要考虑用户的语言和地理区域.语言和区域形成了本地环境,描述了软件本地化

caomiao2006的专栏 2805

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java locale 印尼_java国际化Locale详解

随着国际化的潮流,越来越多的APP产品开发了多个国际版本。而在网页产品中,很多就是对于网页上显示的文字内容进行了一个翻译操作,根据用户的需求翻译为不同的语言。java提供了一个强大的Locale类可以帮助我们实现这一功能。locale类提供了三种初始化的方法,每一个初始化的方法需要的参数个数不同。一共有三个参数:language:这个是一个必须的参数,初始化需要使用的语言。比如:en(英语),zh...

weixin_30216901的博客 1136

详解Java中用于国际化的locale类和LocaleContextHolder.getLocale()

1. Locale 介绍 Locale 表示地区。每一个Locale对象都代表了一个特定的地理、政治和文化地区。 在操作 Date, Calendar等表示日期/时间的对象时,经常会用到;因为不同的区域,时间表示方式都不同。 下面说说Locale对象的3种常用创建方式。(1)获取默认的Locale 使用方法: Locale locale = Locale.getDefault() (2)直接使用Locale的静态对象 Locale.java中提供了以下静态对象 public sta.

Java后端技术栈 1949

java国际化程序实现

java程序国际化

weixin_62485084的博客 1526

locale国际化

程序package comjin;import java.text.NumberFormat;import java.util.Locale;/** *  * @author jinchun * */public class TestLocale {  public static void main(String[] args) {  Locale[] localeList = Num

Shiring-Spring 676

Java学习路线-21:国际化Locale、ResourceBundle、MessageFormat

第11 章 : 国际化程序实现 42 国际化程序实现原理 统一程序代码,根据不同国家实现不同语言描述 需要解决问题: 1、定义保存文字信息 2、根据不同区域语言编码读取文件信息 43 Locale类 Locale类:专门描述区域和语言编码的类 构造方法 public Locale(String language) public Locale(String language, String coun...

彭世瑜的博客 1611

国际化: Java平台上的Locale

  语言和地理环境对我们的文化产生重要影响.我们同他人之间的交流以及生活中的事件都发生在语言和地理环境所产生的一个系统里.由于语言和环境的不同,以至需要我们来制定一个适合的方式来达到向他人表述我们自己或者我们的想法的目的.为了有效地与他人交流,需要考虑对方的文化,环境以及使用对方的语言.      类似地,一套有实效的软件系统也要考虑用户的语言和地理区域.语言和区域...

YOUNG918 306
上一篇: 三、JAVA常用类库之StringBuilder类
下一篇: 五、JAVA常用类库之Math、Random、Date
LemonSnm
博客等级 码龄8年 66粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值