우즈베크어 / 카자흐어 키릴-라틴 문자 변환기
https://cyrillic-latin-converter.herokuapp.com/
이번 프로젝트는 React로 만드는 첫 번째 프로젝트이다. React를 배우기로 마음먹고 공식 문서를 읽으면서 섭씨와 화씨를 변환하는 예제를 보게 되었다. 섭씨 부분과 화씨 부분을 감싸는 공통 조상에 State를 끌어올려서 두 개의 필드를 동기화하여 한 쪽이 변하면 다른 한 쪽도 변하도록 하는 예시였다. 즉, 화씨 부분을 수정하면 즉시 섭씨로 변환된 값이 섭씨 부분에 업데이트 되고, 그 반대도 마찬가지인 것이다. 이 예제를 보고 키릴 - 라틴 문자 변환기도 같은 방식으로 만들어보면 좋겠다는 생각이 들었다.
갑자기 키릴 - 라틴 문자 변환기?
러시아어나 중앙아시아쪽 언어에 대해 잘 모른다면 키릴-라틴 문자 변환기가 뭔가 싶을텐데, 간단하게 설명하자면 키릴 문자는 러시아어에서 쓰는 문자이고, 라틴 문자는 영어 알파벳처럼 로마자로 된 문자를 말한다. 키릴 - 라틴 문자 변환기는 키릴 문자로 된 글을 라틴 문자로, 라틴 문자로 된 글을 키릴 문자로 바꿔준다.
이게 도대체 무슨 쓸모가 있나 싶을수도 있다. 당연히 러시아어를 라틴문자로 바꾸는 것은 의미가 없고, 내가 만들고자 한 것은 우즈베크어와 카자흐어를 대상으로 한다. 나는 대학에서 전공으로 카자흐어와 우즈베크어를 공부하였고, 학교를 다니면서 두 언어의 문자 사용과 관련해서 관심이 많았었다. 이 부분에 대해서 간략하게 설명하겠다.
중앙아시아 지역의 언어는 아랍 문자를 빌려 기록되다가 소련 초기에 라틴 문자가 도입되어 잠시 사용되었다. 그러다가 스탈린 집권 후 키릴 문자를 사용하게 되었고, 1991년 소련 해체 이후 키릴 문자를 버리고 라틴 문자를 다시 사용하려는 시도를 하게 된다. 우즈베키스탄의 경우 1993년부터 라틴 문자가 도입되어 현재까지 쓰이고 있고, 카자흐스탄의 경우 2017년부터 라틴 문자를 도입하여 전환하는 중이다.
두 국가 모두 키릴 문자를 오랜 세월 사용하였고, 라틴 문자로 변환하면서 여러 혼란이 있었다. 이미 키릴 문자로 교육 받은 세대는 라틴 문자로 된 자국어를 읽지 못하거나, 정교하지 못하게 설계된 문자 체계 때문에 불편한 부분이 생기기도 했다. 그래서 우즈베크어의 경우는 아직도 키릴 문자로 발행되는 출판물들이 있기도 하다.
이러한 점 때문에 이미 키릴 - 라틴 변환기가 여럿 존재한다. 그래도 내가 직접 한 번 구현해보고 싶었다.
💡 목표
이번 프로젝트는 React를 배우고 처음 만드는 프로젝트이므로, 이를 통해서 React를 익히는 것이 주된 목표이다. 그리고 이번에는 모바일에서도 이용할 수 있도록 반응형 웹으로 만들어볼 것이다. 마지막으로 지난 프로젝트에서 하지 못했던 테스트 코드를 작성해보고자 한다. 문자 변환이 제대로 이루어졌는지 검증하는 코드를 작성해 볼 것이다.
✅ 현재 상태
지금은 우즈베크어의 키릴 -> 라틴, 라틴 -> 키릴 변환만 완성된 상태이다. 또한 반응형으로 만들고자 시도해보았지만, 모바일에서 계속 원하는대로 화면이 나오지 않고 있다. 테스트 코드도 아직 작성하지 않았지만, 카자흐어의 변환를 만들기 전에 우즈베크어의 변환이 제대로 되는지 검증하는 테스트 코드를 작성해 볼 것이다.
사실 React로 컴포넌트들을 나누고 React 문서의 "State 끌어올리기"에서 본 부분을 구현하는 것이 핵심일 줄 알았으나, 막상 만들어보니 문자 변환하는 방식 자체를 고민하고 구현하는데 시간이 제일 많이 소요되었다. 문자 변환하는데 정규표현식을 사용하면서 오히려 React보다는 정규표현식에 대해서 많이 알게 되었다. 처음에는 엄청 비효율적인 정규표현식을 써서 변환 속도가 느렸는데, 정규표현식을 개선하면서 속도 문제도 같이 해결되었다.