자유

XE 의 언어팩

Lv12
GG
조회 수 316 추천 수 0 댓글 12

XE가 무거운 여러 이유중에 하나인 언어팩에 대해서 구조를 좀 바꿔야 하지 않나 싶습니다.

여러 유저들의 테스트로 입증된, 다국어 부분의 lang 파일을 다이어트 하면 사이트가 빨라지는 것은 이렇게 해결하면 어떨까 싶습니다.

 

1. 다국어는 그대로 지원하되 common lang 파일을 국가별로 구분한다 (기능자체는 이미 지원되고 있는것 같습니다.)

2. 코어에서 페이지 로딩 시작하면 언어를 구분해서 언어에 맞는 lang 파일만 로딩합니다.

 

혹시 이미 잘 되어 있다거나 제가 모르는 부분이 있던 것이라 오해였다면 지적 부탁드립니다.

  • Lv16
    이전부터 계속 주장하고 있었지만,

    언어팩은 초기와 같이 언어별 개별파일로 되어야 하고, 필요할 때만 불러온다던지 해야한다고 생각합니다.(캐싱은 논외)

    처음에 합쳐진게 1.7버전대였던 것 같은데 그 이유가 언어를 한 번에 입력할 때 편리하다는 것과 누락이 없는 등의 유지보수가 편리하다는 이유에서였습니다.

    근데 이게 정말 답답한 게, 너무 개발 편의적인 생각이 아니였나 합니다. 물론, 처음 입력하는 사람이 여러 언어를 입력할 때는 위 방식이 편리할 수도 있습니다.

    하지만, 다른 사람과 분담한다거나, 혹은 다른 사람이 추가한 언어를 자기것과 머지시킬 때 문제가 발생합니다.
    예를 들어 A는 한국어와 영어, 중국어, 일본어의 lang.xml을 가지고 있습니다.
    B라는 사람이 불어를 추가한 lang.xml을 배포합니다.

    여기까지만 보면 문제가 없을 듯 한데

    문제는 B라는 사람은 한국어, 영어, 불어만 있습니다.

    이 때 A라는 사람이 불어를 추가하기 위해 해야하는 방법은 불어에 해당하는 부분을 일일이 그 위치를 찾아서 복붙하거나,
    약간의 개발 지식이 있다면 필요한 부분을 별도로 merge해주는 프로그래밍하여 처리하겠죠.

    문제는 XE에서 기본적으로 언어를 머지해줄 프로그래밍도 지원하지 않을 뿐더러,
    새로운 언어를 추가할 때마다 해당 위치에 추가를 해줘야 하기 때문에 오히려 가독성이 떨어질 수 있습니다.

    단순히 ko.xml (한국어파일)이 있다고 치면, 일본어를 추가하고자 하는 사람은 ko..xml을 en.xml로 복사한 후
    파일을 열어서 한국어 부분을 보면서 번역하여 기입하면 간단하게 부담없이 언어파일을 추가할 수 있습니다.

    하지만 현재 같은 방식이라면, lang.xml 파일을 열어서 각 번역 부분마다 복사를 해야하고, ko 부분을 en으로 수정해야 합니다...
    즉, 한 번의 카피하고 번역만 하면되느냐와, 각각 엘레멘트마다 복붙하고, ko 부분을 en으로 수정까지 한 다음 번역하는 것과
    작업의 차이는 크다고 봅니다.

    그렇기 때문에 많은 프로그램들이 위와 같이 하나의 언어팩 파일이 아닌, 각각 개별의 언어파일로 지원하고 있고, 필요에 따라 손쉽게 언어를 추가할 수 있습니다.

    물론 이와 같은 방식의 단점은 새로운 언어를 추가할 때의 유지보수는 불편한 부분이 분명 있습니다.
    하지만, 이로 인한 불편함과 위의 불편함과의 차이는 크다고 봅니다.

    또 이 경우 각각 언어파일을 비교해서 누락된 부분이 있을 시 알려주는 정도로 서비스를 제공한다면, 누락 부분도 크게 문제가 없을 거라 생각됩니다. (기본적으로 디폴트 되는 언어를 기준으로 한다면, 현재와 같이 해당 언어가 없을 시 디폴트되는 언어로 출력하게 하면 되니까요.)
  • Lv16 Lv12
    만약 특정 변수값이 없다면 기본 언어는 먼저 읽고 선택한 특정 국가 언어를 변수에 뒤엎어 쓰기하도록 하면 일단 공란은 아니고 기본언어로는 나오니 패치하기 좋을듯 합니다.
  • ?
    예전에 언어 파일은 ko.lang.php 같은 식이었는데, 번역가들이 PHP 문법까지 알아야 하느냐는 이야기가 있어서 xml이 되었지요. 그런데 ko.lang.xml 이 아니라 lang.xml 이 되었지요.
  • ? Lv37

    그놈의 PHP 문법 알레르기 때문에 오히려 더 알아보기 힘든 XML 천국이 되어버렸지요 ㅠㅠ

    PHP:
    $lang->hello = '안녕하세요?';

    XML:
    <item name="hello"><value xml:lang="ko"><![CDATA[안녕하세요?]]></value></item>

    번역가 편의를 그렇게 신경쓴다면 차라리 YAML 같은 것으로 해버렸다면 훨씬 간단했을 것을...

    YAML:
    hello: 안녕하세요?

    사실 Rhymix에도 YAML 설정파일을 도입하는 게 어떨까 생각중입니다. 라라벨이나 코드셉션 같은 데서는 읽기 편하니까 많이 쓰더라구요. 문제는 PHP에 내장된 YAML 파서가 없어서 서드파티 라이브러리에 의존해야 하므로 느려터졌다는 것... 파싱 결과를 캐싱해 두면 상관없으려나...

  • ? ?
    <?php ?> 를 안쓰는데에 든 대가는 정말 크고 컸군요...
  • Lv37 ?
    잘은 모르겠지만 크게 달라지는게 없다면 PHP가 좋을 것 같습니다 ㅎㅎ
  • ? Lv37
    ㅋㅋ 그렇겠죠? 따옴표 사이에 글자 채워넣는 게 뭐 그렇게 어렵다고...
  • Lv37 Lv16
    그냥 php 방식으로 해도 되지 않을까라는 생각을 해봤습니다.

    문법이라기 보다 하나의 규칙 정도로 심플하게 하면 되니까요...

    js플러그인 같은 경우 js파일로 lang 파일이 작성된 경우도 많이 있기 때문에,

    매뉴얼만 제공된다면 충분히 개발에 개자를 몰라도 언어 추가하는 데는 문제가 없을 거라 생각됩니다.

    기존 XE의 가장 큰 문제점은 매뉴얼 제공의 부재가 컸다고 봅니다.
  • Lv37 Lv16
    보기 익숙하냐 아니냐 때문에 xml로 한 것 같아요
    사실 php가 더 간편하지만 보는 눈은 xml 쪽이 더 익숙해서?;
  • Lv16 Lv37
    XML이 눈에 익숙한 사람은 눈이 삐었거나... 스톡홀름 증후군이거나... ㅋㅋㅋ
  • Lv11
    라이믹스 깃허브에도 논의되고 있는 부분입니다. 
    이것 저것 코어 뜯어서 사용하다보면 XE도 충분히 최적화 가능하고 느리지는 않습니다 ㅎㅎ

    라이믹스는 전문적으로 내부 이것 저것 까지 수정하니 +|☆|+ 기대할만 하죠 ㅎㅎ

    XE3을 대체하고 대응하는 유일한 CMS으로 성장하면 좋겠습니다.
    는 이야기가 다르게 샜네요ㅎㅎ
  • Lv37
    https://github.com/rhymix/rhymix/issues/67