بنقرة واحدة
string-resources
Compact guide for using the project StringDesc wrapper over Compose Resources
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Compact guide for using the project StringDesc wrapper over Compose Resources
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Implement provided test blueprints following the project guidelines.
Rules for structuring and connecting Decompose components - regular components, routers, Outputs, factories, navigation, and embedded children
Create compact, reviewable high-level designs for test suites before implementation or structural review.
Compose Multiplatform UI patterns for this project - Scaffold screens, AppToolbar, decomposition, CustomTheme, LCE widgets, insets, system bars, messages, core widgets, and previews.
Guidelines for organizing feature module structure using package-by-feature principle
Guidelines for API/DTO boundaries, repository-owned Replica data loading, loaded data observation in components, LCE state, data mutations, cache invalidation, ReplicaAction, ReplicaTag
استنادا إلى تصنيف SOC المهني
| name | string-resources |
| description | Compact guide for using the project StringDesc wrapper over Compose Resources |
StringDesc is a universal wrapper for different kinds of text values. It keeps them in a deferred form and resolves them to a plain String only at the point of use.
For resources from the same module, import:
import <package>.features.generated.resources.Res
import <package>.features.generated.resources.some_string
For resources from another module, import with an alias:
import <package>.core.generated.resources.Res as CoreRes
import <package>.core.generated.resources.some_string
resourceDescUse .resourceDesc(...) for regular string resources, with or without format arguments.
import <package>.core.utils.StringDesc
import <package>.core.utils.resourceDesc
val title: StringDesc = Res.string.profile_title.resourceDesc()
val subtitle: StringDesc = Res.string.profile_subtitle.resourceDesc(userName)
val retry: StringDesc = CoreRes.string.common_retry.resourceDesc()
Arguments may also be StringDesc.
val save = CoreRes.string.common_save.resourceDesc()
val subtitle = Res.string.profile_action.resourceDesc(save)
pluralDescUse .pluralDesc(...) for plural resources.
import <package>.core.utils.pluralDesc
val itemsCount = Res.plurals.items_count.pluralDesc(count, count)
descUse .desc() only for already resolved text from external, debug, mock, or fake sources.
import <package>.core.utils.desc
val serverMessage = response.message.desc()
plusUse + to concatenate StringDesc values.
import <package>.core.utils.desc
import <package>.core.utils.plus
val itemsCount = Res.plurals.items_count.pluralDesc(count, count)
val subtitle = Res.string.selected_items.resourceDesc() + ": ".desc() + itemsCount
joinToStringDescUse .joinToStringDesc() to join a list of StringDesc. You may pass a custom separator.
import <package>.core.utils.joinToStringDesc
val title = labels.joinToStringDesc(separator = " • ")
resolveUse .resolve() in composables only.
Text(text = title.resolve())
Text(text = errorMessage.resolve())
resolveStringUse .resolveString() outside Compose when a plain String is required.
suspend fun buildShareText(title: StringDesc): String {
return title.resolveString()
}