在Ubuntu系統中,Swagger(現在通常指的是OpenAPI)的國際化可以通過以下步驟實現:
swagger-ui-express。在你的項目中創建一個目錄來存放多語言資源文件,例如:
src/
└── i18n/
├── en.json
├── zh.json
└── es.json
每個JSON文件包含對應語言的翻譯鍵值對,例如:
// src/i18n/en.json
{
"welcome": "Welcome to the API",
"description": "This is a sample API documentation."
}
// src/i18n/zh.json
{
"welcome": "歡迎使用API",
"description": "這是一個示例API文檔。"
}
如果你使用的是Express框架,可以這樣集成Swagger UI:
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const YAML = require('yamljs');
const path = require('path');
const app = express();
// 加載Swagger文檔
const swaggerDocument = YAML.load(path.join(__dirname, 'path/to/swagger.yaml'));
// 設置多語言支持
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument, {
swaggerOptions: {
deepLinking: true,
presets: [
swaggerUi.presets.apis,
swaggerUi.presets.promises
],
plugins: [
swaggerUi.plugins.DownloadUrl
],
layout: 'StandaloneLayout'
},
customSiteTitle: 'API Documentation',
customCss: '/path/to/custom.css'
}));
// 提供多語言資源文件
app.use('/i18n', express.static(path.join(__dirname, 'src/i18n')));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在你的應用中添加一個語言切換的功能,允許用戶選擇不同的語言。例如:
app.get('/change-language', (req, res) => {
const lang = req.query.lang || 'en'; // 默認語言為英語
res.redirect(`/api-docs?lang=${lang}`);
});
Swagger UI本身不直接支持多語言,但你可以通過自定義模板或使用第三方庫來實現。以下是一個簡單的示例,使用i18next庫來實現多語言支持:
const i18next = require('i18next');
const Backend = require('i18next-fs-backend');
const express = require('express');
const app = express();
i18next.use(Backend).init({
fallbackLng: 'en',
debug: true,
interpolation: {
escapeValue: false
}
}, (err, t) => {
app.use('/i18n', express.static(path.join(__dirname, 'src/i18n')));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
});
如果你選擇自定義Swagger UI模板,可以在模板中添加語言切換邏輯,并根據當前語言加載相應的翻譯文件。
通過以上步驟,你可以在Ubuntu系統中實現Swagger的國際化。關鍵步驟包括創建多語言資源文件、集成Swagger UI到Express應用、實現語言切換功能以及修改Swagger UI以支持多語言。