1

여러 언어로 번역 된 할 일 목록을 만들어야합니다.Android - enum의 현지화

3 개의 레벨 (낮음, 중간, 높음)을 포함하는 열거 형을 가지고 있으며 우선 순위 레이블을 참조하기 위해이 열을 사용합니다.

public enum Priority { 
    LOW(R.drawable.priority_low), 
    MEDIUM(R.drawable.priority_medium), 
    HIGH(R.drawable.priority_high); 

    private int drawableResource; 

    Priority(int drawableResource) { 
     this.drawableResource = drawableResource; 
    } 

    public int getDrawableResource() { 
     return drawableResource; 
    } 
} 

을 그리고 난 일부 샘플 할 일 항목을 생성하는 방법이있다 :

private TodoItemDao() { 
    todoItems.add(new TodoItem("pet shop", new Date(), "buy a nice zombie pig", Priority.HIGH)); 
    todoItems.add(new TodoItem("barber", new Date(), "cut lion's hair", Priority.MEDIUM)); 
    todoItems.add(new TodoItem("mine", new Date(), "we need redstones", Priority.LOW)); 
} 

그래서이 장면에서, 어떻게 다른 언어로 할 일의 우선 순위를 번역 할을이는 모습입니다? 나는 보통

titleEditText = (EditText) findViewById(R.id.et_title); 

처럼 할 ...하지만 열거하는 방법과 항목 ​​생성시 우선 순위를 설정하는 방법 내에서 작업을 수행하는 방법을 모르겠어요. 어떤 생각?

편집 :

내가 충분히 명확하지 않았다 affraid 해요. 다음 줄을 사용하십시오.

titleEditText = (EditText) findViewById(R.id.et_title); 

나는 이미 strings.xml을 사용하고 있음을 보여주고 싶었습니다. 난 그냥 열거 형과 함께 사용하는 방법을 몰랐다.

+0

이것은 사용자에게 유용 할 수 있습니다. http://stackoverflow.com/questions/20287009/how-to-convert-hardcoded-enum-to-different-language –

답변

1

이미 언급했듯이 strings.xml을 사용하고 번역을 추가하십시오. 당신이 가진 많은 언어를 위해 그것을하십시오.

public String getPriorityName(Priority ref, Context c){ 
    switch(ref){ 
     case Priority.LOW: 
      return c.getString(R.string.priorityLowDescription); 
      break; 

     (Showing only one here, but you can see the pattern) 
    } 
} 

이것은 당신의 우선 순위 인스턴스에 걸리고, 기반 즉 strings.xml에서 적절한 문자열을 반환에 :

제안은 당신이 당신의 열거에 다음을 추가하거나 다른 곳을 액세스 할 수 있습니다. 즉, 장치가 설정된 언어로 문자열을 가져옵니다 (또는 사용자가 설정에 따라 수동으로 설정).

+0

두 분 모두에게 감사 드리며, 저에게 많은 도움을 주셨습니다. – hellsing

0

열거 형에서 직접하지 마십시오. strings.xml 파일에 평소와 같이 번역을 넣으십시오. 우선 순위를 올바른 ID로 변환하는 int mapToStringResource(Priority) 함수를 작성하십시오. setText(mapToStringResource(priority))으로 전화하여 텍스트를 설정하십시오.