Localizable.strings ファイルを Cocoa で読み書きする
ローカライズに用いる Localizable.strings ファイルは NSDictionary
で簡単に読み書きができる。
例えば以下のような Localizable.strings があった時
/* Localizable.strings Test */ "Yes" = "はい"; "No" = "いいえ"; "Cancel" = "キャンセル"; "Title" = "タイトル";
読み込み
NSURL *URL; // URL to read NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL:URL]; NSLog(@"%@", dict);
ログ出力
{ Cancel = "\U30ad\U30e3\U30f3\U30bb\U30eb"; No = "\U3044\U3044\U3048"; Title = "\U30bf\U30a4\U30c8\U30eb"; Yes = "\U306f\U3044"; }
書き出し
NSURL *temporaryURL = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:@"temporary.strings"]; [dict.descriptionInStringsFileFormat writeToURL:temporaryURL atomically:YES encoding:NSUTF8StringEncoding error:nil];
書き出されたファイル
"Yes" = "\U306f\U3044"; "Cancel" = "\U30ad\U30e3\U30f3\U30bb\U30eb"; "No" = "\U3044\U3044\U3048"; "Title" = "\U30bf\U30a4\U30c8\U30eb";
NSDictionary
を使った時には以下の難点がある
- 書き出し後のファイルのキーの順序がソートされて元の並びと異なってしまう
- コメントが消えてしまう
- 日本語がユニコードのエスケープシーケンスの形になってしまう
という事で、単純にファイル内のキーと値を読み込む分には良いけど値を加工して書き出す場合にはオススメできない。
関連