Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Opencart 2.2 - языковые папки (как побороть ?)


markimax

Recommended Posts

Opencart 2.2 - языковые папки (как побороть ?)

Во всех версиях были папки russian
Теперь Даниэль и компания сделали дикий разворот в этой области

Что теперь делать ? Тупо копировать содержимое файлов в ru-ru ?

Кто как реализует в своих модулях ?

Надо как то выработать стандарт

К примеру свои модули я полностью адаптировал, они работают, но вот с языковыми папками - затык полный, как реализовать, чтобы не было у пользователей лишних дублей языковых папок

Надіслати
Поділитися на інших сайтах

как побороть? выпустить отдельно версию модуля для 2.2 с новыми языковыми папками. 

хотя, не сложно предвидеть, что в языковых папках у пользователей будут и старые папки и новые и все на кучу, так как копировать все будут модули для 2.1 в 2.2 и потом чистить это никто не будет..

Надіслати
Поділитися на інших сайтах

как побороть? выпустить отдельно версию модуля для 2.2 с новыми языковыми папками. 

хотя, не сложно предвидеть, что в языковых папках у пользователей будут и старые папки и новые и все на кучу, так как копировать все будут модули для 2.1 в 2.2 и потом чистить это никто не будет..

Ну есть вариант перехватить вызов папок еще. К примеру по запросу код ru-ru подсовывать папку russian

Все же вести отдельные ветки для версий из-за папок не совсем "красиво", скажем так

Надіслати
Поділитися на інших сайтах

Решать перехватом..

Но! или ocmod, или отдельный функционал, типа - синхронизировать языковые файлы

  • +1 2
Надіслати
Поділитися на інших сайтах

Решать перехватом..

Но! или ocmod, или отдельный функционал, типа - синхронизировать языковые файлы

Вот и я склоняюсь к этому варианту

Надіслати
Поділитися на інших сайтах

В принципе, это не сложно..

Можно, тупо.. при входе в админку делать синхронизацию, проверять наличие старых путей и перемещать в новые.

Да, первый вход - самый тяжелый, а следующие - уже брызги..

  • +1 1
Надіслати
Поділитися на інших сайтах

В принципе, это не сложно..

Можно, тупо.. при входе в админку делать синхронизацию, проверять наличие старых путей и перемещать в новые.

Да, первый вход - самый тяжелый, а следующие - уже брызги..

Я думаю, просто при запросе заменять пути папок .../ru-ru/... на .../russian/... - всего одна строка кода str_replace. Но не известно как дальше может "развить мысль" Даниэль :-D

Синхронизацию не всегда есть возможность сделать - не у всех есть доступ на запись, будут проблемы у малоквалифицированных пользователей

Хотя тоже рассмотрю этот вариант.  Это очень не плохой вариант. Спасибо.

Короче надо обсудить и подумать, над "коварством" Даниэля

Надіслати
Поділитися на інших сайтах

не у всех есть доступ на запись

 

Ну... При входе в админку, проверяется папки download, cache, log на запись, вот в этот момент и делать синхронизацию

И, естественно, кричать, просить, дать доступ..

Надіслати
Поділитися на інших сайтах

vqmod/ocmod подход вас быстро плохому научил. Забыли, что есть install.php, в котором можно спросить, какие языки есть в магазине и где они живут?

  • +1 1
Надіслати
Поділитися на інших сайтах


vqmod/ocmod подход вас быстро плохому научил. Забыли, что есть install.php, в котором можно спросить, какие языки есть в магазине и где они живут?

rb2, я не совсем понял при чем здесь vqmod и ocmod (тем более что я никогда их не использую в своих модулях). И причем здесь install.php. Эту мат. часть мы прекрасно знаем. Вопрос в другом не у всех есть права на запись в папки к примеру /admin/language/* и у разных версий opencart разные уже папки для языков. Не хочется плодить дубли языковых папок у  пользователей  Не забывайте модули частенько устанавливают до языкового пакета, полюс наверняка какие то модули (вот здесь привет лентяям с ocmod) будут использовать старые папки языков и простое переименование папки сделает не работоспособным другие модули. Т е  надо предусмотреть все варианты

Надіслати
Поділитися на інших сайтах

ну...

 

 

(тем более что я никогда их не использую в своих модулях).

не используете, а в системные файлы лезете напрямую..

Лучше бы вставляли через ocmod/vqmod

 

извините, что встрял в ваш разговор, (привет разработчикам с прописыванием кода в системные файлы)

  • +1 2
Надіслати
Поділитися на інших сайтах

ну...

 

не используете, а в системные файлы лезете напрямую..

Лучше бы вставляли через ocmod/vqmod

 

извините, что встрял в ваш разговор, (привет разработчикам с прописыванием кода в системные файлы)

Ну не лезу я, сколько можно повторять уже. Не лезу я в КОД файла. Это совершенно разные вещи.  Разве вы не заметили куда добавляется код ?!  Он не меняет ли логики и не даже нумерификации строк системного кода файла (и всего одного файла). Не изменяет ни одного байта стандартного кода. Что не понятного еще. Не сравнивайте ocmod который меняет строки кода и логику внутри. Так что ocmod с его проверками кеша и т..п. сравнивать не надо. Уж тем более советовать это сделать.

Ну надоело честное слово.

Как говорил мой комбат, можно и к столбу до...ся - почему без пилотки.

Тема не "холивар с Марком", а конкретная по opencart 2.2

 

И попросил помощи и советов в решении проблемы. А ни "холивара" не в тему

Надіслати
Поділитися на інших сайтах

<offtop>

 

Холивар начали вы, вот с этих слов, промолчали бы, и не было бы вопросов.
 

(вот здесь привет лентяям с ocmod)

(тем более что я никогда их не использую в своих модулях)

 
 

Не лезу я в КОД файла.

Т.е. вы нигде не прописываете свой фронтлоадер,?
 
 
А это взялось с воздуха.

$file = DIR_SYSTEM . 'library/front_loader.php';
if (file_exists($file)) {include_once($file);}
$seocmspro_loader='end';

 
И это называется
Не изменяет ни одного байта стандартного кода
Это называется вмешаться в стандартный код (изменить)

 

</offtop>

 

 

Кстати, install.php может находиться один, без ocmod файлов, так что отмазка про ocmod, vqmod не канает. А может рассматриваться как вариант решения.

  • +1 1
Надіслати
Поділитися на інших сайтах

<offtop>

 

Вы читайте внимательно что я написал вам. Внимательно!

И пожалуйста в ЛС.

Повторю еще раз. Не изменяется ни один байт системного кода

Внимательно прочли? А теперь перечитайте как мантру. И вдумайтесь, что вам написали. А не быстро строчить ответ не читая (в вашем стиле)

  • +1 1
Надіслати
Поділитися на інших сайтах

Поставьте проверку в класе с:

public function __construct($directory = '') {
	$this->directory = $directory;
}

на:

public function __construct($directory = '') {
	$this->directory = $directory;
        (DIR_LANGUAGE . 'english/' !== false AND is_dir(DIR_LANGUAGE . 'english/')) ? $this->default = 'english' : $this->default = 'en-gb';
}
Надіслати
Поділитися на інших сайтах

Вася, речь идет о легком пути решения

И как его решать..

Я предложил это делать при каждом входе в админку, и приводить файлы в соответствие с версией.

 

Но в любом случае это вмешиваться в код..

Надіслати
Поділитися на інших сайтах

Вася, речь идет о легком пути решения

И как его решать..

Я предложил это делать при каждом входе в админку, и приводить файлы в соответствие с версией.

 

Но в любом случае это вмешиваться в код..

 

Тогда можно решить от обратного:

<modification>
	<id>#Fix for lang adaptaion 2.1 & older</id>
	<version>2.2.x</version>
	<vqmver>2.4.1</vqmver>
	<author>baco</author>
	<file name="system/library/language.php">
	<operation>
		<search position="after"><![CDATA[private $directory;]]></search>
		<add><![CDATA[
		private $checker = false;
		]]></add>
	</operation>
	<operation>
		<search position="before"><![CDATA[$this->data = array_merge($this->data, $_);]]></search>
		<add><![CDATA[
                $this->checker = (DIR_LANGUAGE . $directory . '/' !== false AND is_dir(DIR_LANGUAGE . $directory . '/')) ? $directory : false;
		if (isset($this->checker)) {
			$file = DIR_LANGUAGE . $this->checker . '/' . $filename . '.php';
			if (is_file($file)) {
				require($file);
			}
		}
		]]></add>
	</operation>
	</file>
</modification>

хоть и вмешательство, но на уровне кеша, как оптимальней решить - пока не приходит в голову, кроме костыления.

так же предпочитаю экологию кода, но увы, капризы Даниеля непредсказуемы...

Надіслати
Поділитися на інших сайтах

Вася, речь идет о легком пути решения

И как его решать..

Я предложил это делать при каждом входе в админку, и приводить файлы в соответствие с версией.

 

Но в любом случае это вмешиваться в код..

 

Уже нашел решение как предложил  Baco без модификаторов и без изменения системного кода

Делаем временно доступными private переменные (мат. часть php) класса Language и изменяем их, после загрузки "своего", ставим обратно

Надіслати
Поділитися на інших сайтах

Это что конструктивный разговор?

 

5606248935.png

 

1451168426.png

 

А теперь внимание

Делаем все!!!! файлы(не папки) РО

Заливаем маркокод, который не изменяет файлы.

И.. опа.. маркокод не работает!!!

Надіслати
Поділитися на інших сайтах

...

 

Вали отсюда. Надоел уже

Тебя Waha "послал"

Так ты решил везде срать

Надіслати
Поділитися на інших сайтах

А вы только что оттуда?

 

Надоел?
 

Мишель, не гони пуррргу

Мишель, не помррри с дуррру

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.