Многоязычная библиотека i18n, мешающая вызовам ajax - PullRequest
0 голосов
/ 11 января 2012

Я использую Codeigniter с библиотекой i18n для создания многоязычного веб-сайта.Я следовал этому руководству , и оно отлично работает.

Проблема, по-видимому, существует на страницах, где мне приходится выполнять вызовы ajax, в jQuery, через $.getJson.

* 1007.*

В этом фрагменте кода, например, в консоли просто выводится «1».Используя Firebug, я вижу, что URL-адреса для вызовов get выглядят так:

GET http://localhost/website/photos/change_product?product_id=1
GET http://localhost/website/en/photos/change_product

Я попытался отключить библиотеку, и страница работала как надо, поэтому я почти уверен, что есть конфликт с этой библиотекой,но я не знаю, с чего начать.Любое предложение?

РЕДАКТИРОВАТЬ: Я частично решил это.По крайней мере, я нашел обходной путь.Кажется, что я должен использовать функцию site_url() внутри javascript, чтобы она создала правильную ссылку, как объяснено в вики библиотеки.Очевидно, что я не могу использовать функцию php внутри javascript-файла, поэтому в view перед загрузкой скрипта я написал следующее:

<script type="text/javascript">
var siteurl = "<?=dirname(site_url('a'))?>";

И теперь у меня есть путь к префиксу везде, где он мне нужен.Это просто немного некрасиво.Как вы думаете, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 17 января 2012

сначала вы можете использовать window.location.pathname для получения /website/en/photos/change_product части, а затем некоторый substr или regexp для получения текущего языка и добавления его к вызываемому URL, если вы не хотите добавлять js в свои php-скрипты или добавлять контроллер чтобы:

  // special URIs (not localized)
    private $special = array (
        "admin"
    );

в MY_Lang.php файле. Таким образом, контроллер в этом массиве не будет перенаправлен, если префикс языка отсутствует. Вы можете создать контроллер для вызовов ajax и добавить его в массив, или переписать битовые функции в My_Lang, чтобы он мог проверять весь адрес, а не только контроллер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...