Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > Локализация проекта

Ответ
 
Опции темы Опции просмотра
Старый 24.03.2008, 05:36   #1
filippoff
Senior Member
 
Аватар для filippoff
 
Регистрация: 22.01.2006
Адрес: Санкт-Петербург
Сообщений: 285
Отправить сообщение для filippoff с помощью ICQ Отправить сообщение для filippoff с помощью Skype™
По умолчанию Добавление мультиязычности в существующее расширение

господа, подскажите, есть ли простой способ добавить в существующее расширение возможности мультиязычности?
т.е., чтобы при сохранении записи при условии наличия на странице альтернативного языка появлялась возможность ту же запсь перевести на альтернативный язык?
к примеру, как в tt_news - можно выбрать язык записи или категории.
filippoff вне форума   Ответить с цитированием
Старый 24.03.2008, 12:55   #2
Uruguaygrep
Senior Member
 
Аватар для Uruguaygrep
 
Регистрация: 25.04.2007
Адрес: Donetsk, Ukraine
Сообщений: 116
Отправить сообщение для Uruguaygrep с помощью ICQ
По умолчанию

ИМХО: Все нормально созданые расширения имеют подключенную мультиязычность.
Если расширение старое и давно не обновлялось, то возможно используются не xml а php файлы locallang.

Встречал где-то в ТЕР расширение которое фиксит старые раширения и заставляет их работать через xml. (ExtDeval по-моему это умеет)

Если это собственное расширение, то отредактируйте через Kickstarter. Он автоматически создает такую возможность. Только перед этим сделайте бэкап расширения. Kickstarter перезапишет файлы.
__________________
Стас Кобзарь
Uruguaygrep вне форума   Ответить с цитированием
Старый 24.03.2008, 19:46   #3
filippoff
Senior Member
 
Аватар для filippoff
 
Регистрация: 22.01.2006
Адрес: Санкт-Петербург
Сообщений: 285
Отправить сообщение для filippoff с помощью ICQ Отправить сообщение для filippoff с помощью Skype™
По умолчанию

само расширение мультиязычное, использует xajax и прочие радости требующие UTF. но в нем есть такие вещи как "названия объектов" и "категории объектов" - эти записи можно сделать только на одном языке.
т.е., я имею в виду не собственно перевод меток в расширении, а возможность перевода записей, как обычный элемент контента мы можем иметь на разных языках.
filippoff вне форума   Ответить с цитированием
Старый 25.03.2008, 00:43   #4
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Надо модифицировать $TCA этих таблиц. В частности, добавить поля sys_language_uid, l18n_parent, l18n_diffsource.
И дописать строчки в
PHP код:
'languageField' => 'sys_language_uid',    
'transOrigPointerField' => 'l18n_parent',    
'transOrigDiffSourceField' => 'l18n_diffsource'
в раздел 'ctrl'.

Может, ещё что-то надо сделать, не помню.
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 16.10.2008, 20:15   #5
wind
Новенький
 
Регистрация: 01.04.2008
Сообщений: 23
По умолчанию

кажется что-то еще надо таки добавить..
я седалала все как написано выше - появилась кнопочка для добавления перевода, но при нажатии на нее просто создается копия существующей записи, а язык остается по-умолчанию
wind вне форума   Ответить с цитированием
Старый 17.10.2008, 12:32   #6
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Ещё в код расширения надо добавить нечто такое:
PHP код:
[...]
$rows $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('uid,pid,title',$table,$where);
$rows $this->overlayRows($table,$rows);
[...]
    function 
overlayRows($table,$rows){
        foreach (
$rows as $key => $row){
            
$rows[$key] = $this->getRecordOverlay($table,$row);
        }
        return 
$rows;
    }
    
    function 
getRecordOverlay($table,$row){
        if (
$GLOBALS['TSFE']->sys_language_content) {
            
$OLmode = ($this->sys_language_mode == 'strict')?'hideNonTranslated':'';
            
$row $GLOBALS['TSFE']->sys_page->getRecordOverlay($table$row$GLOBALS['TSFE']->sys_language_content$OLmode);
        }
        return 
$row;
    } 
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 17.10.2008, 12:44   #7
marco
Senior Member
 
Регистрация: 04.02.2005
Адрес: Львів
Сообщений: 126
Отправить сообщение для marco с помощью ICQ Отправить сообщение для marco с помощью Yahoo
По умолчанию

Еще не забудьте в соответствующие таблицы расширения в БД добавить поля

sys_language_uid int(11) DEFAULT '0' NOT NULL,
l18n_parent int(11) DEFAULT '0' NOT NULL,
l18n_diffsource mediumblob NOT NULL,
marco вне форума   Ответить с цитированием
Старый 17.10.2008, 13:14   #8
wind
Новенький
 
Регистрация: 01.04.2008
Сообщений: 23
По умолчанию

Спасибо за ответы!
но мне кажется чего-то еще не хватает. Я добавила поля в базу данных (прямо через phpmyadmin). добавила строки
Код:
'languageField' => 'sys_language_uid',    
'transOrigPointerField' => 'l18n_parent',    
'transOrigDiffSourceField' => 'l18n_diffsource',
в ext_tables.php .
В админке появился флажок при нажатии на который по идее должна добавляться запись для локализации. но вместо этого просто происходит копирование выбранной записи.
может надо еще в kickstrater что-то указать дополнительное?
wind вне форума   Ответить с цитированием
Старый 17.10.2008, 17:02   #9
wind
Новенький
 
Регистрация: 01.04.2008
Сообщений: 23
По умолчанию

оказалось что в файл tca.php нужно было добавить
Код:
'sys_language_uid' => Array (
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.php:LGL.language',
			'config' => Array (
				'type' => 'select',
				'foreign_table' => 'sys_language',
				'foreign_table_where' => 'ORDER BY sys_language.title',
				'items' => Array(
					Array('LLL:EXT:lang/locallang_general.php:LGL.allLanguages',-1),
					Array('LLL:EXT:lang/locallang_general.php:LGL.default_value',0)
				)
			)
		),
		'l18n_parent' => Array (
			'displayCond' => 'FIELD:sys_language_uid:>:0',
			'exclude' => 1,
			'label' => 'LLL:EXT:lang/locallang_general.php:LGL.l18n_parent',
			'config' => Array (
				'type' => 'select',
				'items' => Array (
					Array('', 0),
				),
				'foreign_table' => 'tt_news',
				'foreign_table_where' => 'AND tt_news.uid=###REC_FIELD_l18n_parent### AND tt_news.sys_language_uid IN (-1,0)',
			)
		),
		'l18n_diffsource' => Array(
			'config'=>array(
				'type'=>'passthrough')
		)
	),

так что теперь почти работает

Последний раз редактировалось wind; 17.10.2008 в 17:40
wind вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте расширение статистики shtala TYPO3: SEO и статистика посещений 4 11.02.2008 03:00
Help! Ищу расширение Uruguaygrep Общие вопросы 1 17.10.2007 15:59
подскажите расширение для списка Fishka Общие вопросы 2 10.05.2007 14:22
расширение которое показывает список похожих страниц gAI2 Общие вопросы 0 22.03.2006 18:26
Редактировать существующее расширение amida Общие вопросы 3 24.10.2005 13:03


Часовой пояс GMT +4, время: 08:32.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория