summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2010-03-28 14:49:09 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-04-01 13:09:32 +0300
commit97db8519c8f64dc8b0163b1eff6cbe4d6fe75c11 (patch)
treea8c19ec3aee99d12ba30a6b88256e2dd3e0629ef
parentfaea4ef439b92972e01cade158ca9bff839e297b (diff)
downloadmpv-97db8519c8f64dc8b0163b1eff6cbe4d6fe75c11.tar.bz2
mpv-97db8519c8f64dc8b0163b1eff6cbe4d6fe75c11.tar.xz
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.
-rw-r--r--DOCS/man/en/mplayer.14
-rw-r--r--Makefile24
-rwxr-xr-xconfigure36
3 files changed, 56 insertions, 8 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index e542154378..891e4bf9fc 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -11114,6 +11114,10 @@ A value of "noconv" means no conversion.
Directory where MPlayer looks for user settings.
.
.TP
+.B MPLAYER_LOCALEDIR
+Directory where MPlayer looks for gettext translation files (if enabled).
+.
+.TP
.B MPLAYER_VERBOSE (also see \-v and \-msglevel)
Set the initial verbosity level across all message modules (default: 0).
The resulting verbosity corresponds to that of \-msglevel 5 plus the
diff --git a/Makefile b/Makefile
index 2f1ef50364..6bcb759764 100644
--- a/Makefile
+++ b/Makefile
@@ -694,7 +694,9 @@ ALL_PRG-$(MPLAYER) += mplayer$(EXESUF)
ALL_PRG-$(MENCODER) += mencoder$(EXESUF)
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 = . \
input \
@@ -733,6 +735,8 @@ DIRS = . \
TOOLS \
vidix \
+MOFILES := $(MSG_LANGS:%=locale/%/LC_MESSAGES/mplayer.mo)
+
ALLHEADERS = $(foreach dir,$(DIRS),$(wildcard $(dir)/*.h))
ADDSUFFIXES = $(foreach suf,$(1),$(addsuffix $(suf),$(2)))
@@ -741,7 +745,7 @@ ADD_ALL_EXESUFS = $(1) $(call ADDSUFFIXES,$(EXESUFS_ALL),$(1))
###### generic rules #######
-all: $(ALL_PRG-yes)
+all: $(ALL_PRG-yes) locales
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ -MD -MP -MF $*.d $<
@@ -789,6 +793,12 @@ version.h: version.sh
%(EXESUF): %.c
+locales: $(MOFILES)
+
+locale/%/LC_MESSAGES/mplayer.mo: po/%.po
+ mkdir -p $(dir $@)
+ msgfmt -c -o $@ $<
+
###### dependency declarations / specific CFLAGS ######
@@ -852,6 +862,7 @@ install-%: %$(EXESUF) install-dirs
install-mencoder-man: $(foreach lang,$(MAN_LANGS),install-mencoder-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
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 $(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:
rm -f $(BINDIR)/mplayer$(EXESUF) $(BINDIR)/gmplayer$(EXESUF)
rm -f $(BINDIR)/mencoder$(EXESUF)
@@ -882,6 +901,7 @@ uninstall:
rm -f $(prefix)/share/applications/mplayer.desktop
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,$(MSG_LANGS),$(LOCALEDIR)/$(lang)/LC_MESSAGES/mplayer.1)
clean:
-rm -f $(call ADD_ALL_DIRS,/*.o /*.a /*.ho /*~)
diff --git a/configure b/configure
index 8a8f161d0b..43aadf4826 100755
--- a/configure
+++ b/configure
@@ -197,6 +197,8 @@ case $(echo -n) in
*) _echo_n='-n ' _echo_c= ;; # BSD echo
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")
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
--language-doc=lang language to use for the documentation [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]
Specific options override --language. You can pass a list of languages separated
by whitespace or commas instead of a single language. Nonexisting translations
-will be dropped from each list. All documentation and man page translations
-available in the list will be installed, for the messages the first available
-translation will be used. The value "all" will activate all translations. The
-LINGUAS environment variable is honored. In all cases the fallback is English.
-Available values are: all $man_lang_all
+will be dropped from each list. All translations available in the list will be
+installed. The value "all" will activate all translations. The LINGUAS
+environment variable is honored. In all cases the fallback is English.
+The program always supports English-language output; additional message
+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:
--enable-runtime-cpudetection enable runtime CPU detection [disable]
@@ -819,6 +825,9 @@ for ac_option do
--language-man=*)
language_man=$(echo $ac_option | cut -d '=' -f 2)
;;
+ --language-msg=*)
+ language_msg=$(echo $ac_option | cut -d '=' -f 2)
+ ;;
--language=*)
language=$(echo $ac_option | cut -d '=' -f 2)
;;
@@ -2843,11 +2852,18 @@ echocheck "language"
test -z "$language" && language=$LINGUAS
test -z "$language_doc" && language_doc=$language
test -z "$language_man" && language_man=$language
+test -z "$language_msg" && language_msg="all"
language_doc=$(echo $language_doc | tr , " ")
language_man=$(echo $language_man | tr , " ")
+language_msg=$(echo $language_msg | tr , " ")
test "$language_doc" = "all" && language_doc=$doc_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.
# Set message translation to the first available language.
@@ -2864,7 +2880,12 @@ done
language_man=$tmp_language_man
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"
@@ -7819,6 +7840,8 @@ DOC_LANGS = $language_doc
DOC_LANG_ALL = $doc_lang_all
MAN_LANGS = $language_man
MAN_LANG_ALL = $man_lang_all
+MSG_LANGS = $language_msg
+MSG_LANG_ALL = $msg_lang_all
prefix = \$(DESTDIR)$_prefix
BINDIR = \$(DESTDIR)$_bindir
@@ -8553,6 +8576,7 @@ Config files successfully generated by ./configure $_configuration !
Optimizing for: $_optimizing
Languages:
+ Messages (in addition to English): $language_msg
Manual pages: $language_man
Documentation: $language_doc