SpringBoot 国际化(i18n) 支持中文键(KEY)的解决方法

这篇具有很好参考价值的文章主要介绍了SpringBoot 国际化(i18n) 支持中文键(KEY)的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

项目中要解决“中英文”切换的问题,想法是输入key例如“你好”,然后去国际化文件找对应的中文key,然后进行输出,如果没有定义这个key,则输出“你好”。但是中文key在properties文件中会已unicode编码输出,使用中文key时获取不到对应的value。

解决方法:

重构$.i18n.map

/******************************************************************************
 * local.il8n.propertiess
 *
 * 用于本地业务使用的il8n(支持中文key)
 * 可以根据输入前缀+键(key)来返国际化内容,null时则返回具体内容
 * 使用:
 * 1、引用js
 * <script type="text/javascript" src="<@s.url '/js/jquery.il8n.local.propertiess.js' />"></script>
 * 2、在使用的地方直接调用,例如 {{$.i18n.local('BYSJ.','你好')}},如果国际化中有这个key则返回对应value,否则返回第二个参数
 * 第一个参数为前缀,第二个参数为具体的key,例如 BYSJ.选导师申请时间=选导师申请时间
 * @version     1.0.x
 * @author      Ding QiMIng
 *
 *****************************************************************************/
(function($) {
    var localMap = {};
    //prefix(国际化文件中的前缀),rekey(国际化文件中的key)
    $.i18n.local=function(prefix,rekey){
        //console.log("local")
        let key = prefix+rekey
        let value = localMap[key]
        //("localMap",localMap,"key",key,"value",value)
        if (undefined != value && null != value && '' != value){
            return value;
        }
        return rekey;
    }
    $.i18n.local.parseData=function () {
        console.log("parseData")
        let unicodeRE = /(\\u.{4})/ig;
        let data = $.i18n.map//这是jquery的
        for(var key in data ){
            let value = data[key];
            let unicodeMatches = key.match(unicodeRE);
            if(unicodeMatches) {
                // console.log('key',key,value,value)
                for(var u=0; u<unicodeMatches.length; u++) {
                    key = key.replace( unicodeMatches[u], unescapeUnicode(unicodeMatches[u]));
                }
            }
            if (value != undefined ){
                localMap[key] = value
            }
        }
    }
    function unescapeUnicode(str) {
        let codes = [];
        let code = parseInt(str.substr(2), 16);
        if (code >= 0 && code < Math.pow(2, 16)) {
            codes.push(code);
        }
        let unescaped = '';
        for (var i = 0; i < codes.length; ++i) {
            unescaped += String.fromCharCode(codes[i]);
        }
        return unescaped;
    }
    $.i18n.local.parseData();
})(jQuery);

国际化文件中写入

BYSJ.你好=helloa

 此方法解决了国际化不支持中文key的问题.文章来源地址https://www.toymoban.com/news/detail-604612.html

到了这里,关于SpringBoot 国际化(i18n) 支持中文键(KEY)的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • i18n(国际化)代码简单实现

    各个国家都有各个国家的语言,如果网站需要让全世界的人使用,那就需要进行国际化功能开发 国际化我知道的一共有两种,其中一种是不同国家不同网站,也就是说页面风格都不一样。另外一种是网站都是一样的,只是里面的文字不同罢了。第一种没啥好说了,毕竟都是两

    2024年02月07日
    浏览(59)
  • vue2+element-ui使用vue-i18n进行国际化的多语言/国际化

    注意:vue2.0要用8版本的,使用9版本的会报错 在src目录下,创建新的文件夹,命名为i18n zh.js en.js index.js main.js 使用方式一 效果图 使用方式二 效果图 使用方式三,在 效果图 ` 注意:这种方式存在更新this.$i18n.locale的值时无法自动切换的问题,需要刷新页面才能切换语言。解

    2024年02月07日
    浏览(73)
  • Vue - i18n 国际化的使用

    参考网址: 使用: https://huaweicloud.csdn.net/638f133edacf622b8df8eb26.html?spm=1001.2101.3001.6650.1utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-125181861-blog-123845480.235%5Ev38%5Epc_relevant_anti_t3_basedepth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Ea

    2024年02月11日
    浏览(60)
  • 用i18next使你的应用国际化-React

    ref: https://www.i18next.com/ i18next是一个用JavaScript编写的国际化框架。 i18next为您提供了一个完整的解决方案,本地化您的产品从web端到移动端和桌面端。 在react项目中安 i18next 依赖: i18next react-i18next i18next-browser-languagedetector,用于检测用户语言 创建 i18n.js 文件: 在 index.js 中导

    2024年02月15日
    浏览(33)
  • Vue 国际化之 vue-i18n 的使用

    目录 一、安装 二、使用 1、准备语言包 2、准备翻译的语言环境 3、实现语言翻译 三、整合 ElementUI 语言包 1、扩展中文 2、扩展英文  3、使用扩展语言翻译 四、问题记录 五、扩展 vue3 中使用 vue-i18n 如果在一个模块系统中使用它,你必须通过  Vue.use()  明确地安装  vue-i18n

    2024年03月14日
    浏览(52)
  • 【angular】实现简单的angular国际化(i18n)

    实现简单的angular国际化。本博客实现中文版和法语版。 将 Hello i18n! 变为 中文版:你好 i18n! 或 法语版:Bonjour l’i18n ! 。 创建一个项目: 在集成终端中打开。 添加本地化包: 在html中添加格式化标识: 现在运行一下,页面是: 生成翻译模板语言包: 生成了一个文件夹: l

    2024年02月08日
    浏览(52)
  • 【国际化】文段中的HTML标签(JQuery-i18next)

    javascript - HTML tags in i18next translation - Stack Overflow 问题: 解决方法: 源码: src/index.js · xlieee/jquery-i18next - 码云 - 开源中国 (gitee.com) 文档: jquery-i18next: i18next plugin for jquery usage (gitee.com)

    2024年02月19日
    浏览(38)
  • 如何用 vscode 捞出还未国际化的中文词条

    做国际化一个很头疼的坑就是,你不知道项目里到底还有哪些中文词条没有国际化处理 纯靠人工去检查不现实,也不靠谱,而且浪费资源 所以还是得通过脚本工具来检查,思路是: 先保存好本地代码变更,准备好一个无文件变更的本地环境 再通过脚本把代码里的非展示性中

    2024年02月03日
    浏览(105)
  • spring6-国际化:i18n | 数据校验:Validation

    1.1、i18n概述 国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国际化是通过配置文件来实现的,假设要支撑两种语言,

    2024年02月08日
    浏览(48)
  • uniapp国际化npm install vue-i18n报错

    在vue2环境下,默认安装 npm install vue-i18n 的版本是 vue-i18n@9.1.9,所以报错。 用以上命令查看版本:  vue2建议5.0版本  

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包