Difference between revisions of "Translations-tw"

From AMule Project FAQ
Jump to: navigation, search
 
m
 
(2 intermediate revisions by the same user not shown)
Line 12: Line 12:
 
== 簡介 ==
 
== 簡介 ==
  
[[aMule]] 設計時就已考慮到各種語言顯示問題,支援 [http://www.unicode.org Unicode],因此可以直接顯示世界各國的語言文字。
+
aMule 支援 Unicode,且在設計時就已考慮到各種語言顯示問題,因此可以直接顯示世界各國的語言文字。
  
就只欠協助翻譯的熱心人士而已了。
+
就只欠協助翻譯、修正與維護的熱心人士而已了。
  
作翻譯不必懂怎麼編 [http://gcc.gnu.org C++] 程式碼或 [http://en.wikipedia.org/wiki/Klingon_language 克林貢語]!你只需要知道你自己的母語,和有基本的英語能力即可。
+
作翻譯不必懂怎麼寫程式碼,您只須有可將英語翻為其他語言的能力即可。
 
+
有興趣嗎? 立即加入吧。
+
  
  
 
== 怎麼做? ==
 
== 怎麼做? ==
  
aMule 開發團隊大約每個月更新一次[http://amule.uw.hu/translations/ 各國語言的翻譯],請找到正體中文 (Traditional Chinese) 文字檔 ''zh_TW.po'',下載並編輯它。
+
aMule 開發團隊會定期更新[http://amule.sourceforge.net/translations/ 各國語言的翻譯資訊],從該頁就可看到各種語言的翻譯情形。
  
您可以直接使用文字編輯程式編修翻譯,但也有更方便的翻譯工具程式,像是 [http://www.kde.org KDE 桌面環境]的 [http://i18n.kde.org/tools/kbabel/ KBabel]、[http://www.gnome.org Gnome 桌面環境]的 [http://www.poedit.org PoEdit],或是 [http://gtranslator.sourceforge.net/ gTranslator]。
+
請找到要想要翻譯的語言,下載 .po 文字檔並編輯它。 (就算該語言已經全翻譯完了,您仍可以檢查修正之)
  
使用這些程式時,別忘記在'''偏好設定'''中設定您的姓名、email、編碼、翻譯版本等參數。
+
如果您想翻譯的語言未列在頁中,請到[http://forum.amule.org/index.php?board=40.0 討論區]發文告知,管理員會幫您設定好新語言檔。
  
 +
<font color="red">注意:想要修改某個語言的翻譯前,也請到[http://forum.amule.org/index.php?topic=13845.0 討論區]查看是否已有人在著手翻譯中以及目前進度,以免進度重複造成時間精力的浪費</font>
  
這是 [http://i18n.kde.org/tools/kbabel KBabel] 的界面:
 
 
<center>http://www.amule.org/dev-up/kb1.png</center>
 
 
  
左上角:英文字串。
+
您可以直接使用文字編輯程式翻譯編修下載回來的 .po 檔,但也有更方便的翻譯工具程式,像是 [http://www.poedit.org PoEdit]、[http://i18n.kde.org/tools/kbabel/ KBabel] 或是 [http://gtranslator.sourceforge.net/ gTranslator]。
  
右上角:使用這個字串的檔案。
+
使用這些程式時,別忘記在'''偏好設定'''中設定您的姓名、email、編碼、翻譯版本等參數。
  
您只需要在左下角輸入翻譯的字串,像這樣:
+
<font color=#ff0000>在翻譯時要注意字串中的 &、%i、\n 等特殊字元,且首尾若有空格時應予以保留</font>
  
 +
'''請參考「[[format specifiers-tw|特殊字元]]」以瞭解哪些字元不應該被修改掉。'''
  
<center>http://www.amule.org/dev-up/kb2.png</center>
 
 
  
<font color=#ff0000>在翻譯時要注意字串中的特殊字元,像是 &、%i、\n 等等,且首尾若有空格時應予以保留</font>
+
=== POEdit ===
 +
使用 PoEdit 開啟 .po 檔後,可看到這樣的畫面:
  
'''請參考 [[format specifiers]] 以瞭解哪些字元不應該被修改掉。'''
 
  
 +
http://img516.imageshack.us/img516/481/wikipoedit1ly7.png
  
依以上要領完成翻譯後,把它貼到[http://www.amule.org/amule/index.php?topic=13845.0 翻譯論壇],這樣大家都會感謝您的貢獻。
 
  
 +
上方左側是字串清單,右側為翻譯後的字串。藍色為尚未翻譯字串、黃色為待修正字串、白色為已翻譯字串、帶星號者為本次翻譯字串、帶對話者為該字串含有註解。
  
== 如何繼續處理未完成的舊翻譯檔 ==
+
最底下狀態列則為統計數據。
  
舊版的翻譯經過處理後,可以整合套用到新版檔案上,而不必重頭翻譯起
+
選定某個字串後,下方會出現其內容:
  
例如,您想要翻譯法語版:
 
  
*手上有翻譯到一半的舊版 ''<font color="blue">fr.po</font>''。
+
http://img253.imageshack.us/img253/5157/wikipoedit2ov3.png
  
*從[http://amule.uw.hu/translations/ 翻譯公佈區]取得新的 ''fr.po'' 並另外儲存 (假設存為 ''<font color="red">fr_string.po</font>'')。
 
  
*輸入指令:
+
左側上欄為原始字串欄位,下欄為待輸入翻譯字串的欄位。圖中顯示的是有單數複數的特殊狀況,您可以依狀況輸入不同的文字。
  
msgmerge --no-fuzzy-matching -o <font color="green">new_fr.po</font> <font color="blue">fr.po</font> <font color="red">source_strings.po</font>
 
  
:就可得到將舊版整合到新版的翻譯檔 ''<font color="green">new_fr.po</font>''
+
=== KBabel ===
 +
因程式的使用介面可以自行調整,此處以預設介面為準。
  
:(您也可以使用 [http://i18n.kde.org/tools/kbabel KBabel] 或 [http://poedit.sourceforge.net PoEdit] 內建的合併工具,詳細使用方法請自行參考各該程式內的說明)
 
  
* 然後,也是用工具程式處理 ''new_fr.po'',翻譯未完成的部份。
+
http://img512.imageshack.us/img512/3183/wikikbabel1my7.png
  
  
 +
程式執行視窗左邊有:字串清單、原始字串欄位、待輸入翻譯字串的欄位。右邊則是各種資訊與統計數據。
  
<!-- 以下部份尚未修改 -->
 
  
== 測試你的翻譯 ==
+
http://img329.imageshack.us/img329/607/wikikbabel2fz0.png
  
=== First notes ===
 
  
翻譯完文件後,你需要重[[編譯]] [[aMule]],或者先測試一下你得翻譯是否成功(這一步在編譯[[compile|aMule]]得時候自動做了)
+
點下工具列中的 ''Next Fuzzy or Untranslated'' 按鈕 KBabel 就會自動跳到下一個需要翻譯或修正的字串。
  
後一個選項的好處是,你不需要重新編譯整個[[aMule]],而只需要產生翻譯的二進制文件。
 
  
建議嘗試[[#Testing only the translation file|翻譯文件測試]]知道成功,然後[[#用這個翻譯測試aMule|]]看看如何工作。
+
http://img329.imageshack.us/img329/9992/wikikbabel3uw7.png
  
=== 只測試翻譯文件 ===
 
  
==== 簡單方法 ====
+
左欄上方是原始的字串,您只需要在左下角輸入翻譯的字串即可
  
如果你沒有開發環境,你甚至不能運行''./configure'',因為它需要找到編譯器,頭文件等等。所以只能模仿源Makefiles如何做。在.po存在的目錄裡面運行''msgfmt -c --statistics -o '''translation_language'''.gmo '''translation_language'''.po''比如''msgfmt -c --statistics -o en_GB.gmo en_GB.po''。
 
  
[~/aMule/amule-dev-cvs/po]$ msgfmt -c --statistics -o en_GB.gmo en_GB.po
+
== 繼續處理未完成的舊翻譯檔 ==
1354 translated messages
+
  
提示消息的含義和下面是相同的,你可以參考它。這種方法只需要gettext,Linux和*NIX一般都安裝。
+
舊版的翻譯經過處理後,可以整合套用到新版檔案上,而不必重頭翻譯起
  
==== 更複雜的方法 ====
+
例如,您想要翻譯法語版:
  
首先,運行''./configure''.
+
*手上有翻譯到一半的舊版 ''<font color="blue">fr.po</font>''
  
現在,把翻譯放入''po/''目錄,運行''make '''translation_language'''.gmo'',比如''make en_GB.gmo''
+
*從[http://amule.uw.hu/translations/ 翻譯公佈區]取得新的 ''fr.po'' 並另外儲存 (假設存為 ''<font color="red">fr_string.po</font>'')。
  
如果你翻譯得正確,會顯示:
+
*輸入指令:
  
[~/aMule/amule-dev-cvs/po]$ make en_GB.gmo
+
  msgmerge --no-fuzzy-matching -o <font color="green">new_fr.po</font> <font color="blue">fr.po</font> <font color="red">fr_strings.po</font>
rm -f en_GB.gmo && /usr/bin/msgfmt -c --statistics -o en_GB.gmo en_GB.po
+
1354 translated messages
+
  
上面是個成功的完整的翻譯。
+
:就可得到將舊版整合到新版的翻譯檔 ''<font color="green">new_fr.po</font>''
  
一個「成功」的翻譯,無論是否完整,因為沒有語法錯誤所以可以使用。
+
:(您也可以使用 [http://i18n.kde.org/tools/kbabel KBabel] 或 [http://poedit.sourceforge.net PoEdit] 內建的合併工具,詳細使用方法請自行參考各該程式內的說明)
  
一個成功的但是不完整的翻譯如下:
+
* 然後,也是用工具程式處理 ''new_fr.po'',翻譯未完成的部份。
 
+
[~/aMule/amule-dev-cvs/po]$ make ru.gmo
+
rm -f ru.gmo && /usr/bin/msgfmt -c --statistics -o ru.gmo ru.po
+
1333 translated messages, 79 untranslated messages.
+
 
+
這樣,翻譯中的79行需要重新翻譯。
+
 
+
你的翻譯可能會有失真。失真翻譯是[http://www.gnu.org/software/gettext gettext]給出猜測的翻譯,可能是錯的(也可能很接近)。他們用''#, fuzzy''標識。如果你有失真翻譯,搜索並改正他們(如果沒問題只需要除掉''#, fuzzy''這行)。
+
 
+
下面是一個失真翻譯的輸出:
+
 
+
[~/aMule/amule-dev-cvs/po]$ make hr.gmo
+
rm -f hr.gmo && /usr/bin/msgfmt -c --statistics -o hr.gmo hr.po
+
544 translated messages, 412 fuzzy translations, 443 untranslated messages.
+
  
最後,你的翻譯可能有錯。這樣的話,你的文件會報告所有錯誤,每個錯誤都有一個解釋。
 
  
[~/aMule/amule-dev-cvs/po]$ make de.gmo
+
== 測試翻譯 ==
rm -f de.gmo && /usr/bin/msgfmt -c --statistics -o de.gmo de.po
+
請使用以下指令來測試翻譯是否有誤:
de.po:88: number of format specifications in 'msgid' and 'msgstr' does not match
+
/usr/bin/msgfmt: found 1 fatal error
+
make: *** [de.gmo] Error 1
+
  
在上面的例子中,在88行的翻譯有一個錯誤,所以要修改這個錯誤,否則不會有二進制翻譯生成。
+
  msgfmt -c --statistic ''language code''.po
  
=== 測試 [[aMule]] ===
+
結果範例:
  
==== 簡單方法 ====
+
  $ msgfmt -c --statistics zh_TW.po
 +
  1428 translated messages, 58 fuzzy translations, 32 untranslated messages.
  
如果你的aMule不是老到翻譯已經不兼容的地步,你可以直接安裝以前的made結果(也就是.gmo文件)直接測試,不需要編譯。
+
如有出現無法理解的錯誤或問題,歡迎到[http://forum.amule.org/index.php?board=40.0 討論區]尋求協助。
  
<font color=#ff0000>警告:你必須備份當前的 /usr/share/locale/'''your_language'''/LC_MESSAGES/amule.mo。你必須有足夠的權限去修改文件。另外,有可能讓你的aMule安裝崩潰。如果是這樣,恢復原來的amule.mo文件。</font>
 
  
 +
== 翻譯完成 ==
 +
請在[http://forum.amule.org/index.php?topic=13845.0 討論區]下各該語言的討論串發文,並以附件方式上傳完成翻譯或修改的 .po 檔。
  
下面就是例子。看懂這個例子。在'''your_language'''.gmo (這裡是en_GB.gmo)存在的目錄裡面:
+
如果沒有該語言的討論串,請在[http://forum.amule.org/index.php?board=40.0 此頁]下自行建立新討論串。
  
$ cp /usr/share/locale/en_GB/LC_MESSAGES/amule.mo .
 
$ cp en_GB.gmo /usr/share/locale/en_GB/LC_MESSAGES/amule.mo
 
  
如果第一個''cp''提示文件不存在,你需要把目錄(這裡是 /usr/share/...)切換到aMule安裝的目錄,比如/usr/X11R6/share/... 或者/usr/local/share/...
+
== 常見問題 ==
 +
=== 模糊字串 ===
 +
當程式使用的原始字串變更後,相對的翻譯就會被標為模糊翻譯,表示該翻譯必須再經檢查是否有問題。
  
如果第二個''cp''提示"Permission denied",說明你沒有足夠權限修改它。多數情況下你需要root權限。
+
例如:原始字串從 "Delete server?" 改成 "Do you really want to remove the server?" 後,翻譯也許符合,但仍可以翻譯得更切合原始字串。甚至有時原始字串會更改成意思差更多,導致翻譯完全配合不上,這時就必須修正翻譯。
  
==== 更複雜的方式 ====
 
  
你可以通過[[compile|重新編譯aMule]]觀察結果來測試你的翻譯。
+
=== 測試時的問題協助 ===
 +
如果在測試時發生錯誤,請參考相關解決方法:
  
如果你的語言沒有被[[aMule]]支持,你必須把它加入數據庫中,這樣[[aMule]]就可以知道它存在並用它[[編譯]]。這麼做需要把你的語言的代碼加入''po/LINGUAS''文件(每種語言一行)。
+
* ''end-of-line within string''
 +
** 字串以 " (引號) 開頭,但沒有用另一個 " 結束。請到錯誤訊息顯示的行數,在行尾加入引號。
  
現在可以[[編譯]] [[aMule]]。如果你需要幫助,[[compile|參考本指南]]。
+
*  ''format specifications in 'msgid' and 'msgstr' for argument 1 are not the same''
 +
** 有些字串中會有 %s %d 等特殊字元,用來顯示一些特殊變數。請到錯誤訊息顯示的行數,比對原始字串與翻譯,查看是否將特殊字元修掉了。
  
 +
* ''number of format specifications in 'msgid' and 'msgstr' does not match''
 +
** 與上一個錯誤類似,您可能修掉了某幾個特殊字元導致數目不符。請到錯誤訊息顯示的行數,比對原始字串與翻譯,查看是否將特殊字元修掉了。
  
== 高級翻譯 ==
+
* ''`msgid' and `msgstr' entries do not both end with '\n'''
 +
** '\n' 為換行用的特殊字元。翻譯的行數必須與原始字串行數相同,請檢查修正至相同行數。
  
如果你不是開發或者Linux新手,或者你不耐煩等待總想要最新的翻譯...
 
  
自己生成''source_strings.po''!
+
=== 複數形式 ===
 +
英語、德語等許多語言的單位、數字在單數、複數時會有所不同,這時就必須區分開來翻譯。
  
如何進行?
+
首先要在 .po 檔頭加入設定,以德語為例:
  
* 從http://amule.hirnriss.net下載最新的[[aMule]] [http://www.gnu.org/software/cvs CVS] 快照
+
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
  
* 解壓縮檔案文件,進入根目錄並生成[http://www.gnu.org/software/make Makefiles]
+
有複數型態的字串 (仍是以德語為例)
  
<code>
+
  #: src/kademlia/routing/RoutingZone.cpp:141
'''tar -xjf aMule-cvs-20041009.tar.bz2'''<br>
+
  #, c-format
'''cd amule-cvs'''<br>
+
  msgid "Read %u Kad contact"
'''./configure'''<br>
+
  msgid_plural "Read %u Kad contacts"
</code>
+
  msgstr[0] "Lese %u Kad-Kontakt"
 +
  msgstr[1] "Lese %u Kad-Kontakte"
  
* 更新 ''POTFILE.in'' 檔案:
+
第一個 ''msgid'' 表示單數的字串,''msgid_plural'' 表示複數的字串。
  
<pre>
+
而每一個 ''msgstr'' 按語言設定而不同,在德語中 ''msgstr[0]'' 用於單數、''msgstr[1]'' 用於複數。大多數語言也是如此運用。
grep -m 1 '_(' `find * -name "*.cpp"` | cut -d: -f1 > po/POTFILES.in
+
</pre>
+
  
* 複製新的 ''zh_TW.po'':
 
  
<pre>
+
=== 我用的編輯程式無法直接跳行 ===
cd po
+
[http://forum.amule.org/index.php?topic=14699.msg77946#msg77946 kpeace1 撰寫了一個 script],可用來將行號轉為 msgid。
mv amule.pot amule.pot.old
+
make amule.pot
+
mv amule.pot zh_TW.po
+
mv amule.pot.old amule.pot
+
</pre>
+
  
* [[Translations#How_to_proceed|翻譯]]新的 ''zh_TW.po'',然後貼到[http://www.amule.org/amule/index.php?topic=13845.0 論壇],由開發團隊將它加入原始碼中。
+
  #!/usr/bin/env python
 +
 
 +
  import sys
 +
 
 +
  if (len(sys.argv) < 3):
 +
      print "usage:\t", sys.argv[0], "file_name ", "line#"
 +
 
 +
  file_name =  sys.argv[1]
 +
  line_number = int(sys.argv[2])
 +
 
 +
  po_file = open(file_name)
 +
  i = 0
 +
  msgid = 0
 +
 
 +
  for line in po_file:
 +
      i = i + 1
 +
      if (line[:5] == "msgid"):
 +
          msgid = msgid + 1
 +
 
 +
      if (line_number == i):
 +
  print "error in msgid no.", msgid-1
 +
  sys.exit(0)
  
  
 
----
 
----
<!-- modified from [[Translations-cn|简体中文]] -->
 

Latest revision as of 10:30, 15 April 2009

English | 简体中文 | 正體中文 | Deutsch | Español | Português | Korean | Russian

簡介

aMule 支援 Unicode,且在設計時就已考慮到各種語言顯示問題,因此可以直接顯示世界各國的語言文字。

就只欠協助翻譯、修正與維護的熱心人士而已了。

作翻譯不必懂怎麼寫程式碼,您只須有可將英語翻為其他語言的能力即可。


怎麼做?

aMule 開發團隊會定期更新各國語言的翻譯資訊,從該頁就可看到各種語言的翻譯情形。

請找到要想要翻譯的語言,下載 .po 文字檔並編輯它。 (就算該語言已經全翻譯完了,您仍可以檢查修正之)

如果您想翻譯的語言未列在頁中,請到討論區發文告知,管理員會幫您設定好新語言檔。

注意:想要修改某個語言的翻譯前,也請到討論區查看是否已有人在著手翻譯中以及目前進度,以免進度重複造成時間精力的浪費


您可以直接使用文字編輯程式翻譯編修下載回來的 .po 檔,但也有更方便的翻譯工具程式,像是 PoEditKBabel 或是 gTranslator

使用這些程式時,別忘記在偏好設定中設定您的姓名、email、編碼、翻譯版本等參數。

在翻譯時要注意字串中的 &、%i、\n 等特殊字元,且首尾若有空格時應予以保留

請參考「特殊字元」以瞭解哪些字元不應該被修改掉。


POEdit

使用 PoEdit 開啟 .po 檔後,可看到這樣的畫面:


http://img516.imageshack.us/img516/481/wikipoedit1ly7.png


上方左側是字串清單,右側為翻譯後的字串。藍色為尚未翻譯字串、黃色為待修正字串、白色為已翻譯字串、帶星號者為本次翻譯字串、帶對話者為該字串含有註解。

最底下狀態列則為統計數據。

選定某個字串後,下方會出現其內容:


http://img253.imageshack.us/img253/5157/wikipoedit2ov3.png


左側上欄為原始字串欄位,下欄為待輸入翻譯字串的欄位。圖中顯示的是有單數複數的特殊狀況,您可以依狀況輸入不同的文字。


KBabel

因程式的使用介面可以自行調整,此處以預設介面為準。


http://img512.imageshack.us/img512/3183/wikikbabel1my7.png


程式執行視窗左邊有:字串清單、原始字串欄位、待輸入翻譯字串的欄位。右邊則是各種資訊與統計數據。


http://img329.imageshack.us/img329/607/wikikbabel2fz0.png


點下工具列中的 Next Fuzzy or Untranslated 按鈕 KBabel 就會自動跳到下一個需要翻譯或修正的字串。


http://img329.imageshack.us/img329/9992/wikikbabel3uw7.png


左欄上方是原始的字串,您只需要在左下角輸入翻譯的字串即可


繼續處理未完成的舊翻譯檔

舊版的翻譯經過處理後,可以整合套用到新版檔案上,而不必重頭翻譯起

例如,您想要翻譯法語版:

  • 手上有翻譯到一半的舊版 fr.po
  • 翻譯公佈區取得新的 fr.po 並另外儲存 (假設存為 fr_string.po)。
  • 輸入指令:
 msgmerge --no-fuzzy-matching -o new_fr.po fr.po fr_strings.po
就可得到將舊版整合到新版的翻譯檔 new_fr.po
(您也可以使用 KBabelPoEdit 內建的合併工具,詳細使用方法請自行參考各該程式內的說明)
  • 然後,也是用工具程式處理 new_fr.po,翻譯未完成的部份。


測試翻譯

請使用以下指令來測試翻譯是否有誤:

 msgfmt -c --statistic language code.po

結果範例:

 $ msgfmt -c --statistics zh_TW.po
 1428 translated messages, 58 fuzzy translations, 32 untranslated messages.

如有出現無法理解的錯誤或問題,歡迎到討論區尋求協助。


翻譯完成

請在討論區下各該語言的討論串發文,並以附件方式上傳完成翻譯或修改的 .po 檔。

如果沒有該語言的討論串,請在此頁下自行建立新討論串。


常見問題

模糊字串

當程式使用的原始字串變更後,相對的翻譯就會被標為模糊翻譯,表示該翻譯必須再經檢查是否有問題。

例如:原始字串從 "Delete server?" 改成 "Do you really want to remove the server?" 後,翻譯也許符合,但仍可以翻譯得更切合原始字串。甚至有時原始字串會更改成意思差更多,導致翻譯完全配合不上,這時就必須修正翻譯。


測試時的問題協助

如果在測試時發生錯誤,請參考相關解決方法:

  • end-of-line within string
    • 字串以 " (引號) 開頭,但沒有用另一個 " 結束。請到錯誤訊息顯示的行數,在行尾加入引號。
  • format specifications in 'msgid' and 'msgstr' for argument 1 are not the same
    • 有些字串中會有 %s %d 等特殊字元,用來顯示一些特殊變數。請到錯誤訊息顯示的行數,比對原始字串與翻譯,查看是否將特殊字元修掉了。
  • number of format specifications in 'msgid' and 'msgstr' does not match
    • 與上一個錯誤類似,您可能修掉了某幾個特殊字元導致數目不符。請到錯誤訊息顯示的行數,比對原始字串與翻譯,查看是否將特殊字元修掉了。
  • `msgid' and `msgstr' entries do not both end with '\n'
    • '\n' 為換行用的特殊字元。翻譯的行數必須與原始字串行數相同,請檢查修正至相同行數。


複數形式

英語、德語等許多語言的單位、數字在單數、複數時會有所不同,這時就必須區分開來翻譯。

首先要在 .po 檔頭加入設定,以德語為例:

 "Plural-Forms: nplurals=2; plural=n != 1;\n"

有複數型態的字串 (仍是以德語為例):

 #: src/kademlia/routing/RoutingZone.cpp:141
 #, c-format
 msgid "Read %u Kad contact"
 msgid_plural "Read %u Kad contacts"
 msgstr[0] "Lese %u Kad-Kontakt"
 msgstr[1] "Lese %u Kad-Kontakte"

第一個 msgid 表示單數的字串,msgid_plural 表示複數的字串。

而每一個 msgstr 按語言設定而不同,在德語中 msgstr[0] 用於單數、msgstr[1] 用於複數。大多數語言也是如此運用。


我用的編輯程式無法直接跳行

kpeace1 撰寫了一個 script,可用來將行號轉為 msgid。

 #!/usr/bin/env python
 
 import sys
 
 if (len(sys.argv) < 3):
     print "usage:\t", sys.argv[0], "file_name ", "line#"
 
 file_name =  sys.argv[1]
 line_number = int(sys.argv[2])
 
 po_file = open(file_name)
 i = 0
 msgid = 0
 
 for line in po_file:
     i = i + 1
     if (line[:5] == "msgid"):
         msgid = msgid + 1
 
     if (line_number == i):
 	print "error in msgid no.", msgid-1
 	sys.exit(0)