Back to Templates 
.strings → Google Sheets and PR with placeholders (GitHub)This n8n workflow automatically identifies missing translations in .strings files across iOS localizations (e.g., Base.lproj vs fr.lproj) and generates a report in Google Sheets. Optionally, it creates a GitHub PR to insert placeholder strings ("__TODO_TRANSLATE__") so builds don't fail. Supports DRY_RUN mode.
.strings files under Base.lproj or en.lproj and their target-language counterparts.fr) is updated with missing entries."__TODO_TRANSLATE__").{
"GITHUB_OWNER": "your-github-user-name",
"GITHUB_REPO": "your-iOS-repo-name",
"BASE_BRANCH": "develop",
"SHEET_ID": "<YOUR_GOOGLE_SHEET_ID>",
"ENABLE_PR": "true",
"IOS_SOURCE_GLOB": "**/Base.lproj/*.strings,**/en.lproj/*.strings",
"IOS_TARGET_GLOB": "**/*.lproj/*.strings",
"PLACEHOLDER_VALUE": "__TODO_TRANSLATE__",
"BRANCH_TEMPLATE": "chore/l10n-gap-{{YYYYMMDD}}",
}
Create GitHub Webhook
https://your-n8n-instance/webhook/l10n-gap-iosapplication/jsonPush, Pull RequestConnect credentials
| Tool | Needed For | Notes | 
|---|---|---|
| GitHub Repo | Webhook, API for PRs | repotoken or App | 
| Google Sheets | Sheet output | Needs valid SHEET_IDor create-per-run | 
| Slack (optional) | Notifications | chat:writescope | 
| SMTP (optional) | Email fallback | Standard SMTP creds | 
TARGET_LANGS_CSV (e.g., fr,de,es).IOS_SOURCE_GLOB and IOS_TARGET_GLOB to scan only certain modules or file patterns.IGNORE_KEY_PREFIXES_CSV to skip certain internal/debug strings.PLACEHOLDER_VALUE to something meaningful like "@@@".SLACK_CHANNEL and EMAIL_FALLBACK_TO_CSV appropriately.strings.xml (values → values-<lang>), same diff → Sheets → placeholder PR.TARGET_LANGS_CSV and loop tabs + placeholder commits per locale..stringsdict handling: Validate plural/format entries and open a precise PR.LANG → Slack handle/email map to DM translators with their specific file/key counts.fr has all keys present—placeholders keep the app compiling.| Issue | Possible Cause | Solution | 
|---|---|---|
| No source files found | Glob doesn't match Base.lprojoren.lproj | Adjust IOS_SOURCE_GLOB | 
| Target file missing | fr.lprojdoesn’t exist yet | Will be created in placeholder PR | 
| Parsing skips entries | Non-standard string format in file | Ensure proper .stringsformat"key" = "value"; | 
| Sheet not updating | SHEET_IDmissing or insufficient permission | Add valid ID or allow write access | 
| PR not created | ENABLE_PR=falseor no missing keys | Enable PR and ensure at least one key is missing | 
| Slack/Email not received | Missing credentials or config | Configure Slack/SMTP properly and set recipient fields | 
Want to expand this for Android? Loop through 5+ locales at once? Or replace GitHub with GitLab?
Contact our n8n Team at WeblineIndia with your repo & locale setup and we’ll help tailor it to your translation workflow!