.NET网站国际化策略

我所在的公司是做SAAS软件,用户群体是面向全球的,因此对应业务系统国际化就是顺理成章的事情。

其实国际化重点在于多语言支持,本文就从这方面入手。

多语言

d104ac40ddc1a00117f4b5e61e3348bf.png

如上解决方案截图,BQoolCommon.Resource是多语言资源工程,下面来看看具体怎么实现:

2.1、定义多语言资源文件

以支持中(繁体、简体)英文为例,定义如下图资源文件

d4741c8a6ccbaf463580cb4404e2ed64.png

资源文件中定义的资源配置项如下:

d9dd747d9bb5aba2d46c23335e8dd4be.png

934b234aa7dc654c323c3bb886bfc519.png

590023edd065ef0e58b8c3ab8038e471.png

生成对应的键值对属性

/// <summary>///   查詢類似 01:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_1 {get {return ResourceManager.GetString("SettingDailyAt_1", resourceCulture);}}/// <summary>///   查詢類似 10:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_10 {get {return ResourceManager.GetString("SettingDailyAt_10", resourceCulture);}}/// <summary>///   查詢類似 11:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_11 {get {return ResourceManager.GetString("SettingDailyAt_11", resourceCulture);}}/// <summary>///   查詢類似 12:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_12 {get {return ResourceManager.GetString("SettingDailyAt_12", resourceCulture);}}/// <summary>///   查詢類似 13:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_13 {get {return ResourceManager.GetString("SettingDailyAt_13", resourceCulture);}}/// <summary>///   查詢類似 14:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_14 {get {return ResourceManager.GetString("SettingDailyAt_14", resourceCulture);}}/// <summary>///   查詢類似 15:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_15 {get {return ResourceManager.GetString("SettingDailyAt_15", resourceCulture);}}/// <summary>///   查詢類似 16:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_16 {get {return ResourceManager.GetString("SettingDailyAt_16", resourceCulture);}}/// <summary>///   查詢類似 17:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_17 {get {return ResourceManager.GetString("SettingDailyAt_17", resourceCulture);}}/// <summary>///   查詢類似 18:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_18 {get {return ResourceManager.GetString("SettingDailyAt_18", resourceCulture);}}/// <summary>///   查詢類似 19:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_19 {get {return ResourceManager.GetString("SettingDailyAt_19", resourceCulture);}}/// <summary>///   查詢類似 02:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_2 {get {return ResourceManager.GetString("SettingDailyAt_2", resourceCulture);}}/// <summary>///   查詢類似 20:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_20 {get {return ResourceManager.GetString("SettingDailyAt_20", resourceCulture);}}/// <summary>///   查詢類似 21:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_21 {get {return ResourceManager.GetString("SettingDailyAt_21", resourceCulture);}}/// <summary>///   查詢類似 22:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_22 {get {return ResourceManager.GetString("SettingDailyAt_22", resourceCulture);}}/// <summary>///   查詢類似 23:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_23 {get {return ResourceManager.GetString("SettingDailyAt_23", resourceCulture);}}/// <summary>///   查詢類似 24:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_24 {get {return ResourceManager.GetString("SettingDailyAt_24", resourceCulture);}}/// <summary>///   查詢類似 03:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_3 {get {return ResourceManager.GetString("SettingDailyAt_3", resourceCulture);}}/// <summary>///   查詢類似 04:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_4 {get {return ResourceManager.GetString("SettingDailyAt_4", resourceCulture);}}/// <summary>///   查詢類似 05:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_5 {get {return ResourceManager.GetString("SettingDailyAt_5", resourceCulture);}}/// <summary>///   查詢類似 06:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_6 {get {return ResourceManager.GetString("SettingDailyAt_6", resourceCulture);}}/// <summary>///   查詢類似 07:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_7 {get {return ResourceManager.GetString("SettingDailyAt_7", resourceCulture);}}/// <summary>///   查詢類似 08:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_8 {get {return ResourceManager.GetString("SettingDailyAt_8", resourceCulture);}}/// <summary>///   查詢類似 09:00 的當地語系化字串。/// </summary>public static string SettingDailyAt_9 {get {return ResourceManager.GetString("SettingDailyAt_9", resourceCulture);}}

2.2、使用

项目当中引用对应的资源类库

ba8499cf04383d7a8a02300d8e71d0e6.png

使用翻译文本

a8192ee61805bc1179af89a5b3eab1dd.png

<div class="line01"></div>
<div class="button_area align_r">@CommonUIHelper.BuildCloseColorboxButton(PreferenceElement.Cancel)<button class="button02 jqAddFilter">@FavoriteFilterElement.Save</button>
</div>

设置可供用户设置的语言选项

3ff5622e98c0ffd9aedd840e16329895.png

用户选择对应语系的时候,进行语系切换,如下英文切换

#region set Culture en-USThread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");#endregion set Culture en-US

效果如下

025753cc6dd14e85db35fa7943fd38e4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将数字转化为液晶显示屏的样子

发一个很蛋疼的程序&#xff0c;将一个数字转化为液晶显示屏显示的样子&#xff1a;第一个输入是尺寸&#xff0c;第二输入是要转化的数字&#xff0c;当两个参数都为0的时候结束输入&#xff1a; #include<iostream> using namespace std;struct Print{int size;int num…

计算机标准符合,计算机专利申请要符合哪些标准

需要具体分析&#xff0c;例如&#xff0c;外观专利申请流程&#xff1a;&#xff11;、外观设计专利申请受理阶段专利局收到专利申请后进行审查&#xff0c;如果符合受理条件&#xff0c;专利局将确定申请日&#xff0c;给予申请号&#xff0c;并且核实过文件清单后&#xff0…

史上最强电池!三位诺贝尔奖获奖者研究了大半辈子,却坦言还是没看懂?

全世界只有3.14 % 的人关注了爆炸吧知识手机患了忧郁症电量总剩1%晚上十点半了&#xff0c;还剩10%的电量&#xff0c;等我用完这些电就睡觉..5%了&#xff0c;这个推文看完应该就没电了1%了&#xff0c;算了再看一个&#xff0c;还没关机呢看完了&#xff0c;还是1%&#xff0…

libgdx 学习笔记七 libgdx应用程序生命周期

简介 本章内容描述libGDX 应用程序的结构和怎么根据不同的平台版本使用不同的后台 The Application 做为任意libGDX 工程的主入口点。Application 决定平台的版本和后台图形。Application 接口提供了合适的方法来访问Graphics, Audio, Input and File I/O模块。也提供了跨平台的…

工业相机与民用相机的区别_工业相机和普通相机的区别详解

在机器视觉迅猛发展的今天&#xff0c;工业相机作为机器视觉的核心组件已得到广泛应用&#xff0c;但是很多初学者还是搞不清楚究竟工业相机与普通相机有什么区别。下面小编就带大家一起去看看工业相机和普通相机的区别吧&#xff01;工业相机一、工业相机和普通相机的区别之性…

50个Android应用!Win11支持运行了

文 | 局长出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013&#xff09;Android 应用现已支持在 Windows 11 上运行。微软今日宣布&#xff0c;美国地区 Windows 11 Beta 通道的预览版已支持运行 Android 应用。正如公告所说&#xff0c;如需体验在 Windows 11 上运行…

javascript规范以及设计原则

UI layer的分离 针对CSS: 尽量不要在JS中的添加过多的动态CSS&#xff0c;可以考虑使用addClass 针对JS中的事件&#xff1a; Keep JavaScript Out of HTML 避免以下的代码 <!-- Bad --><button οnclick"doSomething()" id"action-btn">Click…

服务器的类型及作用是什么,按用途分类,服务器有哪些? - 问答库

问题&#xff1a;[问答题] 按用途分类&#xff0c;服务器有哪些&#xff1f;某工程包含两个单项工程&#xff0c;分别发包给甲、乙两个承包商。在施工中发生如下事件。事件一&#xff1a;该工程签约时的计算工程价款为1000万元&#xff0c;该工程固定要素的系数为0.2&#xff1…

删除

【题目描述】 现在&#xff0c;我的 上有 n 个数字&#xff0c;分别是 a1; a2; a3; :::; an。 我现在需要删除其中的 k 个数字。当然我不希望随随便便删除&#xff0c;我希望删除 k 数字之后&#xff0c;剩下的 n k 个数中有最多的不同的数 【输入格式】 第 两个正整数 n 和 …

你发现了吗?数学还能这么美

全世界只有3.14 % 的人关注了爆炸吧知识变身吧傅里叶&#xff01;不&#xff0c;不是变成夜礼服。图片作者&#xff1a;LucasVB和某些公然嘲笑应用的数学家不同&#xff0c;傅里叶特别重视应用领域&#xff0c;而他的傅里叶变换也不负众望成了工程和物理领域里最重要的数学公式…

clickhouse建库_ClickHouse高性能数据库

前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse&#xff0c;接下来进行简单的性能测试。测试数据来源于美国民用航班的数据&#xff0c;从1987年到2017年&#xff0c;有1.7亿条。环境&#xff1a;centos 6.3&#xff0c;32G内存&#xff0c;24核下载脚本&#xff1…

SingnalR 开发到生产部署闭坑指南

前天倒腾了一份[SignalR在react/go技术栈的实践01SignalR默认要协商传输方式SignalR 默认要求协商传输方式[1]不管是.NET客户端还是JavaScript客户端&#xff0c;构建连接时都存在一个默认配置&#xff1a;SkipNegotiationfasle&#xff0c;负负得正就等于要求协商&#xff0c;…

DB2 pureScale在线备份恢复实例1

刚刚接触DB2&#xff0c;对DB2的备份恢复机制不是太熟悉&#xff0c;相关的资料又太少&#xff0c;只好自己慢慢摸索了。 需求 对生产库进行在线压缩备份&#xff0c;备份中包含归档日志&#xff0c;定期将生产库备份恢复到测试环境&#xff0c;确保测试环境采用最新的生产数据…

华为服务器参数配置文件,最实用的华为配置基础手册.doc

经过Console 口登录应用环境用户需要经过Console 口登录到S-switch&#xff0c;图1-1 所表示。图1-1 经过Console 口登录到S-switch说明假如S-switch 是第一次上电&#xff0c;而且用户需要管理和配置S-switch&#xff0c;则用户只能经过Console 口登录到S-switch。背景信息在经…

Hibernate统计表中的条数

&#xfeff;&#xfeff;/** * 判断积分日志表中是否有某个用户的注册日志 */Transactional(propagation Propagation.REQUIRED)public boolean isExistRegPointLog(int userId, UserAction addReg) { try { String hql "select count(pl) from PointLog pl WHERE pl.…

SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践

SQL Server性能调优之执行计划深度剖析 第二节 执行计划第一次实践前言:自从上一篇文章发出之后&#xff0c;收到了很朋友的关注。很多朋友要求多多实践&#xff0c;而不是纯粹的理论。确实&#xff0c;从打算出这个系列开始&#xff0c;我就本着实践的思想来进行的&#xff01…

超炫物理动态图!收藏吧,吓死宝宝了...

全世界只有3.14 % 的人关注了爆炸吧知识让我们玩的有水平、有姿势&#xff0c;在玩儿的时候产生好奇心&#xff0c;下面20个简单实用的科学小游戏是不错的选择哟。友情提示&#xff1a;部分实验有危险&#xff0c;请在专业人士指导下谨慎操作~1.防火气球水能将火的热能吸收&…

promtail 配置详解_基于loki+promtail+grafana技术的日志集合

一、背景和动机近期运维工作中&#xff0c;随着项目的不停优化以及上线。在与后端、测试协同工作的交流中发现&#xff0c;为了测试以及解决项目在上线过程中或者试运行中出现的bug报错问题&#xff0c;开发同事对于日志的分析有着很大的需求。但是现在公司的日志查看主要是给予…

《Redis核心技术与实战》学习总结(2)

【Redis】| 总结/Edison Zhou1上一篇的遗留问题上一篇总结了一个KV数据库的基本架构 和 Redis的底层数据结构概览&#xff0c;重点总结了Sorted Set的两个数据结构的切换&#xff0c;但没有介绍List的两个数据结构的切换&#xff0c;因此本文试着总结一下。这里先直接给出答案&…

【转】sqlserver游标概念与实例全面解说

引言 我们先不讲游标的什么概念&#xff0c;步骤及语法&#xff0c;先来看一个例子&#xff1a; 表一 OriginSalary 表二 AddSalary 现在有2张表&#xff0c;一张是OriginSalary表--工资表&#xff0c;有三个字段0_ID 员工…