You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
// this file is a weird one as it is used by both sides of electron at the same time
 | 
						|
 | 
						|
import { isEmpty } from 'lodash';
 | 
						|
import type { LocalizerDictionary, SetupI18nReturnType } from '../../types/localizer';
 | 
						|
import { getMessage } from './functions/getMessage';
 | 
						|
import { i18nLog, setInitialLocale } from './shared';
 | 
						|
import { CrowdinLocale } from '../../localization/constants';
 | 
						|
 | 
						|
/**
 | 
						|
 * Sets up the i18n function with the provided locale and messages.
 | 
						|
 *
 | 
						|
 * @param params - An object containing optional parameters.
 | 
						|
 * @param params.crowdinLocale - The locale to use for translations (crowdin)
 | 
						|
 * @param params.translationDictionary - A dictionary of localized messages
 | 
						|
 *
 | 
						|
 * @returns A function that retrieves a localized message string, substituting variables where necessary.
 | 
						|
 */
 | 
						|
export const setupI18n = ({
 | 
						|
  crowdinLocale,
 | 
						|
  translationDictionary,
 | 
						|
}: {
 | 
						|
  crowdinLocale: CrowdinLocale;
 | 
						|
  translationDictionary: LocalizerDictionary;
 | 
						|
}): SetupI18nReturnType => {
 | 
						|
  if (!crowdinLocale) {
 | 
						|
    throw new Error(`crowdinLocale not provided in i18n setup`);
 | 
						|
  }
 | 
						|
 | 
						|
  if (!translationDictionary || isEmpty(translationDictionary)) {
 | 
						|
    throw new Error('translationDictionary was not provided');
 | 
						|
  }
 | 
						|
 | 
						|
  setInitialLocale(crowdinLocale, translationDictionary);
 | 
						|
 | 
						|
  i18nLog(`Setup Complete with crowdinLocale: ${crowdinLocale}`);
 | 
						|
 | 
						|
  return getMessage;
 | 
						|
};
 |