Pentiums Posted May 7, 2009 Report Share Posted May 7, 2009 Varbūt netrāpīju īstajā sadaļā bet nu darīšana arī ar arrajiem. Kā datubāzē uzglabāt šādus mainīgos un pēctam viņus vienkārši ar vienu kveriju izvilkt? $lang['lat']['slogan'] = 'Teksts LV valodā'; $lang['eng']['slogan'] = 'Teksts EN valodā'; $lang['rus']['slogan'] = 'Teksts RU valodā'; $lang['lat']['title'] = 'Teksts LV valodā'; $lang['eng']['title'] = 'Teksts EN valodā'; $lang['rus']['title'] = 'Teksts RU valodā'; $lang['lat']['hello'] = 'Teksts LV valodā'; $lang['eng']['hello'] = 'Teksts EN valodā'; $lang['rus']['hello'] = 'Teksts RU valodā'; Quote Link to comment Share on other sites More sharing options...
marcis Posted May 7, 2009 Report Share Posted May 7, 2009 Datubāze: +----+------+--------+------------------+ | id | lang | key | translate | +----+------+--------+------------------+ | 1 | lat | slogan | Teksts LV valodā | +----+------+--------+------------------+ | 2 | eng | slogan | Teksts EN valodā | +----+------+--------+------------------+ | 3 | rus | slogan | Teksts RU valodā | +----+------+--------+------------------+ | 4 | lat | title | Teksts LV valodā | +----+------+--------+------------------+ | 5 | eng | title | Teksts EN valodā | +----+------+--------+------------------+ PHP: $lang = array(); $sql = "SELECT lang, key, translate FROM `tabula`"; $res = mysql_query($sql); while($row = mysql_fetch_object($res)){ $lang[$row->lang][$row->key] = $row->translate; } print_r($lang); Quote Link to comment Share on other sites More sharing options...
bubu Posted May 7, 2009 Report Share Posted May 7, 2009 Es gan glabātu to divās tabulās: Keywords (id, key): 1 slogan 2 title 3 hello Translations (id, key_id, language, translation): 1 1 lv slogan_latviski 2 1 ru slogan_krieviski 3 2 lv title_latviski 3 3 en title_angliski ... Pēc vajadzības arī valodas kodu liktu atsevišķā tabulā un no Translations referencētos uz to ar valodas primāro atslēgu (id). Quote Link to comment Share on other sites More sharing options...
Pentiums Posted May 7, 2009 Author Report Share Posted May 7, 2009 o, paldies! :) Quote Link to comment Share on other sites More sharing options...
marcis Posted May 7, 2009 Report Share Posted May 7, 2009 bubu, ja to visu beigās ielasa dotajā masīvā, tad es īsti neredzu jēgu glabāt datus pēc šādas struktūras. Ok, īstenībā jā, pie labošanas gan šis varētu būt labāks variants. Es tulkojumus tomēr labāk glabāju failos. Var pieglabāt arī db, priekš labošanas, bet nu tam arī es tā īsti jēgu neredzu :) Quote Link to comment Share on other sites More sharing options...
l27 Posted May 7, 2009 Report Share Posted May 7, 2009 Vēl ērtāk ir, ja uztaisa klasi, kas attēlo leibeļus. Ja vajag labot tos, ieslēdz redaktora režīmu, kad labeļiem parādās linki, uz kuriem uzklikšķinot atveras popups leibeļu vērtības labošanai. Quote Link to comment Share on other sites More sharing options...
Delfins Posted May 7, 2009 Report Share Posted May 7, 2009 (edited) Ok, īstenībā jā, pie labošanas gan šis varētu būt labāks variants. varbūt tā arī ir!? varbūt beigās ir Poga-X, kas uztaisa failus!? PS: es vēl pie keywordiem pieliktu lauku default-text (tipa "untranslated"), vai automātiski pieglabātu tabulā translation zem "unknown language" :) Edited May 7, 2009 by Delfins Quote Link to comment Share on other sites More sharing options...
Ghenis Posted May 7, 2009 Report Share Posted May 7, 2009 Mhh, gettext ? Quote Link to comment Share on other sites More sharing options...
fest Posted May 8, 2009 Report Share Posted May 8, 2009 Bet ja vajag pamainīt labeli orģinālajai valodai, tad ar gettext čakars ir lielāks nekā izmantojot pirmos variantus- jāmaina labelis sourcē un pēc tam vēl jānokompilē katalogs. Un ja orģinālais .po fails ir padirsies/tāda nav, tad čakars vēl lielāks. Slinkums pašlaik meklēt, bet vai kāds nav taisījis benchmarkus, kāda ir performances atšķirība starp tulkojamo stringu glabāšanu ar gettext/masīviem/konstantēm/datubāzi? Mans minējums ir, ka cīņa būtu starp gettext un masīviem/konstantēm. Quote Link to comment Share on other sites More sharing options...
black Posted May 9, 2009 Report Share Posted May 9, 2009 Nesaprotu, kāpēc izmaiņas ar gettext būtu lielāks čakars kā ar masīviem. Katalogu var ģenerēt dažu sekunžu laikā arī lielos projektos (manā projektā patreiz ir 3569 faili, piemēram). Ir arī grafiskie gettext redaktori, kas nozīmē, ka kompilēšana nav jāveic no komandrindas (ti, to var darīt arī tekstu tulkotāji, vai, piemēram, sekretāre). Par turēšanu datubāzē - izklausās diezgan nereāli. Neesmu rēķinājis, bet manās lapās katrā lapā ir apmēram 20-30 tulkojumi teksti. Ja taisīsi katram tulkojumam savu kveriju, tad datubāzi nonesīsi momentā. Pat ja mēģināsi ielādēt visus tekstus ar vienu kveriju un tad kešot no masīva, tad arī būs ievērojams trafiks uz datubāzi / aizņemta atmiņa pie katra lapas pieprasījuma. Atliek tikai iespēja kešot tulkojumu masīvu ar memcached (vienreiz), bet to visi hostinga provaideri nepiedāvā. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.