Skip to content
Open
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 @@ -5,11 +5,12 @@ import androidx.compose.runtime.*
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.text.intl.Locale

class ResourceEnvironment internal constructor(
internal val language: LanguageQualifier,
internal val region: RegionQualifier,
internal val theme: ThemeQualifier,
internal val density: DensityQualifier
@ExperimentalResourceApi
class ResourceEnvironment(
val language: LanguageQualifier,
val region: RegionQualifier,
val theme: ThemeQualifier,
val density: DensityQualifier
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
Expand All @@ -32,6 +33,18 @@ class ResourceEnvironment internal constructor(
result = 31 * result + density.hashCode()
return result
}

fun copy(
language: LanguageQualifier = this.language,
region: RegionQualifier = this.region,
theme: ThemeQualifier = this.theme,
density: DensityQualifier = this.density
) = ResourceEnvironment(
language = language,
region = region,
theme = theme,
density = density
)
}

internal interface ComposeEnvironment {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,14 @@ fun stringResource(resource: StringResource): String {
*
* @throws IllegalArgumentException If the provided ID is not found in the resource file.
*/
suspend fun getString(resource: StringResource): String =
loadString(resource, DefaultResourceReader, getSystemResourceEnvironment())
suspend fun getString(
resource: StringResource,
reader: ResourceReader = DefaultResourceReader
): String = loadString(
resource = resource,
resourceReader = reader,
environment = getSystemResourceEnvironment()
)

/**
* Loads a string using the specified string resource.
Expand All @@ -50,8 +56,15 @@ suspend fun getString(resource: StringResource): String =
*
* @throws IllegalArgumentException If the provided ID is not found in the resource file.
*/
suspend fun getString(environment: ResourceEnvironment, resource: StringResource): String =
loadString(resource, DefaultResourceReader, environment)
suspend fun getString(
environment: ResourceEnvironment,
resource: StringResource,
reader: ResourceReader = DefaultResourceReader
): String = loadString(
resource = resource,
resourceReader = reader,
environment = environment
)

private suspend fun loadString(
resource: StringResource,
Expand Down Expand Up @@ -91,11 +104,15 @@ fun stringResource(resource: StringResource, vararg formatArgs: Any): String {
*
* @throws IllegalArgumentException If the provided ID is not found in the resource file.
*/
suspend fun getString(resource: StringResource, vararg formatArgs: Any): String = loadString(
resource,
formatArgs.map { it.toString() },
DefaultResourceReader,
getSystemResourceEnvironment()
suspend fun getString(
resource: StringResource,
reader: ResourceReader = DefaultResourceReader,
vararg formatArgs: Any
): String = loadString(
resource = resource,
args = formatArgs.map { it.toString() },
resourceReader = reader,
environment = getSystemResourceEnvironment()
)

/**
Expand All @@ -111,12 +128,13 @@ suspend fun getString(resource: StringResource, vararg formatArgs: Any): String
suspend fun getString(
environment: ResourceEnvironment,
resource: StringResource,
reader: ResourceReader = DefaultResourceReader,
vararg formatArgs: Any
): String = loadString(
resource,
formatArgs.map { it.toString() },
DefaultResourceReader,
environment
resource = resource,
args = formatArgs.map { it.toString() },
resourceReader = reader,
environment = environment
)

private suspend fun loadString(
Expand Down
Loading