का उपयोग नहीं कर सकता मैं अपनी वेबसाइट पर स्थानीयकरण जोड़ने की कोशिश कर रहा हूं। मैं i18n स्थापित करता हूं, स्पेनिश और अंग्रेजी में 2 स्थानीयकरण जेसन फाइलें बनाता हूं और मैं app.js फ़ाइल में कॉन्फ़िगरेशन जोड़ता हूं। app.js फ़ाइल यह है:i18n स्थानीयकरण यूआरएल
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var i18n = require("i18n");
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var request = require('request');
var flash = require('express-flash');
var winston = require('winston');
winston.add(winston.transports.File, { name: 'app-info', maxFiles: 3, filename: 'logs/app-info.log', level: 'info' });
winston.add(winston.transports.File, { name: 'app-error', maxFiles: 3, filename: 'logs/app-error.log', level: 'error' });
require('dotenv').config();
var app_port = process.env.APP_PORT;
var fs = require('fs');
var app = express();
app.listen(app_port, function(){
console.log('listening on *:' + app_port);
});
// Include php notifications
var notifications = require('./phpmonitor');
// Define routes
var routes = require('./routes/index');
var login = require('./routes/login');
var doctors = require('./routes/doctors');
var new_appointment = require('./routes/new_appointment');
var new_appointment_medicine = require('./routes/new_appointment_medicine');
var new_appointment_psychology = require('./routes/new_appointment_psychology');
var appointments = require('./routes/appointments');
var videoconference = require('./routes/videoconference');
var user = require('./routes/user');
var user_doctor = require('./routes/user_doctor');
var doctor = require('./routes/doctor');
var history = require('./routes/history');
var public = require('./routes/public');
var ajax = require('./routes/ajax');
var patients = require('./routes/patients');
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// i18n setup
i18n.configure({
locales:['es', 'en'],
defaultLocale: 'es',
objectNotation : true,
queryParameter: 'lang',
cookie: 'i18n',
syncFiles: true,
updateFiles: true,
directory: __dirname + '/locales'
});
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(flash());
app.use(i18n.init);
app.locals.request = request.defaults({jar: true});
app.locals.winston = winston;
// Set session
app.use(session({
store: new RedisStore,
secret: 'Y0V3NJS58jP61lfQjPn8gm99Cb2Ppl6y',
resave: true,
saveUninitialized: false,
}));
// Global use, set locale and basic locals
app.use(function(req, res, next) {
var cookie = req.cookies.i18n;
if (cookie === undefined) {
res.cookie('i18n', 'es', { maxAge: 900000000, httpOnly: true });
}
// Wizard cookie
var cookie_wizard = req.cookies.omnidoctor_wizard;
if (cookie_wizard === undefined) {
res.locals.wizard_cookies = 'pending';
}
// Accept cookies
var accept_cookies = req.cookies.omnidoctor_cookies;
if (accept_cookies === undefined) {
res.locals.accept_cookies = 'pending';
}
i18n.setLocale(req, i18n.getLocale());
app.locals.api = process.env.API_URL;
app.locals.site_url = process.env.SITE_URL;
app.locals.site_protocol = process.env.SITE_PROTOCOL;
app.locals.socket_port = process.env.SOCKET_PORT;
res.locals.analytics = process.env.ANALYTICS;
// Load moment with i18n locale
app.locals.moment = require('moment');
app.locals.moment.locale(i18n.getLocale());
next();
});
app.use('/', routes);
app.use('/', login);
app.use('/doctors', doctors);
app.use('/history', history);
app.use('/new-appointment/medicine', new_appointment_medicine);
app.use(['/new-appointment/psychiatry', '/new-appointment/psychology'], new_appointment_psychology);
app.use('/new-appointment', new_appointment);
app.use('/appointments', appointments);
app.use('/videoconference', videoconference);
app.use('/', user);
app.use('/', user_doctor);
app.use('/', public);
app.use('/doctor', doctor);
app.use('/ajax', ajax);
app.use('/patients', patients);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
/*app.listen(3500, function() {
console.log("express has started on port 3500");
});*/
module.exports = app;
मैं यह काम जब मैं यूआरएल mywebsite.com/en लिख सकते हैं या mywebsite.com/en बनाना चाहते लेकिन यह उन्हें नहीं मिल रहा है मैं इस दस्तावेज़ का पालन करने की कोशिश की :
https://www.npmjs.com/package/i18n
और विभिन्न मंचों में लग रही है लेकिन समाधान में से कोई भी मेरे लिए काम किया। इसे ठीक से काम करने के लिए क्या गुम है? मैंने देखा कि मार्गों को संशोधित करना है, लेकिन मैं भी कोशिश करता हूं और यह काम नहीं करता है।
संपादित
मैं एक ट्यूटोरियल है कि मैं वेब में देखा था निम्नलिखित थोड़ा app.js फ़ाइल बदल दिया है। अब जब मैं mywebsite.com/en पर जाता हूं तो यह पूरी तरह से काम करता है लेकिन जब मैं mywebsite.com/es पर जाता हूं तो यह इसका अनुवाद नहीं करता है।
तो अगर मैं es.json फ़ाइल अनुवाद में इस है:
{
login:{
title: "Bienvenido"
}
}
जब मैं mywebsite.com/es करने के लिए जाना वहाँ login.title दिखाई देगी
रूटर/index.js में मैं इस राशि:
router.get('/', requireLogin, function(req, res, next) {
request = req.app.locals.request;
res.setLocale(req.cookies.i18n);
if(req.session.role == 'doctor') {
var locals = {
i18n: res
};
res.render('index', locals);
}
});
router.get('/es', function (req, res) {
res.cookie('i18n', 'es');
res.redirect('/')
});
router.get('/en', function (req, res) {
res.cookie('i18n', 'en');
res.redirect('/')
});
क्या आप त्रुटि का न्यूनतम प्रदर्शन प्रदान करने के लिए कोड को कम कर सकते हैं? वर्णन करें कि वास्तव में क्या हुआ। जैसे वाक्यांश * url * का उपयोग नहीं कर सकते हैं, * * यह उन्हें नहीं ढूंढता है * और * यह काम नहीं करता * आपकी समस्या को समझने में सहायक नहीं है। – yacc
@yacc जो मैं चाहता हूं वह यह है कि जब मैं mywebsite.com/en लिखता हूं तो वेबपृष्ठ अंग्रेजी में दिखाई देता है और जब मैं स्पेनिश में mywebsite.com/es टाइप करता हूं। मेरे पास यह app.js फ़ाइल है और मेरे पास es.json और en.json फ़ाइलें भी तैयार हैं लेकिन जब मैं mywebsite.com/en टाइप करता हूं तो यह मुझे कोई त्रुटि नहीं देता है (त्रुटि 500) –