다국어 페이지 연결 방법?

다국어 페이지 연결 방법?

QA

다국어 페이지 연결 방법?

본문

안녕하세요

다국어 웹사이트를 제작중입니다.

한국어 메인 경로 /index.php

한국어 페이지 경로 /pages/

 

영어 메인경로 /en/index.php

영어 페이지 경로 /en/pages/

 

이렇게 제작이 완료된 상태입니다. (영어페이지는 자체 번역 페이지, 게시판포함)

 

헤더 부분에 다음과 같이 정의 했습니다.


<?php
$availableLanguages = array(
    'ko_KR' => '한국어',
    'en_US' => '영어',
    // 다른 언어 코드 및 이름 추가
);
if (isset($_GET['locale'])) {
    $selectedLanguage = $_GET['locale'];
} else {
    // 기본 언어 설정
    $selectedLanguage = 'ko_KR';
}
function generateLanguageLink($languageCode) {
    return $_SERVER['PHP_SELF'] . '?locale=' . $languageCode;
}
?>
 
        <div style="text-align: right;margin-right:30px;">
            <a href="<?php echo generateLanguageLink($code); ?>" style="margin-right: 10px;"><img src="/en/img/ko_KR-ic.jpg" alt="한국어" style="width:34px;height:21px;"> <?php echo $name; ?></a>
            <a href="<?php echo generateLanguageLink($code); ?>"><img src="/en/img/en_US-ic.jpg" alt="영어" style="width:27px;height:17px;"> <?php echo $name; ?></a>
    <?php endforeach; ?>
</div>

 

이렇게 했는데메인에서 영어 클릭시 메인 전환은 잘됩니다. 영어 페이지에서 한국어 클릭시 한국어 페이지로 전환은 잘되고요

문제는 한국어 페이지 회사소개에서 영어를 클릭하면 영어페이지 ABOUT 으로 전환이 되어야 하는데 영어 메인페이지로 전환됩니다.

 

뭔가 변수 및 정의를 더 해 줘야 할 것 같은데 여러방법으로 수정을 해봐도 계속 메인으로만 전환이됩니다.

어떻게 해야 하는지 고수님 들의 도움 부탁드리겠습니다.

 

즐거운 저녁 되세요.

이 질문에 댓글 쓰기 :

답변 5

<?php
$availableLanguages = array(
    'ko_KR' => '한국어',
    'en_US' => '영어',
    // 다른 언어 코드 및 이름 추가
);

if (isset($_GET['locale'])) {
    $selectedLanguage = $_GET['locale'];
} else {
    // 기본 언어 설정
    $selectedLanguage = 'ko_KR';
}

function generateLanguageLink($languageCode) {
    return $_SERVER['PHP_SELF'] . '?locale=' . $languageCode;
}
?>

<div style="text-align: right; margin-right: 30px;">
    <?php foreach ($availableLanguages as $code => $name) { ?>
        <a href="<?php echo generateLanguageLink($code); ?>" style="margin-right: 10px;">
            <img src="/en/img/<?php echo $code; ?>-ic.jpg" alt="<?php echo $name; ?>" style="width: 34px; height: 21px;">
            <?php echo $name; ?>
        </a>
    <?php } ?>
</div>

이래 해보시던가 아니면 아래 


<?php
// 사용 가능한 언어와 해당 페이지의 경로 설정
$languages = array(
    'ko_KR' => array('name' => '한국어', 'root' => '', 'pages' => 'pages/'),
    'en_US' => array('name' => '영어', 'root' => 'en/', 'pages' => 'en/pages/'),
    // 다른 언어 및 경로 설정 추가
);
// 현재 선택된 언어를 확인
if (isset($_GET['locale']) && array_key_exists($_GET['locale'], $languages)) {
    $selectedLanguage = $_GET['locale'];
} else {
    // 기본 언어 설정
    $selectedLanguage = 'ko_KR';
}
function generateLanguageLink($languageCode) {
    global $languages;
    $language = $languages[$languageCode];
    return '/' . $language['root'] . '?locale=' . $languageCode;
}
?>
<div style="text-align: right; margin-right: 30px;">
    <?php foreach ($languages as $code => $details): ?>
        <a href="<?php echo generateLanguageLink($code); ?>" style="margin-right: 10px;">
            <img src="/en/img/<?php echo $code; ?>-ic.jpg" alt="<?php echo $details['name']; ?>" style="width: 34px; height: 21px;">
            <?php echo $details['name']; ?>
        </a>
    <?php endforeach; ?>
</div>
그냥, 간단하게 아래처럼 하면 되지 않을까요?

$urlParts = explode('/', $_SERVER['REQUEST_URI']);
if (in_array('en', $urlParts)) {
    // en 없는 주소로 이동 코드
} else {
    // en 있는 주소로 이동 코드
}

답변감사합니다. 알려주신방법으로 해도 계속 메인 페이지로만 전환이 됩니다.


<?php
// 사용 가능한 언어와 해당 페이지의 경로 설정
$languages = array(
    'ko_KR' => array('name' => '한국어', 'root' => '', 'pages' => 'pages/'),
    'en_US' => array('name' => '영어', 'root' => 'en/', 'pages' => 'en/pages/'),
    // 다른 언어 및 경로 설정 추가
);

// 현재 선택된 언어를 확인
if (isset($_GET['locale']) && array_key_exists($_GET['locale'], $languages)) {
    $selectedLanguage = $_GET['locale'];
} else {
    // 기본 언어 설정
    $selectedLanguage = 'ko_KR';
}

function generateLanguageLink($languageCode) {
    global $languages;
    $language = $languages[$languageCode];
    return '/' . $language['root'] . '?locale=' . $languageCode;
}

        <div style="text-align: right;margin-right:30px;">
            <a href="<?php echo generateLanguageLink($code); ?>" style="margin-right: 10px;"><img src="/en/img/ko_KR-ic.jpg" alt="한국어" style="width:34px;height:21px;"> <?php echo $name; ?></a>
            <a href="<?php echo generateLanguageLink($code); ?>"><img src="/en/img/en_US-ic.jpg" alt="영어" style="width:27px;height:17px;"> <?php echo $name; ?></a>
    <?php endforeach; ?>
</div>
?>

이렇게 수정해봤습니다

$_SERVER['REQUEST_URI'] 로 현재 주소 파악해서 strstr  함수로 /en/ 있는지 검사해서 있으면 str_replace함수로 없애버리고, 없으면 /en/ 해당하는 코드를 넣어주시면 되지 않을까요. en 으로 시작하는지 여부만 판별하니까, $_SERVER['REQUEST_URI'] 전체가 아니라 이것의 앞 몇글자로만 판별하시면 될 듯...

솔직히 적어주신 코드는 어떻게 동작하는지 감이 잘 안 오네요. ㅎ
독립변수로 넣는 $code 값이 어디서 오는지 모르겠어요.

function generateLanguageLink($languageCode, $pageContext = '') { global $languages; $language = $languages[$languageCode]; return '/' . $language['root'] . $language['pages'] . $pageContext . '?locale=' . $languageCode; }

이렇게 수정 해주시고

회사 소개 페이지 에서 링크를 해주시면 될것 같은데요;;

<a href="<?php echo generateLanguageLink($code, 'about'); ?>"> <img src="/en/img/ko_KR-ic.jpg" alt="한국어" style="width: 34px; height: 21px;"> <?php echo $name; ?> </a>

답변을 작성하시기 전에 로그인 해주세요.
전체 1,108
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT