Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
translation-update
translation-update-spec-generate-lang-list.sh
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File translation-update-spec-generate-lang-list.sh of Package translation-update
#!/bin/bash # Generate lang list for spec file. # Usage: # 1. sh ./translation-update-spec-reset-lang-list.sh # 2. osc build # it will fail # 3. sh ./translation-update-spec-generate-lang-list.sh #BUILD_ROOT=/var/tmp/build-root/SUSE_SLE-12-SP2-x86_64 BUILD_ROOT=/var/tmp/build-root/standard-x86_64 BUILDROOT=/home/abuild/rpmbuild/BUILDROOT LNG_LIST=$(sed -n '/Installed (but unpackaged) file(s) found:/,$s:.* */usr/share/locale-langpack/\(.*\)/LC_MESSAGES/.*:\1:p' $BUILD_ROOT/.build.log | sort -u) LNG_COUNT=0 for LNG in $LNG_LIST ; do LNG_NAME= # Handle special cases manually: case $LNG in zh_CN ) LNG_NAME="Simplified Chinese" ;; zh_TW ) LNG_NAME="Traditional Chinese" ;; esac if test -n "$LNG_NAME" ; then LNG_NAMES[LNG_COUNT++]=$LNG_NAME continue fi # Guess language name from Language-Team catalog file keyword for FILE in $BUILD_ROOT$BUILDROOT/translation-update*/usr/share/locale-langpack/$LNG/LC_MESSAGES/*.mo ; do LNG_POEDIT_NAME=$(msgunfmt $FILE 2>/dev/null | sed -n 's/^"X-Poedit-Language: *\([^<\]*\) *.*"$/\1/p') LNG_NAME=$(msgunfmt $FILE 2>/dev/null | sed -n 's/^"Language-Team: *\([^<\]*\) *.*"$/\1/p') LNG_NAME=${LNG_NAME%% } LNG_NAME=${LNG_NAME% (http*} LNG_NAME=${LNG_NAME% Team} LNG_NAME=${LNG_NAME% Translation Project} LNG_NAME=${LNG_NAME% Translation} LNG_NAME=${LNG_NAME#GNOME } LNG_NAME=${LNG_NAME#Gnome } LNG_NAME=${LNG_NAME% GNOME} LNG_NAME=${LNG_NAME% Gnome} # for ug: LNG_NAME=${LNG_NAME% Computer Science Association} # for ml: LNG_NAME=${LNG_NAME#Swathanthra } LNG_NAME=${LNG_NAME% Computing} LNG_NAME=${LNG_NAME%, Modern*} # X-Poedit-Language should be correct without hacks. Prefer it, if exists. if test -n "$LNG_POEDIT_NAME" ; then LNG_NAME="$LNG_POEDIT_NAME" break fi # Do not accept the default value "American English" for anything else than en_US. if test "$LNG_NAME" = "American English" -a "$LNG" != en_US ; then continue fi # Do not accept national names. We search for English name. if ! echo "$LNG_NAME" | iconv -f UTF-8 -t ASCII >/dev/null 2>&1 ; then continue fi # Errorneous cases. case "$LNG_NAME" in # nb # Do not accept "Novell Language" generated by Novell translation tools. # Do not accept underbar. It means that translator filled LANG variable name. # Do not accept e-mails. [a-z]* | " " | "Kjartan Maraas" | "Novell Language" | linux* | Hrvatski | Suomi | *Solutions* | *_* | *@* | */* ) continue ;; esac if test -n "$LNG_NAME" ; then break fi done LNG_NAMES[LNG_COUNT++]=$LNG_NAME done echo echo "Please review following language names and fix them, if needed:" LNG_COUNT=0 for LNG in $LNG_LIST ; do echo "$LNG: ${LNG_NAMES[LNG_COUNT++]}" done LNG_COUNT=0 for LNG in $LNG_LIST ; do LNG_PKG=${LNG//@/-} cat <<EOF %package -n translation-update-$LNG_PKG Summary: Translation Updates for ${LNG_NAMES[LNG_COUNT]} Group: System/Localization Provides: locale(translation-update:$LNG) Requires: translation-update %description -n translation-update-$LNG_PKG This is a set of translation updates that are installed into the preferred directory, /usr/share/locale-langpack/<locale>/LC_MESSAGES/. Applications that use gettext correctly can then pick up overridden or updated translations from this location. EOF let LNG_COUNT++ done >translation-update.spec.preamble.tmp for LNG in $LNG_LIST ; do LNG_PKG=${LNG//@/-} cat <<EOF %files -n translation-update-$LNG_PKG %defattr(-,root,root) %dir %{_datadir}/locale-langpack %lang($LNG) %{_datadir}/locale-langpack/$LNG %doc COPYING EOF done >translation-update.spec.files.tmp bash ./translation-update-spec-reset-lang-list.sh sed -i ' /^%prep$/{ r translation-update.spec.preamble.tmp a %prep /^%prep$/d } /^%changelog$/{ r translation-update.spec.files.tmp a %changelog /^%changelog$/d } ' translation-update.spec rm translation-update.spec.preamble.tmp translation-update.spec.files.tmp
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor