Bagaimana cara mengatur sumber string lokalisasi?

14

Kami sedang mengembangkan aplikasi besar, yang terdiri dari banyak paket kecil. Setiap paket memiliki set sendiri file sumber daya untuk pelokalan.

Apa pendekatan terbaik untuk mengatur dan memberi nama string pelokalan?

Inilah pemikiran saya sejauh ini:

Menangani duplikat

Teks yang sama (misalnya, "Kode pos") dapat muncul beberapa kali dalam satu paket. Pemrograman insting (KERING) memberitahu saya untuk membuat sumber daya string tunggal yang dibagikan oleh semua kejadian .

Kemudian lagi, seorang penerjemah mungkin ingin memilih terjemahan yang panjang ("Postleitzahl") di beberapa tempat dan yang lebih pendek ("PLZ") di tempat-tempat dengan lebih sedikit ruang. Atau kita dapat memutuskan untuk menambahkan tanda titik dua pada beberapa kejadian ("Kode pos:"), tetapi tidak untuk yang lain. Atau kami mungkin memerlukan kapitalisasi berbeda ("kode pos") di beberapa tempat. Semua argumen ini menunjuk pada pembuatan satu sumber daya per penggunaan, meskipun kontennya identik .

Penamaan

Jika kami bertujuan untuk menghilangkan duplikat, masuk akal untuk memberi nama sumber daya dengan konten , mungkin mengisyaratkan jenis penggunaan melalui awalan. Jadi kita mungkin memiliki labelOK= "OK" , messageFileTooLarge= "File tersebut melebihi ukuran file maksimum." , dan labelZipCode= "Kode pos" .

Memberi nama berdasarkan konten memiliki keuntungan menangani argumen format secara alami: Sumber daya messageFileHas_0_MBWhileMaximumIs_1_MBjelas membutuhkan dua argumen format, ukuran file aktual dan ukuran file maksimum.

Namun, jika kami mengizinkan duplikat, penamaan berdasarkan konten saja tidak masuk akal. Untuk mendapatkan nama sumber daya yang unik, kami harus memasukkan tempat penggunaan dalam nama sumber daya tersebut. Itu bekerja untuk kontrol grafis, meskipun pengidentifikasi cenderung agak lama: fileSelectionConfirmationButtonText= "OK" , customerDetailsTableColumnZipCode= "Kode Pos" . Namun, untuk file kode non-visual, semakin sulit. Bagaimana Anda memberi nama penggunaan string tertentu jika Anda tidak tahu di mana akhirnya akan ditampilkan? Dengan file kode dan nama fungsi? Tampak agak canggung dan rapuh bagi saya.

Semua dalam semua, saya condong ke arah memungkinkan duplikat, tapi saya berjuang untuk menemukan skema penamaan yang konsisten yang mendukung ini.

Edit: Pertanyaan ini memiliki dua aspek: Cara mengatur sumber daya (DRY vs duplikat) dan bagaimana nama mereka. Sejauh ini, jawabannya terkonsentrasi pada aspek pertama. Saya akan menghargai umpan balik tentang konvensi penamaan!

Daniel Wolf
sumber
1
Jika Anda memiliki paket kecil dengan set loc masing-masing, maka muncul pertanyaan, apakah Anda akan melihat banyak duplikat. Saya akan pergi dengan duplikat dan tidak akan terlalu khawatir tentang pengidentifikasi dalam kode.
Martin Ba
"Bagaimana Anda menyebutkan penggunaan string tertentu jika Anda tidak tahu di mana akhirnya akan ditampilkan?" Bukankah ini merupakan tanda cacat dengan desain, di mana ia mencampur logika (memutuskan tempat untuk menunjukkannya) dan presentasi (benar-benar menunjukkannya). Akan sangat aneh bagi Anda untuk membangun beberapa teks dengan data regional tetapi memperlakukannya seperti objek data internal lainnya yang dapat Anda pindahkan.
Alpha

Jawaban:

8

Saya akan menerima duplikasi setiap kali Anda tidak dapat benar-benar yakin artinya sama persis dalam semua kasus string tertentu digunakan.

Bahkan jika dua label selalu berisi string yang sama dalam bahasa Inggris (atau bahasa ibu Anda) mereka tidak akan selalu sama di semua bahasa. Menerima duplikasi dapat memberi Anda (atau lebih tepatnya penerjemah) fleksibilitas yang diperlukan untuk menangani situasi seperti itu.

Sebagai contoh: Pertimbangkan label "Kondisi", yang - tergantung pada konteksnya - dapat diterjemahkan ke "Zustand" atau "Bedingung" dalam bahasa Jerman (di antara banyak terjemahan lain yang mungkin).

Hulk
sumber
Ya. Ini.
zanlok
2

Terima beberapa duplikat.

Anda dapat menghindari beberapa terjemahan dengan membuat kontrol tambahan. Misalnya a CancelButtondan OKButtonyang sudah mengandung teks mereka, dan sekarang Cancel / Abbrechen OK / OK perlu diterjemahkan hanya sekali. Tapi itu hampir merupakan kasus khusus.

Bernhard Hiller
sumber
2

Ini adalah cara kami menanganinya di perusahaan saya:

Konvensi penamaan: Kami memberi nama label dengan mengawali mereka dengan kelas / bagian / formulir / dll. Misalnya loadFile_loadButton, loadFile_fileNameLabel, loadFile_cancelsemua label milik dialog Load File. Meskipun konvensi penamaan yang digarisbawahi ini bukan yang paling umum, kami lebih menyukainya daripada konvensi standar karena ini meningkatkan keterbacaan dan "groupability": perhatikan betapa mudahnya untuk melihat elemen mana yang dimiliki label, dan apa yang masing-masing label wakili, dibandingkan dengan label bernama loadFileLoadButton, loadFileNameLabeldan loadFileCancel. Anda mungkin berpikir perbedaannya tidak terlalu besar, tetapi ketika Anda memiliki ribuan label, efek gabungannya sepadan.

Komentar tajuk : Tambahan untuk awalan nama label, kami juga menambahkan komentar "tajuk" ke file sumber daya untuk menentukan dengan jelas pengelompokan label. Dengan cara ini, seseorang yang ingin memodifikasi atau menambahkan label spesifik yang terkait dengan satu kelas / bagian / formulir / dll dapat menemukan semua label yang terkait dengan elemen tertentu hanya di satu tempat, di bawah satu header, dan dapat dengan mudah melanjutkan untuk menambah atau memodifikasi label dengan mudah mengetahui bahwa mereka tidak akan merusak terjemahan untuk elemen lain (IMHO, ini juga merupakan poin yang sangat kuat tentang mengapa Anda harus mengizinkan duplikasi).

Duplikat "dibenarkan" diinginkan: Seperti yang disebutkan di atas, praktik-praktik ini secara definitif akan mengarah pada label duplikat, tetapi kami tidak melihat masalah dengan itu (lebih lanjut tentang cara menangani ini di Alat perdagangan).

Seperti yang telah ditunjukkan orang lain, satu label dalam satu bahasa dapat diterjemahkan dalam dua atau lebih cara yang berbeda dalam bahasa lain tergantung pada konteksnya. Jika Anda "menyatukan" label, penerjemah akan kesulitan menemukan label tunggal yang mengakomodasi semua konteks tempat label ditemukan. Jadi, seperti yang kita lihat, memperbolehkan duplikat "dibenarkan" membantu meningkatkan kualitas pelokalan, selama mereka tidak merujuk ke hal yang sama di bawah konteks yang sama (ini adalah arti "dibenarkan").

Alat perdagangan: Agar seefektif mungkin ketika melakukan terjemahan Anda, Anda dapat membuat alat Anda sendiri yang mencari label serupa yang ada di bundel Anda, dan menawarkan terjemahan mereka sebagai nilai default untuk label baru, atau Anda bahkan dapat gunakan layanan yang ada seperti ini , yang menyediakan alat-alat seperti yang baru saja saya sebutkan, membuat terjemahan label baru menjadi mudah (bahkan lebih lagi jika mereka diulang beberapa kali, karena alat ini akan menawarkan beberapa opsi terjemahan secara default untuk label baru) ).

Ringkasnya: Duplikasi yang dibenarkan dan label-label yang dikelompokkan secara kontekstual sangat membantu para penerjemah melakukan pekerjaan mereka. Waktu besar Pikirkan saja: memiliki konteks sangat membantu dalam membantu penerjemah untuk memilih terjemahan yang tepat. Dan memungkinkan duplikat "yang dibenarkan" menghilangkan konflik karena harus memilih satu terjemahan yang sesuai dengan beberapa konteks (tetapi tetap merupakan keseluruhan yang paling cocok).

Saya harap ini membantu!

carlossierra
sumber
1

Ketika saya sudah melakukan ini di masa lalu, kami menyusuri rute file sumber daya yang berisi kalimat lengkap. Jika kalimat yang sama persis digunakan berulang kali hebat, tetapi jika itu hanya kata-kata individual dari dalam kalimat kata-kata itu akan digandakan.

Kami terikat pada kerangka kerja di mana file sumber daya hanya berisi daftar frasa bahasa Inggris diikuti oleh terjemahan (dengan beberapa data pengindeksan di akhir untuk pencarian cepat).

Untuk perintah atau tombol data kecil, seperti nama bidang "Kode ZIP" atau tombol "OK" itu akan menyimpan string "Kode ZIP" diikuti oleh terjemahan dan akan menggunakannya di mana pun string penuh diperlukan. Tetapi (kecuali jika kami secara manual memecah string) tidak akan menggunakannya untuk "Kode ZIP" yang muncul dalam kalimat.

Menggunakan contoh Kode ZIP Anda, jika Anda mencoba dan menerjemahkannya sendiri dan menggantinya dalam semua kalimat yang menggunakannya, Anda akan mendapatkan terjemahan yang sangat sangat buruk.

Misalnya, "Kode ZIP harus dimasukkan" mungkin perlu menerjemahkan setara literal dari "Kode ZIP yang Dimasukkan harus" dalam bahasa lain. Jika Anda memotong kalimat, Anda tidak mendapatkan pembalikan kata-kata yang diperlukan dalam bahasa lain.

Itu sebabnya beberapa terjemahan yang dilakukan dengan buruk ke bahasa Inggris terlihat sangat konyol, orang yang melakukannya hanya menerjemahkan setiap kata, bukan keseluruhan kalimat.

Kami selalu menemukan yang terbaik untuk menerjemahkan kalimat secara keseluruhan, tanpa putus. Kami memiliki tempat penampung untuk data yang perlu dimasukkan (mis. "Nomor Bagian @ 1 adalah redundan") dan penerjemah dapat memindahkan penampung tempat ke posisi yang mereka inginkan untuk terjemahan yang baik.

Namun kami menemukan bahwa mengizinkan tempat-tempat yang menggunakan kalimat yang persis sama, atau prompt data yang sama atau label tombol yang sama, dll, boleh saja berbagi terjemahan. Itu tidak pernah muncul sebagai masalah dan menghemat waktu / biaya untuk penerjemah.

RosieC
sumber
Persis. Kami juga melakukan ini. Jangan pernah mencoba memecah label / kalimat dalam terjemahan.
Martin Ba
1
Saya khawatir itu tidak benar-benar menjawab pertanyaan saya. Saya sangat setuju bahwa kalimat tidak boleh dipecah. Namun, sebagian besar sumber daya bukan kalimat melainkan label sederhana (teks tombol, header tabel, label formulir, dll.).
Daniel Wolf
Dalam hal ini saya akan menyimpannya sekali dan menggunakannya kembali. Pertimbangan yang mungkin di luar ruang lingkup apa yang Anda lakukan secara langsung adalah biaya penerjemah. Kami sebenarnya mendapatkan penjual ulang kami di seluruh dunia untuk mendanai sendiri dan juga menguji terjemahan dalam aplikasi. Mereka pasti ingin duplikat dihindari.
RosieC
Saya telah bekerja menerjemahkan beberapa aplikasi besar dari dan ke bahasa Spanyol, dan saya dapat memberi tahu Anda bahwa jika Anda memiliki alat terjemahan yang tepat, duplikat tidak menjadi masalah (bahkan diinginkan). Lihat jawaban saya untuk cara menangani ini secara efektif.
carlossierra
0

Pemikiran Anda tentang penamaan itu bagus.

Tujuan

  • Tetapkan label umum (yaitu nama variabel) untuk teks yang dilokalkan.
  • Label harus "berukuran pikiran". Itu ... praktis singkat sementara tidak ambigu.
  • Label harus mengikuti format yang konsisten untuk memaksimalkan kepastian dan daya ingat.

Penerapan

  • Kurangi muatan kognitif dengan penggunaan yang konsisten dari singkatan yang dikenal (yaitu, msg = pesan, lbl = label, btn = tombol, ...)
  • Alat menyajikan variabel / label dalam daftar alfabet, jadi pencarian manusia adalah yang terbaik saat label terkait dikelompokkan bersama. Jadikan nama hierarkis dari yang paling umum ke yang paling spesifik. (mis. msgFileMissing, msgFileSaved, msgFileDeleted).
  • Bahasa Inggris adalah kata benda yang diurutkan berdasarkan bahasa. Many (most?) Bahasa lainnya adalah kata benda-kata kerja. Kata benda-kata kerja paling baik untuk pengelompokan hierarkis.
DocSalvager
sumber