그누/영카트5.4.13을 gml 방식의 다국어로 전환 > 그누M 자유게시판

그누M 자유게시판

그누/영카트5.4.13을 gml 방식의 다국어로 전환 정보

그누/영카트5.4.13을 gml 방식의 다국어로 전환

본문

gml을 사랑했던 사람으로서 gml 개발 중단소식에 나라를 잃은 망국의 슬픔을 이겨내지 못하고, 너무나 아쉬운 나머지 혼자서 gml 방식 그대로 그누/영카트5.4.13을 다국어로 바꿔봤습니다.

문제는 저가 php나 mysql, javascript는 물론 css도 모르는 깡통 문외한이라는 겁니다.

 

제 보기에 gml0.1.1.3이 g5.3.3.3과 거의 같은 거 같아보였습니다.

gml은 다국어 부분 코딩을 제외하고는 그누보드의 원형을 유지하기 때문에 그누보드의 버전업에 따른 신속한 동보 작업이 가능했다는 점도 큰 장점이었습니다.

 

gml의 다국어 처리방식은 단수,복수 처리 등에서 효율적이어서 어순과 수량표현 체계가 서로 다른 언어들간의 번역에서 조작성이 좋고, 대역어의 위치 파악과 확인이 명확하기 때문에, 저같은 문외한도 수정편집과 추가 번역어 작업이 한결 손쉬웠습니다.

gml이 보여준 방식은 그누보드의 개발방향과 gml 사이트 관리자들의 활용성을 선도하는 나침반 역할을 할수 있을 것이란 생각이 들었습니다.

 

다만, 저는 코딩을 몰라서 이렇게 생각할 뿐 인터페이스에 문제가 발생하면 해결을 하지못합니다.

암튼, 작업은 아래 순서로 진행했습니다.

 

1. /, /adm, /lib, /install 디렉토리에서, gml에는 있고 g/y5413에는 없는 폴더와 파일은 그대로 복사해 넣었습니다.

 

2. /lang 디렉토리는 gml의 구성에 따라 g/y5413에 그대로 복사해 넣었습니다.

 

3. gml의 예를 따라 lang관련 코드 부분을 복사해서 삽입해 넣었습니다.

 

/common.php ... gml과 같이 lang 관련 경로 추가

/config.php ... gml과 같이 lang 관련 경로 추가

/adm/admin.menu100.php ... lang 관련 관리자 부분 추가

/adm/config_form.php ... lang 관련 부분 추가

...

/install/gnuboard5.sql ... lang관련 부분 등 gml 부분 추가

/install/install_db.php ... lang관련 부분 등 gml 부분 추가

 

4. 그리고, sublime text를 이용해서, y5413 디렉토리 전체의 파일들에서 아래 함수들을 일괄 변환해주었습니다.

 

gml_ --> g5_

$gml --> $g5

GML_ --> G5_

 

$gmnow (install/install_db.php)

GML_Hook  (lib/hook.lib.php, lib/Hook/hook.extends.class.php) g5 배포본 대로 유지, 수정되지 않도록 할 것.

 

5. gml과 y5413이 서로 다르게 사용하는 함수명을 마친가지로 sublime text를 이용해서 일괄 변환해주었습니다.

 

put_replace  --> add_replace
apply_replace  --> run_replace
delete_replace  = delete_replace

 

6. /theme/basic을 복사해서 /theme/basic-ML로 구성한 다음, gml의 예를 따라 아래와 같이 수정했습니다.

 

/theme/basic-ML/head.sub.php ... gml의 lang 관련 부분 추가

/theme/basic-ML/theme.config.php ... gml의 lang 관련 부분과 같이 끝부분 추가 편집

/theme/basic-ML/head.php에 lang 셀렉트박스 삽입

/theme/basic-ML/shop/head.php에 lang 셀렉트박스 삽입

/theme/basic-ML/css/default.css ... theme_select_lang 스타일 삽입
/theme/basic-ML/css/default_shop.css ... theme_select_lang 스타일 삽입

 

이상과 같이 필요한 작업 사항은 많지 않습니다.

 

7. 나머지 화면상에 표시되는 텍스트 부분은 파일들에서 하나하나 직접 다국어 코드로 바꿔줘야 합니다만, gml을 구성하신 리자님의 방식을 그대로 따라서 바꿔넣기만 하는 거니까, 리자님의 수고에 비하면 우리의 작업은 무척이나 수월한 작업일 겁니다.

 

8. 쇼핑몰 부분의 다국어와 커뮤니티의 일부 다국어 부분은 poedit를 이용해 .po, .mo를 만들어 gml의 예에 따라 해당 디렉토리에 넣어줍니다.

--------------------------

경과

이상의 방법으로 작업해서 설치한 뒤, 다국어 셀렉트를 통해 언어 전환을 해보니, 일부는 작동하고 일부는 작동하지 않는 경우가 있었습니다.

하지만, gml의 예에 따라 한글 부분을 다국어 코딩으로 바꿔주는 작업을 계속 진행하면서,

common.php, config.php에서 경로 지정을 다시 확인하고, .po, .mo 파일에 번역어들을 제대로 편집해서 넣어주니, 현재로서는 일단 정상적으로 작동하는 것을 확인할수 있었습니다.

제가 비록 코딩을 모르는 사람이라서, 코딩규칙에 대한 최소한의 이해를 바탕으로 copy & paste를 통해 다국어화 작업을 했으니까, 코딩세계에 발을 들여놓은 여러분들은 아마도 저보다도 간단히 작업을 할수 있으리라 생각됩니다.

 

1959224860_1578176920.6533.png

 

1959224860_1578176929.6687.png

 

 

추천
2
비추천
0
  • 복사

댓글 전체

덕분에 다국어버전 작업 쉽게 했네요.

근데 혹시 관리자페이지에서 "테마 언어 파일" 메뉴에서도 잘 작동하나요?

저는 관리자페이지에서 테마 언어 파일에 들가서 각 언어 파일을 수정할려고하는데


첨부한 사진을 보면 빨강색으로 표시한 부분이 안되네요.

그누구나님은 저부분 어덯게 해결 했나요?
언어전환 부분은 저도 처음에는 제대로 작동하지 않았습니다만,
이리저리 손을 보던 중 어느날 정상 작동을 했습니다.
하지만 무슨 이유나 원리라면 저는 역시 모르니까 ㅎㅎ,
소 뒷걸음에 쥐잡기를 한 제 코드를 알려드립니다.

adm/config_form.php에 1-23 줄 추가
---------------------------------------------
<?php
$sub_menu = "100100";
include_once('./_common.php');

auth_check($auth[$sub_menu], 'r');

if ($is_admin != 'super')
    alert(__('Only the Super administrator can access it.'));//최고관리자만 접근 가능합니다.

///////////////////////////gml
//다국어 관련 필드
if( ! isset($config['cf_lang']) ) {
    sql_query("ALTER TABLE `{$g5['config_table']}`
                ADD `cf_lang` char(10) NOT NULL DEFAULT '' AFTER `cf_admin_email_name`
    ", true);
}

if( ! isset($config['cf_use_multi_lang_data']) ) {
    sql_query("ALTER TABLE `{$g5['config_table']}`
                ADD `cf_use_multi_lang_data` tinyint(4) NOT NULL DEFAULT '0' AFTER `cf_lang`
    ", true);
}
/////////////////////////////
.........



adm/config_form.php에 364-374줄 추가
---------------------------------------------
.........
<!--//////////////////////gml-->
            <th scope="row"><label for="cf_lang"><?php e__('Site language');//사이트 언어 ?><strong class="sound_only"><?php e__('required');//필수 ?></strong></label></th>
            <td><?php echo get_lang_select_html('cf_lang', $config['cf_lang'], ''); ?></td>

            <th scope="row"><label for="cf_use_multi_lang_data"><?php e__('Use multi language data');//다국어 데이터 사용 ?></label></th>
            <td>
                <?php echo help(__('When enabled, content management and FAQ management pages can be entered and printed by language. When disabled, it integrates as one and inputs and outputs.'));//활성화시 내용 관리, FAQ 관리페이지에 언어별로 입력 및 출력 할수 있습니다. 비활성화시 하나로 통합하여 입출력합니다. ?>
                <input type="checkbox" name="cf_use_multi_lang_data" value="1" id="cf_use_multi_lang_data" <?php echo $config['cf_use_multi_lang_data']?'checked':''; ?>> <?php e__('Enable on check'); ?>
            </td>
        </tr>
<!--//////////////////////gml-->
.........



adm/config_form_update.php 193-210 줄 추가 및 수정
------------------------------------
.........
cf_lang = '{$_POST['cf_lang']}',
cf_use_multi_lang_data = '{$_POST['cf_use_multi_lang_data']}',



adm/config_form_update.php 44-45 줄 추가
.........
//sql_query(" OPTIMIZE TABLE `$g5[config_table]` ");

//gml #####################################
if( array_key_exists($cf_lang, allow_locale_langs()) ){
    set_session('lang', $cf_lang);
    set_cookie('lang', $cf_lang, 86400 * 1);
}

if( isset($_POST['cf_bbs_rewrite']) ){
    g5_delete_all_cache();
}

run_event('admin_config_form_update');

update_rewrite_rules();

//gml ####################
//start_event('admin_config_form_update', $cf_lang);
.........
답변 감사합니다만. 제가 질문한부분은
/adm/theme_lang.php  파일 부분입니다.
이부분은 관리자페이지에서  .po 언어파일을 편집할수 있게 돼 있는데
그누보드5에 적용후 안되네요.
아, 테마언어 이쪽은 php 서버와 관련이 있는 듯하다고 추측합니다만...
원래의 그누M에서도, 지금의 G5 다국어 모두 다, 저가 사용하는 호스팅쪽 서버나 로컬서버 모두에서 작동하지 않습니다. 이게 되면 편리할텐데, 하지만 이거 하나는 포기했습니다. 해결책을 찾으시면 제게도 알려주세요.
© SIRSOFT
현재 페이지 제일 처음으로