Export/import translations of nodes, xliff files and entities in Neos CMS and Flow applications
sourceLanguage
the default language all the translations are based onexport.directory
the directory all exports are written to, default: 'Data/Traduki/Export/'export.workspace
the workspace to read the nodes fron, default: 'live'export.documentTypeFilterPresets
filter options for document nodes to be exported, default: 'Neos.Neos:Document'export.contentTypeFilterPresets
filter options for content nodes to de exported, default: '!Neos.Neos:Document'import.directory
the directory all imports will be read from, default: 'Data/Traduki/Import/'
For each type there is a command controller with an export and an import action.
Translation strings will be exported into a custom XML structure (for nodes) or xliff files (for Xliff and entities), can be sent to translation agencies to translate and the translated strings can be imported back afterwards.
Compared to Flownative.Neos.Trados on which this is based on, this export has nested content nodes that respect the structure and order in which they appear in a document. To have the context makes it easier for translators to translate the content.
USAGE:
./flow nodes:export [<options>] <starting point>
ARGUMENTS:
--starting-point The node with which to start the export: as identifier
or the path relative to the site node.
OPTIONS:
--source-language overwrite the default source language to use as base for
the export.
--target-language The target language for the translation
--filename Path and filename to the XML file to create. default
will be generated from the starting point node label
--modified-after export only nodes modified after this date
--ignore-hidden do not export hidden nodes, default: true
--document-filter preset key of the document type filter, default: default
--content-filter preset key of the content type filter, default: default
DESCRIPTION:
This command exports a specific node tree including all content into an XML format.
To filter Document or Content nodeTypes to be exported, use the settings
- Kleisli.Traduki.export.documentTypeFilterPreset
- Kleisli.Traduki.export.contentTypeFilterPreset
and add your own filter presets
Skip node properties for translation
By default all node properties of type string
will be included in the export. To skip certain properties
they can be defined in the nodeType options.
e.g.
'Neos.Neos:Document':
options:
Kleisli:
Traduki:
properties:
twitterCardType:
skip: true
USAGE:
./flow nodes:import [<options>] <filename>
ARGUMENTS:
--filename Path and filename to the XML file to import.
OPTIONS:
--target-language The target language for the translation, optional if
included in XML.
--workspace A workspace to import into, optional but recommended
DESCRIPTION:
This command imports translated content from XML.
Update and Merge all xliff files of a package into one file
USAGE:
./flow xliff:export <target language> <package key>
ARGUMENTS:
--target-language The target language code for the translation. e.g. fr
--package-key e.g. Vendor.Package
DESCRIPTION:
The source language is taken from the setting Kleisli.Traduki.sourceLanguage
Split and import a merged xliff files of a package
USAGE:
./flow xliff:import [<options>]
OPTIONS:
--sub-folder-path restrict importing to a subfolder path within the
Xliff-Import directory
--file-name-suffix e.g. "Vendor.Package.xlf", default value is ".xlf
DESCRIPTION:
By default, all the files in the folder "Xliff" in the configured import directory are imported.
This can be restricted to a single targetLanguage and package
Create new and update already existing xliff files in a target language to track changed source language labels
USAGE:
./flow xliff:update [<options>]
OPTIONS:
--target-language The target language for the translation. e.g. fr
--package-key e.g. Vendor.Package
DESCRIPTION:
New translation units in the source language, are added to the target language xliff with state="new"
and translation units where the content of the source language changed are attributed with state="needs-translation"
USAGE:
./flow entities:export <target language> <model class>
ARGUMENTS:
--target-language The target language for the translation. e.g. fr
--model-class 'Vendor\Package\Domain\Model\MyModel'
DESCRIPTION:
Exports properties annotated with Gedmo\Mapping\Annotation\Translatable into a xliff file.
The default/source language is taken from the setting Kleisli.Traduki.sourceLanguage
USAGE:
./flow entities:import [<options>]
OPTIONS:
--target-language The target language for the translation. e.g. fr
--model-class 'Vendor\Package\Domain\Model\MyModel'
DESCRIPTION:
Imports properties annotated with Gedmo\Mapping\Annotation\Translatable from a translated
xliff file, that was previously exported by entities:export.
By default, all the files in the subfolder "Entities" in the import directory are imported. This
can be restricted to a single targetLanguage and Model
Node exporter and importer are based on Flownative.Neos.Trados. Originally I planned to do a PR to this package, but when I realised it will end in a major rewrite, I decided to publish it as a new package and extend it with xliff and entity handling.
The development of this package has significantly been funded by Profolio - a digital platform for career choice & career counseling