本地化检查和快速修复
ReSharper 提供了许多代码检查功能,通过检测可本地化的字符串、资源问题等,帮助您本地化应用程序,这些检查涵盖了资源文件和代码文件中的资源使用。 这些检查会在 设计时 检测到本地化问题,并允许您在 特定范围 内(甚至整个解决方案)查找本地化问题。
在设计时,检测到的问题会被 高亮显示 以引起您的注意。 为了解决高亮显示的问题,ReSharper 提供了许多资源特定的 快速修复。
“元素可本地化”检查
此检查会检测硬编码的字符串文本,并建议 将其移动到资源文件。 如果相同的字符串已在资源中定义,ReSharper 将建议用现有的资源条目替换该文本。
由于并非每个字符串都需要移动到资源并进行本地化,ReSharper 提供了多种方法来配置此检查。 当“元素可本地化”检查被 启用 时,它会按照下方的流程图工作。 流程图中的每一步都有详细说明。

逐字字符串 以
@为前缀,例如@"Hello world"默认情况下,本地化检查会忽略逐字字符串,但您可以通过 不要分析逐字字符串 选项在 ReSharper 选项 的 页面上更改此设置 Alt+R, O 。
可本地化 项目属性定义了如何处理项目中的字符串。 要更改此属性,请右键单击解决方案资源管理器中的项目,选择 编辑项目项属性 ,然后选择 可本地化 > [默认 | 是 | 否]。
如果当前项目或其引用的任何其他项目中至少包含一个资源文件( .resx ),ReSharper 将默认认为该项目是可本地化的。
可以通过将特定函数和属性标记为
LocalizableAttribute来进一步配置,这使您可以显式启用[Localizable(true)]或禁用[Localizable(false)]对所使用字符串的本地化检查。请注意,可以通过 外部注解 将符号标记为此属性。 例如,外部注释用于将
Console.WriteLine标记为[Localizable(true)]。可本地化检查器 项目属性 定义了如何处理未被任何标记为
LocalizableAttribute的成员使用的字符串文本——乐观 算法将忽略此类字符串, 悲观 将 将其标记为可本地化。要更改此项目属性,请右键单击解决方案资源管理器中的项目,选择 编辑项目项属性 ,然后选择 可本地化检查器 > [乐观 | 悲观]。
禁用当前项目的本地化检查的最简单方法是,在编辑器中按 Alt+Enter 并使用 操作列表 中的相应命令:

此命令将当前项目中的 可本地化 属性设置为 否。
本地化问题的快速修复
如果本地化检查检测到的代码问题有 快速修复 可用,ReSharper 会在光标左侧显示相应的 操作指示器。 您可以按 Alt+Enter 或单击指示器图标以查看可用操作列表。要应用所需的操作,请单击它或在列表中选择并按 输入 。
以下是一些本地化检查的快速修复:
移至资源
此快速修复调用 移动到资源重构 ,将可本地化字符串移动到资源文件。 当字符串被卷曲下划线高亮显示时,此功能可用。

使用资源条目代替文本
如果 ReSharper 检测到某些字符串文本已在资源中定义,它会建议用相应的资源使用替换该字符串:

应用此快速修复后,字符串将被资源使用替换。
用“Localizable(false)”注释类型
此组快速修复允许您向选定的类型或成员添加 [Localizable(false)] 属性,以抑制所有此符号使用的 “元素可本地化”检查。
创建资源文件
如果代码文件中使用了资源文件名,但您尚未创建该资源文件,ReSharper 可以为您完成此操作。 它会将资源文件名以红色高亮显示,并建议相应的快速修复:

应用快速修复后,将创建缺失的资源文件。
创建资源项
如果代码文件中使用了资源名称,但您尚未声明该资源,ReSharper 可以为您完成此操作。 它会将资源名称以红色高亮显示,并建议相应的快速修复:

应用快速修复后,将在资源文件中添加缺失的资源声明。
声明资源条目
如果有多个文化按照文化层次结构组织,并且某个资源条目在特定文化的资源文件中声明,但未在默认文化中声明,ReSharper 会高亮显示资源声明并建议相应的快速修复:

应用快速修复后,资源声明将插入到默认文化中,您可以在其中用新值替换其值。
覆盖资源条目
如果有多个文化按照文化层次结构组织,并且某个资源条目在默认文化中声明,但未在一个或多个其他文化中覆盖,ReSharper 会高亮显示资源名称并建议相应的快速修复:

应用快速修复后,资源声明将插入到特定文化的资源文件中,您可以在其中指定正确的值。
移除资源条目
ReSharper 在以下情况下建议此快速修复:
资源条目在中性文化和特定文化中具有相同的值;
存在两个或多个具有相同资源名称的声明;
有多个文化按照文化层次结构组织,并且某个资源条目在特定文化中声明,但未在默认文化中声明。

应用快速修复后,资源声明将从当前资源文件中移除。
移除冗余的资源条目类型
为资源条目指定字符串类型是多余的,因为它是默认的资源条目类型。 ReSharper 将建议移除冗余属性:

安全删除
如果有多个文化按照文化层次结构组织,并且某个资源条目在默认文化中声明,但未在特定文化的资源文件中覆盖,ReSharper 会高亮显示资源名称并建议此快速修复:

应用此快速修复后,请按照 安全删除资源重构 的步骤操作。