Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

確認する。

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実機準備して確認しないと・・・・・・・・・・・・・・・

YearCentury
いろいろ勉強中どす
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした