PHP gettext işlevi yalnızca döner çevrilmemiş dize orignal

3 Cevap php

Benim web yerelleştirme desteği eklemek gettext kullanmaya çalışıyorum. Ben kurulum nasıl gettext için çeşitli kılavuzlar takip ettik ve şu yapmış:

Benim proje dir kök aşağıdaki dosyaları ve dizinleri yarattık:

test.php

locale/
  de_DE
    LC_MESSAGES
       messages.mo
       messages.po

  en_GB
    LC_MESSAGES
       messages.mo
       messages.po

I Poedit üzerindedir. Po ve mo dosyaları oluşturmak için kullandım. Ben Unix satır sonları, UTF-8 kullanmak ve buna göre dil ve ülke dava yaptık.

Daha sonra aşağıdaki kodu sahip olduğu test.php adında bir PHP komut dosyası oluşturduk:

<?php

  define('LOCALE', 'de_DE');

  // Set up environmental variables
  putenv("LC_ALL=" . LOCALE);
  setlocale(LC_ALL, LOCALE);
  bindtextdomain("messages", "./locale");
  bind_textdomain_codeset("messages", LOCALE .".utf8");
  textdomain("messages");

  die(gettext('This is a test.'));

?>

Ben, "Bu bir denemedir." Metnini ithal ettik poEdit ve çeviri verilen ve kurtardı.

Ama nedense dnm.php script sadece çıkış çevrilmemiş orijinal metni olacaktır. Bu çeviri dosyaları için sürümünü yüklemek için reddediyor.

It's worth noting that the server is running Linux (Ubuntu), Apache 2.2.11 and PHP 5.2.6-3ubuntu4.5. I've checked phpinfo() and gettext is enabled.

Birisi bana yardımcı olabilir misiniz? Teşekkürler.

3 Cevap

Sizin sorun sisteminde bir eksik yerele ilgili olabilir. Alman yerel yüklemek ve her şeyi çalışması gerekir Lütfen:

sudo apt-get install language-pack-de-base

Daha sonra, aşağıdaki komutu ve Alman yerellerde görmelisiniz:

locale -a

.. Bundan sonra, aşağıdaki kodu sen hala açıklanan dizin yapısına po ve mo dosyaları varsayarak, çalışması gerekir:

  <?php

  setlocale(LC_ALL, 'de_DE.UTF-8');
  bindtextdomain('messages', './locale');
  textdomain('messages');

  echo gettext('This is a test.');

  ?>

Evet, evet, PHP'nin gettext yine destekliyoruz. Sadece bir ipucu, bu ya da sizin için yararlı olmayabilir olabilir:

Çünkü PHP'nin korkunç gettext uygulanması, WordPress gibi pek çok açık kaynak projeleri için bu bir açık: http://savannah.nongnu.org/projects/php-gettext/ ve tamamen özgün sürümünü bypass.

Benim projelerinden biri de, bunu yaptım, ve ben bir şey kaçırmak söyleyemem.

Ticari projeler için Dezavantajı: GPL bulunuyor.

aşağıdakileri deneyin

<?php

  define(LC_MESSAGES, 'de_DE');

  // Set up environmental variables
  putenv("LANGUAGE=de_DE");
  bindtextdomain("*", dirname(__FILE__).'/locale');
  bind_textdomain_codeset("messages", 'UTF-8');      

  die(gettext('This is a test.'));

?>