RPC远程过程调用,二进制封装,提供高吞吐低延迟的高性能RPC框架
大石头 authored at 2022-08-10 13:26:19
5.14 KiB
NewLife.Remoting
# README 多语言规范 根目录的 `README.md`(English,默认落地页)与 `README.*.md` 是同一份说明文档的多语种版本。语言切换行由脚本从 `readme-languages.json` 生成,本文规定切换行的**顺序**与**维护方式**。 ## 定序规则 1. **固定前三**:English(`README.md`,默认落地页与 NuGet 包 README 的源文件)→ 简体中文(`README.zh-CN.md`,与英文同批维护)→ 繁體中文(`README.zh-TW.md`,与简体同源,紧邻便于对照)。 2. **其余按技术内容语种规模排序**:以 W3Techs「内容语种占比」(全球 top 1000 万站点首页)为依据,一次定序后**冻结**。 3. **新语种一律追加到末尾**,不做全局重排(同一语言的不同书写系统例外:紧跟其主语言,如 `繁體中文` 紧随简体);只有拿到更可靠的读者分布数据时,才允许做一次整体校正。 ### 当前顺序 | # | 语种 | 文件 | 依据(W3Techs,2025-12-03) | |---|------|------|------| | 1 | English | `README.md` | 默认落地页与 NuGet 包 README 的源文件,固定第一位 | | 2 | 简体中文 | `README.zh-CN.md` | 与英文同批维护,固定第二位 | | 3 | 繁體中文 | `README.zh-TW.md` | 与简体同源,紧随简体便于对照 | | 4 | Español | `README.es.md` | 6.0% | | 5 | Deutsch | `README.de.md` | 5.9% | | 6 | 日本語 | `README.ja.md` | 5.1% | | 7 | Français | `README.fr.md` | 4.5% | | 8 | Português | `README.pt.md` | 4.1% | | 9 | Русский | `README.ru.md` | 3.7% | | 10 | 한국어 | `README.ko.md` | 0.8% | | 11 | العربية | `README.ar.md` | 0.5% | > 运行时本地化用 `zh-Hant` 统一承接 `zh-TW` / `zh-HK` / `zh-MO`,见 [多语言本地化接入](/NewLife/NewLife.Remoting/Blob/master/Doc/多语言本地化接入.md)。 ## 为什么不按语言人口排序 - README 的读者是**开发者**,语种价值取决于「多少开发者能读」,而不是「多少人会说」。 - 人口数据逐年变化,按人口排意味着反复重排;而切换行只有 10 个链接、一屏可扫完,**排序的边际收益很低,重排成本(11 个文件重复编辑与评审噪声)很高**。 - 固定前三可避免通用语被某个大语种挤到后面。 ## 维护方式 - **单一事实源**:`readme-languages.json`(`code` / `name` / `file`,数组顺序即展示顺序)。 - **生成与校验**:`Tools/Scripts/sync-readme-languages.ps1` 按配置重写各 README 的切换块;加 `-Check` 只校验不写入,不一致时退出码 1。 - **指标同步**:`readme-metrics.json` 保存会随发布变化的数字(AOT 冒烟场景数、TFM 数量、运行时词表语言数),`Tools/Scripts/sync-readme-metrics.ps1` 重写徽章块与 `<!--aot-scenarios:start-->…<!--aot-scenarios:end-->`、`<!--aot-smoke:start-->…<!--aot-smoke:end-->` 标记内的数字。 - **NuGet 包版**:`Tools/Scripts/sync-readme-package.ps1` 按 `readme-package.json` 从 `README.md` 生成 `README.nuget.md`,把所有相对链接改写为 GitHub 绝对地址;加 `-Check` 校验生成物与 `PackageReadmeFile` 目标。 - **CI 门禁**:`.github/workflows/readme.yml` 在 README、配置或脚本变动时执行三项 `-Check`,顺序不一致、副本漂移、指标过期或包版漂移都会失败。 - 各 README 只有下面标记块之间的内容由脚本生成,其余内容不受影响: ```markdown <!-- lang:start --> 🌐 [简体中文](/NewLife/NewLife.Remoting/Blob/master/Doc/README.zh-CN.md) | [繁體中文](/NewLife/NewLife.Remoting/Blob/master/Doc/README.zh-TW.md) | ... <!-- lang:end --> <!-- metrics:start --> [![AOT smoke](/NewLife/NewLife.Remoting/Blob/master/Doc/...)](/NewLife/NewLife.Remoting/Blob/master/Doc/...) [![TFM](/NewLife/NewLife.Remoting/Blob/master/Doc/...)](/NewLife/NewLife.Remoting/Blob/master/Doc/...) [![locales](/NewLife/NewLife.Remoting/Blob/master/Doc/...)](/NewLife/NewLife.Remoting/Blob/master/Doc/...) <!-- metrics:end --> ``` ## 新增一种语言 1. 翻译整篇 README,文件名用 `README.{BCP 47 语言标签}.md`(如 `README.zh-TW.md`;中文版固定为 `README.zh-CN.md`)。 2. 在 `readme-languages.json` 的 `languages` 数组**末尾**追加 `{ "code", "name", "file" }`,`name` 用本族语名称。 3. 补齐徽章块(`<!-- metrics:start -->` 起)与切换行标记块,正文开头写明「本翻译可能滞后,以 [English README](/NewLife/NewLife.Remoting/Blob/master/Doc/README.md) 为准」。 4. 运行 `pwsh -File Tools/Scripts/sync-readme-languages.ps1` 生成切换行,再运行 `pwsh -File Tools/Scripts/sync-readme-metrics.ps1` 对齐徽章。 5. 三项 `-Check` 均通过后提交;根目录新增了 README 却没登记到配置,脚本会直接报错。 ## 徽章规则(本仓取值) 必选:License、NuGet 下载量/版本/预发布(两个包各一组)、NativeAOT 与 test 工作流徽章、TFM、平台、贡献者。 可选:AOT 冒烟场景数、locales 数量——两者均由 `readme-metrics.json` 驱动,禁止手工改数字。 - 能用动态 GitHub Actions 徽章的优先用动态;静态数字必须配同步脚本与 CI 校验。 - 徽章顺序:许可证 → NuGet → CI → 指标 → 平台/指令集 → 贡献者。 - 语言数量用 `locales-{n}`,不要写"支持 N 种语言"之类正文数字;数字变化时只改配置。 ## 展示约定 - 语言名一律用**本族语名称**(`日本語`、`Español`),不用英文名,也不用国旗——语言 ≠ 国家。 - 当前页面的语种在切换行中省略自身,避免点到当前页。 - 分隔符统一为 ` | `,行首保留 `🌐`。