C# Winforms 本地化 多语言支持 字符串资源
初级代码游戏的专栏介绍与文章目录-CSDN博客
我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
源码指引:github源码指引_初级代码游戏的博客-CSDN博客
一般我们写程序最初都是单语言的,中文版,完成以后考虑多语言的时候发现要改的地方太多了。
如果只是为了一次性翻译成英文版还比较简单,改文字呗,工作量大点而已。
但是如果是要正式支持多语言,那就涉及到太多修改了。
所以最好一开始就按照多语言方式开发。
Winforms程序的本地化分两种情况:一种是窗体的本地化,一种是其他资源(主要是字符串)的本地化。
这两种都是基于资源文件实现本地化的,只不过由于窗体具有单独的编辑工具,所以操作有所不同。
目录
一、资源文件本地化机制
二、窗体的本地化
三、字符串本地化
四、程序代码读取字符串资源
五、闲话
一、资源文件本地化机制
资源文件的本地化机制是通过资源文件名称来识别,资源文件名称中增加语言和地区名称,运行时自动从最精确的文件找到默认文件,例如:
Resources.resx是项目的默认资源文件,项目创建时自动创建的,Resources.zh-Hans.resx是新建的,中间的“zh-Hans”表示的语言是“中文(简体)”,不带具体地区,如果程序运行时区域和语言选项设置的是简体中文,就会首先在匹配的资源文件里搜索资源,没有才去找默认资源文件。
窗体的资源文件类似:
二、窗体的本地化
窗体的本地化通过窗体的属性进行:
先将Localizable设置为True(默认是False,因为本地化会降低程序运行速度),然后可以选择不同的Language。选择语言以后窗体上的所有控件的资源的修改都会写入到专门的资源文件里(不修改的不写,向上搜索直到默认资源文件)。
当你选择了指定的语言,就会在项目里生成指定语言的资源文件,你做的修改就会写在指定的资源文件里。建议窗体的默认语言用英文,毕竟比较通用啊。
注意,窗体的特定语言的资源文件不会显示在解决方案资源管理器里,因此你可能会无意中创造出多余的资源文件,可以手工在项目文件里删掉(仅仅删除资源文件而不编辑项目文件会导致无法编译,因为缺失文件)。
三、字符串本地化
字符串本地化需要手工增加资源文件,在项目的“Properties”上右键,添加新项:
注意名字,一定要正确,默认的名字是“Resouce”,没有“s”的。
名字不正确系统就识别不到。
中间的语言名称有地方查,我看到过,不过忘了在哪里了。不过没所谓,只要先设置一个窗体的语言,随便修改一个文本,看一下生成的资源文件名字就知道了。
生成了特定语言的资源文件之后,可以双击编辑这个文件,也可以在默认资源文件里编辑。不过都要选择一下显示的列:
不过我发现后来再双击特定语言的资源文件打开的也是默认资源文件,似乎有一点混乱。
反正能编辑就行了啊。
四、程序代码读取字符串资源
程序里读取字符串资源很简单:
string Trial = Resources.ResourceManager.GetString("Trial");string NotTrial = Resources.ResourceManager.GetString("NotTrial");
Resources是项目的命名空间下的Properties的属性。代码贴进去开发环境就会自动加上合适的using语句。
五、闲话
实话说我觉得这些本地化方式都不是很理想。form的方式不方便对照修改,字符串表的方式不方便编辑长字符串。
能在一个界面下同时编辑所有语言的字符串才比较方便,而且源码里的字符串都要再起个名字也不理想,而且只能用字符串名字去调用,如果写错了就得不到字符串,成为一个隐含的大BUG。
(这里是文档结束)
相关文章:
C# Winforms 本地化 多语言支持 字符串资源
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
ts bug 找不到模块或相应类型的声明,@符有红色波浪线
解决方法:在env.d.ts文件中添加以下代码,这段代码是一个 TypeScript 的声明文件,用于让 TypeScript 知道如何处理 Vue 单文件组件(.vue 文件)的导入。 /// <reference types"vite/client" /> // 声明…...
赛灵思 XCZU11EG-2FFVC1760I XilinxFPGAZynq UltraScale+ MPSoC EG
XCZU11EG-2FFVC1760I 是 Zynq UltraScale MPSoC EG 系列中性能最强的器件之一,集成了四核 ARM Cortex-A53 应用处理器、双核 Cortex-R5 实时处理器与 Mali-400 MP2 GPU,并结合了 653,100 个逻辑单元与丰富的片上存储资源,可满足高性能计算、A…...
VSCode|IDEA|PyCharm无缝接入DeepSeek R1实现AI编程
文章目录 前言一、流程简介1. 获取DeepSeek R1的API密钥2. 在编程软件中下载安装 Continue 插件**IDEA**PyCharm 3. 配置Continue文件 二、使用体验利用 DeepSeek R1进行 AI 编程 前言 本文将介绍如何在 VSCode|IDEA|PyCharm 软件中接入 DeepSeek R1 实现 AI 编程,…...
深入浅出 PostgreSQL:从历史演进到高阶优化技术
引言 PostgreSQL 是一个免费开源的对象关系型数据库,既支持传统的 SQL 查询,也支持 JSON 等非关系数据类型,因其高度可扩展性和社区活跃度,已成为众多互联网、金融和企业级应用的首选数据库 (Introduction to PostgreSQL - W3Sch…...
塔能水泵节能方案:精准驱动工厂能耗优化
在工厂的能源消耗体系中,水泵作为关键的动力设备,其运行效率直接关系到整体能耗水平。传统水泵在长期运行中,受设计局限、工艺成本约束等因素影响,普遍存在效率低下、能源浪费严重的问题。塔能科技针对这一痛点,推出了…...
SSCLMD模型代码实现详解
SSCLMD模型代码实现详解 1. 项目源码结构 SSCLMD项目的源码结构如下: SSCLMD-main/ ├── README.md ├── ST4.xlsx ├── Supplementary File.docx ├── code/ │ ├── calculating_similarity.py │ ├── data_preparation.py │ ├── data_…...
【coze】故事卡片(图片、音频、文字)
【coze】故事卡片(图片、音频、文字) 1、创建智能体2、添加人设与回复逻辑3、添加工作流(1)创建工作流(2)添加大模型节点(3)添加提示词优化节点(4)添加豆包图…...
限免开关实施版本保护措施,保证项目灰度发布安全
迭代用户限免权限校验业务 新增限免开关实现普通用户权益更新,实施版本保护措施,保证项目灰度发布安全; // 是否展示限免标识 func (t *BasePrivilegeService) IsPromotionFree(p consumParams) bool {// 限免开关isFreeUseOpen : p.cfg.Vip…...
C#中从本地(两个路径文件夹)中实时拿图显示到窗口中并接收(两个tcp发送的信号)转为字符串显示在窗体中实现检测可视化
多窗口源码 C#中从本地(两个路径文件夹)中实时拿图显示到窗口中并接收(两个tcp发送的信号)转为字符串显示在窗体中实现检测可视化资源-CSDN文库 读图结果展示 字符串结果展示 利用TCP调试工具创建两个tcp 再次启动程序 就链接…...
了解一下OceanBase中的表分区
OceanBase 是一个高性能的分布式关系型数据库,它支持 SQL 标准的大部分功能,包括分区表。分区表可以帮助管理大量数据,提高查询效率,通过将数据分散到不同的物理段中,可以减少查询时的数据扫描量。 在 OceanBase 中操…...
生成了一个AI算法
import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 1. 数据预处理 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) # MNIST单通道归一化 ]) train_da…...
C# 使用SunnyUI控件 (VS 2019)
前言:建议下载源码,源码中包含了各种控件的用法案例。 下载 帮助文档: 文档预览 - Gitee.comGitee: SunnyUI: SunnyUI.NET 是基于.NET Framework 4.0、.NET8、.NET9 框架的 C# WinForm UI、开源控件库、工具类库、扩展类库、多页面开发框架。GitHub: h…...
在 Win11 下安装 Wireshark 的详细步骤
目录 一、了解 Wireshark1. 作用和功能2. 使用步骤 二、下载安装包三、运行安装包四、使用 Wireshark1. 抓包2. 窗口介绍3. 过滤器(显示 / 捕获过滤器)4. 保存过滤后的报文1)显示过滤器表达式2)过滤表达式的规则 5. 封包列表6. 封…...
【AI提示词】六顶思考帽工具专家
提示说明 提供专业的六顶思考帽工具应用服务,帮助用户从多角度进行创新性问题解决。 提示词 # Role: 六顶思考帽工具专家## Profile - language: 中文 - description: 提供专业的六顶思考帽工具应用服务,帮助用户从多角度进行创新性问题解决 - backgr…...
解锁RAG:AI 2.0时代的“知识外挂”是如何炼成的?
——从原理到实战,揭秘检索增强生成如何颠覆传统AI 引言:当AI学会“开卷考试” 如果传统大模型是“闭卷学霸”,那RAG(Retrieval-Augmented Generation,检索增强生成)就是那个考试时带着“百科全书”的超级…...
使用 ANSYS SIwave 求解器在 ANSYS AEDT 中预测串行通道性能并生成眼图
PCB 仿真 如今,无线射频设备日益复杂,对大型复杂 PCB 设计进行准确、高效仿真的需求也随之增加。在设计流程的早期识别和预测潜在问题可以节省资源、时间和金钱。SIwave 可帮助您对现代高性能电子产品中典型的高速通道和完整的输电系统进行建模、仿真和…...
启发式算法-模拟退火算法
模拟退火算法是一种基于概率的启发式优化算法,用于解决大规模组合优化问题,其灵感来源于金属退火过程中的物理现象。其基本原理是从一个初始解开始,然后在当前解的邻域内随机生成一个新解,如果新解的目标函数值优于当前解…...
机器视觉框架源码——解读3(常用的资源和样式)
这是关于框架解读的第三篇文章,将结合理论和框架代码进行讲解。 WPF中的各类工件元素,都可以设置其样式,如: 字体(FontFamily) 字体大小(FontSize) 背景颜色(Backgroud) 字体颜色(Foreground) 边距(Margin) 水平位置(HorizontalAlignment) 垂直位置(VerticalAlignment) 而样…...
勒索病毒肆虐时代:数据库加密存储的实践指南
在2025年第一季度,全球勒索攻击损失突破150亿美元,某跨国制造企业因数据库未加密被勒索3000枚比特币,某省级医保系统遭攻击导致参保人信息泄露……当医疗数据、金融资产、知识产权成为黑客的提款机,数据库加密已从技术选项升级为生…...
next中的server comonent中如何共享session
在 Next.js 的服务器组件(Server Components)里共享会话(session),可以借助第三方库(如 next-auth 或 express-session 结合自定义 API 路由)来实现,下面为你详细介绍这两种常见的实…...
Desfire Ev1\Ev2\Ev3卡DES\3K3DES\AES加解密读写VB.Net示例源码
本示例使用发卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bSxJTb6&ftt&id917152255720 Public Class Form1Public Declare Function pcdbeep Lib "OUR_MIFARE.dll" (ByVal xms As Integer) As BytePublic Declare Fu…...
商业实战将归巢网内容构建为本地RAG模型的完整指南01-优雅草卓伊凡
商业实战将归巢网内容构建为本地RAG模型的完整指南01-优雅草卓伊凡 今天卓伊凡收到了老客户归巢网关于对本地RAG模型建立的咨询,这点也让卓伊凡得深入研究下,毕竟老客户肯定不是说着玩的,主要最终实现目的是建立模型开始使用AI智能问答。 一…...
langchain4j整合springboot
环境介绍 JDK17Spring Boot: 3.0.2 创建springboot工程 IDEA新建一个springboot项目,使用Spring lnitializr快速构建。 选择Spring Boot: 3.0.2以及Spring Web依赖 添加maven依赖 创建完springboot项目之后,在pom中添加关键依赖 <properties&g…...
在线时间戳转换工具
给大家推荐一个在线时间戳转换工具 点击跳转-鸽鸽在线工具 这个工具除了时间戳转换,到首页还能选择使用很多其他小工具,欢迎使用...
Codeforces Round 1023 (Div. 2) (A-D)
每周至少五篇博客:(1/5) A. LRC and VIP 题意 您有一个大小 n n n 的数组 a a a - a 1 , a 2 , … a n a_1, a_2, \ldots a_n a1,a2,…an 。 您需要将 n n n 元素分为 2 2 2 序列 B B B 和 C C C ,以满足以下条件: 每个元素…...
[Survey]Remote Sensing Temporal Vision-Language Models: A Comprehensive Survey
BaseInfo TitleRemote Sensing Temporal Vision-Language Models: A Comprehensive SurveyAdresshttps://arxiv.org/abs/2412.02573Journal/Time2024 arxivAuthor北航 上海AI LabCodehttps://github.com/Chen-Yang-Liu/Awesome-RS-Temporal-VLM 1. Introduction 传统遥感局限…...
Linux56 YUM源配置
epel未启动 显示系统未通过注册 配置YUM仓库 本地YUM仓库 1.备份 tar -zcf repo.tar.gz *.repo 2.挂载 mount -o ro /dev/sr0 /mnt 3.开机自启 chmod x /etc/rc.local echo ‘mount -o ro /dec/sr0 /mnt’ /etc/rc.local 4.编写本地YUM仓库 local.repo [local] namelocal yum …...
mysql 如何查询数据库链接日志
1,查看是否开启日志 SHOW GLOBAL VARIABLES LIKE general_log; -- 查看是否开启通用查询日志(包括连接记录) 1.1,假如没开启,可以临时开启,做测试;服务重启,配置失效…...
Element-Plus-X开源程序是Vue3 + Element-Plus 开箱即用的企业级AI组件库前端的解决方案
一、软件介绍 文末提供程序和源码下载 Element-Plus-X开源程序是Vue3 Element-Plus 开箱即用的企业级AI组件库前端的解决方案。 二、核心特性 ✨ 企业级 AI 组件:内置聊天机器人、语音交互等场景化组件🚀 零配置集成:基于 Element-Plus …...
基于DevSecOps敏捷框架的数字供应链安全应解决方案
基于DevSecOps敏捷框架的数字供应链安全应解决方案是以“AI智能代码疫苗技术”深度赋能原创专利级“多模态SCADevSecOpsSBOM情报预警”的第四代DevSecOps数字供应链安全管理体系,在DevSecOps敏捷安全体系建设、数字供应链安全审查、开源供应链安全治理和云原生安全体系建设四大…...
2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛初赛-wp
- -考试当场没做出来 后面做的 misc ❯ cd misc ❯ ls num.docx num.zip ❯ unzip num.docx Archive: num.docxinflating: [Content_Types].xmlinflating: _rels/.relsinflating: word/document.xmlinflating: word/_rels/document.xml.relsextracting: word/media/image1.jp…...
2、实验室测控系统 - /自动化与控制组件/lab-monitoring-system
76个工业组件库示例汇总 实验室测控系统开发组件 这是一个专为实验室设备数据采集与分析设计的可视化测控系统组件。采用工业风格界面设计,提供了丰富的动态数据展示与分析功能,可应用于各类实验室环境中的设备监控和数据处理。 功能特点 多设备管理…...
Blender插件机制设计与Python实现
Blender插件机制设计与Python实现 Blender的插件机制是其强大扩展性的核心,允许开发者通过Python创建自定义功能。下面我将详细介绍Blender插件系统的设计原理,并提供一个完整的示例。 Blender插件系统设计原理 模块化架构:Blender将插件作…...
自定义一个 Spring Boot Starter -笔记
SpringBoot Starter的介绍参考: Spring Boot Starter简介-笔记-CSDN博客。这里介绍如何自定义一个springBoot Starter。 1. 项目结构 创建一个 Maven 项目,结构如下: custom-spring-boot-starter-demo/ ├── custom-hello-jdk/ # jdk模…...
【Part 2安卓原生360°VR播放器开发实战】第三节|实现VR视频播放与时间轴同步控制
《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏&am…...
读 书 说
好久没有坐下来手敲打字去输出或者记录分享一些比较正式的事情。 今天节后综合征,虽然我已经加了两天班了,但是还是不想加班便准点下班了。 今天来聊聊看书。 为什么会看书?最开始正如我之前提到过,人脉资源不多,也不…...
DOCX转PDF怎么操作最简单?快速将DOCX转换为专业PDF文档
在日常办公或学习中,我们经常需要将 Word 文档(.docx格式)转换为 PDF 文件。这不仅有助于保持文档格式的一致性,还能确保接收者无需特定软件即可查看文件内容。本文将详细介绍几种常见的方法来实现从 DOCX 到 PDF 的转换ÿ…...
免费轻量化办公pdf修改软件 一键格式转换基础修改到高级加密
各位办公软件小能手们!今天咱来聊聊一款超厉害的 PDF 编辑软件——PDFXEdit。你知道吗,这软件就像个 PDF 处理的超级魔法师,能全方位搞定 PDF 文档。下面我就给大家详细说说它的那些功能和适用场景。 首先是基础编辑功能。这软件在文本与图像…...
【HFP】蓝牙语音通信高级功能解析:快速拨号与呼叫等待协议实现
在蓝牙语音通信系统中,除了基础的通话建立与控制流程,高级功能如快速拨号(内存拨号、最后号码重拨)和呼叫等待通知的实现,直接影响着用户体验的便捷性与系统的实用性。这些功能依赖于蓝牙协议中特定的 AT 命令交互、状…...
CVE-2025-24813:Apache Tomcat RCE 漏洞分析
CVE-2025-24813 是 Apache Tomcat 中的一个严重远程代码执行 (RCE) 漏洞,源于路径等效缺陷,允许攻击者绕过安全约束并远程执行任意代码。 CYFIRMA 的研究发现了一些活跃的漏洞利用,一些 PoC 漏洞在地下论坛上流传。攻击者利用基于 HTTP PUT 的任意文件上传、NTFS 连接漏洞利…...
神经网络之训练的艺术:反向传播与常见问题解决之道
神经网络训练的艺术:反向传播与常见问题解决之道 摘要 神经网络是现代机器学习的核心工具之一,而反向传播则是其训练过程中不可或缺的算法。本文深入探讨了反向传播的工作原理以及在训练过程中常见的问题,如梯度消失、梯度爆炸、死 ReLU 单…...
小土堆pytorch--transform
torchvision中的transform torchvision中的transform1. transforms的使用1.1 transforms的结构及用法理论1.2 相应代码1.3 对上述代码的解释 2. 常见的transforms2.1 python 的call函数2.2 ToTensor的使用2.3 Normalize的使用2.4 Resize的使用2.5 Compose的使用2.6 RandomCrop的…...
【Django】REST 常用类
ModelSerializer serializers.ModelSerializer 是 Django REST framework(DRF)里的一个强大工具,它能极大简化序列化和反序列化 Django 模型实例的流程。下面从多个方面详细介绍它: 1. 基本概念 序列化是把 Django 模型实例转化…...
PyTorch常用命令详解:助力深度学习开发
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4-turbo模型生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认其准…...
第二章 Logback的架构(二)
Logger, Appenders 和 Layouts Appenders 和 Layouts 基于日志记录器选择性地启用或禁用日志记录请求只是其中的一部分功能。Logback允许将日志记录请求输出到多个目标。在Logback术语中,输出目标被称为Appender。 目前,已经存在适用于控制台、文件、远…...
【大数据】服务器上部署Apache Paimon
1. 环境准备 在开始部署之前,请确保服务器满足以下基本要求: 操作系统: 推荐使用 Linux(如 Ubuntu、CentOS)。 Java 环境: Paimon 依赖 Java,推荐安装 JDK 8 或更高版本。 Flink 环境: Paimon 是基于 Apache Flink 的…...
【IP101】图像处理进阶:从直方图均衡化到伽马变换,全面掌握图像增强技术
🌟 图像增强魔法指南 🎨 在图像处理的世界里,增强就像是给图片化妆,让它展现出最佳的状态。让我们一起来探索这些神奇的增强术吧! 📚 目录 基础概念 - 图像增强的"美容院"直方图均衡化 - 光线的…...
【Azure Redis 缓存】关于Azure Cache for Redis 服务在传输和存储键值对(Key/Value)的加密问题
问题描述 Azure Cache for Redis 服务在传输和存储数据时是如何加密呢? 问题回答 一:关于Azure cache for Redis服务在数据传输过程中是如何加密的? 为了确保在Azure cache for Redis和客户端应用程序之间传输的数据安全,需要启用…...
Cursor 被封解决方案
一、注册一个无限邮箱 没事点点广告,让网站活久一点(✪ω✪) 2925邮箱-无限邮2925无限邮箱支持多种客户端收发邮件且数据安全加密多端同步。只需要注册一个账号,就能生成无限多个2925子邮箱账号,同时利用一邮多用功能对多个子邮箱邮件进行集…...