ページ

ラベル ローカライズ の投稿を表示しています。 すべての投稿を表示
ラベル ローカライズ の投稿を表示しています。 すべての投稿を表示

2010年3月1日月曜日

SimpleCap ローカライズ(Portuguese)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

フランス語のローカライズに手間取っている間に、ポルトガル語到着。

ポルトガル語は Portuguese.lproj を作る。



言語設定は2つある(ポルトガルとそれ以外の地域)。
ファインダはこんな感じ。


SimpleCapはこんな感じになった。

ざっと見回ると、やはり?文字が切れているところがあった。ローカライズは難しい。。

2010年2月23日火曜日

LaunchAppPlugin

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

ローカライズで便利なツールを発見。

iLocalize - Quickly localize your Mac OS X applications

ダウンロードして実行するとコンテキストメニューに現れるようになる。

アプリケーションの上で右クリックして、Show Languages... を選ぶ。するとダイアログが表示される。
そのアプリケーションが対応している言語がプルダウンで選べる。
Safari の場合。
言語を選んで Launch するとその言語で立ち上がる。




これはかなり便利。

2010年2月22日月曜日

SimpleCap ローカライズ(French)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

フランス語リソース到着。


また文字が切れている箇所が...
(おまけ)フランス語Mac OS X はこんな感じ。


- - - -
3言語が全部そろったら 1.2.1 をリリース予定。

2010年2月18日木曜日

SimpleCap ローカライズ(Italian)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

イタリア語リソース到着。前と同じ手順でプロジェクトへ組み込む。






いい感じだ。日本語だけで作った画面だと、外国語に変えた時にはみだしたり、レイアウトが崩れたりすることがある。逆に英語を基本として作っておくと、この問題はあまり起きない。SimpleCap も当初は英語表記で開発を始めた。


おまけ:イタリア語版 Mac OS X


言語設定で Italiano を選んでおく。


- - - -
フランスの方からはその後音沙汰なし。

2010年2月16日火曜日

SimpleCap ローカライズ(Traditional Chinese)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

言語リソースをいただいたので組み込んだ。こんな感じ。



おお。

なおローカライズの話題は過去に扱ったことがある。
Cocoaの日々: ローカライズ(その1)
Cocoaの日々: ローカライズ(その2)
Cocoaの日々: ローカライズ(その3)
Cocoaの日々: ローカライズ(その4)
Cocoaの日々: ローカライズ(その5)
Cocoaの日々: ローカライズ(その6)
Cocoaの日々: ローカライズ(その7)
Cocoaの日々: ローカライズ(その8)
Cocoaの日々: ローカライズ(その9)

今回は 英語版の nibから抽出した MainMenu.strings と、プログラム中で参照している Localizable.strings を協力者の方へ渡し翻訳してもらった。
Localizable.strings




 :
/* Viewer */
"ViewerTrash" = "Throw to trash";
"ViewerPreference" = "Preference";
"ViewerRetake" = "Retake";

 :

MainMenu.strings
 :
/* Class = "NSMenuItem"; title = "Image Format"; ObjectID = "1481"; */
"1481.title" = "Image Format";

/* Class = "NSMenuItem"; title = "Background"; ObjectID = "1482"; */
"1482.title" = "Background";

/* Class = "NSMenuItem"; title = "Shadow"; ObjectID = "1483"; */
"1483.title" = "Shadow";



 :


*MainMenu.strings を英語nib から生成する。
ibtool --generate-stringsfile English.lproj/MainMenu.strings English.lproj/MainMenu.nib

翻訳後に Xcodeのプロジェクトへ組み込み、MainMenu.strings は ibtool を使い 英語の nib ファイルを元にして、翻訳版の nibファイルを生成した。

*繁体中文に翻訳された MainMenu.strings と英語 nib から、繁体中文nib を生成する。
ibtool --strings-file zh_TW.lproj/MainMenu.strings --write zh_TW.lproj/MainMenu.nib English.lproj/MainMenu.nib


※詳しくは先程の過去のローカライズ記事を参照のこと。


Mac OS X での言語設定は「システム環境設定」の「言語とテキスト」で「繁体中文」(はんたいちゅうぶん)を一番上にすればいい。


この言語(文字)は台湾・香港・マカオなどで使われている。中国大陸では「简体中文」が使われる。

繁体字 - Wikipedia
簡体字 - Wikipedia

Mac OS X はこんな感じになる。

- - - -
イタリア語翻訳の申し出もあった。全部揃えば一気に5ヶ国語対応になる(日、中、英、仏、伊)。

2010年2月15日月曜日

ローカライズメモ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Traditional Chinese は zh_TW.lproj となる(らしい)

Expogesture のソースが参考になった。

Expogesture


zh_TW.lproj/Localizable.strings 抜粋


"How to localize ..." の説明(英語表現)も参考になった。

2010年2月8日月曜日

アプリケーション名とフォルダ名のローカライズ(その2)フォルダ名

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

(前回)Cocoaの日々: アプリケーション名とフォルダ名のローカライズ(その1)

前回はアプリケーション名のローカライズを行った。今回はフォルダ名のローカライズをやってみる。方法は Mac OS X Referece Library に書かれている。

Mac Dev Center: File System Overview: Display Names

この中の "Specifying Localized Directory Names" によれば手順は次の通り。

1 フォルダ名に拡張子 .localized を付ける

2 フォルダ内に .localized という名前のサブフォルダを作成する(ターミナル.appを使う)

3 .localized フォルダ内に言語毎の .strings ファイルを用意する

(例)Sample Folder.localized/
    .localized/
        en.strings
        de.strings
        ja.strings

この .strings ファイル内に言語ごとのフォルダ名を記述する。この時、左側のキーをオリジナルの名前にしておく。
(例)"Sample Folder" = "Localized name";


実際にやってみよう。

まずファインダから Sample Folder という名前のフォルダを作る。
次にターミナル.app で名前を Sample Folder.localized に変更する。
$ mv "Sample Folder" "Sample Folder.localized"

中に入り、.localized フォルダを作成する。
$ cd "Sample Folder.localized"
$ mkdir .localized

さらに .localized フォルダへ入り ja.strings を作成する。
$ cd .localized
$ vi ja.strings

中身はこう
"Sample Folder" = "サンプルフォルダ";

で、フォルダを見ると:
おお、変わった。

ちなみにこの状態でフォルダを変更するとどうなるのか。ファインダから変えてみた。
ターミナル.app で見ると:

$ ls
別名にかえると?


変わっている。一方、中の .localized 構成は変わらず。ja.strings も変わらず。
名前を変えられるとそれ以降はローカライズ情報が使われなくなるようだ。

なおシステムが提供している /System, /Library などもファインダで見ると日本語で表示されているが、これは別の仕組みを使っているとのこと。
以下、引用
Note: System-defined directories, such as /System/Library, and the default directories in each user’s home directory, use a localization scheme different from the one described here. For these directories, the presence of an empty file with the name .localized causes the system to display the directory with a localized name. Do not delete the .localized file from any these directories.

2010年2月6日土曜日

アプリケーション名とフォルダ名のローカライズ(その1)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

アプリケーション名やフォルダ名をローカライズするにはどうしたらいいのか?

(例)Preview.app は日本語環境のファインダで見ると「プレビュー」となる。



Display Names
アプリ名とフォルダ名のローカライズに関しては Mac Dev Center の "Display Names" というドキュメントに記載がある。

Mac Dev Center: File System Overview: Display Names

これによれば MacOSX では下記をサポートしているとのこと。

・アプリケーション名とフォルダ名を多言語化できる
・ファイル名の拡張子を隠せる

以下、ガイドラインのまとめ。

  • 実際の名前の他、表示用の名前を用意することができる(これを Display Name / 表示名と呼ぶ)。
  • 表示名はプリファレンスの言語設定ごとにつけることができる。(例)Pictures フォルダは、ドイツ語で Bilder、日本語で ピクチャ、と表示される。
  • 表示名は読み取り専用の文字列として扱う。変更できるようにすべきではない。
  • 表示名は一時的な情報と考え、それをデータとして保存したりすべきではない。必要な場合は実際の名前を使う。
  • 表示名はファインダと Open and Save ダイアログで使われる。
  • コマンドラインアプリケーションでは表示名を使うべきでない。


表示名(Display Names)の取得の仕方

・Carbonアプリなら LSCopyDisplayNameForURL を使う。
・Cocoaアプリなら -[NSFileManager displayNameAtPath:] を使う。
Mac Dev Center: NSFileManager Class Reference


アプリケーション名のローカライズ
このドキュメントによれば InfoPlist.strings に CFBundleDisplayName を定義すれば良いとのこと。サンプルアプリを作って実際に試してみる。

Xcodeテンプレートでアプリを1つ作る。その中の InfoPlist.strings を選びローカライズする。

まず「情報を見る」を選ぶ。
「ローカリゼーションを追加」で "Japanese" を追加する。
作成された InfoPlist.strings/Japanese の情報を開き、エンコーディングを UTF-16 に変えておく。
InfoPlist.strings/Japanese に CFBundleDisplayName を追加する。

/* Localized versions of Info.plist keys */

CFBundleDisplayName = "表示名サンプル";


ビルドしてファイルを見てみる。が、アプリ名が変わらなかった。
ドキュメントに書かれていた LSHasLocalizedDisplayName を Info.plist へ追加してみる。

Info.plist の Key へ書き込むと変換されて "Application has localized display name" に変わった。

さてビルドしてみよう。
アプリケーション名が変わった。

実行すると Dock上でもちゃんと日本語になっている。


ターミナルでみると DisplayNamesSample.app となっている。

ちなみに InfoPlist.strings/English では次のように設定してある。

/* Localized versions of Info.plist keys */

CFBundleDisplayName = "Sample";


つまり英語だけが特別扱いにならないということ(当たり前か)。

アプリケーションの実体の名前はどこで決まるのか?Info.plist ファイルにありそうだが ${PRODUCT_NAME} としか書かれていない。
実はターゲットのビルド設定にある。

ターゲットの情報を開き、

「パッケージング」の中の「プロダクト名」を探す。
ここにあった。試しに変えてみよう。試しに "Renamed-Product" としてみた。

ビルドすると

変わった。

 - - - -
次回はフォルダ名のローカライズを調べる(本当はそっちが最初の目的だった)。

2010年1月9日土曜日

BlogAssistant(5) - プラグインのローカライズ文字列事情

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

(前回)Cocoaの日々: BlogAssistant(4) - プラグインのプロトタイプ作成

前回 Safariのコンテキストメニューへメニューを追加した。


次はここを足がかりにして処理を加えていく。その最初の一歩としてメニュー文字列を testではなくきちんとした文言に変えよう。また後々を考えてローカライズしておこう。

まずは(いつものごとく) Localizable.strings を作る。


中身はこんな感じ。最初のうちは英語だけ作っていく。


これを NSLocalizedString( ) で参照する。


item = [[[NSMenuItem alloc] initWithTitle:
  NSLocalizedString(@"MenuAddPage", @"")
   action:@selector(addPage:)
keyEquivalent:@""] autorelease];


実行して確認してみる。


ちょっと違う。

うっかりしていたが NSLocalizedString( ) はメインバンドル内の Localizable.strings を参照するようになっている。プラグインは Safari のコンテキストで動作するので、メインバンドルはこのプラグインのそれではなく Safari のバンドルが使われる。プラグインのバンドル(NSBundle)を明示的に指定してやる必要がある。

同系列の関数には NSLocalizedStringFromTableInBundle( ) があって、こちらだとバンドルを指定することができる。

バンドル(NSBundle)を取得するにはいくつか方法がある。

Mac Dev Center: NSBundle Class Reference



今回は +[bundleForClass:] を使うことにする。また NSLocalizedString( ) のリファレンスによれば、内部的には -[NSBundle localizedStringForKey:value:table:] を呼び出しているとのことだったので、これを使うことにする。

Mac Dev Center: NSBundle Class Reference - localizedStringForKey:value:table:

マクロではなくユーティリティクラスを用意して、そこへメソッドとして実装する。

Utility.m

@implementation Utility

+ (NSString*)localizedStringForKey:(NSString*)key
{
NSBundle* bundle = [NSBundle bundleForClass:[self class]];
return [bundle localizedStringForKey:key value:@"" table:nil];
}

@end


これを使う様に修正を入れ、

item = [[[NSMenuItem alloc] initWithTitle:
  [Utility localizedStringForKey:@"MenuAddPage"]
   action:@selector(addPage:)
keyEquivalent:@""] autorelease];


実行してみよう。

出た。
これで行こう。