Strategi Efektif untuk Pelokalan di .NET [ditutup]

121

Saya sedang mengembangkan UI untuk aplikasi .NET MVC yang akan memerlukan pelokalan internasional semua konten dalam waktu dekat. Saya sangat akrab dengan .NET secara umum tetapi belum pernah memiliki proyek yang membutuhkan fokus signifikan pada aksesibilitas internasional.

Proyeksi ini awalnya dilakukan dalam bahasa Inggris. Tindakan apa yang harus saya ambil pada titik ini untuk membuatnya lebih mudah untuk menerapkan lokalisasi di masa depan?

smartcaveman
sumber
2
Pertanyaan bagus! Saya menghadapi situasi yang sama dan akan senang melihat para ahli mempertimbangkan hal ini.
Adakah yang punya standar bagus untuk pengelolaan sumber daya? Nilai yang dilokalkan mungkin termasuk gambar juga, dan bukan hanya string.
1
Apakah ini WPF / silverlight UI, atau Winforms? Dari pengalaman saya (terbatas) pengalaman WinForms untuk pelokalan jauh lebih sederhana daripada WPF / Silverlight.
Pete Stensønes
1
Jika Anda akhirnya menyimpan string terlokalisasi Anda dalam database, alih-alih file sumber daya, Anda mungkin ingin melihat diskusi ini: stackoverflow.com/questions/2458615/…
1
@Pete, @smartcaveman mengatakan dia "mengembangkan UI untuk aplikasi .NET MVC", jadi ...
BrunoSalvino

Jawaban:

74

Anda sedang mengembangkan aplikasi ASP.Net MVC, bukan? Jawaban lain tampaknya khusus untuk aplikasi desktop. Biarkan saya menangkap hal-hal umum:

Deteksi lokal

Sangat penting bahwa aplikasi Anda mendeteksi lokal pengguna dengan benar. Dalam aplikasi desktop, CultureInfo.CurrentCulture memegang lokal format pemformatan (yang harus digunakan untuk memformat angka, tanggal, mata uang, dll.) Sedangkan CultureInfo.CurrentUICulture memegang lokal Antarmuka Pengguna pilihan (yang harus digunakan untuk menampilkan pesan yang dilokalkan) . Untuk aplikasi web, Anda harus mengatur kedua budaya ke otomatis (untuk secara otomatis mendeteksi lokal dari header AcceptLanguage) kecuali jika Anda ingin menerapkan beberapa alur kerja deteksi lokal yang mewah (yaitu ingin mendukung perubahan bahasa sesuai permintaan).

Eksternalisasikan string

Semua string harus berasal dari sumber daya, yaitu file Resx. Di Aplikasi Winforms, hal itu mudah dicapai dengan menyetel properti form yang dapat dilokalkan ke true. Anda juga perlu secara manual (sayangnya) mengeksternalisasi string yang berasal dari model Anda. Ini juga relatif sederhana. Di Asp.Net Anda perlu mengeksternalkan semuanya secara manual ...

Tata letak

Anda pasti perlu mengizinkan untuk ekspansi string. Di dunia Winforms dapat dicapai melalui TableLayoutPanel yang harus digunakan untuk memastikan bahwa tata letak akan menyesuaikan secara otomatis untuk mengakomodasi teks yang lebih panjang. Di dunia web, Anda sedikit kurang beruntung. Anda mungkin perlu menerapkan Mekanisme Pelokalan CSS - cara untuk memodifikasi (menimpa) definisi CSS. Ini akan memungkinkan orang Lokalisasi untuk mengubah masalah gaya pada permintaan. Pastikan bahwa setiap elemen HTML di halaman yang diberikan memiliki id unik - itu akan memungkinkan untuk menargetkannya secara tepat.

Masalah spesifik budaya

Hindari menggunakan grafik, warna dan suara yang mungkin spesifik untuk budaya barat. Jika Anda benar-benar membutuhkannya, harap sediakan sarana Pelokalan. Hindari grafik yang sensitif terhadap arah (karena ini akan menjadi masalah ketika Anda mencoba melokalisasi untuk mengatakan bahasa Arab atau Ibrani). Juga, jangan berasumsi bahwa seluruh dunia menggunakan angka yang sama (yaitu tidak berlaku untuk bahasa Arab).

ToString () dan Parse ()

Pastikan untuk selalu melewati CultureInfo saat memanggil ToString () kecuali itu tidak didukung. Dengan begitu Anda mengomentari niat Anda. Misalnya: jika Anda menggunakan beberapa nomor secara internal dan karena alasan tertentu perlu mengubahnya menjadi penggunaan string:

int i = 42;
var s = i.ToString(CultureInfo.InvariantCulture);

Untuk angka yang akan ditampilkan untuk digunakan pengguna:

var s = i.ToString(CultureInfo.CurrentCulture); // formatting culture used

Hal yang sama berlaku untuk Parse (), TryParse () dan bahkan ParseExact () - beberapa bug jahat dapat diperkenalkan tanpa menggunakan CultureInfo dengan benar. Itu karena beberapa jiwa miskin di Microsoft, penuh dengan niat baik memutuskan bahwa itu adalah ide yang baik untuk memperlakukan CultureInfo.CurrentCulture sebagai default (itu akan digunakan jika Anda tidak melewati apa pun) - lagi pula ketika seseorang menggunakan ToString ( ) dia ingin menampilkannya kepada pengguna, bukan? Ternyata itu tidak selalu terjadi - misalnya mencoba untuk menyimpan nomor versi aplikasi Anda dalam database dan kemudian mengubahnya menjadi instance dari kelas Versi. Semoga berhasil.

Tanggal dan zona waktu

Pastikan untuk selalu menyimpan dan membuatkan DateTime dalam UTC (gunakan DateTime. Bukan sebaliknya DateTime. Sekarang). Konversikan ke waktu lokal dalam format lokal setelah ditampilkan:

DateTime now = DateTime.UtcNow;
var s = now.ToLocalTime().ToString(CultureInfo.CurrentCulture);

Jika Anda perlu mengirim email dengan referensi waktu di badan, pastikan untuk memasukkan informasi zona waktu - termasuk offset UTC dan daftar kota:

DateTime someDate; // i.e. from database
var formattedDate = String.Format("{0} {1}", 
             someDate.ToLocaleTime().ToString(CultureInfo.CurrentCulture),
             TimeZoneInfo.Local.DisplayName);

Pesan majemuk

Anda sudah diperingatkan untuk tidak menggabungkan string. Sebagai gantinya Anda mungkin akan menggunakan String.Format () seperti yang ditunjukkan di atas. Namun, saya harus menyatakan bahwa Anda harus meminimalkan penggunaan pesan majemuk. Itu hanya karena aturan tata bahasa target sangat umum berbeda, sehingga penerjemah mungkin perlu tidak hanya memesan ulang kalimat (ini akan diselesaikan dengan menggunakan placeholder dan String.Format ()), tetapi menerjemahkan seluruh kalimat dengan cara yang berbeda berdasarkan pada apa yang akan diganti. Biarkan saya memberi Anda beberapa contoh:

// Multiple plural forms
English: 4 viruses found.
Polish: Znaleziono 4 wirusy. **OR** Znaleziono 5 wirusów.

// Conjugation
English: Program encountered incorrect character | Application encountered incorrect character.
Polish: Program napotkał nieznaną literę | Aplikacja napotkała nieznaną literę.

Masalah penggabungan lainnya

Rangkaian tidak terbatas pada string. Hindari meletakkan kontrol bersama, katakan:

Ingatkan saya lagi dalam [kotak teks dengan angka] hari.

Ini harus dirancang ulang untuk sesuatu seperti: Ingatkan saya lagi dalam beberapa hari ini: [kotak teks].

Pengodean karakter dan font

Selalu simpan, transfer, teks apa pun dalam Unicode (yaitu dalam UTF-8). Jangan font kode keras - Lokalisasi mungkin perlu memodifikasinya dan itu akan mematikan mekanisme default font fall-back (dalam kasus WinForms). Ingatlah untuk mengizinkan karakter "aneh" di sebagian besar bidang (yaitu nama pengguna).

Uji

Anda mungkin perlu menerapkan apa yang disebut terjemahan semu, yaitu menciptakan sumber daya untuk mengatakan budaya Jerman dan menyalin string bahasa Inggris Anda menambahkan awalan dan akhiran. Anda juga dapat membungkus penampung agar mudah mendeteksi string majemuk. Tujuan dari terjemahan semu adalah untuk mendeteksi masalah Pelokalan seperti string yang dikodekan keras, masalah tata letak, dan penggunaan berlebihan pesan majemuk.

Paweł Dyda
sumber
5
Mengenai Pesan Gabungan - Saya harus melakukan beberapa bentuk jamak sekali. Saya memperluas String.Formatsehingga dapat mendukung sintaks keren ini: "There {0:was|were} {0} {0:virus|viruses} found."Setiap bahasa dapat memuat aturannya sendiri, sehingga Anda bisa melakukannya "Znaleziono {0} {0:wirusy|wirusów}." Sumbernya ada di GitHub: github.com/scottrippey/SmartFormat/wiki
Scott Rippey
2
@Scott Rippey Pernahkah Anda memperhatikan bahwa contoh bahasa Polandia berbunyi "Znaleziono 4 wirusy. ATAU Znaleziono 5 wirusów." <- Bahasa Polandia, seperti banyak bahasa lainnya, memiliki lebih dari dua bentuk jamak dan aturan untuk membedakannya bisa rumit juga. Di sini saya harus meninggalkan bahasa Polandia karena saya tidak berbicara, tetapi dalam bahasa saya, bentuk jamak untuk 101 hal adalah sama dengan yang untuk 1 hal. Anda mungkin melihat bagaimana GNU gettext menangani masalah ini: gnu.org/s/hello/manual/gettext/Plural-forms.html
gregopet
2
@regreget Contoh bahasa Polandia saya dibuat, karena saya tidak berbicara, tapi itulah yang dilakukan oleh proyek SmartFormat. Berikut adalah contoh yang lebih baik: "{0} {0:plik|pliki|plików}". Formatter memiliki aturan Polandia yang menentukan mana dari 3 formulir yang akan digunakan, dan dengan benar menentukan kasus khusus. Saat ini saya sedang berupaya menambahkan lebih banyak aturan, sehingga gettextartikel ini akan terbukti sangat berguna, terima kasih.
Scott Rippey
Untuk pseudo-lokalisasi, saya membangun alat pseudolocalization online gratis di pseudolocalize.com
JerSchneid
74

Beberapa hal dasar yang harus Anda perhitungkan:

Eksternalisasikan semua sumber daya string

Semua sumber daya Anda harus terkandung dalam file eksternal yang dapat diserahkan untuk pelokalan. Jangan lupa tentang pesan kesalahan, jika Anda ingin ini dilokalkan juga.

Berikan ruang yang cukup untuk ekspansi string

String dalam beberapa bahasa cenderung hingga 30% lebih lama (seperti bahasa Yunani) misalnya, jadi pastikan Anda mendesain UI Anda sedemikian rupa sehingga string dapat diperluas jika perlu. Berikut ini contoh yang agak ekstrem untuk bahasa Prancis:

Ok -> Accepter (Prancis - ekspansi 400%)

Saya sarankan melakukan semacam terjemahan semu sebagai titik awal ( http://en.wikipedia.org/wiki/Pseudolocalization ). Atau Anda dapat menerjemahkan sumber daya Anda melalui Google Translate atau Bing. Ini akan memberi Anda indikasi yang baik tentang seperti apa terjemahan yang sebenarnya akan terlihat.

Perhatikan teks dalam gambar

Jika Anda menggunakan gambar apa pun dalam aplikasi Anda - pastikan tidak mengandung teks apa pun - ini jelas tidak dapat diterjemahkan.

Jangan pernah menyandikan jalur apa pun ke folder Windows

Jelas, tapi saya pernah melihatnya di masa lalu. Misalnya, C:\Program Filesditerjemahkan pada beberapa versi internasional Windows, mis. Itu C:\Programmepada OS Jerman.

Hindari penggunaan istilah khusus lokal

Misalnya, jika Anda meminta seseorang untuk 'SMA' mereka pada formulir, ini memiliki sedikit makna di Eropa Barat.

Hindari membuat string melalui penggabungan string

Sebagai contoh, ini terlihat tidak berbahaya:

strWelcome = ReadExternalString("Welcome"); 
strMessage = strWelcome + ", " + UserName;

Tapi, urutan kata dalam bahasa Jepang misalnya akan berbeda, jadi ini mungkin tidak masuk akal.

Pengaturan Waktu / Tanggal

Selalu pastikan untuk mendapatkan format waktu / tanggal dari OS.

Jimmy Collins
sumber
@ Jimmy C, bagaimana Anda membangun string untuk konsistensi logis independen-bahasa?
smartcaveman
14
@Smart melakukan sesuatu di sumber daya Anda seperti "{0}, {1}" lalu ketika Anda melokalisasikannya, gunakan string.format dan sampaikan salam dan nama pengguna. Plus ini memberi Anda manfaat memiliki "Kecepatan {0} saat ini adalah {1} {2}" dan Anda bisa memasukkan "Engine", "50" dan "MPH", dan ketika Anda menerjemahkan kalimat Anda, Anda dapat memindahkan { 0} dll di sekitar tempat mereka masuk akal dalam bahasa itu
taylonr
4
Daftar yang bagus, JimmyC. "Jangan pernah menyandikan lintasan apa pun ke folder Windows" mengingatkan saya pada "Selalu gunakan Path.Combine" alih-alih penggabungan string untuk lintasan windows.
@ Jimmy-C Jawaban yang bagus!
1
Environment.GetFolderPath dapat digunakan untuk mendapatkan jalur yang valid ke jalur umum seperti My Documents tanpa bergantung pada nama bahasa Inggris untuk folder tersebut.
Crippledsmurf
24

Pertimbangan Khusus untuk Bahasa Asia

Selain semua jawaban hebat yang sudah ada di sini, beberapa peringatan untuk bahasa Asia:

Waspadalah terhadap panjang teks yang berbeda

Teks bahasa Cina dan Korea cenderung jauh lebih pendek daripada teks bahasa Inggris yang setara (karena Anda biasanya membutuhkan lebih sedikit karakter untuk menulis hal yang sama), jadi sebuah halaman mungkin terlihat kosong dalam bahasa Cina tetapi penuh dalam bahasa Jerman ... Anda harus melakukan beberapa ukuran dinamis di sini agar terlihat bagus.

Namun, teks Jepang biasanya cenderung lebih lama, bahkan lebih lama daripada teks bahasa Inggris yang setara dalam hal jumlah karakter.

Waspadalah terhadap tata letak dasar dan tampilan "slide"

Karakter Asia biasanya diletakkan pada garis dasar , yang tidak termasuk keturunan (yaitu bagian bawah dari y, g, q, j dll.) Ketika Anda memformat elemen layar - biasanya tombol - dengan teks di dalamnya, dan jika itu teks hanya bahasa Asia (yaitu tidak ada huruf Barat), maka teks akan terlihat seperti digeser ke atas.

Memformat angka dan unit numerik lokal

Menangani pemformatan angka secara berbeda. Negara-negara Asia yang berbeda memiliki cara yang berbeda dalam memformat angka. Sama dengan mata uang. Sebagai contoh, di Asia Timur, 10.000 (wan) adalah unit umum. Di India, 100.000 (lakh) adalah umum.

Mata uang lokal

Mata uang beberapa negara memiliki banyak nol dan tidak ada titik desimal (misalnya Jepang, Indonesia, Italia), sementara yang lain memiliki hingga dua digit setelah titik desimal.

Waspadai urutan kata yang berbeda

Urutan kata mungkin tidak selalu sama. Yang terbaik untuk dilakukan adalah menggunakan {0}, {1} dll dalam pemformatan string alih-alih urutan kata hard-coding jika string Anda berasal dari kombinasi berbagai bagian data.

Gunakan jenis spesifik lokal

Penyortiran berbeda per bahasa dan per lokal - Anda harus selalu bergantung pada penyortiran khusus lokal O / S.

Berhati-hatilah dengan karakter lebar-lebar / setengah-lebar

Waspadalah terhadap perbedaan antara karakter "lebar penuh" dan "setengah lebar". Kurung, tanda baca dll. Dapat memiliki versi "lebar penuh" yang berbeda dari ASCII standar. Jika Anda melakukan pencarian atau pemisahan string berdasarkan huruf-huruf ini, Anda harus terlebih dahulu mengonversi semua simbol lebar penuh menjadi setara setengah lebar.

Titik bukanlah titik ... koma bukan koma ...

Waspadai input data yang didapat - misalnya, dalam bahasa Cina, titik bukanlah titik ".". Koma adalah lebar penuh, bukan ",". Jangan mencoba mencari tanda baca barat jika pengguna yang melakukan entri data mungkin secara tidak sengaja mengaktifkan IME bahasa Asia.

Nomor telepon

Jangan menganggap apa pun dalam pemformatan nomor telepon. Tidak selalu ada kode area dll dan dapat diformat berbeda. Biasanya, memiliki format string per negara.

Jangan menganggap orang hanya akan memiliki satu nomor ponsel, atau satu nomor faks, dll. Ini tidak seperti ini di Asia.

Alamat - lebih padat dari yang Anda kira

Untuk alamat, jangan menganggap apa pun . Mungkin tidak selalu ada kode pos. Kode pos mungkin tidak selalu berupa angka. Suatu negara mungkin tidak memiliki provinsi / negara bagian. Suatu negara mungkin hanya kota besar (misalnya Singapura). Untuk negara-negara Asia tertentu, unit terkecil dari rumah mungkin "Kamar X, Unit Y, Bagian Z, Lantai A, Blok B, Grup C, Estate D". Secara umum, bersikaplah sangat liberal dalam jumlah bidang dan jumlah karakter yang diizinkan dalam alamat.

Salam

Salam tidak hanya terbatas pada Bapak, Ibu dll Meskipun Anda mungkin aman dalam menggunakan "M" dan "F" untuk seks - kita tidak yang aneh belum ...


sumber
1
Paragraf terakhir membuatku tersenyum.
BoltClock
Oh, kami (i18n guys) bahkan belum mulai ... Kami hanya dapat menggaruk permukaan :) Jika kami berbicara masalah spesifik seperti dukungan GB18030, posting kami akan terlalu panjang untuk ditangani oleh SO :) Terima kasih untuk catatan Anda, saya melewatkan beberapa item.
Paweł Dyda
Tentang yang terakhir, saya percaya Inggris sekarang secara resmi menerima "Lainnya" sebagai jenis kelamin. Pikirkan waria.
Bart Friederichs
11

Beberapa langkah dasar adalah memastikan string apa pun yang ditampilkan di layar bukan literal dalam kode Anda. Jika Anda melakukan Winforms, setiap formulir akan memiliki sumber daya UI. Untuk dialog, laporan dll, pastikan Anda menggunakan file sumber daya proyek.

Jadi, alih-alih "Unggahan gagal" dalam kode Anda, Anda mungkin memiliki sesuatu seperti Resources.UploadFailed

Dengan cara ini Anda dapat membuat file sumber daya baru untuk setiap bahasa yang Anda gunakan (dan. Net akan membantu dengan ini.) Dan memiliki string lokal di setiap file.

EDIT Saya lupa menyebutkan ketika Anda melakukan UI Anda, pastikan Anda tidak hanya menjejalkan hal-hal di sana. Bergantung pada bahasa yang Anda cari, real estat bisa menjadi masalah. Saya bekerja pada sebuah proyek yang menjadikan Jerman dan Portugis sebagai 2 pelanggar terbesar untuk pertumbuhan string. Jika kita tidak berhati-hati dalam bahasa Inggris, Perancis dan Italia akan meledak di Jerman.

taylonr
sumber
1
Dari pengalaman L10n saya, bahasa Rusia adalah skenario terburuk. Namun dalam Winforms dengan pengguna TableLayoutPanels yang tepat, seseorang dapat menangani pertumbuhan string dengan anggun.
Paweł Dyda
Ya, pengalaman saya terbatas pada 7 bahasa: Inggris, Jerman, Portugis, Italia, Prancis, Spanyol, dan Jepang. Tapi saya bisa melihat Rusia menjadi buruk karena mereka cenderung memiliki banyak sufiks dan awalan
taylonr
9

Saya sarankan Anda menjalankan FXCop atau Visual Studio Code Analysis (mereka hampir sama) di majelis Anda.

Mereka pandai mendeteksi .NET code yang tidak menggunakan overload berorientasi kultur yang tepat, seperti ini: CA1305: Tentukan IFormatProvider .

Saya harus menambahkan bahwa alat-alat ini juga membuat frustrasi karena mereka biasanya mendeteksi jutaan masalah dalam kode Anda, tetapi tetap saja, bahkan jika Anda tidak mengikuti setiap aturan, Anda harus belajar banyak.

Simon Mourier
sumber
Apakah ini standarnya, atau apakah saya perlu menetapkan beberapa pengaturan untuk mencari aturan spesifik globalisasi?
smartcaveman
@smartcaveman - ini adalah default (hmm .. sebenarnya, beberapa orang berpikir ada banyak aturan default dalam alat ini :-)
Simon Mourier
7

Selain spesifik cara memuat sumber daya saya akan memastikan bahwa Anda menguji dengan versi pseudo-lokal untuk memulai. Kalau tidak, Anda tidak akan memperhatikan tempat-tempat di mana pertimbangan internasionalisasi dihilangkan sampai akhir.

Jeremy
sumber
Untuk cara cepat dan mudah melakukan pseudolocalize, saya membuat alat online gratis di pseudolocalize.com
JerSchneid
6

Selain semua petunjuk bermanfaat lainnya, berikut adalah beberapa yang tidak ada:

Mempertimbangkan bahwa beberapa negara menggunakan lebih dari satu bahasa. Misalnya, di Kanada, pengguna berharap dapat dengan mudah beralih antara bahasa Inggris dan Prancis.

Jika Anda mengajukan pertanyaan kepada pengguna yang mengharapkan jawaban satu huruf, jangan berharap pengguna menekan tombol 'Y' untuk mengatakan Ya.

Berhati-hatilah dalam procs Stored bahwa tanggal dalam SQL DB dalam format USA

Menempatkan string teks dalam DB memungkinkan Anda untuk nanti menambahkan bahasa tambahan tanpa menggunakan kembali.

Saat mengirim file teks tertulis untuk terjemahan, selalu sertakan deskripsi konteks untuk memastikan penerjemah memilih kata yang benar. Misalnya tanpa konteks, Anda dapat menerjemahkan "pitch:" menjadi sesuatu yang berkaitan dengan suara atau tempat di mana Anda bermain sepak bola

Label alamat selalu perlu diubah. Provinsi di Kanada, Negara di Amerika, County di Inggris

Brian Leeming
sumber
5

Anda perlu mempertimbangkan:

  1. Routing untuk multi bahasa

  2. Pindahkan semua string hardcode ke file sumber daya

Contoh untuk properti:

Model:

[Display(Name = <Resource for display name>.<field for this property>)]
[Required(ErrorMessage = <Resource for error message>.<field for this validate message>)]
public string TestProperty { get; set; }

Melihat:

@Html.LabelFor(m=>m.TestProperty)
@Html.EditorFor(m => m.TestProperty)
@Html.ValidationMessageFor(m => m.TestProperty)

sumber
5

Berikut adalah sesuatu yang tidak disebutkan dalam sisa jawaban.

Bergantung pada kompleksitas aplikasi Anda dan pelokalannya, saya akan sangat menyarankan menerapkan penyedia sumber daya alternatif dan menjaga sumber daya lokal dalam database. Dengan skema lokalisasi ASP.NET default, semua sumber daya disimpan dalam file RESX, yang:

  1. Apakah sakit di pantat untuk mengedit di Visual Studio
  2. Batasi distribusi dan pengelolaan sumber daya lokal setelah aplikasi dikompilasi / dikirim / dijalankan.

Sebagai kemungkinan penggunaan, pertimbangkan untuk menyediakan paket bahasa untuk aplikasi Anda dan kemampuan untuk mengimpor dan mengekspor bahasa melalui UI. File RESX tidak akan membantu di sini.

Dalam skenario seperti ini penyedia sumber daya alternatif sangat membantu. Info lebih lanjut tentang cara menerapkannya dapat ditemukan di sini . Tentu saja ini adalah kasus yang jarang lebih sering terlihat dalam aplikasi perusahaan, tetapi masih berlaku

Slavo
sumber
1
Terima kasih telah meluangkan waktu untuk memeriksa jawaban-jawaban hebat ini dan masih menyumbangkan sesuatu yang baru dan bermanfaat.
smartcaveman
+1; Saya telah membangun aplikasi web yang luas di Asp.NET dan kami akhirnya melakukan terjemahan melalui database. Fitur baru sering ditambahkan tetapi karena penerjemah kami bukan ahli dalam terminologi tertentu yang digunakan, kami dapat dengan cepat mengatasi email pelanggan yang marah dari jenis "Mengapa Anda menggunakan kata Y untuk X yang jelas-jelas salah?".
gregopet
3

Yang paling penting adalah mengelola konten dalam berbagai bahasa. Saya telah mengembangkan beberapa websistes sendiri dan mengelola konten dalam berbagai bahasa adalah tantangan terbesar.

Saya menggunakan Database untuk menyimpan sumber daya / konten. Ini memberi saya fleksibilitas untuk menambahkan dukungan bahasa apa pun yang saya inginkan. Saya telah menerapkan logika jatuh kembali ke bahasa Inggris jika sumber daya dalam bahasa tertentu tidak ditemukan.

Anda nanti dapat menggunakan penerjemah untuk mengonversi nilai bahasa Inggris ke bahasa apa pun.


sumber
2

Ringkasan hal-hal yang perlu dipertimbangkan dalam internasionalisasi:

  • Semua informasi harus diinternasionalkan. Mempertimbangkan bahwa gambar dapat memiliki informasi yang ingin kami internasionalisasi.

  • Ukuran bidang atau string, tergantung bahasa karena dapat menyebabkan masalah bagi kita.

  • Urutan kata tergantung pada bahasa kita, jadi urutan dalam satu bahasa akan sama dengan yang lain.

  • Kita harus memperhitungkan bahwa format tanggal akan berubah dari satu bahasa ke bahasa lain


sumber
1

Lakukan tes Turki :

Internasionalisasi perangkat lunak sulit dalam keadaan terbaik , tetapi selalu membuat saya heran betapa sering satu negara tertentu muncul dalam diskusi masalah internasionalisasi: Turki ...

Jika Anda peduli sedikit pun tentang lokalisasi atau internasionalisasi, paksakan kode Anda untuk berjalan di bawah lokal Turki sesegera mungkin . Ini adalah penentu arah yang kuat untuk kode Anda berjalan di sebagian besar - tetapi tidak berarti semua - budaya dan lokal ...

Jika situs / program Anda berjalan dengan baik dengan klien Turki, Anda dapat yakin bahwa itu akan berjalan pada sebagian besar platform lain.

Carra
sumber