使用者:Shyangs/中文化
出自 MozTW Wiki
內容大綱
教學
- 擴充套件中文化資源蒐集
- 中文化專案主頁
- 翻譯詞彙表
- Mozilla 擴充套件中文化的小教學
- Mozilla 擴展中文化的小教學
- Firefox 擴展中文化實例 教程
- 可用於 Mozilla 地方化的工具
- Mozilla Taiwan 正體中文化詞彙
- [1],中文化聯盟辭彙
- contents.rdf 檔案中的 displayName 等項目
編碼
逸出萬國碼(escaped Unicode)(UTF-16BE)(UTF-16 Big Endian)
中文化
關於 .dtd 檔
- .dtd檔,一定要是 UTF8 編碼格式儲存,且不得有BOM開頭字元
關於 .properties 檔
- 兩種編碼格式可以選擇 UTF-8 或 ANSI (ASCII)
UTF-8
- 必須是 NO BOM 的 UTF8 編碼格式儲存。
ANSI
- 一行一敘述,按 [Enter] 換行。
- 翻譯的字符串必須是 UTF-16BE 格式。
- 例如:
- 敘述 upload_center.done=Done 譯成 upload_center.done=完成 ,還必須替換字符串為 upload_center.done=\u5b8c\u6210
- 例如:
- 以 ANSI 編碼格式儲存。
編碼之選擇
- Q: 將.properties檔存成ANSI編碼格式 好像比較麻煩?
- A: 是的,存成 UTF-8 編碼格式 比較方便,也不會像天書一樣讓人看不懂;但極少數的擴充套件,對 UTF-8 的.properties檔 似乎消化不良,會出現錯誤,存成 ANSI 編碼格式 則可正常運作。例如:ImageBot v3.4.0的套件敘述,UTF-8 編碼格式會讓extensions description無法正常顯現。
- Q: 如果想要中文化某一套件,我應該選擇 UTF-8 編碼格式 還是 ANSI 編碼格式?
- A: 建議用 UTF-8 編碼格式,除非中文化後的套件出現未知錯誤,這時再用 ANSI編碼格式試試看;因為 UTF-8 編碼格式 的修改維護比 ANSI 編碼格式容易且方便。
- Q: 有那些套件的.properties翻譯檔是採用 ANSI 編碼格式?
- A: 目前較著名的有:
- Adblock Plus 0.7.2.4 的 ja-JP語系 : global.properties
- All-in-One Gestures 0.18.0 的 ja-JP語系 : allinonegest.properties
- A: 目前較著名的有:
- Q: 如果我選擇ANSI編碼格式,但是其中有某一句敘述沒有翻譯(全為英文),我是否要將該字符串轉換成UTF-16BE 格式 呢?
- A: 該字符串可以轉成 UTF-16BE 格式,也可以保留原句ANSI格式。
- 例如: 原來 en-US (ANSI) 敘述host0.name= ImageShack ,放到 zh-TW (ANSI) 可以為host0.name= ImageShack ,也可以為host0.name=\u0049\u006d\u0061\u0067\u0065\u0053\u0068\u0061\u0063\u006b
- A: 該字符串可以轉成 UTF-16BE 格式,也可以保留原句ANSI格式。
- Q: 若我選擇ANSI編碼格式,但是其中有某一句敘述中英夾雜呢?
- A: 須遵守一個要點: 不在ASCII字元表裡的字元,必須轉成 UTF-16BE 字元格式 ;若是在ASCII字元表裡的字元 則可保留原ANSI格式,也可轉成 UTF-16BE 字元格式。
- 例如: 原來 en-US (ANSI) 敘述template_editor.selected= Template selected -> %S ,放到 zh-TW (ANSI) 可以為template_editor.selected=\u7bc4\u672c\u9078\u64c7 -> %S ,也可以為template_editor.selected=\u7bc4\u672c\u9078\u64c7\u0020\u002d\u003e\u0020\u0025\u0053,但不可以是template_editor.selected=範本選擇 -> %S
- A: 須遵守一個要點: 不在ASCII字元表裡的字元,必須轉成 UTF-16BE 字元格式 ;若是在ASCII字元表裡的字元 則可保留原ANSI格式,也可轉成 UTF-16BE 字元格式。
.properties 檔 中文化實例
ImageBot v3.4.0
- 檔案 imgbot.properties
en-US : ANSI 編碼格式
extensions.{55009080-176f-11da-8cd6-0800200c9a66}.description= An Image Uploader upload_center.loginTo = Login to %S upload_center.loggedInAs= Log %S out of %S upload_center.clickToLogin= Click to Login upload_center.clickToLogout= Click to Logout upload_center.loading= Loading upload_center.done= Done upload_center.errorType= Error: File Type upload_center.errorSize= Error: File Size upload_center.errorIntegrity= Error: File Integrity upload_center.errorDupe= Error: Duplicate Image upload_center.errorMisc= Error: Miscellaneous upload_center.selectFiles= Select Files to Upload upload_center.supportedTypes= %S Supported Types upload_center.initialized= ImageBot [Upload Center] initialized on %S upload_center.imagesAdded= %S image(s) added upload_center.imagesSelected= %S image(s) selected upload_center.imagesCopied= %S image(s) copied upload_center.imagesViewed= %S image(s) viewed upload_center.imagesDeleted= %S image(s) deleted upload_center.confirmDelete= Are you sure you want to delete %S image(s)? upload_center.imagesCopiedWithTemplate= %S image(s) copied with Template -> %S upload_center.filterDeactivated= Filter Deactivated upload_center.filterActivated= Filter Activated: %S upload_center.requiresLogin= Error! %S requires you to be logged in if uploading images. template_editor.initialized= ImageBot [Template Editor] initialized on %S template_editor.selected= Template selected -> %S template_editor.movedUp= Template moved up template_editor.movedDown= Template moved down template_editor.created= New Template created template_editor.saved= Template saved template_editor.deleted= Template deleted -> %S patcher.done= Done! host0.incorrectUsernameOrPassword= Username and password you've entered do not match host0.name= ImageShack host0.syncNotLoggedIn= Error! You must be logged into %S to synchronize your images! host0.syncing= Synchronizing %S's %S Images host1.incorrectUsernameOrPassword= Incorrect Username or Password host1.tooManyFailedLogins= Too many failed login attempts host1.requiredFieldMissing= Required field missing host1.unknownError= Unknown Error
zh-TW : UTF-8 編碼格式
extensions.{55009080-176f-11da-8cd6-0800200c9a66}.description=一個圖片上傳管理器 upload_center.loginTo =登入 %S upload_center.loggedInAs=將帳戶 %S 登出 %S upload_center.clickToLogin=點此登入 upload_center.clickToLogout=點此登出 upload_center.loading=上傳中 upload_center.done=完成 upload_center.errorType=錯誤: 檔案格式 upload_center.errorSize=錯誤: 檔案大小 upload_center.errorIntegrity=錯誤: 檔案不完整 upload_center.errorDupe=錯誤: 重複的圖片 upload_center.errorMisc=錯誤: Miscellaneous upload_center.selectFiles= 選取欲上傳的檔案 upload_center.supportedTypes= %S 支援的檔案類型 upload_center.initialized= ImageBot [上傳管理中心] initialized on %S upload_center.imagesAdded=加入了 %S 張圖片 upload_center.imagesSelected=選取 %S 張圖片 upload_center.imagesCopied=複製了 %S 張圖片之網址 upload_center.imagesViewed=檢視 %S 張圖片 upload_center.imagesDeleted= 刪除了 %S 張圖片 upload_center.confirmDelete=確定要刪除這 %S 張圖片嗎? upload_center.imagesCopiedWithTemplate=複製了 %S 張 %S 樣式的範本 upload_center.filterDeactivated= Filter Deactivated upload_center.filterActivated= Filter Activated: %S upload_center.requiresLogin= 錯誤! %S 必須登入, 才可上傳圖片 template_editor.initialized= ImageBot [範本編輯] initialized on %S template_editor.selected=範本選擇 -> %S template_editor.movedUp=範本上移 template_editor.movedDown=範本下移 template_editor.created=新範本創建 template_editor.saved=範本儲存 template_editor.deleted=範本刪除 -> %S patcher.done=完成! host0.incorrectUsernameOrPassword=使用者名稱和密碼不符合 host0.name= ImageShack host0.syncNotLoggedIn=錯誤! 您必須登入 %S 才可同步處理您的圖檔! host0.syncing=同步處理 %S 的 %S 圖片 host1.incorrectUsernameOrPassword=使用者名稱或密碼輸入錯誤 host1.tooManyFailedLogins= 多次嘗試登入失敗 host1.requiredFieldMissing= Required field missing host1.unknownError=未知的錯誤
zh-TW : ANSI 編碼格式
extensions.{55009080-176f-11da-8cd6-0800200c9a66}.description=\u4e00\u500b\u5716\u7247\u4e0a\u50b3\u7ba1\u7406\u5668 upload_center.loginTo =\u767b\u5165 %S upload_center.loggedInAs=\u5c07\u5e33\u6236 %S \u767b\u51fa %S upload_center.clickToLogin=\u9ede\u6b64\u767b\u5165 upload_center.clickToLogout=\u9ede\u6b64\u767b\u51fa upload_center.loading=\u4e0a\u50b3\u4e2d upload_center.done=\u5b8c\u6210 upload_center.errorType=\u932f\u8aa4: \u6a94\u6848\u683c\u5f0f upload_center.errorSize=\u932f\u8aa4: \u6a94\u6848\u5927\u5c0f upload_center.errorIntegrity=\u932f\u8aa4: \u6a94\u6848\u4e0d\u5b8c\u6574 upload_center.errorDupe=\u932f\u8aa4: \u91cd\u8907\u7684\u5716\u7247 upload_center.errorMisc=\u932f\u8aa4: Miscellaneous upload_center.selectFiles=\u9078\u53d6\u6b32\u4e0a\u50b3\u7684\u6a94\u6848 upload_center.supportedTypes= %S \u652f\u63f4\u7684\u6a94\u6848\u985e\u578b upload_center.initialized= ImageBot [\u4e0a\u50b3\u7ba1\u7406\u4e2d\u5fc3] initialized on %S upload_center.imagesAdded=\u52a0\u5165\u4e86 %S \u5f35\u5716\u7247 upload_center.imagesSelected=\u9078\u53d6 %S \u5f35\u5716\u7247 upload_center.imagesCopied=\u8907\u88fd\u4e86 %S \u5f35\u5716\u7247\u4e4b\u7db2\u5740 upload_center.imagesViewed=\u6aa2\u8996 %S \u5f35\u5716\u7247 upload_center.imagesDeleted=\u522a\u9664\u4e86 %S \u5f35\u5716\u7247 upload_center.confirmDelete=\u78ba\u5b9a\u8981\u522a\u9664\u9019 %S \u5f35\u5716\u7247\u55ce\u003f upload_center.imagesCopiedWithTemplate=\u8907\u88fd\u4e86 %S \u5f35 %S \u6a23\u5f0f\u7684\u7bc4\u672c upload_center.filterDeactivated= Filter Deactivated upload_center.filterActivated= Filter Activated: %S upload_center.requiresLogin=\u932f\u8aa4! %S \u5fc5\u9808\u767b\u5165, \u624d\u53ef\u4e0a\u50b3\u5716\u7247 template_editor.initialized= ImageBot [\u7bc4\u672c\u7de8\u8f2f] initialized on %S template_editor.selected=\u7bc4\u672c\u9078\u64c7 -> %S template_editor.movedUp=\u7bc4\u672c\u4e0a\u79fb template_editor.movedDown=\u7bc4\u672c\u4e0b\u79fb template_editor.created=\u65b0\u7bc4\u672c\u5275\u5efa template_editor.saved=\u7bc4\u672c\u5132\u5b58 template_editor.deleted=\u7bc4\u672c\u522a\u9664 -> %S patcher.done=\u5b8c\u6210! host0.incorrectUsernameOrPassword=\u4f7f\u7528\u8005\u540d\u7a31\u548c\u5bc6\u78bc\u4e0d\u7b26\u5408 host0.name= ImageShack host0.syncNotLoggedIn=\u932f\u8aa4! \u60a8\u5fc5\u9808\u767b\u5165 %S \u624d\u53ef\u540c\u6b65\u8655\u7406\u60a8\u7684\u5716\u6a94! host0.syncing=\u540c\u6b65\u8655\u7406 %S \u7684 %S \u5716\u7247 host1.incorrectUsernameOrPassword=\u4f7f\u7528\u8005\u540d\u7a31\u6216\u5bc6\u78bc\u8f38\u5165\u932f\u8aa4 host1.tooManyFailedLogins=\u591a\u6b21\u5617\u8a66\u767b\u5165\u5931\u6557 host1.requiredFieldMissing= Required field missing host1.unknownError=\u672a\u77e5\u7684\u932f\u8aa4