Hibás dátum formátum

Anonymous képe

Sziasztok!

Több mint egy tucat találatot megnéztem a témában, de egyik sem pont ezzel foglalkozik, így kénytelen vagyok itt megkérdezni:

Az alap rendszeren kívül a következő modulok vannak fent:

Filefield
ImageField
Views
CCK
Simpleviews

Nem tudom melyik modul feltelepítése után romlott el, ezért most egyenként kikapcsolgattam mindet, de semmi.

Rendesen, magyar sorrendre állítottam át a dátum formátumot (nem a telepítéskor, hanem utólag).

Először arra gyanakodtam, hogy mint a phpbb-nél a már regisztrált felhasználókra nem vonatkozik az utólagos változtatás, ezért csináltam egy új felhasználót, de annál is ez a helyzet.

Bár nincs gyorstár beállítva, de töröltem a cache és sessions táblák tartalmát.

Aztán importáltam a legfrissebb hu.po filet, kb 3 ezer dolgot írt felül.

Semmi változás.

Ráadásul ezt nem is magyarul írja ki, hanem:

Posted on 01. Dec, 2010 by formában.

Gondoltam, hogy megint letörlöm az egész drupalt és feltelepítem megint, de egyrészt már sok mindennel megvagyok, másrészt ilyen kis hibák miatt nem tehetem ezt meg majd egy éles rendszerrel.

Egyébként megjelent a 6.20-as verzió, de gondolom még csak angolul.

Drupal verzió: 
Balogh Zoltán képe

Valószínűleg ez a sminkedben nincsen lefordítva, ezért nem jelenik meg helyesen. Keres rá a sminkedben a „Posted on”-ra, és nézd meg, hogy van-e körülötte t(), illetve hogyan írja utána a dátumot. Ugyanis némely sminket simán nem érdekel a rendszerben beállított dátumformátum.

0
0
vacati képe

Ez a rossz abban, hogy nincsenek kötelező szabályok, mert ha a sminknek a rendszer beállításait kötelezően követnie kellene, akkor nem lenne ez.

Rátettem az alap sminkre (Garland) és a dátum most megfelelő sorrendben van.

Csak azt nem értem, hogy több hónapja dolgozom ezzel a sminkkel, létezik, hogy eddig nem vettem észre?!

A Posted helyett viszont nincs ott magyarul, hogy beküldve (a Garlandban sem, pedig úgy sejlik, hogy ez régebben ott volt).

Már csak ez hiányzik.

Azt mondod, hogy a sminkben véssem kőbe a megfelelő dátumformátumot, vagy meg tudom neki mondani, hogy kövesse a rendszer beállítását (vagy ez nehezebb feladat)?

Hadd kérdezzek még valamit: valaki, aki ha nem is profi, de tisztában van már a CSS-sel, mennyi idő alatt tud csinálni egy saját sminket. Nem úgy értem, hogy teljes mélységben, hanem alapul véve mondjuk a Garlandot, megváltoztatja az oldal elrendezést, az arányokat, színeket, hátteret, azaz ránézése egy teljesen más megjelenés legyen.

Mert ugye így elkerülhetőek az ilyesféle meglepetések, mivel az alap smink gondolom helyesen van megírva.

0
0
Balogh Zoltán képe

Eddig senkit nem zavart, hogy rossz az a dátumformátum a kérdéses sminkben. Ez a dolog ilyenkor úgy működik, hogy felveszel egy hibajegyet a drupal.org-on a kérdéses smink projektjéhez, hogy karbantartókám, ez itt bizony bugos. Ha gyors sikert akarsz elérni, akkor egyből a javítást is küldöd patch formájában, úgy sokkal hamarabb megoldódik a Te problémád. Más pedig már nem is fog találkozni evvel a hibával.

A másik kérdésednek nyiss új témát szerintem.

0
0
vacati képe

Remélem az én angolságomat megértik...

De előbb egy tiszta telepítésen megnézem megint, hogy tényleg rossz-e, mert biztosra akarok menni. Eddig csak feltűnt volna...

Nyitottam új témát: http://drupal.hu/forum/saj%C3%A1t-smink-k%C3%A9sz%C3%ADt%C3%A9s

0
0
aboros képe

a nem működő smink node.tpl.php -ját, úgy könnyebb lesz elmagyarázni mi a hiba.

0
0

-
clear: both;

vacati képe

Annyi látok benne józan parasztival, hogy ott van a Posted szó és a dátum formátum. Ezt átírni nem szeretném, mert az nem lenne elegáns megoldás. Azt szeretném, ha ez a smink jól viselkedne és a beállításokat átvenné.

Na de itt a php:

<div class="<?php print $classes; ?>">
  <div class="node-inner clear-block">
    <?php if (!$page): ?>
      <h1 class="title"><a href="<?php print $node_url; ?>" title="<?php print $title ?>"><?php print $title; ?></a></h1>
    <?php endif; ?>
    <?php if ($unpublished): ?>
      <div class="unpublished"><?php print t('Unpublished'); ?></div>
    <?php endif; ?>
    <?php if ($submitted): ?>
	  <span class="submitted">Posted on <?php echo date("d. M, Y", $created).t(' by ').$name; ?></span>
    <?php endif; ?>
    <?php if ($terms): ?>
      <span class="terms"><?php print t(' in ') . $node_terms; ?></span>
    <?php endif; ?>
    <div class="content clear-block">
      <?php print $content; ?>
    </div>
    <?php if ((!$page)||($links)): ?>
      <div class="extra-links">
        <?php print $links; ?>
      </div>
	<?php endif; ?>
  </div>
</div> <!-- /node-inner, /node -->
0
0
szantog képe

Ez nem tudom milyen smink, de több sebből is vérzik, illetve nagyon nem "drupalisch" megoldások vannak benne.

a <span class="submitted">Posted on <?php echo date("d. M, Y", $created).t(' by ').$name; ?></span>-ot cseréld le erre:

<span class="submitted"><?php print t('Posted on') . ' ' . $created) . ' ' t('by') . ' ' . $name; ?></span>

De méginkább:

<span class="submitted"><?php print $submitted ?></span>

Akkor hogy miért is rossz, ami benne van, csak mert most kedvem van ilyeneket írni. :)
A t függvény mindenképpen használandó, ha nem akarunk fixen beégetett fordíthatatlan szövegeket, márpedig drupal oldalban ilyet nem akarunk. Volt benne egy ilyen, hogy t(' by ') ez viszont egy érdekes kérdés, mivel _általában_ kezdő, záró szóközöket nem teszünk t-be, ebben az esetben azonban érdekes lehet a magyar fordítás.

A másik hatalmas hiba, hogy drupalban nem írunk ki direkt dátumformatumot, hanem használjuk a format_date függvényt.

Szóval a legtutibb az, hogy a második verziót írod a sminkedbe, és ha az így kapott szöveg nem tetszik, akkor a sminkedbe szépen bemásolod sminkedneve_node_submittedként ezt a függvényt: http://api.drupal.org/api/drupal/modules--node--node.module/function/the... és ott úgy alakítod, ahogy akarod.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

Balogh Zoltán képe

Volt benne egy ilyen, hogy t(' by ') ez viszont egy érdekes kérdés, mivel _általában_ kezdő, záró szóközöket nem teszünk t-be, ebben az esetben azonban érdekes lehet a magyar fordítás.

Nem általában, hanem ilyet egyáltalán nem szabad csinálni. Ezt annak idején még Pasqualle magyarázta el nekem, ha jól emlékszem. Itt lesz valahol a kommentek között, csak nem találom. Az az oka, hogy a fordításkor trimmelődik a lefordított szöveg, melynek az az eredménye, hogy össze fog csúszni az egész.

0
0
vacati képe

Nos a következő eredménnyel járt:

Az első esetben ez a hibaüzenet jött:

Parse error: parse error in (...) node.tpl.php on line 27

Vagyis megjelöli hibásként ezt a sort, amit beírtunk.

A második eset szinte tökéletes és ezt a formátumot adta: szerző, 2010.10.26 - 17:37

Ha visszaváltok Garlandra, akkor ennyi a különbség: 2010.10.26 - 17:37 — szerző

Tehát egy sorrend és egy gondolatjel kötőjel helyett.

Ha jól emlékszem régebbi 6-os Drupal verzióban magyarul is ott volt, hogy Posted, azaz Beküldve, de lehet, hogy rosszul emlékszem. De nem is kell.

Kösz még egyszer!

Viszont hogyan lehet ezt is intelligens módon megcsinálni, tehát mint a sminkek esetében az alsminkelést? Tehát, hogy ne az eredeti kódba kelljen javítani, hanem egy külön filban helyettesíteni? Ez lenne a hurok? És azt hogyan?

0
0
szantog képe

Template.php-ba ezt:
szóval a legtutibb az, hogy a második verziót írod a sminkedbe, és ha az így kapott szöveg nem tetszik, akkor a sminkedbe szépen bemásolod sminkedneve_node_submittedként ezt a függvényt: http://api.drupal.org/api/drupal/modules--node--node.module/function/the... és ott úgy alakítod, ahogy akarod.

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

pp képe

Ez – mondjuk így – nem elegáns.

<span class="submitted"><?php print t('Posted on') . ' ' . $created) . ' ' t('by') . ' ' . $name; ?></span>

Helyette inkább:

<span class="submitted"><?php print t('Posted on @created by @name', array('@created' => $created, '@name' => $name)); ?></span>
0
0
vacati képe

Ha ezt írom be, akkor teljesen rossz formátumot mutat, ez lesz belőle:

Posted on 1288111063 by admin

Holott ezt sikerült elérni a korábbi javítással: szerző, 2010.10.26 - 17:37
A normál pedig (Garland) ez: 2010.10.26 - 17:37 — szerző

0
0
pp képe

Én csak azt javítottam, hogy ne legyen fordíthatatlan a szöveg.

A lényeg, hogy amit írtam, az lehet, hogy nem jó, de fordítható szemben szantog megoldásával.
De mint ahogyan Ő is írta a smink megoldása több sebből is vérzik.

pp
(pl. Nyílván a drupal format_date() kell használni a dátum fordítására és nem pedig date() függvénnyel bohóckodni.)

0
0
Den képe

István ezt ajánlotta:

<span class="submitted"><?php print t('Posted on @created by @name', array('@created' => $created, '@name' => $name)); ?></span>

Jó megoldás, mert egyetlen stringet kell majd lefordítani: 'Posted on @created by @name' - ahova a fordítási alrendszer a @created helyére dátumot, a @name helyére meg a szerzőt fogja betenni.

Ezt a két paramétert itt biztosítjuk neki:

array('@created' => $created, '@name' => $name)

Mint látod, a @created értéke a te $created változóddal értékével lesz feltöltve, ahogy az van, úgy fog bekerülni a fordításba - unix timestampként - az unix 0 időszámítástól kezdve eltelt másodpercek száma.

Mivel neke ez nem jó, cseréld a paramétert az eredeti node.tpl-edben (te küldted be) lévő date("d. M, Y", $created) - formátumra.

<?php print t('Posted on @created by @name', array('@created' => date("d. M, Y", $created), '@name' => $name)); ?>

Ennyi lenne.. A span-eket tedd köré, és máris fordítható a szöveg:

0
0
pp képe

A format_date() függvény azért tud egy pár okosságot:

  • Hónapok neveit a nyelvnek megfelelően tudja megjeleníteni. (pl January helyett Január stb.)
  • Az időt a felhasználó időzónája szerint mutatja és nem a szerver időzónája szerint.
  • Központi helyen állítható a három (small, medium, large) dátumformátum a format_date() ezt használja. (Természetesen indokolt esetben megadható más is.)
0
0
aboros képe

lehetőségét szépen meg is öltük, a date("d. M, Y") formát beleégettük a templatebe és hiába variálja majd az oldalbeállításoknál a dátumformákat. szerintem kálmán javaslata a szupertuti. azért van szerencsétlen theme_node_submitted, hogy azzal csináljuk ezt. persze a legtöbb sminkkészítő nem így tesz sajnos. és soha nem a php date() függvénnyel formázzuk a timestampeket dátumokká, van arra is format_date() drupal függvény, azt illik használni.

hamár így belementünk itt az eleganciába ;)

0
0

-
clear: both;

Den képe

Eddig is belevolt égetve. Mikor kiírta simán, date() nélkül, akkor sokallta a számokat.

De igen, format_date() fv.-t tessék használni. Vagy sminkelni rendesen a submitted adatokat.

0
0
hosszu.kalman képe

Vagy a $submitted változót használjuk és ha módosítani akarjuk akkor a template.php-ban a theme_node_submitted() implementálásával megtesszük.

0
0