Question or problem
Does Tuist support localization via String Catalog (`.xcstrings`)?
Context
I have a modular architecture with feature targets as static frameworks. Each feature has:
- Sources: `Features/MyFeature/Sources/**`
- Resources: `Features/MyFeature/Resources/**` (contains `Localizable.xcstrings`)
- Build setting: `STRING_CATALOG_GENERATE_SYMBOLS = YES`
The `Localizable.xcstrings` file is properly included in the target’s resources and appears in the generated Xcode project.
Issues
- Automatic string extraction doesn’t work during build.
- Localisation doen’t work. Ex: `Text(“Test”, bundle: MyFeatureResources.bundle)`
Is there any tutorial or documentation how to setup localisation in project?
Hey,
Tuist generates its own string accessors for static frameworks – right now, it’s not possible to use the Xcode catalog for static frameworks with Tuist. We’ll need to bring this PR which initially introduced some regressions.
Thank you. Then I’ll go with legacy Localizable.strings files.
Another question with Resource accessors in static frameworks. A couple of years ago, to be able to use localization in my feature (static framework). I had to modify the template: Strings.stencil
Instead of
extension CategoryFeatureStrings {
private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String {
let format = Bundle.module.localizedString(forKey: key, value: nil, table: table)
return String(format: format, locale: Locale.current, arguments: args)
}
}
use custom modified template generates:
extension CategoryFeatureStrings {
private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String {
let lang = Locale.preferredLanguages.first! \\ eg. fr
let path = Bundle.module.path(forResource: lang, ofType: "lproj")
let format = Bundle(path: path).localizedString(forKey: key, value: nil, table: table)
return String(format: format, locale: Locale.current, arguments: args)
}
}
- Link to https://github.com/tuist/tuist/tree/main/Sources/TuistGenerator/Templates from doc Synthesized files · Projects · Features · Guides · Tuist shows 404
- Is this way of localisation valid?