vsCode 擴展中 package.nls.json 文件的作用國際化支持

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&…