Skip to content

Commit e0db0ca

Browse files
committed
🐛 Fixed the Chinese name issue
1 parent 2925b2f commit e0db0ca

File tree

2 files changed

+44
-4
lines changed

2 files changed

+44
-4
lines changed

bin/utils/name.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,26 @@ export function generateLinuxPackageName(name: string): string {
1515
}
1616

1717
export function generateIdentifierSafeName(name: string): string {
18-
return name.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
18+
const cleaned = name
19+
.replace(/[^a-zA-Z0-9\u4e00-\u9fff]/g, '')
20+
.toLowerCase();
21+
22+
if (cleaned === '') {
23+
const fallback = Array.from(name)
24+
.map(char => {
25+
const code = char.charCodeAt(0);
26+
if ((code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
27+
return char.toLowerCase();
28+
}
29+
return code.toString(16);
30+
})
31+
.join('')
32+
.slice(0, 50);
33+
34+
return fallback || 'pake-app';
35+
}
36+
37+
return cleaned;
1938
}
2039

2140
export function generateWindowsFilename(name: string): string {

dist/cli.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,9 +343,28 @@ function generateLinuxPackageName(name) {
343343
.replace(/-+/g, '-');
344344
}
345345
function generateIdentifierSafeName(name) {
346-
return name
347-
.replace(/[^a-zA-Z0-9]/g, '')
346+
// Support Chinese characters (CJK Unified Ideographs: U+4E00-U+9FFF)
347+
// and other common Unicode letter categories
348+
const cleaned = name
349+
.replace(/[^a-zA-Z0-9\u4e00-\u9fff]/g, '')
348350
.toLowerCase();
351+
// If result is empty after cleaning, generate a fallback based on original name
352+
if (cleaned === '') {
353+
// Convert to ASCII-safe representation using character codes
354+
const fallback = Array.from(name)
355+
.map(char => {
356+
const code = char.charCodeAt(0);
357+
// Keep ASCII alphanumeric, convert others to their hex codes
358+
if ((code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
359+
return char.toLowerCase();
360+
}
361+
return code.toString(16);
362+
})
363+
.join('')
364+
.slice(0, 50); // Limit length to avoid extremely long names
365+
return fallback || 'pake-app'; // Ultimate fallback
366+
}
367+
return cleaned;
349368
}
350369

351370
async function mergeConfig(url, options, tauriConf) {
@@ -1190,7 +1209,9 @@ const API_KEYS = {
11901209
brandfetch: ['1idqvJC0CeFSeyp3Yf7', '1idej-yhU_ThggIHFyG'],
11911210
};
11921211
function generateIconPath(appName, isDefault = false) {
1193-
const safeName = isDefault ? 'icon' : generateSafeFilename(appName).toLowerCase();
1212+
const safeName = isDefault
1213+
? 'icon'
1214+
: generateSafeFilename(appName).toLowerCase();
11941215
const baseName = safeName;
11951216
if (IS_WIN) {
11961217
return path.join(npmDirectory, 'src-tauri', 'png', `${baseName}_256.ico`);

0 commit comments

Comments
 (0)