반응형
<div class="has_popup2">
<div class="color_black" style="cursor:pointer;"> <i class="ri-earth-fill"></i></div>
<ul class="menu__popup2 space-y-20" style="cursor:pointer;">
<li>
<a href="/api/lang_KR">KOR</a>
</li>
<li>
<a href="/api/lang_EN">ENG</a>
</li>
</ul>
</div>
nav바에서 클릭시 언어를 불러오는 것이 필요했다.
이를 구현하기 위해서 어떻게 해야하는가?
처음엔 단순히 api호출만 생각했는데, 그럴 필요가 없었다. 위의 코드로는 작동이 안된다.
아래 코드로 할 것.
겨우 찾아냈던 코드인데, 이를 위해서 언어를 설정할 곳이 필요하다.
// view\프론트.php
<a class="dropdown-item" href="<?= base_url('lang/en'); ?>">English</a>
<a class="dropdown-item" href="<?= base_url('lang/es'); ?>">Español</a>
// Config\Routes.php;
$routes->get('/lang/{locale}', 'Language::index'); // 해당 코드 추가. 그 이유가 다른 "/"로 들어가면 다른 곳으로 가야하니까. 그러함. 해당 함수만 일부러 이렇게 오게 설정하였다
// controller\Language.php;
class Language extends BaseController
{
public function index()
{
$session = session();
// $locale = $this->request->getLocale(); // 원래 이건데 이거 호출시 안먹혀서 아래 방법으로 대체하였다.
$locale = service('request')->getLocale();
$session->remove('lang');
$session->set('lang',$locale);
$url = base_url();
return redirect()->to($url);
}
}
// controller\Basecontroller.php
class BaseController extends Controller{
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
$session = \Config\Services::session();
$language = \Config\Services::language();
$language->setLocale($session->lang);
}
}
이렇게 구현했다.
뭐 땜시 구현이 안되던데, 뭔가했더니 주소가 달라졌더라.
config/app.php 에서 default 페이지가 실제 도메인 주소로 연결되게 되어있어서 호출이 안되던 문제가 있었다.
해당 부분 해결하니 바로 붙던...
아무튼 여기는 그냥 호출 부분이고,
app\language\나라별폴더\sample.php 또는 app.php이든 동일한 이름으로 호출해야한다.
자세한 방법은 아래 링크 찾아볼 것.
http://sample4.cikorea.net/response/localization
출처
728x90
'취업 > CodeIgniter' 카테고리의 다른 글
[ci4] memcached 사용하기 (0) | 2022.04.25 |
---|---|
[ci4] 최소지원 php 버전은 7.2? 7.3? (0) | 2022.02.22 |
[CI4] 코드이그나이터4 with React.js lib연동 (0) | 2022.01.20 |
[ci4]codeigniter4 index.php is kill, index.php 죽이기 (0) | 2022.01.19 |
[ci4] ci4 with react.js codeigniter4에 React.js 올리기 (0) | 2022.01.19 |