aboutsummaryrefslogblamecommitdiff
path: root/scripts/sync-translations.sh
blob: 31d04d5fe4c776af2314b671fb5ca4fb46b0bf32 (plain) (tree)
1
2
3
4
5
6
7
8






                                   
                                                                                                                                      









                                                          
                                                                                                                                               


                                                  
                             
                                                                                                          
                                                                               

    






                                        
#!/usr/bin/env bash
set -Eeuo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
cd ../

TRANSLATIONS=(pt fr eo)

for f in $(find . -type f -name '*.md' | grep -v '^./vendor' | grep -v '^./_site' | grep -v '^./drafts/' | grep -v './templates/'); do
  file_lang="$(grep '^lang: ..$' "$f" | awk '{print $2}')"
  if [[ "$file_lang" = 'en' ]]; then
    for l in "${TRANSLATIONS[@]}"; do
      OUT="locale/$l/LC_MESSAGES/${f%.md}.po"
      mkdir -p "$(dirname "$OUT")"
      md2po "$f" --quiet --save --po-filepath "$OUT"
    done
  fi
done

for f in $(find _tils-not -type f -name '*.md' | grep -v '^./vendor/' | grep -v '^./_site/' | grep -v './drafts/' | grep -v './templates/'); do
  l="$(grep '^lang: ..$' "$f" | awk '{print $2}')"
  if [[ "$l" != 'en' ]]; then
    ref="$(grep '^ref: ' "$f" | awk '{print $2}')"
    # shellcheck disable=2046
    FROM=$(find $(find . -name '*.md' -exec grep -l "^ref: $ref$" {} \;) -exec grep -l '^lang: en$' {} \;)
    po2md "$FROM" --pofiles "locale/$l/LC_MESSAGES/$ref.po" --quiet --save "$f"
  fi
done

if [[ "${1:-}" = '--check' ]]; then
  git diff --quiet || {
    echo 'Translations are not in sync.'
    exit 1
  }
fi