форум vBSupport.ru > vBSupport.ru > How-Tos, Hints & Tips > Статьи, обзоры, каталоги
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Luvilla
Гость
Default Перевод продуктов

Как перевести продукт?
Есть отличная статья по этой теме: Локализация продуктов для vBulletin, рекомендую

Но бывает... что не хочется устанавливать дополнительных продуктов... что в самом хаке, который хочется перевести, с десяток фраз, и это можно сделать легко и быстро просто в блокноте...
Кроме того, оказывается, тут у нас нет статьи, ориентированной на абсолютных новичков...
Я расскажу, именно для новичков, пошагово и с картинками, как получить "языковой файл", для чего он нужен и что с ним делать
Разберу важные строки языкового файла, по пунктам, что значит каждый пункт
И постараюсь учесть индивидуальные варианты, в стиле "если у вас так, то будет вот так, а если не так, то будет эдак"

Инструкция актуальна для тройки, 4ки и 5ки

Начнём с самых азов.
При установке продукта, если в нём есть фразы, они вписываются в "Основной язык", он же "Мастер"
И как бы мы ни переключали язык на форуме, эти фразы будут одни и те же: если они в продукте английские - то и в русском они будут английские. Если фразы переведены (допустим, на русский) прямо в продукте, то они и будут русские, хоть инглишь выбран, хоть украинский.
Для того, чтобы организовать поддержку мультиязычности, то есть, чтобы при переключении языка на форуме соответственно менялись и фразы продукта, для каждого установленного на форуме языка нужно импрортировать отдельный языковой файлик с переводом фраз продукта именно на этот язык.

Для примера возьму "First Post on all pages" для 4ки, он короткий
Вот весь код продукта:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>

<product productid="firstonallpages" active="1">
	<title>First Post on all pages</title>
	<description>first on all pages</description>
	<version>1.2</version>
	<url>http://WWW.VIETVBB.VN</url>
	<versioncheckurl>http://WWW.VIETVBB.VN</versioncheckurl>
	<dependencies>
		<dependency dependencytype="vbulletin" minversion="4.0.x" maxversion="" />
	</dependencies>
	<codes>
	</codes>
	<templates>
	</templates>
	<stylevardfns>
	</stylevardfns>
	<stylevars>
	</stylevars>
	<plugins>
		<plugin active="1" executionorder="5">
			<title>Cache Templates</title>
			<hookname>cache_templates</hookname>
			<phpcode><![CDATA[global $vbulletin;
if($vbulletin->options['fpoap_active']){
	if(!in_array($vbulletin->options['fpoap_template'], $cache))
		$cache[] = $vbulletin->options['fpoap_template'];
}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title><![CDATA[First Post's Template]]></title>
			<hookname>postbit_display_complete</hookname>
			<phpcode><![CDATA[global $vbulletin;	
if($vbulletin->options['fpoap_active']){
	if(!in_array($this->thread['forumid'], explode(',', $vbulletin->options['fpoap_excluded_forums']))){
		if($this->thread['firstpostid'] == $this->post['postid']){
			$this->templatename = $vbulletin->options['fpoap_template'];
		}
	}
}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>RV065 - Firstpost on all page 2</title>
			<hookname>showthread_postbit_create</hookname>
			<phpcode><![CDATA[if($vbulletin->options['fpoap_active']){
	if(!in_array($foruminfo['forumid'], explode(',', $vbulletin->options['fpoap_excluded_forums']))){
		if ($vbulletin->GPC['pagenumber'] > 1){
			if ($post['postid'] == $thread['firstpostid'])   {
				$counter--;
				$post['postcount'] = 1;
			}
			else    {
				$post['postcount']--;
			}
		}
	}
}]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>RV060 - Firstpost on all page 1</title>
			<hookname>showthread_query_postids</hookname>
			<phpcode><![CDATA[if($vbulletin->options['fpoap_active']){
	if(!in_array($foruminfo['forumid'], explode(',', $vbulletin->options['fpoap_excluded_forums']))){
		$ids[] = $threadinfo[firstpostid];
	}
}]]></phpcode>
		</plugin>
	</plugins>
	<phrases>
		<phrasetype name="vBulletin Settings" fieldname="vbsettings">
			<phrase name="setting_fpoap_active_desc" date="1270788679" username="Admin" version="1.0"><![CDATA[Select <b>No</b> to disable this hack.]]></phrase>
			<phrase name="setting_fpoap_active_title" date="1270788679" username="Admin" version="1.0"><![CDATA[Enabled?]]></phrase>
			<phrase name="setting_fpoap_excluded_forums_desc" date="1270788762" username="Admin" version="1.0"><![CDATA[Forums are not affected by this hack.<br />
List ForumID, separate by a comma.]]></phrase>
			<phrase name="setting_fpoap_excluded_forums_title" date="1270788762" username="Admin" version="1.0"><![CDATA[Excluded Forums]]></phrase>
			<phrase name="setting_fpoap_template_desc" date="1271056952" username="Admin" version="1.1"><![CDATA[Template will be used for first post.]]></phrase>
			<phrase name="setting_fpoap_template_title" date="1271056952" username="Admin" version="1.1"><![CDATA[Template Name]]></phrase>
			<phrase name="settinggroup_first_post_on_allpages" date="1270788498" username="Admin" version="1.0"><![CDATA[First Post On All Pages]]></phrase>
		</phrasetype>
	</phrases>
	<options>
		<settinggroup name="first_post_on_allpages" displayorder="65535">
			<setting varname="fpoap_active" displayorder="10">
				<datatype>boolean</datatype>
				<optioncode>yesno</optioncode>
				<defaultvalue>1</defaultvalue>
			</setting>
			<setting varname="fpoap_excluded_forums" displayorder="20">
				<datatype>free</datatype>
			</setting>
			<setting varname="fpoap_template" displayorder="30">
				<datatype>free</datatype>
				<defaultvalue>postbit</defaultvalue>
			</setting>
		</settinggroup>
	</options>
	<helptopics>
	</helptopics>
	<cronentries>
	</cronentries>
	<faqentries>
	</faqentries>
</product>
Что мы здесь видим?

"Шапка" продукта, с указанием, что это <?xml а не, скажем, <?php

Идентификатор продукта <product productid=... >
Прочие описания - <title>, <description>, всякое такое... в случае перевода отдельным языковым файлом нас это никак не касается

НО! Даже если вы решите не делать отдельный языковой файл, а перевести фразы прямо в продукте, ни в коем случае нЕ меняйте первую строку
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
пусть вас не смущает это "ISO-8859-1", к кодировке фраз это нЕ имеет никакого отношения

Идём дальше... то есть, смотрим, где там фразы
Фразы в продукте начинаются с открывающего тега <phrases> и заканчиваются соответствующим закрывающим тегом </phrases>
Прекрасно, всё понятно, мы готовы это перевести быстро и легко. Как получить тот самый "языковой файл"?

Устанавливаем продукт
Теперь переведём у него одну фразу, штатно, через админку: Языки и фразы - поиск во фразах, вбиваем в поле поиска First Post On All Pages (этот текст я скопировала из текста фразы прямо в продукте, последняя фраза)



Найти

результаты поиска:



жмём "Редактировать"



в поле для русского (украинского... любого, на какой язык переводите, надеюсь, он установлен на форуме)) вбиваем текст перевода, Сохранить

Дальше: Языки и фразы - Скачать/загрузить языки
Верхний блок, "Скачать", выбираем:
Язык - русский (или тот, на который переводите)
Продукт - First Post On All Pages
Имя файла - оставьте, как есть
Кодировка - не трогайте (в тройке этого пункта вообще нет)
Включать фразы, добавленные самостоятельно - Нет
Фразы как есть - Да (это очень важно! настройки языка могут быть индивидуальны, если вынуть языковой файл с этими настройками, то потом при установке на другом форуме он перезапишет эти настройки... об этом подробно говорится и в статье TAIFUN'а, но не лишним будет повторить:

Quote:
Originally Posted by TAIFUN View Post
Внимание!
Акцентирую внимание на следующий нюанс - убирайте в своих русификаторах группу settings, а затем убедитесь что вместо типа фраз custom стоит phrases, иначе админы своих форумов задолбаются менять настройки русского языка, в случае если их настройки отличаются от тех, которые вы указали в своих русификаторах (группа settings)


Натыкали? - Скачать

Мы получили файлик с таким содержимым:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>

<language name="Rus" vbversion="4.2.1" product="firstonallpages" type="phrases">
	<phrasetype name="vBulletin Settings" fieldname="vbsettings">
		<phrase name="settinggroup_first_post_on_allpages" date="1422529230" username="Luvilla" version="1.2"><![CDATA[Первый пост на всех страницах]]></phrase>
	</phrasetype>
</language>
Повторяю: строку
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
НЕ трогать!
Физическая кодировка нашего файла соответствует кодировке форума (клинические случаи - отдельная история)

А теперь посмотрим на полученный файлик, построчно
в языковом файле фразы находятся не в теге <phrases> </phrases>, а внутри тега <language...></language>

Первая строка, по пунктам:
Code:
<language name="Rus" vbversion="4.2.1" product="firstonallpages" type="phrases">
name="Rus" это так называемое "имя" языка, тут может быть и "Russian (RU)", и "Russian", и "RU", и что-то другое... нЕ важно, движок при импорте языка на это не смотрит, потому что не умеет... там есть отдельная выпадалка "Перезаписать язык" - вот это движок понимает

vbversion="4.2.1" - версия vB, с которой был скачан языковой файл. Не меняйте. Это значение движок умеет распознавать, и именно на этот случай при импорте языка предусмотрен выбор "Игнорировать версию языка"

product="firstonallpages" - ни в коем случае нЕ трогайте, это идентификатор продукта, значение внутри кавычек должно в точности совпадать со значением productid="firstonallpages", указанным в самом продукте

type="phrases" - всё верно, это тоже трогать не надо, это указание для движка, что нужно дописать эти фразы, а не перезаписать весь языковой пакет
кстати, указание type="phrases" - ещё и указание движку, что при перезаписи всего языкового пакета (при обновлении, например) эти фразы трогать нЕ надо

Дальше... фразотип
Code:
<phrasetype name="vBulletin Settings" fieldname="vbsettings">
я взяла для примера простенький продукт, у него всего один тип фраз, настройки
но в больших продуктах типов фраз (phrasetype) - много
Что с ними делать? - ничего, оставить как есть
Но тут как раз может быть "индивидуальный случай"
если на форуме, с которого экспортирован языковой файл, был "русский инсталл" (при установке/обновлении был подменён англицкий install_language_en.php/upgrade_language_en.php на его переведённый аналог) то в этой строке может быть вот такой текст:
Code:
<phrasetype name="Основные настройки" fieldname="vbsettings">
в принципе, это несущественно, движок ориентируется на идентификатор "vbsettings"
однако чтобы всё было красиво, я бы рекомендовала заниматься переводами на тестовом форуме, установленном штатно, без "русского инсталла" (то есть, сначала залили все файлы дистрибутива, без подмен на переведённые, провели инсталл, там не так много буржуйского текста и он вполне понятен, а уж потом установили русик)

И, наконец, сама фраза, наша единственная фраза с переводом
Code:
<phrase name="settinggroup_first_post_on_allpages" date="1422529230" username="Luvilla" version="1.2"><![CDATA[Первый пост на всех страницах]]></phrase>
<phrase name="settinggroup_first_post_on_allpages" - это "переменная" фразы, трогать её ни в коем случае не нужно, потому что именно это, settinggroup_first_post_on_allpages, прописано в шаблонах (или модулях, или файлах), именно это обрабатывается движком, а уж юзеру выводится перевод, в зависимости от настроек языка

date="1422529230" - дата последнего изменения фразы, в юникс-формате. Это можно вообще не трогать, а можно, если сильно хочется, скопировать это число и заменить им даты в остальных фразах

username="Luvilla" - автор последнего изменения фразы. Это, конечно, есть смысл сменить во всех переведённых фразах. Если собираетесь заниматься переводами - определитесь с именем, чтобы использовать его в переводах постоянно. Разумеется, оно может быть на любом языке... но китайские иероглифы, всё же, лучше не употреблять На практике - лучше, если это будет латиница.

version="1.2" - версия продукта, не путать с версией vB. Не надо это менять.

<![CDATA[Первый пост на всех страницах]]> - собственно, это и есть перевод. Всё, что в CDATA[] - сам текст фразы

Теперь у нас есть "болванка", заготовка языкового файла, в которой абсолютно корректно сформирована "шапка".

В эту "болванку" вставляем фразы из продукта
получится вот так:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>

<language name="Rus" vbversion="4.2.1" product="firstonallpages" type="phrases">
		<phrasetype name="vBulletin Settings" fieldname="vbsettings">
			<phrase name="setting_fpoap_active_desc" date="1270788679" username="Admin" version="1.0"><![CDATA[Select <b>No</b> to disable this hack.]]></phrase>
			<phrase name="setting_fpoap_active_title" date="1270788679" username="Admin" version="1.0"><![CDATA[Enabled?]]></phrase>
			<phrase name="setting_fpoap_excluded_forums_desc" date="1270788762" username="Admin" version="1.0"><![CDATA[Forums are not affected by this hack.<br />
List ForumID, separate by a comma.]]></phrase>
			<phrase name="setting_fpoap_excluded_forums_title" date="1270788762" username="Admin" version="1.0"><![CDATA[Excluded Forums]]></phrase>
			<phrase name="setting_fpoap_template_desc" date="1271056952" username="Admin" version="1.1"><![CDATA[Template will be used for first post.]]></phrase>
			<phrase name="setting_fpoap_template_title" date="1271056952" username="Admin" version="1.1"><![CDATA[Template Name]]></phrase>
			<phrase name="settinggroup_first_post_on_allpages" date="1270788498" username="Admin" version="1.0"><![CDATA[First Post On All Pages]]></phrase>
		</phrasetype>
</language>
ну и уже переведённую нами строку, ставим на её место:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>

<language name="Rus" vbversion="4.2.1" product="firstonallpages" type="phrases">
		<phrasetype name="vBulletin Settings" fieldname="vbsettings">
			<phrase name="setting_fpoap_active_desc" date="1270788679" username="Admin" version="1.0"><![CDATA[Select <b>No</b> to disable this hack.]]></phrase>
			<phrase name="setting_fpoap_active_title" date="1270788679" username="Admin" version="1.0"><![CDATA[Enabled?]]></phrase>
			<phrase name="setting_fpoap_excluded_forums_desc" date="1270788762" username="Admin" version="1.0"><![CDATA[Forums are not affected by this hack.<br />
List ForumID, separate by a comma.]]></phrase>
			<phrase name="setting_fpoap_excluded_forums_title" date="1270788762" username="Admin" version="1.0"><![CDATA[Excluded Forums]]></phrase>
			<phrase name="setting_fpoap_template_desc" date="1271056952" username="Admin" version="1.1"><![CDATA[Template will be used for first post.]]></phrase>
			<phrase name="setting_fpoap_template_title" date="1271056952" username="Admin" version="1.1"><![CDATA[Template Name]]></phrase>
			<phrase name="settinggroup_first_post_on_allpages" date="1422529230" username="Luvilla" version="1.2"><![CDATA[Первый пост на всех страницах]]></phrase>
		</phrasetype>
</language>
теперь останется совсем мелочь...
"Admin" перебить на "Luvilla"
сменить дату - если очень хочется
и, собственно, сделать перевод... очень аккуратно, не цепляя никаких спец-символов, заменить англицкий текст на свой. Очень хорошо, если вы используете текстовый редактор с включенной подсветкой синтаксиса, "порченный" XML сразу видно

При сохранении файла правильно будет сделать три вещи:
- указать в имени файла, это перевод какого именно продукта
- указать в имени файла, на какой язык перевод (русский, украинский, клингонский)
- указать кодировку файла... и при этом нЕ забыть сохранить файл именно в этой кодироке!!!

то есть, файлик у нас будет называться vbulletin-language_firstonallpages_RU_UTF.xml или vbulletin-language_firstonallpages_RU_1251.xml

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

Дамы и господа переводчики, удачи и вдохновения!
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
VasiliiDanilich
Продвинутый
Default
0

Т.е. эту строку надо заменить
Quote:
Originally Posted by Luvilla View Post
<phrase name="settinggroup_first_post_on_allpages" date="1270788498" username="Admin" version="1.0"><![CDATA[First Post On All Pages]]></phrase>
на эту?
Quote:
Originally Posted by Luvilla View Post
<phrase name="settinggroup_first_post_on_allpages" date="1422529230" username="Luvilla" version="1.2"><![CDATA[Первый пост на всех страницах]]></phrase>
Оффтоп

VasiliiDanilich добавил 02.11.2015 в 01:14
У меня вместо Admin - phpdesk

Last edited by VasiliiDanilich : 11-02-2015 at 02:14 AM. Reason: Добавлено сообщение
 
 
BTC
СпециалистЪ
 
BTC's Avatar
Default
0

Quote:
Originally Posted by VasiliiDanilich View Post
У меня вместо Admin - phpdesk
Это имя пользователя прописано.

Quote:
Originally Posted by VasiliiDanilich View Post
Т.е. эту строку надо заменить
Т.е. ее значение в теге <![CDATA[***]]>
 
 
VasiliiDanilich
Продвинутый
Default
0

Quote:
Originally Posted by BTC View Post
Т.е. ее значение в теге <![CDATA[***]]>
<phrase name="setting_fpoap_template_title" date="1271056952" username="phpdesk" version=
 
 
Sven
Front-End Developer
 
Sven's Avatar
Default
0

@VasiliiDanilich,
Quote:
Originally Posted by BTC View Post
Это имя пользователя прописано.
 
 
VasiliiDanilich
Продвинутый
Default
0

Quote:
Originally Posted by Sven View Post
Это имя пользователя прописано.
Спасибо, я понял.
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by VasiliiDanilich View Post
Столько лишнего текста. Зачем описывать то, что трогать не нужно?
Написали-бы: - СТРОГО! Заменять только то, что будет описано ниже!
такие статьи пишутся в основном для тех, кто хочет вкурить разобраться и вникнуть: расписываем пошагово
есть вещи, которые надо просто один раз понять, потом проблем не будет
есть же разница между "это я не трогаю, потому что мама не велит" и "это нельзя трогать, потому что оторвёт пальцы по самые плечи"?
 
 
VasiliiDanilich
Продвинутый
Default
0

Quote:
Originally Posted by Luvilla View Post
такие статьи пишутся в основном для тех, кто хочет вкурить разобраться и вникнуть
Да, да, да. Это я чуть позже понял.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 02:21 PM.


Powered by vBulletin® Version 3.0.15
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.