mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-11-04 06:00:22 +00:00 
			
		
		
		
	optimizations and improvements in resources
This commit is contained in:
		@@ -13,5 +13,9 @@ kotlin {
 | 
			
		||||
                api project(":micro_utils.language_codes")
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        androidMain {
 | 
			
		||||
            dependsOn(jvmMain)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,18 +6,12 @@ import android.content.res.Resources
 | 
			
		||||
import android.os.Build
 | 
			
		||||
import dev.inmo.micro_utils.language_codes.toIetfLanguageCode
 | 
			
		||||
 | 
			
		||||
fun StringResource.translation(configuration: Configuration): String {
 | 
			
		||||
    val locale = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
 | 
			
		||||
fun StringResource.translation(configuration: Configuration): String = translation(
 | 
			
		||||
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
 | 
			
		||||
        configuration.locales[0]
 | 
			
		||||
    } else {
 | 
			
		||||
        configuration.locale
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return translation(locale.toIetfLanguageCode())
 | 
			
		||||
}
 | 
			
		||||
)
 | 
			
		||||
fun StringResource.translation(resources: Resources): String = translation(resources.configuration)
 | 
			
		||||
fun StringResource.translation(context: Context): String = translation(context.resources)
 | 
			
		||||
 | 
			
		||||
fun Configuration.translation(resource: StringResource): String = resource.translation(this)
 | 
			
		||||
fun Resources.translation(resource: StringResource): String = configuration.translation(resource)
 | 
			
		||||
fun Context.translation(resource: StringResource): String = resources.translation(resource)
 | 
			
		||||
@@ -4,7 +4,7 @@ import dev.inmo.micro_utils.language_codes.IetfLanguageCode
 | 
			
		||||
 | 
			
		||||
class StringResource(
 | 
			
		||||
    val default: String,
 | 
			
		||||
    private val map: Map<IetfLanguageCode, Lazy<String>>
 | 
			
		||||
    val map: Map<IetfLanguageCode, Lazy<String>>
 | 
			
		||||
) {
 | 
			
		||||
    class Builder(
 | 
			
		||||
        var default: String
 | 
			
		||||
@@ -14,9 +14,9 @@ class StringResource(
 | 
			
		||||
        infix fun IetfLanguageCode.variant(value: Lazy<String>) {
 | 
			
		||||
            map[this] = value
 | 
			
		||||
        }
 | 
			
		||||
        infix fun IetfLanguageCode.variant(value: String) = this variant lazy { value }
 | 
			
		||||
        infix fun IetfLanguageCode.variant(value: String) = this variant lazyOf(value)
 | 
			
		||||
        infix fun String.variant(value: Lazy<String>) = IetfLanguageCode(this) variant value
 | 
			
		||||
        infix fun String.variant(value: String) = this variant lazy { value }
 | 
			
		||||
        infix fun String.variant(value: String) = this variant lazyOf(value)
 | 
			
		||||
 | 
			
		||||
        fun build() = StringResource(default, map.toMap())
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,8 @@
 | 
			
		||||
package dev.inmo.micro_utils.strings
 | 
			
		||||
 | 
			
		||||
import dev.inmo.micro_utils.language_codes.toIetfLanguageCode
 | 
			
		||||
import java.util.Locale
 | 
			
		||||
 | 
			
		||||
fun StringResource.translation(locale: Locale): String {
 | 
			
		||||
    return translation(locale.toIetfLanguageCode())
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user