ASP.NET Core Swagger 汉化

打印 上一主题 下一主题

主题 858|帖子 858|积分 2574

在wwwroot文件夹添加汉化的JS文件
  1. const translations = {
  2.     "Failed to load API definition": "API定义加载失败",
  3.     "Errors": "错误信息",
  4.     "Hide": "隐藏",
  5.     "Fetch error": "获取错误",
  6.     "Internal Server Error": "服务器内部错误",
  7.     "Operations": "操作",
  8.     "Models": "模型",
  9.     "Authorize": "授权",
  10.     "Try it out": "试一试",
  11.     "Select a definition": "选择分支",
  12.     "No parameters": "无参数",
  13.     "Name": "名称",
  14.     "Request body": "请求体",
  15.     "Details": "详细",
  16.     "Cancel": "取消",
  17.     "Server response": "服务器响应",
  18.     "Response body": "响应体",
  19.     "Response headers": "响应头",
  20.     "Request duration": "请求时间",
  21.     "Links": "链接",
  22.     "No links": "无链接",
  23.     "Execute": "执行",
  24.     "Clear": "清除",
  25.     "Response": "响应",
  26.     "Headers": "请求头",
  27.     "Parameters": "参数",
  28.     "Description": "描述",
  29.     "Responses": "响应",
  30.     "Response Class": "响应类",
  31.     "Response Body": "响应体",
  32.     "Response Headers": "响应头",
  33.     "Status Code": "状态码",
  34.     "Example Value": "示例值",
  35.     "Model": "模型",
  36.     "Schema": "结构",
  37.     "Download": "下载",
  38.     "Copy": "复制",
  39.     "Expand Operations": "展开操作",
  40.     "Collapse Operations": "折叠操作",
  41.     "Show/Hide": "显示/隐藏",
  42.     "List Operations": "列表操作",
  43.     "Full Screen": "全屏",
  44.     "Request URL": "请求 URL",
  45.     "Server Response": "服务器响应",
  46.     "Code": "代码",
  47.     "Response Content Type": "响应内容类型",
  48.     "Produces": "生产",
  49.     "Consumes": "消费",
  50.     "Summary": "摘要",
  51.     "Notes": "备注",
  52.     "Implementation Notes": "实现备注",
  53.     "Response Messages": "响应消息",
  54.     "Response Model": "响应模型",
  55.     "Request Body": "请求体",
  56.     "Request Samples": "请求示例",
  57.     "Response Samples": "响应示例",
  58.     "Security": "安全",
  59.     "OAuth2": "OAuth2",
  60.     "API Key": "API 密钥",
  61.     "Basic Auth": "基本认证",
  62.     "Bearer Token": "Bearer 令牌",
  63.     "No API Key": "没有 API 密钥",
  64.     "No Authorization": "没有授权",
  65.     "No Response": "没有响应",
  66.     "No Content": "没有内容",
  67.     "No Data": "没有数据",
  68.     "No Example": "没有示例",
  69.     "No Model": "没有模型",
  70.     "No Schema": "没有结构",
  71.     "No Description": "没有描述",
  72.     "No Summary": "没有摘要",
  73.     "No Notes": "没有备注",
  74.     "No Implementation Notes": "没有实现备注",
  75.     "No Response Messages": "没有响应消息",
  76.     "No Response Model": "没有响应模型",
  77.     "No Request Body": "没有请求体",
  78.     "No Request Samples": "没有请求示例",
  79.     "No Response Samples": "没有响应示例",
  80.     "No Security": "没有安全",
  81.     "No OAuth2": "没有 OAuth2",
  82.     "No API Key": "没有 API 密钥",
  83.     "No Basic Auth": "没有基本认证",
  84.     "No Bearer Token": "没有 Bearer 令牌",
  85.     "Warning: Deprecated": "警告:已过时",
  86.     "Status": "状态",
  87.     "Parameter": "参数",
  88.     "Value": "值",
  89.     "Parameter Type": "参数类型",
  90.     "Data Type": "数据类型",
  91.     "HTTP Status Code": "HTTP状态码",
  92.     "Reason": "原因",
  93.     "Hide Response": "隐藏响应",
  94.     "Raw": "原始",
  95.     "can't parse JSON.  Raw result": "无法解析JSON. 原始结果",
  96.     "Model Schema": "模型架构",
  97.     "apply": "应用",
  98.     "Username": "用户名",
  99.     "Password": "密码",
  100.     "Terms of service": "服务条款",
  101.     "Created by": "创建者",
  102.     "See more at": "查看更多:",
  103.     "Contact the developer": "联系开发者",
  104.     "api version": "api版本",
  105.     "fetching resource": "正在获取资源",
  106.     "fetching resource list": "正在获取资源列表",
  107.     "Explore": "浏览",
  108.     "Show Swagger Petstore Example Apis": "显示 Swagger Petstore 示例 Apis",
  109.     "Can't read from server.  It may not have the appropriate access-control-origin settings.": "无法从服务器读取。可能没有正确设置access-control-origin。",
  110.     "Please specify the protocol for": "请指定协议:",
  111.     "Can't read swagger JSON from": "无法读取swagger JSON于",
  112.     "Finished Loading Resource Information. Rendering Swagger UI": "已加载资源信息。正在渲染Swagger UI",
  113.     "Unable to read api": "无法读取api",
  114.     "from path": "从路径",
  115.     "server returned": "服务器返回"
  116. };
  117. window.SwaggerTranslator = {
  118.     translate: function() {
  119.         // 翻译标题和按钮文本
  120.         $('h2, h3, h4, .btn, .opblock-summary-description, .opblock-summary-operation-id, .parameter__name, .parameter__type, .response-col_status, .response-col_description').each(function() {
  121.             const text = $(this).text().trim();
  122.             if (translations[text]) {
  123.                 $(this).text(translations[text]);
  124.             }
  125.         });
  126.         // 翻译输入框和下拉框的 placeholder
  127.         $('input[placeholder], select[data-placeholder]').each(function() {
  128.             const placeholder = $(this).attr('placeholder') || $(this).data('placeholder');
  129.             if (translations[placeholder]) {
  130.                 if ($(this).is('input')) {
  131.                     $(this).attr('placeholder', translations[placeholder]);
  132.                 } else {
  133.                     $(this).data('placeholder', translations[placeholder]);
  134.                 }
  135.             }
  136.         });
  137.         // 翻译所有文本节点
  138.         $('*').contents().filter(function() {
  139.             return this.nodeType === Node.TEXT_NODE;
  140.         }).each(function() {
  141.             const text = this.nodeValue.trim();
  142.             if (translations[text]) {
  143.                 this.nodeValue = translations[text];
  144.             }
  145.         });
  146.     }
  147. };
  148. function waitForSwaggerUI() {
  149.     if ($('.swagger-ui').length) {
  150.         // Swagger UI 已加载,执行翻译
  151.         window.SwaggerTranslator.translate();
  152.         
  153.         // 监听动态内容变化
  154.         const observer = new MutationObserver(function(mutations) {
  155.             window.SwaggerTranslator.translate();
  156.         });
  157.         observer.observe(document.querySelector('.swagger-ui'), {
  158.             childList: true,
  159.             subtree: true
  160.         });
  161.     } else {
  162.         // 如果还没加载完,等待100ms后重试
  163.         setTimeout(waitForSwaggerUI, 100);
  164.     }
  165. }
  166. // 等待页面加载完成后开始检查 Swagger UI
  167. document.addEventListener('DOMContentLoaded', function() {
  168.     waitForSwaggerUI();
  169. });
复制代码
然后配置
  1. app.UseSwaggerUI(c =>
  2. {
  3.      // 修改加载顺序和时机
  4.      c.UseRequestInterceptor("(req) => { return req; }");
  5.      c.UseResponseInterceptor("(res) => { return res; }");
  6.      // 确保 jQuery 先加载
  7.      c.InjectJavascript("/swagger/jquery-3.7.1.min.js");
  8.      // 然后加载翻译脚本
  9.      c.InjectJavascript("/swagger/lang/zh-cn.js");
  10.   
  11. });
  12. // 启用静态文件中间件
  13. app.UseStaticFiles();
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表