DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。
获取DevExpress v23.2正式版下载(Q技术交流:909157416)
在2023年12月(v23.2),DevExpress官方发布了一个新的UI Localization Client(UI本地化客户端)工具,旨在简化基于Blazor、WinForms、WPF和ASP. NET的DevExpress应用程序。
UI本地化客户端允许您在应用程序/网站中定位未翻译的资源字符串,翻译它们,自动生成本地化资源,并预览结果。
UI本地化客户端解决的挑战
DevExpress Localization Service(本地化服务)允许您下载由DevExpress开发者社区生成的本地化资源,这简化了本地化过程,但社区来源的本地化资源可能不完整。
如果您使用过Localization Service,就会知道在应用程序中查找未翻译的资源字符串是很困难的(本地化服务不知道您的应用程序中使用了什么资源字符串)。一旦找到了未翻译的字符串,我们当前的本地化服务要求您使用本地化服务本身修改字符串,构建和下载附属组件,并在您的项目中重用它们。
正如您将在下面看到的,新UI本地化客户端消除了这些常规和耗时的步骤/任务。
新的UI本地化客户端是如何工作的?
UI Localization Client(UI本地化客户端)附加到您的应用程序,只加载那些在应用程序/网站中使用的DevExpress资源字符串(当它们在运行时出现在UI中时)。您可以定位未翻译(或错误翻译的资源字符串),随时翻译它们,自动生成所需的RESX文件,自动将它们添加到项目中,并预览结果。
特点
Visual Studio集成
从Visual Studio菜单中运行UI本地化客户端:
自动检测未翻译的资源字符串
使用此选项,您可以在应用程序中出现未翻译的资源字符串时找到它们,UI Localization Client(UI本地化客户端)在加载未翻译的字符串时识别它们。
您所需做的就是在应用程序启动时激活源跟踪:
// Do not remove the following line when using the UI Localization Client.
DevExpress.Utils.Localization.XtraLocalizer.EnableTraceSource();
UI Localization Client(本地化客户端)尝试自动获取应用程序名称,但在某些应用程序(例如Web项目)中可能无法做到这一点。您应该显式地将应用程序的唯一名称指定为EnableTraceSource方法的参数,否则UI Localization Client将不会连接到应用程序。
XtraLocalizer.EnableTraceSource(applicationName: "MyApp");
自动生成本地化资源
UI Localization Client(本地化客户端)自动生成带有翻译字符串的RESX文件,并将其添加到您的项目中。您不需要修改Localization Service(本地化服务)中的资源,构建和下载附属组件,并在您的项目中重用它们。
新的本地化相关API
DevExpress.Utils.Localization.XtraLocalizer类实现了允许您在运行时(动态地)翻译或修改运输资源的API,在v23.2中实现了允许您执行以下任务的新API。
检测非翻译字符串
新的QueryLocalizedStringNonTranslated事件允许您关注应用程序/网站中需要翻译的字符串,处理此事件以查找和记录未翻译的字符串:
static Dictionary<string, string> deNotTranslatedResources = new Dictionary<string, string>();
private static void XtraLocalizer_QueryLocalizedStringNonTranslated(object sender, XtraLocalizer.QueryLocalizedStringEventArgs e) {
deNotTranslatedResources.Add(e.ResourceStringID, e.InvariantString);
}
如果您将本地化字符串发送给不同的部门或第三方翻译服务进行翻译,这种技术可能会很有用。
RESX文件支持
本地化机制现在支持RESX文件,您可以使用带有翻译字符串的自定义RESX文件。UserResourceManager属性的使用方法如下:
XtraLocalizer.UserResourceManager = Localization.myResources.ResourceManager;
本地化内置数据表单
您现在可以本地化在DevExpress UI控件中集成的数据表单所使用的资源字符串(例如,WinForms富文本编辑器中的BookmarkForm)。在以前的版本中,很难识别特定于内置表单的资源字符串。
当数据表单为其UI元素请求资源字符串时,QueryLocalizedStringContainerResource事件将被触发,处理该事件以翻译非本地化的资源字符串或修改现有表单元素资源。
基于事件的本地化
QueryLocalizedString事件允许您为应用程序/网站中的所有DevExpress UI控件本地化资源。当DevExpress UI控件请求资源字符串并允许您根据需要翻译或修改字符串时,该事件会触发。我们添加了新的事件参数,如e.IsTranslated, e.Value, e.StringIDType等。
static private void XtraLocalizer_QueryLocalizedString(object sender, XtraLocalizer.QueryLocalizedStringEventArgs e) {
if (e.StringIDType == typeof(GridStringId)) {
if ((GridStringId)e.StringID == GridStringId.GridGroupPanelText)
e.Value = "Gruppenregion";
}
//...
}
总结
DevExpress UI Localization Client可以帮助您隔离应用程序/网站中使用的字符串,这样可以很容易地识别未翻译的资源字符串,根据需要翻译它们,并构建RESX文件(并将它们包含在项目中)。
以下API允许您实现与高级本地化相关的任务:
- XtraLocalizer.QueryLocalizedStringNonTranslated
- XtraLocalizer.QueryLocalizedStringContainerResource
- XtraLocalizer.UserResourceManager