Hali!
Többnyelvűsített site-ot szeretnék létrehozni, de nem minden oldalnak lesz angol, német fordítása.
Azt szeretném elérni, hogy a Language switcher blokk csak akkor tegye ki a nyelvi zászlóját, ha az adott oldal le van fordítva arra a nyelvre. Ez megvalósítható? (nem találtam rá megoldást)
Köszi: béla
Hogy próbáltad ahogy nem sikerült?
Üdv!
Dudás József
az a problémám, hogy az angol és német zászló akkor is megjelenik, ha az adott node nincs is lefordítva azokra a nyelvekre. Ebben az esetben, ha nyelvet váltok, akkor ugyan úgy az eredeti node jelenik meg.
beállítások:
Címlap › Adminisztráció › Webhely beállítása › Nyelvek
többnyelvű rendszer tab:
Tartalom kiválasztás módja: Csak a jelenlegi nyelv.
Tartalom fordítás hivatkozásainak elrejtése: pipa
Felületváltás fordításhoz: pipa
beállítás tab:
Nyelv megállapítás: Útvonal előtagok nyelvi alapértelmezéssel.
Adminisztráció › Webhely beállítása › Nyelvek › Multilingual system : Mixed current language (if available) or default language (if not) and language neutral. opciót.
Én még ezt is be szoktam kapcsolni ugyanitt: Hide content translation links
Üdv!
Dudás József
átállítottam az általad javasoltra, de a jelenség ugyan az.
ha már létezik a forráson kívül min. 1 fordítás, akkor jól működik, de ha csak a forrás van, akkor megjelenik mind a 3 nyelv és ugyan azt a tartalmat váltogatja.
de/node/38
hu/node/38
en/node/38
próbaképp? Állítsd a tnid mezőt a le nem fordított tartalomnál 0-ról a nid értékre. Akkor hogy csinál?
Üdv!
Dudás József
így működik.
csak a magyar jelenik meg a nyelvválasztó blokkban.
megtudni valakitől a koncepciót, hogy amíg nincs lefordítva valamilyen nyelvre akkor a forrás tartalom miért 0-ás tnid-t produkál. Én írtam erre egy kis modult ami létrehozás után a tnid-t beállítja a nid-re. Egy csomó helyen problémás ez a 0-ás tnid pl. a view is rossz eredményt ad vissza emiatt nyelvi szinten amíg nincs fordítás.
Üdv!
Dudás József
Tényleg. a views-ben már nekem is feltűnt ez a jelenség.
fel tudnád tenni, a modulodat?
köszi
setTnid.info
; $Id: setTnid.info,v 1.0 2009/07/22 20:11:10 nerkn Exp $name = setTnid
description = "set tnid of source node"
core = 6.x
setTnid.module
<?php
// $Id: setTnid.module,v 1.0 2009/07/22 204:17:41 nerkn Exp $
function settnid_menu(){
$items = array();
$items['admin/settings/settnid'] = array(
'title' => t('setTnid settings'),
'description' => t('setTnid check on if you want to set tnid of source node on first time saving'),
'page callback' => 'drupal_get_form',
'page arguments' => array('settnid_admin'),
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function settnid_admin() {
$form['settnid_check'] = array(
'#type' => 'checkbox',
'#title' => t('setTnid on'),
'#default_value' => variable_get('settnid_check', 0),
'#description' => t("Set checked if you want to use this function"),
'#required' => TRUE,
);
return system_settings_form($form);
}
function _update_node($node){
if ( variable_get('settnid_check', 0) ) {
db_query('UPDATE {node} SET tnid = %d WHERE nid = %d', $node->nid, $node->nid);
}
}
function settnid_nodeapi(&$node, $op, $teaser, $page) {
switch ($op) {
// node validated and saved.
case 'insert':
if ($node->translation_source) {
return; // saved a translation version.
}
if ($node->tnid) {
return; // saved a translation version.
}
_update_node($node);
break;
}
}
?>
Üdv!
Dudás József
perfect. köszi :)
tehát, akkor 2 megoldás létezik a problémámra?
vagy belenyúlok a nyelvválasztó blokk részbe, vagy írok egy modult ami azt csinálja, hogy átírja a 0 tnid-eket a nid-re?
Ez érdekes:
ha létrehozom magyarul a node-ot, akkor megjelenik mind a 3 nyelv és ugyan az a cikk jön be mindnél, de ha létrehozok 1 fordítást hozzá, akkor már helyesen működik a dolog. Akkor csak az a 2 nyelv jelenik meg a language switcher blokkban.
A Language switcher blokk szerintem a kezelőfelület nyelvezetére vonatkozik, és független attól, hogy az adott tartalom épp milyen nyelvekre van, vagy éppen nincs lefordítva. Nem erre való.
nem így van, mert mint írtam, ha már 1 fordítása létezik a forrásnak, akkor megfelelően működik.