Do tej pory jedynymi 2 dobrymi rzeczami, które widziałem o korzystaniu z gettext zamiast z tablic, jest to, że nie muszę tworzyć "pod-tablicy" "(lub jakkolwiek to się nazywa). I nie muszę tworzyć folderu dla "domyślnego języka".Używanie PHP Gettext Extension vs PHP Arrays w wielojęzycznych witrynach?
Czy są inne plusy i minusy korzystania z tablic gettext i php na stronach wielojęzycznych?
UŻYCIEM GetText:
hiszpański/messages.po:
#: test.php:3
msgid "Hello World!"
msgstr "Hola Mundo"
index.php:
<?php echo _("Hello World!"); ?>
index.php język = hiszpański:
<?php echo _("Hello World!"); ?> turns to Hola Mundo
zastosowaniem układów PHP
lang.en.php
<?php
$lang = array(
"greeting" => "Hello World",
);
?>
lang.es.php
<?php
$lang = array(
"greeting" => "Hola Mundo",
);
?>
index.php:
<?php echo $lang['greeting']; ?> greeting turns to Hello World
index.php lang = hiszpanski
<?php echo $lang['greeting']; ?> greeting turns to Hola Mundo
(zaczynałem z gettext, ale to nie była obsługiwana w moim udostępnionym darmowy hosting Zymic. Nie chciałem używać Zend_translate, uznałem, że jest to zbyt skomplikowane dla mojego prostego zadania, więc w końcu skończyłem używając php define
, ale później ktoś powiedział mi, że powinienem używać tablic)
Kiedy używasz tablic, nadal można używać pladeholders printf, nie można? (Nie masz jednak liczby mnogiej) – middus
Tak, możesz. :) –
Własny gettext PHP jest naprawdę niepoprawny z przynajmniej mod_php. Nie tylko problem z buforowaniem, ale w przypadku niektórych odświeżeń tłumaczenia po prostu nie działają. Więc jest jeden prawie kropla w zamianie: [php-gettext] (https://launchpad.net/php-gettext/) Jest bardzo prosty w użyciu zamiast 'setlocale' używasz' _setlocale' i tak dalej ... – Ciantic