0
我有一個枚舉,我想國際化就喜歡:枚舉國際例外
public enum ActivityEnum {
PROJECT_CREATED, PROJECT_EDITED, PROJECT_DONATION;
@Override
public String toString() {
switch (this) {
case PROJECT_CREATED:
return Messages.get("activity.project.created");
case PROJECT_EDITED:
return Messages.get("activity.project.edited");
case PROJECT_DONATION:
return Messages.get("activity.project.donation");
default: return super.toString();
}
}
private ActivityEnum activityEnum;
public ActivityEnum getActivityEnum() {
return activityEnum;
}
public void setActivityEnum(ActivityEnum activityEnum) {
this.activityEnum = activityEnum;
}
}
現在,請注意,我messages.properties中定義的鍵包含字符串格式化,如:
activity.project.created = User <%s> created project <%s>
好了,問題是,當我做這個枚舉在代碼中的其他地方的東西,它像拋出一個異常:
MissingFormatArgumentException occured : Format specifier 's'
所以基本上它希望的是,當我得到toString
枚舉類的關鍵,應用也args作爲格式化但這正是我用枚舉我只能做後...
activity.summary = String.format(activityEnum.toString(), args);
燦你請給我一個如何處理這個問題的建議?
UPDATE:
如果我用的是經典的方式,所有的工作很好:
PROJECT_CREATED("User <%s> created project <%s>"), PROJECT_EDITED(
"User <%s> edited project <%s>"), PROJECT_DONATION(
"User <%s> made a donation of <%d> to project <%s>");
但這是沒有國際化。