我有两个项目:
如何IStringLocalizer在MyServices中添加本地化?.resx文件必须在哪里?
我正在尝试使用.NET Core的新本地化功能,但在Microsoft在此处提供的简单示例之外,https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization#resource-file-命名。
我的Controllers在一个单独的项目ProjectA.Controllers中,而我的共享资源类在一个公共项目ProjectB.Localization中。我已经按照文档中的说明配置了启动类。
我不清楚要为资源文件命名的名称以及确切放置在何处。我已经配置了存储在目录“ Resources”中的选项。是在Web项目中还是我的SharedResource类所在的ProjectB.Localization中?文档说如果是单独的程序集,则应使用完整的名称空间。因此,我将其命名为“ WorldCart.Facilities.Localization.SharedResource.es.resx”,并将其放置在网站的资源文件夹中。
当我运行Web应用程序并在家庭控制器中进行调试时,没有得到翻译后的字符串,而是得到了英语版本。
有任何想法吗?
按照有关如何使用 .NET Core 实现全球化和本地化的文档,我的目标是将所有资源存储在位于不同项目(类库)中的单个全局资源文件中。
项目 1 - Startup.cs
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
if (env.IsEnvironment("Development"))
{
builder.AddApplicationInsightsSettings(developerMode: true);
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetry(Configuration);
services.AddLocalization(lo => lo.ResourcesPath = "/MYCLASSLIBRARY"); //External project ~ How?
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
services.Configure<RequestLocalizationOptions>(
opts => …Run Code Online (Sandbox Code Playgroud)