Jump to content
php.lv forumi

Gettext un mājas lapas tulkojums.


Maris-S

Recommended Posts

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.

Link to comment
Share on other sites

  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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ā. 

Link to comment
Share on other sites

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 by codez
Link to comment
Share on other sites

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 by jurchiks
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by jurchiks
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...