我在一个相当大的角度项目上使用角度翻译。我将项目分解成多个模块,使其更易于管理,但是我无法分解每个模块的翻译字符串。

例如,我有模块A和B,其中B是A的子模块。有与模块A覆盖的HTML相关的字符串,它们放在’/json/localization/A/en.json’中。同样地,有一些与B相关的字符串,我放在’/json/localization/B/en.json’中。首先,使用angular-translate的$ translationProvider在模块B中加载B的en.json。然后我加载模块A的en.json,也使用$ translationProvider。问题是加载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

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

$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;  
  };
});

angularjs – 如何最好地组织翻译字符串的角度翻译?的更多相关文章

  1. IOS键盘默认按钮翻译

    实际上,我只需要在十进制键盘上将“done”/“pref”/“next”按钮翻译成俄语或其他语言.顺便说一下,本地化的应用程序在俄语中.此外,当我改变本地化语言时,所有其他按钮,如“取消”在其他控件被自动翻译.但不是这样.可以不经过定制吗?

  2. [翻译]Swift编程语言——关于Swift

    Swift是一门用于iOS和OSX应用开发的新的编程语言,它以C和Objective-C语言为基础,但没有C语言的兼容性约束。Swift的酝酿花费了数年。Apple为了Swift改进了已有的编译器、调试器和框架的底层。对于Objective-C语言的开发者,Swift是那样的似曾相识。在这个基础之上,Swift引入了许多新的特性并且支持面向对象编程。Swift将现代编程语言的精华和苹果工程文化中的智慧结合在一起。所有这些使得Swift对于开发者和Apple都是一笔对未来可靠的投资。

  3. [翻译]Swift导览

    Swift导览第一次用一门新语言编程,通常要在屏幕上打印“Hello,World”。本章会通过展示如何完成一系列变成任务,来给你的Swift编程之旅开个好头。在Mac电脑上,下载playground,双击连接https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.playground.zip用Xcode将其打开。Swift中的值不会隐式转换类型。

  4. [翻译]Swift编程语言——基础

    基础Swift是一个门用于iOS和OSX开发的新语言。但是,Swift的很多内容同C语言、OC语言相似。Swift提供了C和OC语言的基础类型的自我版本,包括Int表示整型,Double和Float表示浮点数,Bool表示布尔值,String表示文字数据。Swift也广泛使用那种值不能修改的变量。在常见的类型之外,Swift引入了OC语言没有的高级类型,比如元组。从可选类型可以看得出来Swift是一门类型安全的语言。Swift会帮助你明确代码中可以操作的值的类型。

  5. [翻译]Swift编程语言——基本操作符

    基本操作符操作符就是一个简单的符号或者短语,你可以用他们来检查、改变、组合数据。Swift支持标准C的大多数操作符而且有若干改进可以避免代码错误。算数运算符会检测并且不接受溢出的数据,你可以选用Swfit的溢出操作符预防这种情况出现。像C一样,Swift允许你对浮点数取余,同时Swfit也提供了两个C没有的范围操作符(a..术语操作符有一元、二元以及三元的:一元操作符只有一个操作对象(比如-a)。

  6. [翻译]Swift编程语言——控制流

    控制流for、while、if、switch和C基本一样for-in扩展forSwift的switch比C语言的要强大。当语句被执行后,index的值被范围内的第二个数字2替换,循环体内的语句被再次执行。for-int同样可以使用在遍历字符串中字符的情形下:for一般的形式:和C语言不同的就是缺少了圆括号。Swift提供两个格式的while:1:while在每次执行循环体前判断条件。如果到达或超过25号格子,循环条件检查为假,游戏结束。继续执行if括号后的内容。

  7. [翻译]Swift编程语言——函数

    Swift的标准化函数语法足够用来表述无论是C风格的无参函数,还是复杂的OC风格的具有本地和外部参数的方法。每个Swift的函数都有类型,类型包括了函数的参数类型和返回值类型。为了让这个函数看起来更简洁,可以将讯息创建和返回语句组合在一行实现:函数的参数和返回值Swift的函数参数以及返回值是非常灵活的。写那个名字一次,在它的前面加上井号就可以,这个告诉Swift这个参数的局部名称和外部名称相同。

  8. [翻译]Swift编程语言——闭包

    Swift的闭包和C语言和OC中的blocks、其他语言中的lambdas类似。Swift的闭包表达式具有干净清晰的风格,withoptimizationsthatencouragebrief,clutter-freeSyntaxincommonscenarios.有点有:1根据上下文推断参数和返回值的类型。Sorted函数Swif标准库提供了一个叫做sorted的函数,它用来对已知类型的数组进行排序,实现过程是通过传入的排序闭包。Swift的字符串类型支持用>作为一个函数表示大于,返回一个布尔值。有一个

  9. [翻译]Swift编程语言——枚举

    Swift的枚举更加灵活,不必给每个枚举成员指定值。Swift中的枚举是第一类型。NOTE和C语言和OC不同,在创建时,Swift的枚举成员不被指定一个默认的整型数值。像Swift中的其他类型一样,他们的名字需要首字母大写。在Switch语句中匹配枚举类型你可以使用switch语句匹配单个的枚举内容:你可以这样解读上面的代码:判断一下directionToHead的值。和控制流一章描述的一样,switch语句的分支必须涵盖枚举的所有内容。然而有时单独给枚举的每个成员存储联合数值更有必要。

  10. [翻译]Swift编程语言——类和结构体

    Swift中,你在单独文件中定义一个类或者结构体,关联到这个类或者结构体的外部接口会自动生效,供其它代码使用。然而,同其他语言相比,Swift的类和结构体在功能方面更加密切,本章的大部分会介绍可以用在类或者结构体实例上的功能。实际上Swift中所有的基本类型——整型、浮点型、布尔类型、字符串,数组和字典都是值类型,并且在后台以结构体的形式实现。Swift中所有的结构体和枚举都是值类型的。

随机推荐

  1. Angular2 innerHtml删除样式

    我正在使用innerHtml并在我的cms中设置html,响应似乎没问题,如果我这样打印:{{poi.content}}它给了我正确的内容:``但是当我使用[innerHtml]=“poi.content”时,它会给我这个html:当我使用[innerHtml]时,有谁知道为什么它会剥离我的样式Angular2清理动态添加的HTML,样式,……

  2. 为Angular根组件/模块指定@Input()参数

    我有3个根组件,由根AppModule引导.你如何为其中一个组件指定@input()参数?也不由AppModalComponent获取:它是未定义的.据我所知,你不能将@input()传递给bootstraped组件.但您可以使用其他方法来做到这一点–将值作为属性传递.index.html:app.component.ts:

  3. angular-ui-bootstrap – 如何为angular ui-bootstrap tabs指令指定href参数

    我正在使用角度ui-bootstrap库,但我不知道如何为每个选项卡指定自定义href.在角度ui-bootstrap文档中,指定了一个可选参数select(),但我不知道如何使用它来自定义每个选项卡的链接另一种重新定义问题的方法是如何使用带有角度ui-bootstrap选项卡的路由我希望现在还不算太晚,但我今天遇到了同样的问题.你可以通过以下方式实现:1)在控制器中定义选项卡href:2)声明一个函数来改变控制器中的散列:3)使用以下标记:我不确定这是否是最好的方法,我很乐意听取别人的意见.

  4. 离子框架 – 标签内部的ng-click不起作用

    >为什么标签标签内的按钮不起作用?>但是标签外的按钮(登陆)工作正常,为什么?>请帮我解决这个问题.我需要在点击时做出回复按钮workingdemo解决方案就是不要为物品使用标签.而只是使用divHTML

  5. Angular 2:将值传递给路由数据解析

    我正在尝试编写一个DataResolver服务,允许Angular2路由器在初始化组件之前预加载数据.解析器需要调用不同的API端点来获取适合于正在加载的路由的数据.我正在构建一个通用解析器,而不是为我的许多组件中的每个组件设置一个解析器.因此,我想在路由定义中传递指向正确端点的自定义输入.例如,考虑以下路线:app.routes.ts在第一个实例中,解析器需要调用/path/to/resourc

  6. angularjs – 解释ngModel管道,解析器,格式化程序,viewChangeListeners和$watchers的顺序

    换句话说:如果在模型更新之前触发了“ng-change”,我可以理解,但是我很难理解在更新模型之后以及在完成填充更改之前触发函数绑定属性.如果您读到这里:祝贺并感谢您的耐心等待!

  7. 角度5模板形式检测形式有效性状态的变化

    为了拥有一个可以监听其包含的表单的有效性状态的变化的组件并执行某些组件的方法,是reactiveforms的方法吗?

  8. Angular 2 CSV文件下载

    我在springboot应用程序中有我的后端,从那里我返回一个.csv文件WheniamhittingtheURLinbrowsercsvfileisgettingdownloaded.现在我试图从我的角度2应用程序中点击此URL,代码是这样的:零件:服务:我正在下载文件,但它像ActuallyitshouldbeBook.csv请指导我缺少的东西.有一种解决方法,但您需要创建一个页面上的元

  9. angularjs – Angular UI-Grid:过滤后如何获取总项数

    提前致谢:)你应该避免使用jQuery并与API进行交互.首先需要在网格创建事件中保存对API的引用.您应该已经知道总行数.您可以使用以下命令获取可见/已过滤行数:要么您可以使用以下命令获取所选行的数量:

  10. angularjs – 迁移gulp进程以包含typescript

    或者我应该使用tsc作为我的主要构建工具,让它解决依赖关系,创建映射文件并制作捆绑包?

返回
顶部