把 Web 应用翻译成阿拉伯语或希伯来语只是简单的一半。困难的一半在于,整个页面都必须从右向左阅读:侧边栏移到另一侧,步骤条从右边开始计数,聊天气泡左右互换,树形视图向另一个方向缩进。手工完成这些工作,意味着要添加 dir 属性、使用另一个版本的 Bootstrap,并为你写过的每一条自定义 CSS 规则再写第二个版本。
sgcWebSockets 2026.10 中的 sgcHTML 会替你完成所有这些工作。选择语言,布局随之而变。
一行代码
uses
sgcHTML_Locale;
sgcHTMLSetLanguage(htmlLangArabic);
这会像以前一样把组件的内置文本切换为阿拉伯语,同时现在也会切换此后渲染的每一个页面的方向。切换回任何其他语言,页面就又变回从左到右。
或者只用语言代码
要获得这种布局,并不需要内置翻译。只要页面语言是从右到左的语言就足够了:
Site.Lang := 'he'; { Hebrew: right-to-left, no other change }
sgcHTML 可识别阿拉伯语、希伯来语、波斯语、乌尔都语、普什图语、意第绪语、迪维希语、维吾尔语、中库尔德语和信德语,无论是否带地区代码,因此 ar-EG 和 he-IL 同样有效。
页面上有哪些变化
<html>标签会获得dir="rtl"。- 页面会加载 Bootstrap 的从右到左样式表,而不是常规样式表。它已嵌入库中,并通过
/bootstrap.rtl.min.css提供,选择 CDN 选项时会切换为 CDN 副本。你自己指定的样式表路径则保持不变。 - sgcHTML 组件会镜像翻转:站点侧边栏和图标栏、步骤条、时间线、聊天、在线状态、树形视图、滑块、拆分器、表格的列宽调整和冻结列、通知、头像以及看板。
- 图表、仪表盘、仪器和甘特图的时间轴会特意保持其几何形状不变。数值刻度或时间线是数据,而不是阅读顺序。
从左到右的页面不会改变
镜像是通过额外的规则实现的,这些规则只在从右到左的页面内生效。没有改写任何现有规则,因此英文页面渲染出的标记与之前完全相同,并且在不支持较新的 CSS 逻辑属性的旧版嵌入式浏览器中仍然可以正常工作。
强制指定方向
自动选择始终可以被覆盖。站点组件上的 Dir,以及页面构建器、登录页面和 Bootstrap 模板上的 HtmlDir,都接受 'rtl' 或 'ltr'。留空则为自动。
Site.Lang := 'ar';
Site.Dir := 'ltr'; { Arabic text, left-to-right layout }
C++Builder 和 .NET
C++Builder 使用相同的单元。.NET 版本具有相同的功能和相同的输出:
sgcHTMLLocaleFactory.sgcHTMLSetLanguage(TsgcHTMLLanguage.htmlLangArabic);
site.Lang = "ar";
site.Dir = ""; // empty means automatic
试一试
新的演示 22.RTL 以英语、阿拉伯语和希伯来语展示同一个页面,并带有一个强制从左到右的链接,方便你对比。Delphi 版本有两种形式:在代码中构建的 Demos\60.HTML\01.RunTime\22.RTL,以及通过窗体构建的 Demos\60.HTML\02.DesignTime\22.RTL;C# 版本位于 demos\60.HTML\22.RTL。你也可以在线打开。
完整的组件列表请参阅 sgcHTML 产品页面。
继续阅读
观看视频
在 eSeGeCe 频道上有一段关于此功能的短视频。
有问题、反馈或需要迁移方面的帮助?欢迎联系我们。回复你的将是编写这些代码的人。
