<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:30:22 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-3743] Prevent bad translations from entering the system</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-3743</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;As described in 
    &lt;span class=&quot;jira-issue-macro resolved&quot; data-jira-key=&quot;UIHAADM-23&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/UIHAADM-23&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;[@formatjs/cli] [WARN] Error validating message&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium&quot; /&gt;
            UIHAADM-23
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf&quot;&gt;Closed&lt;/span&gt;
            &lt;/span&gt;
, some bad translations made it into one of the translations files of &lt;tt&gt;ui-harvester-admin&lt;/tt&gt; in a way that prevented the package from building (though not from running in development, where a different pipeline is used).&lt;/p&gt;

&lt;p&gt;The problems &#8212; there were several &#8212; turned out to be to do with XML formatting in the translation texts: incorrect use of spaces such as &lt;tt&gt;&amp;lt;tag &amp;gt;&lt;/tt&gt; or &lt;tt&gt;&amp;lt;tag/ &amp;gt;&lt;/tt&gt;, or the presence of an opening tag that had no closing tag. These get rejected when building translation bundles:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
$ formatjs compile-folder --ast --format simple ./translations/ui-harvester-admin ./translations/ui-harvester-admin/compiled
[@formatjs/cli] [WARN] Error validating message &lt;span class=&quot;code-quote&quot;&gt;&quot;&#23545;&#20110;XML&#25968;&#25454;&#12290;&#23545;&#20110;XML&#25552;&#35201;&#65292;&#36825;&#36890;&#24120;&#24212;&#35813;&#35774;&#32622;&#20026; 1&#65292;&#22914;&#26524;&#25105;&#20204;&#24819;&#22312;&#25968;&#25454;&#32467;&#26500;&#20013;&#25910;&#38598;&#35760;&#24405;&#20803;&#32032;&#65292;&#20363;&#22914;&#65306; &amp;lt;root&amp;gt;   &amp;lt;record/ &amp;gt;  &amp;lt;record/ &amp;gt; &amp;lt; /root&amp;gt;&quot;&lt;/span&gt; with ID &lt;span class=&quot;code-quote&quot;&gt;&quot;harvestables.field.splitAt.help&quot;&lt;/span&gt; in file &lt;span class=&quot;code-quote&quot;&gt;&quot;./translations/ui-harvester-admin/zh_CN.json&quot;&lt;/span&gt;
SyntaxError: INVALID_TAG
    at parse (/home/runner/work/ui-harvester-admin/ui-harvester-admin/node_modules/@formatjs/icu-messageformat-parser/index.js:34:21)
    at /home/runner/work/ui-harvester-admin/ui-harvester-admin/node_modules/@formatjs/cli/src/compile.js:48:79
    at step (/home/runner/work/ui-harvester-admin/ui-harvester-admin/node_modules/tslib/tslib.js:193:27)
    at &lt;span class=&quot;code-object&quot;&gt;Object&lt;/span&gt;.next (/home/runner/work/ui-harvester-admin/ui-harvester-admin/node_modules/tslib/tslib.js:174:57)
    at fulfilled (/home/runner/work/ui-harvester-admin/ui-harvester-admin/node_modules/tslib/tslib.js:164:62)
error Command failed with exit code 1.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We should try to prevent such bad translations from getting merged. Somehow, we need &lt;tt&gt;formatjs compile-folder&lt;/tt&gt; or an equivalent to be run as part of a pre-merge process, to find errors before they get merged. Better still, we should verify translations as they are added in the translation UI, to prevent them from even getting that far.&lt;/p&gt;</description>
                <environment></environment>
        <key id="79881">FOLIO-3743</key>
            <summary>Prevent bad translations from entering the system</summary>
                <type id="10005" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10309?size=medium">Story</type>
                                            <priority id="10005" iconUrl="https://dev.folio.org/assets/jira-priority/tbd.svg">TBD</priority>
                        <status id="1" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="5ced27478b03050f27825a93">Peter Murray</assignee>
                                                                <reporter accountid="5bffed52a1b46046f530c8f7">Mike Taylor</reporter>
                                    <labels>
                    </labels>
                <created>Thu, 23 Mar 2023 18:36:03 +0000</created>
                <updated>Thu, 23 Mar 2023 18:36:03 +0000</updated>
                                                                            <component>Continuous Integration</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                        <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10168"><![CDATA[None]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10063" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>PO Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10106" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>RCA Group</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10367"><![CDATA[TBD]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i06q6b:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    </customfields>
    </item>
</channel>
</rss>