Request/53 のバックアップソース(No.10)



* 英語版 [#ce094715]
-ページ:     [[Request]]
-投稿者:     [[request.txt]]
-優先順位:   低
-状態:       提案
-カテゴリー: 編集
-投稿日:     2007-03-31 (土) 20:46:20
-バージョン: 

** メッセージ [#dd2053f6]

*** 方法(その1) [#fa7563d2]
次のファイルの日本語メッセージ(20071202版から抽出)を英語に変換してからソースファイルを置換してしまえば、英語版になるはずです。
なお、メッセージ表示が英語になるだけで、欧州文字等が編集できるようになるわけではありません。

#ref(ja.txt)

皆さんで編集できるように分割掲載しました。Wikiで編集してください。
(コツはメッセージの長さが変わらないようにすることです)

[[0001〜0100>Request/53/en1]], 
[[0101〜0200>Request/53/en2]], 
[[0201〜0300>Request/53/en3]], 
[[0301〜0400>Request/53/en4]], 
[[0401〜0500>Request/53/en5]], 
[[0501〜0600>Request/53/en6]], 
[[0601〜0700>Request/53/en7]], 
[[0701〜0800>Request/53/en8]], 
[[0801〜0900>Request/53/en9]], 
[[0901〜1000>Request/53/en10]], 
[[1001〜1100>Request/53/en11]], 
[[1101〜1200>Request/53/en12]], 
[[1201〜1300>Request/53/en13]], 
[[1301〜1400>Request/53/en14]], 
[[1401〜1500>Request/53/en15]], 
[[1501〜1600>Request/53/en16]], 
[[1601〜1700>Request/53/en17]]

日本語版ソフトがグローバルにならない要因のひとつに英語情報がないことが挙げられます。
でも、それはどうしようもないか。
ヘルプファイルも英語化されれば使いたがる人が出てくるかもしれません。


*** 方法(その2) [#a9aaa499]

本格的にするなら、次のような方法も考えられます。
- 主要なメッセージ文字列をリソースに追い出す(日本語リソースはexe内に保持)。
- 追い出したリソースだけを保持するリソースDLL(もちろん英語に翻訳したものです)を作成する。
- 設定画面に言語設定項目を用意する。対応言語は、sakura.exeと同じフォルダにあるsakura_rc_*.dllを検索し、言語問い合わせインタフェース(特定のリソース文字列を読む)を使って言語情報を取得する。検索できた言語をコンボリストに表示する。
-- IDS_RC_LANG = 9999
-- 日本語: IDS_RC_LANG = "Sakura-Editor,1041,Japanese"
-- 英語 : IDS_RC_LANG = "Sakura-Editor,1033,English(US)"
-- 言語リスト http://www.microsoft.com/globaldev/reference/lcid-all.mspx
-- または LPCTSTR GetRcLang( void ); のようなAPIを使う
- サクラエディタ起動時に、設定されている言語のリソースDLL(例:sakura_rc_1033.dll)をチェックする。
- リソースDLLがある場合はLoadLibraryしそのインスタンスを、ない場合はWinMainのインスタンスを保持する。
- メッセージ文字列を参照する場合は、上記インスタンスを使ってLoadStringする。保険として、外部リソースDLLを参照していて失敗した場合は、内部リソースで再試行する。
- ダイアログも同じである。
- 利点
-- 日本語として使うときは、余計なリソースを持ってないのでバイナリが増加しない。
-- 英語を使いたい人は、指定場所に指定の名前のリソースDLLを置くだけでよい。
-- 他の言語にも対応できる。
- 欠点
-- 動的な切り替えはできない。
-- メッセージ文字列をリソースに追い出す必要がある。
-- リソースから取得するので、若干遅くなる。
- その他
-- OSの言語モードとは無関係である。


&color(Blue){''リソースDLLの作成''};
- sakura_rc_1033.dllプロジェクトを作成します。
- sakura_rc.rc, sakura_rc.h, sakura_rc.hm, funccode.h を持ってきます。
- リソースコピーの挿入を使って日本語から英語に変換します。(面倒なときは直編集してください)
- 日本語文字列を英語に変換します。
- メニュー文字列をリソースDB形式に変換します。
機能名,メニューEnable時,メニューDisable時,メニューSC付きEnable時,メニューSC付きDisable時
例: Show/Hide Tabbar,Hide Tabbar(&T),Show Tabbar(&T),,
例: String,Hide(&H),Show(&S),Hide(&?),Show(&?)
- メッセージ表示関係はMessage Tableを使ってみます。
- messages.mcをカスタムビルド設定します。
CodeProjectに例があります.
http://www.codeproject.com/KB/system/mctutorial.aspx
- リソースDLLを参照するように本体を書き換えればOKです。
LoadImage,LoadBitmap,LoadCursor,LoadIcon,LoadAccelerators,LoadMenu,FindResource,LoadResource,LoadStringをラッピングします。
メニューなどの文字列をハードコーディングしている部分は、すべてリソースを参照するように書き換えます。


*** コメント [#t8992be5]

いずれにしても英訳は必要なので、英訳情報が無駄になることはありません。

#ref(en-menu.png)

----
- Express 2005+Platform SDKで、メニュー1行のみと、タスクトレイを英語化(GlobalじゃないけどCool ->見た目の確認)。 ただ、添付ファイルと一緒にコメントできないので、後でコメントのみ追加。 -- [[じゅうじ]] &new{2008-03-16 (日) 22:19:06};

#comment
#attach

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS