I have a huge file (it is a translation file for WordPress LocoTranslate plugin), and I need to translate what is in the msgstr
quotes from what is in the msgid
quotes. For instance:
#: ../../app/Models/SettingsAPI.php:105,
#: ../../app/Controllers/Settings/AdminSettings.php:354
msgid "Your settings have been saved."
msgstr "Tus opciones fueron guardadas."
#: ../../app/Models/SettingsAPI.php:695,
#: ../../app/Controllers/Admin/Meta/AddTermMetaField.php:357,
#: ../../app/Controllers/Admin/Meta/AddTermMetaField.php:469
msgid "Add Image"
msgstr "Agregar Imagen"
I have tried using Google Sheets and the Google Translate API, but it is completely inaccurate, so I decided to go small at first and just transpose the string like:
#: ../../app/Models/SettingsAPI.php:105,
#: ../../app/Controllers/Settings/AdminSettings.php:354
msgid "Your settings have been saved."
msgstr "Your settings have been saved."
I thought some text editor like Notepad could do this magic with a regular expression msgid \"(.*)\"
, but I wouldn't know how to replace the next line (msgstr.*
) entirely.
I am pretty sure this question had to be made before actually making the tool to help me translate the file, but I was not that good with Notepad capabilities. Also, the tool does not work as expected.
Any suggestions?
CodePudding user response:
In Notepad do this:
- Find what:
^(msgid ")(.*)("\s msgstr ").*(")
- Replace with:
$1$2$3$2$4
- check
(o)
Regular expression, uncheck[_]
, matches newline
The regex takes into account escaped "
in the strings
CodePudding user response:
(msgid .*) to keep
\n newline
.* to replace
.replace(/(msgid .*)\n.*/g, '$1')