View Issue Details

IDProjectCategoryView StatusLast Update
0035391LazarusDocumentationpublic2020-06-05 13:59
ReporterDon Siders Assigned ToJuha Manninen  
PrioritynormalSeverityminorReproducibilityN/A
Status closedResolutionfixed 
PlatformanyOSany 
Product Version2.1 (SVN) 
Summary0035391: Documentation updates
DescriptionSee attached docs.diff file

lazutils/lazunicode.xml
* fixed spelling error

lcl/defaulttranslator.xml
* added documentation

lcl/lcltranslator.xml
* sync'd topics to source code
* added documentation
TagsNo tags attached.
Fixed in Revisionr63298
LazTarget-
Widgetset
Attached Files

Activities

Don Siders

2019-04-16 03:58

reporter  

docs.diff (27,017 bytes)   
Index: lazutils/lazunicode.xml
===================================================================
--- lazutils/lazunicode.xml	(revision 60990)
+++ lazutils/lazunicode.xml	(working copy)
@@ -242,7 +242,7 @@
             Raises an assertion error if the number of bytes in aCount is 0 (zero). Raised with the message 'TUnicodeEnumeratorBase.UpdateCurrent: aCount=0'.
           </p>
           <p>
-            Raises an assertion error if the length of bytes copied to Current is different that the valuer in aCount. Raised with the message 'TUnicodeEnumeratorBase.UpdateCurrent: Length(fCurrent)&lt;&gt;aCount.')'.
+            Raises an assertion error if the length of bytes copied to Current is different that the value in aCount. Raised with the message 'TUnicodeEnumeratorBase.UpdateCurrent: Length(fCurrent)&lt;&gt;aCount.')'.
           </p>
         </errors>
       </element>
Index: lcl/defaulttranslator.xml
===================================================================
--- lcl/defaulttranslator.xml	(revision 60990)
+++ lcl/defaulttranslator.xml	(working copy)
@@ -1,71 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <fpdoc-descriptions>
-<package name="lcl">
+  <package name="lcl">
+    <!--
+    ====================================================================
+      DefaultTranslator
+    ====================================================================
+    -->
+    <module name="DefaultTranslator">
+      <short>
+        Performs string translations using the language selected for the project
+      </short>
+      <descr>
+        <p>
+          <var>defaulttranslator.pas</var> performs string translations using the default I18n and L10n translation facilities in the Lazarus IDE and LCL. This unit does not contain any code other than the initialization section in the unit. It calls the SetDefaultLang routine to specify that the default language identifier for the project is used.
+        </p>
+        <p>
+          To enable automatic string translation, use this unit in your application and check the <b>Enable i18n</b> option in the <b>Project &gt; Project Options &gt; i18n</b> screen. If you want translation to be performed using a specific language identifier, use the LCLTranslator unit instead.
+        </p>
+        <p>
+          For more information, see the Lazarus Wiki article:
+        </p>
+        <p>
+          <url href="http://wiki.lazarus.freepascal.org/Step-by-step_instructions_for_creating_multi-language_applications">Creating Multi-Language Applications</url>
+        </p>
+      </descr>

-<!--
-  ====================================================================
-    DefaultTranslator
-  ====================================================================
--->
+      <!-- unresolved type reference Visibility: default -->
+      <element name="LCLTranslator"/>

-<module name="DefaultTranslator">
-<short/>
-<descr>
-</descr>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="Classes">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="SysUtils">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="LResources">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="GetText">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="Controls">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="typinfo">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-</module> <!-- DefaultTranslator -->
-</package>
+    </module>
+    <!-- DefaultTranslator -->
+  </package>
 </fpdoc-descriptions>
Index: lcl/lcltranslator.xml
===================================================================
--- lcl/lcltranslator.xml	(revision 60990)
+++ lcl/lcltranslator.xml	(working copy)
@@ -1,253 +1,376 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <fpdoc-descriptions>
-<package name="lcl">
+  <package name="lcl">
+    <!--
+    ====================================================================
+      LCLTranslator
+    ====================================================================
+    -->
+    <module name="LCLTranslator">
+      <short>
+        Performs string translation in the Lazarus IDE and LCL
+      </short>
+      <descr>
+        <p>
+          <var>lcltranslator.pas</var> contains classes and routines used to perform translation for strings used in Lazarus IDE and LCL (Lazarus Component Library). It searches for .po (Portable Object) and/or .mo (Machine Object) files used to perform I18n internationalization and L10n localization. The .po/.mo files are stored in the <b>languages</b> or <b>locale</b> directories. To access translation files from an alternate location, use the LResources unit and the LRSMoFile variable directly.
+        </p>
+        <p>
+          To enable string  translation, use this unit in your application and check the <b>Enable i18n</b> option in the <b>Project &gt; Project Options &gt; i18n</b> screen. You will need to call the SetDefaultLang routine in your code to activate the translation facility. If you want translation to be performed automatically, use the DefaultTranslator unit instead.
+        </p>
+        <p>
+          This unit also activates translated LCL messages using the lclstrconsts file(s) in the directory where program translation files are stored.
+        </p>
+        <p>
+          For more information, see the Lazarus Wiki article:
+        </p>
+        <p>
+          <url href="http://wiki.lazarus.freepascal.org/Step-by-step_instructions_for_creating_multi-language_applications">Creating Multi-Language Applications</url>
+        </p>
+      </descr>

-<!--
-  ====================================================================
-    LCLTranslator
-  ====================================================================
--->
+      <!-- unresolved externals -->
+      <element name="Classes"/>
+      <element name="SysUtils"/>
+      <element name="TypInfo"/>
+      <element name="GetText"/>
+      <element name="LCLType"/>
+      <element name="LResources"/>
+      <element name="Forms"/>
+      <element name="Translations"/>
+      <element name="LazFileUtils"/>
+      <element name="LazUTF8"/>

-<module name="LCLTranslator">
-<short></short>
-<descr>
-</descr>
+      <!-- class Visibility: default -->
+      <element name="TUpdateTranslator">
+        <short>
+          Performs string translations for persistent objects
+        </short>
+        <descr>
+          <p>
+            <var>TUpdateTranslator</var> is a TAbstractTranslator descendant used to perform string translations for persistent objects. TUpdateTranslator provides the UpdateTranslation method which updates any translatable  properties in Lazarus resources.
+          </p>
+          <p>
+            TUpdateTranslator is used as the ancestor for the TDefaultTranslator and TPOTranslator classes.
+          </p>
+        </descr>
+        <seealso>
+          <link id="LResources.TAbstractTranslator"/>
+          <link id="TDefaultTranslator"/>
+          <link id="TPOTranslator"/>
+        </seealso>
+      </element>

-<!-- class Visibility: default -->
-<element name="TUpdateTranslator">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- variable Visibility: private -->
+      <element name="TUpdateTranslator.FStackPath"/>

-<!-- variable Visibility: private -->
-<element name="TUpdateTranslator.FStackPath">
-<short></short>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
+      <!-- procedure Visibility: private -->
+      <element name="TUpdateTranslator.IntUpdateTranslation" link="TUpdateTranslator.UpdateTranslation">
+        <short>
+          Performs action required to update string translations for persistent objects using RTTI
+        </short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>

-<!-- procedure Visibility: private -->
-<element name="TUpdateTranslator.IntUpdateTranslation">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- argument Visibility: private -->
+      <element name="TUpdateTranslator.IntUpdateTranslation.AnInstance">
+        <short>Persistent object updated in the method</short>
+      </element>

-<!-- argument Visibility: private -->
-<element name="TUpdateTranslator.IntUpdateTranslation.AnInstance">
-<short></short>
-</element>
+      <!-- procedure Visibility: public -->
+      <element name="TUpdateTranslator.UpdateTranslation">
+        <short>Updates string translations for persistent objects</short>
+        <descr>
+          <p>
+            <var>UpdateTranslation</var> is procedure used to translate string properties in the specified persistent object instance. UpdateTranslation uses RTTI (Run Time Type Information) to update the value for translatable properties in Lazarus resources. This requires properties to be a TPersistent descendant with RTTI enabled, and have a setter (write access) procedure. Strings, Classes, Components and the sub-Components are handled in the method.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>

-<!-- procedure Visibility: public -->
-<element name="TUpdateTranslator.UpdateTranslation">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TUpdateTranslator.UpdateTranslation.AnInstance">
+        <short>Persistent object updated in the method</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TUpdateTranslator.UpdateTranslation.AnInstance">
-<short></short>
-</element>
+      <!-- class Visibility: default -->
+      <element name="TDefaultTranslator">
+        <short>
+          Performs string translations using a .mo file (Machine Object)
+        </short>
+        <descr>
+          <p>
+            <var>TDefaultTranslator</var> is a <var>TUpdateTranslator</var> descendant used to translate string properties using the values defined in a .mo (<b>Machine Object</b>) file. A .mo file is the binary format used for translation resources created for the <b>GNU gettext</b> program. TDefaultTranslator implements the abstract TranslateStringProperty method defined in the ancestor class.
+          </p>
+          <p>
+            Use TPOTranslator to translate string properties using the .po (<b>Portable Object</b>) file format.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TUpdateTranslator"/>
+          <link id="TPOTranslator"/>
+        </seealso>
+      </element>

-<!-- class Visibility: default -->
-<element name="TDefaultTranslator">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- variable Visibility: private -->
+      <element name="TDefaultTranslator.FMOFile"/>

-<!-- variable Visibility: private -->
-<element name="TDefaultTranslator.FMOFile">
-<short></short>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
+      <!-- constructor Visibility: public -->
+      <element name="TDefaultTranslator.Create">
+        <short>Constructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Create</var> is the constructor for the class instance, and calls the inherited constructor. Create initializes and store an TMOFile instance using the file name specified in the MOFileName parameter. Create calls UTF8ToSys to convert any UTF-8-encoded values in MOFileName to the default encoding used for the platform or OS.
+           </p>
+        </descr>
+        <seealso></seealso>
+      </element>

-<!-- constructor Visibility: public -->
-<element name="TDefaultTranslator.Create">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TDefaultTranslator.Create.MOFileName">
+        <short>.mo file used in the class instance</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.Create.MOFileName">
-<short></short>
-</element>
+      <!-- destructor Visibility: public -->
+      <element name="TDefaultTranslator.Destroy">
+        <short>Destructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Destroy</var> is the overridden destructor for the class instance. Destroy ensures that resources allocated to an internal TMOFile member are freed prior to calling the inherited destructor.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>

-<!-- destructor Visibility: public -->
-<element name="TDefaultTranslator.Destroy">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- procedure Visibility: public -->
+      <element name="TDefaultTranslator.TranslateStringProperty">
+        <short>
+          Gets the translated value for the specified property
+        </short>
+        <descr>
+          <p>
+            <var>TranslateStringProperty</var> is a procedure used to get the translated value for the specified property from the .mo file used in the class instance.
+          </p>
+          <p>
+            Sender is the class instance requesting the translation action.
+          </p>
+          <p>
+            Instance is the TPersistent object instance affected in the method.
+          </p>
+          <p>
+            PropInfo contains the RTTI property information needed to update the property value.
+          </p>
+          <p>
+            TranslateStringProperty uses the internal TMOFile instance created in the constructor to get the translated value for the property name. The translated string value is stored in the Content argument and returned to the caller. The property value is actually updated in the caller.
+          </p>
+          <p>
+            No actions are performed in the method if a .mo file was not found with the required file name.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>

-<!-- procedure Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TDefaultTranslator.TranslateStringProperty.Sender">
+        <short>Class instance calling the method</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.Sender">
-<short></short>
-</element>
+      <element name="TDefaultTranslator.TranslateStringProperty.Instance">
+        <short>Persistent object with properties affected in the method</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.Instance">
-<short></short>
-</element>
+      <element name="TDefaultTranslator.TranslateStringProperty.PropInfo">
+        <short>RTTI Property information</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.PropInfo">
-<short></short>
-</element>
+      <element name="TDefaultTranslator.TranslateStringProperty.Content">
+        <short>Value for the translated string property</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.Content">
-<short></short>
-</element>
+      <!-- class Visibility: default -->
+      <element name="TPOTranslator">
+        <short>
+          Performs string translations using a .po (Portable Object) file
+        </short>
+        <descr>
+          <p>
+            <var>TPOTranslator</var> is a <var>TUpdateTranslator</var> descendant used to translate string properties using the values defined in a .po (<b>Portable Object</b>) file. A .po file is the text format used for translation resources created for the <b>GNU gettext</b> program. TPOTranslator  implements the abstract TranslateStringProperty method defined in the ancestor class.
+          </p>
+          <p>
+            Use TDefaultTranslator to translate string properties using the .mo (<b>Machine Object</b>) file format.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TUpdateTranslator"/>
+          <link id="TDefaultTranslator"/>
+        </seealso>
+      </element>

-<!-- class Visibility: default -->
-<element name="TPOTranslator">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- variable Visibility: private -->
+      <element name="TPOTranslator.FPOFile"/>

-<!-- variable Visibility: private -->
-<element name="TPOTranslator.FPOFile">
-<short></short>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
+      <!-- constructor Visibility: public -->
+      <element name="TPOTranslator.Create">
+        <short>
+          Constructor for the class instance
+        </short>
+        <descr>
+          <p>
+            <var>Create</var> is the overloaded constructor for the class instance. Both variant call the inherited constructor to initialize the class instance. The overloaded variants allow use of a file name or a <var>TPOFile</var> instance in the class. TPOTranslator contains an internal TPOFile member which is used to access the translated string values.
+          </p>
+          <p>
+            POFileName contains the file name which constains the translated values for strings. A TPOFile instance is created for the specified file name.
+          </p>
+          <p>
+            aPOFile is the TPPOFile class instance which contains the translated values for strings.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>

-<!-- constructor Visibility: public -->
-<element name="TPOTranslator.Create">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TPOTranslator.Create.POFileName">
+        <short>.po file name to use for translated string values</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TPOTranslator.Create.POFileName">
-<short></short>
-</element>
+      <element name="TPOTranslator.Create.aPOFile">
+        <short>.po file to use for translated string values</short>
+      </element>

-<!-- destructor Visibility: public -->
-<element name="TPOTranslator.Destroy">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- destructor Visibility: public -->
+      <element name="TPOTranslator.Destroy">
+        <short>Destructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Destroy</var> is the overridden destructor for the class instance. Destroy ensures that resources allocated to the internal TPOFile member in the class instance are freed. Destroy calls the inherited destructor.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>

-<!-- procedure Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- procedure Visibility: public -->
+      <element name="TPOTranslator.TranslateStringProperty">
+        <short>
+          Gets the translated value for the specified property
+        </short>
+        <descr>
+          <p>
+            <var>TranslateStringProperty</var> is a procedure used to get the translated value for the specified property from the .po file used in the class instance.
+          </p>
+          <p>
+            Sender is the class instance requesting the translation action.
+          </p>
+          <p>
+            Instance is the TPersistent object instance affected in the method.
+          </p>
+          <p>
+            PropInfo contains the RTTI property information needed to update the property value.
+          </p>
+          <p>
+            TranslateStringProperty uses the internal TPOFile instance created in the constructor to get the translated value for the property. The translated string value is stored in the Content argument and returned to the caller. The property value is actually updated in the caller.
+          </p>
+          <p>
+            No actions are performed in the method if a .po file was not found with the required file name.
+          </p>
+        </descr>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.Sender">
-<short></short>
-</element>
+      <element name="TPOTranslator.TranslateStringProperty.Sender">
+        <short>Class instance calling the method</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.Instance">
-<short></short>
-</element>
+      <element name="TPOTranslator.TranslateStringProperty.Instance">
+        <short>Persistent object with properties affected in the method</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.PropInfo">
-<short></short>
-</element>
+      <element name="TPOTranslator.TranslateStringProperty.PropInfo">
+        <short>RTTI Property information</short>
+      </element>

-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.Content">
-<short></short>
-</element>
+      <element name="TPOTranslator.TranslateStringProperty.Content">
+        <short>Value for the translated string property</short>
+      </element>

-<!-- procedure Visibility: default -->
-<element name="SetDefaultLang">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <!-- procedure Visibility: default -->
+      <element name="SetDefaultLang">
+        <short>
+          Sets the default language used for string translations
+        </short>
+        <descr>
+          <p>
+            <var>SetDefaultLang</var> is a procedure used to the set the default language used for string translations.
+          </p>
+          <p>
+            <var>Lang</var> contains the Language ID to use for translated strings. Lang contains a language identifier defined in ISO 639, at:
+            <url href="http://www.loc.gov/standards/iso639-2/php/code_list.php">
+              ISO 639 - Codes for the Representation of Names of Languages
+            </url>
+          </p>
+          <p>
+            The default value for the parameter is an empty string (<b>''</b>), and indicates that strings are not translated.
+          </p>
+          <p>
+            <var>Dir</var> contains the directory name where .po/.mo files are stored. The default value is an empty string (<b>''</b>), and indicates that the default directories are used for translation files.
+          </p>
+          <p>
+            <var>LocaleFileName</var> contain the localization file used for for strings. This file handles variations in grammar and spelling that occur in local dialects for a language. It contains a value like 'zh_cn' or 'pt_br'. The default value is an empty string (<b>''</b>), and indicates that localization is not preformed for resource strings.
+          </p>
+          <p>
+            <var>ForceUpdate</var> indicates if an immediate update to to the User Interface is performed when translations are loaded. Set ForceUpdate to False when SetDefaultLang is called from the initialization section for a unit. The default value is True.
+          </p>
+          <p>
+            SetDefaultLang ensures that Language ID and Locale Codes are valid, and .po/.mo exist for the specified names before they are applied. SetDefaultLang calls the FindLocaleFileName function to get the file name used for translation resources. .po files are applied when they exist. Otherwise, .mo file are used to get the translated string values. LCL resource string constants are also translated when the default language code is assigned.
+          </p>
+          <p>
+            When ForceUpdate contains <b>True</b>, string properties used in Forms, Data Modules, Controls, Components and Persistent objects are translated. This action is performed for items with  RTTI (Run Time Type Information) and includes a setter (write access) procedure. TUpdateTranslator is used to perform the update to user interface elements.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TPOTranslator"/>
+          <link id="TDefaultTranslator"/>
+          <link id="TUpdateTranslator"/>
+          <link id="GetDefaultLang"/>
+        </seealso>
+      </element>

-<!-- argument Visibility: default -->
-<element name="SetDefaultLang.Lang">
-<short></short>
-</element>
+      <element name="SetDefaultLang.Lang">
+        <short>
+          Language ID to use for translated strings
+        </short>
+      </element>

-<!-- argument Visibility: default -->
-<element name="SetDefaultLang.Dir">
-<short></short>
-</element>
+      <element name="SetDefaultLang.Dir">
+        <short>Directory name with translation files</short>
+      </element>

-<!-- argument Visibility: default -->
-<element name="SetDefaultLang.ForceUpdate">
-<short></short>
-</element>
+      <element name="SetDefaultLang.LocaleFileName">
+        <short>Locale code for the localization file</short>
+      </element>

-</module> <!-- LCLTranslator -->
+      <element name="SetDefaultLang.ForceUpdate">
+        <short>Indicates if the UI should be updated immediately</short>
+      </element>

-</package>
+      <element name="GetDefaultLang">
+        <short>
+          Gets the default language used for strings
+        </short>
+        <descr>
+          <p>
+            <var>GetDefaultLang</var> is a <var>String</var> function used to get the default language in use for strings translated in the unit. The return value contains the ISO 639-1 Language ID for the translation files used, or an empty string (<b>''</b>) when SetDefaultLang has not been called. See the  following for the valid ISO Language Identifiers:
+          </p>
+          <p>
+            <url href="http://www.loc.gov/standards/iso639-2/php/code_list.php">
+              ISO 639 - Codes for the Representation of Names of Languages
+            </url>
+          </p>
+        </descr>
+        <seealso>
+          <link id="SetDefaultLang"/>
+        </seealso>
+      </element>
+      <element name="GetDefaultLang.Result">
+        <short>The default language in use for translations</short>
+      </element>
+
+    </module>
+    <!-- LCLTranslator -->
+
+  </package>
 </fpdoc-descriptions>
docs.diff (27,017 bytes)   

Don Siders

2020-06-01 00:58

reporter   ~0123158

Ping.

Juha Manninen

2020-06-02 09:20

developer   ~0123186

Last edited: 2020-06-02 09:20

View 3 revisions

$ cd docs/xml/
$ patch -p0 < ~/patch/docs.diff
(Stripping trailing CRs from patch; use --binary to disable.)
patching file lazutils/lazunicode.xml
Hunk # 1 succeeded at 244 (offset 2 lines).
(Stripping trailing CRs from patch; use --binary to disable.)
patching file lcl/defaulttranslator.xml
(Stripping trailing CRs from patch; use --binary to disable.)
patching file lcl/lcltranslator.xml
Hunk # 1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file lcl/lcltranslator.xml.rej

Don Siders

2020-06-02 15:06

reporter   ~0123190

It's been awhile. I can look at lcltranslator.xml again when I get time.

Don Siders

2020-06-04 17:35

reporter   ~0123223

Unfortunately, I reverted the changes to the files months ago. The 'hunk' error seems to be caused by an update that occurred after the diff was submitted and before the diff was applied.

I have recreated the updates for defaulttranslator.xml and lcltranslator.xml, and generated separate diff files. Hopefully, this resolves the problem. Let me know if there are any other issues.

See attached: defaulttranslator.xml.diff, lcltranslator.xml.diff.
defaulttranslator.xml.diff (3,040 bytes)   
Index: docs/xml/lcl/defaulttranslator.xml
===================================================================
--- docs/xml/lcl/defaulttranslator.xml	(revision 37848)
+++ docs/xml/lcl/defaulttranslator.xml	(working copy)
@@ -1,71 +1,31 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <fpdoc-descriptions>
-<package name="lcl">
+  <package name="lcl">
+    <!--
+    ====================================================================
+      DefaultTranslator
+    ====================================================================
+    -->
+    <module name="DefaultTranslator">
+      <short>
+        Performs string translations using the language selected for the project
+      </short>
+      <descr>
+        <p>
+          <file>defaulttranslator.pas</file> performs string translations using the default I18n and L10n translation facilities in the Lazarus IDE and LCL. This unit does not contain any code other than the initialization section in the unit. It calls the SetDefaultLang routine to specify that the default language identifier for the project is used.
+        </p>
+        <p>
+          To enable automatic string translation, use this unit in your application and check the <b>Enable i18n</b> option in the <b>Project &gt; Project Options &gt; i18n</b> screen. If you want translation to be performed using a specific language identifier, use the <file>LCLTranslator</file> unit instead.
+        </p>
+        <p>
+          For more information, see the Lazarus Wiki article:
+          <url href="http://wiki.lazarus.freepascal.org/Step-by-step_instructions_for_creating_multi-language_applications">Creating Multi-Language Applications</url>
+        </p>
+      </descr>
 
-<!--
-  ====================================================================
-    DefaultTranslator
-  ====================================================================
--->
+      <element name="LCLTranslator"/>
 
-<module name="DefaultTranslator">
-<short/>
-<descr>
-</descr>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="Classes">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="SysUtils">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="LResources">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="GetText">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="Controls">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="typinfo">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-</module> <!-- DefaultTranslator -->
-</package>
+    </module>
+    <!-- DefaultTranslator -->
+  </package>
 </fpdoc-descriptions>
defaulttranslator.xml.diff (3,040 bytes)   
lcltranslator.xml.diff (23,900 bytes)   
Index: docs/xml/lcl/lcltranslator.xml
===================================================================
--- docs/xml/lcl/lcltranslator.xml	(revision 61627)
+++ docs/xml/lcl/lcltranslator.xml	(working copy)
@@ -1,253 +1,369 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="utf-8"?>
 <fpdoc-descriptions>
-<package name="lcl">
+  <package name="lcl">
+    <!--
+    ====================================================================
+      LCLTranslator
+    ====================================================================
+    -->
+    <module name="LCLTranslator">
+      <short>
+        Performs string translation in the Lazarus IDE and LCL
+      </short>
+      <descr>
+        <p>
+          <var>lcltranslator.pas</var> contains classes and routines used to perform translation for strings used in Lazarus IDE and LCL (Lazarus Component Library). It searches for .po (Portable Object) and/or .mo (Machine Object) files used to perform I18n internationalization and L10n localization. The .po/.mo files are stored in the <b>languages</b> or <b>locale</b> directories. To access translation files from an alternate location, use the LResources unit and the LRSMoFile variable directly.
+        </p>
+        <p>
+          To enable string  translation, use this unit in your application and check the <b>Enable i18n</b> option in the <b>Project &gt; Project Options &gt; i18n</b> screen. You will need to call the SetDefaultLang routine in your code to activate the translation facility. If you want translation to be performed automatically, use the DefaultTranslator unit instead.
+        </p>
+        <p>
+          This unit also translates LCL string constants in the <file>lclstrconsts</file> file using files in the directory where program translation files are stored.
+        </p>
+        <p>
+          For more information, see the Lazarus Wiki article:
+        </p>
+        <p>
+          <url href="http://wiki.lazarus.freepascal.org/Step-by-step_instructions_for_creating_multi-language_applications">Creating Multi-Language Applications</url>
+        </p>
+      </descr>
 
-<!--
-  ====================================================================
-    LCLTranslator
-  ====================================================================
--->
+      <element name="Classes"/>
+      <element name="SysUtils"/>
+      <element name="TypInfo"/>
+      <element name="GetText"/>
+      <element name="LResources"/>
+      <element name="Forms"/>
+      <element name="LCLType"/>
+      <element name="LazLoggerBase"/>
+      <element name="Translations"/>
+      <element name="LazFileUtils"/>
+      <element name="LazUTF8"/>
 
-<module name="LCLTranslator">
-<short></short>
-<descr>
-</descr>
+      <element name="TUpdateTranslator">
+        <short>
+          Performs string translations for persistent objects
+        </short>
+        <descr>
+          <p>
+            <var>TUpdateTranslator</var> is a TAbstractTranslator descendant used to perform string translations for persistent objects. TUpdateTranslator provides the UpdateTranslation method which updates any translatable  properties in Lazarus resources.
+          </p>
+          <p>
+            TUpdateTranslator is used as the ancestor for the TDefaultTranslator and TPOTranslator classes.
+          </p>
+        </descr>
+        <seealso>
+          <link id="LResources.TAbstractTranslator"/>
+          <link id="TDefaultTranslator"/>
+          <link id="TPOTranslator"/>
+        </seealso>
+      </element>
 
-<!-- class Visibility: default -->
-<element name="TUpdateTranslator">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TUpdateTranslator.FStackPath"/>
 
-<!-- variable Visibility: private -->
-<element name="TUpdateTranslator.FStackPath">
-<short></short>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
+      <element name="TUpdateTranslator.IntUpdateTranslation" link="TUpdateTranslator.UpdateTranslation">
+        <short>
+          Performs action required to update string translations for persistent objects using RTTI
+        </short>
+        <descr></descr>
+        <seealso></seealso>
+      </element>
 
-<!-- procedure Visibility: private -->
-<element name="TUpdateTranslator.IntUpdateTranslation">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TUpdateTranslator.IntUpdateTranslation.AnInstance">
+        <short>Persistent object updated in the method</short>
+      </element>
 
-<!-- argument Visibility: private -->
-<element name="TUpdateTranslator.IntUpdateTranslation.AnInstance">
-<short></short>
-</element>
+      <element name="TUpdateTranslator.UpdateTranslation">
+        <short>Updates string translations for persistent objects</short>
+        <descr>
+          <p>
+            <var>UpdateTranslation</var> is procedure used to translate string properties in the specified persistent object instance. UpdateTranslation uses RTTI (Run Time Type Information) to update the value for translatable properties in Lazarus resources. This requires properties to be a TPersistent descendant with RTTI enabled, and have a setter (write access) procedure. Strings, Classes, Components and the sub-Components are handled in the method.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>
+      <element name="TUpdateTranslator.UpdateTranslation.AnInstance">
+        <short>Persistent object updated in the method</short>
+      </element>
 
-<!-- procedure Visibility: public -->
-<element name="TUpdateTranslator.UpdateTranslation">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TDefaultTranslator">
+        <short>
+          Performs string translations using a .mo file (Machine Object)
+        </short>
+        <descr>
+          <p>
+            <var>TDefaultTranslator</var> is a <var>TUpdateTranslator</var> descendant used to translate string properties using the values defined in a .mo (<b>Machine Object</b>) file. A .mo file is the binary format used for translation resources created for the <b>GNU gettext</b> program. TDefaultTranslator implements the abstract TranslateStringProperty method defined in the ancestor class.
+          </p>
+          <p>
+            Use TPOTranslator to translate string properties using the .po (<b>Portable Object</b>) file format.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TUpdateTranslator"/>
+          <link id="TPOTranslator"/>
+        </seealso>
+      </element>
 
-<!-- argument Visibility: public -->
-<element name="TUpdateTranslator.UpdateTranslation.AnInstance">
-<short></short>
-</element>
+      <element name="TDefaultTranslator.FMOFile"/>
 
-<!-- class Visibility: default -->
-<element name="TDefaultTranslator">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TDefaultTranslator.Create">
+        <short>Constructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Create</var> is the constructor for the class instance, and calls the inherited constructor. Create initializes and stores a TMOFile instance using the file name specified in the MOFileName parameter. Create calls UTF8ToSys to convert any UTF-8-encoded values in MOFileName to the default encoding used for the platform or OS.
+           </p>
+        </descr>
+        <seealso></seealso>
+      </element>
 
-<!-- variable Visibility: private -->
-<element name="TDefaultTranslator.FMOFile">
-<short></short>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
+      <element name="TDefaultTranslator.Create.MOFileName">
+        <short>.mo file used in the class instance</short>
+      </element>
 
-<!-- constructor Visibility: public -->
-<element name="TDefaultTranslator.Create">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TDefaultTranslator.Destroy">
+        <short>Destructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Destroy</var> is the overridden destructor for the class instance. Destroy ensures that resources allocated to an internal TMOFile member are freed prior to calling the inherited destructor.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>
 
-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.Create.MOFileName">
-<short></short>
-</element>
+      <element name="TDefaultTranslator.TranslateStringProperty">
+        <short>
+          Gets the translated value for the specified property
+        </short>
+        <descr>
+          <p>
+            <var>TranslateStringProperty</var> is a procedure used to get the translated value for the specified property from the .mo file used in the class instance.
+          </p>
+          <p>
+            Sender is the class instance requesting the translation action.
+          </p>
+          <p>
+            Instance is the TPersistent object instance affected in the method.
+          </p>
+          <p>
+            PropInfo contains the RTTI property information needed to update the property value.
+          </p>
+          <p>
+            TranslateStringProperty uses the internal TMOFile instance created in the constructor to get the translated value for the property name. The translated string value is stored in the Content argument and returned to the caller. The property value is actually updated in the caller.
+          </p>
+          <p>
+            No actions are performed in the method if a .mo file was not found with the required file name.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>
+      <element name="TDefaultTranslator.TranslateStringProperty.Sender">
+        <short>Class instance calling the method</short>
+      </element>
+      <element name="TDefaultTranslator.TranslateStringProperty.Instance">
+        <short>Persistent object with properties affected in the method</short>
+      </element>
+      <element name="TDefaultTranslator.TranslateStringProperty.PropInfo">
+        <short>RTTI Property information</short>
+      </element>
+      <element name="TDefaultTranslator.TranslateStringProperty.Content">
+        <short>Value for the translated string property</short>
+      </element>
 
-<!-- destructor Visibility: public -->
-<element name="TDefaultTranslator.Destroy">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TPOTranslator">
+        <short>
+          Performs string translations using a .po (Portable Object) file
+        </short>
+        <descr>
+          <p>
+            <var>TPOTranslator</var> is a <var>TUpdateTranslator</var> descendant used to translate string properties using the values defined in a .po (<b>Portable Object</b>) file. A .po file is the text format used for translation resources created for the <b>GNU gettext</b> program. TPOTranslator  implements the abstract TranslateStringProperty method defined in the ancestor class.
+          </p>
+          <p>
+            Use TDefaultTranslator to translate string properties using the .mo (<b>Machine Object</b>) file format.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TUpdateTranslator"/>
+          <link id="TDefaultTranslator"/>
+        </seealso>
+      </element>
 
-<!-- procedure Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TPOTranslator.FPOFile"/>
 
-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.Sender">
-<short></short>
-</element>
+      <element name="TPOTranslator.Create">
+        <short>
+          Constructor for the class instance
+        </short>
+        <descr>
+          <p>
+            <var>Create</var> is the overloaded constructor for the class instance. Both variant call the inherited constructor to initialize the class instance. The overloaded variants allow use of a file name or a <var>TPOFile</var> instance in the class. TPOTranslator contains an internal TPOFile member which is used to access the translated string values.
+          </p>
+          <p>
+            POFileName contains the file name which constains the translated values for strings. A TPOFile instance is created for the specified file name.
+          </p>
+          <p>
+            aPOFile is the TPPOFile class instance which contains the translated values for strings.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>
 
-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.Instance">
-<short></short>
-</element>
+      <element name="TPOTranslator.Create.POFileName">
+        <short>.po file name to use for translated string values</short>
+      </element>
+      <element name="TPOTranslator.Create.aPOFile">
+        <short>.po file to use for translated string values</short>
+      </element>
 
-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.PropInfo">
-<short></short>
-</element>
+      <element name="TPOTranslator.Destroy">
+        <short>Destructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Destroy</var> is the overridden destructor for the class instance. Destroy ensures that resources allocated to the internal TPOFile member in the class instance are freed. Destroy calls the inherited destructor.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>
 
-<!-- argument Visibility: public -->
-<element name="TDefaultTranslator.TranslateStringProperty.Content">
-<short></short>
-</element>
+      <element name="TPOTranslator.TranslateStringProperty">
+        <short>
+          Gets the translated value for the specified property
+        </short>
+        <descr>
+          <p>
+            <var>TranslateStringProperty</var> is a procedure used to get the translated value for the specified property from the .po file used in the class instance.
+          </p>
+          <p>
+            Sender is the class instance requesting the translation action.
+          </p>
+          <p>
+            Instance is the TPersistent object instance affected in the method.
+          </p>
+          <p>
+            PropInfo contains the RTTI property information needed to update the property value.
+          </p>
+          <p>
+            TranslateStringProperty uses the internal TPOFile instance created in the constructor to get the translated value for the property. The translated string value is stored in the Content argument and returned to the caller. The property value is actually updated in the caller.
+          </p>
+          <p>
+            No actions are performed in the method if a .po file was not found with the required file name.
+          </p>
+        </descr>
+      </element>
+      <element name="TPOTranslator.TranslateStringProperty.Sender">
+        <short>Class instance calling the method</short>
+      </element>
+      <element name="TPOTranslator.TranslateStringProperty.Instance">
+        <short>Persistent object with properties affected in the method</short>
+      </element>
+      <element name="TPOTranslator.TranslateStringProperty.PropInfo">
+        <short>RTTI Property information</short>
+      </element>
+      <element name="TPOTranslator.TranslateStringProperty.Content">
+        <short>Value for the translated string property</short>
+      </element>
 
-<!-- class Visibility: default -->
-<element name="TPOTranslator">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="TranslateLCLResourceStrings">
+        <short>Translates resource strings in <file>LCLStrConsts</file> to the specified language</short>
+        <descr>
+          <p>
+            <var>TranslateLCLResourceStrings</var> is a <var>String</var> function used to translate resource strings in the <file>LCLStrConsts</file> unit to the language identifier specified in the Lang argument.
+          </p>
+          <p>
+            Dir is an optional path where .PO or .MO files can be found with the translated values for string constants.
+          </p>
+          <p>
+            TranslateLCLResourceStrings calls FindLocaleFileName to locate the .PO or .MO file. Preference is given to the .PO variant. If it is locate in the speciifed path, the TranslateUnitResourceStrings routine is called to tranlate constants from the LCLStrConts unit.
+          </p>
+          <p>
+            If a .PO file is not found, FindLocaleFileName is called to locate a .MO file used for translation. When found, the TranslateResourceStrings routine is called to translate string using the .MO file in the specified path.
+          </p>
+          <p>
+            The return value contains the name of the .PO or .MO file used to translate string constants, or an empty string when a file is not found in the path specified in Dir.
+          </p>
+        </descr>
+        <seealso></seealso>
+      </element>
+      <element name="TranslateLCLResourceStrings.Lang">
+        <short>Language identifer for the translated constants</short>
+      </element>
+      <element name="TranslateLCLResourceStrings.Dir">
+        <short>Path to the .MO or .PO file used for the translation</short>
+      </element>
+      <element name="TranslateLCLResourceStrings.Result">
+        <short>File name used for the translation, or an empty when translation is not available</short>
+      </element>
 
-<!-- variable Visibility: private -->
-<element name="TPOTranslator.FPOFile">
-<short></short>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
+      <element name="SetDefaultLang">
+        <short>
+          Sets the default language used for string translations
+        </short>
+        <descr>
+          <p>
+            <var>SetDefaultLang</var> is a procedure used to the set the default language used for string translations.
+          </p>
+          <p>
+            <var>Lang</var> contains the Language ID to use for translated strings. Lang contains a language identifier defined in ISO 639, at:
+            <url href="http://www.loc.gov/standards/iso639-2/php/code_list.php">
+              ISO 639 - Codes for the Representation of Names of Languages
+            </url>
+          </p>
+          <p>
+            The default value for the parameter is an empty string (<b>''</b>), and indicates that strings are not translated.
+          </p>
+          <p>
+            <var>Dir</var> contains the directory name where .po/.mo files are stored. The default value is an empty string (<b>''</b>), and indicates that the default directories are used for translation files.
+          </p>
+          <p>
+            <var>LocaleFileName</var> contain the localization file used for for strings. This file handles variations in grammar and spelling that occur in local dialects for a language. It contains a value like 'zh_cn' or 'pt_br'. The default value is an empty string (<b>''</b>), and indicates that localization is not preformed for resource strings.
+          </p>
+          <p>
+            <var>ForceUpdate</var> indicates if an immediate update to to the User Interface is performed when translations are loaded. Set ForceUpdate to False when SetDefaultLang is called from the initialization section for a unit. The default value is True.
+          </p>
+          <p>
+            SetDefaultLang ensures that Language ID and Locale Codes are valid, and .po/.mo exist for the specified names before they are applied. SetDefaultLang calls the FindLocaleFileName function to get the file name used for translation resources. .po files are applied when they exist. Otherwise, .mo file are used to get the translated string values. LCL resource string constants are also translated when the default language code is assigned.
+          </p>
+          <p>
+            When ForceUpdate contains <b>True</b>, string properties used in Forms, Data Modules, Controls, Components and Persistent objects are translated. This action is performed for items with  RTTI (Run Time Type Information) and includes a setter (write access) procedure. TUpdateTranslator is used to perform the update to user interface elements.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TPOTranslator"/>
+          <link id="TDefaultTranslator"/>
+          <link id="TUpdateTranslator"/>
+          <link id="GetDefaultLang"/>
+        </seealso>
+      </element>
+      <element name="SetDefaultLang.Lang">
+        <short>
+          Language ID to use for translated strings
+        </short>
+      </element>
+      <element name="SetDefaultLang.Dir">
+        <short>Directory name with translation files</short>
+      </element>
+      <element name="SetDefaultLang.LocaleFileName">
+        <short>Locale code for the localization file</short>
+      </element>
+      <element name="SetDefaultLang.ForceUpdate">
+        <short>Indicates if the UI should be updated immediately</short>
+      </element>
+      <element name="SetDefaultLang.Result">
+        <short>Default language code in use</short>
+      </element>
 
-<!-- constructor Visibility: public -->
-<element name="TPOTranslator.Create">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
+      <element name="GetDefaultLang">
+        <short>Deprecated</short>
+        <descr>Deprecated. Use the result from the SetDefaultLang function instead.</descr>
+        <version>Deprecated in LCL version 2.1.0.</version>
+        <seealso>
+          <link id="SetDefaultLang"/>
+        </seealso>
+      </element>
+      <element name="GetDefaultLang.Result">
+        <short>Default language code currently in use</short>
+      </element>
 
-<!-- argument Visibility: public -->
-<element name="TPOTranslator.Create.POFileName">
-<short></short>
-</element>
-
-<!-- destructor Visibility: public -->
-<element name="TPOTranslator.Destroy">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
-
-<!-- procedure Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
-
-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.Sender">
-<short></short>
-</element>
-
-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.Instance">
-<short></short>
-</element>
-
-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.PropInfo">
-<short></short>
-</element>
-
-<!-- argument Visibility: public -->
-<element name="TPOTranslator.TranslateStringProperty.Content">
-<short></short>
-</element>
-
-<!-- procedure Visibility: default -->
-<element name="SetDefaultLang">
-<short></short>
-<descr>
-</descr>
-<errors>
-</errors>
-<seealso>
-</seealso>
-</element>
-
-<!-- argument Visibility: default -->
-<element name="SetDefaultLang.Lang">
-<short></short>
-</element>
-
-<!-- argument Visibility: default -->
-<element name="SetDefaultLang.Dir">
-<short></short>
-</element>
-
-<!-- argument Visibility: default -->
-<element name="SetDefaultLang.ForceUpdate">
-<short></short>
-</element>
-
-</module> <!-- LCLTranslator -->
-
-</package>
+    </module>
+    <!-- LCLTranslator -->
+  </package>
 </fpdoc-descriptions>
lcltranslator.xml.diff (23,900 bytes)   

Juha Manninen

2020-06-04 22:03

developer   ~0123227

Last edited: 2020-06-04 22:29

View 4 revisions

This is annoying. They both fail at the very beginning ...
[Edit] I found the problem. The XML files in trunk already have
 encoding="utf-8"
in their initial xml tag. You created the patches against files that do not have it.
How can it happen? "svn diff" always creates a diff against the current svn revision. Do you have the latest trunk revision checked out?
On the other hand, the encoding="utf-8" attribute has been there forever. I guess you created the diff by using some other tool after copying files.

---

$ patch -p0 < ~/patch/defaulttranslator.xml.diff
(Stripping trailing CRs from patch; use --binary to disable.)
patching file docs/xml/lcl/defaulttranslator.xml
Hunk # 1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file docs/xml/lcl/defaulttranslator.xml.rej
$ patch -p0 < ~/patch/lcltranslator.xml.diff
(Stripping trailing CRs from patch; use --binary to disable.)
patching file docs/xml/lcl/lcltranslator.xml
Hunk # 1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file docs/xml/lcl/lcltranslator.xml.rej

Don Siders

2020-06-05 03:10

reporter   ~0123237

Last edited: 2020-06-05 03:28

View 2 revisions

I'm assuming I made a mistake when generating the diff files by using SVN DIFF -R PREV instead or SVN DIFF.

I reverted to SVN trunk. Re-applied edits to both files. Re-generated diffs. Please try the attached diffs.

Sorry, if that's what I did. I should know better by now.
defaulttranslator.xml-2.diff (3,017 bytes)   
Index: docs/xml/lcl/defaulttranslator.xml
===================================================================
--- docs/xml/lcl/defaulttranslator.xml	(revision 63290)
+++ docs/xml/lcl/defaulttranslator.xml	(working copy)
@@ -1,71 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <fpdoc-descriptions>
-<package name="lcl">
+  <package name="lcl">
+    <!--
+    ====================================================================
+      DefaultTranslator
+    ====================================================================
+    -->
+    <module name="DefaultTranslator">
+      <short>
+        Performs string translations using the language selected for the project
+      </short>
+      <descr>
+        <p>
+          <file>defaulttranslator.pas</file> performs string translations using the default I18n and L10n translation facilities in the Lazarus IDE and LCL. This unit does not contain any code other than the initialization section in the unit. It calls the SetDefaultLang routine to specify that the default language identifier for the project is used.
+        </p>
+        <p>
+          To enable automatic string translation, use this unit in your application and check the <b>Enable i18n</b> option in the <b>Project &gt; Project Options &gt; i18n</b> screen. If you want translation to be performed using a specific language identifier, use the <file>LCLTranslator</file> unit instead.
+        </p>
+        <p>
+          For more information, see the Lazarus Wiki article:
+          <url href="http://wiki.lazarus.freepascal.org/Step-by-step_instructions_for_creating_multi-language_applications">Creating Multi-Language Applications</url>
+        </p>
+      </descr>
 
-<!--
-  ====================================================================
-    DefaultTranslator
-  ====================================================================
--->
+      <element name="LCLTranslator"/>
 
-<module name="DefaultTranslator">
-<short/>
-<descr>
-</descr>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="Classes">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="SysUtils">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="LResources">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="GetText">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="Controls">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-
-<!-- unresolved type reference Visibility: default -->
-<element name="typinfo">
-<short/>
-<descr>
-</descr>
-<seealso>
-</seealso>
-</element>
-</module> <!-- DefaultTranslator -->
-</package>
+    </module>
+    <!-- DefaultTranslator -->
+  </package>
 </fpdoc-descriptions>
defaulttranslator.xml-2.diff (3,017 bytes)   
lcltranslator.xml-2.diff (22,164 bytes)   
Index: docs/xml/lcl/lcltranslator.xml
===================================================================
--- docs/xml/lcl/lcltranslator.xml	(revision 63290)
+++ docs/xml/lcl/lcltranslator.xml	(working copy)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <fpdoc-descriptions>
   <package name="lcl">
     <!--
@@ -7,226 +7,345 @@
     ====================================================================
     -->
     <module name="LCLTranslator">
-      <short></short>
-      <descr></descr>
+      <short>
+        Performs string translation in the Lazarus IDE and LCL
+      </short>
+      <descr>
+        <p>
+          <var>lcltranslator.pas</var> contains classes and routines used to perform translation for strings used in Lazarus IDE and LCL (Lazarus Component Library). It searches for .po (Portable Object) and/or .mo (Machine Object) files used to perform I18n internationalization and L10n localization. The .po/.mo files are stored in the <b>languages</b> or <b>locale</b> directories. To access translation files from an alternate location, use the LResources unit and the LRSMoFile variable directly.
+        </p>
+        <p>
+          To enable string  translation, use this unit in your application and check the <b>Enable i18n</b> option in the <b>Project &gt; Project Options &gt; i18n</b> screen. You will need to call the SetDefaultLang routine in your code to activate the translation facility. If you want translation to be performed automatically, use the DefaultTranslator unit instead.
+        </p>
+        <p>
+          This unit also translates LCL string constants in the <file>lclstrconsts</file> file using files in the directory where program translation files are stored.
+        </p>
+        <p>
+          For more information, see the Lazarus Wiki article:
+        </p>
+        <p>
+          <url href="http://wiki.lazarus.freepascal.org/Step-by-step_instructions_for_creating_multi-language_applications">Creating Multi-Language Applications</url>
+        </p>
+      </descr>
 
-      <!-- class Visibility: default -->
+      <element name="Classes"/>
+      <element name="SysUtils"/>
+      <element name="TypInfo"/>
+      <element name="GetText"/>
+      <element name="LResources"/>
+      <element name="Forms"/>
+      <element name="LCLType"/>
+      <element name="LazLoggerBase"/>
+      <element name="Translations"/>
+      <element name="LazFileUtils"/>
+      <element name="LazUTF8"/>
+
       <element name="TUpdateTranslator">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
-        <seealso></seealso>
+        <short>
+          Performs string translations for persistent objects
+        </short>
+        <descr>
+          <p>
+            <var>TUpdateTranslator</var> is a TAbstractTranslator descendant used to perform string translations for persistent objects. TUpdateTranslator provides the UpdateTranslation method which updates any translatable  properties in Lazarus resources.
+          </p>
+          <p>
+            TUpdateTranslator is used as the ancestor for the TDefaultTranslator and TPOTranslator classes.
+          </p>
+        </descr>
+        <seealso>
+          <link id="LResources.TAbstractTranslator"/>
+          <link id="TDefaultTranslator"/>
+          <link id="TPOTranslator"/>
+        </seealso>
       </element>
 
-      <!-- variable Visibility: private -->
-      <element name="TUpdateTranslator.FStackPath">
-        <short></short>
-        <descr></descr>
-        <seealso></seealso>
-      </element>
+      <element name="TUpdateTranslator.FStackPath"/>
 
-      <!-- procedure Visibility: private -->
-      <element name="TUpdateTranslator.IntUpdateTranslation">
-        <short></short>
+      <element name="TUpdateTranslator.IntUpdateTranslation" link="TUpdateTranslator.UpdateTranslation">
+        <short>
+          Performs action required to update string translations for persistent objects using RTTI
+        </short>
         <descr></descr>
-        <errors></errors>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: private -->
       <element name="TUpdateTranslator.IntUpdateTranslation.AnInstance">
-        <short></short>
+        <short>Persistent object updated in the method</short>
       </element>
 
-      <!-- procedure Visibility: public -->
       <element name="TUpdateTranslator.UpdateTranslation">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
+        <short>Updates string translations for persistent objects</short>
+        <descr>
+          <p>
+            <var>UpdateTranslation</var> is procedure used to translate string properties in the specified persistent object instance. UpdateTranslation uses RTTI (Run Time Type Information) to update the value for translatable properties in Lazarus resources. This requires properties to be a TPersistent descendant with RTTI enabled, and have a setter (write access) procedure. Strings, Classes, Components and the sub-Components are handled in the method.
+          </p>
+        </descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TUpdateTranslator.UpdateTranslation.AnInstance">
-        <short></short>
+        <short>Persistent object updated in the method</short>
       </element>
 
-      <!-- class Visibility: default -->
       <element name="TDefaultTranslator">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
-        <seealso></seealso>
+        <short>
+          Performs string translations using a .mo file (Machine Object)
+        </short>
+        <descr>
+          <p>
+            <var>TDefaultTranslator</var> is a <var>TUpdateTranslator</var> descendant used to translate string properties using the values defined in a .mo (<b>Machine Object</b>) file. A .mo file is the binary format used for translation resources created for the <b>GNU gettext</b> program. TDefaultTranslator implements the abstract TranslateStringProperty method defined in the ancestor class.
+          </p>
+          <p>
+            Use TPOTranslator to translate string properties using the .po (<b>Portable Object</b>) file format.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TUpdateTranslator"/>
+          <link id="TPOTranslator"/>
+        </seealso>
       </element>
 
-      <!-- variable Visibility: private -->
-      <element name="TDefaultTranslator.FMOFile">
-        <short></short>
-        <descr></descr>
-        <seealso></seealso>
-      </element>
+      <element name="TDefaultTranslator.FMOFile"/>
 
-      <!-- constructor Visibility: public -->
       <element name="TDefaultTranslator.Create">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
+        <short>Constructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Create</var> is the constructor for the class instance, and calls the inherited constructor. Create initializes and stores a TMOFile instance using the file name specified in the MOFileName parameter. Create calls UTF8ToSys to convert any UTF-8-encoded values in MOFileName to the default encoding used for the platform or OS.
+           </p>
+        </descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TDefaultTranslator.Create.MOFileName">
-        <short></short>
+        <short>.mo file used in the class instance</short>
       </element>
 
-      <!-- destructor Visibility: public -->
       <element name="TDefaultTranslator.Destroy">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
+        <short>Destructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Destroy</var> is the overridden destructor for the class instance. Destroy ensures that resources allocated to an internal TMOFile member are freed prior to calling the inherited destructor.
+          </p>
+        </descr>
         <seealso></seealso>
       </element>
 
-      <!-- procedure Visibility: public -->
       <element name="TDefaultTranslator.TranslateStringProperty">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
+        <short>
+          Gets the translated value for the specified property
+        </short>
+        <descr>
+          <p>
+            <var>TranslateStringProperty</var> is a procedure used to get the translated value for the specified property from the .mo file used in the class instance.
+          </p>
+          <p>
+            Sender is the class instance requesting the translation action.
+          </p>
+          <p>
+            Instance is the TPersistent object instance affected in the method.
+          </p>
+          <p>
+            PropInfo contains the RTTI property information needed to update the property value.
+          </p>
+          <p>
+            TranslateStringProperty uses the internal TMOFile instance created in the constructor to get the translated value for the property name. The translated string value is stored in the Content argument and returned to the caller. The property value is actually updated in the caller.
+          </p>
+          <p>
+            No actions are performed in the method if a .mo file was not found with the required file name.
+          </p>
+        </descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TDefaultTranslator.TranslateStringProperty.Sender">
-        <short></short>
+        <short>Class instance calling the method</short>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TDefaultTranslator.TranslateStringProperty.Instance">
-        <short></short>
+        <short>Persistent object with properties affected in the method</short>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TDefaultTranslator.TranslateStringProperty.PropInfo">
-        <short></short>
+        <short>RTTI Property information</short>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TDefaultTranslator.TranslateStringProperty.Content">
-        <short></short>
+        <short>Value for the translated string property</short>
       </element>
 
-      <!-- class Visibility: default -->
       <element name="TPOTranslator">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
-        <seealso></seealso>
+        <short>
+          Performs string translations using a .po (Portable Object) file
+        </short>
+        <descr>
+          <p>
+            <var>TPOTranslator</var> is a <var>TUpdateTranslator</var> descendant used to translate string properties using the values defined in a .po (<b>Portable Object</b>) file. A .po file is the text format used for translation resources created for the <b>GNU gettext</b> program. TPOTranslator  implements the abstract TranslateStringProperty method defined in the ancestor class.
+          </p>
+          <p>
+            Use TDefaultTranslator to translate string properties using the .mo (<b>Machine Object</b>) file format.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TUpdateTranslator"/>
+          <link id="TDefaultTranslator"/>
+        </seealso>
       </element>
 
-      <!-- variable Visibility: private -->
-      <element name="TPOTranslator.FPOFile">
-        <short></short>
-        <descr></descr>
-        <seealso></seealso>
-      </element>
+      <element name="TPOTranslator.FPOFile"/>
 
-      <!-- constructor Visibility: public -->
       <element name="TPOTranslator.Create">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
+        <short>
+          Constructor for the class instance
+        </short>
+        <descr>
+          <p>
+            <var>Create</var> is the overloaded constructor for the class instance. Both variant call the inherited constructor to initialize the class instance. The overloaded variants allow use of a file name or a <var>TPOFile</var> instance in the class. TPOTranslator contains an internal TPOFile member which is used to access the translated string values.
+          </p>
+          <p>
+            POFileName contains the file name which constains the translated values for strings. A TPOFile instance is created for the specified file name.
+          </p>
+          <p>
+            aPOFile is the TPPOFile class instance which contains the translated values for strings.
+          </p>
+        </descr>
         <seealso></seealso>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TPOTranslator.Create.POFileName">
-        <short></short>
+        <short>.po file name to use for translated string values</short>
       </element>
       <element name="TPOTranslator.Create.aPOFile">
-        <short></short>
+        <short>.po file to use for translated string values</short>
       </element>
 
-      <!-- destructor Visibility: public -->
       <element name="TPOTranslator.Destroy">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
+        <short>Destructor for the class instance</short>
+        <descr>
+          <p>
+            <var>Destroy</var> is the overridden destructor for the class instance. Destroy ensures that resources allocated to the internal TPOFile member in the class instance are freed. Destroy calls the inherited destructor.
+          </p>
+        </descr>
         <seealso></seealso>
       </element>
 
-      <!-- procedure Visibility: public -->
       <element name="TPOTranslator.TranslateStringProperty">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
-        <seealso></seealso>
+        <short>
+          Gets the translated value for the specified property
+        </short>
+        <descr>
+          <p>
+            <var>TranslateStringProperty</var> is a procedure used to get the translated value for the specified property from the .po file used in the class instance.
+          </p>
+          <p>
+            Sender is the class instance requesting the translation action.
+          </p>
+          <p>
+            Instance is the TPersistent object instance affected in the method.
+          </p>
+          <p>
+            PropInfo contains the RTTI property information needed to update the property value.
+          </p>
+          <p>
+            TranslateStringProperty uses the internal TPOFile instance created in the constructor to get the translated value for the property. The translated string value is stored in the Content argument and returned to the caller. The property value is actually updated in the caller.
+          </p>
+          <p>
+            No actions are performed in the method if a .po file was not found with the required file name.
+          </p>
+        </descr>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TPOTranslator.TranslateStringProperty.Sender">
-        <short></short>
+        <short>Class instance calling the method</short>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TPOTranslator.TranslateStringProperty.Instance">
-        <short></short>
+        <short>Persistent object with properties affected in the method</short>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TPOTranslator.TranslateStringProperty.PropInfo">
-        <short></short>
+        <short>RTTI Property information</short>
       </element>
-
-      <!-- argument Visibility: public -->
       <element name="TPOTranslator.TranslateStringProperty.Content">
-        <short></short>
+        <short>Value for the translated string property</short>
       </element>
 
       <element name="TranslateLCLResourceStrings">
-        <short></short>
-        <descr></descr>
+        <short>Translates resource strings in <file>LCLStrConsts</file> to the specified language</short>
+        <descr>
+          <p>
+            <var>TranslateLCLResourceStrings</var> is a <var>String</var> function used to translate resource strings in the <file>LCLStrConsts</file> unit to the language identifier specified in the Lang argument.
+          </p>
+          <p>
+            Dir is an optional path where .PO or .MO files can be found with the translated values for string constants.
+          </p>
+          <p>
+            TranslateLCLResourceStrings calls FindLocaleFileName to locate the .PO or .MO file. Preference is given to the .PO variant. If it is locate in the speciifed path, the TranslateUnitResourceStrings routine is called to tranlate constants from the LCLStrConts unit.
+          </p>
+          <p>
+            If a .PO file is not found, FindLocaleFileName is called to locate a .MO file used for translation. When found, the TranslateResourceStrings routine is called to translate string using the .MO file in the specified path.
+          </p>
+          <p>
+            The return value contains the name of the .PO or .MO file used to translate string constants, or an empty string when a file is not found in the path specified in Dir.
+          </p>
+        </descr>
         <seealso></seealso>
       </element>
       <element name="TranslateLCLResourceStrings.Lang">
-        <short></short>
+        <short>Language identifer for the translated constants</short>
       </element>
       <element name="TranslateLCLResourceStrings.Dir">
-        <short></short>
+        <short>Path to the .MO or .PO file used for the translation</short>
       </element>
       <element name="TranslateLCLResourceStrings.Result">
-        <short></short>
+        <short>File name used for the translation, or an empty when translation is not available</short>
       </element>
 
-      <!-- procedure Visibility: default -->
       <element name="SetDefaultLang">
-        <short></short>
-        <descr></descr>
-        <errors></errors>
-        <seealso></seealso>
+        <short>
+          Sets the default language used for string translations
+        </short>
+        <descr>
+          <p>
+            <var>SetDefaultLang</var> is a procedure used to the set the default language used for string translations.
+          </p>
+          <p>
+            <var>Lang</var> contains the Language ID to use for translated strings. Lang contains a language identifier defined in ISO 639, at:
+            <url href="http://www.loc.gov/standards/iso639-2/php/code_list.php">
+              ISO 639 - Codes for the Representation of Names of Languages
+            </url>
+          </p>
+          <p>
+            The default value for the parameter is an empty string (<b>''</b>), and indicates that strings are not translated.
+          </p>
+          <p>
+            <var>Dir</var> contains the directory name where .po/.mo files are stored. The default value is an empty string (<b>''</b>), and indicates that the default directories are used for translation files.
+          </p>
+          <p>
+            <var>LocaleFileName</var> contain the localization file used for for strings. This file handles variations in grammar and spelling that occur in local dialects for a language. It contains a value like 'zh_cn' or 'pt_br'. The default value is an empty string (<b>''</b>), and indicates that localization is not preformed for resource strings.
+          </p>
+          <p>
+            <var>ForceUpdate</var> indicates if an immediate update to to the User Interface is performed when translations are loaded. Set ForceUpdate to False when SetDefaultLang is called from the initialization section for a unit. The default value is True.
+          </p>
+          <p>
+            SetDefaultLang ensures that Language ID and Locale Codes are valid, and .po/.mo exist for the specified names before they are applied. SetDefaultLang calls the FindLocaleFileName function to get the file name used for translation resources. .po files are applied when they exist. Otherwise, .mo file are used to get the translated string values. LCL resource string constants are also translated when the default language code is assigned.
+          </p>
+          <p>
+            When ForceUpdate contains <b>True</b>, string properties used in Forms, Data Modules, Controls, Components and Persistent objects are translated. This action is performed for items with  RTTI (Run Time Type Information) and includes a setter (write access) procedure. TUpdateTranslator is used to perform the update to user interface elements.
+          </p>
+        </descr>
+        <seealso>
+          <link id="TPOTranslator"/>
+          <link id="TDefaultTranslator"/>
+          <link id="TUpdateTranslator"/>
+          <link id="GetDefaultLang"/>
+        </seealso>
       </element>
-
-
-      <!-- argument Visibility: default -->
       <element name="SetDefaultLang.Lang">
-        <short></short>
+        <short>
+          Language ID to use for translated strings
+        </short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="SetDefaultLang.Dir">
-        <short></short>
+        <short>Directory name with translation files</short>
       </element>
-
       <element name="SetDefaultLang.LocaleFileName">
-        <short></short>
+        <short>Locale code for the localization file</short>
       </element>
-
-      <!-- argument Visibility: default -->
       <element name="SetDefaultLang.ForceUpdate">
-        <short></short>
+        <short>Indicates if the UI should be updated immediately</short>
       </element>
-
       <element name="SetDefaultLang.Result">
-        <short></short>
+        <short>Default language code in use</short>
       </element>
 
       <element name="GetDefaultLang">
@@ -241,6 +360,5 @@
 
     </module>
     <!-- LCLTranslator -->
-
   </package>
 </fpdoc-descriptions>
lcltranslator.xml-2.diff (22,164 bytes)   

Juha Manninen

2020-06-05 10:45

developer   ~0123241

Perfect!
Applied, thanks. :)

Don Siders

2020-06-05 13:59

reporter   ~0123243

Thank you.

Issue History

Date Modified Username Field Change
2019-04-16 03:58 Don Siders New Issue
2019-04-16 03:58 Don Siders File Added: docs.diff
2020-06-01 00:58 Don Siders Note Added: 0123158
2020-06-02 09:16 Juha Manninen Assigned To => Juha Manninen
2020-06-02 09:16 Juha Manninen Status new => assigned
2020-06-02 09:20 Juha Manninen Note Added: 0123186
2020-06-02 09:20 Juha Manninen Note Edited: 0123186 View Revisions
2020-06-02 09:20 Juha Manninen Note Edited: 0123186 View Revisions
2020-06-02 09:31 Juha Manninen Status assigned => feedback
2020-06-02 09:31 Juha Manninen LazTarget => -
2020-06-02 15:06 Don Siders Note Added: 0123190
2020-06-02 15:06 Don Siders Status feedback => assigned
2020-06-04 17:35 Don Siders Note Added: 0123223
2020-06-04 17:35 Don Siders File Added: defaulttranslator.xml.diff
2020-06-04 17:35 Don Siders File Added: lcltranslator.xml.diff
2020-06-04 22:03 Juha Manninen Note Added: 0123227
2020-06-04 22:04 Juha Manninen Note Edited: 0123227 View Revisions
2020-06-04 22:23 Juha Manninen Note Edited: 0123227 View Revisions
2020-06-04 22:29 Juha Manninen Note Edited: 0123227 View Revisions
2020-06-05 03:10 Don Siders Note Added: 0123237
2020-06-05 03:10 Don Siders File Added: defaulttranslator.xml-2.diff
2020-06-05 03:10 Don Siders File Added: lcltranslator.xml-2.diff
2020-06-05 03:28 Don Siders Note Edited: 0123237 View Revisions
2020-06-05 10:45 Juha Manninen Status assigned => resolved
2020-06-05 10:45 Juha Manninen Resolution open => fixed
2020-06-05 10:45 Juha Manninen Fixed in Revision => r63298
2020-06-05 10:45 Juha Manninen Note Added: 0123241
2020-06-05 13:59 Don Siders Status resolved => closed
2020-06-05 13:59 Don Siders Note Added: 0123243