IntelliJ IDE 插件开发 | (八)国际化配置

系列文章

本系列文章已收录到专栏,交流群号:689220994,也可点击链接加入,如果想加入微信群可以加我个人微信(butterfly__1221)拉你进群。

前言

尽管大多数情况下我们开发的插件可能都是自己或者团队内部使用,但是如果想要将开发的插件发布到 Jetbrains 的插件市场,吸引更多的用户使用和支持,那么 i18n 就必不可少了。而 IntelliJ 也给我提供了内部支持,只需要简单几行代码即可实现 i18n,下面开始分步骤进行讲解,另外本文涉及到的完整代码也已上传到GitHub

语言文件

首先我们需要在 resources 文件夹下创建我们的语言文件,这里选择先创建一个 messages 文件夹(名称无要求),然后在下面创建一个ActionBundles.properties文件(后缀为properties,名称无要求,一般会分模块创建多个语言文件便于管理,该文件用于配置默认语言即英文),之后再创建一个ActionBundles_zh.properties文件用于配置中文内容,这里的_zh则代表用于配置中文,其中_固定,zh为语言代码,例如想要配置日语则是ja,不同国家的语言代码可以在网上自行搜索,这里提供一个网址,效果如下:

image-20240405163659518

可以看到在语言配置文件创建完毕后,我们分别在内部添加了demo.greet-msg=Hello, {0}demo.greet-msg=\u4f60\u597d\uff0c{0}两个配置。其中\u4f60\u597d\uff0c你好,中文字符对应的 Unicode 编码,这里之所以使用 Unicode 编码,是因为官网推荐我们将 ASCII 码范围外的字符都使用 Unicode 编码进行表示,相关的转换网站也很多,这里提供一个。除此之外,还可以看到我们的内容中还包含{0},这个则是参数占位标记,多个参数按照0, 1, 2...的顺序依次累加即可。

工具类文件

有了以上语言文件,我们就可以创建一个工具类专用于语言解析了,这里先展示内容:

# ①
private const val BUNDLE = "messages.ActionBundles"

# ②
object MessageUtils: DynamicBundle(BUNDLE) {
    
    # ③
    fun message(@PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any) = getMessage(key, *params)
    
}

调用方式也很简单:

# ④
MessageUtils.message("demo.greet-msg", "butterfly")

下面分开始介绍上述代码的含义:

首先是①,这里用于声明语言文件的位置,其中messagesActionBundles分别是上文我们创建的用于存储语言文件的文件夹名和文件名。

然后是②,可以看到这里我们创建的工具类继承了DynamicBundle类,并传递了我们声明的BUNDLE,有了这部分代码我们就可以得到 IntelliJ 内部的语言文件解析功能:只需要专注于语言文件的编写,而无需考虑不同语言的判断和文件选取。

之后是③,这里声明了一个message方法,而内容则是直接调用了getMessage(key, *params)这个DynamicBundle类内部提供的方法,这里之所以自己重新声明了一遍方法,则是为了使用 key 参数前@PropertyKey(resourceBundle = BUNDLE)注解的功能,通过使用PropertyKey注解,当我们调用该方法的时候获取到提示(参数 resourceBundle 的值就是上面声明的 BUNDLE),效果如下:

image-20240405170341688

同时键不存在时还会有报错提示:

image-20240405170442963

最后是④,有了以上工具类,调用方式也很简单,第一个参数为信息的键值,如果想要传递参数,则按顺序进行传递即可(第二个参数为可变参数,PropertyKey 注解会解析配置的语言信息,如果调用参数个数不一致也会有信息提示,如下图)。

image-20240405170943290

然后创建一个 Action 用于测试:

class TestAction: AnAction() {
    
    override fun actionPerformed(event: AnActionEvent) {
        NotificationUtils.info(MessageUtils.message("demo.greet-msg", "butterfly"))
    }
    
}

效果如下:

image-20240405171420739

可以看到这里虽然我们没有进行语言选择的操作,但是显示的内容为中文版本。

NotificationUtils类是自己定义的工具类,内容如下:

object NotificationUtils {

    fun info(msg: String) {
        Notifications.Bus.notify(Notification("i18n", msg, NotificationType.INFORMATION))
    }

}

手动切换语言

在部分情况下我们可能还想手动的去控制语言的选择,只需要使用Locale.setDefault(Locale.ENGLISH)即可,这里的参数为Locale.ENGLISH即英语,其它语言按需去改变即可,配置完后,我们再看效果:

image-20240405171849091

image-20240405171902232

可以发现配置生效,展示的信息为英语版本了。

如果调用Locale.setDefault()方法传递的语言在我们语言文件中不存在,则会使用默认的语言文件,即没有后缀的语言文件,即ActionBundles.properties

总结

在上篇文章的结尾说到这篇文章会介绍 PSI 的进阶内容,不过考虑到使用场景较少,所以这篇文章先介绍了关于 i18n 的相关内容,PSI 的进阶内容则留到后续篇章中再进行介绍。

<think>好的,我需要帮用户解决在IntelliJ IDEA中安装和配置i18n插件的问题。首先,用户提到的i18n插件可能指的是汉化插件或者国际化支持插件。根据提供的引用内容,官方已经支持中文语言包,所以可能需要引导用户安装官方的中文插件。 引用[2]和[3]提到,汉化插件可以通过Plugins市场搜索“Chinese”来安装。步骤是打开设置,找到Plugins,搜索并安装,然后重启IDEA。这可能就是用户需要的i18n配置,因为i18n通常指国际化,而汉化属于其中的一部分。 另外,引用[4]提到Thymeleaf的i18n配置,但用户的问题可能更多是关于IDEA本身的插件安装,而不是项目内的国际化设置。所以可能不需要涉及Thymeleaf的内容。 需要注意用户可能混淆了i18n插件的类型,需要明确回答安装汉化插件和项目国际化配置的区别。根据引用,安装中文语言包是通过Plugins安装,而项目i18n可能需要其他配置,比如资源文件管理。但用户的问题集中在安装和配置插件,所以重点放在汉化插件的步骤。 需要检查是否有其他i18n相关插件,但根据引用,官方中文插件是最直接的。因此,回答应该分步骤说明如何安装中文插件,并提到项目中的i18n配置可能需要其他步骤,比如资源文件设置,但用户当前问题可能只需要安装步骤。 最后,生成相关问题,例如如何切换回英文,或者处理其他语言的国际化支持。</think>### 如何在 IntelliJ IDEA 中安装和配置 i18n 插件 #### 1. 安装官方中文语言包(汉化插件) **步骤说明:** 1. **打开插件管理界面** 在 IntelliJ IDEA 中,使用快捷键 `Ctrl+Alt+S`(Windows/Linux)或 `Cmd+,`(macOS)打开 **Settings**,选择 **Plugins** [^2][^3]。 2. **搜索中文插件** 在插件市场的搜索栏中输入 `Chinese`,找到 **Chinese (Simplified) Language Pack / 中文语言包**(官方提供)[^3]。 3. **安装并重启** 点击 **Install**,安装完成后根据提示重启 IDEA 以生效[^2][^3]。 #### 2. 配置项目国际化资源文件(i18n) 若需为项目配置国际化支持(如管理多语言资源文件),可按以下步骤操作: 1. **创建资源文件** 在 `src/main/resources` 目录下新建文件,命名格式为 `messages_语言代码.properties`(例如:`messages_en.properties`、`messages_zh_CN.properties`)[^4]。 2. **启用资源文件识别** 对于 Spring Boot 项目,在 `application.properties` 中添加配置: ```properties spring.messages.basename=messages ``` 3. **使用插件管理翻译** 安装第三方翻译插件(如 **Translation**),通过 `Ctrl+Shift+A` 搜索 **Translation** 并直接翻译文本内容[^1]。 --- ### 注意事项 - 官方中文插件仅汉化 IDE 界面,不影响项目代码的国际化实现[^3]。 - 若需恢复英文界面,可在 **Plugins** 中禁用或卸载中文语言包[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值