一个应用程序,五种语言。
运行时即时切换。
sgcLocalization 用来翻译您自己的 Delphi、C++Builder 和 Lazarus 应用程序。每个窗体、每条消息、每个复数形式,都只需一个编辑器,切换语言只需一行代码。
- English
- Deutsch
- Español
- Français
- Italiano
上面的图片来自同一个可执行文件。同样的仪表盘,同样的数据,分别以英语、德语、西班牙语、法语和意大利语显示,用户在应用程序运行时通过组合框更改语言。无需重启,也无需第二次构建。
这个应用程序是用 sgcLocalization 翻译的,它是 sgcUI 套件的一款新产品。它支持 VCL、FireMonkey 和 LCL,适用于从 Delphi 7 到 Delphi 13、C++Builder 以及 Lazarus,并包含在每个 sgcUI 版本和每款单品包中。
一分钟了解 sgcLocalization:扫描、翻译并切换一个真实的应用程序。也可在 YouTube 观看。
一行代码切换语言
更改语言所需的全部代码如下:
uses
sgcLocalization_Engine;
procedure TfrmMain.btnGermanClick(Sender: TObject);
begin
sgcSetLanguage('de');
end;
如果您不想写任何代码,可以把现成的语言组合框放到窗体上(TsgcVCLLanguageCombo 或 TsgcFMXLanguageCombo)。它会列出您项目中的语言,并在用户选择时切换。
切换所做的不只是替换标题:
- 之后创建的窗体会自动翻译。切换十分钟之后打开的对话框,也会以正确的语言显示。
- 由代码修改的值会被保留。您的代码填入客户名称的标签,不会被译文覆盖。
- 选择状态得以保留。组合框和列表在其项目切换语言时,仍保持所选的项目。
- 从右到左的语言会翻转布局,因此阿拉伯语或希伯来语用户看到的是镜像的窗体。
若要以用户系统的语言启动,只需设置一个属性:
sgcVCLLocalizer1.Language := 'auto';
只需很少的工作
本地化组件(VCL 使用 TsgcVCLLocalizer,FireMonkey 使用 TsgcFMXLocalizer)通过 RTTI 找出每个文本属性。您不必标记属性,不必重命名组件,也不必修改窗体。
内置的忽略规则会跳过绝不是文本的内容:组件名称、字段名称、SQL、文件名、格式字符串,以及 sgcUI 控件自身的非文本属性。您也可以添加自己的规则。同时包含标准控件和 sgcUI 控件的窗体也能干净地扫描,因此您要翻译的列表中只有文本,没有别的东西。
代码中的文本:文本片段
并非所有文本都在窗体里。在代码中构建的消息、状态行和标题就是文本片段。用 sgcT 包住文本,它就可以翻译:
if MessageDlg(sgcT('Save changes?'), mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
SaveOrder;
同一个词可能需要两种译法。在英语中,“Open”既是一个命令,也是订单的一种状态。sgcTC 会添加上下文,让每种含义都有自己的译文:
btnOpen.Caption := sgcTC('command', 'Open');
lblState.Caption := sgcTC('order status', 'Open');
复数使用 sgcTN。您写下源语言的单数和复数,译文则提供目标语言所需的全部形式:
lblSelected.Caption := sgcTN('%d order selected', '%d orders selected',
Count, [Count]);
复数规则来自 CLDR,因此对每种语言都是正确的。例如波兰语有四种形式,编辑器会逐一向译员索取每一种。
一个翻译编辑器
所有译文都在同一个地方编辑。在设计时右键单击本地化组件,即可在 IDE 内打开编辑器,也可以使用 IDE 之外的独立工具。
- 项目状态。每个文本都是新增、已更改、建议、已翻译、已审阅或已废弃之一,您可以按状态筛选。
- 筛选和多选。按语言、窗体或搜索文本筛选,选择多行并一起修改。
- 版本标记。为一次发布做标记,“自以下版本起新增或更改”筛选器就会准确显示下一个版本需要翻译的内容。不会遗漏任何东西。
- 译员的语言。编辑器本身提供 12 种语言,并有浅色和深色主题。
捕捉常见错误的验证
丢掉了 %d 或快捷键的译文很容易写出来,却很难发现。sgcLocalization 会检查每一条译文,无论它是手工输入、导入的,还是由 AI 提出的建议:
- 格式说明符和占位符,
- 快捷键,
- 换行符、开头和结尾的空白,
- 空译文和复数形式。
有错误的项目不能设置为已审阅,因此损坏的文本不会作为完成的工作混入发布版本。
AI 翻译,以建议的形式
编辑器可以使用 ChatGPT、Claude、Gemini 和 Ollama 等 AI 服务进行翻译。选择目标语言,提供术语表和关于语气的说明,然后开始。
结果以建议的形式出现。您逐条接受或拒绝,建议绝不会覆盖已经翻译的文本。同样的验证也会对它们运行。
面向专业译员的 XLIFF
翻译机构使用 XLIFF 工作。sgcLocalization 可以为一种语言导出 XLIFF 1.2,并在文件返回时导入。
导入绝不会直接写入您的项目。它会打开一个审阅列表,列出每一处更改:旧文本、新文本、更改的类型以及发现的任何问题。只有您勾选的行才会被应用。
一个项目文件
应用程序的译文保存在一个扩展名为 .sgcloc 的项目文件中。它是 JSON 格式,因此对版本控制很友好:一处译文的更改就是一个小的差异,您可以在代码审查中直接阅读。如果您更喜欢旁边没有任何其他文件的单个可执行文件,也可以改为把项目嵌入窗体文件中。
在真实应用程序中体验
展示用的演示程序是 Order Desk,一个完整的业务应用程序:包含仪表盘、订单、客户、计划器、数据透视分析、向导和打印预览。它已翻译成英语、德语、西班牙语、法语和意大利语,并提供 VCL、FireMonkey 和 Lazarus 版本。
演示文件夹中还有三个快速入门、独立的翻译编辑器工具,以及一份入门指南,带您从一个空窗体做到一个已翻译的应用程序。
包含在 sgcUI 中
sgcLocalization 随 sgcUI 2026.12.0 一起发布。它不单独销售:每个 sgcUI 版本和每款单品包都包含它,并且在安装程序中默认选中。
您的应用程序,使用您客户的语言
下载 sgcUI,打开 Order Desk 演示程序,并在它运行时更改语言。然后在您自己的主窗体上放一个本地化组件。
有问题或反馈?联系我们,回复您的是编写这些代码的人。
