Maris-S Posted July 3, 2013 Report Share Posted July 3, 2013 Sveiki! Šajā forumā jau ir runāts ap un par tulkošanu php, izmantojot gettext. Arī pats dažreiz esmu piedalījies šajās diskusijās, bet līdz šim nesanāca atrisināt labi zināmo problēmu, ja primārai valodai viens un tas pats vārds varētu tikt tulkots dažādi. Piemēram angļu "name" varētu tikt tulkots uz latviešu valodu kā "vārds" un kā "nosaukums". Tā kā primārās valodas teksts veido unikālu identifikatoru, tie tiek iztulkoti visur vienādi. Zināmākais risinājums, kas tiek piedāvāts, lai atrisinātu šo problēmu, ir tādu kā mainīgo lietošana primārās valodas vietā. Šis risinājums tiešām atrisina problēmu, lai gan man personīgi viņš nepatīk, jo tiek zaudētas labākās gettext lokalizācijas iespējas. Izmantojot primārajā valodā atbilstošo tekstu, nevis identifikatorus, sistēma izvadīs primārās valodas tekstu, ja tas nebūs iztulkots, taču izmantojot identifikatorus, tiks izvadīts identifikators, kas nebūs tik smuki. Vēl viens trūkums ir ērtība pie tulkošanas. Izmantojot identifikatorus pie primārās valodas būs attēloti identifikatori, kas padarīs tulkošanu neērtu un laikietilpīgu. Izrādās tam ir risinājums, kas nav iekļauts php. Tā ir iespēja izmantot kontekstu, lai norādītu kādā kontekstā ir jātulko vārds. Vienkārši izsakoties tas nozīmē pielikt unikālu identifikatoru tur, kur tas ir nepieciešams, nemainot pašu primāro tekstu. Problēmas risinājumu var apskatīties šeit, pie apraksta konteksta izmantošanai: https://developer.mozilla.org/en-US/docs/gettext Arī php dokumentācijā, lietotāju komentāros: http://php.net/manual/en/book.gettext.php Iespējams kādam noderēs. Quote Link to comment Share on other sites More sharing options...
F3llony Posted July 3, 2013 Report Share Posted July 3, 2013 Gettext. Oh my... Ohhhhh.... Myyyyyyyy........ Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 4, 2013 Report Share Posted July 4, 2013 Nepatīk gettext? Ko?! :O Quote Link to comment Share on other sites More sharing options...
F3llony Posted July 4, 2013 Report Share Posted July 4, 2013 Tas protams ir mans subjektīvais viedoklis un tikai PHP platformas implementācijai, bet gettext manuprāt ir sērgu sērga kuru piedabūt pie dzīvības prasa nodarboties ar hakiem, kur lai pie dzīvības dabūtu hakus nepieciešams veidot hakus hakiem, kur haki ir nohakoti ar hakiem, kas ir atkarīgi no platformas, kur platformas atbalsts ir atkarīgs no hakiem. Iemesli: php kā modulis kešo tulkojumus, ir limitētas iespējas pievienot tulkojumiem papildus info, un konfigurācija/debugošana ir diezgan pamatīgs murgs. Es izlīdzos ar pašrakstītu l10n, kur varu atsekot, kur kādi tulkojumi ir izmantoti, ar visu placeholderu pārsēšanu un pārējo figņu. Nemaz nerunājot par to, ka es kešošanu varu arī kontrolēt kā man labpatīkas un iebāzt kur man labpatīkas, un šārēt kešu starp cik kastēm man labpatīkas. Quote Link to comment Share on other sites More sharing options...
codez Posted July 4, 2013 Report Share Posted July 4, 2013 Internationalization is the design and development of a product, application or document content that enables easy localization for target audiences that vary in culture, region, or language. Localization refers to the adaptation of a product, application or document content to meet the language, cultural and other requirements of a specific target market (a locale). Visdrīzāk tā tev ir i18n, nevis l10n bibliotēka. Quote Link to comment Share on other sites More sharing options...
F3llony Posted July 4, 2013 Report Share Posted July 4, 2013 Kur tu redzi, ka es teicu, ka runa ir par bibliotēku? i18n un l10n vispār ir darbību kopums lai nodrošinātu internacionalizāciju un panāktu lokalizāciju 1. Valoda 2. Skaitļu/datumu formāts 3. Brīvi pārmaināms saturs/mēdiji. pat izkārtojums Bet daļēji tev taisnība, vairāk sanāk i18n un l10n kopā. Quote Link to comment Share on other sites More sharing options...
codez Posted July 4, 2013 Report Share Posted July 4, 2013 (edited) G12n - globalization P.S. Bet, cik es saprotu, i18n ir process, kurā aplikācijā tiek ieliktas tulkošanas iespējas un attiecīgi bibliotēkas (gettext, utml.) ir i18n bibliotēkas, kuras ļauj ielikt aplikācijā šīs iespējas. l10n ir process, kurā paši tulkojumi tiek sarakstīti un tas vairāk ir manuāls process. l10n bibliotēka būtu tāda bilbiotēka, kas pati nodrošina automātisku satura tulkošanu (piemēram ar google translate). Edited July 4, 2013 by codez Quote Link to comment Share on other sites More sharing options...
F3llony Posted July 4, 2013 Report Share Posted July 4, 2013 o20n - offtopicization. Quote Link to comment Share on other sites More sharing options...
codez Posted July 4, 2013 Report Share Posted July 4, 2013 o13n - skaitlis norāda burtu skaitu statp pirmo un pēdējo. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 4, 2013 Report Share Posted July 4, 2013 Haha. :D Quote Link to comment Share on other sites More sharing options...
jurchiks Posted July 4, 2013 Report Share Posted July 4, 2013 (edited) Kādus kešošanas risinājumus jūs izmantojat tādām lietām? Kaut ko tipa Redis? Es arī patreiz taisu lapu, kurai ir tulkojumi un pāris citas lietas, tulkojumus patreiz nekešoju, nolasu no faila katru reizi (nav tādi, kas mainās, varu atļauties failā), "citas lietas" kešoju failos (pieprasījums no db aizņem ilgu laiku, statistika). Edited July 4, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
codez Posted July 4, 2013 Report Share Posted July 4, 2013 Kādus kešošanas risinājumus jūs izmantojat tādām lietām? Kaut ko tipa Redis? Izmantoju scala, play un tā kā veidojot projektu play, tu vari programmēt ne tikai MVC ietvaros, bet pavisma ērti vari izveidto globālus mainīgos, kas pieejami starp requestiem, tad ideja sekojoša - uz servera startup hooka ielādēju no db visus tulkojumu hašmapā (operatīvajā atmiņā). un attiecīgajā vietā attiecīgā funkcija ņem datus no šī hašmapa. PHP laikā darīju tā, ka katru templeitu prekompilēju katrai valodai ar jau no db paņemtiem tulkojumiem. Respektīvi, ja ir index.tpl.php templeits, tad, to prekopilēju index.en.tpl.php, index.lv.tpl.php, utt. Ja izmainu templeitu, tulkotie templeiti tiek prekompilēti, ja izmainu tulkojumus db, tad jāpārkompilē visi templeiti. Parkompilēšana protams notika uz pirmo requestu uz šo templeitu. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 4, 2013 Report Share Posted July 4, 2013 Tulkojumi nāk no MO faila (compilēts PO). Pie requesta, kad templiets tiek saveidots kopā, arī tulkojmi tiek ielikti vietās. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted July 4, 2013 Report Share Posted July 4, 2013 (edited) Nja, man visa templeita kešošana neder (man tādu templeitu vēl nav (vai varbūt ir, es nemaz nezinu, kāda ir templeitu definīcija, man ir viewi) + lielākā daļa lapas ir dinamiska), man interesē tikai atsevišķu datu kešošana (PHP, ne Java, lai cik arī noderīgs tevis, codez, teiktais nebūtu, es to vienalga nevaru pielietot savam saitam. Ar Javu apieties māku, ja saits būtu Javā, man jautājumu par kešošanu 100% nebūtu). Edited July 4, 2013 by jurchiks Quote Link to comment Share on other sites More sharing options...
daGrevis Posted July 4, 2013 Report Share Posted July 4, 2013 Jā, man viss ir statisks. Nezinu kāpēc izmantoju Python....:( 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.