@@ -335,34 +335,16 @@ export class LoginUserOperationExecutor implements IOperationExecutor {
335335 }
336336}
337337
338- const TRADITIONAL_CHINESE_LANGUAGE_TAG = [ 'tw' , 'hant' ] ;
339338const SIMPLIFIED_CHINESE_LANGUAGE_TAG = [ 'cn' , 'hans' ] ;
340339
341340const getLanguage = ( ) => {
342- let languageTag = navigator . language ;
343- if ( languageTag ) {
344- languageTag = languageTag . toLowerCase ( ) ;
345- const languageSubtags = languageTag . split ( '-' ) ;
346- if ( languageSubtags [ 0 ] == 'zh' ) {
347- // The language is zh-?
348- // We must categorize the language as either zh-Hans (simplified) or zh-Hant (traditional);
349- // OneSignal only supports these two Chinese variants
350- for ( const traditionalSubtag of TRADITIONAL_CHINESE_LANGUAGE_TAG ) {
351- if ( languageSubtags . indexOf ( traditionalSubtag ) !== - 1 ) {
352- return 'zh-Hant' ;
353- }
354- }
355- for ( const simpleSubtag of SIMPLIFIED_CHINESE_LANGUAGE_TAG ) {
356- if ( languageSubtags . indexOf ( simpleSubtag ) !== - 1 ) {
357- return 'zh-Hans' ;
358- }
359- }
360- return 'zh-Hant' ; // Return Chinese traditional by default
361- } else {
362- // Return the language subtag (it can be three characters, so truncate it down to 2 just to be sure)
363- return languageSubtags [ 0 ] . substring ( 0 , 2 ) ;
364- }
365- } else {
366- return 'en' ;
367- }
341+ const languageTag = navigator . language ?. toLowerCase ( ) ;
342+ if ( ! languageTag ) return 'en' ;
343+
344+ const [ primary , ...subtags ] = languageTag . split ( '-' ) ;
345+ if ( primary !== 'zh' ) return primary . substring ( 0 , 2 ) ;
346+
347+ if ( SIMPLIFIED_CHINESE_LANGUAGE_TAG . some ( ( tag ) => subtags . includes ( tag ) ) )
348+ return 'zh-Hans' ;
349+ return 'zh-Hant' ;
368350} ;
0 commit comments