@@ -20,19 +20,29 @@ const BASE_SRC_FILE = resolve(SRC_DIR, `${BASE_LANGUAGE}.yaml`)
2020const FALLBACKS_FILE = resolve ( SRC_DIR , 'fallbacks.json' )
2121const INDEX_DST_FILE = resolve ( DST_DIR , 'index.json' )
2222
23- const index : {
23+ interface I18nIndex {
2424 manifest_version : number
2525 base_language : string
2626 last_modified : string
27- languages : Record <
28- string ,
29- {
30- file : string
31- fallback ?: string
32- data ?: Record < string , string >
33- }
34- >
35- } = {
27+ languages : Record < string , I18nLanguage >
28+ }
29+
30+ interface I18nLanguage {
31+ file : string
32+ iso_name : string
33+ endonym : string
34+ fallback ?: string
35+ data ?: Record < string , string >
36+ }
37+
38+ interface LanguagesMap {
39+ code : string
40+ iso_name : string
41+ endonym : string
42+ mw_code : string
43+ }
44+
45+ const index : I18nIndex = {
3646 manifest_version : 1 ,
3747 base_language : BASE_LANGUAGE ,
3848 last_modified : new Date ( ) . toISOString ( ) ,
@@ -48,9 +58,10 @@ const fallbacks = (await readFile(FALLBACKS_FILE, 'utf-8').then(
4858) ) as Record < string , string >
4959
5060consola . info ( 'Reading languages map...' )
51- const languagesMap = ( await readFile ( LANGUAGES_MAP_FILE , 'utf-8' ) . then (
52- JSON . parse
53- ) ) as Array < { code : string ; mw_code : string } >
61+ const languagesMap : LanguagesMap [ ] = await readFile (
62+ LANGUAGES_MAP_FILE ,
63+ 'utf-8'
64+ ) . then ( JSON . parse )
5465
5566const normalizeCode = ( raw : string ) => {
5667 const mapped = languagesMap . find ( ( i ) => i . code === raw )
@@ -96,15 +107,14 @@ Object.entries(fallbacks).forEach(([from, to]) => {
96107index . languages = Object . fromEntries (
97108 Array . from ( allLanguages )
98109 . sort ( ( a , b ) => a . localeCompare ( b ) )
99- . map < [ string , { file : string ; fallback ?: string } ] > ( ( language ) => {
110+ . map < [ string , I18nLanguage ] > ( ( language ) => {
100111 const resolved = resolveLanguageFallbacks ( language , fallbacks , languages )
101- const meta : {
102- file : string
103- fallback ?: string
104- data ?: Record < string , string >
105- } = {
112+ const mapped = languagesMap . find ( ( i ) => i . mw_code === language )
113+ const meta = {
106114 file : `${ resolved } .json` ,
107- }
115+ } as I18nLanguage
116+ if ( mapped ) meta . iso_name = mapped . iso_name
117+ if ( mapped ) meta . endonym = mapped . endonym
108118 if ( resolved !== language ) meta . fallback = resolved
109119 if ( language === BASE_LANGUAGE ) meta . data = base
110120 return [ language , meta ]
@@ -141,9 +151,9 @@ consola.success('Index file written successfully')
141151
142152// Check if en.json exists
143153try {
144- await access ( resolve ( DST_DIR , 'en .json' ) , constants . F_OK )
154+ await access ( resolve ( DST_DIR , ` ${ BASE_LANGUAGE } .json` ) , constants . F_OK )
145155} catch ( _ ) {
146- consola . error ( 'en .json does not exist' )
156+ consola . error ( ` ${ BASE_LANGUAGE } .json does not exist` )
147157 process . exit ( 1 )
148158}
149159
0 commit comments