Skip to content

Commit 6201b38

Browse files
✨ feat: Update lobe-i18n lint
1 parent 675dc8d commit 6201b38

File tree

3 files changed

+22
-23
lines changed

3 files changed

+22
-23
lines changed

packages/lobe-i18n/src/commands/Lint/constants.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,12 +173,15 @@ export const HYPHENATED_LANGUAGE_MAP: { [key: string]: string } = {
173173
};
174174

175175
// 语言族系分组
176+
export const ARABIC_SIMILAR_LANGUAGES = new Set(['ar', 'fa', 'ur', 'ku']);
177+
176178
export const LANGUAGE_FAMILIES = {
177179
EAST_ASIAN: new Set(['zh', 'ja', 'ko', 'vi', 'th', 'my', 'km', 'lo', 'mn', 'bo', 'ug']),
178180
GERMANIC: new Set(['de', 'nl', 'da', 'no', 'sv', 'is', 'fo', 'af']),
181+
MALAY: new Set(['id', 'ms']),
179182
ROMANCE: new Set(['es', 'pt', 'ca', 'it', 'fr', 'ro', 'gl']),
180183
SEMITIC: new Set(['ar', 'he', 'fa', 'ur', 'tg', 'am', 'ti', 'om', 'so', 'aa', 'mt']),
181-
SLAVIC: new Set(['bg', 'sr', 'ru', 'uk', 'be', 'hr', 'sl', 'mk', 'bs', 'me']),
184+
SLAVIC: new Set(['bg', 'sr', 'ru', 'uk', 'be', 'hr', 'sl', 'mk', 'bs', 'me', 'pl', 'cs', 'sk']),
182185
SOUTH_ASIAN: new Set(['hi', 'bn', 'ne', 'gu', 'pa', 'ta', 'ml', 'te', 'kn', 'si', 'as', 'or']),
183186
TURKIC: new Set(['tr', 'az', 'ky', 'kk', 'uz']),
184187
} as const;

packages/lobe-i18n/src/commands/Lint/utils/languageDetection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export async function initializeELD(): Promise<void> {
1212
if (!initPromise) {
1313
initPromise = (async () => {
1414
console.log('🔧 Initializing ELD language detector...');
15-
await eld.init('M'); // 使用中等规模的数据集
15+
await eld.init('L'); // 使用中等规模的数据集
1616
console.log('✅ ELD language detector initialized');
1717
})();
1818
}

packages/lobe-i18n/src/commands/Lint/utils/languageValidation.ts

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { CONFIDENCE_THRESHOLDS, ENGLISH_TERMS, LANGUAGE_FAMILIES } from '../constants';
1+
import {
2+
ARABIC_SIMILAR_LANGUAGES,
3+
CONFIDENCE_THRESHOLDS,
4+
ENGLISH_TERMS,
5+
LANGUAGE_FAMILIES,
6+
} from '../constants';
27
import { LintIssue } from '../types';
38

49
/**
@@ -9,18 +14,10 @@ export function isSimilarLanguage(
914
detectedLanguage: string,
1015
confidence: number,
1116
): boolean {
12-
// 特殊处理:阿拉伯语与波斯语、乌尔都语相似
17+
// 特殊处理:阿拉伯语与波斯语、乌尔都语、库尔德语相似
1318
if (
14-
mainLanguage === 'ar' &&
15-
['fa', 'ur', 'ku'].includes(detectedLanguage) &&
16-
confidence < CONFIDENCE_THRESHOLDS.ARABIC_SIMILAR
17-
) {
18-
return true;
19-
}
20-
21-
if (
22-
mainLanguage === 'fa' &&
23-
['ar', 'ku', 'ur'].includes(detectedLanguage) &&
19+
ARABIC_SIMILAR_LANGUAGES.has(mainLanguage) &&
20+
ARABIC_SIMILAR_LANGUAGES.has(detectedLanguage) &&
2421
confidence < CONFIDENCE_THRESHOLDS.ARABIC_SIMILAR
2522
) {
2623
return true;
@@ -46,15 +43,6 @@ export function isSimilarLanguage(
4643
return true;
4744
}
4845

49-
// 特殊处理:马来语与印尼语相似
50-
if (
51-
((mainLanguage === 'ms' && detectedLanguage === 'id') ||
52-
(mainLanguage === 'id' && detectedLanguage === 'ms')) &&
53-
confidence < CONFIDENCE_THRESHOLDS.SIMILAR_LANGUAGES
54-
) {
55-
return true;
56-
}
57-
5846
return false;
5947
}
6048

@@ -85,6 +73,14 @@ export function determineSeverity(
8573
? 'error'
8674
: 'warning';
8775

76+
// 如果是东亚语言和其他语系的混用,判定为 error
77+
const isDetectedEastAsian = LANGUAGE_FAMILIES.EAST_ASIAN.has(detectedLanguage);
78+
const isMainEastAsian = LANGUAGE_FAMILIES.EAST_ASIAN.has(mainLanguage);
79+
80+
if (isDetectedEastAsian !== isMainEastAsian && confidence > 0.5) {
81+
return 'error';
82+
}
83+
8884
// 检测明显英文内容的逻辑
8985
if (
9086
detectedLanguage === 'en' &&

0 commit comments

Comments
 (0)