ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Azure Data Studio 西班牙语语言包扩展开发指南:从 localizations 贡献点到 Transifex 翻译同步

Azure Data Studio 西班牙语语言包扩展开发指南:从 localizations 贡献点到 Transifex 翻译同步 数据库客户端桌面应用数据分析【免费下载链接】azuredatastudioAzure Data Studio is a data management and development tool with connectivity to popular cloud and on-premises databases. Azure Data Studio supports Windows, macOS, and Linux, with immediate capability to connect to Azure SQL and SQL Server. Browse the extension library for more database support options including MySQL, PostgreSQL, and MongoDB.项目地址https://gitcode.com/gh_mirrors/az/azuredatastudio点击查看免费下载本文以 Azure Data Studio 仓库中 i18n/ads-language-pack-es/vsc-extension-quickstart.md 为核心骨架结合语言包真实清单文件与编辑器侧本地化基础设施源码系统讲解 Azure Data Studio 语言包扩展的目录结构、localizations贡献点协议、翻译文件格式以及如何通过 VS Code 仓库的update-localization-extension脚本从 Transifex 拉取并同步翻译串。读完本文你将能够理解语言包扩展的完整生命周期并掌握“新增语言 → 声明贡献点 → 同步翻译 → 安装切换”的端到端工作流。Azure Data Studio 支持 Windows、macOS 与 Linux其多语言 UI 能力正是通过“语言包扩展Language Pack Extension”机制实现的。仓库的 i18n 目录下存放了 10 个官方语言包德语、西班牙语、法语、意大利语、日语、韩语、葡萄牙语、俄语、简体中文、繁体中文其中 ads-language-pack-es 即为西班牙语es语言包。本文以该扩展的快速上手文档为主线逐层拆解其实现原理与维护流程。一、语言包扩展的目录结构与核心角色一个语言包扩展的顶层结构非常精简以西班牙语包为例i18n/ads-language-pack-es/ ├── CHANGELOG.md # 按 Azure Data Studio 版本发布的翻译更新记录 ├── README.md # 双语使用说明es / en与贡献者名单 ├── languagepack.png # 扩展图标 ├── package.json # 扩展清单声明 localizations 贡献点 ├── translations/ # 存放全部翻译字符串文件 │ ├── main.i18n.json │ └── extensions/ └── yarn.lock整个扩展只有两个“灵魂”package.json—— 扩展清单manifest除定义名称、描述、版本外还通过contributes.localizations贡献点声明“本扩展为哪种语言提供翻译”translations/—— 存放翻译字符串的目录由机器生成不应手工编辑其生成的main.i18n.json文件头部即注明Do not edit this file. It is machine generated.。package.json中与本扩展身份直接相关的字段如下摘自 i18n/ads-language-pack-es/package.json{ name: ads-language-pack-es, displayName: Spanish Language Pack for Azure Data Studio, description: Language pack extension for Spanish, version: 1.49.0, publisher: Microsoft, engines: { vscode: *, azdata: ^1.49.0 }, icon: languagepack.png, categories: [Language Packs], keywords: [español] }其中engines.azdata: ^1.49.0明确了该语言包对应的 Azure Data Studio 主版本约束与 CHANGELOG.md 中“May 13, 2024 - Release for Azure Data Studio 1.49”的记录相互印证——语言包版本与 ADS 主版本一一对应、按版本节奏发布。二、localizations 贡献点语言包的核心协议快速上手文档开门见山地指出package.json通过localizations贡献点定义语言 id。西班牙语包的声明如下摘自 package.jsoncontributes: { localization: [{ languageId: es, languageName: Spanish, localizedLanguageName: español }] }注意仓库中语言包实际使用的贡献点键名是复数形式localizations见 package.json快速上手文档中的单数写法是早期模板遗留二者所指协议相同。字段语义与校验规则源码级编辑器侧对该扩展点的解析与校验实现在 src/vs/workbench/contrib/localization/common/localization.contribution.ts通过ExtensionsRegistry.registerExtensionPoint({ extensionPoint: localizations, ... })注册。各字段含义如下字段类型说明西班牙语包取值languageIdstring必填翻译目标语言的 locale ideslanguageNamestring该语言的英文名称SpanishlocalizedLanguageNamestring用该语言自称的名称本地化名称españoltranslationsarray必填默认[{ id: vscode, path: }]与本语言关联的翻译文件清单见下节其中translations数组的每个元素包含两个必填字段id被翻译对象VS Code 核心或某个扩展的标识。VS Code 核心固定为vscode扩展则必须是publisherId.extensionName格式校验正则见 localization.contribution.ts为^((vscode)|([a-z0-9A-Z][a-z0-9A-Z-]*)\.([a-z0-9A-Z][a-z0-9A-Z-]*))$path指向翻译文件的相对路径如./translations/main.i18n.json。这一协议的作用是当用户切换显示语言时编辑器会汇总所有已安装语言包中languageId匹配的扩展点声明按其translations列表加载对应path下的翻译文件。因此翻译覆盖面完全由translations数组决定——它既可以只翻译核心 UI也可以为仓库内的每一个 Microsoft 扩展单独提供翻译。西班牙语包的翻译覆盖面在 i18n/ads-language-pack-es/package.json 中translations数组共列出了 59 个条目可分为三类核心 UI 与内置模块vscode指向./translations/main.i18n.json、vscode.bat、vscode.git、vscode.sql、vscode.markdown-language-features、vscode.python、vscode.yaml等ADS 官方功能扩展Microsoft.mssql、Microsoft.notebook、Microsoft.arc、Microsoft.azurecore、Microsoft.machine-learning、Microsoft.sql-database-projects、Microsoft.schema-compare、Microsoft.sql-migration、Microsoft.import、Microsoft.dacpac、Microsoft.profiler、Microsoft.query-history、Microsoft.agent、Microsoft.kusto、Microsoft.azuremonitor等少数非 Microsoft 前缀的扩展如ms-mssql.sql-bindings-vscode。可以看到translations条目与仓库 extensions 目录下的扩展基本一一对应如 extensions/mssql、extensions/notebook这保证了西班牙语用户在安装了这些官方扩展后扩展内文案同样被本地化。三、translations 目录翻译文件的实际格式快速上手文档将translations定义为“the folder containing the translation strings”。以核心翻译文件 translations/main.i18n.json 为例其顶层结构为{ : [ --------------------------------------------------------------------------------------------, Copyright (c) Microsoft Corporation. All rights reserved., Licensed under the MIT License. See License.txt in the project root for license information., --------------------------------------------------------------------------------------------, Do not edit this file. It is machine generated. ], version: 1.0.0, contents: { vs/base/browser/ui/dialog/dialog: { dialogClose: Cerrar cuadro de diálogo, dialogErrorMessage: Error, dialogInfoMessage: Información, dialogPendingMessage: En curso, dialogWarningMessage: Advertencia, ok: Aceptar }, vs/base/browser/ui/dropdown/dropdownActionViewItem: { moreActions: Más Acciones... } } }要点contents键按源码模块路径module id组织如vs/base/browser/ui/dialog/dialog、vs/base/browser/ui/button/button其键名对应源码中localize()调用的 key值即西班牙语译文文件头部的数组是版权与机器生成声明正文由工具生成编辑会被覆盖该文件达 1.5 万余行覆盖整个核心 UI 的字符串translations/extensions/下则按扩展 id 存放各扩展的独立翻译文件如Microsoft.mssql.i18n.json、vscode.sql.i18n.json。由此可以理解快速上手文档中“download translation files to the foldertranslations, as well as populate atranslationsproperty”这句话的完整含义同步脚本既写入了翻译内容文件又反向更新了package.json中localizations[].translations清单使声明与实际文件始终保持一致。四、翻译同步工作流从 Transifex 拉取最新字符串这是快速上手文档的核心实操章节原文给出的完整流程如下以下命令必须逐字执行前置准备检出 VS Code 仓库的master分支即 Microsoft/vscode 主分支推荐将 VS Code 仓库放在语言包扩展的同级目录二者拥有相同的父目录这样后续命令可以少传一个参数cd vscode后运行yarn初始化 VS Code 仓库安装依赖。获取 Transifex API Token登录 Transifex 后到https://www.transifex.com/user/settings/api生成将 Token 写入环境变量export TRANSIFEX_API_TOKEN你的Token执行同步进入 VS Code 仓库目录后按语言包扩展的位置分两种情况# 情况 A语言包扩展与 VS Code 仓库同级推荐布局 cd vscode npm run update-localization-extension es # 情况 B语言包扩展在其他位置 cd vscode npm run update-localization-extension {path_to_lang_pack_ext}其中es即西班牙语的 Transifex 语言代码其他语言包换用对应代码即可如zh-hans、ja、de等。命令执行后会自动完成两件事将最新翻译文件下载到translations目录同时更新package.json中localizations贡献点内的translations属性即上节所述的条目清单。与仓库现状的印证在 i18n/ads-language-pack-es/package.json 的scripts中官方为这个流程封装了快捷命令scripts: { update: cd ../vscode npm run update-localization-extension es }即在语言包扩展目录下直接运行npm run update即可自动cd到同级vscode目录并执行update-localization-extension es——前提正是“VS Code 仓库与语言包扩展同级”的推荐布局。这条脚本与快速上手文档描述的步骤完全对应是文档流程在真实仓库中的落地实现。说明该流程依赖外部 VS Code 仓库与 Transifex 平台属于语言包维护者的发布期操作作为读者理解其“脚本下载翻译 更新贡献点清单”的机制即可日常使用语言包并不需要执行这些命令。五、安装后的使用Configure Display Language 切换界面语言语言包安装到 Azure Data Studio 后用户即可切换显示语言。此处的使用入口是Configure Display Language命令快速上手文档及双语 README.md给出的操作路径为按下CtrlShiftP打开命令面板输入display过滤出Configure Display Language命令按下Enter弹出已安装语言按 locale 分组的列表当前语言高亮显示选择另一个locale即可切换 UI 语言。这一交互在源码中的实现位于 src/vs/workbench/contrib/localization/common/localizationsActions.ts命令 id 为workbench.action.configureLocale标签即Configure Display Language注册于命令面板菜单MenuId.CommandPalette运行时会调用languagePackService.getInstalledLanguages()获取已安装语言并异步获取getAvailableLanguages()的可用语言在 Quick Pick 中以Installed / Available两个分组separator呈现——这正是“列表显示已安装语言、当前 locale 高亮”的代码来源用户确认选择后通过localeService.setLocale(selectedLanguage)完成切换。同时该文件还注册了ClearDisplayLanguageAction清空显示语言回退默认。这两条命令均由 localization.contribution.ts 中的BaseLocalizationWorkbenchContribution在LifecyclePhase.Eventually阶段注册桌面端与 Web 端分别通过 electron-sandbox/localization.contribution.ts 和 browser/localization.contribution.ts 挂载。六、版本节奏与多语言生态语言包的发布与 Azure Data Studio 版本严格对齐。从 CHANGELOG.md 可见完整发布序列May 13, 2024 - Release for Azure Data Studio 1.49 February 23, 2024 - Release for Azure Data Studio 1.48 October 31, 2023 - Release for Azure Data Studio 1.47 September 14, 2023 - Release for Azure Data Studio 1.46 July 10, 2023 - Release for Azure Data Studio 1.45 May 8, 2023 - Release for Azure Data Studio 1.44 March 30, 2023 - Release for Azure Data Studio 1.43 March 6, 2023 - Release for Azure Data Studio 1.42 January 13, 2023 - Release for Azure Data Studio 1.41 November 16, 2022 - Patch for 1.40 release November 9, 2022 - Release for Azure Data Studio 1.40 ...即每个 ADS 主版本发布后西班牙语语言包随即发布对应版本偶尔还会针对个别版本发布补丁如 1.40 的 Patch。西班牙语包并非孤例。仓库 i18n 目录下还并列存放了ads-language-pack-de、ads-language-pack-fr、ads-language-pack-it、ads-language-pack-ja、ads-language-pack-ko、ads-language-pack-pt-BR、ads-language-pack-ru、ads-language-pack-zh-hans、ads-language-pack-zh-hant等语言包目录结构与ads-language-pack-es完全同构均为package.jsontranslations/CHANGELOG.md。因此本文阐述的贡献点协议与同步流程对所有官方语言包通用——只需替换 Transifex 语言代码即可。七、维护、贡献与许可说明西班牙语语言包的翻译质量维护遵循“社区驱动”模式README 中表述为By the community, for the community翻译字符串托管在Microsoft Localization Platform微软本地化平台上只能在平台上修改再导出到 vscode-loc 仓库因此不接收 pull request翻译改进反馈请在 vscode-loc 仓库提交 Issue源码与字符串遵循仓库根目录 LICENSE.txt 中的许可条款。快速上手文档本身即面向“语言包扩展的维护者/贡献者”而使用侧的用户只需关心第五节的语言切换操作——二者共同构成了语言包从“生产”到“消费”的完整闭环。总结通过本文你可以把 Azure Data Studio 语言包扩展理解为一个“声明 数据”的极简结构package.json用localizations贡献点声明语言身份languageId/languageName/localizedLanguageName与翻译文件清单translationstranslations/目录存放按模块路径组织的翻译 JSON维护期通过TRANSIFEX_API_TOKEN环境变量与npm run update-localization-extension es或语言包内封装的npm run update从 Transifex 拉取最新字符串并回写贡献点运行期则由编辑器的 localization 基础设施注册Configure Display Language命令让用户在已安装的 locale 之间一键切换。延伸阅读仓库内线索语言包清单声明i18n/ads-language-pack-es/package.json翻译文件示例i18n/ads-language-pack-es/translations/main.i18n.json扩展点 schema 与校验src/vs/workbench/contrib/localization/common/localization.contribution.ts语言切换命令实现src/vs/workbench/contrib/localization/common/localizationsActions.ts版本发布记录i18n/ads-language-pack-es/CHANGELOG.md其他官方语言包i18n 目录下ads-language-pack-*系列赞分享数据库客户端桌面应用数据分析【免费下载链接】azuredatastudioAzure Data Studio is a data management and development tool with connectivity to popular cloud and on-premises databases. Azure Data Studio supports Windows, macOS, and Linux, with immediate capability to connect to Azure SQL and SQL Server. Browse the extension library for more database support options including MySQL, PostgreSQL, and MongoDB.项目地址https://gitcode.com/gh_mirrors/az/azuredatastudio点击查看免费下载相关推荐用 SkyPilot API Server 在 Airflow 中编排 SkyPilot 任务从开发到生产的完整实战指南用 SkyPilot API Server 在 Airflow 中编排 SkyPilot 任务从开发到生产的完整实战指南 SkyPilot 与 Airflow数据库客户端桌面应用数据分析Astro Theme Pure部署指南Vercel、Netlify和GitHub Pages对比Astro Theme Pure部署指南Vercel、Netlify和GitHub Pages对比 Astro Theme Pure是一款简单、快速且功能强大notepad-- 快速上手三步玩转这款跨平台文本编辑器notepad 快速上手三步玩转这款跨平台文本编辑器 notepad 是一款中国开发者打造的跨平台文本编辑器Windows、Linux、macOS 都能跑桌面应用上一篇OpenCore Legacy Patcher技术深度解析如何让老款Mac运行最新macOS系统下一篇3步根治Windows虚拟显示器残留终极清理方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表