Dotnet 핵심 현지화
5233 단어 dotnetcoredotnetlocalization
리소스 파일에 텍스트 메시지를 저장할 수 있습니다. 리소스 레코드는 두 부분으로 구성됩니다. 이름과 값. 사실 이 부분(댓글)이 하나 더 있는데 아마 이 부분은 안 쓰실 것 같습니다.
다음과 같은 예제 리소스 파일:
다른 언어에 대한 리소스 파일을 만들 수 있습니다.
Resource.resx, Resource.de.resx, Resource.es.resx 등
현지화를 제대로 적용하려면 리소스 파일의 이름이 동일해야 합니다. 로컬라이저가 리소스 콘텐츠를 찾지 못하면 null을 반환합니다. 이 프로젝트를 단계별로 설명하겠습니다. https://github.com/emreerkoca/LocalizationExample 간단한 Dotnet Core Web Api 프로젝트입니다.
namespace LocalizationExample.Localize
{
public class Resource
{
}
}
원하는 경우 다른 이름을 사용할 수 있지만 리소스 이름과 리소스가 적합해야 합니다. 이 빈 클래스를 통해 리소스 콘텐츠에 도달하게 됩니다.
리소스 이름: Localize.Resource.de.resx
클래스의 네임스페이스는 LocalizationExample.Localize이고 클래스 이름은 Resource.cs입니다.
이 코드 블록을 Startup.cs 파일의 boldConfigureServices(IServiceCollection services)bold 메서드에 추가합니다.
services.AddLocalization(options =>
{
options.ResourcesPath = "Resources";
});
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("de")
};
options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
로컬라이저에 지원되는 언어를 추가하는 것입니다. 리소스 파일을 표시합니다. 기본 언어를 선택합니다.
이 코드 블록을 boldConfigure(IApplicationBuilder app, IWebHostEnvironment env)bold 메서드에 추가합니다.
var locOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(locOptions.Value);
로컬라이저의 문화 정보를 자동으로 설정하기 위한 것입니다. 모든 요청 헤더 값으로 문화 정보를 설정할 수 있습니다.
리소스 파일에 도달하기 위해 IStringLocalizer 인터페이스를 사용했습니다. 여기에서 사용 예를 볼 수 있습니다. 종속성을 추가하고 리소스 필드 이름을 호출합니다.
private readonly IStringLocalizer<Resource> _stringLocalizer;
public HomeController(IStringLocalizer<Resource> stringLocalizer)
{
_stringLocalizer = stringLocalizer;
}
[HttpGet]
public string Get()
{
var value = _stringLocalizer["Hello"];
return value;
}
Get() 메서드는 "Hello!"를 반환합니다. 영어가 기본 문화권이고 영어 리소스 값이 "Hello!"이기 때문입니다. 요청 URL에 "culture=de"를 추가하면 culture가 "de"로 변경되고 "Hallo!"가 표시됩니다. 메시지.
원하는 경우 "Accept-Language"헤더에서 현재 언어를 감지할 수 있습니다. 구성을 변경할 수 있습니다.
다음과 같이 ConfigureServices 구성 부분을 변경합니다.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddLocalization(options =>
{
options.ResourcesPath = "Resources";
});
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("de")
};
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders.Insert(0, new CustomRequestCultureProvider(context =>
{
var languages = context.Request.Headers["Accept-Language"].ToString();
var currentLanguage = languages.Split(',').FirstOrDefault();
var defaultLanguage = string.IsNullOrEmpty(currentLanguage) ? "en-US" : currentLanguage;
if (defaultLanguage != "de" && defaultLanguage != "en-US")
{
defaultLanguage = "en-US";
}
return Task.FromResult(new ProviderCultureResult(defaultLanguage, defaultLanguage));
}));
});
}
"Accept-Language"헤더 값을 읽고 기본 언어를 가져옵니다. 언어 변수 뒤에 중단점을 놓고 값을 확인합니다. 다른 브라우저 언어로 변경할 수 있습니다. CustomRequestCultureProvider, ProviderCultureResult 등을 읽을 때 혼란스럽다면 공식 Microsoft 문서에서 읽을 수 있습니다.
이제 요청 URL에 culture 매개변수를 추가할 필요가 없습니다. 영어 및 독일어 브라우저에서 값을 가져올 수 있습니다.
자세한 내용은 이 문서를 참조하십시오.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization?view=aspnetcore-5.0
이 후 할 말이 없습니다. 도움이 되었기를 바랍니다.
Reference
이 문제에 관하여(Dotnet 핵심 현지화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/emreerkoca/dotnet-core-localization-4p8p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)