Problem: move many translations from the base_**.properties
file to the impex file for LocalizationEntry
table.
Lets say in the base_**.properties
for German language we have tons of translation like this:
account.confirmation.address.added=Adresse erfolgreich erstellt
account.confirmation.address.deleted=Adresse erfolgreich gelöscht
and we want to move them to an impex file that creates LocalizationEntry
for every one of them.
INSERT_UPDATE LocalizationEntry; code[unique = true]; translation[lang = de]
; account.confirmation.address.added ; "Adresse erfolgreich erstellt"
; account.confirmation.address.deleted ; "Adresse erfolgreich gelöscht"
Why? This way we can impex them once and let customer maintain translations in backoffice and be sure we don’t overwrite them with default values when doing platform update.
We can do it in any text editor that supports Regex replace. In IntelliJ you can do it from the Replace dialog (Ctrl+R).
1. Replace "
with ""

2. In the Regex mode replace
^([a-zA-Z0-9._\-]*)=(.*)
with ; $1 ; "$2"

The first command escapes quotes with double-quotes inside translated strings, the second one encapsulates them into double quotes thus escaping semicolons and other special chars. Solution based on this answer from experts.
Reversed process
To do a reverse operation we will need a little more work:
- In Regex mode replace
^\s*;\s*([a-zA-Z0-9._\-]*+)\s*;\s*"(.*)"[\s;]*$
with$1=$2
(this replaces translations enclosed by quotes) - Also in Regex mode replace
^\s*;\s*([a-zA-Z0-9._\-]*+)\s*;\s*([^;]*)[;]?\s*$
with$1=$2
(this handles the translations written in plain text without quotes) - Replace
""
with"
unescaping quotes