So-net無料ブログ作成

【実装】7days to dieを日本語化してみる [7days to Die]

よいよ、7days to dieのアプリケーションを日本語化してみます。
(ソースは下の方です。日本語化データベースは別で公開しますが、まだ全部終わっていないので・・・)
日本語化にする際には、必ずバックアップは取っておいてください。最悪再インストールをすればいいのですけれどね。

日本語化するテキストは必ずファイルエンコードがUTF-8でなくてはいけません。自分で編集する場合はご注意ください。



1) まず、抽出して日本語化編集したテキストを用意します。

ext_ss1.png

2) ページの下のスクリプトを実行する
※ 実行する際は、ログ表示にしていると現在の進行状況が表示されます。終了するのに、だいたい、5分ほどかかります)
・実行すると、まずは、日本語化した後のファイルの出力先のフォルダを選ぶためのダイアログが出ます。
 (スクリプト実行の最後に直接アプリケーションを書き換えることができますが、それをキャンセルして手動で書き換えをするためのファイルを保存しておくための場所の指定です。)
・次に、主にアイテムなどの名前の設定されたLocalization.txtを書き換えるための日本語化ファイルの場所を指定するダイアログが出ます。(自作してます)
・さらにクエストを日本語化するためのLocalization - Quest.txtファイルの場所を指定するダイアログが出ます。(7days to die 日本語wiki様より完成したものをお借りしています>

元データベーステキストLocalization.txtとLocalization - Quest.txtの英語(English)の部分を差し替えていきます。
差し替えが終わるとダイアログが表示され、
ext_ss2.png
自動で差し替えます。

実行してみました。


ext_ss3.png

ようやく、日本語でプレイできますね。

まだまだ、翻訳が終わっていない部分があるのでがんばりどころですが、日本語対応で安心してできそうです。


今回までのファイルを別サイトにおいておきました。欲しい方は拾ってください。
(日本語化が途中ですけどね)











- ソースはここから

(* 合成をするファイルの選択 *)
tell application "Finder"
set Folder7DTD to (POSIX path of (home as text)) & "Library/Application Support/Steam/steamapps/common/7 Days To Die/7DaysToDie.app"
set locationURLA1 to Folder7DTD & "/Data/Config/Localization.txt"
set locationURLA2 to Folder7DTD & "/Data/Config/Localization - Quest.txt"
activate
set locationURL to choose folder with prompt "日本語情報の書き出しフォルダを選択"
try
make new folder at locationURL with properties {name:"output"}
end try
set locationURLB to folder "output" of locationURL
try
set f to name of locationURLB
on error
set f to ""
end try
if f is "" then return
try
make new file at locationURLB with properties {name:"Localization.txt"}
end try
try
make new file at locationURLB with properties {name:"Localization - Quest.txt"}
end try
set locationURLC1 to (locationURLB as text) & "Localization.txt"
set locationURLC2 to (locationURLB as text) & "Localization - Quest.txt"
end tell
(* データの確認 *)
--元データ読み込み
set appData1 to do shell script ("cat '" & (POSIX path of (locationURLA1 as text)) & "'")
set appData2 to do shell script ("cat '" & (POSIX path of (locationURLA2 as text)) & "'")
if (appData1 contains "adobeGroupDesc") and (appData1 contains "quest") then
log "読み込む元1 " & locationURLA1
log "読み込む元2 " & locationURLA2
log "書き出し先1 " & locationURLC1
log "書き出し先2 " & locationURLC2
log ">>> 確認できました"
else
log "確認エラー"
return
end if
--改めて読み込みデータ確認
activate
set locationURLB1 to choose file with prompt "[Localization.txt]の日本語情報ファイルの選択"
if ((locationURLB1 as text) contains "Quest.txt") then
log "Quest.txt が選択されたようなので終了します"
return
end if
delay 0.5
set locationURLB2 to choose file with prompt "[Localization - Quest.txt]の日本語情報ファイルの選択"
set jpData1 to do shell script ("cat '" & (POSIX path of (locationURLB1 as text)) & "'")
set jpData2 to do shell script ("cat '" & (POSIX path of (locationURLB2 as text)) & "'")
if (jpData1 contains "adobeGroupDesc") and (jpData1 contains "quest") then
log "日本語情報1 " & locationURLA1
log "日本語情報2 " & locationURLA2
log ">>> 確認できました"
else
log "確認エラー"
return
end if
(* 日本語変換データの確認 *)
--1
set c2 to 0
set oneLine to paragraph 2 of jpData1
repeat with i from 1 to 5
set c to offset in oneLine of ","
if c > 0 then
set c2 to c2 + 1
try
set oneLine to text (c + 1) thru -1 of oneLine
on error
exit repeat
end try
else
exit repeat
end if
end repeat
if c2 > 2 then
set jpData1 to my extraction(locationURLB1)
end if
--2
set c2 to 0
set oneLine to paragraph 2 of jpData1
repeat with i from 1 to 5
set c to offset in oneLine of ","
if c > 0 then
set c2 to c2 + 1
try
set oneLine to text (c + 1) thru -1 of oneLine
on error
exit repeat
end try
else
exit repeat
end if
end repeat
if c2 > 2 then
set jpData1 to my extraction(locationURLB1)
end if
(* 合成前のナンバーリング *)
log "Numberring"
set CR to (ASCII character 13)
--1
set dataD1 to ""
set countNo to 0
repeat with obj in (every paragraph of jpData1)
set countNo to countNo + 1
set noText to text -5 thru -1 of ("0000" & (countNo as text))
set dataD1 to dataD1 & ((noText & " " & obj) as text) & CR
end repeat
set comment1 to "ナンバーリング確認1 : " & (paragraph 2 of dataD1)
log comment1
--2
set dataD2 to ""
set countNo to 0
repeat with obj in (every paragraph of jpData2)
set countNo to countNo + 1
set noText to text -5 thru -1 of ("0000" & (countNo as text))
set dataD2 to dataD2 & ((noText & " " & obj) as text) & CR
end repeat
set comment2 to "ナンバーリング確認2 : " & (paragraph 2 of dataD2)
log comment2
if (comment1 contains ",") and (comment2 contains ",") then
log "準備ができました"
else
log "Err..."
return
end if
(* 合成 *)
log "最終データを作成します"
--1
set countA to 0
set data4 to (paragraph 1 of appData1) & CR
set cc2 to count of (every paragraph of appData1)
repeat with obj in (every paragraph of appData1)
set countA to countA + 1
set c to offset in obj of ","
set oneWord to " " & (text 1 thru c of obj)
set offsetNo to offset in dataD1 of oneWord
if offsetNo < 7 then
set data4 to data4 & obj & CR
else
set lineNo to (text (offsetNo - 5) thru (offsetNo - 1) of dataD1) as integer
set obj2 to paragraph lineNo of jpData1
set offsetNo to (offset in obj2 of ",") + 1
set x2 to text offsetNo thru -1 of obj2
set x1 to ""
repeat 4 times
set cc to offset in obj of ","
set x1 to x1 & (text 1 thru cc of obj)
set obj to text (cc + 1) thru -1 of obj
end repeat
set x1 to x1 & x2
set cc to offset in obj of ","
set obj to x1 & (text cc thru -1 of obj)
set data4 to data4 & obj & CR
if (countA mod 200) is 1 then log {("Localization Text > " & ((countA / cc2 * 100) as integer) & "%"), obj}
end if
end repeat
log ("Localization Text > 100%")
set f1 to my saveFileUTF8(locationURLC1, data4)
--2
set countA to 0
set data5 to (paragraph 1 of appData2) & CR
set cc2 to count of (every paragraph of appData2)
repeat with obj in (every paragraph of appData2)
set countA to countA + 1
set c to offset in obj of ","
set oneWord to " " & (text 1 thru c of obj)
set offsetNo to offset in dataD2 of oneWord
if offsetNo < 7 then
set data4 to data4 & obj & CR
else
set lineNo to (text (offsetNo - 5) thru (offsetNo - 1) of dataD2) as integer
set obj2 to paragraph lineNo of jpData2
set offsetNo to (offset in obj2 of ",") + 1
set x2 to text offsetNo thru -1 of obj2
set x1 to ""
repeat 4 times
set cc to offset in obj of ","
set x1 to x1 & (text 1 thru cc of obj)
set obj to text (cc + 1) thru -1 of obj
end repeat
set x1 to x1 & x2
set cc to offset in obj of ","
set obj to x1 & (text cc thru -1 of obj)
set data5 to data5 & obj & CR
if (countA mod 200) is 1 then log {("Quest Text > " & ((countA / cc2 * 100) as integer) & "%"), obj}
end if
end repeat
log ("Quest Text > 100%")
set f2 to my saveFileUTF8(locationURLC2, data5)
log " >>> すべてが完了しました (Localization - " & (f1 as text) & ": Quest - " & (f2 as text) & ")"
display dialog "アプリケーションへの『日本語化の変更』をしてもよろしいですか?" & return & "ここでキャンセルしても手動で変更できます"
set f1 to my saveFileUTF8(locationURLA1, data4)
set f2 to my saveFileUTF8(locationURLA2, data5)
log " >>> すべてが完了しました (Localization - " & (f1 as text) & ": Quest - " & (f2 as text) & ")"
log "日本語化が全て終了しました。おつかれさまでした。"
return
(* ここからは共通 *)
on extraction(locationURL)
set textItem to do shell script "cat '" & (POSIX path of ((locationURL) as text)) & "'"
set data1 to ""
repeat with i from 1 to (count of (every paragraph of textItem))
set oneLine to paragraph i of textItem
if oneLine contains "," then
set ans to {}
repeat with i from 1 to 5
set c to offset in oneLine of ","
if c is 1 then
set ans to ans & {""}
else
set ans to ans & {(text 1 thru (c - 1) of oneLine)}
end if
set oneLine to text (c + 1) thru -1 of oneLine
end repeat
set data1 to data1 & (item 1 of ans) & ", " & (item 5 of ans) & (ASCII character 11)
end if
end repeat
end extraction
on saveFileUTF8(locationURL, saveData)
set locationURL to locationURL as text
if locationURL is "" then return false
if locationURL contains "/" then set locationURL to (locationURL as POSIX file) as text
set f to false
try
set fn to open for access locationURL with write permission
set eof of fn to 0
write saveData to fn as «class utf8»
set f to true
end try
try
close access fn
end try
return f
end saveFileUTF8

--ここまで



nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:ゲーム

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0