乐闻世界logo
搜索文章和话题

How to use i18next in sailsjs

1个答案

1

Integrating i18next into Sails.js for internationalization and localization is an effective way to enhance user experience. The following steps and examples demonstrate how to implement i18next in your Sails.js project.

Step 1: Install i18next Dependencies

First, install i18next and any other required packages in your Sails.js project using npm:

bash
npm install i18next i18next-http-middleware i18next-fs-backend --save

Here, i18next is the core library, i18next-http-middleware handles language detection and resource loading in HTTP requests, and i18next-fs-backend loads translation resources from the file system.

Step 2: Configure i18next

Next, configure i18next in your Sails.js project. Typically, this is implemented in an initialization function or startup script. For example, you can configure it in the config/i18n.js file or create a new api/services/I18nService.js file.

javascript
// api/services/I18nService.js const i18n = require('i18next'); const HttpMiddleware = require('i18next-http-middleware'); const FsBackend = require('i18next-fs-backend'); i18n.use(HttpMiddleware.LanguageDetector) .use(FsBackend) .init({ fallbackLng: 'en', preload: ['en', 'fr', 'zh'], ns: ['translation'], defaultNS: 'translation', backend: { loadPath: 'locales/{{lng}}/{{ns}}.json' }, detection: { order: ['querystring', 'cookie'], caches: ['cookie'] } }); module.exports = i18n;

Step 3: Use Middleware

In Sails.js, ensure requests pass through the i18next middleware so it can automatically handle language detection and response localization.

In config/http.js, add the i18next middleware to the request pipeline:

javascript
// config/http.js const i18n = require('../api/services/I18nService'); module.exports.http = { middleware: { order: [ 'cookieParser', 'session', 'i18nInit', 'bodyParser', 'compress', 'poweredBy', 'router', 'www', 'favicon', ], i18nInit: i18n.handle // Apply i18next middleware for request processing }, };

Step 4: Use i18next in the Application

Now, integrate i18next into controllers or other application components for internationalization. For example:

javascript
// api/controllers/HelloController.js module.exports = { hello: function(req, res) { return res.send(req.t('hello')); } };

In this code, req.t is a translation function that returns the appropriate translated string based on the detected language in the request.

Step 5: Create and Manage Language Files

In the locales directory of your Sails.js project, create language files such as en/translation.json, fr/translation.json, etc., to store translated content.

json
// locales/en/translation.json { "hello": "Hello" } // locales/fr/translation.json { "hello": "Bonjour" }

By following these steps, you can successfully integrate i18next into your Sails.js project, enabling robust multilingual support. This will significantly improve the user experience for non-English speakers.

2024年8月8日 16:31 回复

你的答案