#!/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 -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