精华内容
下载资源
问答
  • .NET CORE 多语言实现方案.pdf
  • .NET CORE 多语言实现方案

    千次阅读 2019-07-21 07:00:00
    根据市场需求,基于.NET CORE平台开发的RoadFlow工作流平台需要实现多语言版本。经过方案讨论和比对,决定采用.NET自带的本地化功能来实现多语言。话不多说,直...

    根据市场需求,基于.NET CORE平台开发的RoadFlow工作流平台需要实现多语言版本。经过方案讨论和比对,决定采用.NET自带的本地化功能来实现多语言。话不多说,直接上实现方式。

    首先修改Startup.cs

    640?wx_fmt=png

    在public void ConfigureServices(IServiceCollection services)方法中加入:

    
     

    640?wx_fmt=png

    
     
    
     

    640?wx_fmt=png

    
     

    到这里启动文件就设置好了。

    在根目录下新建Language目录,用于存放语言包

    640?wx_fmt=png

     语言包下的目录结构和MVC对应,控制器对应控制器,视图对应视图。

     目录下新建资源文件:

    640?wx_fmt=png

     CORE加载资源文件的方式有三种:URL,Cookie,请求头。我们这里采用Cookie。所以在打开首页的时候写了一个Cookie:

    
     
    
     

    640?wx_fmt=png

    在控制器中加入:

    
     

    640?wx_fmt=png

    
     

    接下来在使用语言的地方:

     640?wx_fmt=png

     _localizer["资源文件中定义的名称"]就可以读取到相应的语言了。

    在视图中使用:

    640?wx_fmt=png

    视图顶部引用:

    在要使用语言的地方就可以使用了:

    640?wx_fmt=png

    原文地址:https://www.cnblogs.com/roadflow/p/11216173.html


    .NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

    640?wx_fmt=jpeg

    展开全文
  • 这里本文使用Microsoft.AspNetCore.Localization来实现多语言的解决方案 默认是包含这个包的,所有不需要再额外安装 首先需要注入我们需要的服务 1.在startup.cs中注入 public void ConfigureServices...

    引用自:https://www.cnblogs.com/ives/p/language.html

    这里本文使用Microsoft.AspNetCore.Localization来实现多语言的解决方案

    默认是包含这个包的,所有不需要再额外安装

    首先需要注入我们需要的服务

    1.在startup.cs中注入

     

    public void ConfigureServices(IServiceCollection services)
    {
                //设置语言包文件夹名称
                services.AddLocalization(o =>
                {
                    o.ResourcesPath = "Language";
                });services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    这里的路径是根据项目根目录寻找的相对路径,设置成最后语言文件保存的路径即可

    然后在Configure中添加我们需要的语言文件的文件名,后面会再次提及文件名,

    然后可以指定默认使用的语言文件DefaultRequestCulture

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                IList<CultureInfo> supportedCultures = new List<CultureInfo>
                {
                    new CultureInfo("zh-CN"),
                    new CultureInfo("zh"),
                    new CultureInfo("en-US")
                };
                app.UseRequestLocalization(new RequestLocalizationOptions
                {
                    //这里指定默认语言包
                    DefaultRequestCulture = new RequestCulture("zh-CN"),
                    SupportedCultures = supportedCultures,
                    SupportedUICultures = supportedCultures
                });

                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }

                app.UseMvc();
            }

    至此我们完成了需要的配置,然后添加最重要的语言文件,

    语言文件有两种添加方式

    1.根据使用的控制器名称进行命名,如默认的ValuesController,则语言文件需要命名为Controllers.ValuesController.zh-CN.resx

    2.可以在我们保存语言文件的路径下创建一级Controllers目录,然后语言文件在名称上就可以去掉开头的Controllers.

    虽然这种方式也不太美观,不过也算好了一步,其实也可以自己手写注入,然后通过过滤器实现类似的效果

    接下来在语言文件中添加我们需要的数据进行测试

    在en-US中添加

    在另外两个文件中添加相同的名称

    接下来测试调用,这里我们有三种方法可以告知服务端需要使用哪一个语言文件

    1.cookie

    2.http报文

    3.url参数

    在控制器中注入语言文件

    [Route("api/[controller]")]
        [ApiController]
        public class ValuesController : ControllerBase
        {
            private readonly IStringLocalizer<ValuesController> _localizer;

            public ValuesController(IStringLocalizer<ValuesController> localizer)
            {
                _localizer = localizer;
            }

            // GET api/values
            [HttpGet]
            public string Get()
            {
                return _localizer["Error"].Value;
            }
        }

    使用注入的对象就可以获取我们需要的键

    _localizer["Error"]
    我们需要显示的数据保存在Value属性中

     访问页面显示如下

    这里是因为我们设置的默认语言,所以加载了中文文件

    接下来通过url参数传递来访问不同的语言,加上参数culture=en-US

    这样便会自动返回英文的结果

     需要注意的是参数传递可以用三种写法,效果一致

    ?culture=zh-CN&ui-culture=zh-CN
     
    ?culture=zh-CN
     
    ?ui-culture=zh-CN

    如果是使用cookie方式的话,使用cookie名称.AspNetCore.Culture,值如下

    c=zh-CN|uic=zh-CN
    c=zh-CN
    uic=zh-CN

    如果是使用http请求的话,则和常见请求一样添加Accept-Language请求头即可

    Accept-Language:zh-CN

     

    展开全文
  • 参考作者 dotNET跨平台 的博客 &... 体验 ASP.NET Core 中的多语言支持(Localization) 但是一直显示英语吗??? #### 继续参考 StackOverflow 的 ASP .NET Core default language is always English  ...

    参考作者 dotNET跨平台 的博客 >> 体验 ASP.NET Core 中的多语言支持(Localization)

    但是一直显示英语吗??? ####

    继续参考 StackOverflow 的 ASP .NET Core default language is always English

     

    展开全文
  • 其实在.NET Core有更好的多语言实现方式 #新建项目(.NET Core MVC) #在项目根目录新建Resources, 在Resources目录里面添加Program.en-US.resx ||Program.zh-Hans.resx ||Program.xx-XX.resx等等你要使用的资源文件...

     

    其实在.NET Core有更好的多语言实现方式

    #新建项目(.NET Core MVC)

    #在项目根目录新建Resources, 在Resources目录里面添加Program.en-US.resx || Program.zh-Hans.resx || Program.xx-XX.resx等等你要使用的资源文件(中缀要符合 RFC 4646, 你也可以自己起中缀, 但是效果不出来不要怪我)

    #这是我的Startup.cs(部分)

    __________________________>>
             

    
                services.AddLocalization(options => options.ResourcesPath = "Resources");
                services.AddMvc()
                    .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); })
                    .AddDataAnnotationsLocalization(options =>
                    {
                        options.DataAnnotationLocalizerProvider = (type, factory) =>
                            factory.Create(typeof(Program));
                    })
                    .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
                    .AddSessionStateTempDataProvider()
                    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    
    
                services.Configure<RequestLocalizationOptions>(opts =>{
                   var supportedCultures = new List<CultureInfo>
                   {
                            new CultureInfo("en-US"),
                            new CultureInfo("zh-Hans")
                   };
                   opts.SupportedCultures = supportedCultures;
                   opts.SupportedUICultures = supportedCultures;
                   opts.RequestCultureProviders = new List<IRequestCultureProvider>{
                           new X_DOVERequestCultureProvider()
                    };
               });

    >>

    //注意位置

     app.UseRequestLocalization(); //   app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>().Value);
    
                app.UseMvc(routes =>
                {
                    routes.MapRoute(
                        name: "default",
                        template: "{controller=Home}/{action=Index}/{id?}");
                });

    __________________________

    #Model >>

      public class XAdCustomer    //  ViewModel
        {
            public Guid Id { get; set; } = Guid.NewGuid();
    
            //    Program.xx-XX.resx里面添加Display的Name值, 下同
            [Display(Name = "Store name")]   
            [StringLength(maximumLength:20,MinimumLength =2)]
            public string Name { get; set; }
    
            [NotMapped]
            [Display(Name="Registrant")]
            public string UserName{get;set;}
    
    
            [Display(Name="Date of registering")]
            public DateTimeOffset DORegistering { get; set; } = DateTimeOffset.Now;
    
            [Display(Name = "Business address")]
            public string Address { get; set; }
    
            [Display(Name= "Introduction")]
            [StringLength(maximumLength:128)]
            public string Intro { get; set; }
            
            // . . .
        }
    

    #Controlers>>

     private readonly IStringLocalizer<Program>  _localizer;
     public HomeController(IStringLocalizer<Program> localizer)
     {
            _localizer = localizer;
     }
     public IActionResult Index()
     {
            ViewData["Hello"] = _localizer["Hello"];
            return View();
     }

    #Views>>

    这是我的_ViewImports.cshtml


    @using Microsoft.Extensions.Localization;
    @using xxxxx.Program;

    @inject IStringLocalizer<Program> Localizer;

    @*如果在Area里面使用也是同样using和inject这三个*@

    好了, 在你喜欢的Views中@Localizer["xxxx"]就可以了, 

    #贴一下X_DOVERequestCultureProvider.cs

     public class X_DOVERequestCultureProvider : RequestCultureProvider
        {
            public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
            {
                var CULTURE_String="CULTURE";
                var CultureCookie = httpContext.Request.Cookies[CULTURE_String]?.ToString() ?? ""; 
                if (string.IsNullOrWhiteSpace(CultureCookie))
                {
                    CultureCookie = "zh-Hans";
                    httpContext.Response.Cookies.Append(key:CULTURE_String, value:CultureCookie, options: new CookieOptions() { Expires = DateTime.Now.AddYears(1) });
                }
                return Task.FromResult(new ProviderCultureResult(CultureCookie));
            }
        }

    (看得懂吗? js修改Cookies的"CULTURE"的值然后location.reload()就可以换语言)

    现在你不用创建那么多目录, 也不用创建那么多mvc resx了

    如果还有哪里不懂的地方还可以私信我2034643712@qq.com

    转载还请附上链接

    要大四了, 一分钱没有,  过完今天都不知道明天怎么过, 有上顿没下顿

    要大四了, 一分钱没有,  过完今天都不知道明天怎么过, 有上顿没下顿

     

    展开全文
  • 本篇文章主要介绍了ASP.NET Core 中的多语言支持(Localization) ,具有一定的参考价值,有兴趣的可以了解一下
  • asp.net core 实现支持多语言.pdf
  • 本篇文章主要介绍了Asp.Net Core MVC项目实现多语言实例(Globalization/Localization) ,具有一定的参考价值,有兴趣的可以了解一下
  • dotnetcore3.1 WPF 实现多语言.pdf
  • asp.net core 实现支持多语言Intro最近有一个外国友人通过邮件联系我,想用我的活动室预约,但是还没支持多语言,基本上都是写死的中文,所以最近想支持一下更多语言,于是有了多语...
  • .net core 实现基于 JSON 的多语言.pdf
  • dotnetcore3.1 WPF 实现多语言Intro最近把 DbTool 从 WinForm 迁移到了 WPF,并更新到了 dotnet core 3.1,并实现了基于 Micros...
  • Xaki是一个.NET库,用于为POCO类添加多语言支持。 它包括一个轻量级服务,用于使用任何ORM在数据库之间持久存储数据和从数据库检索数据。 Xaki与所有版本的Entity Framework均能很好地工作,并包括ASP.NET Core支持...
  • 体验 ASP.NET Core 中的多语言支持(Localization).pdf
  • 在.net core中, 生成或者发布的时候含有大量的其他语言包, 如下图这种 解决 为项目指定所需的语言。 双击项目,编辑.csproj文件 在 PropertyGroup 节点下添加指定语言包 <SatelliteResourceLanguages>zh-...
  • ApacheSkyWalking APM 生态衍生多语言监控, 支持 .NET Core.pdf
  • 先说说 asp.net core 默认的多语言和国际化。官方文档 一:基本使用方法 先要安装 包Microsoft.AspNetCore.Mvc.Localization (依赖 Microsoft.Extensions.Localization) 然后使用 资源文件保存不同的语言对应的...
  • .net core全球化-多语言

    2020-04-11 17:00:23
    public void ConfigureServices(IServiceCollection services) { services.AddLocalization(); } public void Configure(IApplicationBui...
  • 经过两个月的辛苦努力.NET Core工作流引擎(RoadFlow)多语言版发布了,在原来只有一种简体中文语言的基础上增加了繁体中文和英文两种语言,还可以通过扩展增加任意语言包。至此RoadFlow工作流正式迈向国际化。 ...
  • [译]使用LazZiya.ExpressLocalization开发多语言支持的ASP.NET Core 2.x项目.pdf
  • 这是我在ASP.NET Core中实现的多语言网站的完整源代码 托管:Azure,App Service,美国西部2 实际观看 依存关系 在本地运行 $ docker-compose -f development/docker-compose.yaml up --build $ cd src/...
  • Apache SkyWalking .NET core 探针发布! GitHub: https://github.com/apache/incubator-skywal...
  • 然后在 _Layout.cshtml 视图中通过 IViewLocalizer 接口以多语言的方式显示页面标题的后缀: @using Microsoft.AspNetCore.Mvc.Localization @inject IViewLocalizer Localizer <!DOCTYPE html> ...
  • angular多语言配置详解

    2020-11-28 05:55:47
    npm install @ngx-translate/core --save 在根模块中导入: // other module import {TranslateModule} from '@ngx-translate/core'; @NgModule({ declarations: [ AppComponent, ], imports: [ // other ...
  • QT的多语言实现

    2017-12-11 16:42:37
    基本流程是:先生成ts文件,然后生成qm文件,最后通过QTranslator类来加载qm文件,实现多语言包的切换在Qt Creator中生成多国语言包1生成ts文件在QT的项目文件(.pro)中添加:TRANSLATIONS = XXX.ts YYY.ts(如果是...
  • 随着互联网的迅速普及,目前(2019)国内的越来越多网络公司都开始走出国门,开辟海外市场,然而在出海之前需要解决的重大问题之一就是多语言环境。以往只有大型的跨国公司才会在项目中使用多语言国际化方案,现在这样的...
  • Angular 5 多语言国际化小结

    千次阅读 2018-04-24 17:10:37
    项目多语言国际化:ngx-translate1.安装npm install --save @ngx-translate/core npm install --save @ngx-translate/http-loader 需要注意的是,如果是Angular 5.x的版本,需要指定 ng-translate版本为9.x。当前...
  • SpringMVC多语言配置

    千次阅读 2015-11-11 10:24:50
    /**功能: 动态改变系统的语言*/ @Controller @RequestMapping("/") public class ChangeLanguageControl { protected Logger logger = LoggerFactory.getLogger(getClass().getName()); @RequestMapping...
  • TP多语言

    千次阅读 2013-05-31 22:58:52
    多语言:同样的内容,由于在不同的地区我们显示不同的翻译结果 总结一下:ThinpPHP给我们提供了哪些扩展 1,给我们封装好的功能类:Image.class.php UploadFile.class.php 2,驱动扩展类:类似于smarty, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 173,370
精华内容 69,348
关键字:

core多语言