SwiftUI অ্যাপ লোকালাইজ করা অনেক সহজ। ইউজারকে নিজের পছন্দ মত ভাষায় অ্যাপ ব্যবহারের সুযোগ করে দিতে পারি লোকালাইজেশনের মাধ্যমে। এর জন্য আমাদের শুধু স্ট্রিং ক্যাটালগ ফাইল যোগ করতে হবে। এরপর আমাদের অ্যাপে যত গুলো স্ট্রিং ব্যবহার করেছি, সব গুলো এই স্ট্রিং ক্যাটালগ ফাইলে যোগ হয়ে যাবে। প্রজেক্টে স্ট্রিং ক্যাটালগ ফাইল যোগ করার জন্য File > New > New File From Template এ গিয়ে এরপর String Catalog যোগ করে নিব।
এই স্ট্রিং ক্যাটালগ এড করার পর প্রজেক্ট বিল্ড করলে প্রজেক্টের সব স্ট্রিং এখানে যোগ হবে। কোন কোন ভাষার জন্য আমরা এই স্ট্রিং লোকালাইজ করতে চাচ্ছি, তা এখানে যোগ করতে পারব। নিচের দিকে বাম কোনায় ছোট্ট + আইকন রয়েছে। যেমন আমি বাংলা এবং আরবি যোগ করেছি।
এরপর প্রতিটা স্ট্রিং নির্দিষ্ট ভাষায় কি হবে, তা আমরা যোগ করে দিতে পারব। প্রিভিউতে .environment(.locale, Locale(identifier: “bn”)) যোগ করে দিলে বাংলা ভাষায় নির্দিষ্ট স্ট্রিং দেখাবে।
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Text("Hello")
}
.padding()
}
}
#Preview {
ContentView()
.environment(\.locale, Locale(identifier: "bn"))
}
এতটুকুই আলাদা কোন সেটিংস এর দরকার হবে না। ইন্টারেস্টিং না? মোবাইলে বা সিমুলেটরে টেস্ট করতে চাইলে সেটিং থেকে ভাষা পরিবর্তন করে দেখতে পারি।
অ্যাপে যদি একাধিক স্ট্রিং যোগ করি, তাহলে স্ট্রিং ক্যাটাগলে অটোমেটিক সব গুলো স্ট্রিং যোগ হবে। এরপর নির্দিষ্ট ভাষার অনুবাদ আমরা যোগ করতে পারব।
আমরা চাইলে অ্যাপে অপশন রাখতে পারি যেন ইউজার পছন্দের ভাষা নির্বাচন করতে পারে। আর ভাষা নির্বাচনটা যেন অ্যাপ বন্ধ করলেও সেভ থাকে, তার জন্য আমরা AppStorage ব্যবহার করব।
import SwiftUI
struct ContentView: View {
@AppStorage("selectedLanguage") var selectedLanguage = "bn"
let username = "Khan"
var body: some View {
VStack {
Picker("Select Langugage", selection: $selectedLanguage) {
Text("English").tag("en")
Text("বাংলা").tag("bn")
Text("العربية").tag("ar")
}
.pickerStyle(SegmentedPickerStyle())
Text("Hello")
Text("Welcome \(username)")
}
.padding()
}
}
#Preview {
ContentView()
.environment(\.locale, Locale(identifier: "bn"))
}
এখানে পিকার স্টাইল দিয়ে আমরা তিনটা ভাষা থেকে যে কোন ভাষা সিলেক্ট করার অপশন যোগ করেছি। এবার অ্যাপের স্টার্টিং পয়েন্ট ফাইলে আমাদের ল্যাঙ্গুয়েজ সেট করার অপশন যোগ করতে হবে। যেমনঃ
import SwiftUI
@main
struct LocalizeStringsApp: App {
@AppStorage("selectedLanguage") var selectedLanguage = "bn"
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.locale, Locale(identifier: selectedLanguage))
}
}
}
অ্যাপ রান করলে আমরা ভাষা পরিবর্তন করতে পারব। ইউজারকে নির্দিষ্ট ভাষায় অ্যাপের কন্টেন্ট গুলো দেখাবে।
প্রজেক্ট পাওয়া যাবে গিটহাবে। আইওএস অ্যাপ ডেভেলপমেন্ট নিয়ে অন্যান্য লেখা।