package.nls.json 代表英文语言文件

{"command.favourite.addtofavourite": "Add to Favourite","command.favourite.deletefavourite": "Remove from Favourite","command.favourite.moveup": "Move Up"
}

在 package.json 里可以用下面方式引用

"title": "%command.favourite.moveup%"

新建个 package.nls.zh-cn.json 文件是中文语言包

{"command.favourite.addtofavourite": "添加到收藏夹","command.favourite.deletefavourite": "从收藏夹中删除","command.favourite.moveup": "上移"
}

同样方式引用,当 vscode 设置成中文时会引用中文语言包 

"title": "%command.favourite.moveup%"

这是 package.json 用多语言,如果代码中也想使用多语言怎么办呢

创建 localize.ts 文件,从 code-settings-sync 插件中拷贝过来的

import { existsSync, readFileSync } from 'fs';
import { resolve } from "path";
import { extensions } from "vscode";
import { ILanguagePack } from '../model/language-pack.model';export class Localize {private bundle = this.resolveLanguagePack();private options: { locale: string };public localize(key: string, ...args: string[]): string {const message = this.bundle[key] || key;return this.format(message, args);}private init() {try {this.options = {...this.options,...JSON.parse(process.env.VSCODE_NLS_CONFIG || "{}")};} catch (err) {throw err;}}private format(message: string, args: string[] = []): string {return args.length? message.replace(/\{(\d+)\}/g,(match, rest: any[]) => args[rest[0]] || match): message;}private resolveLanguagePack(): ILanguagePack {this.init();const languageFormat = "package.nls{0}.json";const defaultLanguage = languageFormat.replace("{0}", "");const rootPath = extensions.getExtension('yunan-hu.vscode-favourite').extensionPath;const resolvedLanguage = this.recurseCandidates(rootPath,languageFormat,this.options.locale);const languageFilePath = resolve(rootPath, resolvedLanguage);try {const defaultLanguageBundle = JSON.parse(resolvedLanguage !== defaultLanguage? readFileSync(resolve(rootPath, defaultLanguage), "utf-8"): "{}");const resolvedLanguageBundle = JSON.parse(readFileSync(languageFilePath, "utf-8"));return { ...defaultLanguageBundle, ...resolvedLanguageBundle };} catch (err) {throw err;}}private recurseCandidates(rootPath: string,format: string,candidate: string): string {const filename = format.replace("{0}", `.${candidate}`);const filepath = resolve(rootPath, filename);if (existsSync(filepath)) {return filename;}if (candidate.split("-")[0] !== candidate) {return this.recurseCandidates(rootPath, format, candidate.split("-")[0]);}return format.replace("{0}", "");}
}export default Localize.prototype.localize.bind(new Localize());

注意 extensions.getExtension('yunan-hu.vscode-favourite') 要改为自己的发布者名,和 package.json 里的name值 

 language-pack.model.ts

export interface ILanguagePack {[key: string]: string;
}

使用

import localize from '../helper/localize'vscode.window.showErrorMessage(localize('ext.new.group.name'));

这样就可以在 ts 中使用了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87498.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87498.shtml
英文地址,请注明出处:http://en.pswp.cn/web/87498.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构型智能科技的关键可行性——信息型智能向结构型智能的转换(提纲)

结构型智能科技的关键可行性 ——信息型智能向结构型智能的转换 1.信息型智能科技概述 1.1传统计算机科技的信息型继承者 1.2 信息型智能环境 1.3信息型智能主体 1.4机器学习创造的智能 1.5信息型智能科技的问题 2.结构型智能科技概述 2.1传统计算机科技向真实生命结构…

Excel 数据合并助手SheetDataMerge智能识别同类数据,销售报表处理提升效率

各位Excel小能手们!今天给大家介绍个超厉害的玩意儿——SheetDataMerge,这可是专注Excel数据处理的实用工具!它就像个数据小管家,核心功能就是智能合并工作表里的同类数据。 软件下载地址安装包 它有多牛呢?能自动识别…

AIStarter平台使用指南:如何一键卸载已下载的AI项目(最新版操作教程)

如果你正在使用 AIStarter 平台,但不知道如何卸载不再需要的 AI 项目,那么这篇简明教程将为你提供清晰的操作指引。 AIStarter 是由知名创作者“熊哥”打造的一款 AI 工具启动器平台,旨在帮助用户快速部署和运行各类 AI 项目。随着平台不断更…

项目中大表治理方案实践

一、业务背景 目前生产库数据库服务器数据存储达到了13T,其中license_spart表数据量达到了200亿,占用7.5T,空间占用率达到54%。而且这张表每年数据增长量达到30亿。其中有效VALID数据占20亿,无效数据INVALID占180亿。由于业务上有…

快应用(QuickApp)技术解析与UniApp跨端开发生态探秘优雅草卓伊凡

快应用(QuickApp)技术解析与UniApp跨端开发生态探秘优雅草卓伊凡引言:一场由快应用引发的技术辩论近日,优雅草科技的资深开发者卓伊凡在与甲方的一次项目沟通中,因技术选型问题展开了激烈讨论。甲方对快应用&#xff0…

《Font Awesome 参考手册》

《Font Awesome 参考手册》 引言 Font Awesome 是一个功能丰富的图标库,旨在帮助设计师和开发者快速地在网页上添加图标。它提供了超过700个矢量图标,并且支持响应式设计。本文将为您详细介绍 Font Awesome 的使用方法、图标分类、图标定制以及与 CSS 的结合。 一、Font A…

Linux基本命令篇 —— uname命令

uname命令是Linux系统中用于显示系统信息的实用工具,它可以提供关于操作系统、内核版本、硬件架构等重要信息。下面我将详细介绍这个命令的用法和常见应用场景。 目录 一、基本语法 二、常用选项 三、使用示例 显示所有系统信息(最常用) …

React Native 开发环境搭建--window--android

官网: https://reactnative.cn/docs/environment-setup 必须安装的 node, JDK ,android Studio 安装node 以前装了nvm, 用nvm install 18.0.0 就可以了 安装JDK 1、下载 ---- 我安装的是11 【JAVA17下载传送门】 注意!!!1 …

ODS 系统是什么?企业为什么需要搭建 ODS?

目录 一、ODS 系统基础认知:先弄明白它是啥 1. 什么是 ODS 系统? 2. ODS 系统的起源 3. ODS 系统的特点 二、ODS 系统能干啥?核心功能解析 1. 数据集成 2. 数据清洗和转换 3. 实时数据更新 4. 数据查询和分析 三、企业为什么非得搭…

通过网页调用身份证阅读器http websocket方法-华视电子————仙盟创梦IDE

1.安装全浏览器网页专用监控软件 2.安装后 3.配置web接口 4.测试读取 5.驱动监控地址 时间段内读取身份证:如超时时间10000ms,则在点击按钮10秒内,放上身份证就可以读成功,超时返回失败; 读身份证:把身份证放上去后点击读卡,读成功,再次读卡需要将身份证拿起来再放回去; 不拿…

Spring Cloud 前端调用后端接口方式

在 Spring Cloud 微服务架构中,前端调用后端接口通常不直接通过 Eureka,而是通过以下两种核心方式实现: 一、前端直接调用后端服务(需解决跨域和地址管理问题) 1. AJAX 直接调用 前端通过 HTTP 请求(如 …

【stm32】HAL库开发——CubeMX配置RTC,单片机工作模式和看门狗

目录 一、CubeMX配置RTC 1.RTC实时重要一环——BKP 寄存器 2.RTC实时时钟 2.1打开RTC并设置时间 2.2打开外部低速时钟 2.3代码实现: 二、单片机工作模式 1.低功耗睡眠模式(Sleep) 2.低功耗停止模式(Stop) 3.低功耗待机模式(StandBy) 三、看门狗 1.独立看…

9.Docker的容器数据卷使用(挂载)

什么是容器数据卷技术? 到这里,我算是入门docker了! docker的理念:将环境和应用打包成一个镜像!直接安装就能使用 如果数据都在容器中,那么我们一旦将容器删除,数据就会丢失!因为…

使用 TCollector 写入 TDengine

TCollector 是 openTSDB 的一部分,它用来采集客户端日志发送给数据库。 只需要将 TCollector 的配置修改指向运行 taosAdapter 的服务器域名(或 IP 地址)和相应端口即可将 TCollector 采集的数据存在到 TDengine 中,可以充分利用…

高斯消元法详解

文章目录 概念用法特殊情况 我的奇怪方法 概念 什么是高斯消元?让我们看一看 OI-Wiki 的解释: 高斯消元法(Gauss–Jordan elimination)是求解线性方程组的经典算法,它在当代数学中有着重要的地位和价值,是线性代数课…

暴雨服务器成功中标华中科技大学集成电路学院服务器采购项目

近日,武汉暴雨信息发展有限公司在激烈的竞争中脱颖而出,成功中标华中科技大学集成电路学院的服务器采购项目。此次中标产品为暴雨旗下的塔式重装AM400服务器,这一成果标志着暴雨信息在高性能计算领域的卓越实力得到了高校科研机构的高度认可。…

集群聊天服务器---MySQL数据库的建立

数据库的建立表格 user表 字段名称字段类型字段说明约束idINT用户idPRIMARY KEY, AUTO_INCREMENTnameVARCHAR(50)用户名NOT NULL, UNIQUEpasswordVARCHAR(50)用户密码NOT NULLstateENUM(online, offline)当前登录状态DEFAULT offline friend表 字段名称字段类型字段说明约束…

MongoDB 安装使用教程

一、MongoDB 简介 MongoDB 是一个高性能、开源的 NoSQL 文档型数据库,使用 BSON(二进制 JSON)格式存储数据。适合存储大规模、高并发的非结构化数据,常用于大数据、日志存储、微服务架构中。 二、下载安装 2.1 官网下载 访问 …

FastAPI 小白教程:从入门级到实战(源码教程)

目录 1. FastAPI 基本介绍 安装 FastAPI 2. 简单的 CRUD 示例 2.1 创建基本应用 2.2 添加 CRUD 操作​​​​​​​ 3. 处理跨域请求 (CORS) 4. 普通案例:待办事项 API​​​​​​​ 5. 企业案例:认证和数据库集成 5.1 使用 SQLAlchemy 和 JWT…

java中jasypt是用来做什么的?

思路: 简要介绍Jasypt:一句话说明它的作用。配置解析:分别解释password和algorithm的作用。工作流程:说明如何加密敏感数据并在配置文件中使用。安全提醒:强调密钥管理的重要性。 最终回答: Jasypt&…