Dominik Marczuk

Dominik Marczuk Remote Team Lead w
Sonalake

Temat: problem z f-cją translate()

Mam taki głupi problem z funkcją translate(). Mianowicie, Zend wydaje się tłumaczyć mojego stringa dwukrotnie. Używam klucza "KEY_REGION", a tłumaczenie w pliku .po to "Region". Gdzieś indziej w kodzie mam również klucz "Region" z tłumaczeniem na "Województwo". Teraz, gdy używam klucza "KEY_REGION", Zend wyświetla "Województwo" - czyli jakby tłumaczył klucz i sprawdzał, czy tłumaczenie samo nie jest kluczem gdzie indziej w katalogu tłumaczeń :).

O ile problem jest do obejścia (wystarczy wybrać inny klucz dla "Region"->"Województwo"), o tyle samo zachowanie jest kompletnie bezsensowne. Spotkaliście się z czymś takim?

Używam ZF 1.10.8

Temat: problem z f-cją translate()

wyciągnij to co do wersji minimalnej
pokaż zawartość plików które wczytujesz
sposób w jaki je wczytujesz
sposób w jaki używasz
będzie łatwiej zdebugować, ewentualnie podpowiedzieć co źle robisz
Dominik Marczuk

Dominik Marczuk Remote Team Lead w
Sonalake

Temat: problem z f-cją translate()

Ciężka sprawa będzie :). Projektu w sumie nie znam (kilkaset tysięcy linii kodu - z czego ja jestem autorem może 0,5%), ja tam tylko przygotowuję wersje językowe i CSS :).

Wiem tyle: projekt korzysta z Zend_Translate, konkretnie adaptera Gettext. Ja edytuję plik .po i kompiluję do .mo za pomocą poedit. Tu się moja znajomość rzeczy kończy :).

No ale uprośćmy. Załóżmy, że mam taki kod w jakimś tam widoku:

<?php echo $this->translate('foo'); ?>
<?php echo $this->translate('bar'); ?>


a w pliku .po coś takiego:

#: application/modules/costam/views/scripts/index.phtml:1
msgid "foo"
msgstr "bar"
#: application/modules/costam/views/scripts/index.phtml:2
msgid "bar"
msgstr "baz"


To wywołanie widoku w aplikacji daje mi taki wynik:

bazbaz

konto usunięte

Temat: problem z f-cją translate()

Działa Ci już?

Wywołanie i źródło .po wyglądają OK, może kompilacja nie idzie jak trzeba? Może kompilujesz plik do innego niż podłączasz?
Dominik Marczuk

Dominik Marczuk Remote Team Lead w
Sonalake

Temat: problem z f-cją translate()

Jakub Kułak:
Działa Ci już?

Wywołanie i źródło .po wyglądają OK, może kompilacja nie idzie jak trzeba? Może kompilujesz plik do innego niż podłączasz?

Nie działa. Jak pisałem na początku: translate() chyba tłumaczy stringa, a jeśli tłumaczenie jest kluczem dla innego, to ponownie go tłumaczy. Bez sensu, ale nie widzę innego wytłumaczenia.

Obszedłem to używając innych kluczy (KEY_FOO -> bar, KEY_BAR -> baz), ale i tak nie jest to coś, co mnie w 100% zadowala.

Następna dyskusja:

problem z Zend_Translate




Wyślij zaproszenie do