-EDIT 2- 내 대답을 확인하십시오. I에 유래에 대한 질문을 중지해야, 난 항상 나중에 몇 분 :C# 지역화가 작동하지 않습니다.
을 알아낼 I (물론, 약, 상단의 감지 및 모든 포함)에 다음 코드를 가지고 :
Manager = new ResourceManager("EM250.Localization.Application",
Assembly.GetExecutingAssembly());
// CurrentCulture being fr-CA in this case
return Manager.GetString(Key, CurrentCulture);
그래서를 , 내가 만든 사용자 지정 클래스를 사용하여 내 로컬 리 제이션 리소스를 관리합니다.
"Application.resx"와 "Application.fr-CA.resx"의 두 파일이 있습니다. 둘 다 "임베디드 리소스"로 설정됩니다. 코드를 컴파일 할 때 "Library.resources.dll"파일과 함께 "fr-CA"라는 폴더가 생깁니다. 어느 것이 완전히 괜찮습니까.
누구든지 내 코드가 작동하지 않는 이유를 알고 있습니까? 나는 어디에서나 영어 문자열을 얻는다.
ASP.NET 프로젝트가 아니라 실제 WinForms 프로젝트입니다.
-EDIT- 아마이 내 응용 프로그램의 초기화입니다 나머지 코드를 작성해야 :
String LocaleLoad;
if(Configuration.GetString("Language") == null)
{
// Detect which if the computer is set in french.
switch(System.Threading.Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName)
{
case "fr":
LocaleLoad = "fr-CA";
break;
default:
LocaleLoad = "en-CA";
break;
}
}
else
{
LocaleLoad = Configuration.GetString("Language");
}
// Initialize the localization class.
Localization.Initialize(LocaleLoad);
을 그리고 이것은 내 현지화 클래스입니다 : 돈 수동 문화를 설정하면
/// <summary>
/// Initialize the culture info with the specific culture.
/// </summary>
/// <param name="Culture">The culture to load.</param>
public static void Initialize(string Culture)
{
CultureInfo NewCulture = new CultureInfo(Culture);
if(!(Localization.CurrentCulture == null || CurrentCulture.TwoLetterISOLanguageName == NewCulture.TwoLetterISOLanguageName))
{
CurrentCulture = NewCulture;
Thread.CurrentThread.CurrentCulture = NewCulture;
Thread.CurrentThread.CurrentUICulture = NewCulture;
OnCultureChanged();
}
Thread.CurrentThread.CurrentCulture = NewCulture;
Thread.CurrentThread.CurrentUICulture = NewCulture;
CurrentCulture = NewCulture;
foreach(Language Lang in ListLanguages)
{
if(Lang.DisplayName == CurrentCulture.NativeName)
{
CurrentLanguageValue = Lang;
}
}
Manager = new ResourceManager("EM250.Localization.Application", Assembly.GetExecutingAssembly());
}
/// <summary>
/// Get a single entry from the ressource file.
/// </summary>
/// <param name="Key">The value to get from the ressource file.</param>
public static string GetString(string Key)
{
return Manager.GetString(Key, CurrentCulture);
}
실행중인 문화는 무엇입니까? – Oded
en-CA, fr-CA도 얻으려고합니다. 지역 설정을 감지하고 그에 따라 en-CA 또는 fr-CA로 설정하는 코드 조각이 있습니다. 그 부분은 내 CurrentCulture가 지역 설정에 따라 바뀌기 때문에 잘 작동합니다. 또한 응용 프로그램 옵션에서 재정의 할 수 있습니다. – jValdron
글쎄, 문화가'en-CA'이면, 영어를해야합니다. – Oded