Localyzer Projects
Contents
- 1 Creating a project in Jenkins
- 2 How can I tell if my LRM project is setup correctly?
- 3 Why, when I create a project, do I get an error stating that no resource files were found (Error 500)?
- 4 Why do I get an error "All active prep kits must be completed before changes can be made" when updating the Jenkins job?
- 5 How to add or update an LRM license from the command line
Creating a project in Jenkins
To create a new LRM project, follow On Boarding an LRM Project or On Boarding a project with both LRM and Globalyzer depending on the circumstances.
How can I tell if my LRM project is setup correctly?
If the LRM Jenkins job fails when creating an LRM project, fix those failures before moving forward. If there are ERRORs in the Jenkins job output, but the job passes, debug those errors before moving forward.
Once an LRM project is set up, check that it looks correct on the Lingoport Dashboard. Select the project name from the main menu. This takes you to the overview
Select the Lingoport pulldown and Resource Manager or click on Resource Manager Summary Report on the Dashboard,
- There should not be any critical errors (they will be in red)
- The Default Locale should be set to the locale that was set up.
- The Locale list should be the same set up in Jenkins.
- The number of Base Resource Files should be resonable.
- If you hover the mouse over Next Send Translation Content, a list of resource files will come up (as long as there are resource files to prep).
The project inspect reports are created upon creation of LRM project. Otherwise, they can be run again from a command line:
> java -jar lrm-cli.jar -r -pi -pn <ProjectName> -gn <GroupName> > java -jar lrm-cli.jar --report --project-inspect --project-name <ProjectName> --group-name <GroupName> The following reports were generated: /var/lib/jenkins/Lingoport_Data/LRM/<GroupName>/reports/<ProjectName>/ProjectInspect_en_us.xml /var/lib/jenkins/Lingoport_Data/LRM/<GroupName>/reports/<ProjectName>/ProjectInspect_de_de.xml /var/lib/jenkins/Lingoport_Data/LRM/<GroupName>/reports/<ProjectName>e/ProjectInspect_fr_fr.xml /var/lib/jenkins/Lingoport_Data/L10nStreamlining/<GroupName>/projects/<ProjectName>/reports/project_inspect_files.txt Process completed successfully.
This command generates reports in your reports folder for each locale specified in the project. Each report shows the location of the resource files, the number of files to be translated, and the file names.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <LRMProjectInspectResults projectID="217" projectName="YourProjectName" topLevelDirector y="/location/of/files/resources"> <locale>en_US</locale> <isBaseLocale>true</isBaseLocale> <nbFiles>3</nbFiles> <results> <result file="/file1.json"/> <result file="/file2.properties"/> <result file="/file3.rjs"/> </results> </LRMProjectInspectResults>
In addition, file project_inspect_files.txt is created listing all of the absolute paths of the corresponding target files for each base resource file. The following is an example where:
- The group name is GroupName
- The project name is YourProjectName
- The top level source directory defined in the project definition is location/of/files/resources
- In the project definition, extension json has a name of pattern of *.l_c_v. The default locale files for this extension does not use the name pattern. There is no location pattern.
- In the project definition, extension properties has a name of pattern of *_l_c_v. The default locale files for this extension does not use the name pattern. There is no location pattern.
- In the project definition, extension rjs has a name of pattern of *-l-c-v. The default locale files for this extension does not use the name pattern. There is no location pattern.
/var/lib/jenkins/jobs/GroupName.YourProjectName/workspace/location/of/files/resources/file1.fr_fr.json /var/lib/jenkins/jobs/GroupName.YourProjectName/workspace/location/of/files/resources/file1.es_mx.json /var/lib/jenkins/jobs/GroupName.YourProjectName/workspace/location/of/files/resources/file2_fr_fr.properties /var/lib/jenkins/jobs/GroupName.YourProjectName/workspace/location/of/files/resources/file2_es_mx.properties /var/lib/jenkins/jobs/GroupName.YourProjectName/workspace/location/of/files/resources/file3-fr-fr.rjs /var/lib/jenkins/jobs/GroupName.YourProjectName/workspace/location/of/files/resources/file3-es-mx.rjs
You may need to edit your project definition. See Project Definition for information about configuring a LRM project.
Why, when I create a project, do I get an error stating that no resource files were found (Error 500)?
This is a pretty common error and generally easy to fix. It sounds as if your project is not setup correctly. Check the Project Definition File used to create the project or open the Jenkins job Configuration.
In Jenkins, open the job configuration and scroll down to
On the command line to check the Project Definition File:
> vi /var/lib/jenkins/Lingoport_Data/LRM/<group-name>/reports/<project-name>/ProjectDefinition.xml
The items to check (with the project definition file xml and the Jenkins configuration name) are:
- <top-level-dir> or Top Level Directory- this is the path to the source code (resource files) for the LRM Project. For example if you have
$WORKSPACE/resources
or<top-level-dir>/var/lib/jenkins/jobs/CET.Smoke/workspace/resources</top-level-dir>
but the resource files are in/var/lib/jenkins/jobs/CET.Smoke/workspace/locales
, then LRM will not find the resource files.
<top-level-dir>/var/lib/jenkins/path/to/my/resource_files</top-level-dir>
- Patterns for your resource file names:
- <file-name-pattern>...</file-name-pattern> or Filename Pattern - verify that the separator characters are correct for your localized resource file names. For example, if your French Canadian localized resource file names are of the form
myResources_fr_CA.properties
then set the following:<file-name-pattern>*_l_c_v</file-name-pattern>
- <use-pattern-on-dflt-locale>...</use-pattern-on-dflt-locale> or Use Pattern on Default Locale - Set to "1" (or checked) (true), it indicates you will use base resource files that include the default locale in their filenames. For example, if the default locale is set to "en_US" and the file-name-pattern for "properties" resource files is set to "*_l_c_v", then LRM will look for
myResources_en_US.properties
when creating a kit of files to be sent out for translation. If set to "0" (or unchecked) (false), then LRM will look for base resource files that do not have the default locale as part of their filenames. Using our "properties" file example, LRM will look formyResources.properties
when creating files for translation.<use-location-pattern-on-dflt-locale>0</use-location-pattern-on-dflt-locale>
- <file-location-pattern>...</file-location-pattern> or File Location Pattern - verify that the separator characters are correct. For example, if it is set to *-l-c-v and the base resource files are in a
files
directory then the translated files will go intofiles-fr-FR
for a french locale. If<use-location-on-dflt-locale>1</use-location-on-dflt-locale>
or Use Location Pattern on Default Locale is checked (true), then the base resource files need to be in a folder that looks likefiles-en-US
.
- <file-name-pattern>...</file-name-pattern> or Filename Pattern - verify that the separator characters are correct for your localized resource file names. For example, if your French Canadian localized resource file names are of the form
- <include-dir>...</include-dir> or Include Directories - verify that the value is a valid Ant formatting directive. If there is no value then only those files directly under the base-src-dir + top-level-dir will be searched; no recursive search will occur. To include all folders under the full path, enter a value of **/**. You can then exclude other folders by adding additional exclude Ant directives. Format for <include-dir> is:
<include-dir>**/**</include-dir>
- <exclude-dir-file>...</exclude-dir-file> or Exclude Directory Files - verify that the value is a valid Ant formatting directive and that you're not excluding valid files/folders. Format for <exclude-dir> is:
<exclude-dir-file>...</exclude-dir-file>
Why do I get an error "All active prep kits must be completed before changes can be made" when updating the Jenkins job?
LRM will error if Prep Kit jobs have been sent, but not returned and the Jenkins job is changed. For example, if the target locales are modified before all prep kits are returned, the Jenkins job will fail with the error:
ERROR 2019-06-20 20:55:07,128 com.lingoport.lrm.controller.kitrootconfig.pipeline.stage.CompareExistingLocalesWithXMLStage.addError: Error 230: Cannot delete locales for project `NewLRMProject`. All active prep kits must be completed before changes can be made. Process failed. See error log in `/var/lib/jenkins/Lingoport_Data/LRM/<group-name>/logs/lrmerror.log` for details.
Once all outstanding prep kits have returned, then things can be modified in the job.
How to add or update an LRM license from the command line
Using the command line is not recommended. Work with Jenkins and its jobs, whenever possible. The ManageLicenses job will add or update a license.
If you'd rather use the command line instead of the Jenkins ManageLicenses job, for instance in a script, use the --create-group
command on lrm-cli.jar command line. Using the command line is not recommende. The ManageLicenses Jenkins job is more reliable. You need to have requested a license key for the new group from Lingoport before creating the group. For instance:
> java -jar $LRM_HOME/lrm-cli.jar --create-group --group-name group1 --date "2016-06-01" --number-of-licenses 10 --license-key <license-key>
To update the license of an existing group, used the --update-license
command on lrm-cli.jar command line. You need to have requested a license key for the new group from Lingoport before updating the group.For instance:
> java -jar $LRM_HOME/lrm-cli.jar --update-license --group-name group1 --date "2016-06-01" -number-of-licenses 10 --license-key <license-key>
Once a group has been created, the database and the file structure are updated. The Jenkins LicenseExpiration job should be created and it should show the change to the license.