build: create and install .mo translation files

If --enable-translation was specified to configure, build and install
.mo files for the selected message language(s). The languages enabled
can be chosen with the --language-msg option; by default all available
ones will be installed. The .po source files for available languages
are seached under the po/ subdirectory; at the moment that
subdirectory is not included in the sources so no languages will be
enabled unless you add the actual translations before running
configure.

The .mo files are created in the locale/ subdirectory when compiling.
By default MPlayer will only look for them in the installed location,
so the newly compiled .mo files will not be found if you run MPlayer
without installing. You can set the MPLAYER_LOCALEDIR environment
variable to point to the locale/ directory to test the translations
without installing.
This commit is contained in:
Uoti Urpala 2010-03-28 14:49:09 +03:00
parent faea4ef439
commit 97db8519c8
3 changed files with 56 additions and 8 deletions

View File

@ -11114,6 +11114,10 @@ A value of "noconv" means no conversion.
Directory where MPlayer looks for user settings. Directory where MPlayer looks for user settings.
. .
.TP .TP
.B MPLAYER_LOCALEDIR
Directory where MPlayer looks for gettext translation files (if enabled).
.
.TP
.B MPLAYER_VERBOSE (also see \-v and \-msglevel) .B MPLAYER_VERBOSE (also see \-v and \-msglevel)
Set the initial verbosity level across all message modules (default: 0). Set the initial verbosity level across all message modules (default: 0).
The resulting verbosity corresponds to that of \-msglevel 5 plus the The resulting verbosity corresponds to that of \-msglevel 5 plus the

View File

@ -694,7 +694,9 @@ ALL_PRG-$(MPLAYER) += mplayer$(EXESUF)
ALL_PRG-$(MENCODER) += mencoder$(EXESUF) ALL_PRG-$(MENCODER) += mencoder$(EXESUF)
INSTALL_TARGETS-$(MENCODER) += install-mencoder install-mencoder-man INSTALL_TARGETS-$(MENCODER) += install-mencoder install-mencoder-man
INSTALL_TARGETS-$(MPLAYER) += install-mplayer install-mplayer-man INSTALL_TARGETS-$(MPLAYER) += install-mplayer \
install-mplayer-man \
install-mplayer-msg
DIRS = . \ DIRS = . \
input \ input \
@ -733,6 +735,8 @@ DIRS = . \
TOOLS \ TOOLS \
vidix \ vidix \
MOFILES := $(MSG_LANGS:%=locale/%/LC_MESSAGES/mplayer.mo)
ALLHEADERS = $(foreach dir,$(DIRS),$(wildcard $(dir)/*.h)) ALLHEADERS = $(foreach dir,$(DIRS),$(wildcard $(dir)/*.h))
ADDSUFFIXES = $(foreach suf,$(1),$(addsuffix $(suf),$(2))) ADDSUFFIXES = $(foreach suf,$(1),$(addsuffix $(suf),$(2)))
@ -741,7 +745,7 @@ ADD_ALL_EXESUFS = $(1) $(call ADDSUFFIXES,$(EXESUFS_ALL),$(1))
###### generic rules ####### ###### generic rules #######
all: $(ALL_PRG-yes) all: $(ALL_PRG-yes) locales
%.o: %.c %.o: %.c
$(CC) $(CFLAGS) -c -o $@ -MD -MP -MF $*.d $< $(CC) $(CFLAGS) -c -o $@ -MD -MP -MF $*.d $<
@ -789,6 +793,12 @@ version.h: version.sh
%(EXESUF): %.c %(EXESUF): %.c
locales: $(MOFILES)
locale/%/LC_MESSAGES/mplayer.mo: po/%.po
mkdir -p $(dir $@)
msgfmt -c -o $@ $<
###### dependency declarations / specific CFLAGS ###### ###### dependency declarations / specific CFLAGS ######
@ -852,6 +862,7 @@ install-%: %$(EXESUF) install-dirs
install-mencoder-man: $(foreach lang,$(MAN_LANGS),install-mencoder-man-$(lang)) install-mencoder-man: $(foreach lang,$(MAN_LANGS),install-mencoder-man-$(lang))
install-mplayer-man: $(foreach lang,$(MAN_LANGS),install-mplayer-man-$(lang)) install-mplayer-man: $(foreach lang,$(MAN_LANGS),install-mplayer-man-$(lang))
install-mplayer-msg: $(foreach lang,$(MSG_LANGS),install-mplayer-msg-$(lang))
install-mencoder-man-en: install-mplayer-man-en install-mencoder-man-en: install-mplayer-man-en
cd $(MANDIR)/man1 && ln -sf mplayer.1 mencoder.1 cd $(MANDIR)/man1 && ln -sf mplayer.1 mencoder.1
@ -874,6 +885,14 @@ endef
$(foreach lang,$(filter-out en,$(MAN_LANG_ALL)),$(eval $(MENCODER_MAN_RULE))) $(foreach lang,$(filter-out en,$(MAN_LANG_ALL)),$(eval $(MENCODER_MAN_RULE)))
$(foreach lang,$(filter-out en,$(MAN_LANG_ALL)),$(eval $(MPLAYER_MAN_RULE))) $(foreach lang,$(filter-out en,$(MAN_LANG_ALL)),$(eval $(MPLAYER_MAN_RULE)))
define MPLAYER_MSG_RULE
install-mplayer-msg-$(lang):
if test ! -d $(LOCALEDIR)/$(lang)/LC_MESSAGES ; then $(INSTALL) -d $(LOCALEDIR)/$(lang)/LC_MESSAGES ; fi
$(INSTALL) -m 644 locale/$(lang)/LC_MESSAGES/mplayer.mo $(LOCALEDIR)/$(lang)/LC_MESSAGES/
endef
$(foreach lang,$(MSG_LANG_ALL),$(eval $(MPLAYER_MSG_RULE)))
uninstall: uninstall:
rm -f $(BINDIR)/mplayer$(EXESUF) $(BINDIR)/gmplayer$(EXESUF) rm -f $(BINDIR)/mplayer$(EXESUF) $(BINDIR)/gmplayer$(EXESUF)
rm -f $(BINDIR)/mencoder$(EXESUF) rm -f $(BINDIR)/mencoder$(EXESUF)
@ -882,6 +901,7 @@ uninstall:
rm -f $(prefix)/share/applications/mplayer.desktop rm -f $(prefix)/share/applications/mplayer.desktop
rm -f $(MANDIR)/man1/mplayer.1 $(MANDIR)/man1/mencoder.1 rm -f $(MANDIR)/man1/mplayer.1 $(MANDIR)/man1/mencoder.1
rm -f $(foreach lang,$(MAN_LANGS),$(foreach man,mplayer.1 mencoder.1,$(MANDIR)/$(lang)/man1/$(man))) rm -f $(foreach lang,$(MAN_LANGS),$(foreach man,mplayer.1 mencoder.1,$(MANDIR)/$(lang)/man1/$(man)))
rm -f $(foreach lang,$(MSG_LANGS),$(LOCALEDIR)/$(lang)/LC_MESSAGES/mplayer.1)
clean: clean:
-rm -f $(call ADD_ALL_DIRS,/*.o /*.a /*.ho /*~) -rm -f $(call ADD_ALL_DIRS,/*.o /*.a /*.ho /*~)

36
configure vendored
View File

@ -197,6 +197,8 @@ case $(echo -n) in
*) _echo_n='-n ' _echo_c= ;; # BSD echo *) _echo_n='-n ' _echo_c= ;; # BSD echo
esac esac
msg_lang_all=''
ls po/*.po >/dev/null 2>&1 && msg_lang_all=$(echo po/*.po | sed -e 's:po/\([^[:space:]]*\)\.po:\1:g')
man_lang_all=$(echo DOCS/man/??/mplayer.1 DOCS/man/??_??/mplayer.1 | sed -e "s:DOCS/man/\(..\)/mplayer.1:\1:g" -e "s:DOCS/man/\(.._..\)/mplayer.1:\1:g") man_lang_all=$(echo DOCS/man/??/mplayer.1 DOCS/man/??_??/mplayer.1 | sed -e "s:DOCS/man/\(..\)/mplayer.1:\1:g" -e "s:DOCS/man/\(.._..\)/mplayer.1:\1:g")
doc_lang_all=$(echo DOCS/xml/??/ DOCS/xml/??_??/ | sed -e "s:DOCS/xml/\(..\)/:\1:g" -e "s:DOCS/xml/\(.._..\)/:\1:g") doc_lang_all=$(echo DOCS/xml/??/ DOCS/xml/??_??/ | sed -e "s:DOCS/xml/\(..\)/:\1:g" -e "s:DOCS/xml/\(.._..\)/:\1:g")
@ -402,14 +404,18 @@ Language options:
--charset=charset convert the console messages to this character set --charset=charset convert the console messages to this character set
--language-doc=lang language to use for the documentation [en] --language-doc=lang language to use for the documentation [en]
--language-man=lang language to use for the man pages [en] --language-man=lang language to use for the man pages [en]
--language-msg=lang extra languages for program messages [all]
--language=lang default language to use [en] --language=lang default language to use [en]
Specific options override --language. You can pass a list of languages separated Specific options override --language. You can pass a list of languages separated
by whitespace or commas instead of a single language. Nonexisting translations by whitespace or commas instead of a single language. Nonexisting translations
will be dropped from each list. All documentation and man page translations will be dropped from each list. All translations available in the list will be
available in the list will be installed, for the messages the first available installed. The value "all" will activate all translations. The LINGUAS
translation will be used. The value "all" will activate all translations. The environment variable is honored. In all cases the fallback is English.
LINGUAS environment variable is honored. In all cases the fallback is English. The program always supports English-language output; additional message
Available values are: all $man_lang_all languages are only installed if --enable-translation is also specified.
Available values for --language-doc are: all $doc_lang_all
Available values for --language-man are: all $man_lang_all
Available values for --language-msg are: all $msg_lang_all
Miscellaneous options: Miscellaneous options:
--enable-runtime-cpudetection enable runtime CPU detection [disable] --enable-runtime-cpudetection enable runtime CPU detection [disable]
@ -819,6 +825,9 @@ for ac_option do
--language-man=*) --language-man=*)
language_man=$(echo $ac_option | cut -d '=' -f 2) language_man=$(echo $ac_option | cut -d '=' -f 2)
;; ;;
--language-msg=*)
language_msg=$(echo $ac_option | cut -d '=' -f 2)
;;
--language=*) --language=*)
language=$(echo $ac_option | cut -d '=' -f 2) language=$(echo $ac_option | cut -d '=' -f 2)
;; ;;
@ -2843,11 +2852,18 @@ echocheck "language"
test -z "$language" && language=$LINGUAS test -z "$language" && language=$LINGUAS
test -z "$language_doc" && language_doc=$language test -z "$language_doc" && language_doc=$language
test -z "$language_man" && language_man=$language test -z "$language_man" && language_man=$language
test -z "$language_msg" && language_msg="all"
language_doc=$(echo $language_doc | tr , " ") language_doc=$(echo $language_doc | tr , " ")
language_man=$(echo $language_man | tr , " ") language_man=$(echo $language_man | tr , " ")
language_msg=$(echo $language_msg | tr , " ")
test "$language_doc" = "all" && language_doc=$doc_lang_all test "$language_doc" = "all" && language_doc=$doc_lang_all
test "$language_man" = "all" && language_man=$man_lang_all test "$language_man" = "all" && language_man=$man_lang_all
test "$language_msg" = "all" && language_msg=$msg_lang_all
if test "$_translation" != yes ; then
language_msg=""
fi
# Prune non-existing translations from language lists. # Prune non-existing translations from language lists.
# Set message translation to the first available language. # Set message translation to the first available language.
@ -2864,7 +2880,12 @@ done
language_man=$tmp_language_man language_man=$tmp_language_man
test -z "$language_man" && language_man=en test -z "$language_man" && language_man=en
echores "man pages: $language_man - documentation: $language_doc" for lang in $language_msg ; do
test -f po/$lang.po && tmp_language_msg="$tmp_language_msg $lang"
done
language_msg=$tmp_language_msg
echores "messages (en+): $language_msg - man pages: $language_man - documentation: $language_doc"
echocheck "enable sighandler" echocheck "enable sighandler"
@ -7819,6 +7840,8 @@ DOC_LANGS = $language_doc
DOC_LANG_ALL = $doc_lang_all DOC_LANG_ALL = $doc_lang_all
MAN_LANGS = $language_man MAN_LANGS = $language_man
MAN_LANG_ALL = $man_lang_all MAN_LANG_ALL = $man_lang_all
MSG_LANGS = $language_msg
MSG_LANG_ALL = $msg_lang_all
prefix = \$(DESTDIR)$_prefix prefix = \$(DESTDIR)$_prefix
BINDIR = \$(DESTDIR)$_bindir BINDIR = \$(DESTDIR)$_bindir
@ -8553,6 +8576,7 @@ Config files successfully generated by ./configure $_configuration !
Optimizing for: $_optimizing Optimizing for: $_optimizing
Languages: Languages:
Messages (in addition to English): $language_msg
Manual pages: $language_man Manual pages: $language_man
Documentation: $language_doc Documentation: $language_doc