Cara Mudah Membuat Aplikasi iOS yang Mendukung Berbagai Bahasa Pengguna pada UIkit dan SwiftUI Menggunakan String Catalog

Galang Aji Susanto
7 min readAug 28, 2024

--

Sebuah aplikasi pasti ingin digunakan oleh banyak orang dan bisa dijangkau pengguna di berbagai negara dan wilayah. Salah satu strategi yang bisa mendukung itu semua adalah dengan membuat aplikasi yang mendukung berbagai bahasa. Hal tersebut penting karena pengguna akan merasa nyaman dan mudah dalam menggunakan aplikasi.

Localization is the process of translating and adapting your app into multiple languages and regions. ~ Apple Localization Documentation

Ada berbagai cara yang bisa dilakukan agar aplikasi iOS yang kita buat bisa mendukung berbagai bahasa atau yang biasa disebut lokalisasi. Diantaranya adalah

  1. Strings: Cara ini bisa dilakukan untuk lokalisasi string atau text. Di dalamnya terdapat key dan value yang digunakan untuk mendapatkan text hasil lokalisasinya. Namun kekurangan cara ini adalah tidak mendukung plural dan tidak terdapat graphic user interface (GUI) sehingga akan sangat mungkin terjadi kesalahan. Kesalahan yang biasa terjadi adalah ada text yang belum diubah dalam berbagai bahasa.
  2. Stringsdict: Cara ini digunakan untuk lokalisasi text plural. Sama seperti String, Stringdict juga tidak di dukung oleh GUI yang memadai, sehingga sangat rentan terjadi kesalahan.
  3. String Catalog: Cara ini merupakan rekomendasi dari Apple untuk melalukan lokalisasi di iOS. Diperkenalkan pada WWDC 2023 namun membutuhkan XCode 15 ke atas.

Pada tutorial kali ini kita akan menggunakan String Catalog dan akan kita bahas lebih mendetail. Jadi seduh kopi dulu, tarik nafas panjang, biar belajar makin semangat 😁

String Catalog

String Catalog merupakan pengganti dari String dan Stringdict, datang dengan format baru, dilengkapi GUI dan workflow. Dengan String Catalog kita bisa melakukan lokalisasi text dan plural dengan lebih mudah.

Kelebihan yang dimiliki String Catalog diantaranya adalah

  1. Dilengkapi dengan GUI yang memadai. Kita bisa mengganti terjemahan melalui GUI atau visual yang disediakan, melihat persentase berapa banyak text yang telah diterjemahkan. Di GUI tersebut kita juga bisa menambahkan komentar untuk memperjelas konteks dari text yang diterjemahkan.
  2. Workflow yang lebih jelas. Dengan GUI yang disediakan XCode kita bisa melihat dan mengganti status dari terjemahan suatu text. Status yang tersedia diantaranya adalah New, Need Review, Reviewed, dan Stale. Sehingga kita bisa tahu apabila terdapat penambahan atau perubahan text baru atau ada text yang perlu di review ulang.
  3. Digunakan untuk menerjemahkan text dan plural. Di plural sendiri kita bisa menerjemahkan berdasarkan jumlah (zero, one, dan other) atau berdasarkan platform (iOS, macOS, watchOS).
  4. Bisa melakukan export dan import asset text lokalisasi dengan mudah. Fitur ini sangat berguna apabila text yang ingin diterjemahkan banyak dan membutuhkan jasa penerjemah. Kita tinggal mengirim file hasil export lokalisasi ke penerjemah, penerjemah langsung menerjemahkan di file tersebut, dan kita import file hasil terjemahan ke projek iOS kita. Hasilnya text terjemahan akan terisi otomatis. Mudah bukan? 😄 Kita sebagai developer iOS tidak perlu lagi repot-repot untuk mengisi text satu-satu.

Implementasi String Catalog pada UIKit

  1. Buat satu projek baru dengan interface storyboard.
Gambar 1. Buat projek iOS baru dengan interface storyboard

2. Tambahkan 3 label di storyboard sebagai sample hasil terjemahan. Atur semua constraints-nya sehingga tampilannya akan nampak seperti dibawah ini.

Gambar 2. Menambahkan 3 label di strory board

3. Tambahkan String Catalog file di projek dengan cara Klik File -> New file -> Pilih String Catalog -> Next -> Create. File dengan format .xcstrings dengan default lokalisasinya Bahasa Inggris akan dibuat apabila proses ini berhasil.

Gambar 3. Buat String Catalog file baru
Gambar 4. File String Catalog dengan default bahasa inggris otomatis terbuat

4. Tambahkan text lokalisasi di GUI String Catalog untuk Bahasa Inggris.

Gambar 5. Terjemahan untuk bahasa inggris

Selanjutnya muncul pertanyaan apa sih yang dimaksud dengan %@, %lld dan %.1f ?

%@, %lld dan %.1f disebut dengan String Format Specifier. Secara mudah bisa di pahami %@, %lld dan %.1f akan di digantikan oleh string dengan format tertentu.

%@: String

%lld: Integer

%.1f: Float dengan 1 angka dibelakang koma.

Untuk lebih lengkapnya anda bisa mengunjungi link ini.

5. Tambahkan kondisi plural di string catalog. Caranya dengan klik kanan di key -> Vary by Plural -> Pilih Argument 1. Ulangi cara tersebut untuk memilih argument 2.

Gambar 6. Menambahkan plural pada String Catalog

Setelah itu tambahkan Pluralnya, seperti gambar dibawah ini.

Gambar 7. Menambahkan plural pada String Catalog

Karena Bahasa Inggris mendukung plural maka akan muncul one dan other. One berarti singular, other berarti plural.

6. Untuk menambahkan target lokalisasi lainnya kamu bisa menekan button + di bagian bawah -> pilih negara

Gambar 8. Button untuk menambahkan negara target lokalisasi
Gambar 9. Tampilan pilih negara target lokalisasi

7. Tambahkan terjemahan dan kondisi plural untuk Bahasa Indonesia. Caranya sama dengan langkah 5. Karena Bahasa Indonesia tidak mendukung plural maka pilihan yang muncul hanya ada other.

Gambar 10. Tambahkan terjemahan bahasa indonesia di String Catalog

8. Di ViewController tambahkan IBOutlet untuk 3 label, sambungkan dengan storyboard dan assign text lokalisasinya ke dalam label tersebut.


import UIKit

class ViewController: UIViewController {

@IBOutlet weak var message1Label: UILabel!
@IBOutlet weak var message2Label: UILabel!
@IBOutlet weak var message3Label: UILabel!

let name = "Galang"
let applicationCount = 6
let yearExperience = 3.5

override func viewDidLoad() {
super.viewDidLoad()
message1Label.text = String(localized: "Hello, world! My name is \(name)")
message2Label.text = String(localized: "I love coding")
message3Label.text = String(localized: "After \(yearExperience, specifier: "%.1f") year(s) experience, i have released \(applicationCount) application(s)")
}
}

9. Untuk mencoba lokalisasi berjalan atau tidak, kita bisa melakukan simulasi dengan mengganti pengaturan bahasa schema.

Gambar 11. Button edit scheme
Gambar 12. Pilih bahasa yang akan dilakukan pengujian

10. Selesai dan coba jalankan aplikasinya.

Gambar 13. Hasil running aplikasi pada Bahasa Inggris
Gambar 14. Hasil running aplikasi pada Bahasa Indonesia

Implementasi String Catalog pada SwiftUI

Di SwiftUI implementasinya akan lebih mudah dibandingkan dengan UIKit.

  1. Buat satu projek baru dengan interface Swift UI.
Gambar 15. Buat projek iOS baru dengan interface SwiftUI

2. Pada ContentView, buat 3 Text di dalam body sebagai sample dari terjemahan.

import SwiftUI

struct ContentView: View {

let name = "Galang"
let applicationCount = 6
let yearExperience: Double = 3.5

var body: some View {
VStack(alignment: .leading, spacing: 20) {
Text("Hello, world! My name is \(name)")

Text("I love coding")

Text("After \(yearExperience, specifier: "%.1f") year(s) experience, i have released \(applicationCount) application(s)")
}
.padding()
}
}

#Preview {
ContentView()
}

3. Tambahkan String Catalog file di projek dengan cara Klik File -> New file -> pilih String Catalog -> New (Sama seperti langkah 3 pada UIKit).

4. Build projeknya dan terjemahan dalam Bahasa Inggris akan langsung otomatis terisi. The magic of Swift UI 😁

Gambar 16. String catalog akan otomatis terisi ketika selesai build projek

5. Tambahkan kondisi plural untuk Bahasa Inggris (Sama seperti langkah 5 pada UIKit).

6. Untuk menambahkan target lokalisasi lainnya kamu bisa menekan button + di bagian bawah -> pilih negara (Sama seperti langkah 6 pada UIKit).

7. Tambahkan terjemahan dan kondisi plural untuk Bahasa Indonesia (Sama seperti langkah 7 pada UIKit).

8. Untuk mencoba lokalisasi berjalan atau tidak, kita bisa melakukan simulasi dengan mengganti pengaturan bahasa schema (Sama seperti langkah 9 pada UIKit).

9. Selesai dan cukup lihat hasilnya di preview.

Gambar 17. Hasil preview aplikasi pada Bahasa Inggris
Gambar 18. Hasil preview aplikasi pada Bahasa Indonesia

Bonus Part : Migrasi dari Legacy String ke String Catalog

Untuk melakukan migrasi dari projek yang sebelumnya menggunakan String ke String Catalog, kita tidak perlu menaikan target iOS ke lebih tinggi. XCode sudah mendukung migrasi ke String Catalog dengan cukup mudah. Kita juga tidak perlu memindahkan textnya manual. Langkah-langkahnya sebagai berikut:

  1. Klik kanan pada String lokalisasi -> Pilih migrasi ke String Catalog -> Pilih Migrasi.
Gambar 19. Migrasi dari String ke String Catalog
Gambar 20. Migrasi dari String ke String Catalog

2. Selesai migrasi, file String kita akan diganti menjadi XCStrings yang menandakan proses migrasi berhasil.

Terimakasih untuk team Apple yang telah membuat proses migrasi jadi lebih mudah😊

Selamat anda telah menyelesaikan tutorial String Catalog. Cukup mudah bukan? Apakah kita harus menggunakan String Catalog untuk lokalisasi di projek iOS yang kita buat? Menurut saya kalo kita buat projek baru sebaiknya langsung menggunakan String Catalog, karena Apple merekomendasikan menggunakan String Catalog. Kita juga tidak tahu di masa depan Apple akan mewajibkan menggunakan String Catalog atau tidak.

Apakah projek yang sebelumnya menggunakan String harus di migrasi ke String Catalog? Menurut saya tidak harus, karena kita juga harus melihat berdasarkan kebutuhan. Tetapi dengan segala kelebihan String Catalog saya merekomendasikan untuk menggunakan String Catalog.

Terimakasih sudah membaca tutorial ini sampai akhir.

Jangan lupa clap dan follow kalau atrikel ini bermanfaat ya hehe :) Sampai ketemu di artikel berikutnya!

--

--

Galang Aji Susanto
Galang Aji Susanto

Written by Galang Aji Susanto

iOS Developer | Apple Developer Academy Graduate | Mobile Tech Enthusiast | Full Time Learner & Part Time Coder

No responses yet