internetztube / craft-spreadsheet-translations
Adds support for dynamic translations from Google Spreadsheets.
Installs: 610
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 1
Forks: 1
Open Issues: 0
Type:craft-plugin
pkg:composer/internetztube/craft-spreadsheet-translations
Requires
- craftcms/cms: ^5.0.0
- google/apiclient: ^2.4
This package is auto-updated.
Last update: 2025-10-09 19:42:59 UTC
README
This plugin enables non-developers to access static translations via a Google spreadsheet.
Screenshots
Requirements
This plugin requires Craft CMS 5.0.0 or later.
Installation
To install this plugin, follow these steps:
- Install with Composer via
internetztube/craft-spreadsheet-translations - Install plugin in the Craft Control Panel under Settings > Plugins You can also install this plugin via the Plugin Store in the Craft Control Panel.
Issues
Please report any issues you find to the Issues page.
Dynamic Strings
- You CANNOT translate dynamic strings. Please use the message parameter.
{{ ("Welcome back, " ~ currentUser.friendlyName ~ "!") | t }}{{ 'Welcome back, {name}!' | t(params = { name: currentUser.friendlyName}) }}
Console Utilities
- Pulls all translations from the spreadsheet into static files on the disk. No handles get deleted!
php craft spreadsheet-translations/main/pull-translations - Pushes all missing translation handles from the templates into the spreadsheet. No handles get deleted!
⚠️ Make sure there is anphp craft spreadsheet-translations/main/push-missing-handlestranslations/<lang>/site.phppresent! Otherwise, no translations get pulled from templates! - Pushes all missing site languages into the spreadsheet. No languages get deleted!
php craft spreadsheet-translations/main/push-missing-languages
These utilities are also available in the control panel in the Utilities section.
Setup / Settings
Google API
For this plugin a Google API token is mandatory. Here you will be shown how to create one.
- Go to https://console.developers.google.com/apis/library/sheets.googleapis.com.
- Click
ENABLE. - Click
Credentialsin the sidebar. - Click
Create Credentialsand then selectService account key. - Click
Select...and create a new Service account or use an existing Service account. - Just fill in a name and an eMail prefix. You will need the eMail address in a further step.
- Keep
JSONas Key type. - Click
Create. - This Service account DOES NOT need a special role. So click
CREATE WITHOUT ROLEin the modal. - A JSON file had been downloaded. The contents of this file must be copied to the
Contents of the access key file-field in the plugin's settings. - Go to your Spreadsheet and share it with the eMail Address of the Service account.
Google Spreadsheets
In addition to the Contents of the access key file, the Spreadsheet Id and the Sheet Name where the Translations are located is required in the settings.
Spreadsheet Id
The Spreadsheet Id is just a part of the URL.
https://docs.google.com/spreadsheets/d/<SPREADSHEET-ID>/edit
https://docs.google.com/spreadsheets/d/11fRj44MwhGqFGpIYHGfwpA69ed-Z657WdiXex6kvuo8/edit -> 11fRj44MwhGqFGpIYHGfwpA69ed-Z657WdiXex6kvuo8
Sheet Name
This is the name of the sheet, where the translations are stored, which should be applied for this project.
Brought to you by Frederic Köberl




