东莞市连易网络科技有限公司
东莞市连易网络科技有限公司
  • 网站
  • 用户
  • 购物车
  • 购物车
  • 搜索
  • 网站
  • 用户
帮助
帮助
开发文档 翻译插件文本
  • 更多
  • 新建
  • +开始
  • +UI 自定义
  • +外部集成
  • -插件/框架扩展
    • -插件
      • 异常和日志记录
      • 插件生命周期
      • -插件示例
        • 使用小组件从插件渲染内容
        • 公开数据给外部源
        • 公开配置选项
        • 创建动态
        • +创建自定义应用程序和内容
        • 基于模板的电子邮件
        • 处理事件
        • 处理内容中的嵌入文件
        • 定义权限
        • 扩展规则支持
        • 文件交互
        • 文件查看器
        • 注册模板令牌
        • 管理依赖关系
        • 管理物理文件存储
        • 翻译插件文本
        • 通知
    • +设置开发环境
    • +进程 API

翻译插件文本

ITranslatablePlugin 允许您定义语言资源字符串,以便在可以在 Limyee 电商平台翻译的插件中使用. 

我为什么要翻译我的插件?

创建插件可供重用,或使插件可以在可能超出单一语言或文化范围的平台中使用时,能规划全球化。该过程的一个步骤是确保为最终用户使用生成的文本可以轻松地翻译。Limyee 电商平台通过与 ITranslatablePlugin 插件类型的交互,为翻译插件使用的文本提供支持。

创建可翻译的插件

要提供翻译插件渲染文本的支持,请实现 ITranslatablePlugin 接口(这需要引用 Limyee.Components.dll)。ITranslatablePlugin 接口扩展了 IPlugin 以添加对翻译的支持。

首先,我们将使用 ITranslatablePlugin 接口的 DefaultTranslations 属性定义一个或多个主要翻译集:

public Translation[] DefaultTranslations
{
    get 
    { 
        var translation = new Translation("en-us");

        translation.Set("my_translation_hello", "Hello");
        translation.Set("my_translation_world", "World");
        
        return new Translation[] { translation };
    }
}

此示例定义了美国英语 (en-us) 的默认翻译,其中包含两个已翻译的资源:名为 my_translation_hello 的 "hello" 和名为 my_translation_world 的 "world"。资源名称用于从平台检索已翻译的字符串,仅能用英文编写,可包含以下非英文字符:-._。

通过定义默认的翻译集,Limyee 电商平台可以通过插件资源导出和导入过程公开这些选项,以使默认字符串能够翻译成平台启用的其他语言。要检索这些翻译,插件应使用 ITranslatablePlugin 的 SetController 方法从平台请求翻译:

private ITranslatablePluginController _translationController;

public void SetController(ITranslatablePluginController controller)
{
    _translationController = controller;
}

通常,控制器存储在插件的实例变量中,供以后使用。在插件初始化期间接收后,翻译控制器便可用于检索翻译的资源字符串。

以下是我们的可翻译插件示例的完整源代码:

using Limyee.Extensibility.Version1;

namespace Samples
{
    public class SampleTranslationPlugin : IPlugin, ITranslatablePlugin
    {
        #region IPlugin

        public string Name
        {
            get { return "可翻译插件示例"; }
        }

        public string Description
        {
            get { return "此插件将演示 ITranslatablePlugin 的工作原理"; }
        }

        public void Initialize()
        {
        }

        #endregion

        #region ITranslatablePlugin

        public Translation[] DefaultTranslations
        {
            get
            {
                var translation = new Translation("en-us");

                translation.Set("my_translation_hello", "Hello");
                translation.Set("my_translation_world", "World");

                return new[] { translation };
            }
        }

        private ITranslatablePluginController _translationController;

        public void SetController(ITranslatablePluginController controller)
        {
            _translationController = controller;
        }

        #endregion
    }
}

将此示例部署到 Limyee 电商平台后,该插件将显示在 管理 > 扩展 中,可启用即时翻译:

并且其语言资源将包含在 管理 > 网站 > 插件翻译 中,可将所有插件的语言资源导入/导出,以实现批量/异地翻译。

使用已翻译的资源字符串

实现 ITranslatablePlugin 后,应使用翻译控制器使用默认翻译中定义的资源名称来检索已翻译的文本。使用上面的示例,我们可以与插件的 _translationController 实例变量进行交互,以检索 “hello” 的翻译:

string hello = _translationController.GetLanguageResourceValue("my_translation_hello");

翻译控制器的 GetLanguageResourceValue 方法将为当前访问用户(如果未提供显式语言)或提供的显式语言返回所请求语言资源的最佳匹配翻译。

在实现通过 UI 或后台进程与用户交互其他插件类型时,翻译语言资源字符串是非常有用。

  • 分享
  • 历史
相关
推荐
Copyright © 2021 东莞市连易网络科技有限公司. All rights reserved.
Powered by Limyee Commerce System(3.0.0). © 2014 - 2025 Limyee Inc.