cs.linguacopier
This products adds an action to copy contents to a selected language.
We have faced many times the work to create the contents of a site in one language and then recreate it in another language to let the customer or translators translate it.
This products provides an action with several options, which allows the content editor to recreate the contents of one section of the site in one or more languages, easing the work of the content editor.
Disclaimer: this product does not effectively translate the contents (does not translate "House" to "Casa"), it just copies the actual content in the other language.
Installation
Install cs.linguacopier by adding cs.linguacopier it to your project's dependencies (either buildout, pyproject.toml, requirements.txt, uv or whatever you use to manage your Plone project's dependencies).
REST API
When plone.restapi is installed, the copier is also available over REST, so a Volto front end can use it:
POST /<content>/@copy-content-to
with a JSON body such as:
{
"target_languages": ["es", "ca"],
"include_context": true,
"include_children": true
}
The endpoint requires the Manage portal permission and always answers 200 with a per-object result. See the documentation for the full request and response contract.
Contribute
Support
If you are having issues, please let us know using the Github Issue Tracker: https://github.com/codesyntax/cs.linguacopier/issues
License
The project is licensed under the GPLv2.
Contributors
- Mikel Larreategi, mlarreategi@codesyntax.com
Changelog
2.0 (2026-10-02)
Breaking changes
- Replace
pkg_resourcesnamespace with PEP 420 native namespace. Support only Plone 6.2 and Python 3.10+. #3928 - Rename the
@@copy-content-toform fields toinclude_contextandinclude_children, matching the new REST API parameter names.
New features
- Add a
POST /<content>/@copy-content-toREST service so that a Volto front end can copy content and its subobjects into target languages. The endpoint is available whenplone.restapiis installed. - Show the outcome of a copy in the classic-UI
@@copy-content-toform: a per-object report (created, updated, skipped, failed) with the reasons for the failures, exportable as CSV. - Stop offering the content's own language as a copy target: the
@@copy-content-toform lists only the other supported languages (and is hidden when there is none), and the REST endpoint rejects a request that names the content's own language.
Bug fixes
- Fix
copy_other_thingsadapter lookup and updating of existing properties incopy_other_properties.
Internal
- Update configuration files @plone
Tests
- Add unit and integration tests for the content copier.
1.3 (2025-08-28)
Internal
- Repackage @erral
1.2 (2024-07-23)
- Remove includeDependencies for Plone 6 compatibility. @erral
1.1 (2021-03-22)
- add my name @libargutxi
- RelationList @libargutxi
- RelationList fields @libargutxi
1.0 (2019-07-11)
- Initial release. @erral
Metadata
Release files for cs.linguacopier 2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cs_linguacopier-2.0.tar.gz | 108.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cs_linguacopier-2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 142.7 kB
Release files / cs_linguacopier-2.0.tar.gz
| Download URL | cs_linguacopier-2.0.tar.gz |
|---|---|
| Size | 108.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
65d4f090e57071d615c816aa05a00620a9e84df6cb2a1ced8721f7974dc5011c
|
|
BLAKE2b-256 checksum How to use checksums |
7a1815e02307431785065bc15e62da042714d56ae8a891f68b5cf6f55d28983d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.2
|
Release files / cs_linguacopier-2.0-py3-none-any.whl
| Download URL | cs_linguacopier-2.0-py3-none-any.whl |
|---|---|
| Size | 34.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1e83b29098e91b80b97ee3bad0f310666f7e2ee04457eb4daa00e9d0a645f21f
|
|
BLAKE2b-256 checksum How to use checksums |
05142cb42cd4bcf875cdaf650b887578d0e7b37281145d4a4954f0a39218b3ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.2
|