#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: i18n i18n -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message Look at the mappings file provided via STDIN and notify all of the files of all of their translations, so that they can include it in their header. Examples: Generate it from "po/i18n.mappings": $ i18n < po/i18n.mappings EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 'h' flag; do case "$flag" in h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) awk ' { from = $3 idx[from][0] = "en:" from for (i = 4; i <= NF; i++) { to = $i idx[from][length(idx[from])] = to } } END { for (k1 in idx) { split(idx[k1][0], b, /:/) base = b[2] ".i18n" for (k2 in idx[k1]) { split(idx[k1][k2], f, /:/) file = f[2] ".i18n" if (k2 == 0) { for (k3 in idx[k1]) { "url-for " f[2] | getline url print idx[k1][k3] ":" url > file } } else { ret = system("cp " base " " file) if (ret) { exit ret } } } } } '