Localization
English base, Slovak included.
All interface texts live in one String Catalog, app/NoReels/Localizable.xcstrings. English is the development language (developmentLanguage: en in project.yml); Slovak is translated for all 72 strings.
01How texts are found
SwiftUI texts such as Text("Settings") and Swift strings written as String(localized: "…") are looked up in the String Catalog. The English sentence is the key. When the device language has a translation, iOS shows it; otherwise English.
XcodeGen reads the languages from the catalog: the generated project lists en and sk as known regions (checked in the generated project.pbxproj).
02Add a language
- Open the catalog In Xcode, select
NoReels/Localizable.xcstrings. - Add the language Click + at the bottom of the language list and choose, for example, German. Every string appears as "New".
- Translate each string. Keep placeholders such as
%@and%lldexactly as they are. - Build Xcode saves the translation in the
.xcstringsfile itself, so it survivesxcodegen generate. Run the app with the scheme's App Language set to the new language (Product → Scheme → Edit Scheme → Run → Options) to check it. - Add the language in App Store Connect for your store listing if you want localized store texts.
03Feed labels are not interface texts
Some filters hide a post by the exact text a site prints on it, for example "Sponsored". Those texts are in the language of the user's site account, not the app. They are in Platform.swift: English texts in each filter's labels, and Slovak and Czech variants in the Labels enum. To support another language, add that site's exact texts there (or in a remote rules.json).
The Slovak and Czech feed labels were written from memory and have not been checked on a real device (comment in Platform.swift). Capture the exact texts from a Slovak and a Czech account before you rely on them. A wrong text does no harm; it simply never matches.
04Lock screen language
The lock screen texts ("Not the endless feed", "Attempts today") come from the same String Catalog: the NescrollShield target lists NoReels/Localizable.xcstrings in its sources, so a language you add to the catalog also reaches the lock screen.