Dobrý den,
kterou verzi phpBB používáte?
Níže jsem pro Vás připravil návod, jak přidat výběr jazyků pro phpBB ver. 3.0.9, tedy nejnovější dostupné verze. Návod by měl být funkční pro všechny fóra založená na phpBB 3.x
Záleží, jak jste fórum instaloval. Pokud jste jej instaloval podle našeho
návodu, nainstaloval jste fórum jak s českým, tak s anglickým překladem. Pokud jste fórum instaloval stažením ze stránek
http://phpbb.com, musíte češtinu nově nainstalovat.
Stáhněte si ji z
http://www.phpbb.com/customise/db/translation/czech/ a rozbalte složky /styles a /language, které najdete v archívu s překladem, do hlavní instalační složky vaší instalace phpBB /, přejděte do záložky System -> Language packs a u položky czech dejte install.
Tímto je nainstalována čeština, ještě v General -> Board setting v rozbalovacím seznamu Default language ji můžete nastavit jako hlavní jazyk.
Nyní budeme instalovat modul
Language Selection Mod.
Nejprve si pomocí
FTP zazálohujte celou instalaci phpBB (kdyby se něco nepovedlo, ať to můžete vrátit). Pak si v textovém editoru otevřete soubory includes/functions.php, includes/session.php, language/en/common.php, language/cs/common.php a styles/prosilver/template/overall_header.html - případě, že používáte jinou šablonu vzhledu, zaměňte "prosilver" za název vaší šablony. Nebo napište název do tohoto fóra a já návod upravím.
V souboru includes/functions.php najděte:
Kód:
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
a nahraďte jej za:
Kód:
// Begin Language Selection Mod
$nlang = strtolower(request_var('nlang', ''));
if (!empty($nlang))
{
$sql = 'SELECT lang_iso
FROM ' . LANG_TABLE . "
WHERE lang_iso = '" . $db->sql_escape($nlang) . "'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$nlang = file_exists($user->lang_path . basename($nlang . '/')) ? $nlang : '';
if (!empty($nlang) && !empty($row))
{
if ($user->data['user_id'] == ANONYMOUS)
{
$cktime = time() + 5259488;
$user->set_cookie('nlang', $nlang, $cktime);
$config['default_lang'] = $nlang;
}
else
{
$sql_ary = array(
'user_lang' => $nlang,
);
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . $user->data['user_id'];
$db->sql_query($sql);
}
}
$redircur = build_url('nlang');
$redirect = redirect($redircur);
}
// END Language Selection Mod
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
// Begin Language Selection Mod
'LANG_ACT' => build_url('nlang'),
'S_LANG_OPTIONS' => language_select($user->data['user_lang']),
// END Language Selection Mod
V souboru includes/session.php najděte:
Kód:
$this->lang_name = basename($config['default_lang']);
a nahraďte jej za:
Kód:
// Begin Language Selection Mod
$row = '';
$req_lang = request_var($config['cookie_name'] . '_nlang', 'X', false, true);
if ($req_lang != 'X')
{
$req_language = file_exists($this->lang_path . basename($req_lang) . '/') ? $req_lang : $config['default_lang'];
$sql = 'SELECT lang_iso
FROM ' . LANG_TABLE . "
WHERE lang_iso = '" . $db->sql_escape($req_lang) . "'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
if (!empty($row))
{
$this->lang_name = $req_lang;
$this->data['user_lang'] = $req_lang;
}
else
{
$this->lang_name = basename($config['default_lang']);
}
// END Language Selection Mod
V souboru language/en/common.php najděte:
Kód:
$lang = array_merge($lang, array(
a na nový řádek přidejte:
Kód:
// Begin Language Selection Mod
'SELECT_LANGUAGE' => 'Select your language',
// END Language Selection Mod
Nakonec tam tedy bude:
Kód:
$lang = array_merge($lang, array(
// Begin Language Selection Mod
'SELECT_LANGUAGE' => 'Select your language',
// END Language Selection Mod
'TRANSLATION_INFO' => '',
'DIRECTION' => 'ltr',
'DATE_FORMAT' => '|d M Y|', // 01 Jan 2007 (with Relative days enabled)
'USER_LANG' => 'en-gb',
To samé proveďte se souborem language/cs/common.php - tak, aby tam nakonec bylo:
Kód:
$lang = array_merge($lang, array(
// Begin Language Selection Mod
'SELECT_LANGUAGE' => 'Select your language',
// END Language Selection Mod
'TRANSLATION_INFO' => 'Český překlad – <a href="http://www.phpbb.cz/">phpBB.cz</a>',
'DIRECTION' => 'ltr',
'DATE_FORMAT' => '|d M Y|',
'USER_LANG' => 'cs-cz',
A v souboru styles/prosilver/template/overall_header.html najděte:
Kód:
<li class="icon-home"><a href="{U_INDEX}" accesskey="h">{L_INDEX}</a> <!-- BEGIN navlinks --> <strong>‹</strong> <a href="{navlinks.U_VIEW_FORUM}">{navlinks.FORUM_NAME}</a><!-- END navlinks --></li>
a přidejte za tento kód:
Kód:
<!-- IF not S_IS_BOT -->
<li class="rightside">
<form style="margin-left:5px; margin-top:-3.5px;" id="nlang" method="post" action="{LANG_ACT}">
<fieldset style="border:none;">
<label for="nlang">{L_SELECT_LANGUAGE}:</label>
<select onchange="this.form.submit();" name="nlang">{S_LANG_OPTIONS}</select>
<noscript><div><input type="submit" value="{L_GO}" /></div></noscript>
</fieldset>
</form>
</li>
<!-- ENDIF -->
Nakonec jděte do administračního rozhraní a v záložce General (Obecné) najděte Purge The Cache (Pročistit cache) a vyčistěte cache. Pak jděte do záložky Styles (styly) -> Templates (Šasblony) a zde u používané šablony dejte Refresh (Obnovit).
A na fóru by se měl objevit rozbalovací seznam s výběrem jazyka. Je možné zobrazení výběru změnit třeba na vlajky úpravou onoho posledního souboru.