2014-12-19 5 views
1

비교적 간단한 질문입니다. 레거시 Java 애플리케이션을 번역/현지화해야합니다.기존 제품을 현지화 하시겠습니까?

최신 응용 프로그램을 사용하는 저희 회사는 문자열을 현지화하기 위해 Java에서 .properties 파일을 사용합니다.이 개념은 C#의 .resx 파일과 매우 유사합니다.

문제는 로컬 리 제이션에 대한 생각이 시작되기 전에 있었던 기존 제품입니다. 하드 코딩 된 문자열과 다양한 형식의 하드 코딩 된 문자열 연결/형식으로 가득 차 있습니다.

필자는 모든 문자열을 가져 와서 제품의 파일을 .properties 개로 채우고 그 코드를 참조하는 매우 어려운 작업을 알고 있습니다.

개인적으로이 작업을 수행하는 데 큰 문제가 없지만 뭔가 누락되지 않았는지 확인하고 싶습니다.

그래서 몇 가지 일반적인 질문이 있습니다.

  • .properties 파일을 사용하여 내 제품을 변환하는 빠른 방법이 있나요? 내 머리 위로 떨어져 나는 (어떤 "개는"나는 기존 제품을 변환 특정 걱정해야 할 일의 어쩌면 30~40%을 자동화 할 스크립트 ...

  • 가 있습니까 쓸 수 나는 일반적인 로컬 리 제이션 "gotchas"을 찾고 있지 않다. 어느 것이 내가 일 수 있는가?

  • 마지막으로 현지화에 대해 완전히 다른 전략이 있습니까? 이것은 기존 제품인 을 번역하는 방법이지만 기존 제품이므로 으로 다시 작성해야합니다. 이는 본질적으로 버려진 코드이므로 원하는대로 할 수 있습니다. 단지 을 포함하여 가능한 가장 싼 가장 빠른 가장 빠른 방법을 찾지 만, 나는 이지만 분명히 제대로 일을하는쪽으로 기울어 져 있습니다.

의견이 있으십니까?

지침으로 질문에 대한 답변을 집중적으로 작성하려고 노력하지만 정보 제공이나 질문은 항상 환영합니다.

답변

1

아니요, 더 빠를 방법이 없습니다. 코드를 한 줄씩 읽어야합니다.

국제화는 단순한 문자열 상수 이상이기 때문에 많은 문제가 있습니다.

숫자 형식과 날짜 형식을 현지화해야한다는 것을 이미 알고있을 수 있지만 연결 또는 StringBuilder.append 호출을 통해 문자열에 삽입되는 숫자와 날짜를 알아야합니다. Number 또는 Date가 Swing 모델 값으로 제공되는 경우 (예 : TableModel.getValueAt 메서드에서 Number를 반환하는 경우)와 같은 숨겨진 toString() 호출이 있는지 또는 JSP 또는 JSF EL 표현식은 형식화 대신 직접 이러한 값을 참조합니다.

마찬가지로 사용자에게 직접 표시되는 enum 상수를주의 깊게 살펴보고 toString() 메서드를 암시 적으로 호출하십시오.

문자열 연결을 통해 문장을 만드는 것은 숫자, 날짜 및 열거 형의 형식뿐만 아니라 다른 언어의 문장 구조 순서가 다를 수 있기 때문에 문제가됩니다. 이러한 문자열 연결은 지역화 된 MessageFormats로 대체되어야합니다.

키 누름은 모든 니모닉 (및 데스크톱 응용 프로그램 인 경우 가속기)을 포함하여 현지화해야합니다.

레이아웃이 문제입니다. 응용 프로그램이 왼쪽에서 오른쪽 방향으로 가정하는 곳은 해결하고자하는 대상입니다. 다른 왼쪽에서 오른쪽으로 쓰는 언어에 대해서만 지역화를 계획하고 있다고하더라도 좋은 i18n 방식을 사용하지 않을 경우 나중에 문제가 생길 수 있습니다.

응용 프로그램이 Swing 응용 프로그램 인 경우 LEFT/WEST 및 RIGHT/EAST 레이아웃 제약 조건을 LINE_START 및 LINE_END로 변환해야합니다. 응용 프로그램이 웹 응용 프로그램 인 경우 여백 - 왼쪽, 여백 - 오른쪽, 여백 - 왼쪽, 여백 - 오른쪽, 경계 왼쪽 및 국경 - 오른쪽 (그리고 아마도 내가 잊어 버린 다른 많은 것들)을 제외해야합니다. lang 특정 CSS 블록.

스윙 앱은 각 창을 작성한 후 applyComponentOrientation으로 전화해야합니다. 대개 pack()에 전화하기 직전입니다.

일부 프로그래머는 UI의 일부를 데이터베이스에 저장하려고합니다. 나는 사용자 컨텐츠 (당신이 지역화해서는 안 됨)에 대해 말하는 것이 아닙니다. 레이블 텍스트, 창 제목, 레이아웃 제약 등에 대해 이야기하고 있습니다. 저는 개인적으로 그러한 연습을 진심으로 싫어하지만 사람들은 그것을합니다. 앱이 그렇게하고 있다면 데이터베이스 테이블에 로케일 열이 필요하거나 데이터베이스에 UI를 저장하는 것이 완전히 제거되어야한다고 생각합니다.

마지막 질문에 답하기 위해 코드를 단계별로 실행하는 것보다 더 좋은 전략이 있다면 나는 들어 본 적이 없습니다. 물론 코드에서 큰 따옴표를 검색 할 수도 있습니다. 나는 당신의 상사가 응용 프로그램을 보길 원한다면 전문적이고 세련된 방법에 달려 있다고 생각합니다.

내가 배운 한 가지는 throw-away 코드가 종종 그렇지 않다는 것입니다. 재 작성이 레거시 버전의 많은 코드를 구제하려는 경우에 놀라지 마십시오.