

ローカライズ対応中のアプリで、キーボードのDecimalPadを指定している箇所があります。  
iOSの設定アプリの書式の設定でイタリアを選択すると、DecimalPadのピリオドがカンマになりますが、これだと少々具合が悪い為(DBに値を入れて集計したりする為)、設定を無視して常にピリオドを表示するキーボードを表示させたいのですが、これは可能でしょうか？  
できればカスタムキーボードの実装は避けて、簡単な方法を探しております。


CC BY-SA 3.0
2016-07-29T16:16:54.460
27951
2016-07-29T19:43:08.257
2016-07-29T17:11:17.577
5519
14125
question
swift ios localization
DecimalPadのキーボードの小数点をピリオド固定にする方法はありますか？


直接の回答ではありませんが、ローカライズ対応と言うことであれば、DecimalPadもローカライズ対応したものを表示すべきではないでしょうか。

「DBに値を入れて集計」と言うことであれば、`NSNumberFormatter`を使えば、現在のユーザ設定に応じたフォーマットで数値データを解釈してくれますので、DecimalPadにコンマが表示される設定であれば、コンマを小数点として解釈してくれます。

[code]

    let numberFormatter = NSNumberFormatter()
    if let value = numberFormatter.numberFromString(textField.text ?? "")?.doubleValue {
        print(value)
    }
    
[/code]

数値型の値を画面に表示する場合にも`NSNumberFormatter()`を使用することになります。

[code]

    numberFormatter.maximumFractionDigits = 10
    textField.text = numberFormatter.stringFromNumber(123.456)
    //->イタリア語の状態では、123,456 と表示される
    
[/code]

日本人スタッフばかりで「ローカライズ対応」を行うと、つい表示される文言の翻訳にばかり気を取られがちですが、「小数点」「日付の書式」(日本流のyyyy/MM/dd形式は欧米ではほとんど使われません)なども、しっかりローカライズした方が良いのではないでしょうか。


CC BY-SA 3.0
2016-07-29T19:43:08.257
27953
2016-07-29T19:43:08.257
13972
27951
answer