我有一個帶有 2 個占位符的簡單字串:
<string name="substring_two_substrings_dash">%1$s - %2$s</string>
我不知道如何將這個輸入到 Android studio 中,用于像阿拉伯語這樣的 RTL 語言,其中“1”應該出現在右側,“2”應該出現在左側。通常,當您在其他阿拉伯字符中鍵入占位符時,它們會自動反轉:
<string name="snackbar_lock_out_period_scheduled">?? ????? ????? %1$s ???? %2$s!</string> [實際上,當我在這里粘貼它時,情況發生了變化,它在 Android Studio 中看起來像“s$2%”]
但是,對于兩個占位符之間只有“-”的簡單字串,它不會自動反轉,因為它不會檢測到任何阿拉伯字符。如果我還在那里添加了一個阿拉伯字符,它就可以作業。
我怎樣才能輸入它并強制它成為 RTL?
如果我手動輸入它,它會在運行時崩潰:
<string name="substring_two_substrings_dash">s$2% - s$1%</string>
有錯誤 "java.util.DuplicateFormatFlagsException: Flags = ' '
uj5u.com熱心網友回復:
這是字串資源中多個引數/占位符的檔案提供的示例:
<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
所以,引數的模板是%o$x:
- o:字串中引數的順序
- x:引數的格式(數字,字串,...)
%o$x無論您使用何種語言,此格式 ( ) 都需要以英語進行維護
為此,您需要在所需語言和英語之間來回切換以撰寫整個字串
例如寫????? ????? 21 – ????? ?????? 14:你需要遵循:
- 打開阿拉伯語鍵盤:記下->
????? ????? - 打開英文鍵盤:記下->
%1$s - 打開阿拉伯語鍵盤:記下->
- ????? ?????? - 打開英文鍵盤:記下->
%2$s
要測驗這個:
<string name="test">????? ????? %1$s - ????? ?????? %2$s</string>
getString(R.string.test, 21.toString(), 52.toString())
<string>由于在 LTR/RTL 之間發生變化,其中的數字似乎不可讀,就像它被格式化一樣
更新:
對于我沒有阿拉伯字符的簡單示例,這并沒有回答如何做到這一點,只是占位符之間的破折號。
相同的方式適用,只是您不必切換鍵盤;所以%o$x當你想在你的字串中添加一個占位符/引數時,你只需要使用英文鍵盤和模式。
在你的例子中 <string name="substring_two_substrings_dash">s$2% - s$1%</string>
應該: <string name="substring_two_substrings_dash">%2$s - %1$s</string>
或者,如果您想按順序執行以下操作: <string name="substring_two_substrings_dash">%1$s - %2$s</string>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/357542.html
上一篇:androidstudiokotlin-藍牙“操作請求啟用”不起作用
下一篇:如何連續對齊2個影像視圖?
