2016-07-28 31 views
0

假設我有以下enum安卓:用枚舉值可以被翻譯成其他語言環境

public enum Feelings { 
    happy("label1"),sad("label2") 
    private final String name; 
    private Feelings(String s) { 
     name = s; 
    } 
    public boolean equalsName(String otherName) { 
     return (otherName == null) ? false : name.equals(otherName); 
    } 
    public String toString() { 
     return name; 
    } 
} 

當我打電話了.toString()它返回不同的枚舉中定義的標籤。我在UI上使用這些標籤,並將其顯示給用戶。

當我考慮用不同的語言環境發佈我的應用程序時,我認爲可以定義這些標籤以便將它們翻譯成其他語言?

回答

0

您可以使用字符串資源ID來代替在枚舉中設置標籤的實際值。

public enum Feelings { 
    happy(R.string.happy_label), sad(R.string.sad_label); 
    private final int strId; 

    private Feelings(int strId) { 
    this.strId = strId; 
    } 

    @StringRes public int getStringId() { 
    return strId; 
    } 
} 

這樣,Android將挑選給出的設備的語言環境

你使用你的字符串的正確翻譯,那麼看起來是這樣的:

textView.setText(Feelings.happy.getStringId()); 
1

不應大於你怎麼很大的不同處理枚舉之外的本地化。只需要傳遞參考資源。所以像這樣:

public enum Feelings { 
    happy(R.string.happy), 
    sad(R.string.sad) 

    private final int nameId; 

    private Feelings(int nameId) { 
     this.nameId = nameId; 
    } 

    public String toString(Resources res) { 
     return res.getString(nameId); 
    } 
}