All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Egry Gábor" <gaboregry@t-online.hu>
To: Linus Torvalds <torvalds@osdl.org>, Andrew Morton <akpm@osdl.org>
Cc: Roman Zippel <zippel@linux-m68k.org>,
	Massimo Maiurana <maiurana@inwind.it>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	KernelFR <kernelfr@traduc.org>,
	Arnaldo Carvalho de Melo <acme@conectiva.com.br>
Subject: [PATCH 1/19] Kconfig I18N: sublocale
Date: Wed, 13 Jul 2005 19:04:52 +0200	[thread overview]
Message-ID: <1121274292.2975.9.camel@spirit> (raw)
In-Reply-To: <1121273456.2975.3.camel@spirit>


The external store of .mo files are unfrendly and binary .mo 
files are ungly in the source code. This patch creates a temporary 
locale directory on build time in <kernel_source>/.locale/ 
directory instead of /usr/share/locale/ and compiles the 
necessary source language files from the <kernel_source>/po/ directory.

Without installed gettext package the configuration interfaces remain 
in english.

This patch contains too a hook for additional patches. If one or more 
po/*-po directories exist (ex. po/grsecurity-po/) then the content of 
them will merged into the temporary locale directory. In this way the 
configuration interface of external patches will be localisable.

Signed-off-by: Egry Gabor <gaboregry@t-online.hu>
---

 Makefile                      |    1 
 scripts/kconfig/Makefile      |    7 +++
 scripts/kconfig/lkc.h         |    2 
 scripts/kconfig/set_locale.sh |   93 ++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 102 insertions(+), 1 deletion(-)

diff -puN Makefile~kconfig-i18n-01-sublocale Makefile
--- linux-2.6.13-rc3-i18n-kconfig/Makefile~kconfig-i18n-01-sublocale	2005-07-13 18:32:15.000000000 +0200
+++ linux-2.6.13-rc3-i18n-kconfig-gabaman/Makefile	2005-07-13 18:32:15.000000000 +0200
@@ -948,6 +948,7 @@ endef
 
 # Directories & files removed with 'make clean'
 CLEAN_DIRS  += $(MODVERDIR)
+CLEAN_DIRS  += .locale
 CLEAN_FILES +=	vmlinux System.map \
                 .tmp_kallsyms* .tmp_version .tmp_vmlinux* .tmp_System.map
 
diff -puN scripts/kconfig/lkc.h~kconfig-i18n-01-sublocale scripts/kconfig/lkc.h
--- linux-2.6.13-rc3-i18n-kconfig/scripts/kconfig/lkc.h~kconfig-i18n-01-sublocale	2005-07-13 18:32:15.000000000 +0200
+++ linux-2.6.13-rc3-i18n-kconfig-gabaman/scripts/kconfig/lkc.h	2005-07-13 18:32:15.000000000 +0200
@@ -26,7 +26,7 @@ extern "C" {
 #define SRCTREE "srctree"
 
 #define PACKAGE "linux"
-#define LOCALEDIR "/usr/share/locale"
+#define LOCALEDIR ".locale"
 
 #define _(text) gettext(text)
 #define N_(text) (text)
diff -puN scripts/kconfig/Makefile~kconfig-i18n-01-sublocale scripts/kconfig/Makefile
--- linux-2.6.13-rc3-i18n-kconfig/scripts/kconfig/Makefile~kconfig-i18n-01-sublocale	2005-07-13 18:32:15.000000000 +0200
+++ linux-2.6.13-rc3-i18n-kconfig-gabaman/scripts/kconfig/Makefile	2005-07-13 18:36:54.000000000 +0200
@@ -5,22 +5,28 @@
 .PHONY: oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
 
 xconfig: $(obj)/qconf
+	$(Q)sh $(obj)/set_locale.sh
 	$< arch/$(ARCH)/Kconfig
 
 gconfig: $(obj)/gconf
+	$(Q)sh $(obj)/set_locale.sh
 	$< arch/$(ARCH)/Kconfig
 
 menuconfig: $(obj)/mconf
 	$(Q)$(MAKE) $(build)=scripts/lxdialog
+	$(Q)sh $(obj)/set_locale.sh
 	$< arch/$(ARCH)/Kconfig
 
 config: $(obj)/conf
+	$(Q)sh $(obj)/set_locale.sh
 	$< arch/$(ARCH)/Kconfig
 
 oldconfig: $(obj)/conf
+	$(Q)sh $(obj)/set_locale.sh
 	$< -o arch/$(ARCH)/Kconfig
 
 silentoldconfig: $(obj)/conf
+	$(Q)sh $(obj)/set_locale.sh
 	$< -s arch/$(ARCH)/Kconfig
 
 update-po-config: $(obj)/kxgettext
@@ -214,3 +220,4 @@ lex.%.c: %.l
 	flex -P$(notdir $*) -o$@ $<
 
 endif
+
diff -puN /dev/null scripts/kconfig/set_locale.sh
--- /dev/null	2005-07-13 15:43:03.451152136 +0200
+++ linux-2.6.13-rc3-i18n-kconfig-gabaman/scripts/kconfig/set_locale.sh	2005-07-13 18:32:15.000000000 +0200
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+#
+# This script detects language and compiles the language binary files
+#
+
+# Check the po/ directory
+if [ ! -d po/ ]
+then
+	exit 0
+fi
+
+# Set language code
+if test "x$LANG" == "x"
+then
+        if test "x$LC_ALL" == "x"
+	then
+		exit 0
+	else
+		MYLC=$LC_ALL
+	fi
+else
+	MYLC=$LANG
+fi
+
+# If don't need the translation
+if test "x$MYLC" == "xC"
+then
+	exit 0
+fi
+
+MYLCTEST=$(echo $MYLC|cut -b 1-5)
+
+# Find Kconfig's .po
+POFILES=$(find po/ -maxdepth 1 -type f -name ${MYLCTEST}.po)
+if test "x$POFILES" != "x"
+then
+	MYLC=$MYLCTEST
+else
+	MYLCTEST=$(echo $MYLC|cut -b 1-2)
+	POFILES=$(find po/ -maxdepth 1 -type f -name ${MYLCTEST}.po)
+	if test "x$POFILES" != "x"
+        then
+		MYLC=$MYLCTEST
+	else
+		#echo "Your language ($MYLC) is not supported."
+		exit 0
+	fi
+fi
+
+if [ -f .locale/$MYLC/LC_MESSAGES/linux.mo ]
+then
+	exit 0
+fi
+
+echo -n "  LOCALE ($MYLC)... "
+
+# Find additional .po files
+# This is a hook for external patches
+for i in $(find po/ -maxdepth 1 -type d -path '*-po')
+do
+	if [ -f $i/$MYLC.po ]
+	then
+		POFILES="$POFILES $i/$MYLC.po"
+		NEED_CAT=1
+	fi
+done
+
+# Trying msgfmt... and no returning error if it doesn't exist
+msgfmt -V &>/dev/null || {
+	echo "msgfmt doesn't exist, please install gettext";
+	exit 0;
+}
+
+# Do translation...
+mkdir -p .locale/$MYLC/LC_MESSAGES/
+if test "x$NEED_CAT" == "x1"
+then
+	# Trying msgcat and no returning error if it doesn't exist
+	msgcat -V &>/dev/null || {
+		echo "msgcat doesn't exist, please install gettext 0.12 or newer";
+		exit 0;
+	}
+	msgcat --output=.locale/$MYLC/LC_MESSAGES/__tmp.po --use-first $POFILES
+	msgfmt .locale/$MYLC/LC_MESSAGES/__tmp.po --output=.locale/$MYLC/LC_MESSAGES/linux.mo
+	rm -f .locale/$MYLC/LC_MESSAGES/__tmp.po
+else
+	msgfmt $POFILES --output=.locale/$MYLC/LC_MESSAGES/linux.mo
+fi
+
+# Done
+echo " done"
+
_



  reply	other threads:[~2005-07-13 17:06 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-13 16:50 [PATCH 0/19] Kconfig I18N completion Egry Gábor
2005-07-13 17:04 ` Egry Gábor [this message]
2005-07-13 17:07 ` [PATCH 2/19] Kconfig I18N: lxdialog: width fix Egry Gábor
2005-07-13 17:26   ` [PATCH] Kconfig: lxdialog: Enable UTF8 Jan Engelhardt
2005-07-14  0:26     ` Ken Moffat
2005-07-16  9:54       ` Sam Ravnborg
2005-07-16 10:12         ` Ken Moffat
2005-07-16 22:14           ` Ken Moffat
2005-07-13 17:09 ` [PATCH 3/19] Kconfig I18N: lxdialog Egry Gábor
2005-07-13 17:11 ` [PATCH 4/19] Kconfig I18N: lxdialog: multibyte character support Egry Gábor
2005-07-14  0:10   ` Roman Zippel
2005-07-13 17:13 ` [PATCH 5/19] Kconfig I18N: lxdialog: answering Egry Gábor
2005-07-13 17:15 ` [PATCH 6/19] Kconfig I18N: config Egry Gábor
2005-07-13 17:17 ` [PATCH 7/19] Kconfig I18N: gconfig Egry Gábor
2005-07-13 17:18 ` [PATCH 8/19] Kconfig I18N: gconfig: GUI Egry Gábor
2005-07-13 17:20 ` [PATCH 9/19] Kconfig I18N: gconfig: answering Egry Gábor
2005-07-13 17:21 ` [PATCH 10/19] Kconfig I18N: gconfig: missing macros Egry Gábor
2005-07-13 17:23 ` [PATCH 11/19] Kconfig I18N: gconfig: symbol fix Egry Gábor
2005-07-13 17:24 ` [PATCH 12/19] Kconfig I18N: menuconfig Egry Gábor
2005-07-13 17:26 ` [PATCH 13/19] Kconfig I18N: menuconfig: answering Egry Gábor
2005-07-13 17:27 ` [PATCH 14/19] Kconfig I18N: menuconfig: missing macros Egry Gábor
2005-07-13 17:28 ` [PATCH 15/19] Kconfig I18n: xconfig Egry Gábor
2005-07-13 17:30 ` [PATCH 16/19] Kconfig I18n: xconfig: answering Egry Gábor
2005-07-13 17:31 ` [PATCH 17/19] Kconfig I18N: xconfig: symbol fix Egry Gábor
2005-07-13 17:33 ` [PATCH 18/19] Kconfig I18N: LKC: whitespace removing Egry Gábor
2005-07-14  0:12   ` Roman Zippel
2005-07-13 17:35 ` [PATCH 19/19] Kconfig I18N: UI: Hungarian translation Egry Gábor
2005-07-13 17:41 ` [PATCH 0/19] Kconfig I18N completion Linus Torvalds
2005-07-13 18:03   ` Egry Gábor
2005-07-13 20:11     ` Sam Ravnborg
2005-07-13 18:41       ` Egry Gábor
2005-07-13 19:02         ` Linus Torvalds
2005-07-15 17:41           ` Arnaldo Carvalho de Melo
2005-07-13 20:48         ` Sam Ravnborg
2005-07-14 10:03         ` Jan Engelhardt
2005-07-13 20:04   ` Jan Engelhardt
2005-07-13 20:45 ` Sam Ravnborg
2005-07-14  3:42   ` Sam Ravnborg
2005-07-14  0:06 ` Roman Zippel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1121274292.2975.9.camel@spirit \
    --to=gaboregry@t-online.hu \
    --cc=acme@conectiva.com.br \
    --cc=akpm@osdl.org \
    --cc=kernelfr@traduc.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maiurana@inwind.it \
    --cc=torvalds@osdl.org \
    --cc=zippel@linux-m68k.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.