国际化i18n应用技巧

了解国际化

国际化也简称i18n,是因为Internationalization这个单词太长18位,取头和取结尾一个字母这样i18n这个国际化简称就产生了。 国际化是指让产品或是程序在无需做出改变的情况下就能够适应不同语言和地区的需要 。通常运用在有国际化需求产品上面。那么对于国际化的系统应用需要注意哪些问题,有哪些参考的技巧,下面会罗列在一些场景下国际化的方式。为后续有国际化需求的项目系统设计提供一些参考思路。

一般国际化

首先我们对于国际化的认知就是系统能在不同浏览器上面根据语言类型进行切换,有中文界面、英文界面,如果仅是这样我们可能会看到如下系统将面临的需求。


国际化操作界面

那么除了正常的前端界面国际化满足基本需求以外,以下场景实现国际化也是可以有一些方法的。

  1. 数据库设计的菜单数据需要国际化。
  2. 数据库表数据是否需要国际化。
  3. 字典参数是否需要国际化。
  4. 程序的提示信息是否需要国际化。

国际化数据分类

一、系统需要

应用国际化,一般是给操作人员基于系统操作层面上的,只需展示界面为特定语言满足操作即可。

1、前端界面国际化

在 Java 中实现国际化主要是借助一个工具类 ResourceBundle ,核心的思想就是 ,对不同的语言环境提供一个不同的资源文件


资源文件

2、后端信息数据国际化

同样是把后台的一些信息配置到资源文件里面,AcceptHeaderLocaleResolver 对国际化提供了支持。

/**
 * 获取i18n资源文件
 *
 * @author Bill Li
 */
public class MessageUtils {
    /**
     * 根据消息键和参数 获取消息 委托给spring messageSource
     *
     * @param code 消息键
     * @param args 参数
     * @return 获取国际化翻译值
     */
    public static String message(String code, Object... args) {
        MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
        return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
    }
}

调用方式:MessageUtils.message("user.login.success")

二、业务需要

业务国际化,一般是业务数据是有多语言版本,数据需要支持多种语言。

1、数据库数据国际化

通过增加国际化字段,返回ORM层或者应用层的时候结合资源文件翻译即可。

2、业务多语言

通过增加多语言对应表,针对的配置不通过的语言版本,业务增加语言过滤。

配置多语言

3、利用JSON存储做简单实现

数据库情况
List<DemographyDto> list = JsonUtil.toJsonListObject(langCodes, DemographyDto.class);
    public static <T> List<T> toJsonListObject(String json, Class<T> valueType) {
        try {
            JavaType getCollectionType = MAPPER.getTypeFactory().constructParametricType(List.class, valueType);
            List<T> list = MAPPER.readValue(json, getCollectionType);
            return list;
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
        return null;
    }

方法是死的,好用方便满足需求即可(不过要优雅)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 库属性介绍 项目地址:https://github.com/AlexanderZaytsev/react-nati...
    hcq666阅读 4,620评论 1 53
  • 国际化基础知识 国际化与本地化 国际化与本地化,或者说全球化,其目的是让你的站点支持多个国家和区域。其中国际化是指...
    jsAllen阅读 6,002评论 0 3
  • 孟子说:吾四十不动心。做人要坚定。要知道什么是最重要的。于第一义不动。然后就向着这个方向走,绝不退转。读书人,就是...
    海观居士阅读 664评论 0 0
  • 作者:顿贵玲 笛卡尔曾说:“尊重别人,才能让人尊重。” 晚饭过...
    顿贵玲阅读 351评论 9 6
  • (一) 独上高墙 静望斜阳 你不曾归 (二) 岸上白骨森森 我摇橹而来 接你还家 (三) 一树寒梅 摘与你 寄以相...
    珩左先生阅读 352评论 2 2