当前位置: 首页 > 知识库问答 >
问题:

如何加载JSON数组使用Angulal-Translate翻译AngularJS网页

祝花蜂
2023-03-14

我仍在大量学习AngularJS,所以请原谅我所有的劣质代码/缺乏知识。

我想做什么

我想把我的网页翻译成两种语言。当前,当我在索引中使用角度平移来平移静态内容时,它会起作用。html。像这样

function translateConfiguration($translateProvider) {

    $translateProvider.useSanitizeValueStrategy(null);

    $translateProvider.useStaticFilesLoader({
      files: [{
        prefix: '../JSON/locale-',
        suffix: '.json'
      }]
});

$translateProvider.preferredLanguage('en');
$translateProvider.fallbackLanguage('en');

};

我加载EN和RU语言环境的简单JSON文件,结构如下

{
 "HEADING" : "Lorem",
 "TEXT" : "Ipsum"
}

然后我通过Angular translate指令访问变量

<h1 class="z-logo header-text md-display-1" translate="HEADING">
</h1>

一切正常。

我希望能够对自定义指令和ng repeat执行相同的操作。

问题

我在AngularJS网站中有多个自定义指令。例如

<about-card flex="33" flex-xs="100" flex-sm="100" class="center-content" ng-repeat="data in aboutCardCtrl.info">
</about-card>

这是通过自定义指令加载并从JSON文件中检索信息的模板代码

<md-card class="card-bg card-height">
  <md-card-title layout="column" class="about-card">
    <md-card-title-media class="center-elements">
      <img class="md-media-lg" ng-src="{{data.image}}" alt="{{data.imageAlt}}"/>
    </md-card-title-media>
    <md-card-title-text>
      <div class="md-headline card-title-padding">{{data.heading}}</div>
    </md-card-title-text>
  </md-card-title>
  <md-card-content>
    {{data.content | translate}}
  </md-card-content>
</md-card>

这是指令

(function() {
  'use strict'

  angular
    .module('webApp')
    .directive('aboutCard', aboutCard);

  function aboutCard() {
    return {
      restrict: 'EA',
      priority: 1001,
      templateUrl: '../TEMPLATES/about.html',
      controller: 'aboutCardController',
      controllerAs: 'aboutCardCtrl'
    };
  };
})();

这里是控制

(function() {
  'use strict'

  angular
    .module('webApp')
    .controller('aboutCardController', aboutCardController);

  aboutCardController.$inject = ['JsonData', '$translate'];

  function aboutCardController(JsonData, $translate) {
    var vm = this;

    vm.pathToJson = '../JSON/about-en.json';
    vm.info = [];

    JsonData.all(vm.pathToJson).then(function(response) {
      vm.info = response.data.information;
    });
  };
})();

这是JSON文件

  {
      "information": [{
        "heading": "Reliability",
        "content": "Our partners have been working on the market for over 10 years",
        "image": "../IMG/shield.svg",
        "imageAlt": "Reliability Image"
      }, {
        "heading": "Professionalism",
        "content": "We are ready to provide profesional opinion for our clients to ensure the right choice",
        "image": "../IMG/people.svg",
        "imageAlt": "Professionalism Image"
      }, {
        "heading": "Development",
        "content": "Organization of educational programs in collaboration with our partners",
        "image": "../IMG/cogwheel.svg",
        "imageAlt": "Development Image"
      }]
    }

在这里,我想我缺乏脑力来理解如何加载我的JSON文件并在使用ng-重复的自定义指令中在它们之间切换。因为JSON的格式不同。

我一直在浏览角度翻译wiki页面,但所有示例都只提供索引。html和主应用程序。js文件和我似乎很难找到/理解在google搜索中找到的这些示例

https://technpol.wordpress.com/2013/11/02/adding-translation-using-angular-translate-to-an-angularjs-app/

https://github.com/angular-translate/angular-translate/issues/1154

共有1个答案

卫才
2023-03-14

您可以使用动态加载程序而不是静态加载程序。

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

然后加载所需的JSON,如下所示:

$translatePartialLoader.addPart('about');

语言前缀将自动添加到路径中。

 类似资料:
  • 我已经实现了ngx-translate Angular-Cli 但是如何翻译HTML组件的属性呢?比如: (上面的代码不起作用) 提前感谢任何帮助提供… JB

  • 问题内容: 我需要使用Retrofit 2发布JSON对象。我的JSON对象是 {“ logTime”:“”,“ datas”:[{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” } ,{“ dat1”:“ 1”,“ dat2”:“”,“ dat3”:“”,“ dat4”:“”,“ dat5”:“” }]} 我尝试使用以下代码: A

  • 一旦绘制图形,Translate属性用于在x和y中进行平移。 语法 (Syntax) 以下是添加翻译的简单语法。 xtype: 'draw', translate: {x:10, y:10} 例子 (Example) 以下是一个显示用法的简单示例。 <!DOCTYPE html> <html> <head> <link href = "https://cdnjs.cloudfl

  • 没有关于如何使用Google Translate API Client library for java的示例。 在本页中,谷歌建议搜索他们的API示例,但没有一个用于谷歌翻译API的示例:https://github.com/google/google-api-java-client-samples 因为我没有找到任何例子为谷歌翻译API我没有任何线索关于如何使用他们的官方java库。 我想提出

  • 我想从MongoDB集合中获得我的翻译。我找到了一个使用自定义加载器服务的例子(https://github.com/angula-translate/angula-translate/blob/920a9febc22f61368153d844f7cbefcfebb6ecec/src/service/loader-url.js)。 但是,我想在没有可用的翻译时,在该集合中自动获取我的翻译密钥。有办

  • 问题内容: 我正在开发Angular Web应用程序的i18n部分,我想在配置阶段使用angular-translate。 我定义了一些我想翻译的数据: 这是我的配置声明: 我得到的错误是经典 错误 : 错误:[$ injector:unpr]未知提供程序:$ filter 我知道我不能在配置阶段使用服务,只能在提供程序中使用,但是我的问题有解决方案吗? 编辑: 我的问题已经解决,方法是将键 ‘t