MEAN.JS带角度平移

时间:2015-10-08 15:42:14

标签: angularjs node.js express meanjs

我正在验证Mean.JS 0.4.1

尝试在示例应用程序上实现多语言支持。

关注这篇文章http://outlandish.com/blog/internationalisation-using-angular-translate-express-and-node/

bower安装了以下包

" angular-translate":" ~2.5.2", " angular-translate-loader-url":" ~2.5.2", " angular-translate-storage-cookie":" ~2.5.2"

添加了' pascalprecht.translate'到modules \ core \ client \ app \ config.js中依赖项的末尾,如下所示。

var applicationModuleVendorDependencies = ['ngResource', 'ngAnimate', 'ngMessages', 'ui.router', 'ui.bootstrap', 'ui.utils', 'angularFileUpload','ui.utils.masks','pascalprecht.translate'];

之后在modules \ core \ client \ app \ init.js

中添加了以下行
angular.module(ApplicationConfiguration.applicationModuleName).config(['$locationProvider', '$httpProvider','$translateProvider',
  function ($locationProvider, $httpProvider,$translateProvider) {

    $translateProvider.useUrlLoader('/lang'); //Added By Me
    $translateProvider.preferredLanguage('es'); //Added By Me

    $locationProvider.html5Mode(true).hashPrefix('!');

    $httpProvider.interceptors.push('authInterceptor');
  }
]);

我已经在modules \ core \ server \ routes \ core.server.routes.js

中创建了一条快速路线,如下图所示。

//语言路线   app.route(' /郎&#39)。得到(core.getLanguageText); //由我添加

我已经在modules \ core \ server \ controllers \ core.server.controller.js中创建了一个如下所示的getLanguageText

exports.getLanguageText = function (req, res) {
   console.log('Call Received To getLanguageText');
   console.log('Language Requested Is: '+  req.query.lang);
// Check endpoint called with appropriate param.:
    if(!req.query.lang) {
        res.status(500).send();
        return;
    }

    try {
        var lang = require('../config/i18n/' + req.query.lang);
        res.send(lang); // `lang ` contains parsed JSON
    } catch(err) {
        res.status(404).send();
    }
};

我尝试在客户端的home.client.view.html中使用上面的实现 如下

 <h1>{{ 'home.helloWorld' | translate }}</h1>

在服务器上定义的Json文件

es.json

{
    "languageNames": {
        "en": "Inglés",
        "es": "Español",
        "fr": "Francés"
    },
    "home": {
        "helloWorld": "Hola Mundo!"
    }
}

快递路线从未被击中而且我正在接受。

 GET /lang?lang=es 304 12.647 ms - -

在节点控制台上。

为什么我的路线从未被击中,为什么我得到304.

是否有更好的解决方案可以在MEAM.JS堆栈上实现多语言支持。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您确定angular-translate.js文件包含在布局中吗?

默认情况下,未加载bower安装的文件(/public/lib上的文件)。相反,它的路径在/config/assets/default.js

中硬编码