CALENDAR
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28            
<   February 2010
CATEGORIES


RECENT COMMENT
RECENT TRACKBACK
BLOG VIEW
SEARCH THIS BLOG
macTips SOFTWARE'S
for OS X
QuickCopy
aLunch
mCounterDataCreator
SpeedCopy
QuitApp++
Vol'sAccess
SpotlightColorChange
for iPhone
PhotoZipSendPhotoZipSend
mCountermCounter
MoneyCalcMoneyCalc
MoneyCalc LiteMoneyCalc Lite
pCounterpCounter
ARCHIVES
SELECTED ENTRIES
LINKS
PROFILE
  • Author name
    Hys.

  • Author HP
    macTips
  • Contact
  • Twitter:HysLOG
    twitter
  • Twitter:macTips_lib
    twitter
COUNTER
LAST UPDATE
  • 10/02/21

言語別にジャンプするページを変更する。

今回からプログラム的な事も書いてみようと、まずは第一回。

Mac OS Xは言語別にアプリケーションを用意しなくても、1つのパッケージで多言語に対応している。対応していると言うか、作り手が対応させるのだけれど、例えばホームページなどで日本語、英語などのサポートページを用意している場合、起動している言語でジャンプさせるURLを指定させたいと思う。

まず頭に浮かぶのが、ローカライズしたNibファイル別にアクション先を変更。例えば、



- (IBAction)goHomePage_ja:(id)sender{

 日本語ページへ

}

- (IBAction)goHomePage_en:(id)sender{

 英語ページへ

}





これだとスマートじゃ無いし、接続が面倒なので、このようにする。



- (IBAction)goHomePage:(id)sender{

NSURL *url;

NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

NSArray *languages = [def objectForKey:@"AppleLanguages"];

NSString *prefLang = [languages objectAtIndex:0];

if ([prefLang isEqualToString:@"ja"]){

url = [NSURL URLWithString:@"日本語ページURL"];

}else{

url = [NSURL URLWithString:@"英語ページURL"];

}

[[NSWorkspace sharedWorkspace] openURL:url];

}



これで1つのアクションメソッドで、日本語以外は英語ページへジャンプするようになる。

新しく言語を追加したら、



}else if ([prefLang isEqualToString:@"fr"]){

url = [NSURL URLWithString:@"フランス語ページURL"];

}

とすればOK。


さっきからなんかガクブルするなぁ・・・と思ってたら、冷房つけてた(笑)

| Cocoa | | コメント (0) | トラックバック (0) |

うーん。

書きかけの記事が有ったのでこの際そのまま投稿してみる。

NSDictionaryをdescriptionでプロパティ形式の文字列に変換して、ファイルに書き出し、NSStringのpropertyListで元に戻そうとしてたけど時々エラーが返ってくる。ちなみにiPhone。
OS Xアプリの方でも同じ処理で書き出したり、読み込んだりしているけど、問題が無い。なので、半分パニック。

パースの所でエラーになっているので、[(NSString *) propertyList]を @try @catch でエラー内容をNSLogに書き出した所、NSDictionaryをdesctiptionした文字列の、最初の「 { 」と最後の「 } 」が問題箇所らしい。Old-styleがどうとか...

とりあえずdesctiptionした後に、1行目と最後の行を削除して保存するようにした。
これでパースエラーはおこらなくなったけど良いのかな...

| Cocoa | | コメント (0) | トラックバック (0) |