Update gettext:updated_check
regenerate pot file
Making the `gettext:updated_check` by completely regenerating the gitlab.pot. This avoids an issue where `gettext:find` would not pick up on changes if the file isn't removed first.
This commit is contained in:
parent
0ed8f3490e
commit
f3fbf50ad8
2 changed files with 24 additions and 18 deletions
|
@ -281,7 +281,7 @@ Now that the new content is marked for translation, we need to update the PO
|
|||
files with the following command:
|
||||
|
||||
```sh
|
||||
bin/rake gettext:find
|
||||
bin/rake gettext:regenerate
|
||||
```
|
||||
|
||||
This command will update the `locale/gitlab.pot` file with the newly externalized
|
||||
|
@ -292,16 +292,6 @@ file in. Once the changes are on master, they will be picked up by
|
|||
If there are merge conflicts in the `gitlab.pot` file, you can delete the file
|
||||
and regenerate it using the same command. Confirm that you are not deleting any strings accidentally by looking over the diff.
|
||||
|
||||
The command also updates the translation files for each language: `locale/*/gitlab.po`
|
||||
These changes can be discarded, the language files will be updated by Crowdin
|
||||
automatically.
|
||||
|
||||
Discard all of them at once like this:
|
||||
|
||||
```sh
|
||||
git checkout locale/*/gitlab.po
|
||||
```
|
||||
|
||||
### Validating PO files
|
||||
|
||||
To make sure we keep our translation files up to date, there's a linter that is
|
||||
|
|
|
@ -19,6 +19,23 @@ namespace :gettext do
|
|||
Rake::Task['gettext:po_to_json'].invoke
|
||||
end
|
||||
|
||||
task :regenerate do
|
||||
# Remove all translated files, this speeds up finding
|
||||
FileUtils.rm Dir['locale/**/gitlab.*']
|
||||
# remove the `pot` file to ensure it's completely regenerated
|
||||
FileUtils.rm_f 'locale/gitlab.pot'
|
||||
|
||||
Rake::Task['gettext:find'].invoke
|
||||
|
||||
# leave only the required changes.
|
||||
`git checkout -- locale/*/gitlab.po`
|
||||
|
||||
puts <<~MSG
|
||||
All done. Please commit the changes to `locale/gitlab.pot`.
|
||||
|
||||
MSG
|
||||
end
|
||||
|
||||
desc 'Lint all po files in `locale/'
|
||||
task lint: :environment do
|
||||
require 'simple_po_parser'
|
||||
|
@ -50,13 +67,12 @@ namespace :gettext do
|
|||
end
|
||||
|
||||
task :updated_check do
|
||||
pot_file = 'locale/gitlab.pot'
|
||||
# Removing all pre-translated files speeds up `gettext:find` as the
|
||||
# files don't need to be merged.
|
||||
# Having `LC_MESSAGES/gitlab.mo files present also confuses the output.
|
||||
FileUtils.rm Dir['locale/**/gitlab.*']
|
||||
|
||||
# Make sure we start out with a clean pot.file
|
||||
`git checkout -- locale/gitlab.pot`
|
||||
FileUtils.rm_f pot_file
|
||||
|
||||
# `gettext:find` writes touches to temp files to `stderr` which would cause
|
||||
# `static-analysis` to report failures. We can ignore these.
|
||||
|
@ -64,18 +80,18 @@ namespace :gettext do
|
|||
Rake::Task['gettext:find'].invoke
|
||||
end
|
||||
|
||||
pot_diff = `git diff -- locale/gitlab.pot`.strip
|
||||
pot_diff = `git diff -- #{pot_file} | grep -E '^(\\+|-)msgid'`.strip
|
||||
|
||||
# reset the locale folder for potential next tasks
|
||||
`git checkout -- locale`
|
||||
|
||||
if pot_diff.present?
|
||||
raise <<~MSG
|
||||
Newly translated strings found, please add them to `gitlab.pot` by running:
|
||||
Newly translated strings found, please add them to `#{pot_file}` by running:
|
||||
|
||||
rm locale/**/gitlab.*; bin/rake gettext:find; git checkout -- locale/*/gitlab.po
|
||||
bin/rake gettext:regenerate
|
||||
|
||||
Then commit and push the resulting changes to `locale/gitlab.pot`.
|
||||
Then commit and push the resulting changes to `#{pot_file}`.
|
||||
|
||||
The diff was:
|
||||
|
||||
|
|
Loading…
Reference in a new issue