mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-22 16:20:52 +01:00
* src/translate.erl: Support additional files (EJAB-925)
* contrib/extract_translations/extract_translations.erl: Likewise * contrib/extract_translations/prepare-translation.sh: Likewise SVN Revision: 2044
This commit is contained in:
parent
d7829a76ce
commit
5afe7cfafb
@ -1,5 +1,9 @@
|
|||||||
2009-04-27 Badlop <badlop@process-one.net>
|
2009-04-27 Badlop <badlop@process-one.net>
|
||||||
|
|
||||||
|
* src/translate.erl: Support additional files (EJAB-925)
|
||||||
|
* contrib/extract_translations/extract_translations.erl: Likewise
|
||||||
|
* contrib/extract_translations/prepare-translation.sh: Likewise
|
||||||
|
|
||||||
* src/win32_dns.erl: Fix problem parsing some win32 dns (EJAB-927)
|
* src/win32_dns.erl: Fix problem parsing some win32 dns (EJAB-927)
|
||||||
|
|
||||||
* src/cyrsasl_digest.erl: Fix auth verification (EJAB-863)
|
* src/cyrsasl_digest.erl: Fix auth verification (EJAB-863)
|
||||||
|
@ -68,7 +68,7 @@ process(Dir, File, Used) ->
|
|||||||
|
|
||||||
parse_file(Dir, File, Used) ->
|
parse_file(Dir, File, Used) ->
|
||||||
ets:delete_all_objects(vars),
|
ets:delete_all_objects(vars),
|
||||||
case epp:parse_file(File, [Dir, filename:dirname(File)], []) of
|
case epp:parse_file(File, [Dir, filename:dirname(File) | code:get_path()], []) of
|
||||||
{ok, Forms} ->
|
{ok, Forms} ->
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun(F) ->
|
fun(F) ->
|
||||||
@ -80,6 +80,8 @@ parse_file(Dir, File, Used) ->
|
|||||||
|
|
||||||
parse_form(Dir, File, Form, Used) ->
|
parse_form(Dir, File, Form, Used) ->
|
||||||
case Form of
|
case Form of
|
||||||
|
%%{undefined, Something} ->
|
||||||
|
%% io:format("Undefined: ~p~n", [Something]);
|
||||||
{call,
|
{call,
|
||||||
_,
|
_,
|
||||||
{remote, _, {atom, _, translate}, {atom, _, translate}},
|
{remote, _, {atom, _, translate}, {atom, _, translate}},
|
||||||
|
@ -3,16 +3,24 @@
|
|||||||
# Frontend for ejabberd's extract_translations.erl
|
# Frontend for ejabberd's extract_translations.erl
|
||||||
# by Badlop
|
# by Badlop
|
||||||
|
|
||||||
|
# How to create template files for a new language:
|
||||||
|
# NEWLANG=zh
|
||||||
|
# cp msgs/ejabberd.pot msgs/$NEWLANG.po
|
||||||
|
# echo \{\"\",\"\"\}. > msgs/$NEWLANG.msg
|
||||||
|
# ../../extract_translations/prepare-translation.sh -updateall
|
||||||
|
|
||||||
prepare_dirs ()
|
prepare_dirs ()
|
||||||
{
|
{
|
||||||
# Where is Erlang binary
|
# Where is Erlang binary
|
||||||
ERL=`which erl`
|
ERL=`which erl`
|
||||||
|
|
||||||
EJA_DIR=`pwd`/..
|
EJA_SRC_DIR=$EJA_DIR/src/
|
||||||
|
EJA_MSGS_DIR=$EJA_SRC_DIR/msgs/
|
||||||
EXTRACT_DIR=$EJA_DIR/contrib/extract_translations/
|
EXTRACT_DIR=$EJA_DIR/contrib/extract_translations/
|
||||||
EXTRACT_ERL=$EXTRACT_DIR/extract_translations.erl
|
EXTRACT_ERL=$EXTRACT_DIR/extract_translations.erl
|
||||||
EXTRACT_BEAM=$EXTRACT_DIR/extract_translations.beam
|
EXTRACT_BEAM=$EXTRACT_DIR/extract_translations.beam
|
||||||
SRC_DIR=$EJA_DIR/src
|
|
||||||
|
SRC_DIR=$RUN_DIR/src
|
||||||
MSGS_DIR=$SRC_DIR/msgs
|
MSGS_DIR=$SRC_DIR/msgs
|
||||||
|
|
||||||
if !([[ -n $EJA_DIR ]])
|
if !([[ -n $EJA_DIR ]])
|
||||||
@ -74,14 +82,14 @@ extract_lang ()
|
|||||||
extract_lang_all ()
|
extract_lang_all ()
|
||||||
{
|
{
|
||||||
cd $MSGS_DIR
|
cd $MSGS_DIR
|
||||||
for i in *.msg; do
|
for i in $( ls *.msg ) ; do
|
||||||
extract_lang $i;
|
extract_lang $i;
|
||||||
done
|
done
|
||||||
|
|
||||||
echo -e "File\tMissing\tLanguage\t\tLast translator"
|
echo -e "File\tMissing\tLanguage\t\tLast translator"
|
||||||
echo -e "----\t-------\t--------\t\t---------------"
|
echo -e "----\t-------\t--------\t\t---------------"
|
||||||
cd $MSGS_DIR
|
cd $MSGS_DIR
|
||||||
for i in *.msg; do
|
for i in $( ls *.msg ) ; do
|
||||||
MISSING=`cat $i.translate | grep "\", \"\"}." | wc -l`
|
MISSING=`cat $i.translate | grep "\", \"\"}." | wc -l`
|
||||||
LANGUAGE=`grep "Language:" $i.translate | sed 's/% Language: //g'`
|
LANGUAGE=`grep "Language:" $i.translate | sed 's/% Language: //g'`
|
||||||
LASTAUTH=`grep "Author:" $i.translate | head -n 1 | sed 's/% Author: //g'`
|
LASTAUTH=`grep "Author:" $i.translate | head -n 1 | sed 's/% Author: //g'`
|
||||||
@ -140,11 +148,14 @@ find_unused_full ()
|
|||||||
|
|
||||||
extract_lang_srcmsg2po ()
|
extract_lang_srcmsg2po ()
|
||||||
{
|
{
|
||||||
LANG_CODE=$1
|
LANG=$1
|
||||||
|
LANG_CODE=$LANG.$PROJECT
|
||||||
MSGS_PATH=$MSGS_DIR/$LANG_CODE.msg
|
MSGS_PATH=$MSGS_DIR/$LANG_CODE.msg
|
||||||
PO_PATH=$MSGS_DIR/$LANG_CODE.po
|
PO_PATH=$MSGS_DIR/$LANG_CODE.po
|
||||||
|
|
||||||
$ERL -pa $EXTRACT_DIR -pa $SRC_DIR -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$PO_PATH.1
|
echo $MSGS_PATH
|
||||||
|
|
||||||
|
$ERL -pa $EXTRACT_DIR -pa $SRC_DIR -pa $EJA_SRC_DIR -pa /lib/ejabberd/include -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$PO_PATH.1
|
||||||
sed -e 's/ \[\]$/ \"\"/g;' $PO_PATH.1 > $PO_PATH.2
|
sed -e 's/ \[\]$/ \"\"/g;' $PO_PATH.1 > $PO_PATH.2
|
||||||
msguniq --sort-by-file $PO_PATH.2 --output-file=$PO_PATH
|
msguniq --sort-by-file $PO_PATH.2 --output-file=$PO_PATH
|
||||||
|
|
||||||
@ -153,7 +164,7 @@ extract_lang_srcmsg2po ()
|
|||||||
|
|
||||||
extract_lang_src2pot ()
|
extract_lang_src2pot ()
|
||||||
{
|
{
|
||||||
LANG_CODE=ejabberd
|
LANG_CODE=$PROJECT
|
||||||
MSGS_PATH=$MSGS_DIR/$LANG_CODE.msg
|
MSGS_PATH=$MSGS_DIR/$LANG_CODE.msg
|
||||||
POT_PATH=$MSGS_DIR/$LANG_CODE.pot
|
POT_PATH=$MSGS_DIR/$LANG_CODE.pot
|
||||||
|
|
||||||
@ -163,19 +174,30 @@ extract_lang_src2pot ()
|
|||||||
echo "" >>$MSGS_PATH
|
echo "" >>$MSGS_PATH
|
||||||
|
|
||||||
cd $SRC_DIR
|
cd $SRC_DIR
|
||||||
$ERL -pa $EXTRACT_DIR -pa $SRC_DIR -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$POT_PATH.1
|
$ERL -pa $EXTRACT_DIR -pa $SRC_DIR -pa $EJA_SRC_DIR -pa /lib/ejabberd/include -noinput -noshell -s extract_translations -s init stop -extra -srcmsg2po . $MSGS_PATH >$POT_PATH.1
|
||||||
sed -e 's/ \[\]$/ \"\"/g;' $POT_PATH.1 > $POT_PATH.2
|
sed -e 's/ \[\]$/ \"\"/g;' $POT_PATH.1 > $POT_PATH.2
|
||||||
|
|
||||||
|
#msguniq --sort-by-file $POT_PATH.2 $EJA_MSGS_DIR --output-file=$POT_PATH
|
||||||
msguniq --sort-by-file $POT_PATH.2 --output-file=$POT_PATH
|
msguniq --sort-by-file $POT_PATH.2 --output-file=$POT_PATH
|
||||||
|
|
||||||
rm $POT_PATH.*
|
rm $POT_PATH.*
|
||||||
rm $MSGS_PATH
|
rm $MSGS_PATH
|
||||||
|
|
||||||
|
# If the project is a specific module, not the main ejabberd
|
||||||
|
if [[ $PROJECT != ejabberd ]] ; then
|
||||||
|
# Remove from project.pot the strings that are already present in the general ejabberd
|
||||||
|
EJABBERD_MSG_FILE=$EJA_MSGS_DIR/es.po # This is just some file with translated strings
|
||||||
|
POT_PATH_TEMP=$POT_PATH.temp
|
||||||
|
msgattrib --set-obsolete --only-file=$EJABBERD_MSG_FILE -o $POT_PATH_TEMP $POT_PATH
|
||||||
|
mv $POT_PATH_TEMP $POT_PATH
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
extract_lang_popot2po ()
|
extract_lang_popot2po ()
|
||||||
{
|
{
|
||||||
LANG_CODE=$1
|
LANG_CODE=$1
|
||||||
PO_PATH=$MSGS_DIR/$LANG_CODE.po
|
PO_PATH=$MSGS_DIR/$LANG_CODE.po
|
||||||
POT_PATH=$MSGS_DIR/ejabberd.pot
|
POT_PATH=$MSGS_DIR/$PROJECT.pot
|
||||||
|
|
||||||
msgmerge $PO_PATH $POT_PATH >$PO_PATH.translate 2>/dev/null
|
msgmerge $PO_PATH $POT_PATH >$PO_PATH.translate 2>/dev/null
|
||||||
mv $PO_PATH.translate $PO_PATH
|
mv $PO_PATH.translate $PO_PATH
|
||||||
@ -222,7 +244,7 @@ extract_lang_updateall ()
|
|||||||
echo ""
|
echo ""
|
||||||
echo -e "File Missing Language Last translator"
|
echo -e "File Missing Language Last translator"
|
||||||
echo -e "---- ------- -------- ---------------"
|
echo -e "---- ------- -------- ---------------"
|
||||||
for i in *.msg; do
|
for i in $( ls *.msg ) ; do
|
||||||
LANG_CODE=${i%.msg}
|
LANG_CODE=${i%.msg}
|
||||||
echo -n $LANG_CODE | awk '{printf "%-6s", $1 }'
|
echo -n $LANG_CODE | awk '{printf "%-6s", $1 }'
|
||||||
|
|
||||||
@ -266,43 +288,62 @@ translation_instructions ()
|
|||||||
echo " $MSGS_PATH"
|
echo " $MSGS_PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare_dirs
|
EJA_DIR=`pwd`/..
|
||||||
case "$1" in
|
RUN_DIR=`pwd`/..
|
||||||
-lang)
|
PROJECT=ejabberd
|
||||||
LANGU=$2
|
|
||||||
extract_lang $LANGU
|
while [ $# -ne 0 ] ; do
|
||||||
|
PARAM=$1
|
||||||
shift
|
shift
|
||||||
|
case $PARAM in
|
||||||
|
--) break ;;
|
||||||
|
-project)
|
||||||
|
PROJECT=$1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-ejadir)
|
||||||
|
EJA_DIR=$1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-rundir)
|
||||||
|
RUN_DIR=$1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-lang)
|
||||||
|
LANGU=$1
|
||||||
|
prepare_dirs
|
||||||
|
extract_lang $LANGU
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
-langall)
|
-langall)
|
||||||
|
prepare_dirs
|
||||||
extract_lang_all
|
extract_lang_all
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-srcmsg2po)
|
-srcmsg2po)
|
||||||
LANG_CODE=$2
|
LANG_CODE=$1
|
||||||
|
prepare_dirs
|
||||||
extract_lang_srcmsg2po $LANG_CODE
|
extract_lang_srcmsg2po $LANG_CODE
|
||||||
shift
|
shift
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-popot2po)
|
-popot2po)
|
||||||
LANG_CODE=$2
|
LANG_CODE=$1
|
||||||
|
prepare_dirs
|
||||||
extract_lang_popot2po $LANG_CODE
|
extract_lang_popot2po $LANG_CODE
|
||||||
shift
|
shift
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-src2pot)
|
-src2pot)
|
||||||
|
prepare_dirs
|
||||||
extract_lang_src2pot
|
extract_lang_src2pot
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-po2msg)
|
-po2msg)
|
||||||
LANG_CODE=$2
|
LANG_CODE=$1
|
||||||
|
prepare_dirs
|
||||||
extract_lang_po2msg $LANG_CODE
|
extract_lang_po2msg $LANG_CODE
|
||||||
shift
|
shift
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-updateall)
|
-updateall)
|
||||||
|
prepare_dirs
|
||||||
extract_lang_updateall
|
extract_lang_updateall
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
@ -318,4 +359,5 @@ case "$1" in
|
|||||||
echo " ./prepare-translation.sh -lang es.msg"
|
echo " ./prepare-translation.sh -lang es.msg"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
done
|
||||||
|
@ -69,10 +69,13 @@ load_dir(Dir) ->
|
|||||||
end, Files),
|
end, Files),
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun(FN) ->
|
fun(FN) ->
|
||||||
L = ascii_tolower(
|
LP = string:substr(FN, 1, string:len(FN) - 4),
|
||||||
list_to_binary(
|
L1 = case string:tokens(LP, ".") of
|
||||||
string:substr(FN, 1, string:len(FN) - 4))),
|
[Language] -> Language;
|
||||||
load_file(L, Dir ++ "/" ++ FN)
|
[Language, _Project] -> Language
|
||||||
|
end,
|
||||||
|
L2 = ascii_tolower(list_to_binary(L1)),
|
||||||
|
load_file(L2, Dir ++ "/" ++ FN)
|
||||||
end, MsgFiles),
|
end, MsgFiles),
|
||||||
ok;
|
ok;
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
|
Loading…
Reference in New Issue
Block a user