我正在寫一個AppleScript的來解析的iOS本地化文件(/en.lproj/Localizable.strings),翻譯值和輸出的翻譯(/fr.lproj/Localizable.strings)到磁盤UTF-16(Unicode)編碼。如何使用AppleScript創建和編寫UTF-16文本文件?
出於某種原因,生成的文件在每個字母之間都有一個額外的空格。在進行了一些挖掘之後,我在「瞭解AppleScript:腳本綜合指南」中找到了問題的原因。
「如果你不小心讀了UTF-16文件 爲的MacRoman,結果值可以 外觀乍一看像一個普通的 字符串,尤其是如果它包含 英文文本,你很快就會發現 那但當您嘗試使用 時,出現以下錯誤: 症狀是您的「字符串」中的每個可見字符 在它前面似乎都有一個不可見字符 例如,讀取UTF-16編碼 包含短語「你好」的文本文件3210 World!「作爲一個字符串產生一個字符串 ,比如」H l l l o W o r l d! 「,其中每個」 「實際上是一個不可見的ASCII 0字符。」
因此,例如,我的英語本地化字符串文件有:
"Yes" = "Yes";
而產生的法語本地化字符串文件:
" Y e s " = " O u i " ;
這是我CREATEFILE方法:
on createFile(fileFolder, fileName)
tell application "Finder"
if (exists file fileName of folder fileFolder) then
set the fileAccess to open for access file fileName of folder fileFolder with write permission
set eof of fileAccess to 0
write ((ASCII character 254) & (ASCII character 255)) to fileAccess starting at 0
--write «data rdatFEFF» to fileAccess starting at 0
close access the fileAccess
else
set the filePath to make new file at fileFolder with properties {name:fileName}
set the fileAccess to open for access file fileName of folder fileFolder with write permission
write ((ASCII character 254) & (ASCII character 255)) to fileAccess starting at 0
--write «data rdatFEFF» to fileAccess starting at 0
close access the fileAccess
end if
return file fileName of folder fileFolder as text
end tell
end createFile
這裏是我的WriteFile的方法:
on writeFile(filePath, newLine)
tell application "Finder"
try
set targetFileAccess to open for access file filePath with write permission
write newLine to targetFileAccess as Unicode text starting at eof
close access the targetFileAccess
return true
on error
try
close access file filePath
end try
return false
end try
end tell
end writeFile
任何想法,我做錯了嗎?
我認爲手動翻譯這將花費更少的時間比寫這個AppleScript甚至不工作。 :') – 2011-02-13 00:49:09
Radek,超過150多個短語需要翻譯成10多種語言...... – 2011-02-13 01:02:18