작년부터 꾸려가던 서비스가 다행인지 불행인지 수입은 별론데 입소문과 방송이 마구 돌아서 해외에서도 요청이 들어오고 있다.
드디어 i18n! 즉, 다국어 지원을 해야할 시기가 온 것이다.
https://themeteorchef.com/tutorials/i18n-and-meteor 를 보고 tap-i18n(https://github.com/TAPevents/tap-i18n) 패키지를 써보기로 마음먹었다.
약간 삽질이 있었는데 처음에
아니었다.역시 인생 실전...
내 경우는 json 파일을 정적으로 만드는 것이 아니라 개발팀이 아닌 일반 관리자가 새로 만든 상품에 대해서도 다국어 대응을 바로 해야하기 때문에 동적으로 로딩할 수 있도록 만들어야 했다.
먼저, 자원을 로드하는 건 별로 어렵지 않았는데
별로 떠오르는 이름이 없어서 위 예의 "francocatena:status" 대신 "project"라고 줬다.
html 헬퍼에서 {{{_ '번역할 문장'}}} 을 했더니 '_' 라는 펑션 없단다.
ecmascript 패키지와 충돌하느니 어쩌느니 얘기가 주절주절 많은데
결론은 project의 root에 project-tap.i18n 파일을 만들고
supported_languages를 지정하지 않으면 TAPi18n.setLanguage 를 통해 현재 언어를 변경하는 것이 제대로 작동하지 않으니 주의할 것.
드디어 i18n! 즉, 다국어 지원을 해야할 시기가 온 것이다.
https://themeteorchef.com/tutorials/i18n-and-meteor 를 보고 tap-i18n(https://github.com/TAPevents/tap-i18n) 패키지를 써보기로 마음먹었다.
약간 삽질이 있었는데 처음에
meteor add tap:i18n만 하면 나머지 다 잘 될줄 알았다.
아니었다.
내 경우는 json 파일을 정적으로 만드는 것이 아니라 개발팀이 아닌 일반 관리자가 새로 만든 상품에 대해서도 다국어 대응을 바로 해야하기 때문에 동적으로 로딩할 수 있도록 만들어야 했다.
먼저, 자원을 로드하는 건 별로 어렵지 않았는데
TAPi18n.loadTranslations(이런 식으로 언어별로 key/value 매핑을 하고 마지막 인자로 namespace를 주면 된다.
{
es: {
meteor_status_waiting: "Desconectado"
},
fr: {
meteor_status_failed: "La connexion au serveur a échoué"
}
},
"francocatena:status"
);
별로 떠오르는 이름이 없어서 위 예의 "francocatena:status" 대신 "project"라고 줬다.
html 헬퍼에서 {{{_ '번역할 문장'}}} 을 했더니 '_' 라는 펑션 없단다.
ecmascript 패키지와 충돌하느니 어쩌느니 얘기가 주절주절 많은데
결론은 project의 root에 project-tap.i18n 파일을 만들고
{이렇게 두 개의 키를 지정하면 된다.
"helper_name": "_",
"supported_languages": ["ko", "en"]
}
supported_languages를 지정하지 않으면 TAPi18n.setLanguage 를 통해 현재 언어를 변경하는 것이 제대로 작동하지 않으니 주의할 것.
댓글
댓글 쓰기