== Why is this an issue?

String literals embedded in the source code will not be localized properly.


This rule raises an issue when a literal string is passed as a parameter or property and one or more of the following cases is true:

* The ``++LocalizableAttribute++`` attribute of the parameter or property is set to true.
* The parameter or property name contains "Text", "Message", or "Caption".
* The name of the string parameter that is passed to a ``++Console.Write++`` or ``++Console.WriteLine++`` method is either "value" or "format".


=== Noncompliant code example

[source,csharp]
----
using System;
using System.Globalization;
using System.Reflection;
using System.Windows.Forms;

[assembly: NeutralResourcesLanguageAttribute("en-US")]
namespace MyLibrary
{
    public class Foo
    {
        public void SetHour(int hour)
        {
            if (hour < 0 || hour > 23)
            {
                MessageBox.Show("The valid range is 0 - 23."); // Noncompliant
            }
        }
    }
}
----


=== Compliant solution

[source,csharp]
----
using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Windows.Forms;



[assembly: NeutralResourcesLanguageAttribute("en-US")]
namespace MyLibrary
{
    public class Foo
    {
        ResourceManager rm;
        public Foo()
        {
            rm = new ResourceManager("en-US", Assembly.GetExecutingAssembly());
        }

        public void SetHour(int hour)
        {
            if (hour < 0 || hour > 23)
            {
                MessageBox.Show(
                rm.GetString("OutOfRangeMessage", CultureInfo.CurrentUICulture));
            }
        }
    }
}
----

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Replace this string literal with a string retrieved through an instance of the "ResourceManager" class.


=== Highlighting

String litteral


endif::env-github,rspecator-view[]
