3.6에 맞춘 ADT가 아지가 나오지 않은 관계로 strings.xml 편집시 작업이 불가능할 정도로 NullPointerException이 떨어집니다.

http://www.eclipse.org/forums/index.php?t=msg&goto=548782&#msg_548782 에서 본 바로는 <resources> 노드에 xmlns:android="http://schemas.android.com/apk/res/android" 속성을 추가해주니 이런 재난스러운 상황은 발생하지 않게 됩니다.

<?xml version="1.0" encoding="utf-8"?>
<resources  xmlns:android="http://schemas.android.com/apk/res/android">
    <string name="app_name">Hell...ios</string>
    <string name="notification">Strings.xml not good in ADT. Lots of NullPointerException messages.</string>
    <string name="question">Do want to want to work around it?</string>
</resources>

현재는 ADT 0.9.7 이후의 버전을 기다리면서 이클립스3.5 갈릴레오에서 작업하는 것을 추천하도 싶습니다.
정규표현식은 문자열의 패턴을 이용하는 것인 줄 알지만 쓰기 힘들다고 느끼는 것 중 하나입니다. 이클립스는 기본적으로 정규표현식을 지원하는데, html 태그의 일괄 변경에 사용해 보았습니다.

하늘색으로 되어 있는 부분을 Find로 찾을 때 원하는 문자열로 이동이 된다면 제대로 정규표현식을 잡은 것입니다. 
<option value="ajaxqna">ajaxqna | Ajax QnA</option>
여기에서 "ajaxqna | " 부분을 인식한 표현식은 ">\w*\s\|\s" 입니다.
\w는 a~z,A~Z,0~9까지 인식하는 기호입니다.
\s는 space(공백)이죠.

도움말을 잘 이용하면 어렵지 않게 원하는 패턴을 찾아낼 수 있을 것입니다.


프로퍼티 파일을 쓰는 두 가지 경우가 있습니다. 설정 내용을 담고 있는 경우와 다국어를 지원하기 위해서 메시지를 보관하는 경우입니다.
이클립스에서 이 기능을 지원해주고 있습니다. 같이 보시죠.

샘플 자바소스입니다.

사용자 삽입 이미지

여기에 보면 다음과 같은 메소드가 있습니다. 여기에 하드코딩된 문자열을 properties 파일로 추출하려 합니다. 좀 많죠.
사용자 삽입 이미지

Source > Externalize Strings... 메뉴를 선택합니다.
사용자 삽입 이미지

Datelabel. 이라는 prefix가 상단에 보이고, 추출가능한 문자열 목록이 보입니다. 0,1,2,3,.. 으로 되어있는 것을 찍어보면 하단에 해당 소스 부분이 나옵니다. 제일 아래쪽에는 추출되서 나오는 properties 파일의 이름과 경로가 적혀있습니다.
사용자 삽입 이미지

이름을 적절히 수정합니다. prefix를 제외하고 쓰면 됩니다. 정리가 되면 Next 버튼을 클릭해서 다음으로 넘어갑니다.
사용자 삽입 이미지

바뀌게 될 소스가 보입니다.
사용자 삽입 이미지

항목을 찍어보면 어디가 어떻게 바뀐다는 것을 하단에 보여줍니다. Finish 버튼을 클릭하면 모든 작업이 끝나게 됩니다.
사용자 삽입 이미지

Messages.java 파일이 새로 생겼습니다. 그리고 mesages.properties 파일도 새롭게 생겼습니다.
사용자 삽입 이미지

properties 파일을 복사해서 messages_en.properties 로 새로 하나 만듭니다. 그리고 그 안의 메시지를 영어로 처리해줍니다. 한글이나 일어 중국어는 모두 native2ascii.exe 변환을 거쳐서 유니코드로 파일이 만들어져야합니다. 관련 글을 참고하세요.

다음과 같이 다국어 처리가 가능한 소스 구조로 만들어 주면 됩니다. Messages.java 는 DateLabel 쪽으로 모두 이동을 시켰습니다.
사용자 삽입 이미지
테스트 코드를 보면 다음과 같이 다국어 설정을 바꿔줄 수 있습니다.
사용자 삽입 이미지

DateLabel.setLocale() 을 열어보면 다음과 같습니다.
사용자 삽입 이미지


다국어를 처리하는 페이지를 만드는 경우가 많지 않지만, 만약 작업해야 할 경우 하드코딩을 메시지 프로퍼티로 추출해 낸 뒤에 작업하는 법이 유용할 것입니다.

+ Recent posts