mc/maint/sync-transifex/functions
Slava Zanko 389b55ae6f Add the hint-files synchronization with Transifex.
For upload English hint-file to transifex, type:
cd doc/hints/po && make to-transifex

For download translation from Transifex type:
cd doc/hints/po && make from-transifex && \
    git add ../l10n/mc.hints.* && \
    git commit -s -m 'Update hints files from Transifex'

WARNING! For the functionality you should have installed 'tx' and 'po4a'
utilities. These utilities isn't required for compile and install mc
(you may install these utilities only if you want to interact with Transifex).

Signed-off-by: Slava Zanko <slavazanko@gmail.com>
2013-04-02 11:24:16 +03:00

161 lines
4.7 KiB
Bash

#!/bin/bash
# Midnight Commander - common functions for playing with translations.
#
# Copyright (C) 2013
# The Free Software Foundation, Inc.
#
# Written by:
# Slava Zanko <slavazanko@gmail.com>, 2013
#
# This file is part of the Midnight Commander.
#
# The Midnight Commander is free software: you can redistribute it
# and/or modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the License,
# or (at your option) any later version.
#
# The Midnight Commander is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#*** include section (source functions, for example) *******************
#*** file scope functions **********************************************
# ----------------------------------------------------------------------
## Returns name of working directory.
##
## @param sync_file_name file name which will be sync'ed with Transifex
## @return name of working directory
getSyncDirName() {
sync_file_name=$1; shift
echo "${SYNC_TX_CURRENT_DIR}/var.d/${sync_file_name}"
}
# ----------------------------------------------------------------------
## Returns config file name as full path.
##
## @param sync_file_name file name which will be sync'ed with Transifex
## @param config_file_name config file name
## @return config file name
getConfigFile() {
sync_file_name=$1; shift
config_file_name=$1; shift
echo "${MC_SOURCE_ROOT_DIR}/maint/sync-transifex/config.d/${sync_file_name}/${config_file_name}"
}
# ----------------------------------------------------------------------
## Returns name of working directory. Init the directory, if needed.
##
## @param sync_file_name file name which will be sync'ed with Transifex
## @return name of working directory
initSyncDirIfNeeded() {
sync_file_name=$1; shift
sync_dir_name=$(getSyncDirName "${sync_file_name}")
[ ! -e "${sync_dir_name}" ] && mkdir -p "${sync_dir_name}/.tx"
cp \
"$(getConfigFile ${sync_file_name} 'tx.config')" \
"${sync_dir_name}/.tx/config"
echo "${sync_dir_name}"
}
# ----------------------------------------------------------------------
## Convert file from plain text to POT-file format.
##
## @param source_file path to plain text file
## @param destination_file path to po-file
convertFromTextToPo() {
source_file=$1; shift
destination_file=$1; shift
po4a-gettextize -f text -m "${source_file}" -p "${destination_file}"
}
# ----------------------------------------------------------------------
## Send POT-file to Transifex.
##
## @param tx_work_dir working directory where placed the POT file and
## a config-file for tx utility
sendSourceToTransifex() {
tx_work_dir=$1; shift
tx -r "${tx_work_dir}" push -s
}
# ----------------------------------------------------------------------
## Reveive translations from Transifex.
##
## @param tx_work_dir working directory where placed the POT file and
## a config-file for tx utility
receiveTranslationsFromTransifex() {
tx_work_dir=$1; shift
pushd "${tx_work_dir}" >/dev/null
tx pull --all --force
popd >/dev/null
}
# ----------------------------------------------------------------------
## Create po4a.cfg file.
##
## @param sync_file_name file name which will be sync'ed with Transifex
createPo4A() {
sync_file_name=$1; shift
sync_dir_name=$(getSyncDirName "${sync_file_name}")
[ ! -e "${sync_dir_name}" ] && mkdir -p "${sync_dir_name}"
pushd $sync_dir_name >/dev/null
translations=$(ls *.po| sed -e 's/.po//g'| tr '\n' ' ')
popd >/dev/null
sed -e 's!@srcdir@!'"${MC_SOURCE_ROOT_DIR}"'!g' \
-e 's!@translations@!'"${translations}"'!g' \
"$(getConfigFile ${sync_file_name} 'po4a.cfg')" \
> "${sync_dir_name}/po4a.cfg"
}
# ----------------------------------------------------------------------
## Create po4a.cfg file.
##
## @param sync_dir_name working directory where placed translations
## @param sync_file_name file name which will be sync'ed with Transifex
convertFromPoToText() {
sync_dir_name=$1; shift
sync_file_name=$1; shift
po4a -k 0 -q \
-M UTF-8 -L UTF-8 \
--variable docfile="${sync_file_name}" \
"${sync_dir_name}/po4a.cfg"
}
# ----------------------------------------------------------------------
#*** main code *********************************************************
SYNC_TX_CURRENT_DIR=${SYNC_TX_CURRENT_DIR:-$(pwd)}