Skip to content

Commit

Permalink
new variable BUILD_SUPPORT_LANGS supported locales builtin to easy.sfs
Browse files Browse the repository at this point in the history
  • Loading branch information
bkauler committed Feb 10, 2023
1 parent 864138b commit a75113e
Show file tree
Hide file tree
Showing 8 changed files with 139 additions and 24 deletions.
78 changes: 77 additions & 1 deletion easyos/easy-code/3buildeasydistro
@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
#(c) Copyright Barry Kauler 2009,2017. License GPL v3 (/usr/share/doc/legal)
#2createpackages has already built the generic packages in packages-$DISTRO_FILE_PREFIX/.
#these packages have generic names as specified in the second field of PKGS_SPECS_TABLE,
Expand Down Expand Up @@ -277,6 +277,7 @@
#20230125 no longer using initrd_strings
#20230125 escape single-quote chars in translations. ' replaced with '\''
#20230131 ppm restrict pkg choices
#20230209 merge a cutdown nls into rootfs-complete

export LANG=C #faster.

Expand Down Expand Up @@ -5276,6 +5277,81 @@ sync
echo
echo 'Now creating easy.sfs...'

#20230209
#cutdown supported languages...
if [ "$BUILD_SUPPORT_LANGS" ];then #see build-choices file.
tr ' ' '\n' <<<$BUILD_SUPPORT_LANGS > /tmp/3bed-lang-codes
sed -i -e 's%:.*%%' /tmp/3bed-lang-codes
else
CODES='bg Bulgarian cs Czech da Danish de German el Greek en English es Spanish et Estonian fi Finnish fr French hr Croatian hu Hungarian is Icelandic it Italian lt Lithuanian lv Latvian mk Macedonian nl Dutch no Norwegian pl Polish pt Portuguese ro Romanian ru Russian sk Slovak sl Slovenian sq Albanian sr Serbian sv Swedish tr Turkish uk Ukrainian uz Uzbek'
CODES2='bg cs da de el en es et fi fr hr hu is it lt lv mk nl no pl pt ro ru sk sl sq sr sv tr uk uz'
tr ' ' '\n' <<<$CODES2 > /tmp/3bed-lang-codes
fi
# no (norway) may have nn and nb, so add those...
echo -e 'nn\nnb' >> /tmp/3bed-lang-codes
sed -i -e '/^$/d' /tmp/3bed-lang-codes
sed -i -e 's%^%^%' /tmp/3bed-lang-codes
echo '^common' >> /tmp/3bed-lang-codes
#usr/lib/libreoffice/program/resource...
if [ -d nls/usr/lib/libreoffice/program/resource ];then
for aPATH in `find nls/usr/lib/libreoffice/program/resource -mindepth 1 -maxdepth 1 -type d | tr '\n' ' '`
do
aDIR="${aPATH##*/}"
grep -q -f /tmp/3bed-lang-codes <<<$aDIR
if [ $? -ne 0 ];then
rm -rf ./$aPATH
fi
done
fi
#usr/lib/libreoffice/share/registry/res
if [ -d nls/usr/lib/libreoffice/share/registry/res ];then
for aPATH in `find nls/usr/lib/libreoffice/share/registry/res -mindepth 1 -maxdepth 1 -type f -name '*.xcd' | tr '\n' ' '`
do
aL2="${aPATH##*_}"
aL2="${aL2##*_}"
aL2="${aL2:0:2}"
grep -q -x -f /tmp/3bed-lang-codes <<<$aL2
if [ $? -ne 0 ];then
rm -f ./$aPATH
fi
done
fi
#usr/lib/chromium/locales
if [ -d nls/usr/lib/chromium/locales ];then
for aPATH in `find nls/usr/lib/chromium/locales -mindepth 1 -maxdepth 1 -type f -name '*.pak' | tr '\n' ' '`
do
aL2="${aPATH##*/}"
aL2="${aL2/.*/}"
aL2="${aL2:0:2}"
grep -q -x -f /tmp/3bed-lang-codes <<<$aL2
if [ $? -ne 0 ];then
rm -f ./$aPATH
fi
done
fi
#usr/share/locale
for aPATH in `find nls/usr/share/locale -mindepth 1 -maxdepth 1 -type d | tr '\n' ' '`
do
aDIR="${aPATH##*/}"
grep -q -f /tmp/3bed-lang-codes <<<$aDIR
if [ $? -ne 0 ];then
rm -rf ./$aPATH
fi
done
#usr/share/hunspell
for aPATH in `find nls/usr/share/hunspell -mindepth 1 -maxdepth 1 -type f -o -type l -name '*.aff' -o -name '*.dic' | tr '\n' ' '`
do
aL2="${aPATH##*/}"
aL2="${aL2:0:2}"
grep -q -f /tmp/3bed-lang-codes <<<$aL2
if [ $? -ne 0 ];then
rm -f ./$aPATH
fi
done
sync
cp -a -f --remove-destination nls/* rootfs-complete/
sync

echo #190131...

#ls -1 rootfs-complete/boot/*dtb > /dev/null 2>&1
Expand Down
32 changes: 21 additions & 11 deletions easyos/easy-code/boot/initrd-tree/ask-country-x
Expand Up @@ -3,15 +3,13 @@
#190712 reduce locale choices to default lang (ex: fr_*) or en_*
#20210530 console keyboard layout uk changed to gb. see also /usr/sbin/quicksetup.
#20230123 partial translate language and country names.
#20230209 reduce lang choices to list in variable BUILD_SUPPORT_LANGS

export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin'

. /root/.packages/build-choices #20230209 has BUILD_SUPPORT_LANGS

###locale###
#code from /usr/sbin/quicksetup...
INSTLANGPACK="`grep '^langpack_' /root/.packages/woof-installed-packages | cut -f 2 -d '|'`"
[ ! "$INSTLANGPACK" ] && [ -f /root/.packages/user-installed-packages ] && INSTLANGPACK="`grep '^langpack_' /root/.packages/user-installed-packages | cut -f 2 -d '|'`"
[ ! "$INSTLANGPACK" ] && INSTLANGPACK="none"

LOCALEXML=""

CURRLANG="`grep '^LANG=' /etc/profile | tr -d "'" | tr -d '"' | cut -f 2 -d '='`"
Expand All @@ -27,8 +25,12 @@ export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin'
[ ! -d /usr/lib/locale/en_US.utf8 ] && localedef -f UTF-8 -i en_US --no-archive en_US.utf8 >/dev/null #110409 111022

#build language table...
LANGUAGEDESCR='aa:Afar ab:Abkhazian af:Africaans am:Amharic an:Aragonese ar:Arabic az:Azeri be:Belarusian bn:Bengali bs:Bosnian bg:Bulgarian br:Breton ca:Catalan cs:Czech cy:Welsh da:Danish de:German dv:Divehi dz:Dzongkha el:Greek en:English eo:Esperanto es:Spanish et:Estonian eu:Basque fa:Persian fo:Faeroese fi:Finnish fr:French ga:Irish gd:Scots_Gaelic gl:Galician gv:Manx_Gaelic gu:Gujarati he:Hebrew hi:Hindi hr:Croatian hu:Hungarian hy:Armenian is:Icelandic id:Indonesian iw:Hebrew it:Italian ja:Japanese ka:Georgian kl:Greenlandic kn:Kannada kk:Kazakh km:Khmer kok:Konkani ko:Korean ku:Kurdish kw:Cornish ky:Kyrgyz lg:Luganda lo:Lao lt:Lithuanian lv:Latvian mg:Malagasy ms:Malay ml:Malayalam mt:Maltese mi:Maori mk:Macedonian mn:Mongolian mr:Marathi ne:Nepali nl:Dutch nb:Norgwegian nn:Norwegian_Nynorsk no:Norwegian_Bokm oc:Occitan om:Oromo or:Oriya pa:Pashto pl:Polish pt:Portuguese pa:Punjabi quz:Quechua ro:Romanian rs:Serbian ru:Russian rw:Kinyarwanda smn:Sami smj:Sami se:Sami sa:Sanskrit sma:Sami sms:Sami sq:Albanian sr:Srpski sl:Slovenian sw:Swahili sv:Swedish syr:Syriac ta:Tamil th:Thai tl:Tagalog tt:Tatar te:Telugu tr:Turkish uk:Ukrainian ur:Urdu uz:Uzbek vi:Vietnamese wa:Walloon xh:Xhosa yi:Yiddish zh:Chinese zu:Zulu'
REGIONDESCR='AA:ArabicCountries AE:UAE AL:Yugoslavia AR:Argentina AT:Austria AU:Australia BE:Belgium BG:Bularia BH:Bahrain BN:Brunei BO:Bolvia BR:Brazil BZ:Belize CA:Canada CH:Switzerland CL:Chile CN:PeoplesRepublicChina CO:Columbia CR:CostaRica CY:Cyprus CZ:CzechRepublic DE:Germany DK:Denmark DO:DominicanRepublic EC:Ecuador EE:Estonia ES:Spain DO:Dominican DZ:Algeria EC:Ecuador EG:Egypt FI:Finland FR:France GB:GreatBritain GR:Greece GT:Guatemalia HK:HongKong HN:Honduras HR:Croatia HU:Hungary ID:Indonesia IE:Ireland IL:Israel IN:India IQ:Iraq IS:Iceland IT:Italy JM:Jamaica JO:Jordan JP:Japan KR:Korea KW:Kuwait KZ:Kazakhstan LB:Lebanon LI:Liechtenstein LU:Luxembourg LY:Libya MA:Morocco MC:Monaco MK:Macedonia MO:Macau MY:Malaysia MX:Mexico NI:Nicaragua NL:Netherlands NO:Norway NZ:NewZealand OM:Oman PA:Panama PE:Peru PH:Philippines PL:Poland PR:PuertoRico PT:Portugal PY:Paraguay QA:Qatar RO:Romania RU:Russia SA:SaudiArabia SE:Sweden SG:Singapore SK:Slovakia SY:Syria TH:Thailand TN:Tunisia TR:Turkey TW:Taiwan ZA:SouthAfrica TT:Trinidad US:USA PE:Peru SV:ElSalvador MX:Mexico NI:Nicaragua UY:Uruguay VE:Venezuela YE:Yemen YU:Yugoslavia ZA:SouthAfrica'
if [ "$BUILD_SUPPORT_LANGS" ];then #20230209
LANGUAGEDESCR="${BUILD_SUPPORT_LANGS}"
else
LANGUAGEDESCR='aa:Afar ab:Abkhazian af:Africaans am:Amharic an:Aragonese ar:Arabic az:Azeri be:Belarusian bn:Bengali bs:Bosnian bg:Bulgarian br:Breton ca:Catalan cs:Czech cy:Welsh da:Danish de:German dv:Divehi dz:Dzongkha el:Greek en:English eo:Esperanto es:Spanish et:Estonian eu:Basque fa:Persian fo:Faeroese fi:Finnish fr:French ga:Irish gd:Scots_Gaelic gl:Galician gv:Manx_Gaelic gu:Gujarati he:Hebrew hi:Hindi hr:Croatian hu:Hungarian hy:Armenian is:Icelandic id:Indonesian iw:Hebrew it:Italian ja:Japanese ka:Georgian kl:Greenlandic kn:Kannada kk:Kazakh km:Khmer kok:Konkani ko:Korean ku:Kurdish kw:Cornish ky:Kyrgyz lg:Luganda lo:Lao lt:Lithuanian lv:Latvian mg:Malagasy ms:Malay ml:Malayalam mt:Maltese mi:Maori mk:Macedonian mn:Mongolian mr:Marathi ne:Nepali nl:Dutch nb:Norgwegian nn:Norwegian_Nynorsk no:Norwegian_Bokm oc:Occitan om:Oromo or:Oriya pa:Pashto pl:Polish pt:Portuguese pa:Punjabi quz:Quechua ro:Romanian rs:Serbian ru:Russian rw:Kinyarwanda smn:Sami smj:Sami se:Sami sa:Sanskrit sma:Sami sms:Sami sq:Albanian sr:Srpski sl:Slovenian sw:Swahili sv:Swedish syr:Syriac ta:Tamil th:Thai tl:Tagalog tt:Tatar te:Telugu tr:Turkish uk:Ukrainian ur:Urdu uz:Uzbek vi:Vietnamese wa:Walloon xh:Xhosa yi:Yiddish zh:Chinese zu:Zulu'
fi
REGIONDESCR='AA:ArabicCountries AE:UAE AL:Yugoslavia AR:Argentina AT:Austria AU:Australia BE:Belgium BG:Bularia BH:Bahrain BN:Brunei BO:Bolvia BR:Brazil BZ:Belize CA:Canada CH:Switzerland CL:Chile CN:PeoplesRepublicChina CO:Columbia CR:CostaRica CY:Cyprus CZ:CzechRepublic DE:Germany DK:Denmark DO:DominicanRepublic EC:Ecuador EE:Estonia ES:Spain DO:Dominican DZ:Algeria EC:Ecuador EG:Egypt FI:Finland FR:France GB:GreatBritain GR:Greece GT:Guatemalia HK:HongKong HN:Honduras HR:Croatia HU:Hungary ID:Indonesia IE:Ireland IL:Israel IN:India IQ:Iraq IS:Iceland IT:Italy JM:Jamaica JO:Jordan JP:Japan KR:Korea KW:Kuwait KZ:Kazakhstan LB:Lebanon LI:Liechtenstein LT:Lithuania LU:Luxembourg LV:Latvia LY:Libya MA:Morocco MC:Monaco ME:Montenegro MK:Macedonia MO:Macau MY:Malaysia MX:Mexico NI:Nicaragua NL:Netherlands NO:Norway NZ:NewZealand OM:Oman PA:Panama PE:Peru PH:Philippines PL:Poland PR:PuertoRico PT:Portugal PY:Paraguay QA:Qatar RO:Romania RS:Serbia RU:Russia SA:SaudiArabia SE:Sweden SG:Singapore SK:Slovakia SL:Slovenia SY:Syria TH:Thailand TN:Tunisia TR:Turkey TW:Taiwan ZA:SouthAfrica TT:Trinidad UA:Ukraine US:USA PE:Peru SV:ElSalvador MX:Mexico NI:Nicaragua UY:Uruguay UZ:Uzbekistan VE:Venezuela YE:Yemen YU:Yugoslavia ZA:SouthAfrica'
#need sanity check, as format of these files has changed...
SANITYFLAG='pass'
[ ! -f /usr/share/i18n/dialog_table_x ] && SANITYFLAG='fail' #precaution.
Expand All @@ -44,8 +46,14 @@ export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin'
REGION="`echo -n "$ONELOCALE" | cut -f 2 -d '_' | cut -f 1 -d '.' | cut -f 1 -d '@'`"
lPATTERN="^${LANGUAGE}:"
LANGUAGE="`echo "$LANGUAGEDESCR" | tr ' ' '\n' | grep "$lPATTERN" | head -n 1 | cut -f 2 -d ':'`"
if [ "$LANGUAGE" == "" ];then #20230209
continue
fi
rPATTERN="^${REGION}:"
REGION="`echo "$REGIONDESCR" | tr ' ' '\n' | grep "$rPATTERN" | head -n 1 | cut -f 2 -d ':'`"
if [ "$REGION" == "" ];then #20230210 ignore if cannot find matching region.
continue
fi
[ "$LANGUAGE" != "" ] && [ "$REGION" != "" ] && LANGUAGE="${LANGUAGE}, "
DESCR="${LANGUAGE}${REGION}"
if [ "$STATUS" = "on" ];then
Expand Down Expand Up @@ -86,8 +94,9 @@ ${CHOICES_CLI}"
DEFAULT="`grep ' on$' /usr/share/i18n/dialog_table_x | sed -e 's% on$%%' -e 's%"%%g' -e "s% % ${TABCHAR}%"`" #'geany
[ "$DEFAULT" ] && DEFAULTXML="<item>${DEFAULT}</item>" #combobox does not support default tag.

#190712 only offer the default language and en...
grep -E "^en_|^${DEFAULTLANG1}_" /usr/share/i18n/dialog_table_x > dialog_table_x
#190712 only offer the default language and en... 20230209 no...
#grep -E "^en_|^${DEFAULTLANG1}_" /usr/share/i18n/dialog_table_x > dialog_table_x
cp -f /usr/share/i18n/dialog_table_x dialog_table_x
ITEMS="`sed -e 's% on$%%' -e 's% off$%%' -e 's%"%%g' -e "s% % ${TABCHAR}%" -e 's%^%<item>%' -e 's%$%</item>%' dialog_table_x`" #'geany 190712

# #change the default locale item if LANGUAGE set (occurs on reentry after click a flag)
Expand Down Expand Up @@ -152,7 +161,7 @@ ${CHOICES_CLI}"
AKMAP="`basename $AFILE .gz`" #us, fr, br, etc.
AKMAP="`basename $AKMAP .kmap`"
AKMAP="`basename $AKMAP .map`"
case $AKMAP in
case "$AKMAP" in
us*) ACNTRY="(USA)";;
fr*) ACNTRY="(France)";;
it*) ACNTRY="(Italy, Italia)";;
Expand Down Expand Up @@ -197,7 +206,8 @@ ${CHOICES_CLI}"
sv*) ACNTRY="(Sweden, Sverige)";;
sk*) ACNTRY="(Slovakia, Slovensko)";;
sl*) ACNTRY="(Slovenia, Slovenija)";;
gb*) ACNTRY="(UK)";; #20210530 changed from uk. see also /usr/sbin/quicksetup.
#20210530 gb changed from uk. see also /usr/sbin/quicksetup...
gb*) ACNTRY="(UK)";;
wangbe*) ACNTRY="(Belgium, België)";;
azerty) ACNTRY="(Tandon)";;
dvorak-r) ACNTRY="(Right_single-handed)";;
Expand Down
3 changes: 2 additions & 1 deletion easyos/easy-code/boot/initrd-tree/init
Expand Up @@ -816,6 +816,7 @@ if [ "$LOCKDOWN" == "" -o "$DROPOUT" == "" ];then
EXIT='bad'
if [ -e /dev/fb0 ];then
mount_tnew #aufs temporary mount easy.sfs
cp -f tnew/root/.packages/build-choices build-choices #20230210 used in /sbin/ask-language
chroot tnew /bin/busybox ash -c "/startx ask-country-x"
touch tnew/RETASKCOUNTRY
if grep -q '^EXIT="OK"' tnew/RETASKCOUNTRY; then
Expand All @@ -833,7 +834,7 @@ if [ "$LOCKDOWN" == "" -o "$DROPOUT" == "" ];then
umount tnew
umount tro
fi
if [ "$EXIT" != "OK" ];then
if [ "$EXIT" != "OK" ];then #fallback...
/sbin/ask-language #currently using dialog so don't need /dev/fb0
QLANG="$(cat /qlang)"
fi
Expand Down
15 changes: 12 additions & 3 deletions easyos/easy-code/boot/initrd-tree/sbin/ask-language
@@ -1,13 +1,22 @@
#!/bin/ash

CODES='af Afrikaans am Amharic ar Arabic as Assamese be Byelorussian bg Bulgarian bn Bengali bo Tibetan br Breton ca Catalan cs Czech cy Welsh da Danish de German dz Bhutani el Greek en English eo Esperanto es Spanish et Estonian eu Basque fa Persian fi Finnish fr French fy Frisian ga Irish gd Gaelic gl Galician gu Gujarati hi Hindi hr Croatian hu Hungarian is Icelandic it Italian ja Japanese ka Georgian kk Kazakh km Cambodian kn Kannada ko Korean ks Kashmiri lo Laothian lt Lithuanian lv Latvian mk Macedonian ml Malayalam mn Mongolian mr Marathi my Burmese ne Nepali nl Dutch no Norwegian oc Occitan om Oromo or Oriya pa Punjabi pl Polish pt Portuguese ro Romanian ru Russian rw Kinyarwanda sa Sanskrit sd Sindhi si Singhalese sk Slovak sl Slovenian sq Albanian sr Serbian ss Siswati st Sesotho sv Swedish sw Swahili ta Tamil te Tegulu tg Tajik th Thai tn Setswana tr Turkish ts Tsonga tt Tatar uk Ukrainian uz Uzbek vi Vietnamese xh Xhosa zh Chinese zu Zulu'
#20230210
. /build-choices #copied from easy.sfs, see init script.
if [ "$BUILD_SUPPORT_LANGS" ];then #cutdown lang list.
echo "$BUILD_SUPPORT_LANGS" > al-build-support-langs
CODES="$(sed -e 's%:% %g' al-build-support-langs)"
else
CODES='af Afrikaans am Amharic ar Arabic as Assamese be Byelorussian bg Bulgarian bn Bengali bo Tibetan br Breton ca Catalan cs Czech cy Welsh da Danish de German dz Bhutani el Greek en English eo Esperanto es Spanish et Estonian eu Basque fa Persian fi Finnish fr French fy Frisian ga Irish gd Gaelic gl Galician gu Gujarati hi Hindi hr Croatian hu Hungarian is Icelandic it Italian ja Japanese ka Georgian kk Kazakh km Cambodian kn Kannada ko Korean ks Kashmiri lo Laothian lt Lithuanian lv Latvian mk Macedonian ml Malayalam mn Mongolian mr Marathi my Burmese ne Nepali nl Dutch no Norwegian oc Occitan om Oromo or Oriya pa Punjabi pl Polish pt Portuguese ro Romanian ru Russian rw Kinyarwanda sa Sanskrit sd Sindhi si Singhalese sk Slovak sl Slovenian sq Albanian sr Serbian ss Siswati st Sesotho sv Swedish sw Swahili ta Tamil te Tegulu tg Tajik th Thai tn Setswana tr Turkish ts Tsonga tt Tatar uk Ukrainian uz Uzbek vi Vietnamese xh Xhosa zh Chinese zu Zulu'
fi

CODES2=' af am ar as be bg bn bo br ca cs cy da de dz el en eo es et eu fa fi fr fy ga gd gl gu hi hr hu is it ja ka kk km kn ko ks lo lt lv mk ml mn mr my ne nl no oc om or pa pl pt ro ru rw sa sd si sk sl sq sr ss st sv sw ta te tg th tn tr ts tt uk uz vi xh zh zu '
echo -n "$CODES2" > codes2

echo -n 'zz' > qlang #20230210 default invalid lang.
dialog --no-cancel --timeout 60 --menu "Choose language" 0 0 0 $CODES 2>qlang

grep -q -w -f codechoice codes2
if [ $? -ne 0 ];then
grep -q -w -f qlang codes2
if [ $? -ne 0 ];then #precaution.
echo -n 'en' >qlang
fi
clear
Expand Down
6 changes: 3 additions & 3 deletions easyos/easy-code/packages-templates/gwhere/FIXUPHACK
@@ -1,6 +1,6 @@

#20230111 oe kirkstone
if [ -d usr/locale ];then
mkdir -p usr/share
mv -f usr/locale usr/share/locale
if [ -d ../gwhere_NLS/usr/locale ];then
mkdir -p ../gwhere_NLS/usr/share
mv -f ../gwhere_NLS/usr/locale ../gwhere_NLS/usr/share/locale
fi

0 comments on commit a75113e

Please sign in to comment.