Многоязычная поддержка с использованием gettext с codeigniter, лучшие практики? - PullRequest
4 голосов
/ 27 марта 2010

Я знаю, как создавать файлы .po и как создавать файлы .mo, а затем использовать их для перевода на моем сайте с поддержкой Codeigniter. Тем не менее, я не совсем уверен, как изменить язык с графического интерфейса сайта. Я хочу придерживаться схемы вызова URL по умолчанию для codeigniter: www.domain.com/controllername/method/param1/param2.

Вызов сервера таким образом не составляет труда: www.domain.com/controllername?lang=en

Выполнение этого для каждого контроллера, использующего схему URL по умолчанию, требует от меня реализации одного и того же метода в каждом контроллере, просто для передачи параметра lang в функцию setlocale () и затем привязки к моему доменному имени .po. Чувствует себя неловко ...

Есть идеи, как вы, ребята, работаете с gettext в codeigniter? И да, я хочу работать с gettext.

Ответы [ 2 ]

2 голосов
/ 22 июля 2012

Я просто создаю библиотеку, которая может автоматически переводить весь текст между {t} и {/ t} в представлении, которое я разместил здесь на случай, если кто-то захочет использовать его вместо вызова функции gettext в представлении:

http://www.chuongduong.net/page/15/codeigniter-gettext-with-smarty-or-parser-template-without-php-code-in-view.html

Код вида может быть:

<html>
<head>
<title>{blog_title}</title>
</head>
<body>

<h3>{blog_heading}</h3>
{blog_entries}

<h5>{t}Title is{/t}  {title}</h5>

<p>{t 1="<b>" 2="</b>"}Click here %1to see%2 me{/t}{body}</p>

<p>{t 1="{id}" 2="author"}The id is: %1 wrote by %2{/t}</p>

<p>{t 1="<a href=\"link here\">" 2="</a>"}Please lick on me%2{/t}</p>

{/blog_entries}

</body>

</html>
1 голос
/ 11 июня 2010

Я проверяю, что язык пользователя перехватывает обнаружение в "post_controller_constructor", и я устанавливаю его где-нибудь глобально доступным (например, изменяя во время выполнения язык в файле конфигурации) Контроллер должен просто использовать значение.

Язык обнаружен при следующей проверке в резерве

  1. это было установлено с помощью параметра GET (например,? Lang = en)?
  2. это было установлено в печенье?
  3. какой язык предлагает браузер?
  4. использовать настроенный язык по умолчанию

Однако, если язык не поддерживается, используйте значение по умолчанию. Установите или обновите файл cookie с новыми данными.

Таким образом, вам обычно не нужно использовать параметр GET, даже всего один раз, если пользователь щелкает где-то, чтобы изменить язык

...