3

目前我已经成功集成到路由、请求和配置。

应用结构

  • app.js - 我们应用程序的入口点。该文件定义了我们的 express 服务器并使用 mongoose 将其连接到 MongoDB。它还需要我们将在应用程序中使用的路由和模型。

  • config/ - 此文件夹包含护照配置以及配置/环境变量的中心位置。

  • routes/ - 此文件夹包含我们 API 的路由定义。

  • models/ - 此文件夹包含我们的 Mongoose 模型的模式定义。

路线/api/users.js

var mongoose = require('mongoose');
var router = require('express').Router();
var passport = require('passport');
var User = mongoose.model('User');
var auth = require('../auth');

router.post('/users', function(req, res, next){
  var user = new User();

  user.username = req.body.user.username;
  user.email = req.body.user.email;
  user.setPassword(req.body.user.password);

  user.save(req, res).then(function(){
    return res.json({user: user.toAuthJSON()});
  }).catch(next);
});

module.exports = router;

模型/User.js

var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
var crypto = require('crypto');
var jwt = require('jsonwebtoken');
var secret = require('../config').secret;

var UserSchema = new mongoose.Schema({
  username: {type: String, lowercase: true, unique: true, required: [true, "can't be blank"], match: [/^[a-zA-Z0-9]+$/, 'is invalid'], index: true},
  email: {type: String, lowercase: true, unique: true, required: [true, "can't be blank"], match: [/\S+@\S+\.\S+/, 'is invalid'], index: true},
  bio: String,
  image: String,
  favorites: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Article' }],
  following: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
  hash: String,
  salt: String
}, {timestamps: true});

 /**<<HERE>> Does not work inside the models. <<HERE>>**/
UserSchema.plugin(uniqueValidator, {message: i18n.__('user.register.errors.is_already_taken')});

mongoose.model('User', UserSchema);

应用程序.js

var http = require('http'),
    path = require('path'),
    methods = require('methods'),
    express = require('express'),
    bodyParser = require('body-parser'),
    session = require('express-session'),
    cors = require('cors'),
    passport = require('passport'),
    errorhandler = require('errorhandler'),
    mongoose = require('mongoose');
    cookieParser = require('cookie-parser');
    i18n = require('i18n');

var isProduction = process.env.NODE_ENV === 'production';

// Create global app object
var app = express();

app.use(cors());

app.use(cookieParser())

// Configure i18n
i18n.configure({
  locales:['en', 'es'],
  directory: __dirname + '/locales',
  objectNotation: true,
  //defaultLocale: 'en',
  register: global,
  cookie: 'lang'
})

i18n.init();

// you will need to use cookieParser to expose cookies to req.cookies
app.use(cookieParser());

// i18n init parses req for language headers, cookies, etc.
app.use(i18n.init);

// Support "Accept-Language" : "es" or "en" via headers
app.use(function (req, res, next) {
  i18n.init(req, res);

  if (typeof req.locale !== 'undefined') {
    console.log('locale : ', req.locale);
    i18n.setLocale(req.locale);
  }else{
    var locale = i18n.getLocale();
    res.set('Content-Language', locale);
  }
  next();
});
// finally, let's start our server...
var server = app.listen( process.env.PORT || 3000, function(){
  console.log('Listening on port ' + server.address().port);
});

但是当我尝试在模型/例如 i18n.__('my-key') 中进行翻译时,这不会检测到语言环境,因此这会返回默认“en”的语言环境,但是从标题中我正确接收到了语言“es” .

请让我知道我将如何解决它:)

4

0 回答 0