ABP Zero 本地化语言的初始化和扩展

简介: 在aspnetboilerplate.com生成后,在core下的本地化文件增加选项即可   初始化方法 解析: var currentCultureName = Thread.CurrentThread.

 在aspnetboilerplate.com生成后,在core下的本地化文件增加选项即可

 

初始化方法

解析:

 var currentCultureName = Thread.CurrentThread.CurrentUICulture.Name;

解决:

Global.asax设置

protected virtual void Application_BeginRequest(object sender, EventArgs e)
        {
            var langCookie = Request.Cookies["Abp.Localization.CultureName"];
            if (langCookie != null && GlobalizationHelper.IsValidCultureCode(langCookie.Value))
            {
                Thread.CurrentThread.CurrentCulture = new CultureInfo(langCookie.Value);
                Thread.CurrentThread.CurrentUICulture = new CultureInfo(langCookie.Value);
            }
        }

原方法重写

 protected override void Application_BeginRequest(object sender, EventArgs e)
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
        }


参考:http://www.ctosay.cn/content/50650577840524115454.html

 

 

WEB项目拥有自己的本地化

本地化过程

1.在Web项目下创建文件夹Localization,再创建子目录Source,在Source下创建相对的xml文件

2.在Web项目下自动生成的基类控制器TestControllerBase

 protected TestControllerBase()
        {
            LocalizationSourceName = TestWebConsts.LocalizationSourceName;
        }

3. 在 ZeroWebModule下进行初始化

public override void PreInitialize()
        {
            //Enable database based localization 
            Configuration.Modules.Zero().LanguageManagement.EnableDbLocalization();
            Configuration.Localization.Languages.Add(new LanguageInfo("zh-CN", "简体中文", isDefault: true));
            Configuration.Localization.Sources.Add(
                new DictionaryBasedLocalizationSource(
                    TestWebConsts.LocalizationSourceName,
                    new XmlEmbeddedFileLocalizationDictionaryProvider(
                        Assembly.GetExecutingAssembly(),
                        "Test.Web.Localization.Source"
                        )
                    )
                );
    }

这步非常重要,TestWebConsts是自定义类

 public class TestWebConsts
    {
        public const string LocalizationSourceName = "Test.Web";
    }

这里的LocalizationSourceName不能和core项目下的一样,否则会出错

 

本地化资源文件的属性“生成操作”设置为“嵌入的资源”

"Test.Web.Localization.Source"   //这里是本地化资源文件的目录 = 项目名+路径

常见问题

1.Logs.txt提示Can not find 'xx' in localization source 'xxxx.Web'!

 

相关文章
|
1月前
|
存储 缓存 JSON
Abp源码分析之Abp本地化
【11月更文挑战第5天】Abp 框架的本地化功能允许应用程序根据用户的语言和地区设置展示不同语言的文本,提升用户体验。其核心组件包括资源文件、本地化管理器和语言提供程序。资源文件存储本地化文本,本地化管理器负责加载和缓存文本,语言提供程序确定用户语言。通过依赖注入和视图层的支持,本地化功能可以无缝集成到应用中。
|
1月前
|
JavaScript 开发者 索引
鸿蒙next版开发:ArkTS组件通用属性(复用标识)
在HarmonyOS 5.0中,ArkTS的复用标识(Reused Identifier)是关键机制,用于标识和引用组件,特别是在列表渲染和组件复用中。本文详细解读了复用标识的通用属性和作用,并提供了示例代码,帮助开发者提高应用性能和效率。
88 1
|
3月前
|
缓存 Java 数据库连接
扩展类的附加特性
扩展类的附加特性
21 0
|
6月前
|
算法 C#
C#开源实用的工具类库,集成超过1000多种扩展方法
C#开源实用的工具类库,集成超过1000多种扩展方法
|
7月前
|
JavaScript 前端开发 开发者
TypeScript基础(四)扩展类型 - 类
TypeScript是一种静态类型的编程语言,它是JavaScript的超集,可以编译成纯JavaScript代码。TypeScript引入了类的概念,使得开发者可以使用面向对象的方式来编写代码。本文将介绍TypeScript的类、继承、访问修饰符和访问器的用法。
78 5
|
7月前
|
JavaScript 前端开发 编译器
TypeScript基础(三)扩展类型-接口和类型兼容性
在TypeScript中,接口(Interface)用于定义对象的结构和类型。它是一种约定,用于描述对象应该具有哪些属性和方法。接口可以提高代码的可读性、可维护性和可重用性。 接口的定义使用关键字interface,后面跟着接口的名称和一对花括号。在花括号中,可以定义接口的属性、方法和其他成员。
85 0
|
Dart
[Flutter]足够入门的Dart语言系列之面向对象:类的定义详解、成员和实例使用
类表示的是分类,一类问题或事物,它是对具体或现实世界的抽象。比如动物类、犬科动物类、猫科动物类、房子类、数学类,类是具体事物的描述,它不是指具体的某个动物、某栋房子、某个数学题,而是对它们的概括...
354 0
[Flutter]足够入门的Dart语言系列之面向对象:类的定义详解、成员和实例使用
|
Go C# 图形学
Unity3D中对系统类进行扩展教程(简化代码逻辑)
Unity中对系统类进行扩展的方法 Unity扩展系统类,简化代码 本文提供全流程,中文翻译。 助力快速完成 Unity 对系统类进行扩展,添加函 新建一个脚本,名称随意 类必须设为静态 Static ,函数同样(这样才能通过其他类,直接访问到扩展函数) 形参为 this + 需要扩展的类 此时,我们通过 transform.
1480 0
|
前端开发 自然语言处理 定位技术
Yii2语言国际化自动配置
转转发 Yii2语言国际化自动配置 如何实现语言国际自动化,大家可能觉得自动化,是不是不需要配置就自动切换,这个思路我之前也想过,能不能根据IP来判断地理位置然后确定其语言,网上找过一个"IpToCountry"相关的...
1198 0
CheckListView扩展之框架修改
我之前写过一个自定义的选框列表https://www.jianshu.com/p/e4cebd5d79bc 当时我说功能就我能想到哪些就先把哪些可能需要的功能怼进去,然后在实战中,我发现它不能满足我所有的需求,所以这个框架要改。
991 0