简体   繁体   English

MEAN.JS与角度翻译

[英]MEAN.JS with angular-translate

I am validating Mean.JS 0.4.1 我正在验证Mean.JS 0.4.1

Trying to implement multilingual support on sample application. 尝试在示例应用程序上实现多语言支持。

Following this article http://outlandish.com/blog/internationalisation-using-angular-translate-express-and-node/ 紧随本文http://outlandish.com/blog/internationalisation-using-angular-translate-express-and-node/

bower installed following packages 安装以下软件包的凉亭

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

added 'pascalprecht.translate' to the end of the dependencies in modules\\core\\client\\app\\config.js as shown below. 如下所示,在modules \\ core \\ client \\ app \\ config.js中的依赖项末尾添加了“ pascalprecht.translate”。

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

after that added following lines in modules\\core\\client\\app\\init.js 之后,在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');
  }
]);

I've created a express route as show below in modules\\core\\server\\routes\\core.server.routes.js 我已经在modules \\ core \\ server \\ routes \\ core.server.routes.js中创建了如下所示的快速路由

//Language Route app.route('/lang').get(core.getLanguageText); //语言路由app.route('/ lang')。get(core.getLanguageText); //added by me //由我添加

I've created a getLanguageText shown below in modules\\core\\server\\controllers\\core.server.controller.js 我已经在模块\\核心\\服务器\\控制器\\ 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();
    }
};

I try to use above implementation in home.client.view.html on client side as follows 我尝试在客户端的home.client.view.html中使用上述实现,如下所示

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

Json file defined on sever 服务器上定义的JSON文件

es.json es.json

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

express route is never been hit and i am getting. 快递路线从未被击中,而我得到了。

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

on node console. 在节点控制台上。

why is my route never hit and why am i getting 304. 为什么我的路线从未打过,为什么我要打304。

Are there any better solutions to implement multilingual support on MEAM.JS stack. 是否有更好的解决方案在MEAM.JS堆栈上实现多语言支持。

Thanks in advance. 提前致谢。

Are you sure the angular-translate.js file is being included in the layout ?? 您确定将angular-translate.js文件包含在布局中吗?

It looks like bower-installed files (those on /public/lib ) are not loaded by default. 看起来Bower安装的文件( /public/lib上的文件)默认未加载。 Instead, its paths hardcoded in /config/assets/default.js 相反,其路径硬编码在/config/assets/default.js

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM