Форуми / National / Russian / Модули и плагины / Добавить префикс в i18n.admin.structure

Виктор
#1 11.08.2020 16:01

Нужно Добавить префикс i18n.admin.structure, так как плагин по ссылке переходит на редактирование только page категорий

&n=$n

 

$t->assign(array(
	'ADMIN_STRUCTURE_I18N_LINK' => cot_rc_link(cot_url('plug', 'e=i18n&m=structure&n=$n'),$L['i18n_structure']),
	'ADMIN_STRUCTURE_I18N_URL' => cot_url('plug', "e=i18n&m=structure&n=$n")
));

далее при написании своего модуля, уже в i18n.structure можно уже перехватить код модуля

Додано 2 місяця потому:

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

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

1) файл admin.structure.php, строка примерно 66, есть ссылка которая ведет в редактирование категорий и их перевода если установлен плагин i18n,

	'ADMIN_STRUCTURE_EXT_URL' => cot_url('admin', 'm=structure&n='.$code),

здесь у нас есть переменная $code в которой у нас есть код разрешения, у которого есть соответственно структура (folio,market,'ваш модуль'), префикс n передает его далее

2) далее по хуку  admin.structure.tags в admin.structure.php подключается i18n.admin.structure.php в котором у нас прописаны ссылки

$t->assign(array(
	'ADMIN_STRUCTURE_I18N_LINK' => cot_rc_link(cot_url('plug', 'e=i18n&m=structure'), $L['i18n_structure']),
	'ADMIN_STRUCTURE_I18N_URL' => cot_url('plug', 'e=i18n&m=structure')
));

как видно код разрешения здесь не указан и далее по коду переводятся только категории page, и далее все для page, здесь я добавил этот префикс чтобы можно с ним работать далее

$t->assign(array(
	'ADMIN_STRUCTURE_I18N_LINK' => cot_rc_link(cot_url('plug', 'e=i18n&m=structure&n=$n'),$L['i18n_structure']),
	'ADMIN_STRUCTURE_I18N_URL' => cot_url('plug', "e=i18n&m=structure&n=$n")
));

3) переходим по ссылке "Интернационализация структуры", тоесть 'в файл' plugins\i18n\inc\i18n.structure.php, как я писал здесь в большинстве все функции работают для page, но теперь мы передали префиксом  &n - код того расширения которого нужно перевести на другой язык,

3) (i18n.structure.php), чтобы проверить работает перевод категорий для других модулей, можно сделать следующее, строка примерно 40, к ссылке добавляем префикс

'I18N_LOCALE_ROW_URL' => cot_url('plug', "e=i18n&m=structure&n=$n&l=$lc", false, true),

4)далее, здесь уже вы должны придумать как организовать написать код, далее для примера, строка 135

foreach ($structure[$n] as $code => $row)//вместо page - $n
	{
		if (1==1)//здесь не помню, но данная функция cot_i18n_enabled($code) вроде для page, для примера 1==1, я вроде переписывал эту функцию
			$k++;
			if ($k < $d || $ii == $maxperpage)
			{
				continue;
			}

			$cat_i18n = $i18n_structure[$code][$i18n_locale];

			$t->assign(array(
				'I18N_CATEGORY_ROW_TITLE' => htmlspecialchars($row['title']),
				'I18N_CATEGORY_ROW_DESC' => htmlspecialchars($row['desc']),
				'I18N_CATEGORY_ROW_CODE_NAME' => "code[$ii]",
				'I18N_CATEGORY_ROW_CODE_VALUE' => $code,
				'I18N_CATEGORY_ROW_ITITLE_NAME' => "title[$ii]",
				'I18N_CATEGORY_ROW_ITITLE_VALUE' => htmlspecialchars($cat_i18n['title']),
				'I18N_CATEGORY_ROW_IDESC_NAME' => "desc[$ii]",
				'I18N_CATEGORY_ROW_IDESC_VALUE' => htmlspecialchars($cat_i18n['desc']),
				'I18N_CATEGORY_ROW_ODDEVEN' => cot_build_oddeven($ii)
			));

			/* === Hook - Part2 : Include === */
			foreach ($extp as $pl)
			{
				include $pl;
			}
			/* ===== */
			$t->parse('MAIN.I18N_CATEGORY_ROW');
			$ii++;
		}
	}

в общем все просто, еще раз повторю мог где то упустить чтото,

 


Відредаговано: Виктор (02.11.2020 18:33, 3 року тому)
Kopusha
#2 05.11.2020 11:46

И еще в i18n.admin.structure.php

$pagenav = cot_pagenav('plug', 'e=i18n&n='.$n.'&m=structure&l='.$i18n_locale, $d, $totalitems,