Projects

Multilingual Mobile Application

Cross-platform mobile app with 20+ language support. React Native + Expo, i18next, RTL support, NativeWind and Zustand state management.

React NativeExpo 52i18nextNativeWindZustandFirebase

Noor is a cross-platform mobile application that supports more than 20 languages and natively handles right-to-left (RTL) text direction. Built on React Native and Expo 52 managed workflow, the app is published to iOS and Android from a single code base. This individual project was developed to explore the technical requirements of building a truly localized mobile experience for an international user base.

Problem

Mobile apps targeting a global user base can no longer get by with only English or a few major Western languages. Delivering a genuine localization experience for users from different geographies brings multiple technical challenges together at once: for languages with RTL text direction such as Arabic and Hebrew, the entire page layout must be mirrored, and the typography of these languages requires special font support. Managing translation files, adding new languages, and applying language changes in real time without restarting the app becomes nearly impossible in a project that lacks a pre-planned architecture.

Solution

The i18next library formed the backbone of the translation layer. Language files are kept in JSON format; adding a new language means only a translation file and a language list update. RTL layout is automatically enabled for languages such as Arabic and Hebrew; in RTL mode, the Amiri font is activated to ensure Arabic text is displayed with the correct typographic weight and readability. Language changes are reflected instantly across all screens without restarting the app. NativeWind was chosen for style management and Zustand for state management; push notifications are delivered via Firebase Cloud Messaging.

Key Features

  • 20+ Language Support: JSON-based centralized translation system with i18next; adding a new language does not require changing application code, only adding a new translation file
  • RTL Support: Automatic layout mirroring for Arabic and Hebrew; Amiri font integration for correct Arabic typography
  • Instant Language Switching: When the user changes their language preference, all screens, components, and system messages update without requiring a restart
  • NativeWind Style System: Styling React Native components with Tailwind CSS classes; a consistent design language that brings web development habits to native applications
  • Zustand State Management: Clean, readable global state without Redux’s heavy structure; boilerplate code is minimal
  • Firebase Backend: Authentication, Firestore data storage, and iOS and Android push notifications via FCM
  • Location Services: Content and notification personalization based on user location

Technical Infrastructure

Expo 52 managed workflow allowed focusing on application logic rather than spending time on platform-specific configurations; features requiring native modules were integrated through the Expo plugin catalog. Making RTL support an architectural decision from the very start was a deliberate choice: RTL support added later requires all components to be reviewed again. The reason Zustand was preferred over Redux was that the global state layer needed to be kept proportionate to the application’s size; unnecessary abstraction layers were avoided with a small and simple API. NativeWind kept the design system consistent throughout the code base while making it possible to carry web development habits to the native side.

Results

Noor became a concrete project that demonstrates to what extent developing a mobile application for an international audience requires a pre-planned architecture. Building RTL support and a multilingual structure into the design from the outset avoided costly refactoring in later stages of development. The Expo managed workflow shortened development time by eliminating platform-specific configuration overhead. The result was a mobile application with a single code base capable of truly reaching a global user base with support for more than 20 languages and RTL.