Rumah >pembangunan bahagian belakang >tutorial php >phpmaster | Lokalisasi Aplikasi PHP Bahagian 3: Nov 2011 - SitePoint

phpmaster | Lokalisasi Aplikasi PHP Bahagian 3: Nov 2011 - SitePoint

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2025-03-02 08:35:10876semak imbas

Artikel ini menyelidiki teknik canggih untuk menggunakan perpustakaan GetText di PHP, yang memberi tumpuan kepada kawasan sandaran, penukaran locale, dan domain mesej yang mengatasi.

Konsep Utama:

  • Locale lalai: Menetapkan bahasa lalai aplikasi anda pada awal pembangunan. Menggunakan rentetan locale lalai sebagai msgids dalam domain lain menyelaraskan terjemahan dan meningkatkan prestasi. Elakkan menterjemahkan bahasa lalai kepada dirinya sendiri.
  • Switching Locale: Mudah beralih tempatan dengan mengarahkan getText untuk menggunakan domain yang berbeza. Ini biasanya dikendalikan pada permulaan aplikasi atau dalam fail yang disertakan.
  • domain overriding: Gunakan dgettext() untuk menukar antara domain terjemahan berganda. Ingat bahawa gettext() hanya menggunakan satu domain lalai, ditetapkan melalui textdomain(), manakala dgettext() memerlukan domain untuk menjadi pra-terikat menggunakan bindtextdomain().
  • manfaat penyetempatan php: penyetempatan php adalah penting untuk jangkauan global, meningkatkan pengalaman pengguna dan akses pasaran.

Struktur direktori dan sandaran sandaran:

Struktur direktori optimum mengelakkan terjemahan yang tidak perlu dari locale lalai (mis., En_us). Daripada menggunakan pengenal seperti "hello_world", gunakan rentetan bahasa lalai sebenar secara langsung sebagai

. Pendekatan ini meminimumkan overhead pemprosesan. msgid

Imej di bawah menggambarkan struktur direktori sampel:

phpmaster | Localizing PHP Applications Part 3: Nov 2011 - Sitepoint Contoh Fail Terjemahan (

dan disusun

): .po .mo French ():

fr_FR Bahasa Sepanyol ():

<code>#Test token 1
msgid "Hello World!"
msgstr "Bonjour tout le monde!"

#Test token 2
msgid "Testing Translation..."
msgstr "Test de traduction..."</code>

arabic (es_ES):

<code>#Test token 1
msgid "Hello World!"
msgstr "¡Hola mundo!"

#Test token 2
msgid "Testing Translation..."
msgstr "Prueba de traducción..."</code>

ar_EG Switching locales:

<code>#Test token 1
msgid "Hello World!"
msgstr "!أهلا بالعالم"

#Test token 2
msgid "Testing Translation..."
msgstr "...اختبار الترجمة"</code>

Fail menguruskan pemilihan locale menggunakan parameter atau sesi:

penggunaan sampel dalam locale.php:

<?php
session_start();

$language = isset($_GET["lang"]) ? $_GET["lang"] : (isset($_SESSION["lang"]) ? $_SESSION["lang"] : "en_US");
$_SESSION["Language"] = $language;

$folder = "Locale";
$domain = "messages";
$encoding = "UTF-8";

putenv("LANG=" . $language);
setlocale(LC_ALL, $language);

bindtextdomain($domain, $folder);
bind_textdomain_codeset($domain, $encoding);

textdomain($domain);
?>

mengakses test-locale.php akan mengeluarkan terjemahan Perancis.

<?php
require_once "locale.php";

echo _("Hello World!"), "<br></br>";
echo _("Testing Translation...");
?>

Mengatasi domain semasa: test-locale.php?lang=fr_FR

Gunakan untuk mengakses terjemahan dari domain yang berbeza (mis., "Kesilapan"). Secara penting, ingat untuk mengikat domain ini menggunakan dalam

:

dgettext() bindtextdomain() dalam locale.php:

<?php
// ... (locale.php code) ...
bindtextdomain("errors", "Locale");
bind_textdomain_codeset("errors", "UTF-8");
// ... (rest of locale.php code) ...
?>

Ini akan menterjemahkan "ralat mendapatkan kandungan" dengan betul dan "data penjimatan ralat" jika terjemahan wujud dalam domain "ralat" untuk lokasi yang dipilih. test-locale.php

<?php
// ... (include locale.php) ...
echo "<br></br>";
echo dgettext("errors", "Error getting content"), "<br></br>";
echo dgettext("errors", "Error saving data");
?>
Ringkasan dan Soalan Lazim:

Bahagian ini meringkaskan pembelajaran utama dan memberikan jawapan kepada soalan-soalan yang sering ditanya mengenai penyetempatan PHP, yang meliputi topik seperti amalan terbaik, mengendalikan plural, bahasa kanan ke kiri, dan menguruskan terjemahan. Bahagian FAQ adalah luas dan memberikan maklumat mendalam mengenai pelbagai aspek penyetempatan PHP. Bahagian FAQ asal telah dikekalkan secara keseluruhannya.

Atas ialah kandungan terperinci phpmaster | Lokalisasi Aplikasi PHP Bahagian 3: Nov 2011 - SitePoint. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Menghantar e -mel dengan phpArtikel seterusnya:Menghantar e -mel dengan php