mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-10-29 04:24:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1,008 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1,008 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * Replace i18n texts
 | |
|  */
 | |
| 
 | |
| const StringReplacePlugin = require('string-replace-webpack-plugin');
 | |
| 
 | |
| export default (lang, locale) => {
 | |
| 	function get(key: string) {
 | |
| 		let text = locale;
 | |
| 
 | |
| 		// Check the key existance
 | |
| 		const error = key.split('.').some(k => {
 | |
| 			if (text.hasOwnProperty(k)) {
 | |
| 				text = text[k];
 | |
| 				return false;
 | |
| 			} else {
 | |
| 				return true;
 | |
| 			}
 | |
| 		});
 | |
| 
 | |
| 		if (error) {
 | |
| 			console.warn(`key '${key}' not found in '${lang}'`);
 | |
| 			return key; // Fallback
 | |
| 		} else {
 | |
| 			return text;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	return {
 | |
| 		enforce: 'pre',
 | |
| 		test: /\.(tag|js|ts)$/,
 | |
| 		exclude: /node_modules/,
 | |
| 		loader: StringReplacePlugin.replace({
 | |
| 			replacements: [{
 | |
| 				pattern: /"%i18n:(.+?)%"/g, replacement: (_, key) => {
 | |
| 					return '"' + get(key).replace(/"/g, '\\"') + '"';
 | |
| 				}
 | |
| 			}, {
 | |
| 				pattern: /'%i18n:(.+?)%'/g, replacement: (_, key) => {
 | |
| 					return '\'' + get(key).replace(/'/g, '\\\'') + '\'';
 | |
| 				}
 | |
| 			}, {
 | |
| 				pattern: /%i18n:(.+?)%/g, replacement: (_, key) => {
 | |
| 					return get(key);
 | |
| 				}
 | |
| 			}]
 | |
| 		})
 | |
| 	};
 | |
| };
 |