다국어 페이지 연결 방법?
본문
안녕하세요
다국어 웹사이트를 제작중입니다.
한국어 메인 경로 /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>
rewrite 를 사용 중일 경우 $_SERVER['PHP_SELF'] 로 올바른 경로를 잡아내지 못할 수 있습니다.
$urlParts = explode('/', $_SERVER['REQUEST_URI']);
if (in_array('en', $urlParts)) {
// en 없는 주소로 이동 코드
} else {
// en 있는 주소로 이동 코드
}
조언을 해주신 모든 분들께 감사드립니다.
최종적으로 웅프님과 들레아빠님의 코드를 조합해서 해결했습니다.
즐거운 주말 되세요~^^