다국어 사용방법
다국어 사용방법 공유드립니다.
1. 클래스 추가
#/lang/I18n.php
<?php
class I18n {
private $language; // 현재 언어 코드
private $translations; // 번역 데이터 배열
private $langDirectory; // 언어 파일이 위치한 디렉토리
public function __construct($defaultLanguage = 'ko', $langDirectory = __DIR__) {
$this->langDirectory = rtrim($langDirectory, '/');
$this->translations = [];
// 세션 시작
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
// 세션에서 언어 설정 로드
$this->language = $_SESSION['language'] ?? $defaultLanguage;
$this->loadLanguageFile();
}
// 언어 파일 로드
private function loadLanguageFile() {
$filePath = "{$this->langDirectory}/{$this->language}.php";
if (file_exists($filePath)) {
$this->translations = include($filePath);
} else {
throw new Exception("Language file '{$filePath}' not found.");
}
}
// 현재 언어 설정
public function setLanguage($language) {
$this->language = $language;
$_SESSION['language'] = $language; // 세션에 저장
$this->loadLanguageFile();
}
// 현재 언어 가져오기
public function getLanguage() {
return $this->language;
}
// 번역 함수
public function __($key, $params=[]) {
if (isset($this->translations[$key])) {
$message = $this->translations[$key];
if (!empty($params)) {
return vsprintf($message, $params);
}
return $message;
}
return $key; // 키가 없으면 키 자체 반환
}
}
2. 언어파일 추가
<?php
#/lang/en.php
return [
'greeting' => 'Hello, %s! Welcome to %s.',
'items_in_cart' => 'You have %d items in your cart.',
];
<?php
#/lang/ko.php
return [
'greeting' => '%s님, 안녕하세요! %s에 오신 것을 환영합니다.',
'items_in_cart' => '장바구니에 %d개의 상품이 있습니다.',
];
3. extend 추가
#extend/i18n.extend.php
<?php
include G5_PATH.'/lang/I18n.php';
$i18n = new I18n();
function __($key, $params=[]) {
global $i18n;
return $i18n->__($key, $params);
}
사용예제
1. 언어변경
$i18n->setLanguage('en');
2. 텍스트출력
echo __('greeting', ['John Doe', 'gnuboard']);
댓글 9개
1년 전
감사합니다
민트다이어리
1년 전
감사합니다 ^^
JSWORKS
1년 전
감사합니다.
테스터할려구요
1년 전
감사합니다~
1년 전
감사합니다.
1년 전
감사합니다.
11개월 전
안녕하세요 혹시 이거 어떻게 사용 하는 거예요
이번에 한글 하고 영어 이렇게 사용 하려고 하는데 어떻게 사용하는지 궁금 합니다.
그리고 메뉴등 전체 페이지가 바귀는 것인지요
11개월 전
안녕하세요 혹시 이거 어떻게 사용 하는 거예요
이번에 한글 하고 영어 이렇게 사용 하려고 하는데 어떻게 사용하는지 궁금 합니다.
그리고 메뉴등 전체 페이지가 바귀는 것인지요
거북이와두루미
10개월 전
@꿈의세계
안녕하세요 해당 코드 적용시 메뉴등 전체 페이지가 변경되지는 않습니다. /lang 디렉토리에 정의된 언어에 대해서만 적용가능합니다.
만약 메뉴에 적용하고 싶으시면 lang/ko.php /lang/en.php에 메뉴명을 정의하시고 메뉴 출력하는 부분에 '__()'함수를 사용하시면 됩니다.
예)
/lang/en.php
return [
'about' => 'about',
]
/lang/ko.php
return [
'about' => '소개',
]
// 메뉴 출력
echo __('about'); // 한글설정이라면 '소개', 영서 설정이라면 'about' 출력
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4403 | ||
| 2394 | 1년 전 | 5050 | ||
| 2393 |
|
1년 전 | 1699 | |
| 2392 |
|
1년 전 | 1358 | |
| 2391 |
|
1년 전 | 1140 | |
| 2390 |
|
1년 전 | 1193 | |
| 2389 | 1년 전 | 1780 | ||
| 2388 | 1년 전 | 1326 | ||
| 2387 | 1년 전 | 1309 | ||
| 2386 |
투명한열정
|
1년 전 | 3073 | |
| 2385 |
|
1년 전 | 2342 | |
| 2384 | 1년 전 | 1669 | ||
| 2383 | 1년 전 | 1803 | ||
| 2382 | 1년 전 | 1455 | ||
| 2381 |
|
1년 전 | 1872 | |
| 2380 | 1년 전 | 1042 | ||
| 2379 | 1년 전 | 1385 | ||
| 2378 | 1년 전 | 919 | ||
| 2377 | 1년 전 | 2997 | ||
| 2376 | 1년 전 | 1562 | ||
| 2375 | 1년 전 | 1736 | ||
| 2374 |
네이비스택
|
1년 전 | 1116 | |
| 2373 | 1년 전 | 1549 | ||
| 2372 | 1년 전 | 1469 | ||
| 2371 |
goodman148
|
1년 전 | 2112 | |
| 2370 | 1년 전 | 1520 | ||
| 2369 |
|
1년 전 | 1033 | |
| 2368 | 1년 전 | 1836 | ||
| 2367 | 1년 전 | 1356 | ||
| 2366 |
|
1년 전 | 1213 | |
| 2365 | 1년 전 | 2143 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기