Skip to main content
Answer

RC Paywall – local language switching?

  • September 1, 2025
  • 4 replies
  • 107 views

Forum|alt.badge.img

Hi,

In my app, users can manually select their preferred language, since many of them don’t change their phone’s system language to match their native one.

Because of this, the app language is controlled through my own state management system rather than relying on the device’s localization settings.

The problem is that I can’t find a way to localize the paywall to match this internal language setting.

Am I missing something here, or does this mean I can’t localize the paywall at all?

This feature is essential for us, and it could determine whether we continue with RevenueCat or need to explore alternatives.

Please help!

Best answer by alejandra-wetsch

Hey ​@aprskavec2

This feature is now available in the following SDK versions: 

  • React Native: 9.4.0
  • Android: 9.5.0

Below you will find how to implement this for each SDK.
iOS

// During configuration
let builder = Configuration
.builder(withAPIKey: "")
.with(preferredUILocaleOverride: "de_DE")

// At any time as long as the SDK is already configured
// Override locale at runtime; will automatically clear cache when the locale changes
Purchases.shared.overridePreferredUILocale("de_DE")

// Revert to system default
Purchases.shared.overridePreferredUILocale(null);

Android

// During configuration
val configuration = PurchasesConfiguration.Builder(context, apiKey)
.preferredUILocaleOverride("es-ES") // or "es_ES" - both formats supported
.build()
Purchases.configure(configuration)

// Ay any other time as long as the SDK is configured
// Set preferred locale (automatically clears cache if changed)
Purchases.sharedInstance.overridePreferredUILocale("de-DE")

// Revert to system default
Purchases.sharedInstance.overridePreferredUILocale(null)

React Native

// During configuration
Purchases.configure({
apiKey: '<YOUR_API_KEY>',
// other configuration options...
preferredUILocaleOverride: 'es-ES' // both "es-ES" and "es_ES" formats supported
});

// At any time as long as the SDK is configured
// Override locale at runtime; will automatically clear cache when the locale changes
await Purchases.overridePreferredLocale('de-DE');

// Revert to system default
await Purchases.overridePreferredLocale(null);

When the cache gets cleared, offerings will get refetched.

I hope this helps!

This post has been closed for comments

4 replies

alejandra-wetsch
RevenueCat Staff
Forum|alt.badge.img+6

Hey ​@aprskavec2

Thank you for reaching out!

You can override the preferred locale for Paywall components for iOS in versions 5.31.0 onwards. 

/// - Parameter locale: A locale string in the format "language_region" (e.g., "en_US")
Purchases.shared.overridePreferredUILocale("en_US")

The team is currently working on adding support for Android and Hybrid SDKs, and it should get shipped either this week or next. I’ll let you know as soon as it happens!


alejandra-wetsch
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • Answer
  • September 10, 2025

Hey ​@aprskavec2

This feature is now available in the following SDK versions: 

  • React Native: 9.4.0
  • Android: 9.5.0

Below you will find how to implement this for each SDK.
iOS

// During configuration
let builder = Configuration
.builder(withAPIKey: "")
.with(preferredUILocaleOverride: "de_DE")

// At any time as long as the SDK is already configured
// Override locale at runtime; will automatically clear cache when the locale changes
Purchases.shared.overridePreferredUILocale("de_DE")

// Revert to system default
Purchases.shared.overridePreferredUILocale(null);

Android

// During configuration
val configuration = PurchasesConfiguration.Builder(context, apiKey)
.preferredUILocaleOverride("es-ES") // or "es_ES" - both formats supported
.build()
Purchases.configure(configuration)

// Ay any other time as long as the SDK is configured
// Set preferred locale (automatically clears cache if changed)
Purchases.sharedInstance.overridePreferredUILocale("de-DE")

// Revert to system default
Purchases.sharedInstance.overridePreferredUILocale(null)

React Native

// During configuration
Purchases.configure({
apiKey: '<YOUR_API_KEY>',
// other configuration options...
preferredUILocaleOverride: 'es-ES' // both "es-ES" and "es_ES" formats supported
});

// At any time as long as the SDK is configured
// Override locale at runtime; will automatically clear cache when the locale changes
await Purchases.overridePreferredLocale('de-DE');

// Revert to system default
await Purchases.overridePreferredLocale(null);

When the cache gets cleared, offerings will get refetched.

I hope this helps!


Forum|alt.badge.img
  • Author
  • New Member
  • September 10, 2025

Yes thank you! Last thing I am missing are more localizaitons. Such as Arabic-Egypt, Arabic-Lebanon, or Spanish-Mexico, Spanish-Spain etc etc etc :)


alejandra-wetsch
RevenueCat Staff
Forum|alt.badge.img+6

Hey ​@aprskavec2

You’re more than welcome! 

We already support the Spanish-Mexico and Spanish-Spain languages. Please check the screenshot below for reference.

 

I’ll share your request to add support for Arabic-Egypt and Arabic-Lebanon with the engineering team, so they can review it and prioritize it accordingly.

Thanks!