当前位置: 首页 > 面试题库 >

如何最佳地组织角度翻译中的翻译字符串?

姚烨
2023-03-14
问题内容

我在相当大的Angular项目上使用angular-translate。我将项目分为多个模块以使其更易于管理,但是无法分解每个模块的翻译字符串。

例如,我有模块A和B,其中B是A的子模块。有一些与模块A覆盖的HTML有关的字符串,它们位于’/json/localization/A/en.json’中。同样,我在’/json/localization/B/en.json’中放置了与B有关的字符串。首先,我使用angular-
translate的$ translationProvider将B的en.json加载到模块B中。然后,我也使用$
translationProvider加载模块A的en.json。问题在于,加载A的字符串会覆盖B的字符串,并且它们会丢失。

使用angular-translate,有没有一种方法可以加载每个模块的字符串而不进行覆盖,或者父模块是否必须从单个en.json加载所有字符串?

这是我如何加载翻译字符串的示例(在coffeescript中):

my_module.config(['$translateProvider', ($translateProvider) ->
  $translateProvider.useStaticFilesLoader
    prefix: '/json/localization/A/'
    suffix: '.json'

  $translateProvider.preferredLanguage 'en'
])

问题答案:

angular-
translate支持异步加载部分语言文件。所有部分都将每种语言合并为一个词典。官方文档可以在这里找到:http : //angular-
translate.github.io/docs/#/guide/12_asynchronous-loading

它支持为指向模块化语言文件的url模板应用模板:

$translateProvider.useLoader('$translatePartialLoader', {  
  urlTemplate: '/i18n/{part}/{lang}.json'
});

在控制器内部,您可以添加语言模块并刷新数据绑定,如下所示:

angular.module('contact')
  .controller('ContactCtrl',
    function ($scope, $translatePartialLoader, $translate) {  
      $translatePartialLoader.addPart('contact');
      $translate.refresh();
    });

当然,也可以在路线的解析阶段中涵盖部分加载

另外,您也可以考虑构建自己的自定义加载器功能。http://angular-
translate.github.io/docs/#/guide/13_custom-loaders

这提供了将所需的语言模块结合在一起的全部灵活性。例如,您可以执行以下操作:

app.factory('customLoader', function ($http, $q) {
  // return loaderFn
  return function (options) {
    var deferred = $q.defer(); 
    var data = {
      'TEXT': 'Fooooo'
    };
    $http.get('nls/moduleA/en.json').success(function(moduleA){
      angular.extend(data, moduleA);
      $http.get('nls/moduleB/en.json').success(function(moduleB){
        angular.extend(data, moduleB);
        deferred.resolve(data);
      });
    });
    return deferred.promise;  
  };
});


 类似资料:
  • 简介 深度翻译(英文名:Deepin Translator)是deepin 团队为开发的一款强大的翻译软件。 深度翻译提供数十种语言互译,支持划出和取词,同时还支持图片取词,简洁的外观和操作,为您提供从所未有的翻译体验。 深度翻译是一款自由软件,遵循自由软件基金会发布的 GNU 通用公共许可证第三版。 目前最新版本为1.0版本。 特性 *多种语言互翻,支持有道、Google、星际译王 *离线可以使

  • 我正在用Django做一个中文博客。我用中文写所有我能控制的东西,如文章文本,博客标题,博客导航,评论和联系人表单的标签标签。我唯一不能控制的是表单提交错误,如“此字段是必需的。”,“输入有效的电子邮件地址。”。因为我使用django评论框架和表单库来制作我的评论表单和联系人表单,我不知道如何将英文版替换成中文版。 为什么django翻译一些错误消息而忽略其他错误消息? 如果django不能自动翻

  • 翻译是一门非常强调实践并依赖练习的手艺活,这本书是作者从翻译“票友”出发,走“野路”逐渐成长为翻译“熟手”的经验总结。 不同于传统的正经教材,这本书更强调实践经验。全书分三部分:翻译概论让大家对翻译有个全面的了解,译文讲习详细剖析热心网友提供的译文习作,实战经验好比软件开发中的设计模式,它讲解各种常见搭配、句型的处理之道,告诉读者:遇到这类问题,照着做就好了。

  • 我有一个从xml文档中读取数据的程序。在这个xml文档中,一些属性包含特殊字符,如“\n”、“t”等。 有没有一种简单的方法可以将所有这些字符串替换为实际的字符,或者我必须像下面的例子一样为每个字符手动替换? 手动示例: 编辑: 我正在寻找某种方法来处理字符串,就像这样的转义字符串(尽管我知道这是行不通的)

  • 翻译 & 本地化 Docusaurus允许使用 Crowdin 轻松实现翻译功能。 以英文撰写的文档文件将上传到 Crowdin,由社区内的用户进行翻译。 使用英文字符串编写的顶层页面可以通过在 <translate> 标签中包装要翻译的任何字符串来翻译。 其他标题和标签也将被找到并正确翻译。 Docusaurus 翻译配置 要用 Docusaurus 生成用于翻译的示例文件,请使用命令行参数 t

  • 您可使用 Google Translate™ 应用程式翻译词组: 按下侧边电源按钮打开应用程式菜单,找到并轻触Translate(翻译)。 您将看到翻译源语言与目标语言这两种语言。您可通过轻触某一语言的名称来更改语言。 轻触“麦克风”图标并说出您想翻译的词组。 译文将显示在屏幕上。