support for combining parameters and apostrophe

This commit is contained in:
Dragan Ivanovic 2022-12-16 10:16:34 +01:00
parent c885162d8d
commit 311744ef64
2 changed files with 4 additions and 4 deletions

View file

@ -165,7 +165,7 @@ public class TranslationProvider {
if (parameters.length == 0) { if (parameters.length == 0) {
return textString; return textString;
} else { } else {
return MessageFormat.format(textString, parameters); return MessageFormat.format(textString.replaceAll("''", "'").replaceAll("'", "''"), parameters);
} }
} }

View file

@ -67,7 +67,7 @@ public class I18nStringTemplateModel implements TemplateMethodModelEx,
if(isOnlineTranslationsEnabled()) { if(isOnlineTranslationsEnabled()) {
return getOnlineTranslationsFormattedMessage(textString, unwrappedArgs); return getOnlineTranslationsFormattedMessage(textString, unwrappedArgs);
} else { } else {
return MessageFormat.format(textString, unwrappedArgs); return MessageFormat.format(textString.replaceAll("''", "'").replaceAll("'", "''"), unwrappedArgs);
} }
} catch (Exception e) { } catch (Exception e) {
String message = "Can't format '" + key + "', wrong argument types: " + args String message = "Can't format '" + key + "', wrong argument types: " + args
@ -83,13 +83,13 @@ public class I18nStringTemplateModel implements TemplateMethodModelEx,
* and combines preProcessed string back to be used with online translations. * and combines preProcessed string back to be used with online translations.
* Substitutes arguments in message which is a part of preProcessed string * Substitutes arguments in message which is a part of preProcessed string
* @param preProcessed String "startSep + key + intSep + textString + intSep + message + endSep" * @param preProcessed String "startSep + key + intSep + textString + intSep + message + endSep"
* @param arguments that should be listed before message and substituted in the message itself * @param args that should be listed before message and substituted in the message itself
* @return * @return
*/ */
private String getOnlineTranslationsFormattedMessage(String preProcessed, Object[] args) { private String getOnlineTranslationsFormattedMessage(String preProcessed, Object[] args) {
String[] parts = preProcessed.split(I18nBundle.INT_SEP); String[] parts = preProcessed.split(I18nBundle.INT_SEP);
final int messageIndex = parts.length -1; final int messageIndex = parts.length -1;
String message = MessageFormat.format(parts[messageIndex], args); String message = MessageFormat.format(parts[messageIndex].replaceAll("''", "'").replaceAll("'", "''"), args);
String[] arguments = convertToArrayOfStrings(args); String[] arguments = convertToArrayOfStrings(args);
parts[messageIndex] = ""; parts[messageIndex] = "";
String result = String.join(I18nBundle.INT_SEP, parts) + String result = String.join(I18nBundle.INT_SEP, parts) +