mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 20:36:50 +03:00
389b55ae6f
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>
161 lines
4.7 KiB
Bash
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)}
|