本地化 Windows 窗体

2023-12-30

我正在从事一个涉及本地化大量 Windows 窗体的项目。

我们使用 TableLayoutPanel 控件来处理布局,该控件效果很好。

我们遇到的一个问题是,当我们将 Form.Localized 属性设置为 True 时,我们最终必须为每种语言的每种表单管理一个 .resx 文件。如果 .resx 文件仅包含本地化文本,但它还包含大量表单的布局数据,那就没问题了。

有没有办法将可本地化的文本元素与控件布局信息分开,并在 Visual Studio IDE 中继续工作?

我注意到我可以修改表单的设计器文件以查看另一个资源文件,但是当我使用表单设计器时,这些更改将被删除:



'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Dock = System.Windows.Forms.DockStyle.Top
Me.Label1.Location = New System.Drawing.Point(3, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(61, 13)
Me.Label1.TabIndex = 1
Me.Label1.Text = My.Resources.ResourceManager.GetString("Form1_Label1_Text")
  

我从来没有找到一个让我完全满意的答案。但这是我最终实施的解决方案:

  1. 我最终设置了Form.Localizable = false因为我不想维护所有相同的 .resx 文件

  2. 所有 UI 元素都会获得一个明显未本地化的实际值(如“O_K_”)。

  3. 我对待表单/控件与所有其他可本地化内容(错误消息、日志消息等)完全相同,只是给它们提供了唯一的键,例如“cmdOkTextOK”,以便它们可以在多个表单之间共享

  4. 我创建LocalizeComponent()每个表单上都有函数,并在构造函数之后立即调用它InitializeComponent()函数,如下:



Public Class Form1
    Public Sub New()
        ' This call is required by the Windows Form Designer.
        InitializeComponent()
        ' Add any initialization after the InitializeComponent() call.
        LocalizeComponent()
    End Sub

    Private Sub LocalizeComponent()
        ' Localizes all the ui elements from a common Resource
        Me.SuspendLayout()
        Me.cmdOK.Text = My.Resources.ResourceManager.GetString("cmdOKTextOK")
        Me.cmdCancel.Text = My.Resources.ResourceManager.GetString("cmdCancelTextCancel")
        Me.cmdApply.Text = My.Resources.ResourceManager.GetString("cmdApplyTextApply")
        Me.ResumeLayout(False)
    End Sub
End Class
  

这会将可见控制元素的本地化移出设计器文件(每次我进行表单编辑时它都会被破坏)并将其放回我的控制之下。

我仍然不是 100% 满意,因为控件是在运行时使用非本地化字符串创建的,而这些字符串稍后会更新。但这将使我摆脱我真的不想要的维护噩梦!

感谢所有不厌其烦回答的人。我很感激!我不确定在回答自己的问题时你应该做什么来将其标记为“已回答”,所以如果有人能指出这一点而不会让我太难受,我将不胜感激。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

本地化 Windows 窗体 的相关文章

  • 在 XCode 中本地化 HTML 文件

    我有一个本地化的 iOS 应用程序 我希望在其中包含一些本地化的 HTML 文件 我不知道该怎么做 目前 我的文件夹结构如下所示 myapp en lrproj Localizable strings fr lrproj Localizab
  • 以编程方式更新 Wifi 网络

    我正在尝试创建一个程序 当某个 wifi 网络在范围内时 该程序会连接到该网络 即使已经连接到另一个 wifi 也是如此 我在用着简单Wifi https github com DigiExam simplewifi 基本上效果很好 除了在
  • 短路:Or Else 与 Or 组合

    如果我有以下 a OrElse b 是True那么显然 b 永远不会被评估 但如果我添加一个Or 然后呢 a OrElse b Or c c 是否 应该被评估 如果我放入一些括号怎么办 抱歉 如果这是基本的 当然 我可以自己测试答案 但我无
  • 在 VB.NET 中调用过程的优缺点是什么?

    我想知道在VB NET中使用Call关键字和不使用Call调用程序的优缺点 Private Sub ProOne Code Are Here End Sub Private Sub Calling ProOne I would like t
  • Winforms 多线程:每次在 UI 线程上调用方法时是否需要创建一个新的委托?

    我想调用一个在 UI 线程上操作控件的方法 我的代码可以运行并且我想优化 我指的是这个MSDN 上的资源 http msdn microsoft com en us library 757y83z4 28VS 71 29 aspx 根据那里
  • 我正在为 cmd 编写包装器,但在重定向标准输入时遇到问题

    好的 这就是我正在做的 我想编写一个 net 应用程序 将标准输出 输入重定向到 Richtextbox 我已经让它工作得很好 但是一旦我将标准输入添加到混合中 我的读取命令就会冻结 这是我的表单中的相关代码 Shell new Proce
  • 如何选择 Windows 窗体文本框中的所有文本?

    我想选择文本框中的所有文本 我已经使用下面的代码尝试过 textBoxResults SelectionStart 0 textBoxResults SelectionLength textBoxResults Text Length 来源
  • 如何排查和调试 Visual Studio 设计模式错误?

    我正在使用 Windows 7 和 Visual Studio 2010 编写 C 自定义用户控件 我在代码视图中编码了数周 最近当我尝试切换到设计模式时 Visual Studio 挂起 无响应 我可以等一个小时 但仍然没有任何反应 单击
  • 发布Windows窗体应用程序如何更改安装路径

    我已经构建了一个 Windows 窗体应用程序 并发布了客户端安装 安装安装文件时 应要求用户选择安装目录路径 相反 它安装在默认路径中 如下所示 C Users Mysys t AppData Local Apps 2 0 434YBBV
  • 从图形创建图像

    在 VB NET 中 我需要创建一个Image基于一个Graphics我有对象 但是 没有诸如此类的方法Image fromGraphics 等等 那我该怎么办 尝试这样的事情MSDN 文章 http msdn microsoft com
  • 将 DataTable 的单列转换为 CSV

    使用 VB NET 将 DataTable 的单列转换为 CSV 的最简洁方法是什么 这些值是整数 所以我不需要担心字符转义或编码 转换为 CSV 是什么意思 如果你想生成一个以逗号分隔值的字符串 你可以使用 this tbl是你的数据表和
  • C# 循环下动态添加控件

    我正在开发一个 Windows 应用程序 我想在循环内动态创建一些控件 我正在尝试的代码是 private Label newLabel new Label private int txtBoxStartPosition 100 priva
  • 通过 ClickOnce 部署自动安装更新

    我想部署我的项目单击一次 http en wikipedia org wiki ClickOnce部署 但是当我这样做时 它在最终用户计算机的对话框中询问 XXXX 已推出新版本 您想立即下载吗 但我的最终用户don t有鼠标或键盘 所以我
  • 派生的DataGridView绘图问题。显示黑色区域

    后期编辑我将其标记为 C 问题以及 C 问题 因为该问题以两种语言和解决方案呈现if显示的很可能是 C 市场上的大多数 我一直在 net 2 0 具体来说是C 但无关紧要 下开发一个应用程序 该应用程序使用自定义的派生数据网格视图 此 da
  • RichTextBox 选择同一单词的多次出现

    我使用 C Windows 窗体 创建了类似记事本的应用程序 并且我想添加 查找 功能 该功能将突出显示搜索词的每个外观 但是我不知道如何添加到现有选择中 因此我最终只突出显示搜索词的最后一次出现 这是我的代码 Regex regex ne
  • 带有单选框和复选框的 WinForms TreeView

    我有一个情况 我希望 TreeView 能够在多个根节点上显示单选按钮 并在其子节点上显示复选框 任何根节点下都只有一层子节点 无线电也应该表现得像一个组 即选择一个根并取消选择其他无线电 我一直试图用图像来伪造它 但它看起来不现实 我最初
  • 将容器/内核注入到主应用程序演示器中是否正确? [复制]

    这个问题在这里已经有答案了 我正在使用 Ninject 来处理我的依赖项 My ApplicationPresenter负责将用户调用分派到整个应用程序中的功能 因此需要一次注入多个工厂 从而注入容器本身 它处理 MDI GUI 有更好的方
  • 创建一个从系统托盘运行的程序

    我想创建一个从 Windows 右下角系统托盘运行的程序 但我不知道从哪里开始 有人可以告诉 告诉我在哪里查找和示例或使用什么命令 研究吗 Add a NotifyIcon到主窗口窗体 使用Resize事件在Form控制何时显示Notify
  • 将参数传递给 .NET 定义的命令

    我需要在 Autocad 2000i 的命令行上编写一个命令 并且希望 autocad 提示输入参数 然后我的 vb net 程序将根据收到的参数进行操作 基本上我想我的解决方案都在这里 http through the interface
  • Xcode 本地化设置中没有加号或减号按钮

    我需要在两天内翻译 iOS 应用程序 但我的 XCode 版本 4 4 和 4 5 Developer Preview 都没有给我添加其他语言的选项 我只能选择单击 Make localized 但我只能选择英语 选择它后 Xcode 中的

随机推荐

  • iTunes Connect - 总安装量与已安装该应用程序的当前设备的比较

    我如何知道或计算 iOS 应用程序的总安装量与安装该应用程序的当前设备的比较 我有总计单位 据我所知 这是总安装数 而不是现在有多少设备拥有我的应用程序 您可以使用第三方框架获取有关应用程序统计信息的更多详细信息 例如Flurry http
  • “模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用”错误

    为什么我收到错误 模板只能与字段访问 属性访问 一维数组索引或单参数自定义索引器表达式一起使用 在这段代码中 model IEnumerable
  • 如何在 R 中进行词形还原?

    这个问题可能是重复的R 或 python 中的词形还原器 am are is gt be https stackoverflow com questions 22993796 lemmatizer in r or python am are
  • 显示 xml 而不是站点

    我正在学习谷歌云 所以我尝试使用存储服务在那里部署我的反应应用程序 为此 我创建了一个名为 Travelfrontend 的存储桶 并从使用时生成的构建文件夹上传了文件和文件夹yarn build 我没有任何域名 所以我尝试从https s
  • 将 jwt 令牌发送到 wif wcf 服务

    我在向 wcf 服务发送 jwt 令牌时遇到问题 遵循了这个 它几乎有效 将 JWT SecurityToken 传递给 WCF 客户端 https stackoverflow com questions 16312907 deliveri
  • 在 VsCode 中将 () 替换为 {} 最有效的方法是什么?

    我正在使用 Visual Studio Code 经常发现自己必须替换括号 code 带大括号 code
  • Visual Studio 2013 发布失败超出最大连接数

    我正在使用 VS Express 2013 for Web 进行发布 在发布时其中一个 dll 上出现套接字错误 现在我根本无法发布 我收到一条 VS 错误 指出已超出此站点的最大连接数 了解更多信息 http go microsoft c
  • Mysql 返回子句等效

    我是 MySql 的新手 所以请温柔一点 是否有相当于RETURNINGOracle 中的子句或Inserted DeletedMySQL 中 SQL Server 中的表 我想做的是 从表 A 中删除一组行 将删除的行集插入表 B 中 请
  • SQL Server 视图中的模拟?

    是否可以通过模拟创建视图 类似于 execute as 在存储过程中 我想在单独的模式中创建一些视图 一些用户应该得到SELECT and UPDATE访问这些视图 以便它们能够更改基础表 但无需直接更新表 有观点可能吗 不 这是不可能的
  • 集成express.js应用程序和docpad

    我一直在使用 docpad 预先生成前端 html js 应用程序 使用docpad generate env static 经过几次挂断和 balupton 的错误修复后 它现在工作得很好 并节省了我很多时间 我只是将这些文件复制到现有的
  • 根据产品类型向产品价格添加自定义文本标签

    我有一个小问题还无法解决 我有这个WooCommerce 网站 http www wholesaleunderwear co product men s crew sport sock w logo 具有可变产品 目前价格显示方式如下 每打
  • 从一维数组创建二维数组

    如果我有多个相同数据类型的数组 将它们全部复制到二维数组中的最佳方法是什么 例如 int array1 1 2 3 4 5 6 7 8 9 10 int array2 9 8 7 6 5 4 3 2 1 0 int array2d pseu
  • 检查ip地址是否在私有范围内

    如何检查 IP 地址是否属于私有类别 if isPrivateIPAddress ipAddress do something 任何建议将不胜感激 更新的答案 private static boolean isPrivateIPAddres
  • 检测合成器是否正在运行

    我希望我的 UI 根据屏幕是否合成 从而支持某些效果 来更改设计 是否有可能 可靠地查询 X 服务器是否正在运行合成窗口管理器 打开 关闭合成时收到通知吗 解决方案 为了向不太熟悉 X11 API 的人详细说明 Andrey Sidorov
  • 如何在 MATLAB 中将字符串作为函数参数传递?

    基本上 我有 10 个数据文件 我编写了一个 MATLAB 函数来处理这些数据 代码是这样的 function Z fitdata file path A importdata file path end 由于我不想输入相同的命令 10 次
  • SO_LINGER 和关闭套接字(WINSOCK)

    我正在编写一个多线程winsock应用程序 并且在关闭套接字时遇到一些问题 首先 同时打开的套接字数量是否有限制 假设一次有 32 个插座 我在其中一个套接字上建立了连接 并传递信息 一切顺利 问题是当我断开套接字然后重新连接到同一目标时
  • 为什么 django 对表单字段调用 __init__() 两次

    我正在尝试使用django 简单 自动完成 https github com praekelt django simple autocomplete以一种形式 但是 当我将调试打印添加到simple autocomplete widgets
  • JSON 中的 HTML 标签(Python 中)

    我知道这不是一个理想的情况 但是如果我需要在 JSON 标签中包含某种 HTML 例如 node list ul li class lists Hello World li ul 这可以在Python中做到而不需要事先转义吗 它最初是一个字
  • 在 GHCi 内的包模块中调试 IO

    我正在 Haskell 中进行低级 IO 用于库绑定 并且遇到了段错误 我想使用 GHCi break弄清楚发生了什么 但发生的事情是这样的 gt import SDL gt break SDL setPaletteColors canno
  • 本地化 Windows 窗体

    我正在从事一个涉及本地化大量 Windows 窗体的项目 我们使用 TableLayoutPanel 控件来处理布局 该控件效果很好 我们遇到的一个问题是 当我们将 Form Localized 属性设置为 True 时 我们最终必须为每种