ReSharper 2018.2 Help

Move to Resource refactoring

ReSharper | Refactor | Move…
F6
ReSharper_Move

It is a common practice to store localizable strings in resource files when working on project internalization. ReSharper detects strings to be localized and highlights them, so you can easily find and move such strings from your source code to resource files. ReSharper will declare the corresponding resource entry and replace the string in the code with a resource usage.

You can set the naming pattern for the created resources on the Code Editing | Localization page of ReSharper options.

There are two algorithms that can be applied when ReSharper searches for localizable strings: Pessimistic and Optimistic. If the Pessimistic algorithm is chosen, ReSharper looks for localizable strings in all elements, except those which have the attribute Localizable(false). If the Optimistic algorithm is chosen, ReSharper analyzes only elements with the attribute Localizable(true). Depending on these settings, ReSharper defines whether a specific string is localizable, highlights localizable strings and enables the corresponding quick-fix.

By default, the Optimistic algorithm is selected. To change the algorithm for the project, right-click the project in the Solution Explorer, select Edit project item properties in the context menu, and then choose Pessimistic in the Localizable Inspector selector.

To move string to resource

  1. Place the caret at the string that should be localized.

  2. If a string is highlighted, you can use the corresponding quick-fix. Otherwise, choose ReSharper | Refactor | Move… in the main menu or press F6.

  3. In the Move to resource dialog that appears, ReSharper automatically generates the name for the resource entry and proposes a resource file. If necessary, you can change the name in the Name text box and choose other resource file in the Resource File drop-down list.

    Resources Refactorings Move to Resource 02

    You can specify the template for resource names on the Code Editing | Localization page of ReSharper options.

  4. Optionally, you can change the resource string value in the Value text area and add a comment in the Comment text area.

  5. Optionally, you can specify whether to search for identical strings and the search scope by selecting the value in the Find identical items in drop-down list.

  6. Click Next to apply the refactoring.

  7. If you selected the Find identical items in option and ReSharper finds any matching strings defined within the specified scope, you will be able to choose which of these strings should be replaced with usages of the new resource.

After applying the refactoring, specified occurrences of the string are replaced with corresponding resource usages and the new resource declaration appears in the specified .resx file.

ReSharper provides the same functionality for ValidationAttribute and its inheritors. Pay attention, that access modifier in the .resx file should be Public, otherwise, the refactoring will not be available.

After the new resource is created you can override its value for other cultures. For more information, see Override Resource Entry.

This feature is supported in the following languages and technologies:

Language: C#

Language: VB.NET

Language: C++

Language: HTML

Language: ASP.NET

Language: Razor

Language: JavaScript

Language: TypeScript

Language: CSS

Language: XML

Language: XAML

Language: Resx

Language: Build Scripts

Language: Protobuf

Language: JSON

Feature is available

Feature is available

Feature is not available

Feature is not available

Feature is available

Feature is available

Feature is available

Feature is available

Feature is not available

Feature is not available

Feature is available

Feature is not available

Feature is not available

Feature is not available

Feature is not available

The instructions and examples given here address the use of the feature in C#. For details specific to other languages, see corresponding topics in the ReSharper by Language section.

Last modified: 21 December 2018

See Also