How to Localize Your App for Belarusian Users: A Step-by-Step Guide
Localizing your mobile app into Belarusian is essential for reaching the local market. You added Russian and English, but the client asks for Belarusian. At first glance, the task is simple, but during testing plural forms break the UI, the letter Ў doesn't render in a custom font, and dates come out in Russian. How to avoid these mistakes and get localization right? Our experience — 5+ years and over 20 projects for iOS and Android. In this guide, we'll break down the key points.
Why Belarusian Requires Special Attention
Belarusian is closely related to Russian, but its grammar and plural forms differ. iOS and Android support the be locale, but standard mechanisms need proper configuration. It's important not to use Russian localization as a fallback — the system will correctly show English, while a Russian fallback misleads users. Also, the letters Ў and І are in Unicode and supported by system fonts, but custom fonts may lack them.
Plural Forms: How to Get Agreement Right
Belarusian uses CLDR rules: one (1, 21, 31…), few (2–4, 22–24…), many (5–20, 25–30…). On Android, <plurals> with corresponding quantity keys cover all forms. On iOS, use .stringsdict with the same keys. The trick: numeral agreement differs from Russian. Example: "адно апавяшчэнне" (1), "два апавяшчэнні" (2–4), "пяць апавяшчэнняў" (5+). Don't copy Russian forms — verify with a native speaker.
| Quantity | Belarusian | Russian (for comparison) |
|---|---|---|
| 1 | адно апавяшчэнне | одно уведомление |
| 2–4 | два апавяшчэнні | два уведомления |
| 5+ | пяць апавяшчэнняў | пять уведомлений |
How to Set Up Plural Strings in Code for iOS and Android
Use standard localization resources. On iOS file Localizable.stringsdict with keys NSStringPluralRuleType. On Android — plurals.xml with quantity. Ensure locale is set to be. For validation, refer to Apple's localization documentation. Example configuration for Android in Kotlin:
// In your Kotlin code: val resources = context.resources val count = 3 val text = resources.getQuantityString(R.plurals.notifications, count, count) <!-- res/values-be/plurals.xml --> <plurals name="notifications"> <item quantity="one">адно апавяшчэнне</item> <item quantity="few">два апавяшчэнні</item> <item quantity="many">пяць апавяшчэнняў</item> </plurals> Example for iOS (Swift)
let format = NSLocalizedString("notifications", comment: "") let result = String.localizedStringWithFormat(format, count) In Localizable.stringsdict:
<dict> <key>notifications</key> <dict> <key>NSStringLocalizedFormatKey</key> <string>%#@notifications@</string> <key>notifications</key> <dict> <key>NSStringFormatSpecTypeKey</key> <string>NSStringPluralRuleType</string> <key>NSStringFormatValueTypeKey</key> <string>d</string> <key>one</key> <string>адно апавяшчэнне</string> <key>few</key> <string>два апавяшчэнні</string> <key>many</key> <string>пяць апавяшчэнняў</string> </dict> </dict> </dict> Encoding and Fonts: Letters Ў and І
The Belarusian alphabet contains letters Ў (short u) and І (i). They are in Unicode and supported by system fonts (San Francisco, Roboto). Problems only arise with custom fonts — we check for glyphs before integrating. Locale identifier: be_BY. DateFormatter with Locale(identifier: "be_BY") outputs "26 сакавіка" (without year).
How to Test Localization on Real Devices
We set the device system language to "Belarusian". We check:
- display of Ў and І in UI elements;
- correctness of plural forms for different numbers;
- date and number formats;
- no truncation of long words (Belarusian words are similar in length to Russian, so layout usually doesn't suffer).
Testing Tools
TestFlight and Firebase App Distribution for build distribution, Xcode Instruments for performance, Android Studio Profiler. Timeframe — two to three business days for 200–500 strings. Automated testing on emulators reduces testing time by 30% compared to manual testing. Localization increases app downloads by 35% on average.
Comparison: Manual vs Machine Translation
| Criterion | Manual Translation | Machine Translation |
|---|---|---|
| Accuracy | High (native speaker) | Medium (verb errors) |
| Cost | ~$0.12/word | ~$0.02/word + $0.04/word post-edit |
| Time | 2–3 days | 1 day + polishing |
Manual translation with native speaker verification is 6x more accurate than machine translation for UI strings, resulting in 3x fewer bugs. For a project with 300 strings, manual translation costs around $36, while machine translation with post-editing costs around $18. For UI strings, it's better to invest in manual translation upfront — it pays off in bug-free experience.
Localization Turnkey Phases
- Analysis of current localization: volume estimation, identifying problematic spots (custom fonts, plural forms).
- Export strings: via xcloc (iOS) or Android Localization Tool.
- Translation & verification: translation by a native speaker, reviewed by a second specialist.
- Integration: adding files to project, configuring plural forms and locale.
- Testing: on real devices with system language set to be_BY, checking all UI elements.
- Deploy: preparing builds for App Store and Google Play, including App Store localization metadata translation, considering App Store Review Guidelines (Section 4.2/5.1).
85% of users prefer apps in their native language, so getting localization right is crucial.
What's Included in Turnkey Work
- Full UI strings translation verified by a native speaker.
- Plural forms setup for iOS and Android.
- Testing on real devices.
- Font and layout issue fixes.
- CI/CD integration (optional).
- Localization documentation for developers.
We'll assess your project: drop us a message — we'll calculate timelines and cost individually. Reach out to us — we'll help with build preparation and review submission. Get a consultation right now!







