Pelokalan dalam php, praktik atau pendekatan terbaik?

11

Saya Melokalkan aplikasi php saya. Saya memiliki dilema dalam memilih metode terbaik untuk mencapai hal yang sama.

Metode 1: Saat ini saya menyimpan kata-kata untuk dilokalisasi dalam array dalam file php

<?php

$values = array (
                        'welcome' => 'bienvenida'
                ); 

?>

Saya menggunakan fungsi untuk mengekstrak dan mengembalikan setiap kata sesuai dengan kebutuhan

Metode 2: Haruskah saya menggunakan file txt yang menyimpan string yang sama?

<?php
$welcome = 'bienvenida'; 
?>

Pertanyaan saya adalah mana yang merupakan metode yang lebih baik, dalam hal kecepatan dan upaya untuk mengembangkan yang sama dan mengapa?

Sunting: Saya ingin tahu metode mana dari dua yang lebih cepat dalam merespons dan mengapa itu terjadi? juga, setiap perbaikan pada kode di atas akan dihargai !!

sree
sumber
2
Sudahkah Anda mempertimbangkan gettext?
sagarchalise
@sagarchalise saya telah memeriksanya, tetapi saya ingin membangun metode saya sendiri, saya, dan salah satu dari dua di atas. Jadi, saya ingin tahu metode mana yang bekerja lebih cepat dan mana yang lebih dapat diandalkan! :)
sree
Jika Anda ingin tahu dalam hal kecepatan, lakukan saja beberapa test case. Apa yang berjalan lebih cepat, 1M kali metode pertama atau kedua?
Francisco Presencia
2
Jangan menemukan kembali roda yang berfungsi dengan baik.
gbjbaanb

Jawaban:

10

PHP memiliki kemungkinan besar untuk pelokalan. Cara yang paling umum tampaknya gettext - tutorial ini menunjukkan cara menggunakannya.

Sejak PHP 5.3 ada juga intl yang menawarkan lebih banyak fitur (untuk memformat angka, tanggal dan mata uang tergantung pada lokal misalnya).

oezi
sumber
Terima kasih atas jawaban Anda, tetapi, dapatkah saya tahu dari metode di atas mana yang lebih baik untuk membangun dalam hal kecepatan dan keandalan.
sree
10

Pertama, gettextadalah 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- arraycara 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 variablemelakukannya 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 globalmereka. 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 $_welcomecontoh. 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.phpAnda akan memiliki sesuatu seperti define( 'LABEL_WELCOME', 'Welcome' );dan di Anda, no.lang.phpAnda 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:

  1. Pikirkan tentang bagaimana para penerjemah dapat menggunakannya dan menghasilkan solusi KISS yang berfungsi untuk mereka.

  2. Pikirkan tentang bagaimana Anda dapat tetap menyinkronkan antara berbagai bahasa.

  3. Pikirkan jika terjemahan yang sama mungkin diperlukan, katakanlah untuk aplikasi seluler. Solusi lintas platform dapat menghemat waktu Anda. Jangan abaikan JSON dan Database biasa.

  4. Pikirkan tentang bagaimana Anda dapat menerapkan / mengubah logika saat mengambil terjemahan.

  5. 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!

Mahdi
sumber
Anda terlihat seperti penjelajah waktu kembali ke waktu :) tnx untuk jawabannya!
sree
3
@say Ya! Saya datang dari 4 April 2014! Jika Anda membeli beberapa saham Facebook atau WhatsApp pada 2012, Anda tidak perlu menulis kode PHP pada 2014!
Mahdi
1
rofl setuju !!!
sree