Hi RevenueCat Team! 👋
I'd love to request a highly needed feature that would significantly improve the user experience for apps with custom language selection functionality.
## The Problem
Currently, RevenueCat paywalls automatically determine their display language based on the device's system locale settings. While this works great for most cases, it creates a major UX issue for apps that allow users to change the app language independently from their device settings.
*Current limitations:*
- Paywalls always use device locale, ignoring in-app language preferences
- No way to programmatically specify which localization to display
- Users see paywalls in different languages than their chosen app language
- Particularly problematic for language learning apps, international apps, and apps targeting multilingual users
## Proposed Solution
Add an optional locale or language parameter to paywall presentation methods across all platforms:
*iOS (Swift):*
swift
.presentPaywallIfNeeded(
requiredEntitlementIdentifier: "pro",
locale: Locale(identifier: "es-ES"), // New parameter
purchaseCompleted: { customerInfo in }
)
*React Native:*
javascript
RevenueCatUI.presentPaywall({
locale: 'fr-FR', // New parameter
offering: offering
});
*Android:*
kotlin
PaywallDialog(
PaywallDialogOptions.Builder()
.setLocale("de-DE") // New parameter
.build()
)
## Use Cases & Business Impact
1. *Language Learning Apps*: Users learning Spanish should see Spanish paywalls regardless of their English device settings
2. *International Apps*: Apps serving multiple markets need precise control over paywall language
3. *Improved Conversion*: Language consistency between app and paywall increases user trust and conversion rates
4. *User Experience*: Eliminates confusion when paywall language doesn't match app language
## Community Demand
I've seen multiple developers requesting this feature:
- GitHub Issue #1223 in react-native-purchases
- Several community posts about localization problems
- Developers building workarounds or considering custom paywalls due to this limitation
## Technical Details
The feature should:
- Accept standard language codes (ISO 639-1) and locale identifiers (BCP 47)
- Fall back to device locale if specified locale isn't available
- Fall back to default paywall locale if neither works
- Work with all existing paywall localization configurations in RC dashboard
## Current Workaround Status
Unfortunately, there are no reliable workarounds. The current system only considers:
- Device language settings
