We put all the translations in a spreadsheet, https://docs.google.com/spreadsheets/d/1FoYdyEraEQuWofzbYCDP.... We didn't like the idea of storing in any more complex than a csv file.
All changes are shown to us in a diff before we merge, the csv is then downloaded and the i18n files created automatically after we merge the branch.
We've never had a single instance of abuse in over 10 years.