Swagger(现在通常指的是OpenAPI Specification)本身是一个用于描述、生成、消费和可视化RESTful Web服务的框架,它并不直接提供多语言支持。但是,您可以在 Swagger UI 中显示和操作多种语言的 API 文档。要在 Ubuntu 系统上实现 Swagger 的多语言支持,您可以按照以下步骤进行:
生成多语言 Swagger JSON 文件:
使用 swagger-codegen
工具为不同的编程语言生成 Swagger JSON 文件。例如,如果您有一个使用 Python 编写的 API,您可以使用以下命令为 Python 生成 Swagger JSON 文件:
swagger-codegen generate -i your-api-spec.yaml -l python -o output-directory
同样,您可以为其他语言(如 Java、Node.js 等)生成 Swagger JSON 文件。
在 Swagger UI 中导入多语言文件: 生成的 Swagger JSON 文件可以导入到 Swagger UI 中,以便查看和测试不同语言的 API 文档。在 Swagger UI 中,您需要为每种语言提供一个单独的 JSON 文件,并在 UI 中导入这些文件。
启用 Swagger UI 的多语言支持:
在某些情况下,您可能需要在 Swagger UI 中启用多语言支持。例如,在 Java 中使用 Swashbuckle.AspNetCore 库时,您可以在 Startup.cs
文件中配置 Swagger UI 以启用多语言支持:
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
options.EnableTranslate(); // 启用多语言支持
options.EnableTryItOutByDefault();
options.UseRequestInterceptor("(req) { req.headers['Accept-Language'] = 'zh-CN'; return req; }"); // 设置默认语言
});
此外,您需要下载 Swagger UI 的多语言支持文件,并将其放入项目的 wwwroot
文件夹中。您可以从 Swagger UI 的 GitHub 仓库下载所需的多语言文件。
配置 Swagger UI 以支持国际化:
下载并引入 Swagger UI 库到您的项目中。创建本地化资源文件(如 en.json
, zh.json
等)。在 Swagger UI 初始化代码中,添加以下配置:
const ui = SwaggerUIBundle({
url: "your-api-spec.yaml",
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
layout: "StandaloneLayout",
deepLinking: true,
showExtensions: true,
requestInterceptor: (request) { // 可选:在发送请求前进行拦截和处理 return request; },
// 添加本地化支持
langs: ["en", "zh"], // 支持的语言列表
currentLang: "en" // 默认语言
}); // 添加语言切换功能
const languageSelector = document.getElementById("language-selector");
languageSelector.addEventListener("change", (event) => {
const selectedLang = event.target.value;
ui.lang(selectedLang);
});
通过以上步骤,您可以在 Ubuntu 系统上实现 Swagger 的多语言支持。