Page 2 of 4
Re: Internationalization of Fatdog
Posted: Sat 18 Jan 2014, 18:19
by jamesbond
L18L wrote:@jamesbond
take it and change menu entry for help to "fhelp" please.
Done, thanks, but Fatdog actually doesn't have a menu entry for "help". It is accessible directly from the browser's homepage. May be I should add one, hmmm ...
Fatdog Chinese Language pets
Posted: Sun 19 Jan 2014, 02:52
by icake
I am making new Chinese Language pets for fatdog64 630rc2 and runs into this challenge:
1. the starting menu at the lower left hand corner of the screen shows a fatdog logo with the word "Menu"
2. I think this is controlled by /etc/xdg/razor/razor-panel/panel.conf 2nd section [mainmenu] line 3:
English version: text=Menu
3. when I changed the above line to Chinese:
text=
Re: Fatdog Chinese Language pets
Posted: Sun 19 Jan 2014, 10:31
by L18L
icake wrote:Does anyone know how to fix this?
Sorry, no idea how to fix this.
It is not specific to Chinese, just no UTF-8 support I think.
Code: Select all
[mainmenu]
showText=true
type=mainmenu
text=Menü
Internationalization of Fatdog
Posted: Sun 19 Jan 2014, 13:58
by icake
Here are my 2 cents input on how to tackle this UTF-8 label:
1. In a perfect world, /etc/xdg/razor/razor-panel/panel.conf should be able to print UTF-8 characters. It cannot. We can wait for the next version(s) and hope UTF-8 will be correctly shown soon.
2. We can recompile the program from source with UTF-8 enabled. However I do not think the effort is justified.
3. A temporary fix is to hide the label text (showtext=false) and replace the fatdog icon with a new icon with fatdog logo on the left and UTF-8 characters on the right, all in one image file. This requires the name of the file controlling what icon to print. I still cannot find this file and wonder whether someone might know the answer.
fatdog-control-panel
Posted: Mon 20 Jan 2014, 09:27
by L18L
/usr/sbin/fatdog-package-manager-library.awk and fatdog-control-panel.sh installed
(downloaded, moved to /usr/sbin and made executable)
Code: Select all
#!/bin/dash
# Fatdog Package Manager
# A puppy-compatible replacement for Puppy Package Manager
puppy-compatible sounds good.
Code: Select all
# fatdog-package-manager.sh
awk: Diese Option benötigt ein Argument -- »f«
BusyBox v1.22.0.git (2013-07-05 02:56:35 WIT) multi-call binary.
Usage: awk [OPTIONS] [AWK_PROGRAM] [FILE]...
-v VAR=VAL Set variable
-F SEP Use SEP as field separator
-f FILE Read program from FILE
Argument of -f is blanc, see
Code: Select all
#
# which fatdog-package-manager-library.awk
#
Hope that helps
EDIT
Overriding "which"
Code: Select all
AWK_LIB=$(which fatdog-package-manager-library.awk)
AWK_LIB=/usr/sbin/fatdog-package-manager-library.awk
makes the error messages disappear but slows down performance.
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
Re: Internationalization of Fatdog
Posted: Mon 20 Jan 2014, 11:22
by jamesbond
icake wrote:Here are my 2 cents input on how to tackle this UTF-8 label:
1. In a perfect world, /etc/xdg/razor/razor-panel/panel.conf should be able to print UTF-8 characters. It cannot. We can wait for the next version(s) and hope UTF-8 will be correctly shown soon.
2. We can recompile the program from source with UTF-8 enabled. However I do not think the effort is justified.
I can't answer this two. I've asked kirk.
3. A temporary fix is to hide the label text (showtext=false) and replace the fatdog icon with a new icon with fatdog logo on the left and UTF-8 characters on the right, all in one image file. This requires the name of the file controlling what icon to print. I still cannot find this file and wonder whether someone might know the answer.
I think the filename can't be changed (it's mainmenu.svg) but what you can change is the "theme". The default theme is "ambiance", you can copy the entire directory (in /usr/share/razor/themes), change the theme name (e.g. ambience-de), and tell razor-panel to use that theme in /etc/xdg/razor/razor.conf. Disclaimer: haven't tried it myself
L18L wrote:Argument of -f is blanc, see
That's because you're supposed to chmod +x fatdog-package-manager-library.awk too. Or just override the stuff like you did - that should work too.
makes the error messages disappear but slows down performance.
Now this is annoying
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
How much slower? Where is it slow (initial startup?).
EDIT:
puppy-compatible sounds good.
Yes, but you need to know which version of PPM it is compatible with
![Laughing :lol:](./images/smilies/icon_lol.gif)
- the very earliest one (puppy 4.x). In fact, Puppy's PPM is still in Fatdog, just run /usr/local/petget/pkg_chooser.sh and you'll be greeted with something very familiar
![Smile :)](./images/smilies/icon_smile.gif)
(and it still works - whatever is installed by FPM can be uninstalled by PPM and vice versa).
Posted: Mon 20 Jan 2014, 13:11
by kirk
icake wrote:
Here are my 2 cents input on how to tackle this UTF-8 label:
1. In a perfect world, /etc/xdg/razor/razor-panel/panel.conf should be able to print UTF-8 characters. It cannot. We can wait for the next version(s) and hope UTF-8 will be correctly shown soon.
2. We can recompile the program from source with UTF-8 enabled. However I do not think the effort is justified.
I can't answer this two. I've asked kirk.
I removed all of the localization files from razorqt-panel, which is what we have normally done in the past since everything was english only and we try to keep things as small as possible. For Fatdog64-700 we will have to reconsider that. I've attached a pet with the razorqt-panel localization files. I just happened to still have that around. Hope that helps.
Re: Internationalization of Fatdog
Posted: Mon 20 Jan 2014, 13:50
by L18L
jamesbond wrote:L18L wrote:Argument of -f is blanc, see
That's because you're supposed to chmod +x fatdog-package-manager-library.awk too. Or just override the stuff like you did - that should work too.
That's it. Has not been executable.
makes the error messages disappear but slows down performance.
Now this is annoying
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
How much slower? Where is it slow (initial startup?).
does not work. Therefore just the raw seconds:
AWK_LIB=$(which fatdog-package-manager-library.awk)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
15sec
AWK_LIB=
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
5sec and error messages in console
But I do not see any difference in GUI output.
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
Re: Internationalization of Fatdog
Posted: Mon 20 Jan 2014, 14:15
by L18L
L18L wrote:Some notes, howto create these translations will follow.
Or just a shell script (store it where ever you like or just paste it to terminal):
Code: Select all
#!/bin/sh
# create translation files for fatdog's home and faqs
# /usr/share/doc/home/htm must be translated first
# /usr/share/doc/faqs/faq.html must be translated secondly
# choose from faqs directory which one to translate
# functions
go() { echo "
$1
Press ENTER to continue or Ctrl_C to cancel"; read x; }
create_file() {
from=$1
to=$2
go "Convert $from to $to --to-code=UTF-8"
iconv --from-code=ASCII --to-code=UTF-8 $from --output=$to
go "Insert language and change charset to UTF-8"
sed -i "s/<html>/<html lang="$L">/" $to
sed -i 's/charset=ISO-8859-1/charset=UTF-8/' $to
go "Set base for all links"
sed -i "s#<head>#<head>${BASE}#" $to
go "Some style"
sed -i 's@</head>@<style type="text/css">#container {max-width:44em;margin:auto;} h1 img {height:100px;margin:0 2em -.1em 0;} h1 {text-align:center;} .translated {text-align:right;font-size:67%;}</style></head>@' $to
echo "Set link back to original"
sed -i "s#</body>#<p class="translated">Translated from the <a href="$from">English Original</a></p></body>#" $to
go "That's all I could do for you.
Note, properties of this file is yet shown as ASCII, when you have entered the first non-ASCII word then it will be shown as UTF-8.
The file $to will be opened in text editor geany now
Happy translating"
geany $to
}
# /functions
L=${LANG%_*}
# create subdirs for language
for i in /usr/share/doc/help /usr/share/doc/faqs; do mkdir -p $i/$L; done
for i in /usr/share/doc/help/$L/home.htm /usr/share/doc/faqs/$L/faq.html; do
[ -f $i ] && continue
case $i in
*home*) f=/usr/share/doc/home.htm; BASE='<base a href="../../">' ;;
*faq*) f=/usr/share/doc/faqs/faq.html BASE='<base a href="../">';;
esac
create_file $f $i
done # home.htm and faqs/faq.html translated
cd /usr/share/doc/faqs
while true; do # translate one or some or all faq
f=$1
until [ `ls ${f}* | wc -w` -eq 1 ]; do
echo ""; ls ${f}*.htm*; echo ""; read f
done
f=`ls ${f}*`
BASE='<base a href="../">'
create_file $f ${L}/$f
done # break endless loop by pressing Ctrl-C
cd - > /dev/null
You might
- translate line 30 (Translated from the <a href="$from">English Original</a>) to your language....
- change style
EDIT
- override an already translated file
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
Re: Internationalization of Fatdog
Posted: Mon 20 Jan 2014, 16:01
by jamesbond
L18L wrote: does not work.
No, of course not. This is dash we're talking about (bash is more versatile and can do that - dash can only "time" external commands and not internal functions).
Therefore just the raw seconds:
AWK_LIB=$(which fatdog-package-manager-library.awk)
![Arrow :arrow:](./images/smilies/icon_arrow.gif)
15sec
This is odd - "which" shouldn't take that long. You need to check your system. Anyway, I've hardcoded the location to /usr/sbin rather than doing 'which'.
But I do not see any difference in GUI output.
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
You're not supposed to see any difference. Only shorter delays. Which isn't happening too
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
Re: Internationalization of Fatdog
Posted: Mon 20 Jan 2014, 16:17
by L18L
jamesbond wrote:But I do not see any difference in GUI output.
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
You're not supposed to see any difference. Only shorter delays. Which isn't happening too
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
I mean the difference between
- using fatdog-package-manager-library.awk (using which or hardcoded) that is slow (15sec)
- using "" that is fast (5 sec)
Re: Internationalization of Fatdog
Posted: Mon 20 Jan 2014, 17:08
by jamesbond
L18L wrote:I mean the difference between
- using fatdog-package-manager-library.awk (using which or hardcoded) that is slow (15sec)
- using "" that is fast (5 sec)
No, that can't be. If AWK_LIB is blank then you will get an error and will see the visual differences immediately - your package list will be totally empty (only the categories). The only explanation is that somehow you're still accessing the old package manager, not the new one then.
Re: Internationalization of Fatdog
Posted: Mon 20 Jan 2014, 17:55
by L18L
jamesbond wrote: If AWK_LIB is blank then you will get an error and will see the visual differences immediately - your package list will be totally empty (only the categories).
Now I do see them. You are right.
![Embarassed :oops:](./images/smilies/icon_redface.gif)
Internationalization of Fatdog
Posted: Tue 21 Jan 2014, 14:48
by icake
jamesbond wrote:
I think the filename can't be changed (it's mainmenu.svg) but what you can change is the "theme". The default theme is "ambiance", you can copy the entire directory (in /usr/share/razor/themes), change the theme name (e.g. ambience-de), and tell razor-panel to use that theme in /etc/xdg/razor/razor.conf. Disclaimer: haven't tried it myself Cool
This is a much better and more realistic fix than my suggestion. Thanks jamesbond.
kirk wrote:
I've attached a pet with the razorqt-panel localization files. I just happened to still have that around. Hope that helps.
Thanks kirk.
Re: Internationalization of Fatdog
Posted: Thu 23 Jan 2014, 10:53
by L18L
L18L wrote:L18L wrote:Some notes, howto create these translations will follow.
Or just a shell script (store it where ever you like or just paste it to terminal):
Code: Select all
#!/bin/sh
# create translation files for fatdog's home and faqs
...
...
create_file $f ${L}/$f
done # break endless loop by pressing Ctrl-C
cd - > /dev/null
You might
- translate line 30 (Translated from the <a href="$from">English Original</a>) to your language....
- change style
EDIT
- override an already translated file
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
Here is the improved script for the same purpose.
Code: Select all
#!/bin/sh
TITLE="Translate Fatdog's home and FAQs"
# /usr/share/doc/home/htm must be translated first
# /usr/share/doc/faqs/faq.html must be translated secondly
# choose from faqs directory which one to translate
#140123 avoid overriding, avoid no charset, adjust link in translated faq.html,
function init_vars() {
L=${LANG%_*} # Chinese and Portuguese might change this line
for i in /usr/share/doc/help /usr/share/doc/faqs; do mkdir -p $i/$L; done
TRANSLATED_FROM="Übersetzt aus dem" # Translate this to your language
ENGLISH_ORIGINAL="Englischen Original" # Translate this to your language
DEFAULTHTMLEDITOR="seamonkey -edit"
DEFAULTHTMLEDITOR=geany # for experts
#DEFAULTHTMLEDITOR=yudit # for 'right-to-left'-languages
}
function go() { echo "
$1
Press ENTER to continue or Ctrl_C to cancel"; read x; }
function choose_file() {
tmp=/tmp/translate_faq$$
ALL_FILES=/tmp/translate_faq
TODO=
n=0
ls *.htm* | tr ' ' '\n' > $ALL_FILES
while read LINE;do
[ `ls $L | grep $LINE` ] || { n=$(($n + 1)); TODO="$TODO $LINE $n"; }
done < $ALL_FILES
case $n in
0) MSG="No file found, all translations appear to be done." ;;
1) MSG="This is the last file to translate." ;;
*) MSG="Choose ONE of these $n files to translate NOW." ;;
esac
dialog --title "$TITLE" --menu "$MSG" 0 0 12 `echo $TODO` 2> $tmp
file_chosen=`cat $tmp`
rm $tmp $ALL_FILES
}
function create_file() {
from=$1
to=$2
go "Convert $from to $to --to-code=UTF-8"
iconv --from-code=ASCII --to-code=UTF-8 $from --output=$to
go "Insert language and change charset to UTF-8"
sed -i "s/<html>/<html lang="$L">/" $to
sed -i 's/charset=ISO-8859-1/charset=UTF-8/' $to
sed -i 's/charset=windows-1252/charset=UTF-8/' $to
grep 'meta http-equiv="content-type"' $to >/dev/null || sed -i 's#<head>#<head><meta http-equiv="content-type" content="text/html; charset=utf-8">#' $to
go "Set base for all links"
sed -i "s#<head>#<head>${BASE}#" $to
go "Some style"
sed -i 's@</head>@<style type="text/css">#container {max-width:44em;margin:auto;} h1 img {height:100px;margin:0 2em -.1em 0;} h1 {text-align:center;} .translated {text-align:right;font-size:67%;}</style></head>@' $to
go "Set link back to original"
#sed -i "s#</body>#<p class="translated">Translated from the <a href="$from">English Original</a></p></body>#" $to
sed -i "s#</body>#<p class="translated">${TRANSLATED_FROM} <a href="$from">${ENGLISH_ORIGINAL}</a></p></body>#" $to
case ${to} in
*${L}/faq.html) : ;;
*${L}/*.htm*)
go "Set link to this page in 'index' page faq.html from ${to#*/} to $to
Don't forget to also translate the link title in ${L}/faq.html"
sed -i "s@${to#*/}@$to@" ${L}/faq.html ;;
esac
go "That's all I could do for you.
Note, properties of this file is yet shown as ASCII, when you have entered the first non-ASCII word then it will be shown as UTF-8.
The file $to will be opened in $DEFAULTHTMLEDITOR now
Happy translating"
$DEFAULTHTMLEDITOR $to
}
# /functions
init_vars
for i in /usr/share/doc/help/$L/home.htm /usr/share/doc/faqs/$L/faq.html; do
[ -f $i ] && continue
case $i in
*home*) f=/usr/share/doc/home.htm; BASE='<base href="../../">' ;;
*faq*) f=/usr/share/doc/faqs/faq.html BASE='<base href="../">';;
esac
create_file $f $i
done # home.htm and faqs/faq.html translated
cd /usr/share/doc/faqs
while true; do # translate one or some or all faq
choose_file
BASE='<base href="../">'
[ "$file_chosen" ] && create_file $file_chosen ${L}/$file_chosen || break
done # break endless loop by cancel in dialog
cd - > /dev/null
[ $n -gt 0 ] && echo "See you later, use just
$0
in Terminal." || echo bye, hope you really did translate something.
#
Happy translating
choose-locale
Posted: Thu 23 Jan 2014, 18:18
by L18L
jamesbond wrote:I will look into choose-locale later ...
Code: Select all
# read the source for title (description), language, and territory (country)
while read -r q ; do
case $q in
# title*|language*) echo -n ""${q#*"}|" ;;
# territory*) echo ""${q#*"}"; break ;;
title*) TI=""${q#*"}" ;;
language*) LA="${q#*"}" ;;
territory*) TE=""${q#*"}" ;;
lang_name*) lang_name=""${q#*"}"
lang_name="${lang_name%?}"
lang_name="${lang_name//>/}"
lang_name="${lang_name//</\\}"
LN=`printf "$lang_name"`
echo "${TI}|${LN} ${LA}|${TE}"; break ;;
esac
done < $LOCALE_DEF_DIR/$src
Above code reads lang_name from files in in /usr/share/i18n/locales and does produce something.
..and messes up some other thing (->ISO-8859-8 and UTF-8 and ...)
(Xdialog:5169): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()
15 sec vs 1 or 2 sec
Re: choose-locale
Posted: Fri 24 Jan 2014, 01:16
by jamesbond
(Xdialog:5169): Pango-WARNING **: Invalid UTF-8 string passed to pango_layout_set_text()
Bash's unicode support for "printf" seems to be broken. Fatdog's /usr/bin/printf links to busybox and isn't unicode aware, so it doesn't help either.
This one does.it.
L18L wrote:Above code reads lang_name from files in in /usr/share/i18n/locales and does produce something.
..and messes up some other thing (->ISO-8859-8 and UTF-8 and ...)
This will work, assuming you have compiled show-ucs-data linked above.
Code: Select all
# only process if we have the source file
if [ -e $LOCALE_DEF_DIR/$src ]; then
# locale and charmaps
echo -n "${p%%/*}|${p##*/}|"
# read the source for title (description), language, and territory (country)
LN='"'
while read -r q ; do
case $q in
%*) ;; # comment, ignore
# title*|language*) echo -n ""${q#*"}|" ;;
# territory*) echo ""${q#*"}"; break ;;
title*) TI=""${q#*"}" ;;
language*) LA="${q#*"}" ;;
territory*) TE=""${q#*"}" ;;
lang_name*) LN=""${q#*"}"; LN="${LN%"*} " ;;
esac
done << EOF
$(./show-ucs-data $LOCALE_DEF_DIR/$src)
EOF
echo "${TI}|${LN}${LA}|${TE}"
fi
15 sec vs 1 or 2 sec
That's because now it has to scan every line in locale files instead of scanning just a few lines at the top.
Re: choose-locale
Posted: Fri 24 Jan 2014, 12:57
by L18L
jamesbond wrote:This will work, assuming you have compiled show-ucs-data linked above.
Code: Select all
# only process if we have the source file
if [ -e $LOCALE_DEF_DIR/$src ]; then
# locale and charmaps
echo -n "${p%%/*}|${p##*/}|"
# read the source for title (description), language, and territory (country)
LN='"'
while read -r q ; do
case $q in
%*) ;; # comment, ignore
# title*|language*) echo -n ""${q#*"}|" ;;
# territory*) echo ""${q#*"}"; break ;;
title*) TI=""${q#*"}" ;;
language*) LA="${q#*"}" ;;
territory*) TE=""${q#*"}" ;;
lang_name*) LN=""${q#*"}"; LN="${LN%"*} " ;;
esac
done << EOF
$(./show-ucs-data $LOCALE_DEF_DIR/$src)
EOF
echo "${TI}|${LN}${LA}|${TE}"
fi
Thanks for the code.
Yes it works, but not the way we need it.
Reason: lang_name is not always in locales
see: English, English English and English
I have
manually inserted lang_name into de_AT. (deutsch of Austria)
I have changed SUPPORTED to contain UTF-8 only
Code: Select all
grep UTF-8 SUPPORTED.orig > SUPPORTED
for the screenshot.
EDIT
Code: Select all
# time show-ucs-data /usr/share/i18n/locales/de_DE | grep lang_name
lang_name "Deutsch"
real 0m0.015s
user 0m0.010s
sys 0m0.000s
# show-ucs-data /usr/share/i18n/locales/de_LU | grep lang_name
#
Re: choose-locale
Posted: Fri 24 Jan 2014, 16:34
by L18L
L18L wrote:Thanks for the code.
Yes it works, but not the way we need it.
Reason: lang_name is not always in locales
see: English, English English and English
I have manually inserted lang_name into de_AT. (deutsch of Austria)
...and inserted
all missing (available
) lang_names using:
Code: Select all
#!/bin/sh
# insert missing lang_name into /usr/share/i18n/locales files
WORK_DIR=/usr/share/i18n
cd $WORK_DIR/locales >/dev/null
#find locales without lang_name
echo -n '' > ../NO_LANG_NAME
for L in `ls`; do
[ ${L%%_*} = "iso14651" ] && continue
[ ${L%%_*} = "translit" ] && continue
[ ${L%%_*} = "POSIX" ] && continue
grep ^lang_name $L && { echo "$L
"; } || echo $L >> ../NO_LANG_NAME
done
while read LINE; do
lang_name=
#echo -n "LINE=$LINE"
lang=${LINE%%_*}
#echo " lang=$lang"
lang_list=`ls ${lang}_*`
lang_name="`for i in ${lang_list}; do grep lang_name $i; done | head -n 1`"
if [ "$lang_name" ]; then
#echo insert $lang_name into $LINE
sed -i "s/LC_IDENTIFICATION/LC_IDENTIFICATION\n${lang_name}/" $LINE
fi
done < ../NO_LANG_NAME
rm ../NO_LANG_NAME
cd - >/dev/null
So we can let it be until the Frisians complain
![Wink :wink:](./images/smilies/icon_wink.gif)
Re: choose-locale
Posted: Sat 25 Jan 2014, 15:03
by L18L
Above GUI needed
15 sec
6 sec only if (I have done it) locales files are converted once ( 1.1 sec )
Code: Select all
#!/bin/sh
# convert all locales /usr/share/i18n/locales files to ucs
WORK_DIR=/usr/share/i18n
cd $WORK_DIR/locales >/dev/null
mkdir -p ../locales.ucs
for L in `ls`; do
case 4L in
iso14651*) cp $L ../locales.ucs/$L ;;
translit*) cp $L ../locales.ucs/$L ;;
POSIX) cp $L ../locales.ucs/$L ;;
*) show-ucs-data $L > ../locales.ucs/$L ;;
esac
done
cd - >/dev/null
and used
Code: Select all
LOCALE_DEF_DIR=/usr/share/i18n/locales.ucs
Code: Select all
done < $LOCALE_DEF_DIR/$src
# done << EOF
#$(show-ucs-data $LOCALE_DEF_DIR/$src)
#EOF
in /usr/sbin/fatdog-choose-locale.sh
...Will test now in a locale without UTF-8....
EDIT: confirm: it works
![Cool 8)](./images/smilies/icon_cool.gif)