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-ios
application/json
Push
, Pull Request
Connect credentials
Tool | Needed For | Notes |
---|---|---|
GitHub Repo | Webhook, API for PRs | repo token or App |
Google Sheets | Sheet output | Needs valid SHEET_ID or create-per-run |
Slack (optional) | Notifications | chat:write scope |
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.lproj or en.lproj |
Adjust IOS_SOURCE_GLOB |
Target file missing | fr.lproj doesn’t exist yet |
Will be created in placeholder PR |
Parsing skips entries | Non-standard string format in file | Ensure proper .strings format "key" = "value"; |
Sheet not updating | SHEET_ID missing or insufficient permission |
Add valid ID or allow write access |
PR not created | ENABLE_PR=false or 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!