From 3731e376e3557155385c3cc32b328c0f97706ddc Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Sun, 30 Mar 2025 00:12:23 +0800 Subject: [PATCH] feat(cli): preset `lang` base on the os locale (#544) * feat(cli): preset `lang` base on the os locale * chore: tweak --- cli/package.json | 1 + cli/src/prompt.ts | 13 +++++++++++++ pnpm-lock.yaml | 28 ++++++++++++++++++++++++++++ pnpm-workspace.yaml | 1 + 4 files changed, 43 insertions(+) diff --git a/cli/package.json b/cli/package.json index 9e3319df..8350ddf0 100644 --- a/cli/package.json +++ b/cli/package.json @@ -35,6 +35,7 @@ "cac": "catalog:prod", "execa": "catalog:prod", "handlebars": "catalog:prod", + "os-locale": "catalog:prod", "picocolors": "catalog:prod" }, "plume-deps": { diff --git a/cli/src/prompt.ts b/cli/src/prompt.ts index 5d802b43..01650e8b 100644 --- a/cli/src/prompt.ts +++ b/cli/src/prompt.ts @@ -2,6 +2,7 @@ import type { Bundler, Langs, PromptResult } from './types.js' import { createRequire } from 'node:module' import process from 'node:process' import { cancel, confirm, group, select, text } from '@clack/prompts' +import { osLocale } from 'os-locale' import { bundlerOptions, deployOptions, DeployType, languageOptions, Mode } from './constants.js' import { setLang, t } from './translate.js' @@ -20,6 +21,18 @@ export async function prompt(mode: Mode, root?: string): Promise { const result: PromptResult = await group({ displayLang: async () => { + const locale = await osLocale() + + if (locale === 'zh-CN' || locale === 'zh-Hans') { + setLang('zh-CN') + return 'zh-CN' + } + + if (locale === 'en-US') { + setLang('en-US') + return 'en-US' + } + const lang = await select({ message: 'Select a language to display / 选择显示语言', options: languageOptions, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 91603034..124d2460 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -260,6 +260,9 @@ catalogs: nanoid: specifier: ^5.1.5 version: 5.1.5 + os-locale: + specifier: ^6.0.2 + version: 6.0.2 p-map: specifier: ^7.0.3 version: 7.0.3 @@ -470,6 +473,9 @@ importers: handlebars: specifier: catalog:prod version: 4.7.8 + os-locale: + specifier: catalog:prod + version: 6.0.2 picocolors: specifier: catalog:prod version: 1.1.1 @@ -4407,6 +4413,10 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} + invert-kv@3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -4658,6 +4668,10 @@ packages: layout-base@2.0.1: resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + less@4.2.2: resolution: {integrity: sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==} engines: {node: '>=6'} @@ -5238,6 +5252,10 @@ packages: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} + os-locale@6.0.2: + resolution: {integrity: sha512-qIb8bzRqaN/vVqEYZ7lTAg6PonskO7xOmM7OClD28F6eFa4s5XGe4bGpHUHMoCHbNNuR0pDYFeSLiW5bnjWXIA==} + engines: {node: '>=12.20'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -10880,6 +10898,8 @@ snapshots: internmap@2.0.3: {} + invert-kv@3.0.1: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -11092,6 +11112,10 @@ snapshots: layout-base@2.0.1: {} + lcid@3.1.1: + dependencies: + invert-kv: 3.0.1 + less@4.2.2: dependencies: copy-anything: 2.0.6 @@ -11903,6 +11927,10 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.0 + os-locale@6.0.2: + dependencies: + lcid: 3.1.1 + os-tmpdir@1.0.2: {} p-limit@3.1.0: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a02051fb..62bc8803 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -103,6 +103,7 @@ catalogs: markmap-view: ^0.18.10 minisearch: ^7.1.2 nanoid: ^5.1.5 + os-locale: ^6.0.2 p-map: ^7.0.3 package-manager-detector: ^1.1.0 picocolors: ^1.1.1