@vibexnpm/talkx 3.0.4 → 3.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -2
- package/dist/talkflow-sdk.esm.js +1 -1
- package/dist/talkflow-sdk.esm.js.map +1 -1
- package/dist/talkflow-sdk.standalone.js +1 -1
- package/dist/talkflow-sdk.standalone.js.map +1 -1
- package/dist/talkflow-sdk.umd.js +1 -1
- package/dist/talkflow-sdk.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/TalkFlowClient.js +39 -4
- package/types/index.d.ts +4 -2
package/package.json
CHANGED
package/src/TalkFlowClient.js
CHANGED
|
@@ -299,7 +299,14 @@ class TalkFlowClient extends EventEmitter {
|
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
/**
|
|
302
|
-
* 브라우저 locale 감지 — {@code navigator.language} 를 BCP-47 소문자로
|
|
302
|
+
* 브라우저 locale 감지 — {@code navigator.language} 를 BCP-47 소문자로 정규화하고 지역 변형을 primary 로
|
|
303
|
+
* 축약한다({@code ko-KR → 'ko'}, {@code en-US → 'en'}). 단 {@code zh} 계열은 간체/번체 구분을 위해
|
|
304
|
+
* 변형을 보존한다({@code zh-TW → 'zh-tw'}). 비브라우저/미가용 시 null.
|
|
305
|
+
*
|
|
306
|
+
* <p>축약 이유(값공간 통일): 서버 저장·번역·요약 키는 짧은 코드({@code 'ko'}/{@code 'en'}) 기준이다. 시드가
|
|
307
|
+
* 지역 변형을 그대로 보내면 명시 요청({@code lang: 'en'})과 키가 분열되어 같은 언어 이중 생성·조회 miss 가
|
|
308
|
+
* 발생한다. 서버 {@code LanguageCode} 도 동일 규칙으로 축약하므로 어느 쪽으로 들어와도 같은 값이 된다.</p>
|
|
309
|
+
*
|
|
303
310
|
* <p>{@link #registerUser} 자동 시드에 사용되며, 고객사 BFF 의 {@code /users/auth} 시드에도 쓸 수 있다.</p>
|
|
304
311
|
* @returns {string|null}
|
|
305
312
|
*/
|
|
@@ -307,7 +314,33 @@ class TalkFlowClient extends EventEmitter {
|
|
|
307
314
|
if (typeof navigator === 'undefined' || !navigator.language) {
|
|
308
315
|
return null;
|
|
309
316
|
}
|
|
310
|
-
return navigator.language
|
|
317
|
+
return TalkFlowClient.normalizeLanguageCode(navigator.language);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* 언어 코드 canonical 정규화 — 소문자 + 지역 변형 축약(zh 계열 보존). 서버 {@code LanguageCode} 규칙의 미러.
|
|
322
|
+
* <p>{@code 'OFF'}(원문 sentinel)는 대문자 그대로 유지한다. 빈 값은 null.</p>
|
|
323
|
+
* @param {string|null|undefined} code - BCP-47 코드(예 'ko-KR') / 'OFF' / null
|
|
324
|
+
* @returns {string|null}
|
|
325
|
+
*/
|
|
326
|
+
static normalizeLanguageCode(code) {
|
|
327
|
+
if (!code || typeof code !== 'string') {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const trimmed = code.trim();
|
|
331
|
+
if (!trimmed) {
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
if (trimmed.toUpperCase() === 'OFF') {
|
|
335
|
+
return 'OFF';
|
|
336
|
+
}
|
|
337
|
+
const lower = trimmed.toLowerCase();
|
|
338
|
+
const dash = lower.indexOf('-');
|
|
339
|
+
if (dash < 0) {
|
|
340
|
+
return lower;
|
|
341
|
+
}
|
|
342
|
+
const primary = lower.slice(0, dash);
|
|
343
|
+
return primary === 'zh' ? lower : primary;
|
|
311
344
|
}
|
|
312
345
|
|
|
313
346
|
/**
|
|
@@ -319,8 +352,10 @@ class TalkFlowClient extends EventEmitter {
|
|
|
319
352
|
* @returns {string|null}
|
|
320
353
|
*/
|
|
321
354
|
static displayText(message, myLang) {
|
|
322
|
-
|
|
323
|
-
|
|
355
|
+
// myLang 도 canonical 로 정규화 — 앱이 'ko-KR' 처럼 지역 변형을 넘겨도 서버 저장 키('ko')와 일치시킨다.
|
|
356
|
+
const lang = TalkFlowClient.normalizeLanguageCode(myLang);
|
|
357
|
+
if (message && message.translations && lang && message.translations[lang]) {
|
|
358
|
+
return message.translations[lang];
|
|
324
359
|
}
|
|
325
360
|
return message ? message.content : null;
|
|
326
361
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -1735,9 +1735,11 @@ export default class TalkFlowClient implements SdkEventEmitter<TalkFlowClientEve
|
|
|
1735
1735
|
// 다국어 (Multilingual)
|
|
1736
1736
|
/** 내 기본 선호 언어 설정 (전 방 공통) — BCP-47 / 'OFF'(원문) / null·''(미설정). 방별은 setMyRoomLanguage. */
|
|
1737
1737
|
setPreferredLanguage(language: string | null): Promise<unknown>;
|
|
1738
|
-
/** 브라우저 locale 감지 —
|
|
1738
|
+
/** 브라우저 locale 감지 — 소문자 + 지역 변형 축약('ko-KR'→'ko', zh 계열은 'zh-tw' 보존). 비브라우저/미가용 시 null. */
|
|
1739
1739
|
static detectBrowserLanguage(): string | null;
|
|
1740
|
-
/**
|
|
1740
|
+
/** 언어 코드 canonical 정규화 — 소문자 + 지역 변형 축약(zh 보존). 서버 LanguageCode 규칙 미러. 'OFF' 는 유지. */
|
|
1741
|
+
static normalizeLanguageCode(code: string | null | undefined): string | null;
|
|
1742
|
+
/** 표시 헬퍼 — message.translations[myLang] ?? message.content. myLang 은 자동 canonical 정규화. */
|
|
1741
1743
|
static displayText(message: ChatMessage, myLang?: string): string | null;
|
|
1742
1744
|
|
|
1743
1745
|
// Push
|