ReSharper 2024.1 Help

Code Inspection: Element is localizable

Category

Potential Code Quality Issues

ID

LocalizableElement

EditorConfig

resharper_localizable_element_highlighting

Default severity

Warning

Language

Resource files, C#, VB.NET

Requires SWA

No

This inspection detects hard-coded string literals and suggests moving them to resource files. If the same string is already defined in resources, ReSharper will suggest replacing the literal with the existing resource entry.

As not every string needs to be moved to resources and localized, ReSharper provides several ways to configure this inspection. When the 'Element is localizable' inspection is enabled, it works according to the flow chart below. Each step in the algorithm is explained under the chart.

ReSharper: How the 'Element is localizable' inspection works
  1. Verbatim strings are prefixed with @, for example @"Hello world"

  2. By default, verbatim strings are ignored by the localization inspection, but you can change it using the Don't analyze verbatim strings option on the Code Editing | Inspection Severity page of ReSharper options Alt+R, O.

  3. The Localizable project property defines how to treat strings in a project. To change this property, right-click the project in the Solution Explorer, select Edit project item properties, and then choose Localizable > [Default | Yes | No].

  4. If the current project or any other project that it references contains at least one resource file (.resx), ReSharper will consider the project as localizable by default.

  5. Further configuration is possible for specific functions and properties that can consume string values by marking them with LocalizableAttribute, which lets you explicitly enable [Localizable(true)] or disable [Localizable(false)] the localization inspection on the consumed strings.

    Note that symbols could be marked with this attribute via external annotations. For example, external annotations are used to mark Console.WriteLine with [Localizable(true)].

  6. The Localizable Inspector project property defines how to treat string literals that are not consumed by any member marked with LocalizableAttributeOptimistic algorithm will ignore such strings, Pessimistic will flag them as localizable.

    To change this project property, right-click the project in the Solution Explorer, select Edit project item properties, and then choose Localizable Inspector > [Optimistic | Pessimistic].

The easiest way to disable localization inspection for the current project is to press Alt+Enter over a highlighted string in the editor and use the corresponding command in the action list:

ReSharper: Disabling localization inspection for project

This command sets the Localizable property in the current project to No.

Last modified: 15 April 2024