problēmas ar multivalodu drupal

malinens Tue, 04/08/2008 - 20:05

Tātad ir nepieciešamība pēc 4 valodu portāliņa (lv,ru,eng, ukr). Kā man pareizāk veidot navigation bloku, lai, nomainot valodu, nomainītos arī viss, kas ir iekš navigation izvēlnes? Lieta tāda, ka ieslēdzot izvēlnes elementu "Forums", tas nav vairakās valodās un es nezinu ka viņu pārveidot vairākās valodās.

Pateicos jau iepriekš par atbildēm :)

Pati izvēlne 'Forums' nepārtulkojas? Vai arī foruma saturs? Jo nu saturu pašam vien jātulko :)

Bet izvēlnei vajadzētu būt iztulkotai attiecīgajos *.po failos. Tas kā nekā ir Drupal Core iebūvēts un tur arī tulkojams.

Ja vien, protams,  netiek izmantots kāds cits forums kā modulis. Tādā gadījumā šis modulis arī jāiztulko visās valodās.

atradu, kur var tulkot :)

un pie viena vēl jautajums: vai ir tads gatavs modulis- ielaazhu skripts (faili atrastos pavisam citaa mapee aarpus drupal instalaacijas) vai arii tomeer man vajadzees veidot moduli no nulles?

Grūti saprast to pēdējo jautājumu par "ielāžu skriptu". ;)

man vienaa citaa saitaa ir salikti daudzi faili pa mapeem(pie 30 000), kurus var katrs interesents novilkt un es gribu atrast kaadu moduli, kas speetu paraadiit smuki failus (mapes, faili) un buutu iespeeja shos failus novilkt (buutu labi, ja failus vareetu komenteet un tml.).

abi saiti staav uz mana personiigaa servera (Ubuntu) .

paldies!

šis drupal saits man būs kā web versija vienam wap saitam (laikam skan nedaudz dīvaini, ne? :D )

 

esmu uzlicis mobile tēmu un page.tpl.php izskataas šādi:

" xml:lang="<?php print $language ?>"> <?php print $head_title ?> <?php //print $head ?> > "><?php print t('skip to navigation');?> <?php if ($title != ""): ?>

<?php print $title ?>

<?php endif; ?> <?php if ($help != ""): ?>

<?php print $help ?>

<?php endif; ?> <?php if ($messages != ""): ?> <?php print $messages ?> <?php endif; ?> <?php print($content) ?> <?php if ($tabs != ""): ?> <?php print $tabs ?> <?php endif; ?> <?php print theme('tabs_menu_tree',NULL, 1, 'inf', NULL);?> <?php print $sidebar_left . $sidebar_right; ?> <?php if ($footer_message) : ?> <?php print $footer_message;?> <?php endif; ?> <?php print $closure;?>

 

lai gan esmu uzlicis priekšā <?php //print $head ?> tās divas strīpiņas, vienalga parādās visi tie css failu, kad mobīlajiem telefoniem nebūt nav labi. esmu mēģinājis arī izdzēst vispār to rindiņu, bet bez rezultātiem. varbūt esmu kaut ko palaidis garām?

Man liekas, ka stili reāli tiek padoti mainīgajā <?php print $styles; ?> ne $head. Skaties, kas tev ar cache notiek, gan drupalā, gan browzerī. Pamēģini padzēst vēl vairāk laukā, skaties kas tad notiek. Kas tas page.tpl.php vispār izpildās.

iztiiriiju keshatminju gan brauzerii un saitam arii ir izsleegta keshoshana...

 citaam teemaam ir tā: <?php print $head ?> <?php print $styles ?> <?php print $scripts ?>

 

varbuut var kaa citaadaak netljaut raadiit tos css failus un skriptus?

kuraa failaa man buutu jaaskataas? 

Ja nav <?php print $styles ?>, nav nav jābūt arī stiliem. Kaut kāds mistika. ;)

izraadaas, ka probleema nav teemaa, bet gan mobit modulii(ja brauzeris ir mobiilais telefons, tad teema tiek apgraiziita, bet ne liidz galam...). ja izveelas pashrociigi mobile teemu, tad css un skripti pazuud, bet ja ieiet caur mobiilo, tad mobit modulis vienkaarshi apgraiza ne liidz galam defaulto teemu, nevis (kaa buutu logjiskaak) uzliktu mobile teemu uz laiku, kad ieeit caur mobiilo...

 

 

reku mobit.module:

  <?php // $Id: mobit.module,v 1.1 2007/03/13 01:47:35 astarck Exp $ // $Header: /network/moloch/projects/rcsroot/hornet/ui/drupal5/modules/mobit/RCS/mobit.module,v 1.1 2007/02/28 19:05:26 astarck Exp astarck // some globals: // mobit_default_mobile_theme = whatever theme you want to use as default mobile theme. // if the style does not exist it is catched by init_theme // mobit_use_ext_rendering = use the contec rendering engine for your mobile style // mobit_rendering_url = url of the rendering engine global $_mobit_default_mobile_theme, $_mobit_use_ext_rendering, $_mobit_rendering_url, $_mobit_is_mobile; //--------------------------------------------------------------------------------------------------- $_mobit_default_mobile_theme = 'mobile'; $_mobit_use_ext_rendering = false; // use external rendering engine $_mobit_rendering_url = 'http://wap.contec.ca/C/xC?u=%s'; // %s for current page including http:// //--------------------------------------------------- $_mobit_is_mobile = false; // used internal function mobit_check_is_mobile() { $uAgt=''; $acpt=''; if (isset($_SERVER['HTTP_USER_AGENT'])) { $uAgt = $_SERVER['HTTP_USER_AGENT']; } if (isset($_SERVER['HTTP_ACCEPT'])) { $acpt = $_SERVER['HTTP_ACCEPT']; } // Check if it is a moblizable client (make sure any updates here go to mobilize.php as well) if (strpos($acpt,'wml') || strpos($uAgt,'PDXGW') || strpos($uAgt,'portalmmm') || strpos($uAgt,'SAMSUNG') || strpos($uAgt,'DoCoMo') || strpos($uAgt,'Windows CE') || strpos($uAgt,'PPC') || strpos($uAgt,'Nokia') || strpos($uAgt,'Palm') || strpos($uAgt,'BlackBerry') || strpos($uAgt,'Symbian') || strpos($uAgt,'SonyEricsson') || strpos($uAgt,'dopod')) { return true; } else return false; } function mobit_init() { global $_mobit_use_ext_rendering, $_mobit_rendering_url, $_mobit_is_mobile, $_mobit_default_mobile_theme; global $custom_theme; $set_mobile=false; // little helper if (mobit_check_is_mobile()) {// if we are called from a mobile device if ($_mobit_use_ext_rendering) { // external rendering needs a reload if (!isset ($_SERVER['HTTP_CMS'])) { $location = sprintf ($_mobit_rendering_url, 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']); Header('Location: '.$location); exit; // no need to stay } } $set_mobile = true; } else { if ($_mobit_use_ext_rendering && isset ($_SERVER['HTTP_CMS'])) { // this is a rendering engine reload $set_mobile = true; } } if ($set_mobile) { $_mobit_is_mobile = true; // set global var, we are in mobile mode if (isset ($_SESSION ['mobit_theme'])) { // set user setting $custom_theme = $_SESSION ['mobit_theme']; } else { // set anonymous default $custom_theme = $_mobit_default_mobile_theme; } } } function mobit_help($section = 'admin/help#mobit') { $output = ''; switch ($section) { case 'admin/settings/mobit': $output .= t('Themes checkes as mobile are selectable by users as mobile theme under the user settings.'); break; } return $output; } function mobit_perm() { return array('access content'); } function mobit_menu($may_cache) { $items = array(); if ($may_cache) { $items[] = array( 'path' => 'admin/settings/mobit', 'title' => t('Mobit'), 'callback' => 'drupal_get_form', 'callback arguments' => array('mobit_administration'), 'access' => user_access('administer Mobit'), 'description' => t('Allow users to configure a mobile theme.') ); } return $items; } function mobit_get_themes() { $mobis = array (); $h = db_query ("SELECT theme FROM {mobit_themes}"); while ($m = db_fetch_object ($h)) { $mobis [] = $m->theme; } return $mobis; } function mobit_administration() { drupal_clear_css_cache(); $themes = system_theme_data(); $mobis = mobit_get_themes (); ksort($themes); foreach ($themes as $info) { $info->screenshot = dirname($info->filename) .'/screenshot.png'; $screenshot = file_exists($info->screenshot) ? theme('image', $info->screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), FALSE) : t('no screenshot'); $form[$info->name]['screenshot'] = array('#value' => $screenshot); $form[$info->name]['description'] = array('#type' => 'item', '#title' => $info->name, '#value' => dirname($info->filename)); $options[$info->name] = ''; if ($info->status) { $status[] = $info->name; } if (in_array ($info->name, $mobis)) { $mobile_status[] = $info->name; } } $form['status'] = array('#type' => 'checkboxes', '#options' => $options, '#default_value' => $status, '#disabled' => true); $form['mobile_status'] = array('#type' => 'checkboxes', '#options' => $options, '#default_value' => $mobile_status); $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration') ); $form['buttons']['reset'] = array('#type' => 'submit', '#value' => t('Reset to defaults') ); return $form; } function mobit_administration_submit($form_id, $form_values) { db_query("DELETE FROM {mobit_themes}"); foreach ($form_values ['mobile_status'] as $theme) { if ($theme) db_query ("INSERT INTO {mobit_themes} VALUES ('%s')", $theme); } cache_clear_all(); return; } function theme_mobit_administration($form) { foreach (element_children($form) as $key) { $row = array(); if (is_array ($form[$key]['description'])) { $row[] = drupal_render($form[$key]['screenshot']); $row[] = drupal_render($form[$key]['description']); $row[] = array('data' => drupal_render($form['status'][$key]), 'align' => 'center'); $row[] = array('data' => drupal_render($form['mobile_status'][$key]), 'align' => 'center'); } $rows[] = $row; } $header = array(t('Screenshot'), t('Name'), t('Enabled'), t('Mobile')); $output = theme('table', $header, $rows); $output .= drupal_render($form); return $output; } function theme_mobit_theme_select_form($form){ foreach (element_children($form) as $key) { $row = array(); if (is_array($form[$key]['description'])) { $row[] = drupal_render($form[$key]['screenshot']); $row[] = drupal_render($form[$key]['description']); $row[] = drupal_render($form['mobit_theme'][$key]); } $rows[] = $row; } $header = array(t('Screenshot'), t('Name'), t('Selected')); $output = theme('table', $header, $rows); return $output; } function mobit_user_form_fields($account) { global $user; $themes = system_theme_data(); $mobis = mobit_get_themes (); $h = db_query("SELECT theme FROM {mobit_uid} WHERE uid = %d", $account->uid); if (db_num_rows ($h)) { $res = db_fetch_array ($h); $mytheme = $res ['theme']; } else { $mytheme = ''; } // enable account owner to accept $form['mobit'] = array( '#type' => 'fieldset', '#title' => t('Mobile theme configuration'), '#description' => 'Selecting a different theme will change the look and feel of the site on a mobile device.', '#collapsible' => TRUE, '#theme' => 'mobit_theme_select_form', '#weight' => 10 ); ksort($themes); foreach ($themes as $info) { if (in_array ($info->name, $mobis) && ($info->status)) { $info->screenshot = dirname($info->filename) .'/screenshot.png'; $screenshot = file_exists($info->screenshot) ? theme('image', $info->screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), FALSE) : t('no screenshot'); $form['mobit'][$info->name]['screenshot'] = array('#value' => $screenshot); $form['mobit'][$info->name]['description'] = array('#type' => 'item', '#title' => $info->name, '#value' => dirname($info->filename)); $options[$info->name] = ''; } } $form['mobit']['mobit_theme'] = array('#type' => 'radios', '#options' => $options, '#default_value' => $mytheme); return $form; } function mobit_user($op, &$edit, &$account, $category = FALSE) { global $user, $custom_theme, $_mobit_is_mobile; switch ($op) { case 'login': // user is loaded, insert mobi theme into uid object if ($_mobit_is_mobile) { $h = db_query("SELECT theme FROM {mobit_uid} WHERE uid = %d", $account->uid); if (db_num_rows ($h)) { $theme = db_fetch_array ($h); $custom_theme = $theme ['theme']; $_SESSION ['mobit_theme'] = $custom_theme; } } break; case 'submit': // submit the form i guess db_query("DELETE FROM {mobit_uid} where uid = %d", $account->uid); db_query ("INSERT INTO {mobit_uid} (uid, theme) VALUES (%d, '%s')", $account->uid, $edit ['mobit_theme']); break; case 'form': // user account edit form if ($category == 'account') { $form = mobit_user_form_fields ($account); return $form; } break; } return; } ?>

 

varbuut kaads man var paliidzeet tikt ar sho probleemu liidz galam? Buushu ljoti pateiciigs...

a) būtu forši, ja tu neliktu trīs dažādas tēmas zem viena topika. savādāk šī tēma pārvēršas par supportu konkrētām projektam / userim

b) vai vari apskaidrot, kas īsti nav ok ar moduli mobit? piekam izdarīt to nepostējot moduļa vai tpl saturu :)


sorry :)  buutu jauki, ja straadaatu code tags, tad buutu vieglaak viss apskataams :)

Mobit modulis nenonjem visu lieko (netiek nonjemti stili un skripti no <head>), bet ir arii mobile teema, kas straadaa perfekti, nonjemot visu lieko. Es neizprotu, kaa var piespiest mobit modulim vienkaarshi izmantot mobile teemu uz sesijas briidi, kas notiek, lietojot mobiilo telefonu, nevis apgraiziit saita defaulto teemu (un arii ne liidz galam...).

Parakājos pa drupal.org.

Tas mobit gan vēl nav līdz galam gatavs modulis, lai arī vietā neko daudz sakarīgu arī neatrodu. Tātad - bez čakara neiztikt :)

varinats A ir mēģināt izmantot citu(s) moduļus - piem.

http://drupal.org/project/accessibility

Tur dažas tēmas jau gatavas.

Otrs variants ir traucēt mobit developerus. Cik saprotu no apraksta, tad mobit ir tieši domāts, lai mainītu tēmas, ja webu skatās no mobilā un tā ir moduļa pamatfunkcija. Ja tas nestrādā, tad jāraksta bug reports.
Izslēdzu tinyMCE forumos, tagad strādās koda filtrs