我试图从视图模型和用例中获取资源字符串,我有六个字符串翻译资源文件,但我总是得到默认的字符串翻译,没有得到既定的文化
我的界面
interface ResourceController {
fun getString(resourceId: Int): String
}
我的实现
class ResourceControllerImpl @Inject constructor(private val context: Context
) : ResourceController {
override fun getString(resourceId: Int): String {
return context.getString(resourceId)
}
}
我的模块注入
@InstallIn(SingletonComponent::class)
@Module
object ConfigModule {
@Provides
@Singleton
fun resourceControllerProvider(@ApplicationContext context: Context): ResourceController {
return ResourceControllerImpl(context)
}
}
我的用例
class GetTemplateToPrint @Inject constructor(
private val resourceController: ResourceController,
private val deviceUtils: DeviceUtils
) {
fun invoke(): String {
var dataToPrint : String = ""
val terminal = deviceUtils.getDeviceSerialNumber() ?: deviceUtils.getDeviceId()
dataToPrint = "${getString(R.string.serial_number_label)}:| $terminal"
return dataToPrint
}
private fun getString(resId: Int): String {
return resourceController.getString(resId)
}
}
R.string.serial_number_label 存在于六个资源字符串文件中(es, en, fr, it, de, ca) 但它总是返回默认资源字符串
有人知道我该怎么做吗?谢谢:)
您似乎正在使用上下文,您可以尝试使用吗
context.resource,getString()
让我知道它是否适合你