fix(localize): improve placeholder mismatch error message (#35593)
The original error message was confusing since often it is the translation that is at fault not the message. PR Close #35593
This commit is contained in:
		
							parent
							
								
									a7d5c55926
								
							
						
					
					
						commit
						53f059ee8f
					
				| @ -68,7 +68,8 @@ export function translate( | |||||||
|         return message.substitutions[placeholder]; |         return message.substitutions[placeholder]; | ||||||
|       } else { |       } else { | ||||||
|         throw new Error( |         throw new Error( | ||||||
|             `No placeholder found with name ${placeholder} in message ${describeMessage(message)}.`); |             `There is a placeholder name mismatch with the translation provided for the message ${describeMessage(message)}.\n` + | ||||||
|  |             `The translation contains a placeholder with name ${placeholder}, which does not exist in the message.`); | ||||||
|       } |       } | ||||||
|     }) |     }) | ||||||
|   ]; |   ]; | ||||||
|  | |||||||
| @ -88,9 +88,12 @@ describe('utils', () => { | |||||||
| 
 | 
 | ||||||
|     it('should throw an error if the translation contains placeholders that are not in the message', |     it('should throw an error if the translation contains placeholders that are not in the message', | ||||||
|        () => { |        () => { | ||||||
|          expect(() => doTranslate({'abc': 'a{$PH}bc'}, parts `abc`)) |          expect( | ||||||
|  |              () => doTranslate( | ||||||
|  |                  {'abc{$INTERPOLATION}def': 'a{$PH}bc'}, parts `abc${1 + 2}:INTERPOLATION:def`)) | ||||||
|              .toThrowError( |              .toThrowError( | ||||||
|                  'No placeholder found with name PH in message "2674653928643152084" ("abc").'); |                  `There is a placeholder name mismatch with the translation provided for the message "8986527425650846693" ("abc{$INTERPOLATION}def").\n` + | ||||||
|  |                  `The translation contains a placeholder with name PH, which does not exist in the message.`); | ||||||
|        }); |        }); | ||||||
| 
 | 
 | ||||||
|     it('(with identity translations) should render template literals as-is', () => { |     it('(with identity translations) should render template literals as-is', () => { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user