2014-01-13 4 views
0

저는 최근 프레임 워크 (CodeIgniter)를 사용하기 시작했으며 많은 연구가 여전히 다국어 웹 사이트와 관련하여 많은 의문을 가지고 있습니다. 내가 예를 들어, URL을 "번역"하기 위해 노력하고있어codeigniter의 다국어 웹 사이트에 대한 경로 (URL) 번역

, 나는 en/homefr/home 가지고,하지만 난 등등 ... 그래서, fr/accueil처럼 각 언어에 대해 pt/inicio를 자신의 번역을, 그리고 것 지금까지 내 모든 시스템은 언어 있지만, URL (컨트롤러)를 변경하는 것입니다하는 일은 (영어) 같은 언어에 남아 : en/home, fr/home, pt/home 대신 fr/accueil과 내가 이것을 달성하기 위해 어떻게해야합니까 무엇 pt/inicio

일종의 "번역"또는 라우팅? 각 언어에 대한 컨트롤러를 만들어 별도로 호출하는 것이 더 좋습니까? 나는 그 일을하기 시작했다. 그러나 어느 시점에서 나는 그것이 극도로 방대한 것을 깨달았고 아마도 그것은 좋은 습관이 아닐 것이다. 그러나 각 언어에 대한 컨트롤러를 만드는 것이 훨씬 쉽지만, 언어 기본 설정을 감지/저장하기 위해 "자동 실행 기능"을 설정해야하는 파일의 위치와 파일을 모릅니다. 또한

내 URL에서 바로 언어를 입력합니다 (예 : /en, /fr)는 메인 컨트롤러 (홈)에 "리디렉션"하지 않습니다

// '/en', '/de', '/fr' and '/nl' URIs -> use default controller 
$route['^(en|fr|pt)$'] = $route['default_controller']; 

이 I하지 않는 나를 위해 작동하지 않습니다 언어 : /fr/이 작동하는 후 "/"을 입력하십시오!, /fr이 작동하지 않습니다!

+0

당신의 컨트롤러가 현재 선택된 언어와 같지 않다면 사용자는'url'을 사용하여 사이트를 탐색하지 않을 것입니다. 사용자가 제공 한'menu'와'links'를 통해 브라우징 할 것입니다 . 그것이 당신이해야하는 일입니다. 그러나 당신이 정말로 그 기능을 원한다면 당신은 다른 언어에 대해 다른 컨트롤러를 추가하거나 호출해야 할 것입니다. – tomexsans

답변

0

언어로 쿠키를 설정하는 대신 쿠키를 설정 한 다음 각 페이지마다 데이터베이스에 모든 URI 세그먼트를 설정 한 다음 내 페이지 모델에서 올바른 언어 URI를로드하는 방법을 사용했습니다. 언어 쿠키를 기반으로 한 텍스트

$route['(:any)'] = "main/pages"; 
$route['(:any)/(:any)'] = "main/pages"; 

이 방법은 내가 두 페이지 URI를 가질 수 있습니다

이제 유일하게 남은 문제는, 나는 페이지 제어 방법에 남아있는 모든 요청을 리디렉션, 내 경로 파일의 끝에이 같은 설정 라우팅이됩니다 내 현지화 된 버전의 하위 URI

+0

감사합니다! 참으로 모든 언어에 대한 영어로 URL을 남길 수 있습니다. 하지만 저는 CI로 이것을 달성하기를 정말로 원합니다. 나는 내가 원하는 결과를 얻는 다른 방법을 안다. 그러나 가능한 해결책이 좋은 관행과 패턴의 측면에서 최선의 방법이 아닐 수도있다. – PauloBraga