JSRUN 用代码说话

提取硬编码字符串文字

编辑教程

提取硬编码字符串文字

启用代码检查以突出显示硬编码字符串文字后,您可以继续将这些文字解压缩到属性文件中。为此,IntelliJ IDEA 提供特殊意图行为 i18nize 硬编码字符串文本。

本节考虑两种访问资源包的可能方法:

使用 java.util.ResourceBundle 实用程序类
使用自定义实用工具类

使用 java.util.ResourceBundle 提取硬编码字符串文字

tip:您可以跳过此步骤,并在 I18nize 硬编码字符串对话框中立即指定所需的资源包表达式。

指定将用于存储提取的文字的资源包。特别地,您可以将以下语句添加到您的源代码中:

private static ResourceBundle <field name> =
getBundle("<bundle name>");

例如:

private static ResourceBundle myBundle =
getBundle("com.intellij.fontChooser.FontChooser");

单击突出显示的字符串,按 Alt+Enter,并在意图行为列表中选择 i18nize 硬编码字符串:

使用java.util.ResourceBundle提取硬编码字符串文字

在"I18nize 硬编码字符串"对话框中指定目标属性文件、属性键和值以及资源包表达式。

如果 ResourceBundle 字段已在源代码中声明(如步骤1所示),则 IntelliJ IDEA 在默认情况下建议它的名称。如果您尚未在源代码中声明此字段,您仍然可以在对话框中立即定义所需的表达式。为此,请在 "资源包表达式" 字段中输入 ResourceBundle 类型的有效表达式。

注意:基本代码完成在该字段中工作。键入类名,并按下 Ctrl+Space ,选择方法:

使用java.util.ResourceBundle提取硬编码字符串文字

从建议列表中选择所需的方法,然后再按 Ctrl+Space 一次以填写括号:

使用java.util.ResourceBundle提取硬编码字符串文字

之后,在引号中键入包和资源包名称:

使用java.util.ResourceBundle提取硬编码字符串文字

点击“确定”。具有硬编码字符串文字的行被替换。例如,如果源代码中已经声明了资源包,则将创建以下行:

使用java.util.ResourceBundle提取硬编码字符串文字

如果在对话框中定义了资源包,结果将是:

使用java.util.ResourceBundle提取硬编码字符串文字

使用自定义资源包类提取字符串文字

请确保 IntelliJ IDEA 安装下的redist/annotations.jar归档文件被添加到模块依赖关系中。

在项目中创建一个新类,并键入以下代码:

import org.jetbrains.annotations.PropertyKey;
import org.jetbrains.annotations.NonNls;
import java.util.ResourceBundle;
import java.text.MessageFormat;
public class I18nSupport {
               @NonNls
               private static final ResourceBundle bundle = ResourceBundle.getBundle ("com.intellij.FontChooser");
               public static String i18n_str
                (@PropertyKey(resourceBundle ="com.intellij.FontChooser")
                String key,Object... params){
                String value =bundle.getString(key);
                if (params.length >0) return MessageFormat.format(value, params);
                return value;
    }
}

在包含硬编码字符串的类中,单击突出显示的字符串,按 Alt+Enter,并在意图行为列表中选择 i18nize 硬编码字符串文本。该 I18n-ize 字符串文字对话框显示缺少资源包表达式:

使用自定义资源包类提取字符串文字

点击 "编辑 i18n 模板链接"。在 "文件模板" 对话框中,将 I18nized 表达式更改为指向自定义资源包类的方法:

这个更改是全局性的,并且会影响所有项目!

使用自定义资源包类提取字符串文字

点击“确定”,保存更新的模板并关闭对话框。

在"I18n-ize 字符串文本" 对话框的 "预览" 部分中,请参阅建议的替换,然后单击 "确定"。源代码更改:

使用自定义资源包类提取字符串文字

隐藏硬编码字符串

有时你可能想隐藏硬编码的文字。要这样做,使用不需要国际化注释。

按 Alt+Enter 显示字符串文字的意图行为:

IntelliJ IDEA忽略硬编码字符串

从"建议"列表中选择注释为 @NonNls。

在打开的“选择路径”对话框中,指定annotations.xml 文件将被存储的位置 。

或者,您可以添加 @NonNls 注释:

IntelliJ IDEA忽略硬编码字符串

如果您选中该复选框以后不显示此对话框,则您仍然可以在“设置”对话框中选择注释样式(代码样式 |Java 代码生成)。

识别硬编码字符串

您的源代码可以包含您想要识别的硬编码字符串,并进一步提取到属性。要在编辑器中突出显示硬编码的文字,请使用国际化代码检查。

打开 "设置" 对话框。

在项目设置,选择 编辑|检查(Editor | Inspections),打开 检查对话框。

选择所需的配置文件,并找到节点国际化问题。

请注意,您可以配置此检查的严重性,并指定何时应识别硬编码的字符串。例如,您可以选择跳过toString() 方法的内容,或没有字母字符的文字。

检查硬编码字符串选项,这将导致硬编码字符串文字在编辑器中突出显示。

应用更改并关闭对话框。现在编辑器将突出显示硬编码的字符串文字,如下所示:

IntelliJ IDEA识别硬编码字符串

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟