コードインのリソースから考えられるエラーメッセージを定義したいと思います。それらをローカライズするのに問題はありません。 しかし、私はそれらのすべてについて、場所を表示/記録する場所を定義する必要もあります。次に例を示します。screen、localLog、serverLog。 ローカライズせずに私はそれを行うことができます:構造化されローカライズされたリソースを作成するには?
<!-- every error has a message and boolean keys that allows or not to write the message
to places serverLog/localLog/Screen -->
<string-array name="error_names">
<item >no_net</item>
</string-array>
<string-array name="error_messages">
<item >There is no internet connection. Check the cables. If they are OK, call your provider.</item>
</string-array>
<string-array name="output_keys">
<item >010</item>
</string-array>
を私はロードでのエラーメッセージのクラスになるだろうそれらのすべての静的マップに
public class ErrorMessage {
private String messageText;
private String errorName;
private ArrayList<String> messageOutputs;
static List<String> messagesPossibleOutputs=Arrays.asList("Server","LocalLog","TV");
static public HashMap<String,ErrorMessage> messagesMap;
static public int downloadMessages(Context context){
String messages[]=context.getResources().getStringArray(R.array.error_messages);
String errorNames[]=context.getResources().getStringArray(R.array.error_names);
String outputKeys[]=context.getResources().getStringArray(R.array.output_keys
messagesMap=new HashMap<String,ErrorMessage>();
for(int i=0; i<messages.length; i++){
ErrorMessage curErrorMessage=new ErrorMessage();
curErrorMessage.errorName=errorNames[i];
curErrorMessage.messageText=messages[i];
curErrorMessage.messageOutputs=new ArrayList();
for(int iKey=0; iKey<outputKeys[i].length();iKey++){
String curChar=outputKeys[i].substring(iKey, iKey+1);
if(curChar.equals("1")){
curErrorMessage.messageOutputs.add(messagesPossibleOutputs.get(iKey));
}
}
messagesMap.put(curErrorMessage.errorName,curErrorMessage);
}
}
それはきれいな解決策ではない、だけ私が思った最高のしかし、それは十分ではありません!メッセージをローカライズしたい場合(それもやってください)、すべての言語でメッセージの文字列配列全体を繰り返す/翻訳する必要があります。ローカライズする予定のメッセージのみ。技術的なものは英語のままです。だから、すべてを繰り返すことは悪いです。
XMLリソースは、すべての言語バリアントで全体を繰り返す必要があるため、役に立たないでしょう。だから、さらに悪いです。
リソースを読むためのスマートな構造をお勧めしますか?および/または構造化されローカライズされたリソースを定義するための他の方法?
P.S.この質問には反省の言葉は含まれていませんが、その解決策はおそらくその分野にあると思います。だから、私もそれを反射でタグ付けしました。