To create a Zap that does exactly that, you need to follow the steps. First, let's set up the Trigger.
1️⃣ Add Trigger: New or Updated Spreadsheet Row
Search for the Google Sheets App and select New or Updated Spreadsheet Row Event. Connect your account. Then do the setup - choose a Spreadsheet with the translations, a Worksheet you'd like to pull the translations from, and a Trigger ColumIt it can be any col for our purposesumn, so keep any_column as the input value. You can see the setup in the image below.Trigger: New or Updated Spreadsheet Row in Google Sheets
This event is triggered any time a new row is added to the Sheet, or an existing row is updated. Note that the changes are not triggered instantly. They'insteadher buffered and triggered as a batch once in a while (a couple of minutes, I'd say, based on my tests).
It's also important to remember that the trigger has some limitations - described here.
2️⃣ Add Action: Import to Localazy
Next, add an Action. Search for the Localazy App and select Import to Localazy Action. Connect your Localazy account and select a project you'd like to import the translations into.
Then set up the Action. You can optionally choose a File name, File path, and File format. If any of them is empty, the default value noted in the field description will be used (e.g.
zapier.json as a File name). There are various formats to choose from, so you can select the one that fits your requirements.
Then, it's important to pair columns from Sheet to the input fields. To better explain the pairing, the image below shows the structure of my Sheet.Google Sheets: Translations document
As you can see, in the A column, there's a source key, followed by the translations in English (en), Czech (cs), and Polish (pl). To pair all the columns correctly, the project needs to have the languages added in Localazy because only those will appear as input fields under the Source key field, as seen in the example below.Adding languages to the project and refreshing the fields
Now, pairing the keys by selecting the corresponding columns is possible. Filled input fields are shown in the following image.
There are also a couple of options for modifying the import. Let's go through them real quick:
- Filter source - Set to True if you do not import translations identical to the source language content. Is True by default.
- Import as new - Set to True if you want to import all translations to go through the review process. Useful when you are unsure about their quality and want to do an extra check. It's False by default.
- Force current - Set to True if you want to import all translations and set them as the current version. By default, Localazy doesn't overwrite existing current versions for translations and lets you decide through the review process. It is False by default.
- Force source - Set to True if you want to overwrite the source language translations even if there are existing human changes. This option is useful when the source of truth is not Localazy, and it's always required to synchronize the source language translations. It is False by default.
As our source of truth is Google Sheets, we will set the Force source option to True. In the image below, there's the final Action setup.Action: Import to Localazy in Localazy setup
Test the action and continue. I also added one more Action step that sends a Slack message after every import, so I'm always notified if someone has updated the Sheet.
🕹️ Testing the Zap
Let's publish the Zap. If you activated the Zap for the first time, you should be asked whether you'd like to use a Transfer by Zapier (Beta) feature. This allows you to transfer the whole Sheet at once. At the time of writing, the feature is still in Beta.
You can also create your own transfer here. Follow the steps, and you should have all the rows with translations imported in Localazy. You can also see that all the translations are approved - we forced that by setting up the Force Source flag during the Action setup.Newly imported Sheet into Localazy
To test the Zap out, add some new keys and translations to the Sheet. I intentionally did not add some translations, so you can see it's not required for the import to process correctly. They can be added later. However, you must provide a source language string (English in our case). Otherwise, the import won't be successful.Add new translations to the Sheet; import them to Localazy.
And that's it! Every time someone updates the connected Google Sheet, you will automatically get the content imported to Localazy.
⚡ Use the Zap Template
You can also use the Template below:
Visit the Localazy Integration page on Zapier to explore more templates.
Zapier allows you to connect thousands of apps with Localazy and create your own automation workflows without using any code. Learn more in the Zapier integration docs.
This is a companion discussion topic for the original entry at https://localazy.com/blog/how-to-upload-rows-from-google-spreadsheets-to-localazy