Langsung ke konten utama

Panduan Internasionalisasi App untuk Aplikasi Siap Global

Pelajari internasionalisasi app dari pola inti hingga workflow CI/CD, testing, dan live update untuk merilis aplikasi global lebih cepat.

Panduan Internasionalisasi App untuk Aplikasi Siap Global

App Anda siap untuk pasar berikutnya. Tim produk sudah menyetujui copy terjemahan, tim marketing sudah menyiapkan peluncuran, dan customer support sudah memperbarui skripnya. Lalu testing mengungkap bahwa tombol checkout di-hardcode dalam bahasa Inggris, tanggal muncul dalam urutan yang salah, mata uang memakai pemisah yang tidak biasa, dan terjemahan yang lebih panjang mendorong aksi utama keluar layar. Peluncuran tidak terhambat hanya oleh kualitas terjemahan. Peluncuran terhambat oleh keputusan di codebase yang dibuat berbulan-bulan sebelumnya.

Situasi tersebut adalah titik awal praktis untuk internasionalisasi app. Internasionalisasi, biasanya disingkat i18n, menyiapkan produk agar bahasa, wilayah, sistem penulisan, dan konvensi budaya bisa ditambahkan tanpa menulis ulang business logic. Lokalisasi lalu mengadaptasi produk yang sudah disiapkan untuk pasar tertentu.

Kasus komersialnya terlihat jelas dalam ekonomi aplikasi. Snapshot tahun 2026 terhadap 730.024 aplikasi iOS App Store menemukan bahwa median aplikasi mendukung tepat satu bahasa, sementara 68.6% rilis dalam satu bahasa. Aplikasi yang menghasilkan perkiraan $10.000 atau lebih per bulan mendukung median lima bahasa, dan 50.7% dari tier pendapatan teratas dirilis dalam lima bahasa atau lebih. Angka-angka ini tidak membuktikan bahwa lokalisasi saja menciptakan pendapatan, tetapi menunjukkan bahwa dukungan multibahasa jauh lebih umum di antara aplikasi dengan ambisi komersial yang lebih luas.

Panduan ini beralih dari model mental ke pola rekayasa, perbedaan platform, otomasi alur kerja, pengujian, dan migrasi. Panduan ini berlaku untuk produk mobile native, aplikasi web, aplikasi hybrid Capacitor, dan perangkat lunak desktop Electron. Privasi dan kepatuhan regional juga termasuk dalam rencana peluncuran, sehingga tim yang menangani persyaratan regulasi dapat memadukan panduan ini dengan checklist kepatuhan GDPR.

Table of Contents

Pengenalan App Internationalization dan Mengapa Ini Penting Sekarang

Tim sering baru menyadari internationalization beberapa hari sebelum peluncuran pasar. Tim product meminta language selector, tim design menyesuaikan beberapa layar, dan engineering menemukan teks user-facing tersebar di berbagai komponen, aturan validasi, notifikasi, label analytics, hingga file konfigurasi native. Format tanggal dan angka pun menimbulkan masalah yang sama. Tanggal yang disimpan sebagai teks tampilan tidak bisa diubah formatnya dengan aman, sementara harga yang disusun dari string terpisah mungkin butuh urutan berbeda di locale lain.

Penemuan yang terlambat itu memicu tiga pilihan mahal: menunda peluncuran, menerima defect yang terlihat, atau memodifikasi code yang tidak dirancang untuk bervariasi tiap locale. Menjadikan i18n sebagai kapabilitas arsitektur akan mengubah workflow. Ekspansi pasar menjadi operasi terkendali yang melibatkan resource, presentasi, testing, dan konfigurasi release, bukan rewrite.

Aturan praktis: Bangun aplikasi agar locale baru hanya mengubah resource dan presentasi, bukan business rules.

Terjemahan hanyalah satu bagian dari kesiapan global. Kalimat yang diterjemahkan tetap bisa merusak layout jika panjangnya tidak muat. Mata uang yang diterjemahkan dengan benar tetap bisa menyesatkan pengguna jika nilai dasarnya disimpan sebagai teks terformat. Pemilih bahasa juga bisa menghasilkan perilaku tidak konsisten ketika lapisan web dan lapisan native mendeteksi locale yang berbeda.

Penemuan i18n yang terlambat meningkatkan biaya operasional. Engineer harus menelusuri string di berbagai komponen lama, penerjemah menerima konteks yang tidak lengkap, reviewer menguji perubahan terburu-buru, dan tim rilis berkoordinasi untuk perbaikan di beberapa paket platform. Untuk tim Capacitor dan Electron, alur kerja live-update dapat mempersingkat siklus ini dengan mengirimkan sumber daya lokalisasi yang disetujui dan perbaikan tampilan tanpa menunggu review store baru, selama kebijakan platform dan rilis mengizinkan. Pergeseran pentingnya adalah memperlakukan perubahan lokalisasi sebagai artefak rilis yang dikelola, bukan sekadar serah terima terjemahan akhir.

Jalan ke depannya cukup jelas:

  • Siapkan fondasinya: Pisahkan resource untuk pengguna dari logika aplikasi dan modelkan nilai yang sensitif terhadap locale dengan benar.
  • Atasi perilaku bahasa: Dukung aturan plural, ekspansi teks, arah penulisan, format, dan perubahan bahasa yang aksesibel.
  • Sesuaikan setiap platform: Pertimbangkan iOS, Android, browser, Capacitor WebViews, dan pengemasan Electron.
  • Jaga agar rilis tetap berjalan: Hubungkan ekstraksi, terjemahan, review, pengujian, dan deployment agar string baru tidak menunggu fase proyek yang terlambat.
  • Verifikasi antarmuka: Uji teks panjang, tata letak right-to-left, kombinasi locale, perilaku fallback, performa, dan keamanan update.

Internasionalisasi aplikasi adalah disiplin release-engineering. Ini menjaga perubahan produk agar tetap mudah dilokalisasi, memungkinkan tim memperbaiki masalah bahasa melalui jalur pengiriman yang tepat, serta mencakup pekerjaan privasi regional seperti checklist kepatuhan GDPR.

Apa Arti Sebenarnya dari Internasionalisasi Aplikasi

Mari mulai dengan analogi rumah. Internasionalisasi adalah instalasi kabel dan pipa yang fleksibel sebelum siapa pun mendekorasi ruangan. Lokalisasi adalah mendekorasi dan menata furnitur rumah itu untuk wilayah tertentu. Terjemahan adalah mengubah bahasa pada label, instruksi, dan papan tanda.

Urutannya sangat penting. Jika kabel tertanam di dalam dinding yang dirancang hanya untuk satu alat, menambah alat baru akan menjadi mahal. Dalam software, hardcoded strings, kontrol lebar tetap, penggabungan kalimat, dan logika bisnis spesifik locale menciptakan kendala yang sama.

Tiga istilah, tiga tanggung jawab

Internasionalisasi, atau i18n, adalah pekerjaan desain dan pengembangan yang memungkinkan aplikasi mendukung berbagai bahasa dan wilayah tanpa mengubah perilaku intinya. Ini mencakup pemuatan resource, pemilihan locale, formatting, arah teks, dukungan font, dan layout yang fleksibel.

Lokalisasi, atau l10n, menyesuaikan aplikasi yang sudah disiapkan ke locale tertentu. Ini bisa mencakup terjemahan copy antarmuka, format khusus wilayah, terminologi lokal, gambar yang sesuai budaya, dan default spesifik pasar.

Terjemahan mengubah konten dari satu bahasa ke bahasa lain. Fokus utamanya adalah makna dan pilihan kata, meski workflow terjemahan yang baik juga butuh konteks, screenshot, batas karakter, dan info di mana setiap string muncul.

Diagram yang mengilustrasikan konsep internasionalisasi, lokalisasi, dan terjemahan aplikasi lewat metafora rumah.

Batas implementasi yang berguna adalah locale resource. Alih-alih menaruh Payment failed langsung di dalam komponen, komponen tersebut meminta semantic key seperti payment.error. Resource bahasa Inggris memetakan key tersebut ke teks Inggris, sementara resource lain memetakan key yang sama ke terjemahan berbeda. Komponen tetap tahu bahwa ia butuh error pembayaran, tanpa perlu tahu bagaimana redaksi error tersebut.

Pemisahan yang sama juga berlaku di luar string. Simpan nilai moneter sebagai angka, bukan string dengan simbol menempel. Simpan timestamp sebagai timestamp, bukan tanggal yang sudah diformat. Teruskan info locale ke formatter daripada menanamkan pemisah atau nama bulan di dalam code bisnis.

Mengapa fondasi ini mengurangi risiko

Ketika resource dan aturan formatting dipisahkan dari business logic, penambahan bahasa tidak memerlukan perubahan pada kalkulasi pembelian, alur autentikasi, atau model data. Engineer dapat memperbarui resource bundle, penerjemah dapat bekerja di translation management system, dan QA dapat menguji antarmuka yang dihasilkan tanpa mengganggu perilaku yang tidak terkait.

Pemisahan itu juga meningkatkan ownership. Desainer bisa mendefinisikan komponen yang aman untuk ekspansi, penerjemah bisa meninjau konteks, product manager bisa memutuskan pasar mana yang didukung, dan engineer bisa menegakkan aturan missing-key dan fallback. Setiap disiplin punya tempat yang jelas di workflow.

Tim yang melewatkan i18n sering menganggap setiap locale baru sebagai pengecualian khusus. Tim yang merancangnya sejak awal memperlakukan locale sebagai input. Pergeseran pola pikir ini membuat dukungan global jauh lebih mudah dinalar.

Pola Inti yang Dibutuhkan Setiap Aplikasi Terinternasionalisasi

i18n yang baik jadi konkret lewat beberapa pola yang bisa diulang. Terapkan pola-pola ini di level komponen, data, dan rilis, bukan cuma menambahkan language switcher di atas codebase satu locale.

Diagram piramida yang menunjukkan empat pola inti untuk internasionalisasi aplikasi: ekstraksi string, format pesan ICU, formatting, dan dukungan layout.

Ekstrak string ke dalam resource

Perubahan ini adalah langkah praktis pertama:

Sebelum:

showToast("Your profile was saved");

Sesudah:

showToast(t("profile.saved"));

File resource:

{
  "profile": {
    "saved": "Your profile was saved"
  }
}

Gunakan key yang menggambarkan makna, bukan kalimat bahasa Inggrisnya. profile.saved tetap berguna jika teks bahasa Inggris berubah, sedangkan key berbasis kalimat asli bisa menyesatkan. Sertakan konteks untuk penerjemah saat kata yang sama bisa berarti berbeda, misalnya apakah “Present” adalah aksi tombol atau status.

Aplikasi yang diinternasionalisasi dengan benar mengeksternalisasi setiap string yang tampil ke pengguna, beserta tanggal, angka, mata uang, dan simbol, ke locale resources atau formatter. Ini blueprint teknis untuk i18n mobile menjelaskan mengapa pemisahan tersebut memungkinkan tim menambah bahasa tanpa mengubah business logic.

Gunakan format pesan untuk tata bahasa

Ini tidak aman:

`${count} items`

Pola hardcoded mengasumsikan setiap locale memakai perilaku plural dan urutan kata yang sama. Unicode CLDR menyediakan layer data lokalisasi umum untuk tanggal, waktu, zona waktu, angka, mata uang, dan kategori plural. Seperti dijelaskan panduan best practice lokalisasi di CLDR, aturan plural berbeda per locale, jadi aplikasi perlu pemilihan berbasis locale, bukan satu pola tetap.

Pesan bergaya ICU mungkin terlihat seperti ini:

{count, plural,
  =0 {No items}
  one {# item}
  other {# items}
}

Formatter memilih branch yang benar. Jaga pesan tetap utuh agar penerjemah bisa mengubah urutan angka dan kata benda saat tata bahasa mengharuskannya.

Format nilai dengan API berbasis locale

Jangan menyusun tanggal secara manual:

`${day}/${month}/${year}`

Gunakan formatter:

new Intl.DateTimeFormat(locale, {
  dateStyle: "medium"
}).format(date)

Prinsip yang sama berlaku untuk angka dan mata uang:

new Intl.NumberFormat(locale, {
  style: "currency",
  currency: currencyCode
}).format(amount)

Intl, pustaka berbasis ICU dan CLDR menangani konvensi yang berbeda menurut wilayah. Pustaka ini juga menjaga logika tampilan tetap dekat dengan lapisan presentasi, tempatnya semestinya.

Desain untuk arah dan ekspansi teks

Teks tidak melebar secara prediktif di berbagai bahasa. Tombol butuh lebar yang fleksibel, kartu butuh tinggi yang adaptif, dan label jangan bergantung pada satu baris. Gunakan sistem layout yang memungkinkan konten bertumbuh, dan uji kontrol dengan pseudo-terjemahan panjang sebelum penerjemah memulai tinjauan akhir.

Dukungan right-to-left membutuhkan lebih dari sekadar membalik perataan teks. Ikon, urutan navigasi, padding, animasi, dan gestur berarah mungkin perlu dicerminkan. Gunakan properti logis seperti margin-inline-start daripada aturan khusus kiri di platform yang mendukungnya. Gambar, font, dan teks tersemat juga perlu ditinjau. Font yang merender satu skrip dengan baik mungkin tidak mencakup skrip lain, dan gambar berisi kata dalam bahasa Inggris mungkin perlu aset terlokalisasi, bukan overlay terjemahan.

Untuk panduan khusus antarmuka, tim yang memakai Capacitor juga bisa merujuk ke praktik UI dan UX lintas platform.

Pertimbangan Spesifik Platform untuk Mobile Web Capacitor dan Electron

Aturan inti tetap konsisten, tetapi setiap runtime menyediakan sinyal locale dan batasan packaging yang berbeda. Aplikasi native dapat membaca preferensi perangkat melalui API platform. Browser mengekspos preferensi bahasa melalui pengaturan browser dan API JavaScript. Aplikasi hybrid memiliki WebView sekaligus shell native, artinya tim harus menentukan di mana sumber kebenaran locale berada.

Platform Deteksi locale Pendekatan Format Perangkap Utama
iOS Pengaturan bahasa perangkat atau aplikasi, dengan perilaku spesifik aplikasi jika didukung Formatter Foundation dan JavaScript Intl untuk konten web Layar native dan layar WebView bisa berbeda jika menggunakan state locale terpisah
Android Pengaturan bahasa perangkat dan aplikasi, tergantung implementasi API locale Android dan JavaScript Intl pada konten web Resource qualifier dan resource WebView butuh strategi fallback yang matang
Web Preferensi bahasa browser, pilihan pengguna, atau pengaturan URL dan akun JavaScript Intl, library berbasis ICU, dan penanganan locale di sisi server Keputusan locale server dan client harus sinkron agar rendering tidak inkonsisten
Capacitor Preferensi native plus state WebView Formatter native, JavaScript Intl, dan resource bundle bersama Update JavaScript live dapat mengubah konten yang dilokalisasi tanpa mengubah resource native
Electron Locale OS, preferensi aplikasi, atau pengaturan akun JavaScript Intl, logika sisi Node, dan resource renderer Aset locale yang dipaketkan harus disertakan dan dimuat dengan benar pada production build

Aplikasi mobile native

iOS dan Android masing-masing menyediakan sistem lokalisasi native, namun banyak tim juga merender banyak UI melalui JavaScript. Tentukan apakah layer native dan web berbagi kode locale, key terjemahan, dan aturan fallback. Pastikan pemilihan locale tetap eksplisit agar bahasa pilihan pengguna tidak tergantikan oleh preferensi perangkat saat aplikasi dibuka lagi.

Metadata toko aplikasi perlu perhatian tersendiri. Aplikasi yang sudah dilokalisasi tetap bisa sulit ditemukan jika judul, subtitle, dan deskripsinya hanya dalam satu bahasa. Sebuah analisis 2023 terhadap aplikasi terkemuka di AS yang merambah pasar luar negeri menemukan bahwa 60% melokalisasi judul iOS mereka, hampir 90% melokalisasi deskripsi produk mereka, dan 6 dari 10 melokalisasi subtitle mereka. Di Android, 70% melokalisasi judul dan 89% melokalisasi deskripsi. Ini keputusan storefront, bukan keputusan UI runtime, jadi masukkan ke checklist peluncuran, jangan anggap bundle engineering sudah menanganinya.

Aplikasi web

Web butuh hubungan yang stabil antara URL, server rendering, preferensi browser, dan preferensi akun. Jika server merender bahasa Inggris sementara browser langsung beralih ke bahasa Jerman, pengguna bisa melihat flash atau hydration mismatch. Tentukan urutan prioritas, simpan pilihan pengguna, dan buat fallback locale yang deterministik.

Lazy-load bundle locale kalau aplikasi punya banyak konten terjemahan. Jaga pengalaman default tetap cepat, tapi pastikan jalur offline atau fetch gagal tetap bisa merender fallback yang aman.

Capacitor dan Electron

Aplikasi Capacitor sering berbagi codebase web di iOS, Android, dan browser. Itu membuat resource bersama jadi efisien, tapi plugin native bisa jadi masih punya perilaku locale khusus platform. WebView sebaiknya menerima locale yang ternormalisasi dari satu sumber acuan, bukan menebak sendiri dari pengaturan browser dan perangkat. Tim yang mengevaluasi batasan itu bisa meninjau bagaimana Capacitor menangani perbedaan platform.

Electron menambah kekhawatiran terkait packaging. Renderer mungkin memuat file locale dengan cara berbeda di lingkungan development dan aplikasi yang sudah di-package, sehingga build produksi harus memverifikasi bahwa resource tersedia, dapat diakses, dan diperbarui secara bersamaan. Jika JavaScript bundle dapat menerima Live Update, tentukan apakah file locale merupakan bagian dari bundle yang ditandatangani yang sama dan bagaimana rollback dilakukan jika update gagal.

Tooling, Library, dan Workflow Translasi yang Scalable

Library terjemahan tidak otomatis membuat workflow lokalisasi. Tim bisa memakai i18next, FormatJS, atau native Intl API dan tetap bisa melewatkan rilis jika kepemilikan key, konteks, review, pengiriman, dan rollback tidak jelas. Perlakukan setiap string baru seperti artefak perangkat lunak yang melewati kontrol yang sama dengan code.

Alur kerja yang skalabel mengikuti rantai yang jelas:

  1. Seorang developer menambahkan key semantik dengan konteks, screenshot, variabel, dan batas karakter di tempat yang penting.
  2. Otomasi mengekstrak atau memvalidasi key dan mengirimkannya ke sistem manajemen terjemahan.
  3. Penerjemah dan reviewer menggunakan sumber yang sama sementara build memeriksa placeholder dan locale yang wajib.
  4. CI mengambil resource yang disetujui dan mengemasnya bersama aplikasi atau mengirimkannya melalui channel update yang disetujui.
  5. QA mengecek locale yang berubah daripada mengulang setiap review linguistik dari awal.
  6. Kontrol rilis mengelola eksposur, dimulai dari pengguna internal, beta, atau target tertentu sebelum rollout lebih luas.

Diagram yang mengilustrasikan proses empat langkah yang skalabel untuk internasionalisasi software, manajemen terjemahan, dan workflow localization berkelanjutan.

Mengapa pipeline itu penting

Bottleneck-nya sering kali adalah menunggu konten yang disetujui, bukan menulis code. Sebuah Survei developer 2026 tentang workflow i18n menemukan bahwa 64% responden mengidentifikasi efisiensi workflow terjemahan sebagai tantangan terbesar mereka, 78% mengatakan bahwa menunggu terjemahan menunda rilis, dan 52% tidak memiliki QA terjemahan yang sistematis di luar pengecekan manual. Laporan sumber yang sama menyatakan bahwa 41% telah mengadopsi sistem over-the-air dan 28% merencanakannya untuk 2026. Temuan ini menghubungkan lokalisasi dengan pengiriman rilis, bukan memperlakukannya sebagai siklus konten terpisah.

CI harus menangkap kegagalan yang dapat diprediksi sebelum packaging:

  • Kunci hilang: Gagal atau beri peringatan jika kunci sumber tidak memiliki fallback.
  • Drift placeholder: Verifikasi bahwa variabel seperti {count} ada di setiap pesan terjemahan.
  • Kunci yatim: Tandai resource yang tidak lagi muncul di aplikasi.
  • Sintaks tidak valid: Tolak JSON, pesan ICU, atau file resource yang tidak valid.
  • Cakupan locale: Laporkan locale mana yang berubah dan mana yang masih perlu review.

Untuk pola integrasi CI, lihat ringkasan tools developer experience.

Live updates sebagai release engineering

Untuk tim Capacitor dan Electron, perbaikan lokalisasi dapat dikirim dalam bundle JavaScript, CSS, copy, konfigurasi, dan aset yang ditandatangani. Platform live-update seperti Capgo dapat menargetkan channel, mengirim differential update yang hanya berisi file yang berubah, menampilkan metrik adopsi dan kegagalan, serta menyediakan proteksi rollback otomatis. Ini menciptakan jalur release-engineering untuk memperbaiki label terjemahan yang salah atau aturan layout tanpa menunggu submit store penuh, asalkan tim mendefinisikan kebijakan update, proses review, aturan signing, dan batas kompatibilitas native.

Live update tidak menggantikan rilis store. String native, izin, API platform, dan perubahan yang melampaui runtime native yang terpasang tetap memerlukan jalur distribusi yang sesuai. Mereka menyediakan jalur yang lebih cepat untuk perubahan lokalisasi yang kompatibel, di mana perbaikan konten kecil biasanya harus menunggu rilis aplikasi berikutnya.

Testing QA, Performa, dan Keamanan untuk Aplikasi Global

Pengujian internasionalisasi harus mengungkap asumsi sebelum pengguna melakukannya. Satu screenshot terjemahan saja tidak cukup karena kegagalan sering bergantung pada kombinasi tertentu dari locale, panjang data, ukuran layar, arah penulisan, dan platform.

Daftar periksa empat langkah untuk menguji performa QA dan keamanan di aplikasi perangkat lunak global.

Mulai dengan konten yang ekstrem

Pseudolocalization mengganti string normal dengan teks uji yang sengaja dibuat lebih panjang, beraksen, atau dikelilingi penanda. Ini membantu mendeteksi hardcoded string, label terpotong, card bertinggi tetap, dan kontrol yang hanya berfungsi dalam bahasa Inggris. Uji kondisi kosong maupun terisi karena pesan plural dan error validasi sering memakai jalur layout berbeda.

Pengujian RTL butuh penelusuran navigasi menyeluruh. Periksa perataan teks, tombol kembali, ikon, chart, gesture swipe, kolom form, dan konten campuran arah seperti kalimat Arab yang berisi code. Jangan mirror semua ikon secara otomatis. Ikon arah mungkin perlu di-mirror, sementara logo brand dan sebagian ikon objek harus tetap sama.

Otomatiskan matriks locale

Buat matriks pengujian berdasarkan kombinasi bahasa dan wilayah yang didukung, bukan hanya nama bahasa. Satu bahasa bisa punya konvensi berbeda di tiap wilayah, terutama untuk tanggal, angka, mata uang, kalender, dan zona waktu.

  • Pengecekan fungsional: Konfirmasi pemilihan locale, persistensi, fallback, percabangan plural, dan pesan error.
  • Pengecekan visual: Ambil screenshot layar utama dengan string panjang, RTL aktif, dan lebar sempit.
  • Pengecekan linguistik: Beri reviewer konteks, screenshot, variabel, dan aksi yang dimaksud.
  • Pemeriksaan regresi: Uji instalasi update, download yang terputus, startup offline, dan perilaku rollback.

Performa membutuhkan disiplin seiring bertambahnya resource locale. Pecah bundle besar per locale atau fitur jika perlu, lazy-load bahasa non-esensial, dan cache resource yang tervalidasi. Hindari membuat layar pertama bergantung pada request terjemahan yang lambat kecuali aplikasi memiliki fallback yang andal.

Keamanan termasuk dalam review yang sama. Perlakukan identifier locale dan konten terjemahan dari user sebagai input, validasi struktur resource, lindungi kredensial manajemen terjemahan, dan verifikasi integritas bundle yang dikirim secara remote. Alur kerja live-update harus menggunakan artifact bertanda tangan, channel terkendali, pemeriksaan kompatibilitas versi, kegagalan yang dapat diamati, dan jalur rollback yang teruji. Tim yang merancang kontrol deployment juga dapat meninjau panduan ini untuk deployment multi-region.

Implementasi Lengkap dengan Contoh Code dan Checklist Migrasi

Layar checkout menunjukkan mengapa urutan migrasi penting. Mulai dari code yang paling sering disentuh user, lalu ganti setiap asumsi dengan batas yang sadar locale. Label hardcoded, tanggal, mata uang, pesan plural, dan layout lebar tetap harus menjadi tugas migrasi terpisah, dengan locale fallback mencegah resource yang hilang meninggalkan kontrol kosong.

Sebagai contoh, ganti penggabungan mata uang di komponen yang sudah ada.

Sebelum:

price.textContent = currencySymbol + amount;

Sesudah:

price.textContent = new Intl.NumberFormat(locale, {
  style: "currency",
  currency: currencyCode
}).format(amount);

Pertahankan amount sebagai nilai numerik mentah. Formatter menentukan penempatan simbol, pemisah, konvensi desimal, dan detail regional lainnya. Ini menghindari tersebarnya aturan locale di logika checkout.

Checklist migrasi praktis:

  • Inventarisasi: Temukan string yang tampil ke pengguna, nilai terformat, gambar berisi teks, dan asumsi locale.
  • Eksternalisasi: Pindahkan copy ke file resource dengan key semantik dan konteks penerjemah.
  • Normalisasi state locale: Definisikan deteksi, override pengguna, persistensi, dan perilaku fallback.
  • Ganti formatting manual: Gunakan formatter locale-aware dari platform atau JavaScript.
  • Perkuat layout: Uji ekspansi, pemotongan, teks bidireksional, font, dan mirroring RTL.
  • Otomatiskan validasi: Cek missing keys, placeholder, sintaks resource, dan locale yang berubah di CI.
  • Rilis dengan aman: Rilis perubahan lokalisasi yang kompatibel melalui proses store atau channel live-update yang terkontrol, dengan signing, staged exposure, monitoring, dan rollback.

Pilih satu flow dengan traffic tinggi, seperti onboarding atau checkout, untuk tahap awal. Setelah resource boundary dan validation pipeline berjalan, terapkan konvensi yang sama ke seluruh app daripada mencoba rewrite yang tidak terkontrol.

Untuk tim CapacitorJS dan Electron, Capgo mendukung signed live-update bundle untuk perubahan JavaScript, CSS, copy, konfigurasi, dan asset yang kompatibel. Channels, differential delivery, observability, dan rollback protection dapat menghubungkan perbaikan lokalisasi ke workflow CI/CD yang sudah ada, mengurangi ketergantungan pada review store untuk setiap koreksi yang kompatibel. Evaluasi jalur rilis tersebut terhadap kontrol deployment Anda sebelum memperluasnya ke locale lain.

Live updates untuk aplikasi Capacitor

Saat bug web-layer sudah live, kirim perbaikannya lewat Capgo alih-alih menunggu berhari-hari untuk persetujuan app store. Pengguna mendapat update di background, sementara perubahan native tetap mengikuti jalur review normal.

Terbaru dari Blog kami

Capgo memberikan insight terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.