@@ -90,6 +90,13 @@ export const ATTACK_FLAGS = {
9090 REGION : 1 << 15 // AoE skill.
9191} ;
9292
93+ export const LANGUAGE_CODE_MAP = {
94+ "zh-tw" : "tw" ,
95+ "zh-cn" : "cns" ,
96+ "zh" : "cns" ,
97+ "pt-br" : "br" ,
98+ } ;
99+
93100export function getClassById ( id ) {
94101 return classes [ id ] ;
95102}
@@ -123,7 +130,7 @@ export function getStatNameByIdOrDefault(id, i18n) {
123130
124131 var shortLanguageCode = "en" ;
125132 if ( i18n . resolvedLanguage ) {
126- shortLanguageCode = i18n . resolvedLanguage . split ( '-' ) [ 0 ] ;
133+ shortLanguageCode = getFlyffLanguageShortCodeFromLanguage ( i18n ) ;
127134 }
128135
129136 return stat [ shortLanguageCode ] ?? stat . en ;
@@ -412,7 +419,7 @@ export function getStatAwakeTitle(itemElem, i18n) {
412419
413420 var shortLanguageCode = "en" ;
414421 if ( i18n . resolvedLanguage ) {
415- shortLanguageCode = i18n . resolvedLanguage . split ( '-' ) [ 0 ] ;
422+ shortLanguageCode = getFlyffLanguageShortCodeFromLanguage ( i18n ) ;
416423 }
417424
418425
@@ -467,3 +474,21 @@ export function getGuid() {
467474 ( c ^ ( crypto . getRandomValues ( new Uint8Array ( 1 ) ) [ 0 ] & ( 15 >> ( c / 4 ) ) ) ) . toString ( 16 )
468475 ) ;
469476}
477+
478+ /**
479+ * Get the Flyff language short code based on the resolved i18n language.
480+ *
481+ * @param {object } i18n Localization
482+ * @returns {string } The mapped Flyff language short code, or the base language, or "en" as fallback.
483+ */
484+ export function getFlyffLanguageShortCodeFromLanguage ( i18n ) {
485+ const lang = i18n . resolvedLanguage . toLowerCase ( ) ;
486+
487+ // Return mapped code if available
488+ if ( LANGUAGE_CODE_MAP [ lang ] ) {
489+ return LANGUAGE_CODE_MAP [ lang ] ;
490+ }
491+
492+ const baseLang = lang . split ( "-" ) [ 0 ] ;
493+ return baseLang || "en" ;
494+ }
0 commit comments