尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

grepWin 支持 28 种语言是怎么做到的?多语言机制全揭秘

grepWin 支持 28 种语言是怎么做到的?多语言机制全揭秘 grepWin 支持 28 种语言是怎么做到的多语言机制全揭秘【免费下载链接】grepWinA powerful and fast search tool using regular expressions项目地址: https://gitcode.com/gh_mirrors/gr/grepWin把系统语言切成日语再打开 grepWin搜索按钮、菜单文案也跟着变成了日文。这个用正则表达式翻找整个磁盘的搜索工具靠一套朴素的设计撑起了 28 种语言的界面而 grepWin 多语言支持的全部秘密都藏在两个地方一个文件夹和一个单例类。语言文件放在哪translations 文件夹里的一本对照字典所有语言文件都集中在项目根目录的translations/文件夹里每种语言一个.lang文件。translations/ 目录下摆着English.lang、German.lang、French.lang、Japanese.lang、Korean.lang、Russian.lang还有更多语言文件排成一队。打开任何一个.lang文件格式是这样的#. Resource IDs: (149) msgid %ld more matches msgstr 你可以把它理解成一本对照字典msgid是程序要显示的原文英文msgstr是对应语言的译文msgstr留空就表示这条没翻程序会退回显示英文。28 个文件共用同一套msgid结构完全一致程序因此只需要认识一种格式。翻译引擎从启动到切换语言的时间线负责翻译调度的是CLanguage单例类。它干的活不复杂读进一个.lang文件之后谁想翻译点什么都来找它。启动阶段程序从注册表或便携模式下的配置文件读出上次选定的语言文件路径交给CLanguage加载CLanguage::Instance().LoadFile( bPortable ? g_iniFile.GetValue(Lglobal, Llanguagefile, L) : std::wstring(CRegStdString(LSoftware\\grepWin\\languagefile)));加载完之后翻译分三档进行主窗口和每个对话框初始化时调一次TranslateWindow批量替换窗口里所有控件的文字弹出右键菜单时用TranslateMenu处理菜单项动态生成的内容——比如悬浮提示、临时按钮的文案——则按编号用TranslatedString现查字典。等你在设置里手动换语言时故事回到原点选中新语言、点确定程序把路径记下来再次LoadFile读入新的.lang文件随后对整个主窗口重新跑一遍TranslateWindow。整块界面当场换成新语言不用重启。你会撞见翻译的三个现场主界面是最先看到翻译效果的地方标签、按钮、占位提示全是启动时TranslateWindow批量刷出来的上面这张搜索界面截图里的每一处文案换种语言就换个样子。搜索结果上点右键弹出来的打开所在文件夹这类菜单项走的是TranslateMenu通道——菜单项一条条被查出译文后再插入菜单。设置对话框更杂一点除了静态文字连鼠标悬停时冒出的工具提示也是翻译过的它们来自TranslatedString的实时查询属于用到才翻的动态文本。grepWin 添加翻译三分钟加一门新语言整个过程不用碰任何源代码把translations/里的English.lang复制一份改名为Swedish.lang之类文件列表里其实已有现成文件照着格式仿写即可只改msgstr右边的译文msgid一个字符都不要动拿不准的词就留空留空的条目会自动回退成英文保存后重启 grepWin在设置的语言下拉列表里选中新语言点确定看主界面是不是当场变了能这么省事是因为语言资源从来没写死在代码里——src/ 下的界面代码只负责按编号找翻译具体说什么话全由.lang文件说了算。一句话记住这套设计28 个.lang文件管内容CLanguage单例管调度窗口级、菜单级、字符串级三档接口各管一段而换语言只需要重新加载字典、重刷一遍窗口——随时可切永不重启。下次你看到界面跟着系统语言变想想背后那本 28 页的对照字典它一直安静地躺在translations文件夹里。【免费下载链接】grepWinA powerful and fast search tool using regular expressions项目地址: https://gitcode.com/gh_mirrors/gr/grepWin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表