17P by xguru 2달전 | favorite | 댓글 4개
  • 비대칭 로컬라이제이션 : 필요한 경우에만 성별/대소문자를 사용하여 자연스러운 번역을 추구. 표현력은 원어의 문법에 제한되지 않음
  • 점진적 향상 : 각 번역은 독립적으로 관리되어 다른 로케일에 영향을 주지 않음. 다른 언어에 영향을 주지 않고 반복적으로 번역을 개선할 수 있음
  • 다양한 기능 : 날짜, 시간 및 숫자 서식. 복수 카테고리. 양방향 지원. 사용자 서식. 읽기 쉬운 문법. 런타임 번역 및 재번역. 강력한 오류 처리
  • 아파치 라이센스 오픈소스. 서버 구현체는 JS, Python, Rust로 제공되며 React 바인딩도 제공

Fluent를 만든 이유

  • 소프트웨어 로컬라이제이션은 영어 사본에 일대일로 매핑하는 번역이라는 낡은 패러다임이 지배해 왔음
  • 원어의 문법은 번역의 표현력에 제한을 가함
  • 이러한 패러다임을 바꾸기 위해 Fluent를 만들었음
    • 번역가는 개발자에게 허락을 구하지 않고도 언어의 모든 표현력을 사용할 수 있어야 함
    • Fluent에서는 번역이 비대칭적. 영어로 된 간단한 문자열이 다른 언어로 된 복잡한 다중 변형 번역으로 매핑될 수 있음
  • Fluent를 사용하면 소스 언어와 관계없이 다양한 언어의 문법과 스타일을 충족할 수 있음
  • 독립적임
    • 한 언어가 고급 로직의 이점을 활용한다고 해서 이를 적용하기 위해 다른 로컬라이제이션이 필요하지 않음
    • 각 로컬라이제이션은 번역이 얼마나 복잡해지는지를 각각 제어함

오 예전 1:1 매칭 패러다임에서 벗어난다는게 되게 신기하네요

자바스크립트 전용 gettext 열화 버전.

https://github.com/projectfluent/fluent/wiki/Fluent-vs-gettext

그렇게 말해버리면 이 프로젝트를 너무 가볍게 보는거네요.

답변이 너무 성의(?)없어서 그렇게 보실수도 있겠네요. 좀 더 성의있게 써보겠습니다.

비교표는 어차피 비교주체가 누구냐에 따라 정해져있는거라 큰 의미 없지만,

제가 열화버전이라고 느낀 이유는... 긴 세월동안 많은 사람들에 걸쳐 gettext에 쌓인 노하우들을 존중하지 않는다는 느낌이 들어서 입니다.

gettext는 C언어만 된다고 했는데 메이저 언어중에 gettext를 지원하지 않는 언어가 뭐가 있죠?
어순의 문제를 고려해서 키-기반 파라메터를 사용했다는데, 모든 언어가 딕셔너리를 기본으로 내장하고 있는게 아닌데, 그런 언어들은 추가적인 방법(예: 자바라면 Map같은)이 필요해 지는 거죠. gettext는 위치기반이지만 어순 변경에 대해 고려가 되어 있죠.

주절주절 적었지만,
사실... 시작부터 맘에 안들었던 이유는 ${...}가 아니라 {$...}였기 때문입니다^^

개인적으로 "바퀴를 재발명"하는 걸 몹시 좋아합니다만, 세상에 없던 바퀴를 발명한것처럼 떠벌리는 것은 별로 좋아보이지 않네요.