我正在验证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堆栈上实现多语言支持。
提前致谢。
答案 0 :(得分:0)
您确定angular-translate.js
文件包含在布局中吗?
默认情况下,未加载bower安装的文件(/public/lib
上的文件)。相反,它的路径在/config/assets/default.js