Yii 2 俄语本地化翻译工作流:框架消息提取、文档同步与团队协作实战指南
后端Web框架【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址https://gitcode.com/gh_mirrors/yi/yii2点击查看免费下载导读本文基于 Yii 2 官方仓库中面向俄语翻译团队编写的《Как работать над переводом на русский》如何开展俄语翻译工作内部文档系统梳理 Yii 2 本地化工作的完整流程框架消息messages的提取、翻译与提交以及技术文档guide / internals的翻译、同步与质量校验。读完本文你将掌握yii message/extract与build translation两条核心命令的实际用法、翻译文件的内部结构与标记约定、空值、复数形式、俄语术语规范以及如何以 pull request 形式将翻译成果合入上游仓库的协作方式。Yii 2 的本地化分为两个层面框架消息翻译面向终端用户可见的校验错误、界面文案等位于framework/messages/语言/yii.php与文档翻译官方指南与内部文档位于docs/original-语言/目录。两者流程不同前者依赖控制台命令自动抽取源码中的消息后者依赖构建工具生成自上次翻译以来的变更报告下面分别展开。一、框架消息翻译Messages1.1 消息的两种类型哪些该翻译哪些不该翻译框架中的本地化消息分为两类异常消息exceptions面向开发者例如参数校验失败、内部错误等调试信息不翻译用户消息user-facing messages在页面/API 响应中展示给最终用户的内容典型如校验错误提示validation errors这些必须翻译。判断依据很简单消息最终是否会出现在用户的浏览器或客户端响应中。Yii::t()调用时传入的类别与消息本身并不决定是否翻译决定因素是消息的消费方是开发者还是用户。仓库中framework/messages/ru/yii.php即存储俄语翻译结果例如Page not found. Страница не найдена.、Delete Удалить等。1.2 更新翻译的第一步消息抽取在控制台中进入framework目录执行消息抽取命令cd framework ./yii message/extract yii/messages/config.php --languagesru该命令由 Yii 控制台框架提供它扫描源码中所有Yii::t()调用点将待翻译的原文抽取出来并合并进各语言文件。抽取行为完全由配置文件framework/messages/config.php控制关键配置项如下配置项值作用sourcePath__DIR__ . /..源码根目录即framework扫描范围messagePath__DIR__翻译文件所在目录framework/messageslanguages数十种语言代码含ru需要抽取/更新翻译的目标语言列表translator[\Yii::t, Yii::t]识别待翻译消息的函数名标记sorttrue合并新旧消息时按键排序overwritetrue用合并结果覆盖消息文件removeUnusedtrue移除源码中已不存在的消息markUnusedtrue对源码中已不存在的消息用包裹标记与removeUnused协同except[.*, /.*, /messages, /tests, /runtime, /vendor, /BaseYii.php]排除目录与文件避免扫描测试、运行目录及消息文件自身only[*.php]仅处理 PHP 源码文件formatphp生成的翻译文件格式也支持db、po命令指定--languagesru时只有ru语言文件会被更新这正是一次只处理一种语言的最佳实践避免在同一个 pull request 中混入多语言变更方便维护者审阅。1.3 翻译文件的结构与标记约定framework/messages/ru/yii.php是一个 PHP 数组结构约定如下return [ and и , Page not found. Страница не найдена., Action not found. , // 空值 尚未翻译 Showing b{begin, number}-{end, number}/b of ... Показаны записи ..., ];**键key**是源码中的原始字符串**值value**是翻译结果值为空字符串表示该消息尚未翻译源码注释中明确If the value is empty, the message is considered as not translated包裹若某条消息在源码中已不再出现其翻译值会被一对包裹标记配置项markUnused true例如Old message。这是软删除约定——保留翻译但标注废弃便于后续统一清理若配置removeUnused true则直接删除UTF-8 编码是硬性要求文件必须以 UTF-8 保存否则会出现乱码或校验错误文件头部注释会注明该文件由yii message/extract自动生成翻译者只需填充值部分。1.4 复数形式plural forms与特殊占位符某些消息需要与数字搭配使用俄语具有复杂的复数/格变化规则如товар/товара/товаров。这类消息必须使用 Yii i18n 的复数格式语法而非简单字符串拼接。仓库framework/messages/ru/yii.php中已有现成示例Showing b{begin, number}-{end, number}/b of b{totalCount, number}/b {totalCount, plural, one{item} other{items}}. Показаны записи b{begin, number}-{end, number}/b из b{totalCount, number}/b.,更完整的俄语复数规则写法可参考 tutorial-i18n.md 中的讲解其Множественное число一节给出了俄语one/few/many/other各形态的示例\Yii::t(app, There {n, plural, 0{are no cats} 1{is one cat} other{are # cats}}!, [n 0]);注意复数形式依赖 ICU 规则解析俄语曾受旧版 ICU 复数格式化缺陷影响需保证运行环境的 ICU 版本为 53.1 或更高该注意事项同样记录在 tutorial-i18n.md。翻译此类消息时必须保留{...}占位符结构仅翻译文案部分。1.5 提交规则翻译完成后只提交ru语言相关文件其余语言文件保持不动。通过 pull request 提交具体的分支管理、fork/upstream 同步、测试与静态检查流程遵循 git-workflow.md该文档详细描述了 fork 仓库、配置upstream、基于最新master新建分支、更新 CHANGELOG、提交并同步上游等步骤。二、文档翻译Documentation2.1 目录组织文档翻译存放在docs/original-ru其中original对应原始文档目录名。例如docs/guide-ru/—— 官方指南Guide的俄语翻译docs/internals-ru/—— 内部文档Internals的俄语翻译本文所依据的translation-workflow.md即位于此目录。翻译版目录与原文目录保持同名文件、同层级结构这是后续 diff 报告能够按文件名逐一比对的前提。2.2 生成自上次翻译以来的变更报告当某个文档的翻译已经完成需要跟进上游文档的后续更新时在build目录中打开控制台并执行cd build php build translation ../docs/guide ../docs/guide-ru Russian guide translation report report_guide_ru.html命令参数依次为原始文档目录、翻译文档目录、报告标题。输出重定向到 HTML 文件即可在浏览器中查看。若命令提示缺少依赖如Class not found类错误先在仓库根目录执行composer install安装依赖再重试。2.3 报告命令的源码实现该命令由build/controllers/TranslationController.php实现actionReport()的完整逻辑链如下逐文件比对遍历sourcePath中每个文件拼接出对应的translatedFilePath存在性检查checkFiles()若翻译文件不存在报告错误Translation does not exist.反之若源文件缺失报告Source does not exist.diff 计算getDiff()先用git log -1 --formatformat:%H -- 翻译文件路径取该翻译文件最后一次提交的 commit hash再用git diff 该hash..HEAD -- 源文件路径得到自上次翻译之后源文件的全部改动若 diff 非空则在报告中追加Translation outdated.错误标记反向检查遍历翻译目录找出源目录中已不存在即已删除的多余翻译文件渲染报告调用views/translation/report_html.php输出 HTML其中highlightDiff()将 diff 行按类型着色——新增行包裹ins、-删除行包裹del、块头标记为 infoHtml::encode()保证 HTML 安全转义。报告页面会以h1显示标题、列出 Source / Translation 路径并对每个文件名以h2分组展示错误列表红色与 diff 片段绿色ins、橙色del文件是否过时一目了然。该命令的核心价值它自动把原文新增/修改了哪些段落精确定位出来翻译者无需人工比对两个目录只需针对 diff 中列出的片段更新翻译即可。2.4 文档风格与语法文档的语法与排版风格遵循 documentation_style_guide.md。译文交付前建议通过带拼写检查的工具例如 Microsoft Word整体过一遍俄语的拼写与标点。三、协作流程与团队规范3.1 开工前登记避免撞车开始翻译某个文档之前先确认没有其他人正在翻译同一文档并将自己登记到官方维护的所有待翻译文档清单中该清单由社区以在线表格形式维护。仓库中 translation-status.md 声明所有文档均已就绪可译而 translation-teams.md 列出了各语言团队的成员与联系方式——俄语团队由 Alexander Makarovsamdark牵头另有 MUTOgen、prozacUa 等成员可据此协调分工。3.2 所有变更以 pull request 提交无论是消息翻译还是文档翻译最终都以pull request形式提交流程细节见 git-workflow.md。PR 中应保持改动范围聚焦翻译只含ru语言文件不混入其他语言、不夹带无关重构。四、通用翻译规则俄语实践要点翻译文档时需遵守以下通则这些规则保证了多篇文档、多位译者产出的风格一致规则说明术语标注英文对没有统一/公认俄语译法的术语首次出现时在括号内标注英文原文术语推荐表见后文存疑内容用斜体若某段文字直译后语义存疑、拿不准译法用*...*包裹该段使其显示为斜体便于校对/审阅阶段重点关注避免事实错误翻译不得引入事实性错误版本号、命令、参数名等必须与原文一致外部链接本地化原文中链接到外部资源维基百科词条、术语定义等时若该资源存在权威俄语版本应改链到俄语页面例如https://en.wikipedia.org/wiki/Captcha→https://ru.wikipedia.org/wiki/Captcha代码注释代码中的注释在不扭曲原意的前提下可以翻译文本中的临时注释尽量只在本地保留避免混入最终提交章节名一致性文档章节标题的翻译以README.md中的既有译法为准全站统一补充注释受限允许添加译者注但不提倡——为免内容发散必须保持原文唯一权威。确需补充时注释末尾须加(прим. пер.)译者注标记修订范围克制整体校对后译者应只在自己负责的章节内修正语法错误与事实错误涉及跨章节的改进建议应提交讨论后集中统一修订避免各章自行其是。4.1 文档结构命名翻译时需正确命名文档的结构单元全站遵循如下层级Глава 1章 1Раздел 1节 1Раздел 2节 2Подраздел 1小节 1...Раздел N节 NГлава 2章 2...Глава N章 N4.2 特殊消息不翻译Tip:、Note:、Info:、Warning:等引导语保持英文原样不翻译。这类前缀是文档的语义标记各语言版本统一保留便于读者识别提示类型。4.3 图片 рисунки的翻译文档配图存放于各文档目录下的images子文件夹。图片源文件均使用yED一款图形编辑器创建。翻译流程需要翻译配图时将原始源文件复制到翻译版的images目录在 yED 中打开、将图中文字翻译为俄语导出保存为PNG 格式图片的题注figure captions必须翻译。4.4 术语表Список терминов原文维护了一份经过社区讨论沉淀的俄语术语对照表是翻译时的查表依据下表保留俄语译文并附中文语义说明供参考英文术语俄语译文推荐actionдействие动作active record不翻译保留英文attach handler«назначить обработчик»指派处理程序attribute of the modelатрибут модели模型属性cacheкэш缓存camel case不翻译customization(тонкая) настройка调优配置尽量避免旧译 кастомизацияcolumnстолбец数据库语境下指列configurationконфигурацияcontentсодержимоеcontrollerконтроллерdebug (mode)отладочный (режим)eager loadingжадная загрузка贪婪加载environmentокружениеPHP extensionрасширение PHPfield (of the table)поле (или атрибут) таблицы表字段/属性frameworkфреймворкfront-controllerфронт-контроллерgetterгеттер(event) handlerобработчик (события)hashхэшhelperпомощникidидентификаторinstanceэкземплярjunction tableпромежуточная таблицаlazy loadingотложенная загрузка延迟加载methodметод对象/类只有方法没有函数modelмодель数据模型model formмодель формы表单模型parameterпараметр方法/函数的参数而非类的参数to parseобрабатывать语境不明时用 парсить解析placeholderмаркерproduction (mode)производственный (режим)propertyсвойство对象属性to renderрендерить, формировать渲染related, relationсвязанный, связь关联resolve requestпредварительная обработка запроса请求预处理routeмаршрутrow (of the table)строка (таблицы)表行setterсеттерtabular inputтабличный ввод表格输入to validateпроверятьvalidкорректныйvalidatorвалидаторvalidator classкласс валидатораviewпредставление视图query builderконструктор запросов查询构造器time zoneчасовой поясto triggerинициализировать触发/初始化eventсобытие事件to implement (class implements interface)реализовывать类实现接口五、仓库中的配套资源速查消息抽取配置framework/messages/config.php俄语消息翻译文件framework/messages/ru/yii.php翻译报告命令实现build/controllers/TranslationController.php报告 HTML 模板build/controllers/views/translation/report_html.php俄语 i18n 复数/序数详解docs/guide-ru/tutorial-i18n.md文档写作风格规范docs/documentation_style_guide.md协作与 PR 流程docs/internals-ru/git-workflow.md翻译团队名单docs/internals-ru/translation-teams.md翻译状态说明docs/internals-ru/translation-status.md结语Yii 2 的本地化体系是自动抽取 人工翻译 diff 同步的三段式工程消息翻译由yii message/extract驱动的framework/messages/config.php管线自动维护文档翻译由build translation报告精确圈定过期内容而统一的术语表、结构命名规则、特殊标记约定、空值、(прим. пер.)、Tip:/Note:/Info:/Warning:保证了多语言版本长期演进而风格不失真。无论是准备为 Yii 2 提交俄语翻译的贡献者还是需要在自研项目中搭建类似 i18n 协作管线的开发者都可以直接复用本文梳理的命令、配置与规范。克隆仓库后即可按本文流程实操git clone https://gitcode.com/gh_mirrors/yi/yii2进入framework执行./yii message/extract yii/messages/config.php --languagesru查看抽取效果或在build目录运行php build translation ../docs/guide ../docs/guide-ru Russian guide translation report report_guide_ru.html生成同步报告直观体验整套工作流。赞分享后端Web框架【免费下载链接】yii2Yii 2: The Fast, Secure and Professional PHP Framework项目地址https://gitcode.com/gh_mirrors/yi/yii2点击查看免费下载相关推荐Yii 2 翻译工作流完全指南框架消息提取、文档翻译与国际化协作实践Yii 2 翻译工作流完全指南框架消息提取、文档翻译与国际化协作实践 导读 Yii 2 作为面向国际化的 PHP 框架其核心代码、校验器与框架消息均内置了多后端Web框架Yii 2 乌兹别克语翻译协作指南框架消息提取与文档翻译的完整工作流Yii 2 乌兹别克语翻译协作指南框架消息提取与文档翻译的完整工作流 Yii 2 是一个被翻译成数十种语言的 PHP 框架其国际化协作由官方仓库 docs/后端Web框架Yii 2 乌克兰语uk翻译工作流全指南框架消息提取、文档本地化与术语规范实战Yii 2 乌克兰语uk翻译工作流全指南框架消息提取、文档本地化与术语规范实战 Yii 2 为了服务国际化的应用与开发者将核心框架与官方文档翻译成多种语后端Web框架上一篇探索轻量级TransformerMIT-HAN-Lab的lite-transformer下一篇探索CenterNet-DeepSort实时目标检测与追踪的新篇章创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考