L10n Vendors

From Lingoport Wiki
Revision as of 20:39, 23 April 2019 by Llawson (talk | contribs) (InContext Server Configuration)
Jump to: navigation, search

Supported L10n Vendors

To get a current list of LSP (localization service provider) and TMS (translation management system) companies that are integrated with LRM, please email sales@lingoport.com.

Recommended Approach

Lingoport FTP Protocol

Lingoport strongly recommends using the FTP protocol. With that approach,

  • Lingoport automatically pushes valid resource files to be translated following a specific naming convention to an FTP end point
  • The translation group picks up the files and on-board them in the TMS following their own automated pattern
  • The translation group returns the translated resource file to another FTP end point as per their system
  • LRM picks up the translated files, validates them, and imports them into the proper repository


  • Robustness: FTP has been in place for decades and is one of the most reliable protocol for transmitting files from one system to another
  • Simplicity: FTP and zip are well known and are well understood in the industry
  • Security: FTP support SSH and SSL encryption; The FTP system can allow only some IP ranges to access the FTP port(s)
  • Automation: LRM pushes and retrieves files automatically; The translation group supplies the automation to and from the automation end point
  • Network Failure Handling: If the network goes down when accessing FTP, files are resent later on when the network is up; Files are not lost due
  • Asynchronicity: The LRM system and the TMS do not need any special connection; Files can be sent and received indepently
  • Scalability: The volume sent to an FTP system does not slow down either LRM or a TMS due to traffic. Each system can push or retrieve files without slowing down the other. FTP supports large volume of data
  • Configurability: Configuring the FTP end point location is something well understood by IT departments and simple to configure (for LRM, see below)
  • Testability: Checking the proper configuration is straightforward
  • Fast Set Up: Given the above, setting up LRM with FTP is the fastest and simplest route

Note: Lingoport has set up LRM over FTP with many Translation Groups and the TMS of their choice and any TMS vendor can add their system to this integration pattern.

Resource File Transmission Protocols

For most use cases, Lingoport recommends sending files to translation over SFTP. Direct API-based connections are also available to some TMS systems.

Overall, LRM supports 5 localization paths for sending files to be translated. They are:


  • Local
    • Files are kept on the system LRM resides on. Good for debugging.
  • FTP
    • FTP/SFTP. Typical method of sending resource files to/from translation.

API Based:

  • GlobalLink
  • Lingotek
  • Worldserver

Transmission Protocol Configuration

The type of L10n Vendor is defined in the config_l10n_vendor.properties file that can exist at either the group or project level. See Group Configuration Files. A template of this file can be found at <HOME>/lingoport/lrm-server-x.y/deploy/templates/dir_structure/group/config

The default location of the config_l10n_vendor.properties file is at the group level. The default settings do not define a vendor so that an error will occur when prepping a kit, forcing the user to chose a vendor. The global L10n Vendor attributes are:

  • l10n.vendor=ftp - uncomment if using FTP/SFTP, the recommended approach
  • l10n.vendor=lingotek - uncomment if using Lingotek
  • l10n.vendor=local - uncomment if storing the prep/translated files locally
  • l10n.vendor=worldserver - uncomment if using Worldserver
  • l10n.vendor=globallink - uncomment if using GlobalLink
  • l10n.vendor.nonsupported.extensions - a vendor may not support a specific extension such as .json. Enter any extensions that are not supported by the vendor but are supported by LRM. See LRM Fixing Issues for LRM supported extensions. An error will occur if there is no conversion protocol for a non-supported extension.

Example file:


InContext Server Configuration

In order for a L10n Vendor to be able to communicate to the Lingoport InContext Server, there must be a valid LRM LQA license for the group as well as a valid configuration for the InContext Server. This configuration is located in the L10n Vendor configuration file with the following keys.

  • l10n.vendor.incontext.server.url=<valid http or https URL pointing to the InContext Server >
  • l10n.vendor.incontext.auth.token=<valid authorization token>

The authorization token will be supplied by your InContext Server administrator.


FTP Configuration

To choose FTP as the vendor, uncomment the l10n.vendor=ftp in the config_l10n_vendor.properties file.

The information that is needed to upload the files to be translated as well as retrieve translated files is:

#FTP Attributes
## FTP inbound attributes for import kit files
##SSH, SSL or empty
## ssl implicit flag. Set to 0 for explicit, set to 1 for implicit

## FTP outbound attributes for prep kit files
##SSH, SSL or empty
## ssl implicit flag. Set to 0 for explicit, set to 1 for implicit

The ftp.out attributes refer to locations for files being sent out for translation. The ftp.in refers to locations for files coming back in (import) from translation.

Note: For special cases, like using One Planet, you may need to create an .ssh key http://www.linuxproblem.org/art_9.html.

FTP attributes

If the end point is FTP, the


must be uncommented. The 'in' attributes refer to the files coming back to Lingoport Resource Manager after translation. The 'out' attributes refer to the prep-kit files which are send from Lingoport Resource Manager.

  • ftp.in.host - the hostname where the translated files reside
  • ftp.in.location.path - the directory path on the host containing the translated files
  • ftp.in.password - password associated with the username that is using the protocol
  • ftp.in.port - the port for the protocol service. In general, SSH uses port 22 and FTP uses port 21
  • ftp.in.protocol - this can be SSH or SSL. If left blank, the protocol is FTP
  • ftp.in.username - the username used with the protocol to receive the translated files

  • ftp.out.host - The hostname that the prep-kits prepared by LRM are being sent to.
  • ftp.out.location.path - the directory path on the host for the files to be translated
  • ftp.out.password - password associated with the username that is using the protocol
  • ftp.out.port - the port for the protocol service. In general, SSH uses port 22 and FTP uses port 21
  • ftp.out.protocol - this can be SSH or SSL. If left blank, the protocol is FTP
  • ftp.out.username - the username used with the protocol to send the files to be translated.

From a command line attempt to use the protocol (ssh, ssl or ftp) and the username and password to log into the host. This can verify the settings. On the host, verify that the in and out paths exist.

Translation FTP Vendor Integration

Lingoport pushes zip files to the configured FTP outbound endpoint and consumes zip files sent on the incoming endpoint. The structure of the zip file is defined below:

The files sent back and forth over FTP have the following characteristics:

  • The data files to be translated or returned from translation are sent in a zip file.
  • The zip file is named according to this convention: <group-name>.<project-name>.<kit-version>.<locale>.zip. For example, a zip file could be named Queens.Champions.1.fr_fr.zip: The group-name is Queens, the project-name is Champions, the kit version is 1, and the target locale is fr_fr.
  • The zip file consists of one top level directory, <group-name>.<project-name>.<kit-version>.<locale>, with all the files to be translated under it.
  • There is one zip file per target locale. You may target 10 locales for translation for project "Champions" under group "Queens". You then would have 10 zip files to send over FTP.
  • A zip file may contain more than one file and more than one file type.
  • Each file to be translated has a comment at the top of the file which needs to be kept when returning the file from translation vendor.
  • The translated files will be named the same as the original files (so they could be _en.properties even if the content is for French)

Two FTP endpoints are necessary: a 'to translation' end point and a 'from translation' endpoint.

Example of the Zip File Structure

The structure of the zip file for target locale de is as follows:

| -- Acme.frontend.1.de
     | -- resources.properties
     | -- messages.resx
     | -- errors.json

This is the structure of the zip file sent for translation on the FTP outbound endpoint and also the structure and name of the file received from translation on the FTP inbound endpoint.


  • The names of the files are the base resource file names
  • The names of the files (resources.properties) must be the same exact name when the translation is returned as it was in the zip file sent for translation.
  • The files in one prep kit must all be returned in the translated zip file with a complete translation. If prep kit #1 had three files, the same three files must be returned in, say, German with every key/value pair returned.

SSH/SFTP proxy server

If the ftp.out.protocol/ftp.in.protocol is SSH and there is a SFTP proxy server then the proxy host and proxy port are set up via java options.

There are 3 proxy protocols supported

  • ProxyHTTP
  • ProxySOCKS4
  • ProxySOCKS5


The expected java options for ProxyHTTP are:

  • ftp.proxyHost
  • ftp.proxyPort

Linux example if setting java options within a shell session.

export _JAVA_OPTIONS='-Dftp.proxyHost=theproxyhost -Dftp.proxyPort=123'


The expected java options for ProxySOCKS4 are:

  • ftp.socks4.proxyHost
  • ftp.socks4.proxyPort

Linux example if setting java options within a shell session.

export _JAVA_OPTIONS='-Dftp.socks4.proxyHost=theproxyhost -Dftp.socks4.proxyPort=123'


The expected java options for ProxySOCKS5 are:

  • ftp.socks5.proxyHost
  • ftp.socks5.proxyPort

Linux example if setting java options within a shell session.

export _JAVA_OPTIONS='-Dftp.socks5.proxyHost=theproxyhost -Dftp.socks5.proxyPort=123'

Encoding of translated files

We are expecting the .properties to be returned in UTF-8 (no BOM) and so they should not have unicode escaped characters.

Other Integrations

Special L10n Vendor Integrations