Pertanyaan Bagaimana Anda menangani terjemahan teks dengan markup?


Saya sedang mengembangkan dukungan multi-bahasa untuk aplikasi web kami. Kami menggunakan Pembantu Django sekitar gettext Perpustakaan. Semuanya ternyata sangat mudah, kecuali untuk pertanyaan bagaimana menangani kalimat yang mencakup markup HTML yang signifikan. Inilah contoh sederhana:

Please <a href="/login/">log in</a> to continue.

Berikut adalah pendekatan yang dapat saya pikirkan:

  1. Ubah tautan untuk menyertakan seluruh kalimat. Terlepas dari apakah perubahan adalah ide yang baik dalam hal ini, masalah dengan solusi ini adalah bahwa UI menjadi tergantung pada kebutuhan i18n ketika keduanya idealnya independen.

  2. Tandai seluruh string di atas untuk terjemahan (pemformatan disertakan). String terjemahan juga akan menyertakan HTML secara langsung. Masalah dengan ini adalah bahwa mengubah format HTML membutuhkan perubahan semua terjemahan.

  3. Erat pasangan beberapa terjemahan, kemudian gunakan interpolasi string untuk menggabungkan mereka. Untuk contoh, frasa "Harap% s untuk melanjutkan" dan "masuk" dapat ditandai secara terpisah untuk terjemahan, lalu digabungkan. "Masuk" dilokalkan, kemudian dibungkus dalam HREF, lalu dimasukkan ke dalam frasa yang diterjemahkan, yang membuat% s dalam terjemahan untuk menandai di mana tautan harus pergi. Pendekatan ini memperumit kode dan memutus kemerdekaan string terjemahan.

Apakah ada opsi lain? Bagaimana orang lain memecahkan masalah ini?


32
2017-11-07 22:31


asal


Jawaban:


Solusi 2 adalah yang Anda inginkan. Kirim mereka seluruh kalimat, dengan markup HTML yang disematkan.

Alasan:

  1. Alat terjemahan yang dominan, Trados, dapat mempertahankan markup dari korupsi yang tidak disengaja oleh seorang penerjemah.
  2. Trados juga dapat menerjemahkan teks secara otomatis yang telah dilihat sebelumnya, bahkan jika isi dari tag telah berubah (tetapi jumlah tag dan posisinya dalam kalimat adalah sama). Paling tidak, penerjemah akan memberi Anda diskon yang bagus.
  3. Styling bersifat spesifik lokal. Dalam beberapa kasus, cetak tebal tidak pantas dalam bahasa China atau Jepang, dan huruf miring lebih jarang digunakan dalam bahasa Asia Timur, misalnya. Penerjemah harus memiliki kebebasan untuk menyimpan atau menghapus gaya.
  4. Urutan kata adalah bahasa khusus. Jika Anda menyegmentasikan kalimat di atas menjadi fragmen, mungkin berfungsi untuk bahasa Inggris dan Prancis, tetapi dalam bahasa Mandarin atau Jepang urutan kata tidak akan benar ketika Anda menggabungkan. Untuk alasan ini, yang terbaik adalah melatih untuk mengeksternalisasi seluruh kalimat, bukan fragmen kalimat.

17
2017-11-21 17:58



2, dengan twist potensial.

Anda tentu bisa melokalisir seluruh string, seperti:

loginLink=Please <a href="/login">log in</a> to continue

Namun, tergantung pada perkakas dan grup lokalisasi Anda, mereka mungkin lebih suka Anda melakukan sesuatu seperti:

// tokens in this string add html links
loginLink=Please {0}log in{1} to continue

Itu akan menjadi metode yang saya sukai. Anda dapat menggunakan pola substitusi yang berbeda jika Anda memiliki alat pelokalan yang mengabaikan karakter tertentu. Misalnya.

loginLink=Please %startlink%log in%endlink% to continue

Kemudian lakukan substitusi di jsp, servlet, atau yang setara untuk bahasa apa pun yang Anda gunakan ...


11
2017-11-07 23:51



Disclaimer: Saya tidak berpengalaman dalam internasionalisasi perangkat lunak sendiri.

  1. Saya tidak berpikir ini akan baik dalam hal apapun - hanya memperkenalkan terlalu banyak kopling ...
  2. Selama Anda terus memformat file-file yang perlu diterjemahkan, ini bisa saja oke. Memberikan para penerjemah kemungkinan untuk memberikan arti kata-kata khusus (dengan membuat tautan atau mungkin menggunakannya <strong /> penekanan terdengar seperti ide yang bagus. Namun, terjemahan tersebut dengan (X) HTML mungkin tidak dapat digunakan di tempat lain dengan mudah.
  3. Ini terdengar seperti pekerjaan yang tidak perlu bagi saya ...

Jika itu saya, saya pikir saya akan pergi dengan pendekatan kedua, tetapi saya akan menempatkan URI ke dalam parameter pemformatan, sehingga ini dapat diubah tanpa harus mengubah semua terjemahan tersebut.

Please <a href="%s">log in</a> to continue.

Anda harus ingat bahwa Anda mungkin perlu mengajari penerjemah Anda pengetahuan dasar tentang (X) HTML jika Anda menggunakan pendekatan ini, sehingga mereka tidak mengacaukan markup Anda dan agar mereka tahu apa yang diharapkan dari teks yang mereka tulis . Bagaimanapun, pengetahuan tambahan ini mungkin mengarah pada markup semantik yang lebih baik, karena, seperti yang disebutkan di atas, teks dapat diterjemahkan dan dianotasi dengan (X) HTML untuk mencerminkan gaya penulisan lokal.


7
2017-11-07 22:54



Apa pun yang Anda lakukan menjaga seluruh kalimat sebagai satu string. Anda perlu memahami seluruh sentece untuk menerjemahkannya dengan benar.

Tidak semua kata harus diterjemahkan dalam semua bahasa: mis. dalam bahasa Norwegia tidak menggunakan "tolong" (kami bisa katakanlah "vær så snill" secara harfiah "bersikap sangat baik" tetapi ketika digunakan sebagai perintah kedengarannya terlalu kuat) sehingga orwegia yang benar akan menjadi:

  • "Logg inn for å fortsette" lit .: "Masuk untuk melanjutkan" atau
  • "Fortsett ved å logge inn" lit .: "Lanjutkan untuk masuk" dll.

Anda harus mengizinkan sepenuhnya mengubah pesanan, mis. dalam bahasa demo fiktif:

  • "Für kontinuer Loggen bitte ins" (jika memang nyata) menyala: "Untuk melanjutkan, silakan masuk"

Beberapa bahasa bahkan mungkin memiliki satu kata untuk (sebagian besar) kalimat ini juga ...

Saya akan merekomendasikan solusi 1 atau mungkin "Silakan% {startlink} masuk ke% {endlink} untuk melanjutkan" dengan cara ini penerjemah dapat membuat seluruh kalimat sebuah tautan jika itu lebih alami, dan itu dapat sepenuhnya direstrukturisasi.


2
2017-11-12 13:18



Pertanyaan menarik, saya akan segera mengalami masalah ini. Saya pikir saya akan pergi untuk 2, tanpa hal-hal rumit. HTML markup sederhana, url tidak akan bergerak dalam waktu dekat, dan jika ada perubahan entri baru akan dibuat di django.po, jadi kita mendapat kesempatan untuk meninjau terjemahan (mis: skrip harus memeriksa terjemahan yang kosong setelah makemessages ).

Jadi, dalam template:

{% load i18n %}
{% trans 'hello <a href="/">world</a>' %}

... kemudian setelah python manage.py makemessages Saya mendapatkan di django.po saya

#: templates/out.html:3
msgid "hello <a href=\"/\">world</a>"
msgstr ""

Saya mengubahnya sesuai kebutuhan saya

#: templates/out.html:3
msgid "hello <a href=\"/\">world</a>"
msgstr "bonjour <a href=\"/\">monde</a>"

... dan dalam kasus-kasus sederhana namun sering saya temui, tidak akan ada masalah lebih lanjut. Solusi lain di sini tampaknya cukup cerdas tetapi saya tidak berpikir solusi untuk masalah markup lebih banyak markup. Plus, saya ingin menghindari terlalu banyak hal membingungkan di dalam template.

Template Anda harus cukup stabil setelah beberapa saat, saya kira, tetapi saya tidak tahu masalah lain apa yang Anda harapkan. Jika konten berubah berulang kali, mungkin tempat konten itu tidak di dalam template tetapi di dalam model.

Edit: Saya baru saja memeriksanya di dokumentasi, jika Anda pernah membutuhkan variabel di dalam terjemahan, ada blocktrans.


1
2017-11-09 21:48



  1. Tidak masuk akal, bagaimana Anda menerjemahkan "masuk"?
  2. Saya tidak berpikir banyak penerjemah memiliki pengalaman dengan HTML (penerjemah yang tidak sadar HTML akan lebih murah)
  3. Saya akan memilih opsi 3, atau gunakan "Silakan% slog di% s untuk melanjutkan" dan mengganti% s dengan bagian dari tautan.

0
2017-11-08 21:17