寄件者 openSUSE11.3rc |
看起來差不多
內容有點不同
pcmanx.desktop
[Desktop Entry]X-SuSE-translate=trueCategories=Application;Network;IRCClient;Encoding=UTF-8Name=PCMan X BBS ClientName[zh_TW]=PCMan X BBS 連線軟體Name[zh_CN]=PCMan X BBS 连线软件Exec=pcmanxIcon=pcmanxType=ApplicationTerminal=falseGenericName=PCMan X BBS ClientGenericName[zh_TW]=PCMan X BBS 連線軟體GenericName[zh_CN]=PCMan X BBS 连线软件Comment=PCMan X BBS ClientComment[zh_TW]=PCMan X BBS 用 GTK+ 2.x 開發的自由 BBS 連線軟體Comment[zh_CN]=PCMan X BBS 用 GTK+ 2.x 开发的自由 BBS 连接软件
這個檔案中已經有不同語系的翻譯
當我使用繁體中文時,就會出現中文桌面檔名稱
lxappearance.desktop
[Desktop Entry]X-SuSE-translate=trueName=AppearanceComment=Customize the look of the desktopExec=lxappearanceIcon=preferences-desktop-themeTerminal=falseType=ApplicationStartupNotify=trueCategories=Settings;DesktopSettings;GTK;NotShowIn=GNOME;XFCE;
這是 LXDE 的桌面外觀設定程式
裏面沒有翻譯檔,但是仍可以顯示中文
這也是 openSUSE 的特異功能之一吧!
這些桌面檔翻譯都放在
/usr/share/locale/{YOUR_LANG}/LC_MESSAGES/desktop_translations.mo
例如繁體中文就在
/usr/share/locale/zh_TW/LC_MESSAGES/desktop_translations.mo
用 msgunfmt 可以將它轉回純文字的 po 檔
您就會找到
...msgid "Name(lxappearance.desktop): Appearance"msgstr "外觀設定"...msgid "Comment(lxappearance.desktop): Customize the look of the desktop"msgstr "自訂桌面外觀"...
如何運作詳情我並不清楚,反正就是可以
但看看 LXDE 的選單
寄件者 openSUSE11.3rc |
目錄還 OK 但應用程式的部份全都是英文
這是因為 lxpanel 的選單部份使用了 menu-cache
這個程式會建立快取,讓你的選單一按就毫不遲疑的跳出來(真的很爽喔)
而目前還不支援 openSUSE 的桌面檔翻譯的模式
它只會在幾個桌面檔的資料夾中找出 *.desktop 檔案,並從裏面找到該要顯示的字串及其他資料
一起放在 ~/.cache/menus/ 下的文字檔案中
lxpanel 的選單就用這個檔案來快速顯示應用程式
(以上說明均是猜測,歡迎各位指教)
我的舊電腦變成古董之後就沒安裝過 LXDE 了
直到這次在 openSUSE 11.3 rc2 上測試才發現了這個問題
順便打一下廣告:
openSUSE 11.3 已內建了 LXDE 桌面
在安裝時選擇其他桌面環境,就可以直接安裝 LXDE 桌面
真的很快...
開啟最慢的還是 firefox...囧
我用了 google-chrome 來代替
等幾天 11.3 正式版釋出再根各位做詳細報告
回到主題:
程式遇到問題,應該要去跟上游回報才是正途
但是和 Andrea (openSUSE-LXDE 的領導)通信後,他說已經和 pcman 提過
那就安心等待吧
這裡先提供一個臨時的補救方案(workaround)
既然知道問題是產生的快取檔
如果無法改變產生快取的方法
就直接去修改快取檔啊
花了一天東拼西湊成了下面的 script
(每次寫 script 都要感謝 google (以及 google 出來的結果提供者) 和 鳥哥,謝謝你們!)
menu-cache-translate.sh
#!/bin/bashfor file in `ls ~/.cache/menus/`; doN=1totalline=`wc -l ~/.cache/menus/"$file" | cut -d ' ' -f1`while [ "$N" -le "$totalline" ] ; doLINE=`head -n $N ~/.cache/menus/$file | tail -n 1`if [ `echo $LINE | grep ^"-"` ]; thenmydesktop=`echo $LINE | cut -c 2-`myname=`head -n $((N+1)) ~/.cache/menus/$file | tail -n 1`mycomment=`head -n $((N+2)) ~/.cache/menus/$file | tail -n 1`mygenericname=`head -n $((N+6)) ~/.cache/menus/$file | tail -n 1`mynametrans=`gettext -d desktop_translations -s "Name($mydesktop): $myname"`if [ ! "$mynametrans" == "Name($mydesktop): $myname" ] ; thensed -i "s/$myname/$mynametrans/g" ~/.cache/menus/$file#echo \"$myname\" has been translated to \"$mynametrans\"fimycommenttrans=`gettext -d desktop_translations -s "Comment($mydesktop): $mycomment"`if [ ! "$mycommenttrans" == "Comment($mydesktop): $mycomment" ] ; thensed -i "s/$mycomment/$mycommenttrans/g" ~/.cache/menus/$file#echo \"$mycomment\" has been translated to \"$mycommenttrans\"fimygenericnametrans=`gettext -d desktop_translations -s "GenericName($mydesktop): $mygenericname"`if [ ! "$mygenericnametrans" == "GenericName($mydesktop): $mygenericname" ] ; thensed -i "s/$mygenericname/$mygenericnametrans/g" ~/.cache/menus/$file#echo \"$mygenericname\" has been translated to \"$mygenericnametrans\"fiN=$((N+7))elseN=$((N+1))fidonedonelxpanelctl restart
您也可以直接用下面連結下載:
下載完後執行
$ sh menu-cache-translate.sh
再看看選單:
寄件者 openSUSE11.3rc |
就會出現中文翻譯了(如果有的話)
注意:每安裝一次應用程式(會有 *.desktop 檔)
menu-cache 就會刷新一次,你就得在一次執行這個 script
希望 menu-cache 很快就能辨識 openSUSE 的各種語言選單
大家加油!晚安。
沒有留言:
張貼留言