【问题标题】:i18n using Angular Translate StaticFilesLoaderi18n 使用 Angular 翻译 StaticFilesLoader
【发布时间】:2014-03-27 12:31:26
【问题描述】:

我在 ng-newsletter 关注 this tutorial,使用 Angular-Translate 将 i18n 应用于我的应用程序。当我在 app.js 文件中包含翻译时,该应用程序运行良好,但我无法让 StaticFilesLoader 工作。这是我的 app.js 文件,其中的工作代码已被注释掉-

angular.module('myApp',
[
'ngCookies',
'ngRoute',
'ngResource',
'pascalprecht.translate',
'myApp.services',
'myApp.directives',
'myApp.controllers',
]);


angular.module('myApp.services', ['ngResource']);
angular.module('myApp.directives', []);
angular.module('myApp.controllers', []);


angular.module('myApp')
.config(['$httpProvider', '$translateProvider', function($httpProvider, $translateProvider) {
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
console.log($httpProvider.defaults);

/*$translateProvider.translations('en', {
    HEADLINE: 'This is my home page',
    HOME: 'Home',
    SETTINGS: 'Settings',
    LOGOUT: 'Log Out',
    EDIT: 'Edit' ,
    DELETE: 'Delete' ,
    PASSWORD: 'Password' ,
    CONFIRM_PASSWORD: 'Confirm Password' ,
    BUTTON_TEXT_EN: 'english',
    BUTTON_TEXT_DE: 'german'

  })
  .translations('de', {
    HEADLINE: 'Dies ist der Homepage',
    HOME: 'Zuhause',
    SETTINGS: 'Einstellungen',
    LOGOUT: 'Ausloggen',
    EDIT: 'Bearbeiten' ,
    DELETE: 'Löschen' ,
    PASSWORD: 'Passwort' ,
    CONFIRM_PASSWORD: 'Passwort Bestätigen' ,
    BUTTON_TEXT_EN: 'englisch',
    BUTTON_TEXT_DE: 'deutsch'
  }); */

  $translateProvider.preferredLanguage('en');

  $translateProvider.useStaticFilesLoader({
          prefix: '/languages/',
          suffix: '.json'
        });

}]);

我在我的应用程序中添加了两个文件 en.json 和 de.json 以及一个名为 /languages 的文件夹。当我尝试运行应用程序时,我收到一条错误消息:

Uncaught Error: [$injector:unpr] Unknown provider: $translateStaticFilesLoaderProvider <- $translateStaticFilesLoader

如何将其声明为依赖项?我认为这是 pascalprecht.translate 的一部分。

【问题讨论】:

    标签: angularjs internationalization


    【解决方案1】:

    在你的文件中也包括这个:

    angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",["$q","$http",function(a,b){return function(c){if(!c||!angular.isString(c.prefix)||!angular.isString(c.suffix))throw new Error("Couldn't load static files, no prefix or suffix specified!");var d=a.defer();return b({url:[c.prefix,c.key,c.suffix].join(""),method:"GET",params:""}).success(function(a){d.resolve(a)}).error(function(){d.reject(c.key)}),d.promise}}]);
    

    将其重命名为 angular-translate-loader-static-files.min.js 并包含它。

    它位于:https://github.com/angular-translate/bower-angular-translate-loader-static-files

    【讨论】:

    • 我最终复制了 staticFilesLoader 模块并将其粘贴到主 angular-translate.js 文件中。现在可以正常使用了。
    • 很高兴它有帮助!前几天遇到了同样的问题,我认为假设每个人都使用凉亭是愚蠢的。
    • 我确实使用了 bower,但仍然没有得到这个依赖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    相关资源
    最近更新 更多