title: Inaccessible, Internal, Resource Files?
body: <p>I am building an ASP.NET MVC 4 website with C#. I am localizing all of my static strings in a Resource File (<code>.resx</code>). I use the Visual Studio interface for creating and populating the resource file. In my <code>index.cshtml</code> view, I try to use one of the strings from the resource file, like this:</p>
  
  <pre><code>@using Namespace.To.RESX.File
  
  ...
  
  &lt;h1&gt;@EN_US.GLOBAL_NAME&lt;/h1&gt;
  &lt;h2&gt;&amp;ldquo;@EN_US.GLOBAL_SLOGAN&amp;rdquo;&lt;/h2&gt;
  
  ...
  </code></pre>
  
  <p>I can compile the application, but I get a runtime error when I load the page, saying:</p>
  
  <pre><code>Compiler Error Message: CS0122: 'Namespace.To.RESX.File.EN_US' is inaccessible due to its protection level
  </code></pre>
  
  <p>Looking in the resx designer file, I can see the class and all of its members are marked as <code>internal</code>. I completely understand what the C# access control modifiers do, how they work, etc... but I don't understand why Visual Studio would restrict access to the resource members like this.</p>
  
  <p>Why would Visual Studio do this? Is there an (easy) way to change these access control modifiers, or am I missing the point of resource files completely?</p>