Basic-Car-Maintenance icon indicating copy to clipboard operation
Basic-Car-Maintenance copied to clipboard

Research Crowdin Platform

Open mikaelacaron opened this issue 1 year ago • 3 comments

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?

Screenshot 2024-10-23 at 4 12 32 PM

  • Separate but related question, do you know why it shows "0 files localized" in the project?
    • Xcode project -> Info

Screenshot 2024-10-23 at 4 12 45 PM

mikaelacaron avatar Oct 23 '24 20:10 mikaelacaron

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

Jatkingmodern avatar Oct 04 '25 17:10 Jatkingmodern

Hi, @mikaelacaron i would like to contribute to this issue. Please assign it to me if it is still open.

tannusingh111115 avatar Oct 11 '25 17:10 tannusingh111115

@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)

mikaelacaron avatar Oct 11 '25 18:10 mikaelacaron