11var path = require ( 'path' )
2- const { appLanguages } = require ( '../config/i18next.config' )
32
43/**
54 * available
@@ -8,7 +7,15 @@ const { appLanguages } = require('../config/i18next.config')
87 * @type {string[] }
98 */
109var available = {
11- 'en-US' : 'English'
10+ 'en-US' : 'English' ,
11+ 'ja-JP' : '日本語' ,
12+ 'zh-TW' : '中文(臺灣)' ,
13+ 'ko-KR' : '한국어' ,
14+ 'pt-BR' : 'Português Brasileiro' ,
15+ 'uk-UA' : 'Українська' ,
16+ 'es-CO' : 'Español (Colombia)' ,
17+ 'es-ES' : 'Español (España)' ,
18+ 'fr-FR' : 'Français'
1219}
1320
1421/**
@@ -17,7 +24,14 @@ var available = {
1724 * @type {string[] }
1825 */
1926var aliases = {
20- en : 'en-US'
27+ en : 'en-US' ,
28+ ja : 'ja-JP' ,
29+ zh : 'zh-TW' ,
30+ kr : 'ko-KR' ,
31+ br : 'pt-BR' ,
32+ uk : 'uk-UA' ,
33+ es : 'es-ES' ,
34+ fr : 'fr-FR'
2135}
2236
2337/**
@@ -108,6 +122,29 @@ function getLocaleResourcesPath (lang) {
108122 return path . join ( basepath , 'resources' , 'contents' , getLocale ( lang ) )
109123}
110124
125+ /**
126+ * Get the locale name.
127+ * @param lang
128+ * @return {string }
129+ */
130+ function getLocaleName ( lang ) {
131+ if ( isAvaliable ( lang ) ) {
132+ return available [ lang ]
133+ } else if ( isAlias ( lang ) ) {
134+ return available [ getAliasLocale ( lang ) ]
135+ } else {
136+ throw new Error ( 'locale ' + lang + ' do not exist.Do you add it in lib/locale.js?' )
137+ }
138+ }
139+
140+ /**
141+ * Get the avaiable locale array.
142+ * @return {Array }
143+ */
144+ function getAvaiableLocales ( ) {
145+ return Object . keys ( available )
146+ }
147+
111148/**
112149 * Get fallback.
113150 * @type {string }
@@ -121,17 +158,22 @@ function getFallbackLocale () {
121158 * @return {string }
122159 */
123160function getLocaleMenu ( current ) {
124- let menu = ''
125- Object . entries ( appLanguages ) . forEach ( ( [ languageKey , language ] ) => {
126- menu = menu . concat ( '<option value="' + languageKey + '">' + language + '</option>' )
127- } )
128-
161+ var menu = ''
162+ for ( var lang in available ) {
163+ if ( lang === current ) {
164+ menu = menu . concat ( '<option value="' + lang + '" selected="selected">' + getLocaleName ( lang ) + '</option>' )
165+ } else {
166+ menu = menu . concat ( '<option value="' + lang + '">' + getLocaleName ( lang ) + '</option>' )
167+ }
168+ }
129169 return menu
130170}
131171
132172module . exports . getLocale = getLocale
133173module . exports . getLocaleBuiltPath = getLocaleBuiltPath
134174module . exports . getLocaleResourcesPath = getLocaleResourcesPath
135175module . exports . getCurrentLocale = getCurrentLocale
176+ module . exports . getLocaleName = getLocaleName
177+ module . exports . getAvaiableLocales = getAvaiableLocales
136178module . exports . getFallbackLocale = getFallbackLocale
137179module . exports . getLocaleMenu = getLocaleMenu
0 commit comments