Skip to main content

Syncing iOS localization gaps with Google Sheets and GitHub PR placeholders

Workflow preview

Workflow preview
100%
Syncing iOS localization gaps with Google Sheets and GitHub PR placeholders preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

Fill iOS localization gaps from → Google Sheets and PR with placeholders (GitHub) This n8n workflow automatically identifies missing translations in files across iOS localizations (e.g., vs ) and g...

Best for

  • Engineering automation workflows
  • Multimodal AI automation workflows
  • intermediate n8n builders looking for reusable templates

Tools used

n8n-nodes-base.webhook, n8n-nodes-base.set, n8n-nodes-base.code, n8n-nodes-base.httprequest, n8n-nodes-base.googlesheets, n8n-nodes-base.merge

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by WeblineIndia.

Original n8n.io source

1.1 Workflow description

Title
Syncing iOS localization gaps with Google Sheets and GitHub PR placeholders
Workflow name
Syncing iOS localization gaps with Google Sheets and GitHub PR placeholders

Fill iOS localization gaps from .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.

Who’s it for

  • iOS teams who want fast feedback on missing translations.
  • Localization managers who want a shared sheet to assign work to translators.

How it works

  1. A GitHub Webhook triggers on push or pull request.
  2. The iOS repo is scanned for .strings files under Base.lproj or en.lproj and their target-language counterparts.
  3. It compares keys and identifies what’s missing.
  4. A new or existing Google Sheet tab (e.g., fr) is updated with missing entries.
  5. If enabled, it creates a GitHub PR with placeholder keys (e.g., "__TODO_TRANSLATE__").

How to set up

  1. Import the Workflow JSON into your n8n instance.
  2. Set Config Node values like:
{
"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}}",
}
  1. Create GitHub Webhook

    • URL: https://your-n8n-instance/webhook/l10n-gap-ios
    • Content-Type: application/json
    • Trigger on: Push, Pull Request
  2. Connect credentials

    • GitHub token with repo scope
    • Google Sheets API
    • (Optional) Slack OAuth + SMTP

Requirements

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

How to customize

  • Multiple Locales: Add comma-separated values to TARGET_LANGS_CSV (e.g., fr,de,es).
  • Globs: Adjust IOS_SOURCE_GLOB and IOS_TARGET_GLOB to scan only certain modules or file patterns.
  • Ignore Rules: Add IGNORE_KEY_PREFIXES_CSV to skip certain internal/debug strings.
  • Placeholder Value: Change PLACEHOLDER_VALUE to something meaningful like "@@@".
  • Slack/Email: Set SLACK_CHANNEL and EMAIL_FALLBACK_TO_CSV appropriately.
  • DRY_RUN: Set to true to skip GitHub PR creation but still update the sheet.

Add‑ons

  • Android support: Add a second path for strings.xml (valuesvalues-<lang>), same diff → Sheets → placeholder PR.
  • Multiple languages at once: Expand TARGET_LANGS_CSV and loop tabs + placeholder commits per locale.
  • .stringsdict handling: Validate plural/format entries and open a precise PR.
  • Translator DMs: Provide a LANG → Slack handle/email map to DM translators with their specific file/key counts.
  • GitLab/Bitbucket variants: Replace GitHub API calls with GitLab/Bitbucket equivalents to open Merge Requests.

Use Case Examples

  • Before a test build, ensure fr has all keys present—placeholders keep the app compiling.
  • Weekly run creates a single sheet for translators and a PR with placeholders, avoiding last‑minute breakages.
  • A new screen adds 12 strings; the bot flags and pre‑fills them across locales.

Common troubleshooting

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

Need Help?

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!

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Webhook

Type / Role
n8n-nodes-base.webhook - webhook
Config choices
Version 2

Block 2 - Config

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 3 - Process File Tree

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 4 - Get Source File

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 5 - Find Missing Keys

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 6 - Google Sheets

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 7 - Get GitHub Tree

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 8 - Merge

Type / Role
n8n-nodes-base.merge - merge
Config choices
Version 3.2

Block 9 - Edit Fields

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 10 - HTTP Request

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 11 - Code

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

3. Summary Table

Workflow Syncing iOS localization gaps with Google Sheets and GitHub PR placeholders
Complexity intermediate
Nodes 11
Categories Engineering, Multimodal AI
Author WeblineIndia
Published 19 Aug 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/7577/7577.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Syncing iOS localization gaps with Google Sheets and GitHub PR placeholders do?

Fill iOS localization gaps from → Google Sheets and PR with placeholders (GitHub) This n8n workflow automatically identifies missing translations in files across iOS localizations (e.g., vs ) and g...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Engineering, Multimodal AI use case.