[探しています] .tlk の中身を .xls か .csv に StringID 込みで出力できるツール
Garyou_Tensei
Member, Translator (NDA) Posts: 62
.tlk の中身を .xls か .csv に StringID 込みで出力できるツールを探しています。
BG1のMODまわりに詳しい方などで、ご存じの方がいらっしゃいましたらご教授ください。
BG1のMODまわりに詳しい方などで、ご存じの方がいらっしゃいましたらご教授ください。
0
Comments
下のCameronさんのコメントからすると、
おそらくGoogleのスプレッドシートを使えば出来るのではないでしょうか。
http://forum.baldursgate.com/discussion/2415/quality-control-process-for-translating
>下のCameronさんのコメントからすると、
>おそらくGoogleのスプレッドシートを使えば出来るのではないでしょうか。
>http://forum.baldursgate.com/discussion/2415/quality-control-process-for-translating
中の方々はGoogle Spreadsheetsには内製ツール(?)で.tlkから出力しているものから貼りつけているようなので、専用ツールが必要のようなのです。(←その内製ツールを提供してくれー、と最初にリクエストすべきだったかもしれませんが。)
BG1のMODdingで当時多用されていたツールはツイッターのフレンドが見つけて教えてくれましたので手元にありますが、できれば .txt を介さずに(同ツールの出力書式が.csv等ではないため、毎回整形が必要になってしまい、"誰にでも簡単にできる"感触ではないのです)直で .tlk <-> .xls ができればな…と思っての質問でした。
ベータテストフォーラムで、ドイツ語チームが作った、まさしくそのような用途のツールの情報がもらえましたので、お借りできないかコンタクト中です。2バイト対応してますように…
Tlkv1のフォーマットを見てみました。難しいものではなかったので必要でしたら言っていただければ、すぐに作れると思います。
自分が日本語版を持っていないのと、マルチバイトについては情報の記載がないので、文字コードが何で保存されているかがちょっとわかりませんが。。英語版はASCIIぽかったです。
はじめまして、日本語化チームの勝手に切り込み隊長、@Garyou_Tensei です。
お申し出ありがとうございます!
現在、ドイツ語チームが開発したという、とある .tlk->.xlsxの出力ツールと水面下で格闘しております。
手元での作業に問題があるせいか(恥)、出力が開始直後に止まってしまうので開発者に問い合わせ中です。
↑仮にですが、同ツールが日本語仕様の.tlkでも上手く使えるようになった場合、
むしろあれば翻訳時に重宝確実なのが、<.xls(x)から手元で.tlkを出力できるツール>です。
これがあれば開発の中の人を煩わせずに、最新の翻訳データを手元で.tlkに変換してベータテスト版に仮実装して確認できるからです。
もし可能であれば、この .xls(x) -> .tlk 方向のツール開発をご検討いただけますでしょうか。
(なお、Cameronに、部内で .xls(x)->.tlk および .tlk -> .xls(x) の処理に使っているツールを提供してもらえるかどうかの問い合わせを怠っておりましたので、そちらも(半ばダメ元ですが)問い合わせてみます。)
- - -
.tlkの仕様は http://iesdp.gibberlings3.net/file_formats/ie_formats/tlk_v1.htm に英語であります。
(※必要であれば和訳しますのでお申しつけください!)
試験材料として、英語版でよければ、各種 dialog.tlk のいくつかが http://bgtlk.cpptea.com/ からDL可能です。
(日本語仕様の.tlkが必要でしたらお申しつけください)
インデックス番号だとすると、実際のtlkの中には該当するような番号のフィールドはないので、便宜的に通し番号をつけているのかなと思います。
後問題がなければ、日本語のtlkを提供いただけると助かります。文字コードの確認とLangIDやマルチバイトテキストのデータ長の仕様など確認したいです。
ありがとうございます。
StringIDはテキストストリングの通し番号です。tlk内にデータがないのは存じませんでした。
(今回のBG1EE新訳分ファイルを含め、今まで見た.tlkからの出力ファイルにいずれも通し番号が振ってあったからかもしれません。)
日本語のdialog.tlk についてはメッセージをお送りします。
>StringID
Garyou_Tensei さんのブログで話題にあがっていた「Tlkconverter」ですが、だいぶ前に入手してあったものを今でも使用しています。
そこで、BG1の女性主人公用tlkファイルを変換してみたのですが、台詞はみんな以下のような番号が振られています
*-*-* 30
セブン・サンズは町の南西にある。皆の健闘を祈る。セブン・サンズで調査を終えたら、直ちにセブン・サンズの西にあるフレイミング・フィストへ戻り、私に報告しにくるのを忘れないように。
例として貼り付けたのはフレイミングフィストのスカールの台詞ですが、
この台詞に限らず、どの台詞も、上に「*-*-*」が入っていて、次に番号が振られています。
そして台詞を挟んで@が5個入っていました。←これが何を意味しているのかはわかりません
Garyou_Tensei さんの言われる「StringID」は、この、台詞の上に振られている番号のことだと思います。
iniファイルをいじることで、ゲーム内にもこの番号を表示させることが出来るはずです。
このテキストファイルを、テキストエディタを使ってCSVファイルに変換してExcelで読み込んだらどうかしらと、シンプルと言うよりすごく簡単なことを考えてしまったのですが(^^;
私が使用したのはEmEditorというテキストツールですが、大抵のツールではテキストファイルをCSVに変換することは出来そうです。
・StringIDについて
ですね、おっしゃっている通し番号のことです。
>iniファイルをいじることで、ゲーム内にもこの番号を表示させることが出来るはずです。
これを可能にする追加表記は何でしたっけ。当時は暗記していたのですが、記憶がおぼろげです。
- - -
・.tlk -> .Excel
>このテキストファイルを、テキストエディタを使ってCSVファイルに変換してExcelで読み込んだらどうかしらと、シンプルと言うよりすごく簡単なことを考えてしまったのですが(^^;
秀丸のキー操作記録→反復(機能の正式名称失念)でもできますが、a)Overhaul/Beamdogの仲の方々のGoogle Docsの使いかたを見た限り、BG1EEのベータ版がアップデートされるたびにそこから最新英語テキストを吸い出すことになりそうなので、および、b)他のチームも使いたがるかもしれないことより、また、c)本プロジェクト終了後も新旧BGシリーズのMOD開発に際した需要があると思われるため、できる限り単純で間口の広い手段が欲しいのです。
加えて、背中合わせで .xls(x) -> .tlk の実装手段も欲しいところです。
※ここらはブログのコメント欄のsoryumさんへの返答に詳述しました:
http://garyoutensei.wordpress.com/2012/08/18/baldurs-gate-extended-edition-の公式有志翻訳プロジェクト(へのお誘/#comments
…ここら辺のことを今この段階で合理化できれば、BG2EEやその後にも有用かと思われます。
- - -
なお、話の腰を折りかねない展開で恐縮なのですが、ダメ元でCameronToferに「内製のツールを .tlk->.xls(x) と .xls(x) -> .tlk 両方向分公開して~」と打診したところ、つい先ほど「I should be able to release it, I'll get it ready.」との返答がありましたので、もしかすると公式のツールが提供されるかもしれません。
>これを可能にする追加表記は何でしたっけ。当時は暗記していたのですが、記憶がおぼろげです。
>baldur.ini の Program Options 内にある Str Ref On=0 という行を =1
>に書き換えれば
>ゲーム中のテキストにその通し番号が併記されるようになるはずです。
と、当時のメールに書かれていましたので、今試しにやってみたところ
番号が表記されるようになったのを確認しました。
ただ、元々640×480の画面なせいか、かなり見づらくはなりますが。
BG1とBG2で共通しているアイテムの説明文のStringIDは、同じなんですね。
今二つを見比べていて気づきました。
でも同じアイテム、同じIDにもかかわらず、BG2ではあちこちに修正が加えられていまして、
それもまた通しで遊んだときの違和感に繋がっているように思います
まあこれは既訳部分のお話ですから、こっちに手をつけられるようになるのはだいぶ先の話ですので、
そんなこともあるということだけお知りおきください
>baldur.ini の Program Options 内にある Str Ref On=0 という行を =1
>に書き換えれば
>ゲーム中のテキストにその通し番号が併記されるようになるはずです。
そ れ だ -!
DisplayStringID=1 だっけ、それともShowStringID=1だっけ、等々、悶々としておりました。
ありがとうございます。
いやいや、お役に立てて何より(^^)
BG1も2も日本語版が出たばかりのころにはいろんなツールが出回っていて、先行して発売された英語版ユーザーの皆さんからいろいろと教えていただいたものです(笑)
多分その当時やりとりしていたメールに書かれていたものだと思います。
BG1では隠しアイテムの場所などもたくさんおしえていただきました。
いろいろ調べているうちについ攻略サイトなんぞ立ち上げてしまって今に至っていますので、当時教えていただいたShadowkeeperやtlkconverter、InfinityExplorerなどは今でも重宝してますよ(笑)
https://docs.google.com/uc?id=0B8w0rImZJdx0V0Q1RElqR0xPN3M&hl=ja
ツールは、コマンドラインツールなので、コマンドプロンプトを開いて使ってください。ツールを展開したディレクトリ内にtlkやcsvをコピーして使うのが使いやすいかと思います。
使い方:
tlk2csv.exe : tlk -> csv変換用です。
tlk2csv [-s]
csvの出力はデフォルトでUTF-8ですが、ExcelではUTF-8のCSVは読めませんので、-sをつけることでSJIS出力になります。ただ、Google Spreadsheetを利用する場合にはUTF-8の方がいいと思います。
csv2tlk.exe : csv -> tlk変換用です。
csv2tlk [-s]
tlk2csvで出力したcsvをtlkに変換するためのものです。-sはSJISのCSV読み込みオプションです。Google Spreadsheetのcsv出力はUTF-8だけになっているはずです。
※)現状tlk読み込みと書き出しはASCIIコードにしか対応していません。
> この台詞に限らず、どの台詞も、上に「*-*-*」が入っていて、次に番号が振られています。
> そして台詞を挟んで@が5個入っていました。←これが何を意味しているのかはわかりません
実際のtlkフォーマットには、テキストに付随するデータがいくつかありますので、それを出力しているのかなと思います。私の作ったものですと、csvには、StringIDとString以外のカラムがそれに当ります。
お礼が遅くなりましたが、公開ありがとうございます! まだ入念な検証の時間がとれていませんが、ありがたく使わせていただきます。
https://docs.google.com/uc?id=0B8w0rImZJdx0V0Q1RElqR0xPN3M&hl=ja
オプション指定など一部追加変更がありますので、付属のreadmeを確認してください。
日本語tlkをcsvに変換する場合は
> tlk2csv -j dialog.tlk dialog.csv
csvを日本語tlkに戻す場合は
> csv2tlk -j dialog.csv dialog.tlk
1つ分からないのは、BGEEでも全く同じフォーマット、文字コードを使用するかどうかですね。
普通に考えるといまどきマルチバイト実装でSJISやらの言語独自コードを使うとは思えないからです。。。
> @jpmod さん
ツールの日本語対応、ありがとうございました。検証してから、と思うあまりお返事が遅くなり、大変失礼いたしました。
- - -
tlk2csv は -j -s 両方つけることで文字化けしない .csv が得られ、csv2tlkも -j をつけることで .tlk に日本語ストリングが無事に入るようです。(csv2tlk の出力結果をすぐそのまま tlk2csv で出し直しても文字化けせず、大丈夫でした。)
細かい点なのですが、BGEE実機でストリングID表示オプションをオンにしてみたところ、tlk2csvの出力時の通し番号と1つずれてしまうようです。.tlkファイルの仕様として、一番最初のエントリがStringID = 0 になっている等でしょうか?
i.e. 現状では、出力した.csvで #16241 となっているものが、BGEE実機中では #16240 として表示されます。
- - -
関連のご報告ですが、日本語ストリングを実装した.tlkをベータ実機に載せてみたところ、そのままでは文字化けしてしまうようです。
(BG1的tweakである baldur.ini の Font Name=TAHOMA、 および Double Byte Character Support=1は既に試しました。)
1)開発サイドに文字化け解消の方法を問い合わせるか、
先方が英語版リリース予定日目前で大忙しのようですので、
2)中国語チームのメンバーにお願いして、手元のベータがどうなっているか確認してもらう
もしくは
3)BG1既訳をひとまずファイルに流し込んでしまい、それを仮実装してほしい、と開発に投げてみるか
…のいずれかの対応を試みようと思います。
StringIDのずれは、スタートが0か1かの違いだと思いますので、0スタートに変更しますね。
ベータ版での文字化けは次の2つの可能性があると思います。
1) 受け付ける文字コードが変わった。
2) 扱うフォント形式が変わった。
2)は1)と組み合わさっている可能性もあります。1)については今多国語対応するのなら、普通はunicodeかutf-8を使うと思いますので、tlkの文字コードをsjis以外にutf-8やunicodeにも変更できるようにしてみますね。
2)については、実際にデータを見ないとどうにもならないので、現状では私の方で何かできることはないですね。
開発サイドに確認するのであれば、マルチバイト対応の文字コードの確認と、フォント形式の確認ですね。BG1/BG2のときと変わっているかどうか、変わっているならどう変わったのか、辺りでしょうか。
ツールの方は更新したら、また、ここに報告します。
http://www.mediafire.com/?6r78teqv528f5ss
詳しくはreadmeを確認ください。
BGEEについて、文字コードを試してみるのでしたら、Unicode(1200)、UTF-8(65001)辺りを使ってtlkに変換してみてください。それで表示できない場合はフォントの問題のような気がします。
ありがとうございます、更新版ツールで検証してみます。
ただ、日本語表示がいろいろとおかしいようですね。日本語の行末処理やASCII文字と日本語の組合せの考慮などがまだ行われていないことが原因のようですが、tlkのテキスト整形である程度問題解消できればと思いまして、久しぶりにcsv2tlkを更新してみました。
-n オプションに文字数を指定することで画面からはみ出さないように指定された文字数内で強制改行させることができます。
また、一応日本語の行末禁則処理やASCII文字列の考慮や行送り不具合なんかに可能な限り対応してみました。
使い方の詳細はreadmeをご覧ください。
最終的には、本家EXEにて対処されることと思いますが、当面の応急処置として使ってもらえればと思います。
http://www.mediafire.com/download/4nve2833m4tfl52/tlk2csv_v1_2_1.zip
BG2EEも引き続き日本語翻訳を行っていかれると別スレッドで見ましたが、そちらも楽しみにしています。
(2013/11/20追記): 最初にUPしたものは一部不具合があったので修正版に差し替えました。
早速使わせていただきましたが、csv2tlkで-nオプションを使うと
インデックスが配列の境界外というエラーが出ますね。
-nオプションを使用しないと普通にコンバートできるようなんですが。
ちなみにこんな感じで記述してます
csv2tlk -c 65001 -t 65001 -n 22 [csvfile] [tlkfile]
http://www.mediafire.com/download/a3rp625uk1odp19/tlk2csv_v1_2_2.zip
-nオプションでの文字数ですが、一部かなり文字数が少ないダイアログを除き、解像度による部分もありますが、概ね 25 くらいだとプレイには支障がない程度に問題が解消されるかと思います。お試しください。
これで確認作業が色々と捗ると思います。本当にありがとうございました。