在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以支持多语言。