Research Crowdin Platform
Describe the feature you want to improve
- What would it take for me to use Crowdin, to be able to full localize all the strings that are missing?
- is it free?
- do I need to upload anything?
- what steps do I need to take to upload localized screenshots to App Store Connect, and localized release notes?
- Separate but related question, do you know why it shows "0 files localized" in the project?
- Xcode project -> Info
Project Structure
Your Xcode project should store localized strings like:
CarMaintenanceApp/ ├── Base.lproj/ │ └── Main.storyboard ├── en.lproj/ │ └── Localizable.strings ├── es.lproj/ │ └── Localizable.strings ├── fr.lproj/ │ └── Localizable.strings └── crowdin.yml Crowdin Configuration (crowdin.yml)
Create a crowdin.yml in the project root:
"project_id_env": "CROWDIN_PROJECT_ID" "api_token_env": "CROWDIN_API_TOKEN" "base_path": "." "preserve_hierarchy": true
- source: "/en.lproj/Localizable.strings" translation: "/%two_letters_code%.lproj/Localizable.strings" languages_mapping: two_letters_code: zh-CN: zh-Hans zh-TW: zh-Hant
source → English Localizable.strings file.
translation → Generated folders for other languages.
mapping → Handles language codes (Crowdin vs iOS).
Environment Variables
Store credentials securely in your shell or CI/CD:
export CROWDIN_PROJECT_ID=your_project_id export CROWDIN_API_TOKEN=your_api_token
. Commands
Upload English source strings:
crowdin upload sources
Upload existing translations:
crowdin upload translations
Download completed translations from Crowdin:
crowdin download
Swift Usage Example
In Swift, use localized strings:
let title = NSLocalizedString("welcome_message", comment: "Welcome screen title") titleLabel.text = title
Where Localizable.strings contains:
"welcome_message" = "Welcome to Car Maintenance App!";
Crowdin will handle the translation versions for each locale. CI/CD Integration (Optional)
You can automate sync with GitHub Actions:
name: Crowdin Sync on: push: branches: [ main ]
jobs: crowdin: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Crowdin run: sudo npm install -g @crowdin/cli - name: Upload Sources run: crowdin upload sources - name: Download Translations run: crowdin download
Next Steps
Add keys for all app text inside Localizable.strings.
Push them to Crowdin.
Invite translators or enable Crowdin’s Machine Translation.
Download and test translations in Xcode by changing app language
Hi, @mikaelacaron i would like to contribute to this issue. Please assign it to me if it is still open.
@tannusingh111115 what would be needed that isn't in @Jatkingmodern 's comment?
I haven't used this platform before! So this issue is more around the research needed to implement this, and then the code needed (that I'm not sure about)