ResourceManager.GetString 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 문화권이나 현재 UI 문화권에 대한 지정된 문자열 리소스를 반환합니다.
오버로드
| GetString(String) |
지정된 문자열 리소스의 값을 반환합니다. |
| GetString(String, CultureInfo) |
지정된 문화권에 대해 지역화된 문자열 리소스의 값을 반환합니다. |
GetString(String)
지정된 문자열 리소스의 값을 반환합니다.
public:
System::String ^ GetString(System::String ^ name);
public:
virtual System::String ^ GetString(System::String ^ name);
public string GetString (string name);
public virtual string? GetString (string name);
public virtual string GetString (string name);
member this.GetString : string -> string
abstract member GetString : string -> string
override this.GetString : string -> string
Public Function GetString (name As String) As String
Public Overridable Function GetString (name As String) As String
매개 변수
- name
- String
검색할 리소스의 이름입니다.
반환
호출자의 현재 UI 문화권에 맞게 지역화된 리소스의 값이거나, 리소스 집합에서 name을 찾을 수 없으면 null입니다.
예외
name 매개 변수가 null인 경우
지정된 리소스의 값이 문자열이 아닌 경우
사용할 수 있는 리소스 집합을 찾을 수 없고 기본 문화권에 대한 리소스가 없는 경우 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.
기본 문화권의 리소스가 찾을 수 없는 위성 어셈블리에 있을 경우 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.
예제
다음 예제에서는 메서드를 GetString 사용하여 문화권별 리소스를 검색합니다. 영어(en), 프랑스어(프랑스)(fr-FR) 및 러시아어(러시아)(ru-RU) 문화권에 대한 .txt 파일에서 컴파일된 리소스로 구성됩니다. 이 예제에서는 현재 문화권과 현재 UI 문화권을 영어(미국), 프랑스어(프랑스), 러시아어(러시아) 및 스웨덴어(스웨덴)로 변경합니다. 그런 다음 메서드를 GetString 호출하여 지역화된 문자열을 검색합니다. 이 문자열은 현재 일 및 월과 함께 표시됩니다. 현재 UI 문화권이 스웨덴어(스웨덴)인 경우를 제외하고 출력에 적절한 지역화된 문자열이 표시됩니다. 스웨덴어 언어 리소스를 사용할 수 없으므로 앱은 대신 영어인 기본 문화권의 리소스를 사용합니다. 이 예제에서는 다음 표에 나열된 텍스트 기반 리소스 파일이 필요합니다. 각각에는 라는 단일 문자열 리소스가 있습니다 DateStart.
| 문화권 | 파일 이름 | 리소스 이름 | 리소스 값 |
|---|---|---|---|
| ko-KR | DateStrings.txt | DateStart |
현재는 |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
오주르드후이, c'est le |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
다음 일괄 처리 파일을 사용하여 C# 예제를 컴파일할 수 있습니다. Visual Basic의 경우 csc 를 vbc로 변경하고, 소스 코드 파일의 확장을 .cs 에서 .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
다음은 예제의 소스 코드입니다(Visual Basic 버전의 경우 ShowDate.vb 또는 C# 버전의 경우 ShowDate.cs).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
[assembly:NeutralResourcesLanguage("en")]
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: {0}",
CultureInfo.CurrentUICulture.Name);
string dateString = rm.GetString("DateStart");
Console.WriteLine("{0} {1:M}.\n", dateString, DateTime.Now);
}
}
}
// 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.
설명
데스크톱 앱
데스크톱 앱에서 반환되는 리소스는 속성에 정의된 대로 현재 스레드의 UI 문화권에 CultureInfo.CurrentUICulture 대해 지역화됩니다. 리소스가 해당 문화권에 대해 지역화되지 않은 경우 리소스 관리자는 리소스 패키징 및 배포 문서의 "리소스 대체 프로세스" 섹션에 설명된 단계에 따라 리소스를 검색합니다. 사용할 수 있는 지역화된 리소스 집합이 없으면 리소스 관리자는 기본 문화권의 리소스로 돌아갑니다. 리소스 관리자가 기본 문화권의 리소스 집합을 로드할 수 없는 경우 메서드는 예외를 MissingManifestResourceException throw하거나 리소스 집합이 위성 어셈블리에 상주해야 하는 경우 예외를 MissingSatelliteAssemblyException throw합니다. 리소스 관리자가 적절한 리소스 집합을 로드할 수 있지만 이름이 지정된 name리소스를 찾을 수 없는 경우 메서드가 반환됩니다 null.
이 속성은 IgnoreCase 리소스 이름과의 name 비교가 대/소문자를 구분하지 않는지(기본값) 또는 대/소문자를 구분하는지를 결정합니다.
주의
이 메서드는 나열된 것보다 더 많은 예외를 throw할 수 있습니다. 이 문제가 발생할 수 있는 한 가지 이유는 이 메서드가 호출하는 메서드가 예외를 throw하는 경우입니다. 예를 들어 FileLoadException 위성 어셈블리를 배포하거나 설치하는 동안 오류가 발생하는 경우 예외가 throw되거나, SerializationException 형식이 역직렬화될 때 사용자 정의 형식이 사용자 정의 예외를 throw하는 경우 예외가 throw될 수 있습니다.
Windows 8.x 앱
중요
클래스는 ResourceManager Windows 8.x 앱에서 지원되지만 사용하지 않는 것이 좋습니다. Windows 8.x 앱에서 사용할 수 있는 이식 가능한 클래스 라이브러리 프로젝트를 개발하는 경우에만 이 클래스를 사용합니다. Windows 8.x 앱에서 리소스를 검색하려면 Windows 사용합니다. 대신 ApplicationModel.Resources.ResourceLoader 클래스입니다.
Windows 8.x 앱 GetString(String) 에서 메서드는 호출자의 현재 UI 문화권 설정에 대해 지역화된 문자열 리소스의 값을 name 반환합니다. 문화권 목록은 운영 체제의 기본 설정 UI 언어 목록에서 파생됩니다. 리소스 관리자가 일치 name할 수 없으면 메서드가 반환됩니다 null.
스레드 보안
이 메서드는 GetString(String) 스레드로부터 안전합니다.
추가 정보
적용 대상
GetString(String, CultureInfo)
지정된 문화권에 대해 지역화된 문자열 리소스의 값을 반환합니다.
public:
virtual System::String ^ GetString(System::String ^ name, System::Globalization::CultureInfo ^ culture);
public virtual string GetString (string name, System.Globalization.CultureInfo culture);
public virtual string? GetString (string name, System.Globalization.CultureInfo? culture);
abstract member GetString : string * System.Globalization.CultureInfo -> string
override this.GetString : string * System.Globalization.CultureInfo -> string
Public Overridable Function GetString (name As String, culture As CultureInfo) As String
매개 변수
- name
- String
검색할 리소스의 이름입니다.
- culture
- CultureInfo
지역화하는 리소스에 대한 문화권을 나타내는 개체입니다.
반환
지정된 문화권에 맞게 지역화된 리소스의 값이거나, 리소스 집합에서 name을 찾을 수 없으면 null입니다.
예외
name 매개 변수가 null인 경우
지정된 리소스의 값이 문자열이 아닌 경우
사용할 수 있는 리소스 집합을 찾을 수 없고 기본 문화권에 대한 리소스가 없는 경우 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.
기본 문화권의 리소스가 찾을 수 없는 위성 어셈블리에 있을 경우 이 예외를 처리하는 방법에 대한 자세한 내용은 ResourceManager 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 단원을 참조하십시오.
예제
다음 예제에서는 메서드를 GetString(String, CultureInfo) 사용하여 문화권별 리소스를 검색합니다. 이 예제의 기본 문화권은 영어(en)이며 프랑스어(프랑스)(fr-FR) 및 러시아어(러시아)(ru-RU) 문화권에 대한 위성 어셈블리를 포함합니다. 이 예제에서는 호출하기 전에 현재 문화권 및 현재 UI 문화권을 러시아어(러시아)로 GetString(String, CultureInfo)변경합니다. 그런 다음 메서드와 메서드를 DateTime.ToString(String, IFormatProvider) 호출 GetString 하고 프랑스(프랑스) 및 스웨덴어(스웨덴) 문화권을 나타내는 개체를 각 메서드에 전달 CultureInfo 합니다. 메서드가 프랑스어 리소스를 검색할 수 있기 때문에 GetString 출력에서 해당 월과 일 및 그 앞에 오는 문자열은 프랑스어로 표시됩니다. 그러나 스웨덴어(스웨덴) 문화권이 사용되는 경우 월과 날짜는 스웨덴어로 표시되지만 앞에 오는 문자열은 영어로 표시됩니다. 리소스 관리자가 지역화된 스웨덴어 리소스를 찾을 수 없으므로 기본 영어 문화권에 대한 리소스를 대신 반환하기 때문입니다.
이 예제에서는 다음 표에 나열된 텍스트 기반 리소스 파일이 필요합니다. 각각에는 라는 단일 문자열 리소스가 있습니다 DateStart.
| 문화권 | 파일 이름 | 리소스 이름 | 리소스 값 |
|---|---|---|---|
| ko-KR | DateStrings.txt | DateStart |
현재 |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
오주르드후이, c'est le |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
다음 일괄 처리 파일을 사용하여 Visual Basic 예제를 컴파일할 수 있습니다. C#으로 컴파일하려면 소스 코드 파일의 확장자를 로 .vb 변경 vbc csc하고 변경합니다.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
다음은 예제의 소스 코드입니다(Visual Basic 버전의 경우 ShowDate.vb 또는 C# 버전의 경우 ShowDate.cs).
using System;
using System.Globalization;
using System.Resources;
using System.Threading;
[assembly:NeutralResourcesLanguage("en")]
public class Example
{
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("{0}: {1} {2}.", 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
<Assembly:NeutralResourcesLanguage("en")>
Module Example
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.
설명
데스크톱 앱
데스크톱 앱의 경우 culture 메서드는 nullGetString(String, CultureInfo) 속성에서 가져온 현재 UI 문화권을 CultureInfo.CurrentUICulture 사용합니다.
반환되는 리소스는 매개 변수로 지정된 문화권에 대해 지역화됩니다 culture . 리소스가 지역화 culture되지 않은 경우 리소스 관리자는 리소스 패키징 및 배포 항목의 "리소스 대체 프로세스" 섹션에 설명된 단계에 따라 리소스를 검색합니다. 사용할 수 있는 리소스 집합이 없으면 리소스 관리자는 기본 문화권의 리소스로 돌아갑니다. 리소스 관리자가 기본 문화권의 리소스 집합을 로드할 수 없는 경우 메서드는 예외를 MissingManifestResourceException throw하거나 리소스 집합이 위성 어셈블리에 상주해야 하는 경우 예외를 MissingSatelliteAssemblyException throw합니다. 리소스 관리자가 적절한 리소스 집합을 로드할 수 있지만 이름이 지정된 name리소스를 찾을 수 없는 경우 메서드가 반환됩니다 null.
이 속성은 IgnoreCase 리소스 이름과의 name 비교가 대/소문자를 구분하지 않는지(기본값) 또는 대/소문자를 구분하는지를 결정합니다.
주의
이 메서드는 나열된 것보다 더 많은 예외를 throw할 수 있습니다. 이 문제가 발생할 수 있는 한 가지 이유는 이 메서드가 호출하는 메서드가 예외를 throw하는 경우입니다. 예를 들어 FileLoadException 위성 어셈블리를 배포하거나 설치하는 동안 오류가 발생하는 경우 예외가 throw되거나, SerializationException 형식이 역직렬화될 때 사용자 정의 형식이 사용자 정의 예외를 throw하는 경우 예외가 throw될 수 있습니다.
Windows 8.x 앱
중요
클래스는 ResourceManager Windows 8.x 앱에서 지원되지만 사용하지 않는 것이 좋습니다. Windows 8.x 앱에서 사용할 수 있는 이식 가능한 클래스 라이브러리 프로젝트를 개발하는 경우에만 이 클래스를 사용합니다. Windows 8.x 앱에서 리소스를 검색하려면 Windows 사용합니다. 대신 ApplicationModel.Resources.ResourceLoader 클래스입니다.
Windows 8.x 앱에서 메서드는 GetString(String, CultureInfo) 매개 변수로 지정된 culture 문화권에 대해 지역화된 문자열 리소스의 name 값을 반환합니다. 리소스가 문화권에 대해 culture 지역화되지 않은 경우 조회는 전체 Windows 8 언어 대체 목록을 사용하고 기본 문화권을 살펴본 후 중지됩니다. 리소스 관리자가 일치 name할 수 없으면 메서드가 반환됩니다 null.
스레드 보안
메서드는 GetString(String, CultureInfo) 스레드로부터 안전합니다.