lkml.org 
[lkml]   [2005]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 1/19] Kconfig I18N: sublocale
    From
    Date

    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"
    +
    _

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-07-13 19:11    [W:4.998 / U:0.744 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site