LoginSignup
29
29

More than 5 years have passed since last update.

IOS9 言語関連で問題でた。対応してみる事に。

Last updated at Posted at 2015-09-21

確認する。

ios9の障害で、日本語表示が英語表示になる問題があるという記事があったんで、
対応もかねて確認することになった。
記事によると、使用言語の判断が失敗するとおっしゃる。

早速、日本語対応アプリケーションをXcode7のIOS9シミュレーションで確認する事にする。
ほぅ 見事に英語になりますね。(噂どうりの現象で驚きました。)

今のアプリは、これで判定してる

    NSArray *languages = [NSLocale preferredLanguages];
    NSString *currentLanguage = [languages objectAtIndex:0];
    isSame = ([currentLanguage isEqualToString:language]);

そして、ターゲットの言語(language)でなければ英語にするようにしている。
languageが日本語なら@"ja"のはずなんだけど、スルーされてるから
全滅ってわけですね。

まずは、Google様にお問い合わせすることに(他力本願)
どうも言語の文字が変わっているらしい。

シミュレーターでログ確認
 "ja"でなくて"ja-JP"で来ますね。

なんだこの-JPってのは???
判定に-JP つければいいのだが、本当にそうだろうか・・・・・

実験する。

まだIOS9の実機ないからシミュレーターで確認
設定>言語と地域 で言語変更する

日本      ja-JP
フランス語   fr-JP
英語      en-JP   

なんと、おまけ(-JP)がもれなくついてますね。
では、地域を変更することに
日本+English(US)   ja-US
日本+フランス    ja-FR

リージョンが付いてきているようだ

地域と言語の組み合わせでなにかいい事あるのかな?

対応考える。

・実験から従来の判定方法の場合、判定数を増やせば対応可能(地域限定)だが
確認が面倒(X国数)なので、比較方法修正でなんとかしないと大変

・'-'までの文字列で比較する場合 '-' の出現は1回でないからターゲットから取得した言語情報の'-'までの文字列取得して 比較したらダメである。
  zh-Hans-JP
  zh-Hant-JP
こいつらです。

まずは、NSStringについて Google様にお問い合わせすることにした
NSString関連は、文字単位の比較が難しくみえる。(本人未熟)
まぁ、データは、英語(Ascii文字)なんで、C言語で対応することに(妥協早!)

変数 language 検出したい言語
  例) @"ja"


  BOOL     isSame=false;
    NSArray  *languages = [NSLocale preferredLanguages];
    NSString *currentLanguage = [languages objectAtIndex:0];
    const char *cur = currentLanguage.UTF8String;
    const char *cmp = language.UTF8String;        
    short i;
    short len=strlen(cmp);
    for( i=0;i<len; i++ )
    {
        if( cur[i]!=cmp[i] ) break;
    }
    if( i==len )
    {
        if( cur[i]==0   ) isSame=true;
        if( cur[i]=='-' ) isSame=true;
    }

   isSame が trueなら 同じ

         falseなら 違う
内容
    検出したい文字列の長さ分比較して、次の文字が
    NULLまたは、'-'の場合同類で判断する。
この方法なら、多分従来のIOSでも使用可能かと思います。

    シミュレーション上では問題なく動いているように見えます。

残務。
IOS9実機準備して確認しないと・・・・・・・・・・・・・・・

29
29
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
29