Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.
La propiedad IgnoreCase determina si la comparación de name
con los nombres de los recursos distingue entre mayúsculas y minúsculas o no distingue entre mayúsculas y minúsculas (siendo esta última la opción predeterminada).
Nota:
Los GetString métodos pueden producir más excepciones de las enumeradas. Una razón por la que esto puede ocurrir es si un método al que llama este método produce una excepción. Por ejemplo, se podría producir una FileLoadException excepción si se realizó un error al implementar o instalar un ensamblado satélite, o se podría producir una SerializationException excepción si un tipo definido por el usuario produce una excepción definida por el usuario cuando el tipo se deserializa.
método GetString(String)
Aplicaciones de escritorio
En las aplicaciones de escritorio, el recurso que se devuelve se adapta a la configuración regional de la interfaz de usuario del subproceso actual, tal como se define por la propiedad CultureInfo.CurrentUICulture. Si el recurso no se ha localizado para esa cultura, el administrador de recursos explora un recurso siguiendo los pasos descritos en la sección "Proceso de reserva de respaldo de recursos" del artículo Empaquetado e implementación de recursos. Si no se encuentra ningún conjunto utilizable de recursos localizados, el administrador de recursos recurre a los recursos de la referencia cultural predeterminada. Si el administrador de recursos no puede cargar el conjunto de recursos de la referencia cultural predeterminada, el método produce una MissingManifestResourceException excepción o, si se espera que el conjunto de recursos resida en un ensamblado satélite, una MissingSatelliteAssemblyException excepción. Si el administrador de recursos puede cargar un conjunto de recursos adecuado, pero no encuentra un recurso denominado name
, el método devuelve null
.
Aplicaciones de Windows 8.x
Importante
Aunque la ResourceManager clase se admite en aplicaciones de Windows 8.x, no se recomienda su uso. Use esta clase solo cuando desarrolle proyectos de biblioteca de clases portables que se pueden usar con aplicaciones de Windows 8.x. Para recuperar recursos de aplicaciones de Windows 8.x, use la clase Windows.ApplicationModel.Resources.ResourceLoader en su lugar.
En las aplicaciones de Windows 8.x, el método GetString(String) devuelve el valor de la cadena de recursos name
, localizada para la configuración cultural actual de la interfaz de usuario del llamador. La lista de referencias culturales se deriva de la lista de idiomas preferidos de la interfaz de usuario del sistema operativo. Si el administrador de recursos no puede encontrar una coincidencia para name
, el método devuelve null
.
Ejemplo
En el siguiente ejemplo, se usa el método GetString para recuperar recursos culturales específicos. Consiste en recursos compilados a partir de archivos .txt para las culturas inglés (en), francés (Francia) (fr-FR) y ruso (Rusia) (ru-RU). En el ejemplo, se cambia la cultura actual y la cultura de interfaz de usuario actual a inglés (Estados Unidos), francés (Francia), ruso (Rusia) y sueco (Suecia). A continuación, llama al GetString método para recuperar la cadena localizada, que se muestra junto con el día y el mes actuales. Observe que la salida muestra la cadena localizada adecuada, excepto cuando la referencia cultural actual de la interfaz de usuario es sueca (Suecia). Dado que los recursos de idioma sueco no están disponibles, la aplicación usa en su lugar los recursos de la referencia cultural predeterminada, que es inglés. En el ejemplo se requieren los archivos de recursos basados en texto enumerados en la tabla siguiente. Cada tiene un único recurso de cadena denominado DateStart
.
Cultura | Nombre del archivo | Nombre del recurso | Valor del recurso |
---|---|---|---|
es-ES | DateStrings.txt | DateStart |
Hoy es |
fr-FR | DateStrings.fr-FR.txt | DateStart |
Aujourd'hui, c'est le |
ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Puede usar el siguiente archivo por lotes para compilar el ejemplo de C#. Para Visual Basic, cambie csc
a vbc
, y cambie la extensión del archivo de código fuente de .cs
a .vb
.
resgen DateStrings.txt
csc showdate.cs /resource:DateStrings.resources
md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources
md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources
Este es el código fuente del ejemplo (ShowDate.vb para la versión de Visual Basic o ShowDate.cs para la versión de C#).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class Example
{
public static void Main()
{
string[] cultureNames = [ "en-US", "fr-FR", "ru-RU", "sv-SE" ];
ResourceManager rm = new ResourceManager("DateStrings",
typeof(Example).Assembly);
foreach (var cultureName in cultureNames) {
CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
Console.WriteLine($"Current UI Culture: {CultureInfo.CurrentUICulture.Name}");
string dateString = rm.GetString("DateStart");
Console.WriteLine($"{dateString} {DateTime.Now:M}.\n");
}
}
}
// The example displays output similar to the following:
// Current UI Culture: en-US
// Today is February 03.
//
// Current UI Culture: fr-FR
// Aujourd'hui, c'est le 3 février
//
// Current UI Culture: ru-RU
// Сегодня февраля 03.
//
// Current UI Culture: sv-SE
// Today is den 3 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading
<Assembly:NeutralResourcesLanguage("en")>
Module Example
Public Sub Main()
Dim cultureNames() As String = { "en-US", "fr-FR", "ru-RU", "sv-SE" }
Dim rm As New ResourceManager("DateStrings",
GetType(Example).Assembly)
For Each cultureName In cultureNames
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
Thread.CurrentThread.CurrentCulture = culture
Thread.CurrentThread.CurrentUICulture = culture
Console.WriteLine("Current UI Culture: {0}",
CultureInfo.CurrentUICulture.Name)
Dim dateString As String = rm.GetString("DateStart")
Console.WriteLine("{0} {1:M}.", dateString, Date.Now)
Console.WriteLine()
Next
End Sub
End Module
' The example displays output similar to the following:
' Current UI Culture: en-US
' Today is February 03.
'
' Current UI Culture: fr-FR
' Aujourd'hui, c'est le 3 février
'
' Current UI Culture: ru-RU
' Сегодня февраля 03.
'
' Current UI Culture: sv-SE
' Today is den 3 februari.
método GetString(String, CultureInfo)
Aplicaciones de escritorio
En las aplicaciones de escritorio, si culture
es null
, el método GetString(String, CultureInfo) usa la referencia cultural de interfaz de usuario actual obtenida de la propiedad CultureInfo.CurrentUICulture.
El recurso que se devuelve está localizado para la cultura especificada por el parámetro culture
. Si el recurso no se ha localizado para culture
, el administrador de recursos busca un recurso siguiendo los pasos descritos en la sección "Proceso de retroceso de recursos" del tema Empaquetado e implementación de recursos. Si no se encuentra ningún conjunto utilizable de recursos, el administrador de recursos recurre a los recursos de la referencia cultural predeterminada. Si el administrador de recursos no puede cargar el conjunto de recursos de la referencia cultural predeterminada, el método produce una MissingManifestResourceException excepción o, si se espera que el conjunto de recursos resida en un ensamblado satélite, una MissingSatelliteAssemblyException excepción. Si el administrador de recursos puede cargar un conjunto de recursos adecuado, pero no encuentra un recurso denominado name
, el método devuelve null
.
Aplicaciones de Windows 8.x
Importante
Aunque la ResourceManager clase se admite en aplicaciones de Windows 8.x, no se recomienda su uso. Use esta clase solo cuando desarrolle proyectos de biblioteca de clases portables que se pueden usar con aplicaciones de Windows 8.x. Para recuperar recursos de aplicaciones de Windows 8.x, use la clase Windows.ApplicationModel.Resources.ResourceLoader en su lugar.
En las aplicaciones de Windows 8.x, el método GetString(String, CultureInfo) devuelve el valor del recurso de cadena name
, localizado para la cultura especificada por el parámetro culture
. Si el recurso no está localizado para la culture
cultura, la búsqueda usa toda la lista de lenguajes de respaldo de Windows 8 y se detiene después de buscar en la cultura predeterminada. Si el administrador de recursos no puede encontrar una coincidencia para name
, el método devuelve null
.
Ejemplo
En el siguiente ejemplo, se usa el método GetString(String, CultureInfo) para recuperar recursos culturales específicos. La referencia cultural predeterminada del ejemplo es inglés (en) e incluye ensamblados satélite para las referencias culturales francés (Francia) (fr-FR) y ruso (Rusia) (ru-RU). En el ejemplo se cambia la cultura actual y la cultura de interfaz de usuario actual a ruso (Rusia) antes de llamar a GetString(String, CultureInfo). A continuación, llama al método GetString y al método DateTime.ToString(String, IFormatProvider) y pasa objetos CultureInfo que representan las culturas francesa (Francia) y sueca (Suecia) a cada método. En la salida, el mes y el día del mes, así como la cadena que los precede aparecen en francés, ya que el GetString método puede recuperar el recurso de idioma francés. Sin embargo, cuando se usa la referencia cultural sueca (Suecia), el mes y el día del mes aparecen en sueco, aunque la cadena que los precede está en inglés. Esto se debe a que el administrador de recursos no encuentra recursos de idioma sueco localizados, por lo que devuelve un recurso para la referencia cultural predeterminada en inglés en su lugar.
En el ejemplo se requieren los archivos de recursos basados en texto enumerados en la tabla siguiente. Cada tiene un único recurso de cadena denominado DateStart
.
Cultura | Nombre del archivo | Nombre del recurso | Valor del recurso |
---|---|---|---|
es-ES | DateStrings.txt | DateStart |
Hoy es |
fr-FR | DateStrings.fr-FR.txt | DateStart |
Aujourd'hui, c'est le |
ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
Puede usar el siguiente archivo por lotes para compilar el ejemplo de Visual Basic. Para compilar en C#, cambie vbc
a csc
, y cambie la extensión del archivo de código fuente de .vb
a .cs
.
resgen DateStrings.txt
vbc showdate.vb /resource:DateStrings.resources
md fr-FR
resgen DateStrings.fr-FR.txt
al /out:fr-FR\Showdate.resources.dll /culture:fr-FR /embed:DateStrings.fr-FR.resources
md ru-RU
resgen DateStrings.ru-RU.txt
al /out:ru-RU\Showdate.resources.dll /culture:ru-RU /embed:DateStrings.ru-RU.resources
Este es el código fuente del ejemplo (ShowDate.vb para la versión de Visual Basic o ShowDate.cs para la versión de C#).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
public class Example2
{
public static void Main()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");
string[] cultureNames = [ "fr-FR", "sv-SE" ];
ResourceManager rm = new ResourceManager("DateStrings",
typeof(Example).Assembly);
foreach (var cultureName in cultureNames)
{
CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
string dateString = rm.GetString("DateStart", culture);
Console.WriteLine($"{culture.DisplayName}: {dateString} {DateTime.Now.ToString("M", culture)}.");
Console.WriteLine();
}
}
}
// The example displays output similar to the following:
// French (France): Aujourd'hui, c'est le 7 février.
//
// Swedish (Sweden): Today is den 7 februari.
Imports System.Globalization
Imports System.Resources
Imports System.Threading
Module Example2
Public Sub Main()
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU")
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")
Dim cultureNames() As String = {"fr-FR", "sv-SE"}
Dim rm As New ResourceManager("DateStrings",
GetType(Example).Assembly)
For Each cultureName In cultureNames
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture(cultureName)
Dim dateString As String = rm.GetString("DateStart", culture)
Console.WriteLine("{0}: {1} {2}.", culture.DisplayName, dateString,
Date.Now.ToString("M", culture))
Console.WriteLine()
Next
End Sub
End Module
' The example displays output similar to the following:
' French (France): Aujourd'hui, c'est le 7 février.
'
' Swedish (Sweden): Today is den 7 februari.