Difference between revisions of "LRM resx Support"

From Lingoport Wiki
Jump to: navigation, search
(Example of .resx Files)
Line 52: Line 52:
 
</root>
 
</root>
   
== In what format should JSON Files be for LRM Handling ?==
 
   
  +
== Sample LRM Project Definition File for .resx==
===Arrays are not allowed in the context of JSON files as resource bundles===
 
  +
<?xml version="1.0" encoding="UTF-8"?>
String references in the code, from an i18n point of view, is unmanageable for JSON arrays. In addition, many L10n vendors do not support JSON arrays. (Sample JSON files are located in LRM-Server-2.1/''samples/JSON_Examples''):
 
  +
<lrmconf>
===There is only one key/value per line===
 
  +
<model-version>1.0.0</model-version>
*Valid
 
  +
<project-name>WinApp</project-name>
"key1":"This is my value for key1",
 
  +
<project-desc>Lingoport.WinApp is configured to support resx resource files</project-desc>
"key2":"This is my value for key2"
 
*Invalid
 
"key1":"This is my value for key1","key2":"This is my value for key2"
 
===End-object character (curly bracket) may not exist on the same line as a key/value===
 
* Valid
 
"keys": {
 
"key1":"This is my value for key1"
 
}
 
* Invalid
 
<code>"keys": {
 
"key1":"This is my value for key1"</code>'''}'''
 
===Values associated with a key must be a string===
 
Numeric and boolean values are not allowed
 
* Valid
 
"key1":"0"
 
* Invalid
 
"key1":0
 
"key1": true
 
 
== Sample LRM Project Definition File for .json ==
 
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 
<lrmconf>
 
<model-version>3.0.18</model-version>
 
<project-name>search</project-name>
 
<project-desc>Search project</project-desc>
 
 
<group-name>Lingoport</group-name>
 
<group-name>Lingoport</group-name>
<top-level-dir>/var/lib/jenkins/jobs/Lingoport.search/workspace</top-level-dir>
+
<top-level-dir>/var/lib/jenkins/jobs/Lingoport.WinApp/workspace</top-level-dir>
 
<detect-errors>
 
<detect-errors>
<missed-trans-error>0</missed-trans-error>
+
<missed-trans-error>1</missed-trans-error>
 
<parameter-mismatch-error>1</parameter-mismatch-error>
 
<parameter-mismatch-error>1</parameter-mismatch-error>
  +
</detect-errors>
 
<track-back-locale>br</track-back-locale>
 
<track-back-locale>br</track-back-locale>
  +
<pseudo-locale>eo</pseudo-locale>
 
<target-locales>
 
<target-locales>
<locale>es</locale>
+
<locale>de</locale>
 
<locale>fr</locale>
 
<locale>fr</locale>
 
<locale>ja</locale>
 
<locale>ja</locale>
 
</target-locales>
 
</target-locales>
<default-locale>en</default-locale>
+
<default-locale>en_US</default-locale>
 
<resource-extensions>
 
<resource-extensions>
<resource-extension>
+
<resource-extension>
'''<extension>json</extension>'''
+
'''<extension>resx</extension>'''
'''<file-name-pattern>*_l-c-v</file-name-pattern>'''
+
'''<file-name-pattern>*.l-c-v</file-name-pattern>'''
'''<use-pattern-on-dflt-locale>1</use-pattern-on-dflt-locale>'''
+
'''<use-pattern-on-dflt-locale>0</use-pattern-on-dflt-locale>'''
'''<file-location-pattern/>'''
+
'''<file-location-pattern></file-location-pattern>'''
 
'''<use-location-pattern-on-dflt-locale>0</use-location-pattern-on-dflt-locale>'''
 
'''<use-location-pattern-on-dflt-locale>0</use-location-pattern-on-dflt-locale>'''
 
'''<base-file-encoding>UTF-8</base-file-encoding>'''
 
'''<base-file-encoding>UTF-8</base-file-encoding>'''
 
'''<localized-file-encoding>UTF-8</localized-file-encoding>'''
 
'''<localized-file-encoding>UTF-8</localized-file-encoding>'''
'''<parameter-regex-pattern><![CDATA[\{\w+\}|%[ds]]]></parameter-regex-pattern>'''
+
'''<parameter-regex-pattern><![CDATA[%[ds]|%\d+\$[ds]|%\{\w+\}]]></parameter-regex-pattern>'''
 
</resource-extension>
 
</resource-extension>
 
</resource-extensions>
 
</resource-extensions>
Line 112: Line 89:
 
<include-dir>**/**</include-dir>
 
<include-dir>**/**</include-dir>
 
</includes>
 
</includes>
<excludes>
+
<excludes>
<exclude-dir-file/>
+
<exclude-dir-file>**/source/bin/**</exclude-dir-file>
<exclude-dir-file>**/*_eo.json</exclude-dir-file>
 
<exclude-dir-file>**/*_eo__*.json</exclude-dir-file>
 
<exclude-dir-file>**/*_br.json</exclude-dir-file>
 
<exclude-dir-file>**/LRMScans/**</exclude-dir-file>
 
<exclude-dir-file>**/GlobalyzerScans/**</exclude-dir-file>
 
<exclude-dir-file>**/sonar-project.properties</exclude-dir-file>
 
 
</excludes>
 
</excludes>
 
</dirset>
 
</dirset>

Revision as of 15:52, 23 September 2016

The .Net framework provides for a LRM supports .resx files. See https://msdn.microsoft.com/en-us/library/ekyft91f(v=vs.100).aspx .

Locale File Extensions

  • The resx files follow this naming convention: filename.<language>.resx or filename.<language>-<country>.resx. For example, resources.resx or resources.en.resx for a base file, resources.fr.resx or resources.fr-FR.resx, etc.
  • If you can, avoid duplicate file names. Duplications incur more prep kits than necessary.

Example of .resx Files

 <?xml version="1.0" encoding="UTF-8"?>
 <root>
   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
       <xsd:element msdata:IsDataSet="true" name="root">
           <xsd:complexType>
               <xsd:choice maxOccurs="unbounded">
                   <xsd:element name="data">
                       <xsd:complexType>
                           <xsd:sequence>
                               <xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string" />
                               <xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string" />
                           </xsd:sequence>
                           <xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" />
                           <xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string" />
                           <xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string" />
                       </xsd:complexType>
                   </xsd:element>
                   <xsd:element name="resheader">
                       <xsd:complexType>
                           <xsd:sequence>
                               <xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string" />
                           </xsd:sequence>
                           <xsd:attribute name="name" type="xsd:string" use="required" />
                       </xsd:complexType>
                   </xsd:element>
               </xsd:choice>
           </xsd:complexType>
       </xsd:element>
   </xsd:schema>
   <resheader name="resmimetype">
       <value>text/microsoft-resx</value>
   </resheader>
   <resheader name="version">
       <value>1.3</value>
   </resheader>
   <resheader name="reader">
       <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
       <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <value>Car Option</value>
   <value>this should be detected</value>
 </root>


Sample LRM Project Definition File for .resx

 <?xml version="1.0" encoding="UTF-8"?>
 <lrmconf>
  <model-version>1.0.0</model-version>
  <project-name>WinApp</project-name>
       <project-desc>Lingoport.WinApp is configured to support resx resource files</project-desc>
 <group-name>Lingoport</group-name>
 <top-level-dir>/var/lib/jenkins/jobs/Lingoport.WinApp/workspace</top-level-dir>
 <detect-errors>
   <missed-trans-error>1</missed-trans-error>
   <parameter-mismatch-error>1</parameter-mismatch-error>
 </detect-errors>
 <track-back-locale>br</track-back-locale>
 <pseudo-locale>eo</pseudo-locale>
 <target-locales>
   <locale>de</locale>
   <locale>fr</locale>
   <locale>ja</locale>
 </target-locales>
 <default-locale>en_US</default-locale>
 <resource-extensions>
    <resource-extension>
     <extension>resx</extension>
     <file-name-pattern>*.l-c-v</file-name-pattern>
     <use-pattern-on-dflt-locale>0</use-pattern-on-dflt-locale>                
     <file-location-pattern></file-location-pattern>
     <use-location-pattern-on-dflt-locale>0</use-location-pattern-on-dflt-locale>
     <base-file-encoding>UTF-8</base-file-encoding>
     <localized-file-encoding>UTF-8</localized-file-encoding>
     <parameter-regex-pattern><![CDATA[%[ds]|%\d+\$[ds]|%\{\w+\}]]></parameter-regex-pattern>
   </resource-extension>
 </resource-extensions>
 <dirset>
   <includes>
     <include-dir>**/**</include-dir>
   </includes>
    <excludes>
     <exclude-dir-file>**/source/bin/**</exclude-dir-file>
   </excludes>
 </dirset>
 </lrmconf>