@@ -24,6 +24,7 @@ interface ApiConfig {
2424interface LocaleResource {
2525 locale : string ;
2626 resource : Record < string , any > ;
27+ type : string ;
2728}
2829
2930export const hasAnyDeltaBetweenLocalAndRemoteLocales = async ( ) : Promise < boolean > => {
@@ -149,23 +150,25 @@ export const syncLocales = async (syncMode: SyncMode): Promise<void> => {
149150 }
150151
151152 for ( const file of localFiles ) {
152- const locale : string = path . basename ( file , '.json' ) ;
153+ let locale : string = path . basename ( file , '.json' ) ;
153154 console . log ( `Processing local file: ${ locale } ` ) ;
155+ const localeType = locale . includes ( 'schema' ) ? 'locale_schema' : 'locale' ;
156+ locale = locale . includes ( 'schema' ) ? locale . replace ( '.schema' , '' ) : locale ;
157+
154158 let localData : Record < string , any > ;
155159 try {
156160 localData = JSON . parse ( await fs . readFile ( path . join ( localesFolder , file ) , 'utf-8' ) ) ;
157161 } catch ( err ) {
158162 console . error ( `Error reading file ${ file } : ${ ( err as Error ) . message } ` ) ;
159163 continue ;
160164 }
161-
162- const matchingItem = data . items . find ( ( item : LocaleResource ) => item . locale === locale ) ;
165+ const matchingItem = data . items . find ( ( item : LocaleResource ) => item . locale === locale && item . type === localeType ) ;
163166 if ( ! matchingItem ) {
164167 console . log ( `No matching item found for locale: ${ locale } ` ) ;
165- unmatchedLocales . push ( { locale, resource : localData } ) ;
168+ unmatchedLocales . push ( { locale, resource : localData , type : localeType } ) ;
166169 if ( syncMode === SyncMode . PUSH ) {
167170 console . log ( `Creating new resource in API for locale: ${ locale } ` ) ;
168- await createLocaleInAPI ( localData , locale , 'locale' ) ;
171+ await createLocaleInAPI ( localData , locale , localeType ) ;
169172 }
170173 } else {
171174 if ( syncMode === SyncMode . PUSH ) {
@@ -193,9 +196,9 @@ export const syncLocales = async (syncMode: SyncMode): Promise<void> => {
193196 if ( syncMode === SyncMode . PULL ) {
194197 for ( const item of data . items ) {
195198 const locale : string = item . locale ;
196- const localeFile : string = path . join ( localesFolder , `${ locale } .json` ) ;
199+ const localeFile = path . join ( localesFolder , `${ item . locale } ${ item . type === 'locale_schema' ? '.schema' : '' } .json` ) ;
197200 const localeData : Record < string , any > = item . resource ;
198-
201+ console . log ( 'locale_schema file' , localeFile , locale , item . type )
199202 if ( ! localeData ) {
200203 console . log ( `Skipping empty resource for locale: ${ locale } ` ) ;
201204 continue ;
@@ -235,15 +238,15 @@ export const syncLocales = async (syncMode: SyncMode): Promise<void> => {
235238 }
236239} ;
237240
238- const createLocaleInAPI = async ( data : Record < string , any > , locale : string , type : string ) : Promise < void > => {
241+ const createLocaleInAPI = async ( data : Record < string , any > , locale : string , localeType : string ) : Promise < void > => {
239242 try {
240243 console . log ( `Creating resource in API for locale: ${ locale } ` ) ;
241244 const activeContext = getActiveContext ( ) ;
242245 const response : AxiosResponse = await LocalesService . createLocale ( null , {
243246 theme_id : activeContext . theme_id ,
244247 locale : locale ,
245248 resource : data ,
246- type : type ,
249+ type : localeType ,
247250 template : false ,
248251 } )
249252 console . log ( 'Locale created in API:' , response . data ) ;
0 commit comments