2017-01-25 8 views
1

히브리어, 스페인어, 영어, 카탈로니아 어, 헝가리어로 번역 된 앱이 있습니다. 히브리어를 제외하고 모든 언어가 훌륭하게 작동합니다. <string name="welcome">Welcome, %s</string>히브리어의 UnknownFormatException

strings.xml의 히브리어 <string name="welcome">"ברוך/ה הבא/ה, s%\"</string>

영어 에 대한 strings.xml의 :

코드는이 라인에 보풀이 오류 보여줍니다 : 다음 lblUsername.setText(getString(R.string.welcome, mUserModel.getUserName()));

번역입니다 내 장치에 설정된 영어 로케일로 앱을 실행하면 정상적으로 실행됩니다. 다른 언어들과 동일합니다. 그러나 히브리어로 나는 다음과 같은 오류 메시지를 보게됩니다 :

java.lang.RuntimeException: Unable to resume activity {be.iminds.mresist/be.iminds.mresist.activities.MainActivity}: java.util.UnknownFormatConversionException: Conversion: 
                     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103) 
                     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134) 
                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 
                     at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                     at android.os.Looper.loop(Looper.java:148) 
                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                    Caused by: java.util.UnknownFormatConversionException: Conversion: 
                     at java.util.Formatter$FormatSpecifierParser.unknownFormatConversionException(Formatter.java:2321) 
                     at java.util.Formatter$FormatSpecifierParser.advance(Formatter.java:2315) 
                     at java.util.Formatter$FormatSpecifierParser.parseConversionType(Formatter.java:2394) 
                     at java.util.Formatter$FormatSpecifierParser.parseArgumentIndexAndFlags(Formatter.java:2365) 
                     at java.util.Formatter$FormatSpecifierParser.parseFormatToken(Formatter.java:2298) 
                     at java.util.Formatter.doFormat(Formatter.java:1071) 
                     at java.util.Formatter.format(Formatter.java:1042) 
                     at java.util.Formatter.format(Formatter.java:1011) 
                     at java.lang.String.format(String.java:1554) 
                     at android.content.res.Resources.getString(Resources.java:430) 
                     at android.content.Context.getString(Context.java:425) 
                     at be.iminds.mresist.activities.MainActivity.init(MainActivity.java:187) 
    ... 

히브리어가 아닌 다른 언어에서는 왜 작동합니까?

답변

0

번역 문자열의 %s 앞에 나오고 그 뒤에 나타나지 않아야합니다. 왜 백 슬래시를 추가했는지 확실하지 않습니다.

은 참으로 그것을이다

<string name="welcome">"ברוך/ה הבא/ה, %s"</string> 
+0

<string name="welcome">"ברוך/ה הבא/ה, s%\"</string> 

를 교체합니다. 이상하게도'% d '의 경우는 아닌 것 같습니다. – Ventis