2017-08-31 17 views
0

のような左の言語に右のための整数(%1 $ d)および文字列(%1 $ sの)引数の取り扱い私のstrings.xmlには、次の形式アンドロイド:アラビア語

でいくつかの文字列の最後ではありません新しいメッセージがあります%1 $ d日です。

私はこれらをJavaコードで次のように使用します。 String.format(getString(R.string.msg_str)、3);

「最近3日間で新しいメッセージはありません。」

ここで、整数引数の部分を上の文字列の中に-ar - > strings.xmlというアラビア語のファイルに入れるにはどうすればよいですか?

私は%1 $ dやd $ 1%や\ u200F%1 $ dなどのようにいくつかの方法で入れてみましたが、何も動作していないようです。私は引数を正しく3に印刷することができません。 例:$ 1%

Javaコード部分で、私はString.format(Locale.getDefault()、getString(R.string.msg_str)、3);を試しました。次のように

電話言語はアラビア語に設定されているとき、私は上記の文字列をしたいの出力は次のようになります。 لاتوجدرسالةجديدةفيآخر3أيام。

PS:上記はGoogle翻訳者からの翻訳です。

答えて

1

私はあなたの質問からテキストを取り、私のstrings.xmlファイルにそれを貼り付け:

enter image description here

私は私のアプリを実行すると、私はすぐにクラッシュを取得します。それがないすべてです:

TextView textView = (TextView) findViewById(R.id.text); 
    textView.setText(getString(R.string.formatting, 6)); 

これはクラッシュです:

E/AndroidRuntime(5739): Caused by: java.util.UnknownFormatConversionException: Conversion: أ 
E/AndroidRuntime(5739): at java.util.Formatter$FormatToken.unknownFormatConversionException(Formatter.java:1399) 
E/AndroidRuntime(5739): at java.util.Formatter$FormatToken.checkFlags(Formatter.java:1336) 
E/AndroidRuntime(5739): at java.util.Formatter.transform(Formatter.java:1442) 
E/AndroidRuntime(5739): at java.util.Formatter.doFormat(Formatter.java:1081) 
E/AndroidRuntime(5739): at java.util.Formatter.format(Formatter.java:1042) 
E/AndroidRuntime(5739): at java.util.Formatter.format(Formatter.java:1011) 
E/AndroidRuntime(5739): at java.lang.String.format(String.java:1999) 

次に、私はそれを削除し、%1を押して(それを再入力、format引数(d$1%)を強調表示しました$d)。今、私は私のアプリを実行すると、それだけで正常に動作

enter image description here

enter image description here

2つの文字列が私には同じに見えるので、私はそれが前提と私の文字列は次のようになりますテキストの方向に関連する最初のものにはいくつかの非印字文字があります。これらの非印字文字は、おそらく文字列の書式引数の解析を混乱させるでしょう。

+0

ありがとうございます。できます。私が共有した文字列は単なる例でした。私は問題は、Googleの翻訳者が%記号のように見える別のasciiに%を変換するということに気づいた。そのため、%記号を再入力すると効果がありました。私を助けてくれてありがとう。私はソニーxperiaの携帯電話を使用しています、私はアラビア語の文字でも6を印刷するアラビア語を選択するとき。引数部分を英語の数字とアルファベットで入力する方法はありますか? –

関連する問題