Extra Form
PHP PHP 7.3
CMS Rhymix 2.x

다국어 서비스를 준비하고 있습니다.

의뢰하기 전에 내용을 좀 파악을 해야 구상도 할 수 있기 때문에 조언을 요청드립니다!

 

1. 애드온이나 모듈마다 Lang 폴더를 가지고 있는데 각각 작업을 해야하나요? 아니면 Common -> Lang 에서 한번에 작업하면 될까요? 

 

2. en.php 와 en.lang.php 의 차이

 

3. 안내문 문구와 같이 단어가 아닌 긴 문장 또는 여러문장으로 이루어진 문단의 경우도 en.lang.php 에서 설정해주면 될까요? 아니면 하드 코딩으로 해당 div나 p 태그에 뭔가 언어 설정에 따라 출력되도록 해주는 편이 나을까요?

 

4. 원래 메뉴가 a / b / c 라는 메뉴를 가지고 있다면, 특정 언어가 선택된 화면에서는 a/b 만 출력되도록 하고 싶은데 대략 어떤 식으로 구현해야 할지.

 

5. 언어 설정을 감지할 수 있는 조건문(if?)가 있는지요.

 

5. 지금은 조금 작업해놓고 관리자 메뉴에서 시스템 설정에서 언어를 변경하고 있는데 이렇게 하니 다시 원복하려면 캐쉬 뿐 아니라 브라우저 캐쉬까지 지워야 합니다. 일전에 검색하다가 주소명 뒤에 en_en 이런식으로 붙이면 해당 언어가 설정된 화면을 출력해주던데 다시 찾으려니 못찾겠습니다.

 

  • profile

    1. 작업하시려는 자료(스킨, 레이아웃, 모듈, 애드온 등) 안에서 파일을 만들어 쓰세요. 코어의 영역은 건드리면 안됩니다.

    2. en.php는 라이믹스 방식입니다. XE 방식은 lang.xml 파일 하나에 다 집어넣는 것인데, XE도 아주 오래 전에는 en.lang.php이라고 쓴 적이 있습니다. 라이믹스는 3가지 모두 지원하지만, 성능면에서는 라이믹스 방식이 가장 유리합니다.

    3. 케바케입니다. 너무 길고 복잡하고 HTML이나 변수 내용도 들어가야 한다면 스킨에서 현재 언어에 따라 분기 처리하는 편이 더 관리하기 쉬울 것입니다.

    4. 태그 구조에 따라 다릅니다. 특정 언어에서 해당 언어코드를 빈 문자열로 만들어 버리는 방법도 있겠고, 그래도 앞뒤에 태그나 아이콘 등이 지저분하게 남는 것이 싫다면 소스에서 언어에 따라 다르게 처리하는 방법밖에 없습니다.

    5. Context::getLangType()

    6. 사이트주소?l=en 을 붙이면 영어 모드가 되고, ?l=ko를 붙이면 한국어 모드가 됩니다. 그 밖의 언어도 코드가 다를 뿐 문법은 동일합니다. 소문자 L입니다.

  • profile profile
    빠르고 시원한 답변 감사합니다!
    2.en.php와 en.lang.php 모두 있어서 각각 역할이 있는 것으로 생각했는데 en.lang.php는 XE의 흔적이었군요.
    4.메뉴에서 메뉴 이름 대신 display:none 처리 했더니 간단하게 안보이는 처리가 되었는데 둘러싼 div가 마진값이 있어서 고민을 더 해봐야겠네요.
    5. 혹시 간단한 예시하나만 부탁드려도 될까요? 한글일때는 안녕 영어일때는 hello 라던지..

    추가 질문: 선택된 언어에 따라 css만 다르게 적용하고 싶을 경우엔 어떻게 해야할까요?
  • profile profile

    5번 예시:

    <!--@if(Context::getLangType() === 'ko')-->안녕<!--@else-->hello<!--@end-->

    HTML:
    <div class="lang_{Context::getLangType()}"></div>

    CSS:
    .lang_ko { 한국어 CSS; }
    .lang_en { 영어 CSS; }

  • profile profile

    추가질문은 class를 직접 만들어 쓰는 대신, 언어에 따라 라이믹스에서 기본 세팅해 주는 속성을 활용할 수도 있겠습니다. 태그 구조에 따라 편리한 쪽을 택하세요.

    html[lang=ko] .myClass div span { 한국어 CSS; }
    html[lang=en] .myClass div span { 영어 CSS; }

  • profile profile
    빠르고 시원한 답변 감사합니다!!!