Tujuannya adalah untuk menawarkan tombol / pilih drop-down atau serupa untuk mengganti antarmuka publik 1) bahasa dengan cepat.
Apa yang saya cari
- Plugin atau Kode Tema ...
- ... atau Gagasan
- Menggunakan work-around with
load_textdomain()
akan dihargai untuk meninggalkan terjemahan ke file .po / .mo - Gagasan tentang cara mem-parsing string ke antarmuka (mis. Ajax / plain php / ini, json, file xml) saat tidak bergantung pada beberapa fungsi domain teks
catatan:
1) Ini bukan tentang penerbitan dalam berbagai bahasa.
2) Saya tidak perlu kode untuk membuat drop-down / tombol / yang sebenarnya. Ini hanya tentang kode / sistem yang memberikan string untuk UI.
Terima kasih!
multi-language
translation
language
kaisar
sumber
sumber
WPLANG
konstanta bisa menjadi pilihan. Saya melakukan itu di dua situs dengan konten multibahasa di mana plugin multilingualitas gagal memicu terjemahan UI. Jika itu harus menjadi solusi AJAX / JSON, saya tidak akan tahu bagaimana cara membantu.Jawaban:
Sejauh ini cara terbaik (termudah) adalah menggunakan filter lokal (di dalam
get_locale()
).Pertama-tama, atur fungsi cepat untuk mengambil bahasa yang berbeda untuk digunakan pada
locale
filter.Saya meninggalkan ini sebagai fungsi global, mungkin berguna ...? Sisa plug-in yang saya bungkus di dalam kelas.
Ini menciptakan drop-down bahasa yang memungkinkan dari mana Anda dapat memilih.
Kekurangannya
wp-content/languages
file formulirxx_xx.mo
. Jika bukan dari bentuk itu (tidak semua file .mo), plug-in tidak akan menerimanya!$locale
melakukan hal lain selain bahasa? Jika demikian, masih mungkin untuk mendapatkan lokasi yang sama, tetapi berikan terjemahan alternatif. Ini jauh lebih berantakan ...Kode
sumber
'wp-admin/includes/ms.php'
memicu pemberitahuan admin untuk memperbarui situs jaringan Anda (ketika Anda adalah satu situs!). Mungkinformat_code_lang()
perlu digandakan di dalam fungsi khusus.Jika Anda dapat menerima penyegaran halaman, mendefinisikan ulang
WPLANG
konstanta bisa menjadi pilihan. Saya melakukan itu di dua situs dengan konten multibahasa di mana plugin multilingualitas gagal memicu terjemahan UI.sumber
http://example.com/language/whatever/
benar, bukan?$_SESSION
variabel untuk memicu pendefinisian ulangWPLANG
pada pageload berikutnya harus dilakukan. Jika Anda ingin mereplikasi ini di situs multibahasa, catat bahwa seperti komentar pada pastebin, kode di dalamnya berfungsi dengan WPML, versi gratis terakhir. Itu tidak dapat direplikasi 1 ke 1 dengan qTranslate, karena URI itu bukan fisik tetapi ditulis ulang melaluimod_rewrite
modul apache. Saya yakin itu bisa disesuaikan, tetapi tidak akan berfungsi "sebagaimana adanya".$_SESSION
) Masalah saya adalah bahwa afaik mereka cukup sulit untuk ditangani dan hal-hal antara global dan array dapat bercampur dengan mudah. Jadi, jika saya mencoba mencari cara untuk berubahWPLANG
, maka saya perlu menemukan cara yang kuat untuk memberikannya dari satu permintaan ke yang lain. Mungkinadd_query_arg/get_query_var
akan melakukan trik ...http://www.qianqin.de/qtranslate/
adalah yang kamu butuhkan ...
Edit I - setelah komentar. Pertama - terima kasih untuk semua yang berkontribusi dalam torrent downvotes. (Inilah yang terjadi ketika seseorang tidak cukup sering mengunjungi: -)
now - Fungsi yang menangani switch adalah dalam qtranslate-core. (dimulai pada baris 80 lebih atau kurang - tergantung pada versi yang Anda inginkan.)
Karena Anda tidak dapat melihat kode BUKAN OOP, dan saya sekarang tidak memiliki hal lain untuk dilakukan - saya memerlukan waktu 10 menit untuk mensintesis, parafrase mengkompilasi non-OOp itu dengan kode non-OOP lain untuk Anda.
(Maaf, - skool tua primitif di sini)
Dengan anggapan saya memahami pertanyaan && Dengan asumsi Anda menginginkan kode untuk admin && dengan asumsi Anda akan tahu cara mengirimnya ke ujung depan jika Anda ingin && dengan asumsi Anda memahami bahwa kode tersebut tidak optimal:
KETERANGAN:
1 - Ini dibangun dalam 10 menit. pada mesin lokal saat di bandara. Alasan mengapa saya mengatakan ini adalah bahwa satu-satunya instalasi wordpress yang tersedia yang saya miliki di sini sudah cukup tua. (2,9 saya pikir).
Ini berarti bahwa mungkin menu bahasa akan muncul DI BAWAH div bantuan kontekstual, karena fakta bahwa struktur div baru baru-baru ini diperkenalkan (dengan tab) - tetapi tetap harus berfungsi. (Saya berjanji untuk kembali lagi nanti jika saya punya waktu)
Jika saya punya lebih banyak waktu (dan kode wordpress baru di sini) saya mungkin akan mengintegrasikan ini di admin-bar baru dengan
add_action( 'admin_bar_menu', 'k99_add_language_menu_2', 1000 );
(saya sudah berjanji untuk kembali ke ini)2 - Anda harus memiliki file bahasa yang terdaftar di dalam folder "bahasa" di wp-content (lebih baik ??) atau wp-include. mengenai hal ini - kode hanya merupakan bukti konsep - dan tentu saja jika seseorang memiliki lebih banyak waktu menu harus dibangun secara dinamis dan tidak suka dilakukan di sini.
3 - WPLANG Anda dalam konfigurasi harus kosong. Saya tidak yakin ini akan berfungsi pada versi wp yang lebih baru jika bahasa sudah diatur.
4 - ini adalah bukti sederhana konsep yang disintesis dan diparafrasekan yang dibangun di atas apa yang terlihat dalam kode qtranslate (juga versi lama) - sehingga sebagian besar hal dilakukan dengan cara "cepat", belum tentu cara "benar" (seperti menambahkan JS , tidak ada domain teks khusus, dll.).
EDIT II
seseorang beruntung hari ini! (Penundaan penerbangan )
Karena Anda mencari "ide" untuk pendekatan, berikut ini adalah salah satu yang terkenal.
Ini tidak akan cocok dengan plugin, atau sebenarnya lingkungan non-eksklusif lainnya, tetapi mungkin memberi Anda arahan lain bagaimana menangani "hal-hal Browser".
Ini akan memungkinkan seseorang untuk mendapatkan bahasa dengan GET seperti:
<a href="index.php?lang=de">German</a>
atau<a href="whatever.php?lang=ml">my Language</a>
Untuk menggunakan, Anda dapat membuat kode (sebut saja wp-langswitch.php)
sekarang, di wp-config, sesaat sebelum konstanta WPLANG, kita perlu memasukkan kode kita.
Sekarang - jelas akan lebih baik untuk menambahkan beberapa cookie ke dalam campuran untuk menyimpan bahasa.
EDIT III
Saya berjanji untuk kembali ke sini nanti - inilah caranya (dengan cara yang sangat tidak benar dan primitif) dapat diintegrasikan di dalam admin-bar (alih-alih kontekstual-bantuan-menu)
Cukup ganti fungsi ini (atau tambahkan) ke kode lama (non-plugin NON - OOP yang asli).
Seperti yang saya katakan, saya tidak memiliki instalasi wordpress baru di sini di lokal yang memiliki fitur admin-bar - tetapi harus bekerja.
(dan sekali lagi, itu mungkin tidak berfungsi ... tapi saya yakin Anda dapat memperbaikinya jika Anda benar-benar ingin - bahkan mengira itu bukan OOP) :-)
harus lari sekarang. semoga membantu entah bagaimana.
EDIT IV - ubah edit III menjadi verion yang berfungsi untuk bilah menu admin (setidaknya di wp 3.4 saya)
karena saya tidak menginstalasi 3.4 - dan sekarang saya kembali dan saya melakukannya - saya telah mengedit solusi Edit III - dan itu berfungsi untuk saya.
Tentang upvotes, saya tidak peduli. Dan saya tidak memerlukan "karunia" (apa pun itu ..) Itu hanya untuk latihan yang Anda harus berikan kepada penulis qTranslate. :-) terlepas dari kenyataan bahwa itu bukan OOP - ini adalah plugin genious dengan banyak hal untuk dipelajari di banyak area. mengingat "kapan" dari rilis plugin ini, itu bahkan luar biasa. sepadan dengan upaya yang tak terlukiskan membaca kode NON OOP - bahkan jika tidak - OOP. Dan bahkan jika itu tidak indentasi benar (tuhan yang baik!).
sumber
require()
. Anda tidak dapat menggunakandefine()
string yang sama dua kali. Sunting III memiliki beberapa masalah dengan bahasa. Memilihen_US
tidak akan melakukan apa-apa (?), Tetapide_DE
akan mengaturnya keEnglish
;). Singkatnya: Saya memberi hadiah dan memberikannya kepada (misalnya StephenHarris) untuk jawaban yang lengkap dan berhasil. Jika Anda mendapatkan sesuatu seperti itu, harap perbarui jawaban Anda (pendekatan cookie menarik) dan saya dapat menambahkan dan memberi Anda hadiah.