/**
 * Replace i18n texts
 */

const StringReplacePlugin = require('string-replace-webpack-plugin');

export default (lang, locale) => ({
	enforce: 'pre',
	test: /\.(tag|js)$/,
	exclude: /node_modules/,
	loader: StringReplacePlugin.replace({
		replacements: [
			{
				pattern: /%i18n:(.+?)%/g, replacement: (_, key) => {
					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.replace(/'/g, '\\\'').replace(/"/g, '\\"');
					}
				}
			}
		]
	})
});