mirror of https://github.com/vector-im/riot-web
				
				
				
			Log if no match is found
							parent
							
								
									f8660de52d
								
							
						
					
					
						commit
						ae252f7e59
					
				|  | @ -37,7 +37,7 @@ export function _td(s) { | |||
| 
 | ||||
| // Wrapper for counterpart's translation function so that it handles nulls and undefineds properly
 | ||||
| // Takes the same arguments as counterpart.translate()
 | ||||
| function safe_counterpart_translate(...args) { | ||||
| function safeCounterpartTranslate(...args) { | ||||
|     // Horrible hack to avoid https://github.com/vector-im/riot-web/issues/4191
 | ||||
|     // The interpolation library that counterpart uses does not support undefined/null
 | ||||
|     // values and instead will throw an error. This is a problem since everywhere else
 | ||||
|  | @ -48,11 +48,11 @@ function safe_counterpart_translate(...args) { | |||
|     if (args[1] && typeof args[1] === 'object') { | ||||
|         Object.keys(args[1]).forEach((k) => { | ||||
|             if (args[1][k] === undefined) { | ||||
|                 console.warn("safe_counterpart_translate called with undefined interpolation name: " + k); | ||||
|                 console.warn("safeCounterpartTranslate called with undefined interpolation name: " + k); | ||||
|                 args[1][k] = 'undefined'; | ||||
|             } | ||||
|             if (args[1][k] === null) { | ||||
|                 console.warn("safe_counterpart_translate called with null interpolation name: " + k); | ||||
|                 console.warn("safeCounterpartTranslate called with null interpolation name: " + k); | ||||
|                 args[1][k] = 'null'; | ||||
|             } | ||||
|         }); | ||||
|  | @ -83,7 +83,7 @@ export function _t(text, variables, tags) { | |||
|     const args = Object.assign({ interpolate: false }, variables); | ||||
| 
 | ||||
|     // The translation returns text so there's no XSS vector here (no unsafe HTML, no code execution)
 | ||||
|     const translated = safe_counterpart_translate(text, args); | ||||
|     const translated = safeCounterpartTranslate(text, args); | ||||
| 
 | ||||
|     return substitute(translated, variables, tags); | ||||
| } | ||||
|  | @ -142,7 +142,15 @@ export function replaceByRegexes(text, mapping) { | |||
|         const match = inputText.match(regexp); | ||||
|         if (!match) { | ||||
|             output.push(inputText); // Push back input
 | ||||
|             continue; // Missing matches is entirely possible, because translation might change things
 | ||||
| 
 | ||||
|             // Missing matches is entirely possible because you might choose to show some variables only in the case
 | ||||
|             // of e.g. plurals. It's still a bit suspicious, and could be due to an error, so log it.
 | ||||
|             // However, not showing count is so common that it's not worth logging. And other commonly unused variables
 | ||||
|             // here, if there are any.
 | ||||
|             if (regexpString !== '%\\(count\\)s') { | ||||
|                 console.log(`Could not find ${regexp} in ${inputText}`); | ||||
|             } | ||||
|             continue; | ||||
|         } | ||||
|         const capturedGroups = match.slice(2); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Stefan Parviainen
						Stefan Parviainen