Tag: 国际化

NodeJS(Express 4)+ i18n +下划线:问题与模板中的翻译

使用:NodeJS(Express 4)+ i18n +下划线。 我想在NodeJS(Express 4)中绑定和翻译一个Underscore模板。 绑定工作正常。 翻译在模板之外很好地工作。 但是我在模板内部有翻译问题:下划线不理解语法<%= __('translation key')%>: [ReferenceError: __ is not defined] 这是我的NodeJS代码: var express = require('express'), app = express(), cons = require('consolidate'), i18n = require('i18n'); _ = require('underscore'), // setup i18n app.use(i18n.init); i18n.configure({ locales: ['en', 'fr'], directory:'./app/locales', defaultLocale: 'en' }); // setup hbs app.engine('html',cons.underscore); app.set('views', './app/views'); app.set('view engine', 'html'); // […]

如何使用i18n-2模块更改语言,具体取决于url params

我要疯了! 由于昨天我试图设置i18n-2模块,但不能改变语言,任何人都可以帮助我吗? 这个node.js模块有一个很差的文档,希望没有关于如何使用/:params来改变语言的例子 所以我想这样: //configuration: I18n.expressBind(app, { locales: ['en', 'pt'], cookieName: 'locale' }); 这就是我想要根据/:语言环境更改语言 app.use(function (req, res, next) { req.i18n.setLocale(req.params.locale); next(); }); app.get('/:locale', function(req, res) { console.log(req.i18n.__("My Site Title")); }); 而且我在locale文件夹中有两个文件,'pt.json' – 葡萄牙语和'en.json' – 英文。 PT: { "My Site Title": "Titulo", } EN: { "My Site Title": "My Title", } 但是不工作在所有…即使我尝试访问site.com/pt,en json将被加载。 我在这里做错了什么?

回环与i18n支持

我想了解如何添加国际化的支持,以build立在express.js之上的回环。 我已经安装了i18n-node并阅读了express.js文档。 它看起来像我不想要一个全球性的本地化,因为我将提供HTTP响应。 i18n-node文档build议将其附加到请求对象并给出一个示例。 我的问题是,我无法find哪里/如何将此代码添加到环回。 我试着把app.configuration函数放在任何地方,它说这个方法是不确定的。 我有一种感觉,这是一个中间件,我想添加到路由阶段的middleware.json文件。 但我不知道该怎么做。 有谁知道国际化回送应用程序的好方法(服务器响应消息,电子邮件出去等)?

Nodejs:使用i18n-2客户端或服务器端或两者

我正在开发一个nodejs的项目,我想添加一个语言翻译的function。 在互联网上检查,我看到2个选项,似乎确定(国际和国内18)。 我在服务器端添加了正确的代码来configuration它。 在express.js中 var i18n = require('i18n-2'); i18n.expressBind(app, { // setup some locales – other locales default to vi silently locales: ['es', 'en'], // set the default locale defaultLocale: 'en', // set the cookie name cookieName: 'locale', extension: ".json" }); app.use(function(req, res, next) { req.i18n.setLocaleFromQuery(); req.i18n.setLocaleFromCookie(); next(); }); 所以,如果在同一个文件中,我把这个代码放在下面,假设它是用defaultLocale打印的,但是用西class牙文打印 var i18n2 = new (require('i18n-2'))({ […]

pipe理数据库国际化的最佳方法

我有一些麻烦,在我的数据库中pipe理我的i18n 现在我的应用程序中只有两种语言可用,但为了可扩展性,我希望以“最好”的方式来实现。 我可以重复像description_fr, description_en所有字段description_fr, description_en但我完全没有这个舒适。 我现在所做的是一个外部表格,将其称为content ,其架构如下所示: id_ref => entity referenced id (2) type => table name (university) field => field of the specific table (description) lang => which lang (fr, en, es…) content => and finally the appropriate content. 我认为精确可以是重要的,我使用sequelizeJS作为ORM。 所以我可以使用一个有用的钩子afterFind,afterCreate和afterUpdate。 所以每当我想find一个资源的例子,find它后,我的钩子检索这个资源的所有内容,并确定我的对象与货物价值。 它的工作,但我不爱这个。 但是我有这个麻烦: 这大大增加了我对数据库的请求数量:例如,如果我select50行,我必须做50个请求更多..,而只是一个特定的模型。 如果我有嵌套模型,它是指数… 那么,通过内容提取数据是非常复杂的。 示例find具有特定名称的大学很复杂。 而且这是更新等很多工作… 所以我想知道,如果这是一个好主意,直​​接在相关表中保存为JSON,数据。 就像是 { fr : […]

在快速应用程序res.render太多的redirect

我尝试将我的首页的路由redirect到i18n中间件的查询参数string,因为我在翻译我的网站: app.use('/', function (req, res) { res.redirect('/' + req.getLocale()); }); app.use('/:lang', index); 所以我期待被redirect到/hu 。 我正在使用i18n-node中间件插件。 文档中需要的部分在这里: https : //github.com/mashpie/i18n-node#i18ngetlocale 但是,这导致太多的redirect,并且站点没有加载ERR_TOO_MANY_REDIRECTS错误。 这是控制台输出: GET / 302 18.685 ms – 50 GET /hu 302 4.789 ms – 50 GET /hu 302 3.312 ms – 50 GET /hu 302 4.679 ms – 50 GET /hu 302 2.234 ms – […]

国际问题 – 翻译正在交换

我正在尝试使用nodejs / express来构build几个虚拟主机。 每个虚拟主机都有一组本地化的文件(translation.json)。 我试图创buildi18n组件的多个实例,说我们有以下网站 foo.bar.ca (canada) foo.bar.fr (france) foo.bar.cn (china) 我正在尝试这样做: var i18n = require('i18n'); app.use(i18nOrg.initMW(app, siteObj.locale, instance(i18nOrg))); ================================================================================== //Below is the i18nOrg = require('../i18nOrg') // init middleware module.exports.initMW = function(app, locale, i18nOrg) { return function(req, res, next) { i18nOrg.configure({ updateFiles: false, objectNotation: true, directory: process.cwd() + '/app/locales/' + locale, prefix: 'translation', register: global, […]

i18n根据select的语言呈现特定的视图

我不确定i18n是否适合这个。 因为看起来这个模块只关注于改变语言属性(在视图渲染中)而不是视图本身。 我希望我解释自己足够:) 所以这个想法是当一个人改变语言时,语言目录中的渲染select了视图(具有相同的文件名)。 你可以有例如这样的目录层次结构: -views –EN —index.jade —contact.jade –NL —index.jade —contact.jade –form-contact.jade 为了清楚'form-contact.jade' , 'form-contact.jade'文件将包含表单(包含在'contact.jade'文件中,所以'form-contact.jade'确实会使用i18n别名对象驻留在en.json或nl.json文件中)。 所以现在我只有以下几点: app.js i18n.configure({ locales: ['en', 'nl'], directory: __dirname + '/locales', defaultLocale: 'en', extension: '.json', register: global }); app.use(i18n.init); app.use(function (req, res, next) { console.log(i18n); if (req.query.lang != undefined && i18n.locales.indexOf(req.query.lang) >= 0) { i18n.setLocale(req.query.lang); }else{ i18n.setLocale(i18n.defaultLocale); } next(); }); […]

如何使用Sails.js获得一个不平凡的i18n翻译?

使用Sails.js版本0.10.x并试图让国际0.10.x工作。 我有我的config/locales/en.json的以下config/locales/en.json { "countries": { "au": { "name": "Australia", "fiatCurrency": "AUD", "subnationalDivisions": { "NSW": "New South Wales", "WA": "Western Australia", "VIC": "Victoria", "QLD": "Queensland", "TAS": "Tasmania", "SA": "South Australia", "NT": "Northern Territory", "ACT": "Australian Capital Territory" } } } } 我的config/i18n.js文件看起来像 module.exports.i18n = { // Which locales are supported? locales: ['en', 'es', 'fr', 'de'], objectNotation: […]

国际化nodejs玉石模板

我正尝试使用i18n-2模块将我的nodejs express应用程序国际化。 一切正常,但我有一个问题。 有没有办法从我的玉石模板翻译string。 想象一下,我的网站上有100个string。 我是否必须通过res.render调用将100个翻译发送到模板? res.render('profile', { title: 'My cool title', user: req.user, hello1: req.i18n.__("hello1"), hello2: req.i18n.__("hello2"), hello3: req.i18n.__("hello3"), … helloN: req.i18n.__("helloN") }); 有没有另外一种方法来做到这一点? 事端如下代码: res.render('profile', { title: 'My cool title', user: req.user, i18n: req.i18n // to be used inside jade });