Skip to content

Commit 80b665d

Browse files
committed
feat: make locale reusable and use ini to read file
1 parent 88fe54e commit 80b665d

File tree

4 files changed

+39
-6
lines changed

4 files changed

+39
-6
lines changed
File renamed without changes.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"devDependencies": {
3939
"@tsconfig/node18": "^18.2.2",
4040
"@types/eslint": "^8.44.8",
41+
"@types/ini": "^1.3.34",
4142
"@types/node": "^18.19.2",
4243
"@types/prompts": "^2.4.9",
4344
"@vue/create-eslint-config": "^0.3.2",
@@ -59,5 +60,8 @@
5960
"*.{js,ts,vue,json}": [
6061
"prettier --write"
6162
]
63+
},
64+
"dependencies": {
65+
"ini": "^4.1.1"
6266
}
6367
}

pnpm-lock.yaml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

utils/getLanguage.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as fs from 'node:fs'
22
import * as path from 'node:path'
3+
import { parse } from 'ini'
34

45
interface LanguageItem {
56
hint?: string
@@ -43,6 +44,20 @@ interface Language {
4344
}
4445
}
4546

47+
function linkLocale(locale: string): string {
48+
let linkedLocale: string
49+
switch (locale) {
50+
case 'zh-CN':
51+
case 'zh-SG':
52+
linkedLocale = 'zh-Hans'
53+
break
54+
default:
55+
linkedLocale = locale
56+
}
57+
58+
return linkedLocale
59+
}
60+
4661
function getLocale() {
4762
const shellLocale =
4863
process.env.LC_ALL || // POSIX locale environment variables
@@ -51,9 +66,7 @@ function getLocale() {
5166
Intl.DateTimeFormat().resolvedOptions().locale || // Built-in ECMA-402 support
5267
'en-US' // Default fallback
5368

54-
const locale = shellLocale.split('.')[0].replace('_', '-')
55-
56-
return locale
69+
return linkLocale(shellLocale.split('.')[0].replace('_', '-'))
5770
}
5871

5972
export default function getLanguage() {
@@ -66,9 +79,9 @@ export default function getLanguage() {
6679
const languageFilePath = path.resolve(localesRoot, `${locale}.json`)
6780
const doesLanguageExist = fs.existsSync(languageFilePath)
6881

69-
const lang: Language = doesLanguageExist
70-
? require(languageFilePath)
71-
: require(path.resolve(localesRoot, 'en-US.json'))
82+
const lang = (
83+
doesLanguageExist ? parse(languageFilePath) : parse(path.resolve(localesRoot, 'en-US.json'))
84+
) as Language
7285

7386
return lang
7487
}

0 commit comments

Comments
 (0)