Pertama, gettext
adalah cara yang baik untuk pergi, jadi jangan menolak jika tidak terdengar mudah pada awalnya; Namun ada opsi lain yang juga berguna untuk diketahui. Sebelum menjelaskan itu, mari kita lihat dulu saran Anda:
Dalam- array
cara Anda melakukan ini, Anda memiliki solusi yang cukup mudah. Hal yang baik adalah Anda dapat menyimpan terjemahan Anda dalam penyimpanan data, kemudian memuatnya ke dalam skrip PHP Anda sebagai sebuah array, dan hanya itu. Namun jika Anda ingin menyimpan array Anda secara statis dalam file PHP, maka mengeditnya membutuhkan a) programmer PHP atau pengguna berpengalaman yang akrab dengan sintaks PHP, hanya untuk mengedit file b) menyinkronkan antara bahkan empat atau lima file bahasa yang berbeda bisa sangat menjengkelkan dan rentan terhadap kesalahan.
Yang perlu Anda pertimbangkan di sini adalah: Bagaimana nantinya dapat menambahkan elemen baru ke file bahasa? Dapatkah saya menyerahkannya kepada penerjemah atau harus ada programmer PHP?
Cara Anda variable
melakukannya tidak praktis. Mengapa? Saya berasumsi Anda akan memiliki beberapa fungsi setidaknya dalam aplikasi Anda, bukan? Maka Anda harus melewati semua variabel ini ketika Anda memanggil fungsi, atau Anda perlu global
mereka. Jika Anda pikir Anda akan memiliki lebih dari sepuluh variabel seperti ini, maka saya sangat menyarankan Anda untuk melakukan ini. Mungkin ada konflik nama juga - Anda berpotensi menimpa nilai variabel lain dengan nama yang sama, namun ini bisa diselesaikan dengan menambahkan awalan bahkan sesederhana garis bawah, jadi Anda akan memiliki $_welcome
contoh. Bagaimanapun, jika aku jadi kamu, aku tidak akan memikirkannya; Jangan lakukan itu.
Salah satu cara yang baik untuk melakukannya adalah dengan mendefinisikan Konstanta dengan awalan. Jadi misalnya di Anda, en.lang.php
Anda akan memiliki sesuatu seperti define( 'LABEL_WELCOME', 'Welcome' );
dan di Anda, no.lang.php
Anda akan memiliki define ( 'LABEL_WELCOME', 'Velkommen' );
. Hal yang baik tentang menggunakan konstanta alih-alih variabel adalah bahwa mereka selalu tersedia di skrip Anda. Jadi, Anda tidak perlu menyuntikkan atau mengglobal mereka. Dibandingkan dengan kedua array dan variabel, mereka lebih cepat karena cara PHP menangani mereka - mereka mengambil lebih sedikit ruang dalam memori. Kekurangannya adalah Anda tidak bisa meneruskannya ke penerjemah, jadi sekali lagi Anda membutuhkan pengembang PHP. Sinkronisasi antar file juga bisa sedikit menyakitkan.
Pilihan lainnya adalah memiliki Fungsi atau Kelas / Metode untuk mengambil terjemahan. Ini akan menjadi kurang efisien - namun saya rasa Anda tidak perlu optimasi mikro sama sekali, tetapi keuntungan tambahannya adalah Anda dapat menerapkan logika khusus saat mengambil terjemahan. Sebagai contoh, bayangkan suatu hari manajer proyek Anda yang tercinta mendatangi Anda untuk menanyakan apakah Anda dapat menyamarkan semua teks itu menjadi huruf besar. Anda tidak dapat menolak untuk melakukannya, jadi memiliki fungsi di antaranya dapat banyak membantu Anda ketika Anda perlu menerapkan / mengubah pola untuk semua terjemahan Anda.
Untuk membungkusnya:
Pikirkan tentang bagaimana para penerjemah dapat menggunakannya dan menghasilkan solusi KISS yang berfungsi untuk mereka.
Pikirkan tentang bagaimana Anda dapat tetap menyinkronkan antara berbagai bahasa.
Pikirkan jika terjemahan yang sama mungkin diperlukan, katakanlah untuk aplikasi seluler. Solusi lintas platform dapat menghemat waktu Anda. Jangan abaikan JSON dan Database biasa.
Pikirkan tentang bagaimana Anda dapat menerapkan / mengubah logika saat mengambil terjemahan.
Lupa kinerja. 99,9% kali Anda tidak akan melakukan optimasi mikro seperti Konstan vs Variabel vs. Panggilan Fungsi . Saya menganggap waktu Anda sebagai pengembang / staf lebih mahal daripada waktu prosesor.
Perbarui # 1
Ya ampun, saya mengirim jawaban untuk pertanyaan lama tahun. Kenapa tidak ada yang mengatakan sesuatu di sini? Kami membutuhkan peringatan untuk kasus ini.
Perbarui # 2
Di sisi kanan dikatakan itu adalah pertanyaan lama; Namun sudah ditanyakan dua tahun lalu! Semuanya menyesatkan di sini!