それを解決するためにはユーザーの言語環境を見ないといけないんだけど、それをifで分けたら解決できた。
frame = self.view.frame;
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
CGRect statusFrame = [[UIApplication sharedApplication]statusBarFrame];
CGRect navFrame = self.navigationController.navigationBar.frame;
// NSLocalizedStringのEnglishとJapaneseどちらが適用されるかを調べる
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSArray *languages = [ud objectForKey:@"AppleLanguages"];
int enIndex = [languages indexOfObject:@"en"];
int jaIndex = [languages indexOfObject:@"ja"];
float offset = (enIndex < jaIndex ? navFrame.size.height + (version < 7.0 ? 0 : statusFrame.size.height) : 0);
frame = CGRectMake(0, 0, frame.size.width, frame.size.height - offset);
こんな感じにわけたら、うまく解決できた。多分もっといい方法があると思うんだけどね。
あと、これでわかったことなんだけど、NSLocalizedStringはlanguagesで一番最初の言語に対応する文字を返す。











