Постоянно сбивается локализация

Постоянно, само по себе, по неизвестной причине происходит следующее:

в каталоге товаров вместо "в корзину" появляется надпись "add to cart" , при поиске товаров вместо "Поиск товаров «фыафывафы»" появляется Search products «фыафывафы» и т.д.


Вариант лечения следующий - нужно открыть шаблон темы дизайна с данными элементами, отредактировать его, сохранить, затем вернуть все в исходное состояние. После этого все становится ок, но через некоторое время ситуация повторяется.


В чем проблем и как её решать ?

1 ответ

  • 2

    Могу рассказать, почему помогает редактирование шаблона. Почему происходит первоначальная ошибка, сказать не могу.

    Локализация в шаблонах работает так. Во время компиляции шаблона переводится всё, что внутри [`...`]. Скомпилированный шаблон сохраняется в разные файлы в зависимости от локализации, в которой он был скомпилирован: например, будут отдельно wa-cache/apps/shop/templates/compiled/shop_ru_RU и shop_en_US каталоги. При последующем использовании того же шаблона в той же локализации он компилироваться уже не будет, будет использоваться имеющийся. А скомпилированный шаблон - это простой php файл. Там есть логика, if'ы c foreach'ами всякими, но все многие строки локализации там уже захардкожены. Таким образом, если во время генерации шаблона локализация по какой-то причине не работала, шаблон ru_RU скомпилируется с английскими строками вместо русских, и дальше так и будет использоваться.

    Редактирование файла, естественно, сбрасывает все скомпилированные версии этого шаблона. В этом смысле это то же самое, что очистить кеш в инсталлере. Вы заходите на страницу, компилируется правильный шаблон, вы видите, что с локализацией всё ок - полная видимость, что всё починилось.

    Так вот, есть какая-то причина, почему время от времени на сайте локализация не срабатывает. Падает в зависимости от фазы луны и времени суток. Например, она может не работать в CLI во время выполнения скриптов cron'а. Или такой случай знаю: настроен лоад-балансер, есть 4 сервера с одной распределённой файловой системой, на одном сервере сломан gettext. В зависимости от того, на какой сервер попал запрос во время компиляции шаблона, локализация может сработать или нет.

    Как дебажить... Это, блин, вопрос. Навтыкать логирования (см. waLog::log()) внутри wa-system/locale/waLocale.class.php и надеяться на удачу и божественное озарение? :(

    • +1
      name name name name 14 мая 2015 08:43 #

      Т.е. Вы хотите сказать, что это не вина движка и сделать ничего нельзя ?

      • +1

        Может, и движка. Без дополнительного исследования непонятно.

        • +1
          name name name name 14 мая 2015 14:11 #

          так а что делать, чтобы проблему решить ? поддержка webasyst мне может в этом помочь ?

          • +1

            Мм... Вы написали в открытом разделе, где люди просят совета, как самим что-то сделать.

            Если нужно в режиме "не хочу ничего знать, вот вам логин и пароль, сделайте с этим что-нибудь пожалуйста", то вам нужно написать в техподдержку почтой или через личный кабинет. В данном конкретном случае будьте готовы, что вам могут отказать, потому что случай очень похож на проблемы хостинга и не очень похож на проблемы скриптов (т.е. не воспроизводится). Тогда можно обратиться к сторонним разработчикам.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите