Getteks PHP Tidak Berfungsi

Ini file ./locale/fr/LC_MESSAGES/messages.po saya:

msgid "NO GOOD"
msgstr "IT WORKED!"

Perintah yang digunakan untuk menghasilkan file .mo:

$ msgfmt -o locale/fr/LC_MESSAGES/messages.mo locale/fr/LC_MESSAGES/messages.po

File PHP saya (dijalankan melalui CLI, untuk tujuan pengujian, sebagai root).

<?php 
    bindtextdomain('messages','./locale');
    textdomain('messages');
    setlocale(LC_MESSAGES, 'fr');
    echo gettext("NO GOOD");

Inilah hasil saya:

$ NO GOOD

Info PHP:

GetText Support => enabled

Adakah ide mengapa ini tidak berhasil?


person Ian    schedule 30.09.2012    source sumber
comment
Petunjuk saat bekerja dengan gettext, selalu periksa nilai pengembalian fungsi.   -  person Ja͢ck    schedule 01.10.2012
comment
Ada beberapa alasan mengapa hal ini mungkin tidak berhasil. Sebagai permulaan, Anda harus menentukan rangkaian karakter file MO Anda menggunakan bind_textdomain_codeset(). Anda juga harus memastikan bahwa file lokal yang sesuai telah diinstal di sistem Anda (dengan asumsi Anda menggunakan server berbasis Linux), dan juga bahwa file lokal ini memiliki rangkaian karakter yang benar. Lihat artikel ini untuk detail selengkapnya: blog.terresquall.com/2020 /09/pemecahan masalah-php-gettext   -  person John Doe    schedule 06.09.2020


Jawaban (2)


Ternyata alasannya tidak berfungsi adalah lokal yang saya pilih harus dikenali oleh sistem.

Dalam kasus saya, fr bukan lokal yang valid, saya harus memilih fr_FR.UTF-8 yang dikenali sistem...

person Ian    schedule 30.09.2012
comment
Sekadar informasi, fungsi setlocale() akan mengembalikan false jika lokal yang Anda tentukan tidak dikenali. Returns the new current locale, or FALSE if the locale functionality is not implemented on your platform, the specified locale does not exist or the category name is invalid. - person Gavin; 23.02.2014

  1. pastikan bahasa didukung
  2. instal gettext dan aktifkan di php.ini
  3. periksa format po yang benar (harus ada headernya)
  4. pastikan mbstring.internalcoding disetel ke UTF-8 ()batalkan komentar untuk utf8 di php.ini)
  5. restart php dan server web
person Maskipaps    schedule 05.10.2015