2009年7月23日 星期四

Pack your source codes by git archive (使用 git archive 打包程式碼)

程式碼若有使用 git 管理,要打包散佈出去的使用,可以使用 archive 來做。

[查出要打包的 tree-ish]
> git reflog
af8283a... HEAD@{0}: commit: First release!
61e0cf6... HEAD@{1}: pull : Fast forward
d5e17c4... HEAD@{2}: commit: Modify files ...
f20638e... HEAD@{3}: pull : Fast forward

[執行 git archive 指令]
> git archive --prefix myCode/ af8283a | gzip > myCode.tar.gz

[注意 umask 的問題]
umask 會影響打包的程式碼解開後的檔案或目錄權限問題。可調整 git config 中的 tar.umask 設定

2009年7月9日 星期四

Check/uncheck multiple checkboxs by javascript (使用 javascript 一次選取/取消選取多個 checkboxs)

如何使用 javascript 一次選取/取消選取多個 checkboxs?
[HTML]
假設有一段 input type 為 checkbox 的 html
...
<input name="checkRow" type="checkbox"> Row 1
<input name="checkRow" type="checkbox"> Row 2
<input name="checkRow" type="checkbox"> Row 3
<input name="checkRow" type="checkbox"> Row 4
<input name="checkRow" type="checkbox"> Row 5
<input id="selectButton" value="SELECT ALL" type="button" onclick="selectAll();">
...

[JavaScript function]
再 HTML 中加入一個 javascript function
<script type="text/javascript">
function selectAll() {
var checks = document.getElementsByName('checkRow');
var len = checks.length;
var buttonText = document.getElementById('selectButton').value;
if (buttonText == 'SELECT ALL') {
for (i=0;i<len;i++) {
checks[i].checked=true;
}
document.getElementById('selectButton').value='UN-SELECT ALL';
} else {
for (i=0;i<len;i++) {
checks[i].checked=false;
}
document.getElementById('selectButton').value='SELECT ALL';
}
}
</script>

2009年6月26日 星期五

Start GIMP in english (強制使用英文介面開啟 GIMP)

如果你的 Linux 已經改成中文的介面,可是你在開啟 GIMP 時,不想使用中文選單的介面。可使用下列方式來開啟。

編輯圖示屬性,修改啟動指令
原來可能是
gimp %U
加上 env LANGUAGE=en ,改成
env LANGUAGE=en gimp %U
這個方式也適用於其它程式喔!

2009年6月25日 星期四

i18n in django (在 django 中使用多國語言)

以下概述如何在 django 中使用多國語言

[假設]
  1. 環境:Ubuntu, django 1.0.2
  2. 已經建立一個 project : myProject
  3. 已經建立一個 app: myMessage
  4. 已經建立 myMessage 的 index.html 於 templates 目錄下
所以,會存在以下目錄結構
myProject
myProject/myMessage
myProject/templates/myMessage
myProject/templates/myMessage/index.html

[設定]
編輯 settings.py,確定有下列設定
#LANGUAGE_CODE = 'en'
LANGUAGE_CODE = 'zh-tw'
USE_I18N = True

建立語系存放目錄 locale
mkdir myProject/locale

[標示需要翻譯訊息]
編輯 myProject/templates/myMessage/index.html,加入以下 tags
{% load i18n %}
{% trans 'My Message' %}

[建立相對的語系檔案]
確定在 project 目錄下,執行 makemessages 的指令。若有錯誤訊息,表示需要的 libraries 有缺少,依訊息指示安裝。
cd myProject
django-admin makemessages -l zh_TW

[翻譯訊息]
於語系目錄中編輯 django.po,可找到之前標示要翻譯的訊息,在相對 msgid 下的 msgstr 填入要翻譯的訊息
cd myProject
vi locale/zh_TW/LC_MESSAGES/django.po

msgid "My Message"
msgstr "我的訊息"
使用 compilemessages 指令編譯訊息檔,會產生 django.mo
django-admin compilemessages -l zh_TW
重啟 server
./manage.py runserver
[完成]
連上 index.html
應可看到 My Message 已被翻譯為 "我的訊息"
以此類推,可將你 django 的 templates 中需要翻譯的訊息,按此方式,進行多國語言化。

[參考資源]
  1. Django 1.0 Template Development
  2. Django Project