在 v8.1 中,在 Chrome 81 中推出了 Intl.DisplayNamesAPI API,支持类型 language, region, script, 和 currency 。
#5 在Project中Localizations栏位添加要做国际化的语言 ? 比如我们添加中文, 如果只需要国际化字符串 不需要对界面做国际化的话就默认好了 ? 添加的结果: ? 这样Localization.strings会自动添加中文国际化文件 ? 图片国际化是先导入一张图片, 设置为一种语言的国际化 然后导入另外一张图片, 修改为跟上一张同样的名字, 设置为另外一个语言的国际化 剩下的图片一样处理 使用时直接用UIImage imageName :@""就可以了, 会自动根据系统的语言显示不同的图片 文字国际化 文字实现国际化时候, strings文件的名称必须为Localizable否则只会显示key 所以我们将Localization文件删掉 , 创建Localizable.string 并设置国际化.
基于qt语言家的语言切换 Assistant(Qt语言家),类似于MSDN最权威的速应用程序翻译和国际化的工具。 Qt 使用单一的源码树 和单一的应用程序二进制包就可同时支持多个语言和书写系统,有助于软件走向国际化,普度众生。
最近在做项目的时候,产品有一个需求是支持国际化的, 我们的项目是前后端分离的。前端可以用第三方的插件来改变, 但是后端提示信息也要同步。 这个需求也就只能在MVC 的response的返回试图解析的时候拦截,把里面的message 替换掉, 在用国际化的类从配置文件中取值再返回。 整体的思路差不多就是这样的。 这里面的message 就是国际化配置文件里面的key ? ? ? 不同的文件value不一样。
# 定义国际化资源 resources下新建i18n文件夹 新建xx.properties文件 中文:新建xxzhCN.properties文件存放对应的中文 英文:新建xxenUS.properties 定义需要国际化的内容 ? 在application.yml中配置 spring: messages: # 定义国际化文件的文件地址,读取的原则是顺序读取如果存在同名的则读取第一个 basename: i18n /login,i18n/errorMessage 定义国际化解析器与拦截器 package com.futao.springmvcdemo.foundation.configuration; import @org.springframework.context.annotation.Configuration public class Configuration { /** * 国际化
软件国际化的第二个部分,就是动态元素国际化。 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。 一个 Locale 对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由本地敏感的类去完成。 DateFormat类(国际化日期) DateFormat 类可以将一个日期/时间对象格式化为表示某个国家地区的日期/时间字符串。 DateFormat.FULL,DateFormat.FULL,Locale.CANADA); System.out.println(dateFormat.format(date)); } NumberFormat类(国际化数据 ,都是一些需要记忆的知识点呐,其实没什么好说的,接下来就是软件国际化的最后一部分,动态文本国际化。
前端解决了绝大多数的国际化问题,偶尔后端也需要一些国际化需求,刚好 Java 就支持这种操作 1.1 语言资源包 资源包是 properties 文件,以键值对报文对应的国际化信息。 示例 展示没有 SpringBoot 集成的使用方式 2.1 创建国际化文件 在 resources/i18n 下创建国际化文件,填入对应的国际化信息,并在配置文件中填入国际化文件的路径方便统一管理 spring: messages: basename: messages encoding: UTF-8 3.2 创建国际化文件 message.properties 缺省的文件必须要有 @RequestMapping("/i8n") public class I8nController { @Autowired private MessageSource messageSource MessageSource 组件使用配置文件 MessageSourceProperties,内有默认值: basename = messages encoding = StandardCharsets.UTF_8
听起来高大上的国际化,起始就是在利用浏览器语言,或者页面中的中英文切换,将页面的文字在其他语言和中文进行切换,比如: ? 我们想让这个功能实现,点击中文,页面就是中文的,点击英文就是英文的。 国际化配置 那么我们来看,SpringBoot默认是按照你浏览器的语言来切换中英文的,配置文件呢,我们可以在resources中这样写: 1. 新建一个名叫“i18n”的包,我们用来存放国际化配置,然后在这个包下,我们再创建几个properties的配置文件,用来配置语言: ? login_zh_CN.properties;英文生效的login_en_US.properties; 也就是以下划线的组合:文件名_区域_语言.properties;当我们这样命名生成文件后,IDEA也会帮我们识别这是个国际化配置包 前边表单里我们将所有需要的参数用#{xx.yy}的形式,按照配置的国际化参数都设置好,为了使用模板,我们需要用到th:text之类的参数来替换原来的参数。
的基本流程 业务代码中使用国际化文案 国际化生效 使用国际化 业务代码中使用 测试 前言 国际化(i18n)是针对不同国家不同区域,同样的程序会有不同的表现形式; 在日常使用的开源框架中,都会有不同程度的国际化在里面 ; 刚好现在需要让程序中搞一下国际化,那么就跟踪一下如何在SpringBoot中使用国际化 使用基本就两个地方: 参数校验中使用(hibernate已支持) 业务代码中使用(需要简单的配置一下) 代码提交至 ResourceBundle Demo中国际化实现的底层依赖于 hibernate-validator 的校验功能 而 hibernate-validator 依赖于Java的国际化 ResourceBundle 国际化生效 SpringBoot中需要使用国际化需要在resource目录下创建messages.properties文件; 原因: MessageSourceAutoConfiguration 是SpringBoot 国际化的一个自动装配类, 生效的条件为: 当前容器上下文中没有messageSource这个bean(如果有这个Bean代表自定义了国际化的实现) 判断 spring.messages.basename
国际化主要是引入了MessageSource,我们简单看下如何使用,以及其原理。 application: name: test-worklog messages: basename: i18n/messages encoding: UTF-8 @Autowired private MessageSource messageSource; /** * 国际化 * * @param result * @return */ public
PyQt4 语言国际化 使用pylupdate4将界面的py文件转成ts文件。 进入py文件所在目录,执行转换命令。
在前面的 SpringMVC-默认加载的组件 章节中我讲解了如何配置视图解析器来映射到这个位置,不懂的可以回去看看 <%@ page contentType="text/html;charset=UTF-<em>8</em>" <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><html><head> <meta charset="UTF-<em>8</em>" index.jsp 添加两个 a 标签来发送请求进行中英文的切换<%@ page contentType="text/html;charset=UTF-<em>8</em>" language="java" %><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><html><head> <meta charset="UTF-<em>8</em>"> <title>国际化</title></head><body><a href="?
页面国际化 有的时候,的网站会去涉及中英文甚至多语言的切换,这时候就需要学习国际化了! 准备工作 先在IDEA中统一设置properties的编码问题! [202108221006425.png] 编写国际化配置文件,抽取页面需要显示的国际化页面消息。 配置文件编写 在resources资源文件下新建一个i18n目录,存放国际化配置文件 建立一个login.properties文件,还有一个login_zh_CN.properties;发现IDEA自动识别了要做国际化操作 去页面获取国际化的值,查看Thymeleaf的文档,找到message取值操作为:#{...}。 去页面测试: [202108221008424.png] 配置国际化解析 在Spring中有一个国际化的Locale (区域信息对象);里面有一个叫做LocaleResolver (获取区域信息对象)的解析器
今天的学习内容是JavaWeb开发——软件国际化。 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。 page import="java.util.ResourceBundle"%> <%@ page language="java" contentType="text/html; charset=UTF-<em>8</em>" page import="java.util.ResourceBundle"%> <%@ page language="java" contentType="text/html; charset=UTF-<em>8</em>" pageEncoding="UTF-<em>8</em>"%> <%--引入国际化标签库--%> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix=" 因为篇幅有限,软件<em>国际化</em>的内容在一篇博客中讲完是不太现实的,这一部分的内容我就大概分三个部分去讲解,所以这是一个系列,就分为 文本元素<em>国际化</em> 动态数据<em>国际化</em> 动态文本<em>国际化</em> 这三个部分吧。
1、背景 公司业务遍及全球各地,对应业务系统国际化就是顺理成章的事情。最近就接手了一批新老系统的国际化任务,这里把一些探索经验、案例记录下来。 本身改造和探索过程包括.NET MVC的,以及.NET CORE WEB API的,但这里旧版MVC的就不描述了,重点介绍netcore下的国际化方案。 国际化重点在于多语言支持,以及多时区支持,本文就从这两个方面入手。 预设:有一个前后端分离的系统,前端由i18n负责多语言支持,后端不渲染视图,提供api返回数据给前端。 4、总结 系统国际化的重点,在于语言环境国际化,以及多时区自适应,解决这两点,剩下就不是啥问题了。 针对这点可以做对应发散,例如假如系统中文用户占多数,运维也主要是中国员工,那就可以采取服务器或数据库统一存储中国东8区的时间,其他本地时间向中国时间进行转换的做法,思路、解决方案是一致的。
replaceI18nFields(objs, LocaleContextHolder.getLocale()); } /** * 将列表所有对象中@I18nField标注的字段替换为指定国际化语言值 replaceI18nFields(obj, LocaleContextHolder.getLocale()); } /** * 将对象有@I18nField标注的字段替换为指定国际化语言值 get(String str) { return get(str, LocaleContextHolder.getLocale()); } /** * 获取国际化键名指定的语言值 public String value() default StringUtils.EMPTY; } spring: # 资源信息 messages: encoding: utf-8 # 国际化资源文件路径(配置文件路径) basename: i18n/messages
XWiki可以支持设置为一个或各种语言。截至2011年9月XWiki企业版支持25种语言:
前言 internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化),简称L10n。 Android没有专门的API来提供国际化,而是通过对不同resource的命名来达到国际化的目的,同时这种命名方法还可用于对硬件的区分,如不同的屏幕分辨率用不同的图片。 本文主要介绍Android App国际化过程中遇到的问题和解决方案。 1.整理HardCode App国际化是要在保持App原功能不变的情况下,主要对字符串进行替换。 最早的产品原型中可能不会考虑到国际化的需求,很多控件的布局写成固定值,英文不适用于之前的设计,所以出现错位、遮挡、显示不全等现象。 总之整个过程需要多方的参与和沟通,才能有效迅速的达到国际化效果。 总结 Android App国际化的工作并没有太多的技术难度,更多的是一些繁琐的文本处理。
1、背景 公司业务遍及全球各地,对应业务系统国际化就是顺理成章的事情。最近就接手了一批新老系统的国际化任务,这里把一些探索经验、案例记录下来。 本身改造和探索过程包括.NET MVC的,以及.NET CORE WEB API的,但这里旧版MVC的就不描述了,重点介绍netcore下的国际化方案。 国际化重点在于多语言支持,以及多时区支持,本文就从这两个方面入手。 预设:有一个前后端分离的系统,前端由i18n负责多语言支持,后端不渲染视图,提供api返回数据给前端。 可以看到,原始UTC时间2019-07-15 08:30:00在中国东八区8个小时偏离下,返给客户端变成了16:30:00,即中国本地时间; 英文环境: ? 4、总结 系统国际化的重点,在于语言环境国际化,以及多时区自适应,解决这两点,剩下就不是啥问题了。
目录 [TOC] 需求分析 项目的代码全部国际化任务量不小,公司基本没有用什么框架,基本采用的是js,html实现数据的展示,没有采用框架,只是有一些简单的逻辑分层,加大了不少国际化的难度. 但是针对java部分的代码,虽说稍微熟悉一些,但是国际化就暂时不需要我负责了,虽说我也只是之前弄过纯java的一些简单的国际化. language : 'en_US', language : currentLang, // cache:false, // encoding: 'UTF-8' 针对一些插件的处理 针对一些插件的处理的话,如果插件本身没有国际化的功能,就直接按照上面的那个按需国际化加载就行了,比方说根据自身需要引入的一些数据表格之类的插件.还有一些固定的菜单之类的等等, 当你需要同样的差不多的插件 ,但是有不完全相同时候,需要全部国际化是多么令人头疼的一件事情.