본문 바로가기
cutty.dev
All posts

25개 언어 라이브 — 이정표

cutty.dev는 이제 25개 언어를 지원합니다. 이것이 무엇을 의미하는지, 왜 이 특정 언어들을 선택했는지, 그리고 데이터를 외부로 전송하지 않고 어떻게 이를 구현했는지에 대한 짧은 이야기입니다.

  1. 우리는 몇 주 만에 이만큼 많은 언어를 추가했습니다. 시작은 소박했습니다: 폴란드어와 영어, 단 두 개가 리스트의 전부였습니다. 오늘 cutty.dev는 25개의 언어로 여러분을 맞이합니다. 숫자는 멋지지만, 그 자체로는 아무런 의미가 없습니다. 중요한 것은 이 수치 뒤에 누가 있느냐 하는 것입니다.

빠르게 계산해 보세요. 아랍어는 4억 명을 훨씬 넘습니다. 힌디어는 또 수억 명입니다. 만다린어를 포함한 중국어는 10억 명을 넘어섭니다. 여기에 스페인어(스페인 및 라틴 아메리카 거의 전역)와 포르투갈어(주로 브라질 덕분에)를 더해 보세요. 이 시장들을 모두 합치면, 첫 순간부터 자신의 언어로 즉시 도구를 확인할 수 있는 수십억 명의 사람들이 됩니다.

왜 하필 이 25인가

정리된 전체 목록입니다. 폴란드어, 영어, 독일어, 프랑스어, 스페인어, 이탈리아어, 체코어, 루마니아어, 헝가리어, 그리스어, 네덜란드어, 스웨덴어, 핀란드어, 우크라이나어, 터키어. 여기에 아랍어와 히브리어(둘 다 오른쪽에서 왼쪽으로 작성)가 포함됩니다. 중국어, 일본어, 한국어. 힌디어, 태국어, 베트남어, 인도네시아어. 그리고 포르투갈어.

이것은 아무렇게나 나온 것이 아닙니다. 첫 번째 레이어는 단순히 유럽, 즉 시장별 접근입니다. 두 번째 레이어는 유럽 스타트업이 "움직임이 나타날 때까지" 보통 건드리지 않는 지역들입니다: 중동 및 북아프리카, 이스라엘, 동아시아, 인도 아대륙, 동남아시아.

프랑스어는 하나의 로케일이 어떻게 전 세계의 절반을 끌어들이는지 보여주는 좋은 예입니다. 프랑스는 물론이고 벨기에, 퀘벡, 그리고 서아프리카의 상당한 지역이 포함됩니다. 번역 파일 하나로 수십 개의 국가를 커버합니다.

이 번역들은 어디에서 왔는가

이 부분은 제가 아마 가장 만족스러워하는 부분일 것입니다. 이것은 어떤 외부 API를 통해서도 이루어지지 않았습니다. 우리 자체 네트워크의 자체 하드웨어에서 실행되는 로컬 AI 모델이 번역했습니다.

이것이 의미하는 바를 쉽게 설명하면 다음과 같습니다:

  • 인터페이스의 단 한 문장도 외부로 유출되지 않았습니다. 어떤 AI 제공업체도 우리의 텍스트를 "처리"하기 위해 전달받지 않았습니다. 이는 우리가 "Skróć" 버튼에 숨길 것이 있어서가 아닙니다. 단순히 처음부터 이 프로젝트를 그렇게 설정했으며, 예외를 두면 나중에 감당할 수 없게 되기 때문에 예외를 만들지 않습니다.
  • 단어 대 단어로 번역하는 것보다 결과가 더 좋습니다. 모델이 문맥, 어조, 때로는 농담까지 유지합니다. "Short link"는 세 가지 언어에서 하나의 직역이 아닌, 세 가지 서로 다른 의미 있는 대응어를 가질 수 있습니다.
  • 쿼리당 비용이 전혀 들지 않습니다. 25개 버전의 문장 중 하나를 수정하고 싶나요? 바로 수정하면 되며, 청구서 금액을 신경 쓸 필요가 없습니다.

첫 번째 검토 후에도 저는 모든 버전을 꼼꼼히 살펴보았습니다. 레이아웃이 유지되는지, 독일어(그 멋진 긴 명사들)가 버튼 밖으로 텍스트를 밀어내지는 않는지, 아랍어가 실제로 올바른 방향으로 흐르는지 확인합니다.

페이지 반전, 즉 아랍어와 히브리어

이것은 별개의 작업이었지, "플래그 변경"이 아니었습니다. 이 두 언어에 대한 페이지 전체가 좌우 반전되어 있습니다. 네비게이션은 오른쪽에 위치하고, 화살표는 반대 방향을 향하며, 심지어 히어로 섹션의 그라데이션조차 반대로 적용되어 있습니다.

그만둘 수도 있었습니다. 많은 서비스들이 그렇게 하고 있으며, 그럴 경우 아랍어 버전은 누군가 부분적으로 뒤집어 놓은 서구권 사이트처럼 보입니다. 이는 즉시 눈에 <0xEB><0x9D><0x95>니다. 우리는 이집트인이나 이스라엘인이 이 사이트가 단순히 업무 시간 외에 번역된 것이 아니라, 그들을 위해 현지에서 제작되었다는 인상을 받기를 원했습니다.

폰트, 즉 깨지기 전까지는 아무도 생각하지 않는 문제


중국어, 일본어, 한국어. 일반적인 웹 폰트 내부에는 CJK 문자가 포함되어 있지 않습니다. 그대로 두면 사용자는 텍스트 대신 네모 모양(깨진 페이지의 전형적인 모습)을 보게 될 것입니다. 그래서 추가 폰트를 로드하되, 오직 이 버전들에만 적용합니다. 나머지 20여 개의 로케일은 우리의 가볍고 표준적인 서체를 사용하여 불필요한 것을 부담하지 않습니다. 태국어, 힌디어 및 기타 문자들도 정확히 동일한 방식을 적용받았습니다.

역순

패턴은 이미 알려져 있습니다: 제품을 영어로 출시한 뒤, 나머지 언어들은 "언젠가, 트래픽이 발생하면" 처리하겠다는 식이죠. 하지만 구글을 통해 유입된 스페인 사용자가 영어만 보게 된다면, 스페인어 트래픽은 결코 발생하지 않을 것입니다.

우리는 반대로 갔습니다. 안녕하세요를 위해 25개의 언어를 사용합니다. 체코, 대만, 베트남 또는 이집트의 누군가가 검색 엔진을 통해 들어와서 첫 화면부터 자기 나라 언어로 보게 됩니다.

여기에는 단순한 예의도 담겨 있습니다. 네트워크는 기본적으로 당신이 영어로 소통할 것이라고 가정합니다. 한국어나 태국어로 당신에게 말을 거는 유럽의 작은 도구는 동시에 또 다른 사실을 말해줍니다: 이것이 단지 영어권 중심만을 위한 것이 아니라, 모두를 위해 만들어졌다는 것을 말이죠.

그리고 당신의 것이 없다면

목록은 길지만 완전히 끝난 것은 아닙니다. 본인의 언어가 보이지 않나요? 문의하기. 새로운 언어를 추가하는 것은 저희에게 몇 분기나 걸리는 일이 아니라, 단 며칠이면 가능한 일입니다.

만약 우리가 이미 잘 통하고 있다면, 당신이 무엇을 해야 할지 알고 있을 겁니다. 링크 줄이기를 해보고 실제로 본인의 것과 똑같이 보이는지 확인해 보세요. 만약 무언가 어긋난다면, 그것도 알려주세요.