Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ package com.facebook.react.modules.i18nmanager
import android.content.Context
import android.content.pm.ApplicationInfo
import android.view.View
import androidx.core.os.ConfigurationCompat
import androidx.core.text.TextUtilsCompat
import java.util.Locale

public class I18nUtil private constructor() {
/**
Expand Down Expand Up @@ -61,8 +63,9 @@ public class I18nUtil private constructor() {

// Check if the current device language is RTL
private fun isDevicePreferredLanguageRTL(context: Context): Boolean {
val directionality =
TextUtilsCompat.getLayoutDirectionFromLocale(context.resources.configuration.locales[0])
val locale =
ConfigurationCompat.getLocales(context.resources.configuration)[0] ?: Locale.getDefault()
val directionality = TextUtilsCompat.getLayoutDirectionFromLocale(locale)
return directionality == View.LAYOUT_DIRECTION_RTL
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

package com.facebook.react.modules.i18nmanager

import android.content.Context
import android.content.pm.ApplicationInfo
import org.assertj.core.api.Assertions.assertThat
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config

@RunWith(RobolectricTestRunner::class)
internal class I18nUtilTest {
private lateinit var context: Context

@Before
fun setUp() {
context = RuntimeEnvironment.getApplication()
context.applicationInfo.flags =
context.applicationInfo.flags or ApplicationInfo.FLAG_SUPPORTS_RTL
I18nUtil.instance.allowRTL(context, true)
I18nUtil.instance.forceRTL(context, false)
}

@Test
@Config(sdk = [23], qualifiers = "ar")
fun isRTL_onApi23_usesPreferredLocale() {
assertThat(I18nUtil.instance.isRTL(context)).isTrue()
}
}
Loading