Automatically upload/sync localized fields from the default locale to Crowdin. Make these fields read-only in other locales and update them using Crowdin translations.
- Plugin docs: plugin/README.md
- Payload test installation: dev
- Payload test installation (alternative config): dev-alternative-config
- NX generated docs: docs/nx.md
npm install payload-crowdin-sync
Add the plugin to your Payload configuration.
import { crowdinSync } from "payload-crowdin-sync";
export default buildConfig({
plugins: [
crowdinSync({
projectId: 323731,
token: process.env.CROWDIN_TOKEN,
localeMap: {
de_DE: {
crowdinId: "de",
},
fr_FR: {
crowdinId: "fr",
},
},
sourceLocale: "en",
}),
],
// The rest of your config goes here
});
On save draft or publish, content from localized fields in Collections and/or globals is organised into directories and files within a Payload CMS
directory (configurable) in your Crowdin project.
![Screenshot 2024-02-06 at 22 02 38](https://private-user-images.githubusercontent.com/44806974/302789489-2c31050d-fee4-4275-bca2-7e4b48743999.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyMDY2NjgsIm5iZiI6MTcyMTIwNjM2OCwicGF0aCI6Ii80NDgwNjk3NC8zMDI3ODk0ODktMmMzMTA1MGQtZmVlNC00Mjc1LWJjYTItN2U0YjQ4NzQzOTk5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDA4NTI0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU2YTdmYmMzZDQ0MGU2OGI3MDgxODNjOGFlYjU4MTZkODBhMmFmN2UzNjUxMjZjY2JhMTEyNTU2OTY2ZGI3NDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.lYE4B3DhzziUQSUXkdAau0gAA1Lok-BDSN6THGl5xOY)
To load translations into Payload CMS, check the Sync all translations
checkbox on a given collection document/global and save draft (loads translations as draft) or publish.
![Screenshot 2024-02-06 at 22 08 48](https://private-user-images.githubusercontent.com/44806974/302790855-2aa9c493-7792-422f-bf8d-a91c23893682.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEyMDY2NjgsIm5iZiI6MTcyMTIwNjM2OCwicGF0aCI6Ii80NDgwNjk3NC8zMDI3OTA4NTUtMmFhOWM0OTMtNzc5Mi00MjJmLWJmOGQtYTkxYzIzODkzNjgyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDA4NTI0OFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEyNjg5YTQ3OTk4NDgzNmRlM2U3NTRhMmU3OWM5NTJlMGIzYTZiODI4ZTk2NjY3MjU5MmMzOWVjNDNhYjJkMzkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.f-pvpw7oeYev-ERW9y969Sfa-gQfYCF4PT314rjejbc)
Run all tests.
- The
plugin
package contains unit tests. - Both the
dev
anddev-alternative-config
packages contain integration tests run against Payload installations.
npm run test
Build the plugin, change to the plugin directory and run npm publish
.
npm run release