VC++ 10 MFC:进行本地化的正确方法是什么

2023-11-25

我是一名 .NET 人员,必须在 MFC 应用程序上做一些工作。该应用程序是一个 VS2008 MFC 可执行文件,我已将其转换为 VS2010。最初的开发人员通过在应用程序命令行上指定包含键值对的 .txt 文件的名称来进行本地化。已安装的可执行文件快捷方式会根据安装应用程序的国家/地区指定不同的 .txt 文件。如果您直接运行 .exe,这当然不起作用。对我来说,这似乎是一种奇怪的做事方式。

我想以正确的 MFC 方式执行此操作,但我很难在 Google 上找到明确的答案。我的理解是 .rc 文件中的字符串表应该用于此本地化?这是 MFC 当前的最佳实践吗?

关于字符串表,我读到实践是为不同的语言创建多个字符串表。 MFC应用程序如何选择使用哪种语言?它是基于机器当前的语言设置还是我可以控制它(我们可能希望由我们也在构建的 Wix .msi 安装程序指定语言)?

我还读到,在 MFC 应用程序中嵌入所有资源已经不再受欢迎,现在您应该编译单独的资源 .dll?这是真的吗,我调查一下如何做到这一点......

最后,我是否需要做一些特殊的事情才能让 MFC 支持 Unicode,或者 MFC 默认情况下是 Unicode 吗?

Thanks


这个想法是所有可本地化的项目都应该存储在资源中。标准 UI 对象(例如菜单和对话框)会自动存储在其中(资源),但字符串文字(例如:错误消息、消息框提示等)等项目应从源代码提取到字符串表。这个短代码项目文章我的演示了如何轻松地从代码中的字符串表中提取字符串。

注意:您的资源脚本 (.rc) 中应该只有一个字符串表。

从那时起,您可以转换资源并创建资源 DLL(又名卫星 DLL)。这个想法是为每种语言保留 .rc 文件的不同副本。每个翻译都被编译成一个codelessDLL 充当资源的容器。

另一篇代码项目文章我的代码可以让您根据系统设置或用户首选项轻松加载资源 DLL:代码会在您的资源 DLL 中查找可用语言与用户设置最匹配的语言(基于用户的 UI 语言和区域设置)。该代码还可以让您轻松构建包含所有可用语言的菜单。这样,您的用户就可以覆盖默认选择。

免责声明:我的广告如下。随意跳过:-)

关于资源的翻译、翻译的管理和资源DLL的创建,你可能想看看应用翻译器.

广告结束:-)

关于 Unicode,MFC 附带了 ANSI 和 Unicode 版本的代码。您可以选择构建 ANSI 还是 Unicode 应用程序:只需在项目设置的第一页中进行选择即可。当然,如果您是从头开始,那么您绝对应该使用 Unicode。但是,如果遗留原因迫使您保留 ANSI/MBCS,请不要太担心:它不会阻止您本地化您的应用程序。

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

VC++ 10 MFC:进行本地化的正确方法是什么 的相关文章

  • 发送WM_SETTEXT时如何避免EN_CHANGE通知?

    我有一个 CEdit 派生控件 当基本数据为空时 该控件显示字符串 N A 我最近添加了代码 以在控件获得焦点时清空控件 SetWindowText 并在用户离开焦点时将其设置回 N A SetWindowText N A 控空 唯一的问题
  • 初始化列表在 VC10 中不起作用

    我在 VC 2010 中编写了这个程序 class class1 public class1 initializer list
  • OSX 上的 locale.getlocale() 问题

    我需要获取系统区域设置来执行许多操作 最终我想使用 gettext 翻译我的应用程序 我打算在 Linux 和 OSX 上分发它 但我在 OSX Snow Leopard 上遇到了问题 python Python 2 5 2 r252 60
  • string.Compare 行为

    怎么会这样呢 这是从VS2008中的立即窗口获取的 string Compare 1 string Compare 0 0 1 从言论来看字符串比较 http msdn microsoft com en us library 84787k2
  • MFC编辑控件更新

    我尝试使用它添加的变量来更新编辑控件的文本 这是一个CString但我失败了 m sNrAuto some text UpdateData TRUE 我也尝试过使用UpdateWindow 但编辑控件仍为空白 我知道我可以使用SetWind
  • 在 Rails 中本地化嵌套虚拟属性

    怎么可能本地化嵌套虚拟属性在 Rails 中 该模型 class User lt ActiveRecord Base attr accessor company information This is used in callbacks e
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 如何在MFC中对CListCtrl中的Item进行排序?

    我在 MFC 中制作了一个基于对话框的应用程序 我将 CListCtrl 控件放在对话框上 并将其视图样式设置为报告类型 我在此列表视图中有五列 所有列都是字符串类型 我想在此列表中实现排序 也就是说 当我单击某一列时 它应该对列表中的项目
  • C++ 中的转换错误

    有人可以帮我解决这个错误吗 我是 C 新手 看来错误就发生在一堆宏中 我能做什么来解决它 或者我怎样才能追踪到它的源头 我真的不明白这个错误 这是否意味着编译器尝试转换该方法void ReadCPUparameter to a LRESUL
  • 自动 Photoshop 从文件插入文本

    我有一个多语言网站 需要自动执行从 csv 源更新 psd 文件中文本图层的过程 我知道由于宽度的变化 psp 中可能会出现故障 但无论如何 将文本放在文档中会有很大帮助 我有什么选择 EDIT Murmelschlurmel 有一个可行的
  • iOS 获取特定语言的字符串的本地化版本

    我正在构建一个适用于 iOS 的应用程序 该应用程序将提供英语和法语版本 我已经阅读了一些有关国际化的教程 并且了解了它的工作原理以及我需要做什么 我遇到的问题是有一个特定的情况 我想为英语用户加载法语字符串 我知道可以为整个应用程序设置语
  • 使用 MFC 对象初始化 std::map 无法编译

    MFC初学者看这里 我尝试过初始化std map像这样 在CView的标题中 myprogramView h std map
  • WPF 本地化扩展 MVVM 绑定

    我正在尝试绑定在 ViewModel 中声明的名为 SampleName 的属性 这里 SampleName 是关键 但是 当尝试下面的代码时 它显示为空
  • Android 中的自定义区域设置

    斯洛伐克的 Android 手机有一个自定义区域设置 en SK 和 cs SK 语言为捷克语或英语 位置为斯洛伐克 现在我想要有针对这些区域设置的字符串 默认方法是创建一个文件夹 values CountryCode 对于捷克共和国 它是
  • 在 iOS 7 中使用新的格式字符串说明符配置字典(复数支持)

    我正在尝试使用 iOS 7 中对复数的更复杂本地化的新支持 我创建了一个 stringsdict 文件 根据 Foundation 发行说明 以及 Cocoa WWDC 会议中的新增功能 中的信息进行格式化 我已经验证 stringsdic
  • 是否可以在编译时/运行时生成标记字符串的全局列表?

    因此 我正在努力将我的 C 应用程序翻译成多种语言 我目前正在使用的是这样的 define TR x lookupTranslatedString currentLocale x wcout lt lt TR L This phrase i
  • Visual C++ MFC 中窗口启动时的事件顺序

    假设我有一个从 CWnd 派生的类 它具有事件处理函数OnPaint OnCreate and OnSize 如您所知 所有这些都是在窗口启动时发生的 但我想看看它们之间的顺序是什么 例如 当我在其中一个中设置断点时 在结束函数后 控制不会
  • iOS 7 故事板本地化与属性标签

    我正在使用 ibtool 从我的所有语言的基本情节提要中生成字符串文件 出于某种原因 ibtool 没有提取UILabel风格为 attributed 我没有这些标签的键 值对 有人知道为什么吗 我最终得出的结论是 使用 ibtool 无法
  • C# - 在同一键盘布局中的两个不同 IME 之间自动切换

    我做了一个在数据库中输入中文拼音和汉字的应用程序 这意味着操作者必须通过ctrl shift不断地在 拼音输入法 和 搜狗输入法 之间切换 有没有办法让 IME 在选择文本框时自动更改 我的意思是 不是切换键盘布局 只是相同键盘布局的输入法
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end

随机推荐

  • 使用 jQuery 解析 JSON 响应

    我正在我的一个应用程序中处理 JSON 响应 我已经使用 jsonp 成功建立了连接 但我无法解析我的回复 Code
  • 在 Windows 中将 python 与 Anaconda 结合使用

    我刚刚在计算机上安装了 Anaconda 因为我需要使用 Numpy 好吧 当我使用 python 时 由于某种原因 我必须位于与python exe当然 现在我想使用 Anaconda 我必须在Anaconda3 Scripts文件夹在哪
  • 无效的对象名称 - 存储过程

    我正在通过 SSMS 在 SQL Server 中创建一个存储过程 我已经编写了下面的存储过程 但是当我单击execute出现错误 消息 208 第 16 级 状态 6 程序 NewQuestion 第 11 行 对象名称 hgomez N
  • python 跟踪分段错误

    我正在从 python 开发 C 扩展 并且遇到了一些段错误 在开发过程中不可避免 我正在寻找一种方法来显示发生段错误的代码行 一个想法就像跟踪每一行代码 我该怎么做 如果你在linux上 在gdb下运行python gdb python
  • C++11 lambda 表达式末尾的括号

    我对 C 11 lambda 遇到的一些示例感到困惑 例如 include
  • Django:没有名为“app”的模块

    姜戈呕吐了 ImportError at store No module named store 但就在那里有调试消息和设置 INSTALLED APPS django contrib auth django contrib content
  • 是否无法使用 JSON.stringify 对错误进行字符串化?

    重现问题 我在尝试使用网络套接字传递错误消息时遇到了问题 我可以使用复制我面临的问题JSON stringify为了迎合更广泛的受众 node v0 10 15 gt var error new Error simple error mes
  • 最准确的编码检测器是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 经过一番调查 我发现java界有一些编码检测项目 如果getEncoding in InputStreamReader不起作用 儒尼沃萨尔沙代 jc
  • 字体大小相对于用户的屏幕分辨率?

    我有一个流畅的网站 菜单占其宽度的 20 我希望正确测量菜单的字体大小 以便它始终适合框的宽度 并且永远不会换行到下一行 我正在考虑使用 em 作为单位 但它与浏览器的字体大小相关 因此当我更改分辨率时 字体大小保持不变 还尝试了分数和百分
  • Cookie 不与 Fetch 一起存储

    我已经阅读了我能找到的所有其他主题 但没有一个解决方案有效 我正在使用 React Redux Express 并尝试将 JWT 存储在 cookie 中 如下所示 https auth0 com blog 2015 09 28 5 ste
  • GSON 将特定字段的整数值动态转换为布尔值

    如何处理获取同名但不同类型的字段 我在同一请求中有时从 API 获取整数值 有时获取布尔值 我想知道当我得到这样的 Json 时如何处理 我创建了类型适配器 但它不起作用 我考虑过创建不同的 POJO 类 但这个问题不仅仅针对一个请求 由于
  • 功能“rollapply”的更快替代方案

    我需要对包含大约 7 000 行和 11 000 列的 xts 数据运行滚动窗口函数 我做了以下事情 require PerformanceAnalytics ssd60 lt rollapply wddxts width 60 FUN f
  • 如何配置spring HandlerExceptionResolver来处理jsp中抛出的NullPointerException?

    从 jsp 中抛出 NullPointerException 例如使用 该异常不会由HandlerExceptionResolver处理 而是抛出到Web容器 tomcat 并转换为异常code 500 error 如何配置 spring
  • 将 1904 年以来的纳秒转换为有效的 java 日期

    我有一个数字 表示自世界时间 1904 年 1 月 1 日凌晨 12 00 起的纳秒数 我想实例化一个java util Date代表该日期的对象 我应该如何进行 您首先需要转换您的number代表纳秒 to 毫秒 然后对于给定的日期字符串
  • 如何通过点击按钮接听来电?

    我正在尝试实现我自己的电话处理用户界面 我想要做的是 如果有电话打进来 会显示来电号码和图片 并且如果我按下按钮 就会接受 应答来电 相关代码为 Override public void onCreate Bundle savedInsta
  • Visual Studio Code 找不到 Python

    在过去的几周里 我在使用 Visual Studio Code 时遇到了一个大问题 有一天 Visual Studio Code 无法运行任何 Python 文件 我有消息 bash C Users rapha AppData Local
  • 为什么 R 匹配功能这么慢?

    以下应该找到整数的第一个实例的位置1 array lt rep 1 10000000 system time match 1 array 这返回 user system elapsed 0 720 1 243 1 964 如果我使用大小的数
  • 在 Oracle SQL 中使用带有逗号分隔字符串的“IN”子句,该字符串来自 Oracle SQL 中的 Replace() 函数的输出

    我有一个逗号分隔的字符串 我想在语句的 IN 子句中使用它 例如 100 101 102 由于 In 和 IN 子句我必须引用各个字符串 因此我使用替换函数 例如 从 Dual 选择 replace 100 101 102 上面的查询有效
  • %*c%c 和 %c 作为 scanf 的格式说明符有什么区别?

    我通常会获得一个角色 c 但我见过使用的代码 c c 例如 char a scanf c c a 有什么不同 In a scanf格式字符串 在 the 字符是赋值抑制字符 在您的示例中 它会吃掉第一个字符但不存储它 例如 与 char a
  • VC++ 10 MFC:进行本地化的正确方法是什么

    我是一名 NET 人员 必须在 MFC 应用程序上做一些工作 该应用程序是一个 VS2008 MFC 可执行文件 我已将其转换为 VS2010 最初的开发人员通过在应用程序命令行上指定包含键值对的 txt 文件的名称来进行本地化 已安装的可