Automating iOS Localization Gap Detection with GitHub and Google Sheets - n8n Workflow

Use this powerful n8n workflow to automatically detect missing keys in iOS localization files (.strings) on GitHub and sync the gaps to Google Sheets for translation management.

Workflow Preview

Ready to automate?

Download this n8n workflow template and start using it instantly.

Who is this best for?


  • iOS Developers managing localization files across multiple languages.

  • DevOps engineers needing automated checks for localization integrity.

  • Technical Project Managers coordinating translation teams.

  • Users looking for advanced examples of Git API interaction within an n8n template.

Overview

Maintaining consistency across source and target localization files is a critical, yet tedious, task, especially in large iOS applications relying on .strings files. This specialized n8n workflow solves the problem of detecting localization gaps (keys present in the source language but missing in the target language) by automating the review process using GitHub and Google Sheets. The n8n automation fetches the file contents directly from the GitHub repository, uses a custom Code n8n node to parse the proprietary .strings file format, compares the key sets, and then logs the missing entries, along with a configurable placeholder (TODO_TRANSLATE), directly into a Google Sheet. Utilizing this n8n template ensures that translation teams always have an up-to-date backlog of necessary keys, streamlining the localization pipeline.

How it Works

The entire process is initiated by an external event, handled by the Webhook n8n trigger.


  1. Trigger & Configuration: The n8n workflow starts via a Webhook POST request. Configuration variables (GitHub repo details, source/target languages like 'en' and 'fr', and the placeholder text) are set immediately.

  2. GitHub Tree Retrieval: The workflow uses the HTTP Request n8n node to pull a recursive list of all files in the defined GitHub branch.

  3. File Parsing and Pairing: A Code n8n node processes the file tree to identify potential localization file paths (e.g., en.lproj/.strings and fr.lproj/.strings).

  4. Targeted Content Fetch: A series of HTTP Request n8n nodes fetch the actual Base64-encoded content for the source and target Localizable.strings files from GitHub, using specific paths derived from the previous steps.

  5. Merge Data: A Merge n8n node combines the source and target file content streams into a single structured list, ready for comparison.

  6. Gap Detection (Find Missing Keys): This critical Code n8n node includes a function to decode and parse the .strings files, converting them into manageable key-value maps. It iterates through the source keys and checks if the target language map contains that same key. If a key is missing, it is flagged as a localization gap.

  7. Data Logging: Finally, the identified missing keys, along with the source value and the defined placeholder, are appended as new rows into the designated Google Sheets document using the Google Sheets n8n node, creating an actionable task list for translators.

Installation Guide

To deploy this powerful n8n workflow, follow these steps:


  1. Import: Copy the provided JSON definition and paste it into your n8n instance using the 'New' -> 'Import from JSON' function.

  2. Webhook Setup: Note the webhook path defined in the Webhook n8n trigger (new-pathss). Configure your CI/CD pipeline or external service to send a POST request to your n8n instance's webhook URL.

  3. Credential Configuration:

GitHub: Configure the GitHub API credential used in the HTTP Request n8n nodes (e.g., 'Get GitHub Tree', 'Get Source File'). This typically requires a Personal Access Token with read access to the repository.
Google Sheets: Configure the Google Sheets OAuth2 API credential. Ensure the service account or user associated with the credential has write access to the target spreadsheet.

  1. Configuration Node: Update the 'Config' n8n node with your specific settings:

GITHUBOWNER and GITHUBREPO.
BASEBRANCH (e.g., main).
TARGETLANG (e.g., fr).
PLACEHOLDER_VALUE for new keys.

  1. Google Sheets Node: Update the 'Google Sheets' n8n node to reference the correct Document ID and Sheet Name where the localization gaps should be logged.

Node Details


  • Webhook (n8n trigger): Serves as the starting point for this automated n8n workflow, executing the entire sequence upon receiving an external POST request.

  • Config (Set n8n node): Essential for defining environment variables like repository names, source/target languages, and the translation placeholder, making the n8n template easily reusable.

  • Get GitHub Tree / HTTP Request (n8n node): Handles authentication and communication with the GitHub API to fetch file contents and metadata.

  • Process File Tree (Code n8n node): A custom scripting n8n node responsible for iterating through the GitHub directory structure, identifying localization .strings files, and pairing source files with their corresponding target file paths.

  • Find Missing Keys (Code n8n node): The core logic driver. This advanced n8n node contains JavaScript functions to parse the highly specific iOS .strings file format, decode the Base64 content, and perform the dictionary comparison necessary to accurately identify keys missing in the target language. The script ensures that every key present in the source file is checked.

  • Google Sheets (n8n node): The final destination for the data, configured here to use the 'Append' operation to efficiently add the newly discovered localization gaps to a central tracking sheet.

Related n8n Workflows

Free

Nodes: 6 Nodes
Updated: December 26 2025
View all
Created by

A Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.

Featured*