ResourceManager.GetString 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 문화권 또는 현재 UI 문화권에 대해 지정된 문자열 리소스를 반환합니다.
오버로드
| Name | Description |
|---|---|
| GetString(String) |
지정된 문자열 리소스의 값을 반환합니다. |
| GetString(String, CultureInfo) |
지정된 문화권에 대해 지역화된 문자열 리소스의 값을 반환합니다. |
GetString(String)
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
지정된 문자열 리소스의 값을 반환합니다.
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 문화권에 대해 지역화된 리소스의 값이거나 null 리소스 집합에서 찾을 수 없는 경우 name 입니다.
예외
매개 변수는 name .입니다 null.
지정된 리소스의 값이 문자열이 아닙니다.
사용 가능한 리소스 집합을 찾을 수 없으며 기본 문화권에 대한 리소스가 없습니다. 이 예외를 처리하는 방법에 대한 자세한 내용은 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 섹션을 ResourceManager 참조하세요.
기본 문화권의 리소스는 찾을 수 없는 위성 어셈블리에 있습니다. 이 예외를 처리하는 방법에 대한 자세한 내용은 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 섹션을 ResourceManager 참조하세요.
설명
IgnoreCase 속성은 리소스 이름과 name 비교가 대/소문자를 구분하지 않는지(기본값) 또는 대/소문자를 구분하는지를 결정합니다.
메모
GetString 메서드는 나열된 것보다 더 많은 예외를 throw할 수 있습니다. 이 문제가 발생할 수 있는 한 가지 이유는 이 메서드가 호출하는 메서드가 예외를 발생시키는 경우입니다. 예를 들어 위성 어셈블리를 배포하거나 설치하는 동안 오류가 발생하면 FileLoadException 예외가 throw되거나, 형식이 역직렬화될 때 사용자 정의 형식이 사용자 정의 예외를 throw하는 경우 SerializationException 예외가 throw될 수 있습니다.
GetString(String) 메서드
데스크톱 앱
데스크톱 앱에서 반환되는 리소스는 CultureInfo.CurrentUICulture 속성에 정의된 대로 현재 스레드의 UI 문화권에 대해 지역화됩니다. 리소스가 해당 문화권에 대해 지역화되지 않은 경우 리소스 관리자는 패키징 및 리소스 배포 문서의 "리소스 대체 프로세스" 섹션에 설명된 단계에 따라 리소스를 검색합니다. 사용할 수 있는 지역화된 리소스 집합이 없으면 리소스 관리자는 기본 문화권의 리소스를 다시 사용합니다. 리소스 관리자가 기본 문화권의 리소스 집합을 로드할 수 없는 경우 메서드는 MissingManifestResourceException 예외를 throw하거나, 리소스 집합이 위성 어셈블리에 상주해야 하는 경우 MissingSatelliteAssemblyException 예외입니다. 리소스 관리자가 적절한 리소스 집합을 로드할 수 있지만 name리소스를 찾을 수 없는 경우 메서드는 null반환합니다.
Example
다음 예제에서는 GetString 메서드를 사용하여 문화권별 리소스를 검색합니다. 영어(en), 프랑스어(프랑스) (fr-FR) 및 러시아어(러시아)(ru-RU) 문화권에 대한 .txt 파일에서 컴파일된 리소스로 구성됩니다. 이 예제에서는 현재 문화권과 현재 UI 문화권을 영어(미국), 프랑스어(프랑스), 러시아어(러시아) 및 스웨덴어(스웨덴)로 변경합니다. 그런 다음 GetString 메서드를 호출하여 지역화된 문자열을 검색합니다. 이 문자열은 현재 날짜 및 월과 함께 표시됩니다. 현재 UI 문화권이 스웨덴어(스웨덴)인 경우를 제외하고 출력에 적절한 지역화된 문자열이 표시됩니다. 스웨덴어 언어 리소스를 사용할 수 없으므로 앱은 대신 영어인 기본 문화권의 리소스를 사용합니다. 이 예제에서는 다음 표에 나열된 텍스트 기반 리소스 파일이 필요합니다. 각각에는 DateStart이라는 단일 문자열 리소스가 있습니다.
| Culture | 파일 이름 | 리소스 이름 | 리소스 값 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
현재는 다음과 입니다. |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
오늘은 |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
다음 일괄 처리 파일을 사용하여 C# 예제를 컴파일할 수 있습니다. Visual Basic의 경우 cscvbc변경하고 소스 코드 파일의 확장명은 .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;
public class ShowTimeExample
{
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.
GetString(String, CultureInfo) 메서드
데스크톱 앱
데스크톱 앱에서 culturenull경우 GetString(String, CultureInfo) 메서드는 CultureInfo.CurrentUICulture 속성에서 가져온 현재 UI 문화권을 사용합니다.
반환되는 리소스는 culture 매개 변수로 지정된 문화권에 대해 지역화됩니다. 리소스가 culture대해 지역화되지 않은 경우 리소스 관리자는 패키징 및 리소스 배포 항목의 "리소스 대체 프로세스" 섹션에 설명된 단계에 따라 리소스를 검색합니다. 사용할 수 있는 리소스 집합을 찾을 수 없는 경우 리소스 관리자는 기본 문화권의 리소스로 돌아갑니다. 리소스 관리자가 기본 문화권의 리소스 집합을 로드할 수 없는 경우 메서드는 MissingManifestResourceException 예외를 throw하거나, 리소스 집합이 위성 어셈블리에 상주해야 하는 경우 MissingSatelliteAssemblyException 예외입니다. 리소스 관리자가 적절한 리소스 집합을 로드할 수 있지만 name리소스를 찾을 수 없는 경우 메서드는 null반환합니다.
Example
다음 예제에서는 GetString(String, CultureInfo) 메서드를 사용하여 문화권별 리소스를 검색합니다. 이 예제의 기본 문화권은 영어(en)이며 프랑스어(프랑스)(fr-FR) 및 러시아어(러시아)(ru-RU) 문화권에 대한 위성 어셈블리를 포함합니다. 이 예제에서는 GetString(String, CultureInfo)호출하기 전에 현재 문화권 및 현재 UI 문화권을 러시아어(러시아)로 변경합니다. 그런 다음 GetString 메서드와 DateTime.ToString(String, IFormatProvider) 메서드를 호출하고 프랑스(프랑스) 및 스웨덴(스웨덴) 문화권을 나타내는 CultureInfo 개체를 각 메서드에 전달합니다. 출력에서는 GetString 메서드가 프랑스어 리소스를 검색할 수 있기 때문에 해당 월과 일 및 그 앞에 오는 문자열이 프랑스어로 표시됩니다. 그러나 스웨덴어(스웨덴) 문화권이 사용되는 경우 월과 날짜는 스웨덴어로 표시되지만 앞에 오는 문자열은 영어로 표시됩니다. 이는 리소스 관리자가 지역화된 스웨덴어 리소스를 찾을 수 없기 때문에 기본 영어 문화권에 대한 리소스를 대신 반환하기 때문입니다.
이 예제에서는 다음 표에 나열된 텍스트 기반 리소스 파일이 필요합니다. 각각에는 DateStart이라는 단일 문자열 리소스가 있습니다.
| Culture | 파일 이름 | 리소스 이름 | 리소스 값 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
현재는 다음과 입니다. |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
오늘은 |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
다음 일괄 처리 파일을 사용하여 Visual Basic 예제를 컴파일할 수 있습니다. C#으로 컴파일하려면 vbccsc변경하고 소스 코드 파일의 확장을 .vb.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;
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.
스레드 보안
이 GetString(String) 메서드는 스레드로부터 안전합니다.
추가 정보
적용 대상
GetString(String, CultureInfo)
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
- Source:
- ResourceManager.cs
지정된 문화권에 대해 지역화된 문자열 리소스의 값을 반환합니다.
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
리소스가 지역화된 문화권을 나타내는 개체입니다.
반품
지정된 문화권에 대해 지역화된 리소스의 값이거나 null 리소스 집합에서 찾을 수 없는 경우 name 입니다.
예외
매개 변수는 name .입니다 null.
지정된 리소스의 값이 문자열이 아닙니다.
사용 가능한 리소스 집합을 찾을 수 없으며 기본 문화권에 대한 리소스가 없습니다. 이 예외를 처리하는 방법에 대한 자세한 내용은 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 섹션을 ResourceManager 참조하세요.
기본 문화권의 리소스는 찾을 수 없는 위성 어셈블리에 있습니다. 이 예외를 처리하는 방법에 대한 자세한 내용은 클래스 항목의 "MissingManifestResourceException 및 MissingSatelliteAssemblyException 예외 처리" 섹션을 ResourceManager 참조하세요.
설명
IgnoreCase 속성은 리소스 이름과 name 비교가 대/소문자를 구분하지 않는지(기본값) 또는 대/소문자를 구분하는지를 결정합니다.
메모
GetString 메서드는 나열된 것보다 더 많은 예외를 throw할 수 있습니다. 이 문제가 발생할 수 있는 한 가지 이유는 이 메서드가 호출하는 메서드가 예외를 발생시키는 경우입니다. 예를 들어 위성 어셈블리를 배포하거나 설치하는 동안 오류가 발생하면 FileLoadException 예외가 throw되거나, 형식이 역직렬화될 때 사용자 정의 형식이 사용자 정의 예외를 throw하는 경우 SerializationException 예외가 throw될 수 있습니다.
GetString(String) 메서드
데스크톱 앱
데스크톱 앱에서 반환되는 리소스는 CultureInfo.CurrentUICulture 속성에 정의된 대로 현재 스레드의 UI 문화권에 대해 지역화됩니다. 리소스가 해당 문화권에 대해 지역화되지 않은 경우 리소스 관리자는 패키징 및 리소스 배포 문서의 "리소스 대체 프로세스" 섹션에 설명된 단계에 따라 리소스를 검색합니다. 사용할 수 있는 지역화된 리소스 집합이 없으면 리소스 관리자는 기본 문화권의 리소스를 다시 사용합니다. 리소스 관리자가 기본 문화권의 리소스 집합을 로드할 수 없는 경우 메서드는 MissingManifestResourceException 예외를 throw하거나, 리소스 집합이 위성 어셈블리에 상주해야 하는 경우 MissingSatelliteAssemblyException 예외입니다. 리소스 관리자가 적절한 리소스 집합을 로드할 수 있지만 name리소스를 찾을 수 없는 경우 메서드는 null반환합니다.
Example
다음 예제에서는 GetString 메서드를 사용하여 문화권별 리소스를 검색합니다. 영어(en), 프랑스어(프랑스) (fr-FR) 및 러시아어(러시아)(ru-RU) 문화권에 대한 .txt 파일에서 컴파일된 리소스로 구성됩니다. 이 예제에서는 현재 문화권과 현재 UI 문화권을 영어(미국), 프랑스어(프랑스), 러시아어(러시아) 및 스웨덴어(스웨덴)로 변경합니다. 그런 다음 GetString 메서드를 호출하여 지역화된 문자열을 검색합니다. 이 문자열은 현재 날짜 및 월과 함께 표시됩니다. 현재 UI 문화권이 스웨덴어(스웨덴)인 경우를 제외하고 출력에 적절한 지역화된 문자열이 표시됩니다. 스웨덴어 언어 리소스를 사용할 수 없으므로 앱은 대신 영어인 기본 문화권의 리소스를 사용합니다. 이 예제에서는 다음 표에 나열된 텍스트 기반 리소스 파일이 필요합니다. 각각에는 DateStart이라는 단일 문자열 리소스가 있습니다.
| Culture | 파일 이름 | 리소스 이름 | 리소스 값 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
현재는 다음과 입니다. |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
오늘은 |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
다음 일괄 처리 파일을 사용하여 C# 예제를 컴파일할 수 있습니다. Visual Basic의 경우 cscvbc변경하고 소스 코드 파일의 확장명은 .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;
public class ShowTimeExample
{
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.
GetString(String, CultureInfo) 메서드
데스크톱 앱
데스크톱 앱에서 culturenull경우 GetString(String, CultureInfo) 메서드는 CultureInfo.CurrentUICulture 속성에서 가져온 현재 UI 문화권을 사용합니다.
반환되는 리소스는 culture 매개 변수로 지정된 문화권에 대해 지역화됩니다. 리소스가 culture대해 지역화되지 않은 경우 리소스 관리자는 패키징 및 리소스 배포 항목의 "리소스 대체 프로세스" 섹션에 설명된 단계에 따라 리소스를 검색합니다. 사용할 수 있는 리소스 집합을 찾을 수 없는 경우 리소스 관리자는 기본 문화권의 리소스로 돌아갑니다. 리소스 관리자가 기본 문화권의 리소스 집합을 로드할 수 없는 경우 메서드는 MissingManifestResourceException 예외를 throw하거나, 리소스 집합이 위성 어셈블리에 상주해야 하는 경우 MissingSatelliteAssemblyException 예외입니다. 리소스 관리자가 적절한 리소스 집합을 로드할 수 있지만 name리소스를 찾을 수 없는 경우 메서드는 null반환합니다.
Example
다음 예제에서는 GetString(String, CultureInfo) 메서드를 사용하여 문화권별 리소스를 검색합니다. 이 예제의 기본 문화권은 영어(en)이며 프랑스어(프랑스)(fr-FR) 및 러시아어(러시아)(ru-RU) 문화권에 대한 위성 어셈블리를 포함합니다. 이 예제에서는 GetString(String, CultureInfo)호출하기 전에 현재 문화권 및 현재 UI 문화권을 러시아어(러시아)로 변경합니다. 그런 다음 GetString 메서드와 DateTime.ToString(String, IFormatProvider) 메서드를 호출하고 프랑스(프랑스) 및 스웨덴(스웨덴) 문화권을 나타내는 CultureInfo 개체를 각 메서드에 전달합니다. 출력에서는 GetString 메서드가 프랑스어 리소스를 검색할 수 있기 때문에 해당 월과 일 및 그 앞에 오는 문자열이 프랑스어로 표시됩니다. 그러나 스웨덴어(스웨덴) 문화권이 사용되는 경우 월과 날짜는 스웨덴어로 표시되지만 앞에 오는 문자열은 영어로 표시됩니다. 이는 리소스 관리자가 지역화된 스웨덴어 리소스를 찾을 수 없기 때문에 기본 영어 문화권에 대한 리소스를 대신 반환하기 때문입니다.
이 예제에서는 다음 표에 나열된 텍스트 기반 리소스 파일이 필요합니다. 각각에는 DateStart이라는 단일 문자열 리소스가 있습니다.
| Culture | 파일 이름 | 리소스 이름 | 리소스 값 |
|---|---|---|---|
| en-US | DateStrings.txt | DateStart |
현재는 다음과 입니다. |
| fr-FR | DateStrings.fr-FR.txt | DateStart |
오늘은 |
| ru-RU | DateStrings.ru-RU.txt | DateStart |
Сегодня |
다음 일괄 처리 파일을 사용하여 Visual Basic 예제를 컴파일할 수 있습니다. C#으로 컴파일하려면 vbccsc변경하고 소스 코드 파일의 확장을 .vb.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;
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.
스레드 보안
이 GetString(String, CultureInfo) 메서드는 스레드로부터 안전합니다.