texlive[74576] Master/texmf-dist: tracklang (11mar25)

commits+karl at tug.org commits+karl at tug.org
Tue Mar 11 21:10:07 CET 2025


Revision: 74576
          https://tug.org/svn/texlive?view=revision&revision=74576
Author:   karl
Date:     2025-03-11 21:10:07 +0100 (Tue, 11 Mar 2025)
Log Message:
-----------
tracklang (11mar25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/tracklang/CHANGES
    trunk/Master/texmf-dist/doc/generic/tracklang/README
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-babel.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-de-poly.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-de.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-poly.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de2.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de3.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de4.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-poly.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-manx.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-map.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-map2.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-map3.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-nomap.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang2.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang3.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang4.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang5.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang6.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-code.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.html
    trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.pdf
    trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.tex
    trunk/Master/texmf-dist/source/latex/tracklang/tracklang.dtx
    trunk/Master/texmf-dist/source/latex/tracklang/tracklang.ins
    trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex
    trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex
    trunk/Master/texmf-dist/tex/generic/tracklang/tracklang.tex
    trunk/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty
    trunk/Master/texmf-dist/tex/latex/tracklang/tracklang.sty

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/CHANGES
===================================================================
--- trunk/Master/texmf-dist/doc/generic/tracklang/CHANGES	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/doc/generic/tracklang/CHANGES	2025-03-11 20:10:07 UTC (rev 74576)
@@ -1,3 +1,14 @@
+v1.6.6 (2025-03-11):
+
+  * tracklang.tex:
+
+   - added \@tracklang at ifundef@N
+     fixes issue #293 https://www.dickimaw-books.com/bugtracker.php?key=293
+
+  * tracklang.sty:
+
+   - rewritten language tests with corrections
+
 v1.6.5 (2025-03-04):
 
   * tracklang.tex:

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/tracklang/README	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/doc/generic/tracklang/README	2025-03-11 20:10:07 UTC (rev 74576)
@@ -1,6 +1,6 @@
-Generic TeX Bundle : tracklang v1.6.5 
+Generic TeX Bundle : tracklang v1.6.6 
 
-Last Modified      : 2025-03-04
+Last Modified      : 2025-03-11
 
 Author             : Nicola Talbot  (dickimaw-books.com/contact)
 

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-babel.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-de-poly.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-de.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals-poly.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-de4.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2-poly.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/animals/sample-animals2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-manx.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-map.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-map2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-map3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2-nomap.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/regions/sample-regions2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang4.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang5.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/samples/sample-tracklang6.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.html
===================================================================
--- trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.html	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.html	2025-03-11 20:10:07 UTC (rev 74576)
@@ -2518,7 +2518,7 @@
 
 
 
- <title>tracklang.sty v1.6.5: 
+ <title>tracklang.sty v1.6.6: 
 tracking language options</title>
 <style type="text/css">
 #main {margin-left: 5%; margin-right: 15%; }
@@ -2829,12 +2829,12 @@
 <body>
 <div id="main">
 
-<header><div class="title">tracklang.sty v1.6.5: 
+<header><div class="title">tracklang.sty v1.6.6: 
 tracking language options</div><!-- end of title --><div class="author">Nicola L.C. Talbot<br>
 
 Dickimaw Books<br>
 
-<a href="https://www.dickimaw-books.com/">dickimaw-books.com</a></div><!-- end of author --><div class="date">2025-03-04
+<a href="https://www.dickimaw-books.com/">dickimaw-books.com</a></div><!-- end of author --><div class="date">2025-03-11
 </div><!-- end of date --></header>
 <p>
 
@@ -3784,11 +3784,11 @@
 <pre class="codebox"><div class="codeboxtitle"><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.88"></a><a href="#glo:input"><code class="csfmt">\input</code></a> <a id="wrglossary.89"></a><a href="#glo:file.texosquery.tex"><span class="filefmt">texosquery.tex</span></a>
 <a id="wrglossary.90"></a><a href="#glo:input"><code class="csfmt">\input</code></a> <a id="wrglossary.91"></a><a href="#glo:file.tracklang.tex"><span class="filefmt">tracklang.tex</span></a> <span class="comment">% v1.3</span>
 
-<code class="cmd">\ifx</code><a id="wrglossary.92"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a><code class="cmd">\undefined</code>
- <a id="wrglossary.93"></a><a href="#glo:TrackLangFromEnv"><code class="csfmt">\TrackLangFromEnv</code></a>
+<code class="cmd">\ifdefined</code><a id="wrglossary.92"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a>
+ <a id="wrglossary.93"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a>{<code class="cmd">\langtag</code>}
+ <a id="wrglossary.94"></a><a href="#glo:TrackLanguageTag"><code class="csfmt">\TrackLanguageTag</code></a>{<code class="cmd">\langtag</code>}
 <code class="cmd">\else</code>
- <a id="wrglossary.94"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a>{<code class="cmd">\langtag</code>}
- <a id="wrglossary.95"></a><a href="#glo:TrackLanguageTag"><code class="csfmt">\TrackLanguageTag</code></a>{<code class="cmd">\langtag</code>}
+ <a id="wrglossary.95"></a><a href="#glo:TrackLangFromEnv"><code class="csfmt">\TrackLangFromEnv</code></a>
 <code class="cmd">\fi</code>
 <span class="comment">% load packages that use tracklang for localisation</span>
 </pre>
@@ -3977,13 +3977,13 @@
 <pre class="codebox"><div class="codeboxtitle"><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.181"></a><a href="#glo:AnyTrackedLanguages"><code class="csfmt">\AnyTrackedLanguages</code></a>
 {}
 {<span class="comment">% fetch locale information from the operating system</span>
-  <code class="cmd">\ifx</code><a id="wrglossary.182"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a><code class="cmd">\undefined</code>
+  <code class="cmd">\ifdefined</code><a id="wrglossary.182"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a>
+    <span class="comment">% texosquery v1.2 available</span>
+    <a id="wrglossary.183"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a>{<code class="cmd">\langtag</code>}
+    <a id="wrglossary.184"></a><a href="#glo:TrackLanguageTag"><code class="csfmt">\TrackLanguageTag</code></a>{<code class="cmd">\langtag</code>}
+  <code class="cmd">\else</code>
     <span class="comment">% texosquery v1.2 not available</span>
-    <a id="wrglossary.183"></a><a href="#glo:TrackLangFromEnv"><code class="csfmt">\TrackLangFromEnv</code></a>
-  <code class="cmd">\else</code>
-    <span class="comment">% texosquery v1.2 available</span>
-    <a id="wrglossary.184"></a><a href="#glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></a>{<code class="cmd">\langtag</code>}
-    <a id="wrglossary.185"></a><a href="#glo:TrackLanguageTag"><code class="csfmt">\TrackLanguageTag</code></a>{<code class="cmd">\langtag</code>}
+    <a id="wrglossary.185"></a><a href="#glo:TrackLangFromEnv"><code class="csfmt">\TrackLangFromEnv</code></a>
   <code class="cmd">\fi</code>
 }
 </pre>
@@ -4550,7 +4550,8 @@
 Remember that if you only want to do the <a id="wrglossary.468"></a><a href="#glo:dual.shellescape">shell escape</a> if
 <a id="wrglossary.469"></a><a href="#glo:TrackLangEnv"><code class="csfmt">\TrackLangEnv</code></a> hasn’t already been defined, you can test for this
 first:
-<pre class="codebox"><div class="codeboxtitle"><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\ifx</code><a id="wrglossary.470"></a><a href="#glo:TrackLangEnv"><code class="csfmt">\TrackLangEnv</code></a><code class="cmd">\undefined</code>
+<pre class="codebox"><div class="codeboxtitle"><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><code class="cmd">\ifdefined</code><a id="wrglossary.470"></a><a href="#glo:TrackLangEnv"><code class="csfmt">\TrackLangEnv</code></a>
+<code class="cmd">\else</code>
   <a id="wrglossary.471"></a><a href="#glo:TrackLangQueryOtherEnv"><code class="csfmt">\TrackLangQueryOtherEnv</code></a>{<a id="wrglossary.472"></a><a href="#glo:opt.envvar.LCMONETARY"><code class="envvarfmt">LC_MONETARY</code></a>}
 <code class="cmd">\fi</code>
 <a id="wrglossary.473"></a><a href="#glo:TrackLangFromEnv"><code class="csfmt">\TrackLangFromEnv</code></a>
@@ -5913,7 +5914,8 @@
 <a id="wrglossary.960"></a><code class="code"><dfn id="glo:TrackLangEncodingName"><code class="csfmt">\TrackLangEncodingName</code></dfn></code></div><!-- end of pinnedbox -->
 
 This will expand to <code class="code">utf8</code> if <a id="wrglossary.961"></a><a href="#glo:inputencodingname"><code class="csfmt">\inputencodingname</code></a> hasn’t
-been defined, otherwise it will expand to <a id="wrglossary.962"></a><a href="#glo:inputencodingname"><code class="csfmt">\inputencodingname</code></a>.
+been defined (or has been set to <code class="csfmt">\relax</code>), otherwise it will 
+expand to <a id="wrglossary.962"></a><a href="#glo:inputencodingname"><code class="csfmt">\inputencodingname</code></a>.
 For example:
 <pre class="codebox"><div class="codeboxtitle"><a href="#glo:sym.code"><span title="Input" class="icon">🖹</span></a></div><a id="wrglossary.963"></a><a href="#glo:InputIfFileExists"><code class="csfmt">\InputIfFileExists</code></a>{foo-<a id="wrglossary.964"></a><a href="#glo:TrackLangEncodingName"><code class="csfmt">\TrackLangEncodingName</code></a>.ldf}
 {<span class="comment">% support available for the document encoding</span>
@@ -10144,7 +10146,7 @@
 <div class="nlctuserguideidx0"><a href="#glo:opt.canadian"><span class="optfmt">canadian</span> (option)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:nonisoopts">Table 1.3</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.canadien"><span class="optfmt">canadien</span> (option)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:nonisoopts">Table 1.3</a>; <a href="#wrglossary.140">12</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.Cans"><span class="optfmt">Cans</span> (script)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:scriptmappings">Table A.2</a></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><dfn id="glo:captionsdialect"><code class="csfmt">\captions<span class="meta">〈<em class="metainner">dialect</em>〉</span></code></dfn><span class="qquad">    </span><a href="#tab:nonisoopts">Table 1.3</a>; <a href="#wrglossary.153">13</a>, <a href="#wrglossary.203">15</a>, <a href="#wrglossary.976">55</a>, <a href="#wrglossary.989">56</a>, <a href="#wrglossary.1035">61</a>, <a href="#wrglossary.1052">62</a>, <a href="#wrglossary.1188">69</a>, <a href="#wrglossary.1209">71</a>, <a href="#wrglossary.1270">74</a>, <a href="#wrglossary.1344">78</a>, <a href="#wrglossary.1433">81</a>, <a href="#wrglossary.1591">102</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:captionsdialect"><code class="csfmt">\captions<span class="meta">〈<em class="metainner">dialect</em>〉</span></code></dfn><span class="qquad">    </span><a href="#tab:nonisoopts">Table 1.3</a>; <a href="#wrglossary.153">13</a>, <a href="#wrglossary.203">16</a>, <a href="#wrglossary.976">55</a>, <a href="#wrglossary.989">56</a>, <a href="#wrglossary.1035">61</a>, <a href="#wrglossary.1052">62</a>, <a href="#wrglossary.1188">69</a>, <a href="#wrglossary.1209">71</a>, <a href="#wrglossary.1270">74</a>, <a href="#wrglossary.1344">78</a>, <a href="#wrglossary.1433">81</a>, <a href="#wrglossary.1591">102</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.Cari"><span class="optfmt">Cari</span> (script)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:scriptmappings">Table A.2</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.catalan"><span class="optfmt">catalan</span> (root language)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:rootlangopts">Table 1.2</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.CC"><span class="optfmt">CC</span> (region)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:regionmappings">Table A.1</a></div><!-- end of nlctuserguideidx0 -->
@@ -10230,7 +10232,7 @@
 <div class="nlctuserguideidx0"><dfn id="glo:opt.da"><span class="optfmt">da</span> (<a id="wrglossary.1872"></a><a href="#glo:ISO">ISO</a> code)</dfn><span class="qquad">    </span><div class="crossref"><span class="crossreftag">see</span> <a href="#glo:opt.danish"><span class="optfmt">danish</span></a></div><!-- end of crossref -->
 </div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.danish"><span class="optfmt">danish</span> (root language)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:rootlangopts">Table 1.2</a></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><dfn id="glo:datedialect"><code class="csfmt">\date<span class="meta">〈<em class="metainner">dialect</em>〉</span></code></dfn><span class="qquad">    </span><a href="#tab:nonisoopts">Table 1.3</a>; <a href="#wrglossary.204">15</a>, <a href="#wrglossary.993">56</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:datedialect"><code class="csfmt">\date<span class="meta">〈<em class="metainner">dialect</em>〉</span></code></dfn><span class="qquad">    </span><a href="#tab:nonisoopts">Table 1.3</a>; <a href="#wrglossary.204">16</a>, <a href="#wrglossary.993">56</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><dfn id="glo:pkg.datetime2"><span class="styfmt">datetime2</span> package</dfn><span class="qquad">    </span><a href="#wrglossary.64">9</a>, <a href="#wrglossary.349">21</a>, <a href="#wrglossary.351">22</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.de-AT"><span class="optfmt">de-AT</span> (option)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:isoopts">Table 1.1</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.de-AT-1996"><span class="optfmt">de-AT-1996</span> (option)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:isoopts">Table 1.1</a></div><!-- end of nlctuserguideidx0 -->
@@ -10905,7 +10907,7 @@
 <div class="nlctuserguideidx0"><a href="#glo:opt.northernsotho"><span class="optfmt">northernsotho</span> (root language)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:rootlangopts">Table 1.2</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.norwegian"><span class="optfmt">norwegian</span> (option)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:nonisoopts">Table 1.3</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.noverbose"><span class="styoptfmt">noverbose</span></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.286">19</a>, <span class="summarylocfmt"><a href="#wrglossary.1828">115</a></span></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><a href="#glo:opt.nowarn"><span class="styoptfmt">nowarn</span></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.288">19</a>, <span class="summarylocfmt"><a href="#wrglossary.1830">115</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:opt.nowarn"><span class="styoptfmt">nowarn</span></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.288">19</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.NP"><span class="optfmt">NP</span> (region)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:regionmappings">Table A.1</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><dfn id="glo:opt.nqo"><span class="optfmt">nqo</span> (<a id="wrglossary.1962"></a><a href="#glo:ISO">ISO</a> code)</dfn><span class="qquad">    </span><div class="crossref"><span class="crossreftag">see</span> <a href="#glo:opt.nko"><span class="optfmt">nko</span></a></div><!-- end of crossref -->
 </div><!-- end of nlctuserguideidx0 -->
@@ -11224,7 +11226,7 @@
 <div class="nlctuserguideidx0"><dfn id="glo:file.texosquery.tex"><span class="filefmt">texosquery.tex</span></dfn><span class="qquad">    </span><a href="#wrglossary.75">9</a>, <a href="#wrglossary.81">10</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><dfn id="glo:app.texosquery"><span class="appfmt">texosquery</span> (application)</dfn><span class="qquad">    </span><a href="#wrglossary.9">a</a>, <a href="#wrglossary.86">10</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><dfn id="glo:pkg.texosquery"><span class="styfmt">texosquery</span> package</dfn><span class="qquad">    </span><a href="#wrglossary.79">10</a>, <a href="#wrglossary.360">22</a>, <a href="#wrglossary.382">23</a>, <a href="#wrglossary.448">26</a></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><dfn id="glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></dfn><span class="qquad">    </span><a href="#wrglossary.84">10</a>, <a href="#wrglossary.182">14</a>, <a href="#wrglossary.184">15</a>, <a href="#wrglossary.361">22</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><dfn id="glo:TeXOSQueryLangTag"><code class="csfmt">\TeXOSQueryLangTag</code></dfn><span class="qquad">    </span><a href="#wrglossary.84">10</a>, <a href="#wrglossary.182">14</a>, <a href="#wrglossary.361">22</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><dfn id="glo:TeXOSQueryLocale"><code class="csfmt">\TeXOSQueryLocale</code></dfn><span class="qquad">    </span><a href="#wrglossary.384">23</a>, <a href="#wrglossary.453">26</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.TF"><span class="optfmt">TF</span> (region)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:regionmappings">Table A.1</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.Tfng"><span class="optfmt">Tfng</span> (script)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:scriptmappings">Table A.2</a></div><!-- end of nlctuserguideidx0 -->
@@ -11282,7 +11284,7 @@
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangAddExtraRegionFile"><code class="csfmt">\TrackLangAddExtraRegionFile</code></a><span class="qquad">    </span><a href="#sec:supplpkgs">§4</a>; <a href="#wrglossary.536">31</a>, <a href="#wrglossary.1254">73</a>, <a href="#wrglossary.1305">76</a>, <span class="summarylocfmt"><a href="#wrglossary.1620">104</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangAddExtraScriptFile"><code class="csfmt">\TrackLangAddExtraScriptFile</code></a><span class="qquad">    </span><a href="#sec:supplpkgs">§4</a>; <a href="#wrglossary.561">33</a>, <a href="#wrglossary.1242">73</a>, <a href="#wrglossary.1302">75</a>, <span class="summarylocfmt"><a href="#wrglossary.1623">104</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangAddToCaptions"><code class="csfmt">\TrackLangAddToCaptions</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.202">15</a>, <a href="#wrglossary.220">16</a>, <a href="#wrglossary.991">56</a>, <a href="#wrglossary.1211">71</a>, <a href="#wrglossary.1356">78</a>, <span class="summarylocfmt"><a href="#wrglossary.1626">104</a></span></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><a href="#glo:TrackLangAddToHook"><code class="csfmt">\TrackLangAddToHook</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.205">15</a>, <a href="#wrglossary.257">18</a>, <a href="#wrglossary.987">55</a>, <a href="#wrglossary.1210">71</a>, <a href="#wrglossary.1628">104</a>, <span class="summarylocfmt"><a href="#wrglossary.1629">105</a></span>, <a href="#wrglossary.1756">111</a></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:TrackLangAddToHook"><code class="csfmt">\TrackLangAddToHook</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.205">16</a>, <a href="#wrglossary.257">18</a>, <a href="#wrglossary.987">55</a>, <a href="#wrglossary.1210">71</a>, <a href="#wrglossary.1628">104</a>, <span class="summarylocfmt"><a href="#wrglossary.1629">105</a></span>, <a href="#wrglossary.1756">111</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangAlphaIIIToNumericRegion"><code class="csfmt">\TrackLangAlphaIIIToNumericRegion</code></a><span class="qquad">    </span><a href="#sec:supplpkgs">§4</a>; <a href="#wrglossary.530">30</a>, <span class="summarylocfmt"><a href="#wrglossary.1631">105</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangAlphaIIToNumericRegion"><code class="csfmt">\TrackLangAlphaIIToNumericRegion</code></a><span class="qquad">    </span><a href="#sec:supplpkgs">§4</a>; <a href="#wrglossary.524">30</a>, <span class="summarylocfmt"><a href="#wrglossary.1633">105</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangDeclareDialectOption"><code class="csfmt">\TrackLangDeclareDialectOption</code></a><span class="qquad">    </span><span class="summarylocfmt"><a href="#wrglossary.1635">105</a></span></div><!-- end of nlctuserguideidx0 -->
@@ -11293,7 +11295,7 @@
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangEnvLang"><code class="csfmt">\TrackLangEnvLang</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.440">26</a>, <span class="summarylocfmt"><a href="#wrglossary.1650">106</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangEnvModifier"><code class="csfmt">\TrackLangEnvModifier</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.446">26</a>, <span class="summarylocfmt"><a href="#wrglossary.1653">106</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangEnvTerritory"><code class="csfmt">\TrackLangEnvTerritory</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.442">26</a>, <span class="summarylocfmt"><a href="#wrglossary.1657">106</a></span></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><a href="#glo:TrackLangFromEnv"><code class="csfmt">\TrackLangFromEnv</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.72">9</a>, <a href="#wrglossary.93">10</a>, <a href="#wrglossary.183">14</a>, <a href="#wrglossary.375">23</a>, <a href="#wrglossary.414">25</a>–<a href="#wrglossary.502">28</a>, <a href="#wrglossary.575">34</a>, <a href="#wrglossary.712">41</a>, <a href="#wrglossary.1425">81</a>, <a href="#wrglossary.1438">82</a>, <span class="summarylocfmt"><a href="#wrglossary.1661">106</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:TrackLangFromEnv"><code class="csfmt">\TrackLangFromEnv</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.72">9</a>, <a href="#wrglossary.95">10</a>, <a href="#wrglossary.185">15</a>, <a href="#wrglossary.375">23</a>, <a href="#wrglossary.414">25</a>–<a href="#wrglossary.502">28</a>, <a href="#wrglossary.575">34</a>, <a href="#wrglossary.712">41</a>, <a href="#wrglossary.1425">81</a>, <a href="#wrglossary.1438">82</a>, <span class="summarylocfmt"><a href="#wrglossary.1661">106</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangGetDefaultScript"><code class="csfmt">\TrackLangGetDefaultScript</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.752">43</a>, <span class="summarylocfmt"><a href="#wrglossary.1665">106</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangGetKnownCountry"><code class="csfmt">\TrackLangGetKnownCountry</code></a><span class="qquad">    </span><span class="summarylocfmt"><a href="#wrglossary.1667">106</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangGetKnownIsoThreeLetterLang"><code class="csfmt">\TrackLangGetKnownIsoThreeLetterLang</code></a><span class="qquad">    </span><span class="summarylocfmt"><a href="#wrglossary.1670">106</a></span></div><!-- end of nlctuserguideidx0 -->
@@ -11325,7 +11327,7 @@
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangProvidesResource"><code class="csfmt">\TrackLangProvidesResource</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.201">15</a>, <a href="#wrglossary.213">16</a>, <a href="#wrglossary.785">46</a>, <a href="#wrglossary.945">53</a>, <a href="#wrglossary.956">54</a>, <a href="#wrglossary.1431">81</a>, <span class="summarylocfmt"><a href="#wrglossary.1741">110</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangQueryEnv"><code class="csfmt">\TrackLangQueryEnv</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.447">26</a>, <span class="summarylocfmt"><a href="#wrglossary.1744">110</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangQueryOtherEnv"><code class="csfmt">\TrackLangQueryOtherEnv</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.459">27</a>, <span class="summarylocfmt"><a href="#wrglossary.1749">111</a></span></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><a href="#glo:TrackLangRedefHook"><code class="csfmt">\TrackLangRedefHook</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.206">15</a>, <a href="#wrglossary.258">18</a>, <a href="#wrglossary.994">56</a>, <span class="summarylocfmt"><a href="#wrglossary.1754">111</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:TrackLangRedefHook"><code class="csfmt">\TrackLangRedefHook</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.206">16</a>, <a href="#wrglossary.258">18</a>, <a href="#wrglossary.994">56</a>, <span class="summarylocfmt"><a href="#wrglossary.1754">111</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangRegionMap"><code class="csfmt">\TrackLangRegionMap</code></a><span class="qquad">    </span><a href="#sec:supplpkgs">§4</a>; <a href="#wrglossary.534">31</a>, <a href="#wrglossary.1253">73</a>, <a href="#wrglossary.1304">76</a>, <span class="summarylocfmt"><a href="#wrglossary.1757">111</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangRequestResource"><code class="csfmt">\TrackLangRequestResource</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.214">16</a>, <a href="#wrglossary.966">54</a>, <span class="summarylocfmt"><a href="#wrglossary.1760">111</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangRequireDialect"><code class="csfmt">\TrackLangRequireDialect</code></a><span class="qquad">    </span><a href="#sec:user">§5</a>; <a href="#wrglossary.188">15</a>, <a href="#wrglossary.781">46</a>, <a href="#wrglossary.943">53</a>, <a href="#wrglossary.967">55</a>, <a href="#wrglossary.990">56</a>, <a href="#wrglossary.1093">63</a>, <span class="summarylocfmt"><a href="#wrglossary.1763">111</a></span>, <a href="#wrglossary.1777">112</a></div><!-- end of nlctuserguideidx0 -->
@@ -11348,7 +11350,7 @@
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangScriptSetParent"><code class="csfmt">\TrackLangScriptSetParent</code></a><span class="qquad">    </span><a href="#sec:supplpkgs">§4</a>; <a href="#wrglossary.556">33</a>, <span class="summarylocfmt"><a href="#wrglossary.1805">114</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangShowWarningsfalse"><code class="csfmt">\TrackLangShowWarningsfalse</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.397">24</a>, <span class="summarylocfmt"><a href="#wrglossary.1807">114</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLangShowWarningstrue"><code class="csfmt">\TrackLangShowWarningstrue</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.398">24</a>, <span class="summarylocfmt"><a href="#wrglossary.1810">114</a></span></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><a href="#glo:TrackLanguageTag"><code class="csfmt">\TrackLanguageTag</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#tab:isoopts">Table 1.1</a>; <a href="#wrglossary.85">10</a>, <a href="#wrglossary.152">13</a>–<a href="#wrglossary.185">15</a>, <a href="#wrglossary.238">17</a>, <a href="#wrglossary.340">21</a>, <a href="#wrglossary.373">23</a>, <a href="#wrglossary.521">30</a>, <a href="#wrglossary.578">34</a>, <a href="#wrglossary.645">36</a>, <a href="#wrglossary.677">39</a>, <a href="#wrglossary.706">40</a>, <a href="#wrglossary.743">42</a>, <a href="#wrglossary.1268">74</a>, <a href="#wrglossary.1338">78</a>, <a href="#wrglossary.1619">104</a>, <span class="summarylocfmt"><a href="#wrglossary.1813">114</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:TrackLanguageTag"><code class="csfmt">\TrackLanguageTag</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#tab:isoopts">Table 1.1</a>; <a href="#wrglossary.85">10</a>, <a href="#wrglossary.152">13</a>–<a href="#wrglossary.184">15</a>, <a href="#wrglossary.238">17</a>, <a href="#wrglossary.340">21</a>, <a href="#wrglossary.373">23</a>, <a href="#wrglossary.521">30</a>, <a href="#wrglossary.578">34</a>, <a href="#wrglossary.645">36</a>, <a href="#wrglossary.677">39</a>, <a href="#wrglossary.706">40</a>, <a href="#wrglossary.743">42</a>, <a href="#wrglossary.1268">74</a>, <a href="#wrglossary.1338">78</a>, <a href="#wrglossary.1619">104</a>, <span class="summarylocfmt"><a href="#wrglossary.1813">114</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackLocale"><code class="csfmt">\TrackLocale</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#tab:isoopts">Table 1.1</a>; <a href="#wrglossary.301">20</a>, <a href="#wrglossary.367">22</a>, <a href="#wrglossary.374">23</a>, <a href="#wrglossary.439">26</a>, <a href="#wrglossary.574">34</a>, <a href="#wrglossary.646">36</a>, <a href="#wrglossary.711">41</a>, <a href="#wrglossary.1267">74</a>, <a href="#wrglossary.1337">78</a>, <a href="#wrglossary.1369">79</a>, <span class="summarylocfmt"><a href="#wrglossary.1815">114</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:TrackPredefinedDialect"><code class="csfmt">\TrackPredefinedDialect</code></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#tab:isoopts">Table 1.1</a>; <a href="#wrglossary.61">3</a>, <a href="#wrglossary.104">10</a>, <a href="#wrglossary.237">17</a>, <a href="#wrglossary.280">19</a>, <a href="#wrglossary.293">20</a>, <a href="#wrglossary.1256">73</a>, <a href="#wrglossary.1264">74</a>, <a href="#wrglossary.1319">77</a>, <a href="#wrglossary.1336">78</a>, <a href="#wrglossary.1637">105</a>, <a href="#wrglossary.1737">110</a>, <span class="summarylocfmt"><a href="#wrglossary.1818">114</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><dfn id="glo:trans at languages"><code class="csfmt">\trans at languages</code></dfn><span class="qquad">    </span><a href="#wrglossary.606">35</a></div><!-- end of nlctuserguideidx0 -->
@@ -11423,7 +11425,7 @@
 </div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.venda"><span class="optfmt">venda</span> (root language)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:rootlangopts">Table 1.2</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.venezuelanspanish"><span class="optfmt">venezuelanspanish</span> (option)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:nonisoopts">Table 1.3</a></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><a href="#glo:opt.verbose"><span class="styoptfmt">verbose</span></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.285">19</a>, <span class="summarylocfmt"><a href="#wrglossary.1832">115</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:opt.verbose"><span class="styoptfmt">verbose</span></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.285">19</a>, <span class="summarylocfmt"><a href="#wrglossary.1830">115</a></span></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.VG"><span class="optfmt">VG</span> (region)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:regionmappings">Table A.1</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.VI"><span class="optfmt">VI</span> (region)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:regionmappings">Table A.1</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><dfn id="glo:opt.vi"><span class="optfmt">vi</span> (<a id="wrglossary.2024"></a><a href="#glo:ISO">ISO</a> code)</dfn><span class="qquad">    </span><div class="crossref"><span class="crossreftag">see</span> <a href="#glo:opt.vietnamese"><span class="optfmt">vietnamese</span></a></div><!-- end of crossref -->
@@ -11444,7 +11446,7 @@
 </div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.walloon"><span class="optfmt">walloon</span> (root language)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:rootlangopts">Table 1.2</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.Wara"><span class="optfmt">Wara</span> (script)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:scriptmappings">Table A.2</a></div><!-- end of nlctuserguideidx0 -->
-<div class="nlctuserguideidx0"><a href="#glo:opt.warn"><span class="styoptfmt">warn</span></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.287">19</a>, <span class="summarylocfmt"><a href="#wrglossary.1834">115</a></span></div><!-- end of nlctuserguideidx0 -->
+<div class="nlctuserguideidx0"><a href="#glo:opt.warn"><span class="styoptfmt">warn</span></a><span class="qquad">    </span><a href="#sec:generic">§3</a>; <a href="#wrglossary.287">19</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.welsh"><span class="optfmt">welsh</span> (root language)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:rootlangopts">Table 1.2</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.westernfrisian"><span class="optfmt">westernfrisian</span> (root language)</a><span class="qquad">    </span><a href="#sec:intro">§1</a>; <a href="#tab:rootlangopts">Table 1.2</a></div><!-- end of nlctuserguideidx0 -->
 <div class="nlctuserguideidx0"><a href="#glo:opt.WF"><span class="optfmt">WF</span> (region)</a><span class="qquad">    </span><a href="#sec:regscriptmappings">§A</a>; <a href="#tab:regionmappings">Table A.1</a></div><!-- end of nlctuserguideidx0 -->

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.tex	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/doc/generic/tracklang/tracklang-manual.tex	2025-03-11 20:10:07 UTC (rev 74576)
@@ -2231,12 +2231,12 @@
   \gscript{Zzzz}{999}{Uncoded script}{varies}{}{}
 }
 
-\title{tracklang.sty v1.6.5: 
+\title{tracklang.sty v1.6.6: 
 tracking language options}
 \author{Nicola L.C. Talbot\\[10pt]
 Dickimaw Books\\
 \href{https://www.dickimaw-books.com/}{\nolinkurl{dickimaw-books.com}}}
-\date{2025-03-04
+\date{2025-03-11
 } 
 
 \newcommand{\refoptstables}{\tablesref{tab:isoopts,tab:rootlangopts,tab:nonisoopts}}
@@ -2517,11 +2517,11 @@
 \gls{input} \file{texosquery.tex}
 \gls{input} \file{tracklang.tex} \comment{v1.3}
 \codepar
-\cmd{ifx}\gls{TeXOSQueryLangTag}\cmd{undefined}
- \gls{TrackLangFromEnv}
-\cmd{else}
+\cmd{ifdefined}\gls{TeXOSQueryLangTag}
  \gls{TeXOSQueryLangTag}\marg{\cmd{langtag}}
  \gls{TrackLanguageTag}\marg{\cmd{langtag}}
+\cmd{else}
+ \gls{TrackLangFromEnv}
 \cmd{fi}
 \comment{load packages that use tracklang for localisation}
 \end{codebox*}
@@ -2719,13 +2719,13 @@
 \gls{AnyTrackedLanguages}
 \marg{}
 \marg{\comment{fetch locale information from the operating system}
-  \cmd{ifx}\gls{TeXOSQueryLangTag}\cmd{undefined}
-    \comment{texosquery v1.2 not available}
-    \gls{TrackLangFromEnv}
-  \cmd{else}
+  \cmd{ifdefined}\gls{TeXOSQueryLangTag}
     \comment{texosquery v1.2 available}
     \gls{TeXOSQueryLangTag}\marg{\cmd{langtag}}
     \gls{TrackLanguageTag}\marg{\cmd{langtag}}
+  \cmd{else}
+    \comment{texosquery v1.2 not available}
+    \gls{TrackLangFromEnv}
   \cmd{fi}
 }
 \end{codebox*}
@@ -3286,7 +3286,8 @@
 \gls{TrackLangEnv} hasn't already been defined, you can test for this
 first:
 \begin{codebox}
-\cmd{ifx}\gls{TrackLangEnv}\cmd{undefined}
+\cmd{ifdefined}\gls{TrackLangEnv}
+\cmd{else}
   \gls{TrackLangQueryOtherEnv}\marg{\envvar{LCMONETARY}}
 \cmd{fi}
 \gls{TrackLangFromEnv}
@@ -4465,7 +4466,8 @@
 has been defined, you can use:
 \cmddef{TrackLangEncodingName}
 This will expand to \code{utf8} if \gls{inputencodingname} hasn't
-been defined, otherwise it will expand to \gls{inputencodingname}.
+been defined (or has been set to \csfmt{relax}), otherwise it will 
+expand to \gls{inputencodingname}.
 For example:
 \begin{codebox*}
 \gls{InputIfFileExists}\marg{foo-\gls{TrackLangEncodingName}.ldf}

Modified: trunk/Master/texmf-dist/source/latex/tracklang/tracklang.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tracklang/tracklang.dtx	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/source/latex/tracklang/tracklang.dtx	2025-03-11 20:10:07 UTC (rev 74576)
@@ -1,8 +1,8 @@
 %\iffalse
 % tracklang.dtx generated using makedtx version 1.2 (c) Nicola Talbot
 % Command line args:
+%   -codetitle "Main Package Code"
 %   -author "Nicola Talbot"
-%   -codetitle "Main Package Code"
 %   -doc "tracklang-codedoc.tex"
 %   -src "tracklang.sty\Z=>tracklang.sty"
 %   -src "tracklang.tex\Z=>tracklang.tex"
@@ -10,7 +10,7 @@
 %   -src "tracklang-scripts.sty\Z=>tracklang-scripts.sty"
 %   -src "tracklang-scripts.tex\Z=>tracklang-scripts.tex"
 %   tracklang
-% Created on 2025/3/4 9:49
+% Created on 2025/3/11 10:28
 %\fi
 %\iffalse
 %<*package>
@@ -45,7 +45,7 @@
 \documentclass{article}
 \usepackage{doc}
 
-\CheckSum{6575}
+\CheckSum{6464}
 
 \RecordChanges
 \PageIndex
@@ -87,12 +87,12 @@
 %</driver>
 %\fi
 %
-% \title{Documented Code For tracklang v1.6.5}
+% \title{Documented Code For tracklang v1.6.6}
 % \author{Nicola L.C. Talbot\\[10pt]
 %Dickimaw Books\\
 %\url{http://www.dickimaw-books.com/}}
 %
-% \date{2025-03-04}
+% \date{2025-03-11}
 % \maketitle
 %
 %\tableofcontents
@@ -114,12 +114,9 @@
 %\fi
 %\changes{1.0}{2014-09-29}{Initial release}
 %\section{\LaTeX\ Code (\texttt{tracklang.sty})}
-% To ensure maximum portability this file only uses \LaTeX\ kernel
-% commands, rather than using more convenient commands provided by
-% packages such as \styfmt{etoolbox}.
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang}[2025/03/04 v1.6.5 (NLCT) Track Languages]
+\ProvidesPackage{tracklang}[2025/03/11 v1.6.6 (NLCT) Track Languages]
 %    \end{macrocode}
 %\begin{macro}{\@tracklang at declareoption}
 % Set up package options.
@@ -129,6 +126,7 @@
 }
 %    \end{macrocode}
 %\end{macro}
+%
 % Load generic code:
 %    \begin{macrocode}
 \input{tracklang}
@@ -172,6 +170,12 @@
 % provide a reliable user interface to determine which languages
 % (and variants) have been loaded.
 %
+% Version 1.6.6 switched to using \LaTeX3 (just for \LaTeX\ package,
+% not generic code.)
+%    \begin{macrocode}
+\ExplSyntaxOn
+%    \end{macrocode}
+%
 %\begin{macro}{\@tracklang at prelangpkgcheck@hook}
 %In the event that any of the language packages choose to load this
 %package and use \texttt{tracklang.tex}'s commands to identify the
@@ -180,63 +184,106 @@
 %skip the checks.
 %\changes{1.3.8}{2019-10-06}{new}
 %    \begin{macrocode}
-\csname @tracklang at prelangpkgcheck@hook\endcsname
+\cs_if_exist_use:N \@tracklang at prelangpkgcheck@hook
 %    \end{macrocode}
 %\end{macro}
 %
+% \cs{LocaleForEach} is defined, so use that to pick up any
+% language options setup with \cs{babelprovide}.
 %    \begin{macrocode}
-\ifx\@tracklang at languages\@empty
+\cs_new:Nn \__tracklang_localeforeach:
+ {
+  \cs_if_exist:NT \LocaleForEach
+   {
+     \LocaleForEach
+      {
+        \@tracklang at verbose{Checking babel locale `##1'}%
+        \cs_if_exist_use:cF { @tracklang at add@##1 }
+         {
+           \getlocaleproperty \tracklang at propresult
+            {##1} {identification/tag.bcp47}
+           \exp_args:NV \TrackLanguageTag \tracklang at propresult
 %    \end{macrocode}
-% First test if \cs{LocaleForEach} is defined.
-%\changes{1.6.4}{2025-01-26}{added check for \cs{LocaleForEach}}
+% If \sty{babel} label doesn't match \sty{tracklang}'s dialect label, add mapping:
 %    \begin{macrocode}
-  \ifx\LocaleForEach\undefined
-    \@tracklang at verbose{\string\LocaleForEach\space not defined
-     (checking for other packages)}%
+           \tl_if_eq:NnF \TrackLangLastTrackedDialect { ##1 }
+            {
+             \@tracklang at info
+              {Adding ~ mapping ~ `\TrackLangLastTrackedDialect' ~ -> ~ `##1'}
+             \exp_args:NV \SetTrackedDialectLabelMap
+               \TrackLangLastTrackedDialect
+               { ##1 }
+            }
+         }
+      }
+   }
+ }
 %    \end{macrocode}
-% If \sty{babel} has been loaded, the
-% languages are stored in \cs{bbl at loaded}, so check if this command
-% has been defined, and if it has add those languages.
+%
 %    \begin{macrocode}
-    \@ifundefined{bbl at loaded}%
-    {%
+\cs_new:Nn \__tracklang_bbl_loaded:
+ {
+   \clist_map_inline:Nn \bbl at loaded
+    {
+      \cs_if_exist:cTF
+        { @tracklang at add@ ##1 }
+       {
+         \tl_if_eq:nnTF { ##1 } { nil }
+          {
+            \tl_if_empty:NT \@tracklang at languages
+             {
 %    \end{macrocode}
-% If \sty{translator} has been loaded, the languages are stored in
-% \cs{trans at languages}
+%Only add nil if no other languages have been tracked.
 %    \begin{macrocode}
-      \@ifundefined{trans at languages}
-      {%
+               \@tracklang at add@nil
+             }
+          }
+          {
+            \use:c { @tracklang at add@ ##1 }
+            \tl_if_eq:nnT { ##1 } { serbian }
+             {
 %    \end{macrocode}
-% Has \sty{ngerman} been loaded?
+% If \sty{babel} has been loaded with \pkgoptfmt{serbian}, then 
+% the script needs to be set to \texttt{Latn}. (The Cyrillic
+% script is provided with \pkgoptfmt{serbianc}.)
 %    \begin{macrocode}
-         \@ifpackageloaded{ngerman}%
-         {%
-           \@tracklang at add@ngerman
-         }%
-         {%
+               \SetTrackedDialectScript{serbian}{Latn}
+             }
+          }
+       }
+       {
+         \@tracklang at pkgwarn
+           {tracklang}
+           {Adding ~ unknown ~ babel ~ language ~ `##1'}
+          \AddTrackedLanguage { ##1 }
+       }
+    }
+ }
 %    \end{macrocode}
-% Has \sty{german} been loaded?
-%\changes{1.3}{2016-10-07}{added test for german.sty}
+%
 %    \begin{macrocode}
-           \@ifpackageloaded{german}%
-           {%
-             \@tracklang at add@german
-           }%
-           {%
+\cs_new:Nn \__tracklang_polyglossia:
+ {
 %    \end{macrocode}
-% Has \sty{polyglossia} been loaded? 
-%    \begin{macrocode}
-             \@ifpackageloaded{polyglossia}
-             {%
-%    \end{macrocode}
 %\sty{polyglossia} now provides \cs{xpg at bcp@loaded}, which contains
 %a comma-separated list of language tags, so use that if
-%it exists.
+%it exists. Unfortunately it doesn't seem to include the main
+%language.
 %\changes{1.6}{2022-10-29}{added check for \cs{xpg at bcp@loaded}}
 %    \begin{macrocode}
-               \@ifundefined{xpg at bcp@loaded}%
-               {% 
+   \tl_if_exist:NTF \xpg at bcp@loaded
+    {
+      \clist_map_inline:Nn \xpg at bcp@loaded
+       {
 %    \end{macrocode}
+%These are language tags, which is more convenient.
+%    \begin{macrocode}
+         \@tracklang at info{Found ~ polyglossia ~ BCP ~ `##1'}%
+         \TrackLanguageTag { ##1 }
+       }
+    }
+    { 
+%    \end{macrocode}
 % Older versions:
 % \sty{polyglossia} sets \cs{\meta{lang}@loaded} for each loaded
 % language, so check this for all known languages. I don't know how
@@ -252,235 +299,211 @@
 %\changes{1.3}{2016-10-07}{removed hard-coded polyglossia language list}
 %\changes{1.3.5}{2018-02-21}{check for \cs{xpg at loaded}}
 %    \begin{macrocode}
-                 \@ifundefined{xpg at loaded}%
-                 {%
+     \tl_if_exist:NTF \xpg at loaded
+       {
+        \clist_map_inline:Nn \xpg at loaded
+         {
+          \cs_if_exist_use:cF {@tracklang at add@ ##1 }
+           {
+             \@tracklang at pkgwarn
+               {tracklang}
+               {Adding ~ unknown ~ polyglossia ~ language ~ `##1'}
 %    \end{macrocode}
-%\cs{xpg at loaded} isn't defined, so iterate over known options and
-%check if the language has been loaded.
-%    \begin{macrocode}
-                   \PackageInfo{tracklang}{polyglossia loaded but
-                   \string\xpg at loaded\space not defined. Will attempt
-                   to track known languages.}%
-                    \@for\this at language:=\@tracklang at declaredoptions\do{%
-                      \@ifundefined{\this at language @loaded}%
-                      {}%
-                      {\@nameuse{@tracklang at add@\this at language}}%
-                    }%
-                   }%
-                   {%
-                    \@for\this at language:=\xpg at loaded\do{%
-                      \@ifundefined{@tracklang at add@\this at language}%
-                      {%
-                         \PackageWarning{tracklang}%
-                           {Adding unknown polyglossia language `\this at language'}%
-%    \end{macrocode}
 %\changes{1.3.7}{2019-08-31}{corrected misspelt command}
 %    \begin{macrocode}
-                         \AddTrackedLanguage{\this at language}%
-                      }%
-                      {\@nameuse{@tracklang at add@\this at language}}%
-                    }%
-                 }%
-               }%
-               {%
-                 \@for\this at language:=\xpg at bcp@loaded\do{%
+             \AddTrackedLanguage { ##1 }
+           }
+        }
+     }
+     {
 %    \end{macrocode}
-%These are language tags, which is more convenient.
+%\cs{xpg at loaded} isn't defined, so iterate over known options and
+%check if the language has been loaded.
+%This may be removed at some point.
 %    \begin{macrocode}
-                    \expandafter\TrackLanguageTag{\this at language}%
-                 }%
-               }%
+       \PackageInfo {tracklang}
+        {
+          polyglossia ~ loaded ~ but ~
+          \tl_to_str:N \xpg at loaded\c_space_tl ~ not ~ defined. ~
+           Will ~ attempt ~ to ~ track ~ known ~ languages.
+        }
+       \clist_map:Nn \@tracklang at declaredoptions
+        {
+          \tl_if_exist:cT { ##1 @loaded }
+          { \cs_use:c { @tracklang at add@ ##1} }
+        }
+      }
+    }
 %    \end{macrocode}
 %The \cs{xpg at bcp@loaded} list doesn't seem to include the main
 %language until the start of the document environment but
-%\cs{mainbabelname} is defined after \cs{setmainlanguage}. I'm not
-%sure if \cs{mainbabelname} was provided in the same version of
-%\sty{polyglossia} as \cs{xpg at bcp@loaded} or a different one, so
-%have a separate conditional.
+%we can use \cs{BCPdata} to obtain the tag.
 %    \begin{macrocode}
-               \@ifundefined{mainbabelname}{}%
-               {%
-                 \let\@org at tracklang@add at latex\@tracklang at add@latex
-                 \def\@tracklang at add@latex{%
-                   \PackageWarning{tracklang}%
-                     {Can't detect polyglossia main language. It may
-                       not have been set yet}%
-                 }%
-                 \@ifundefined{@tracklang at add@\mainbabelname}%
-                 {%
-                   \PackageWarning{tracklang}%
-                     {Adding unknown polyglossia main babel name `\mainbabelname'}%
-                   \expandafter\AddTrackedLanguage{\mainbabelname}%
-                 }%
-                 {%
-                   \@nameuse{@tracklang at add@\mainbabelname}%
-                 }%
-                 \let\@tracklang at add@latex\@org at tracklang@add at latex
-               }%
-             }%
-             {%
+   \tl_if_exist:NT \BCPdata
+    {
+      \exp_args:Ne \TrackLanguageTag { \BCPdata {tag} }
+    }
+ }
 %    \end{macrocode}
-% None of the known packages have been loaded, so do nothing in case
-% another package wants to load this one before setting up the
-% language options. However, if at this point \sty{babel} has been
-% loaded, then it's an older version that hasn't defined
-% \cs{bbl at loaded} so check for this.
+%
 %    \begin{macrocode}
-               \@ifpackageloaded{babel}
-               {%
-                 \PackageInfo{tracklang}{babel loaded but
-                 \string\bbl at loaded\space not defined. Will attempt
-                 to track known languages.}%
-                 \@for\this at language:=\@tracklang at declaredoptions\do{%
-                   \@ifundefined{captions\this at language}%
-                   {}%
-                   {\@nameuse{@tracklang at add@\this at language}}%
-                 }%
-               }%
-               {}%
-             }%
-           }%
-         }%
-      }%
-      {%
+\cs_new:Nn \__tracklang_translator:
+ {
 %    \end{macrocode}
+% If \sty{translator} has been loaded, the languages are stored in
+% \cs{trans at languages}
 % Add from \sty{translator}.
 % If \sty{translator} has been loaded, the language names are
 % stored in \cs{trans at languages} but these are labels used by
 % \sty{translator}, so some mapping is required.
 %    \begin{macrocode}
-        \let\@tracklang at add@Acadian\@tracklang at add@acadian
-        \let\@tracklang at add@French\@tracklang at add@french
-        \let\@tracklang at add@Afrikaans\@tracklang at add@afrikaans
-        \let\@tracklang at add@Dutch\@tracklang at add@dutch
-        \let\@tracklang at add@AmericanEnglish\@tracklang at add@american
-        \let\@tracklang at add@Austrian\@tracklang at add@austrian
-        \@namedef{@tracklang at add@Austrian1997}{\@tracklang at add@naustrian}%
-        \let\@tracklang at add@Bahasa\@tracklang at add@bahasa
-        \let\@tracklang at add@Basque\@tracklang at add@basque
-        \let\@tracklang at add@Brazilian\@tracklang at add@brazil
-        \let\@tracklang at add@Portuguese\@tracklang at add@portuguese
-        \let\@tracklang at add@Breton\@tracklang at add@breton
-        \let\@tracklang at add@BritishEnglish\@tracklang at add@british
-        \let\@tracklang at add@Bulgarian\@tracklang at add@bulgarian
-        \let\@tracklang at add@Canadian\@tracklang at add@canadian
-        \let\@tracklang at add@Canadien\@tracklang at add@canadien
-        \let\@tracklang at add@Catalan\@tracklang at add@catalan
-        \let\@tracklang at add@Croatian\@tracklang at add@croatian
-        \let\@tracklang at add@Czech\@tracklang at add@czech
-        \let\@tracklang at add@Danish\@tracklang at add@danish
-        \let\@tracklang at add@Dutch\@tracklang at add@dutch
-        \let\@tracklang at add@English\@tracklang at add@english
-        \let\@tracklang at add@Esperanto\@tracklang at add@esperanto
-        \let\@tracklang at add@Estonian\@tracklang at add@estonian
-        \let\@tracklang at add@Finnish\@tracklang at add@finnish
-        \let\@tracklang at add@French\@tracklang at add@french
-        \let\@tracklang at add@Galician\@tracklang at add@galician
-        \let\@tracklang at add@German\@tracklang at add@german
-        \@namedef{@tracklang at add@German1997}{\@tracklang at add@ngerman}%
-        \let\@tracklang at add@Greek\@tracklang at add@greek
-        \let\@tracklang at add@Polutoniko\@tracklang at add@polutoniko
-        \let\@tracklang at add@Hebrew\@tracklang at add@hebrew
-        \let\@tracklang at add@Hungarian\@tracklang at add@hungarian
-        \let\@tracklang at add@Icelandic\@tracklang at add@icelandic
-        \let\@tracklang at add@Irish\@tracklang at add@irish
-        \let\@tracklang at add@Italian\@tracklang at add@italian
-        \let\@tracklang at add@Latin\@tracklang at add@latin
-        \let\@tracklang at add@LowerSorbian\@tracklang at add@lowersorbian
-        \let\@tracklang at add@Magyar\@tracklang at add@magyar
-        \let\@tracklang at add@Nynorsk\@tracklang at add@nynorsk
-        \let\@tracklang at add@Norsk\@tracklang at add@norsk
-        \let\@tracklang at add@Polish\@tracklang at add@polish
-        \let\@tracklang at add@Portuguese\@tracklang at add@portuguese
-        \let\@tracklang at add@Romanian\@tracklang at add@romanian
-        \let\@tracklang at add@Russian\@tracklang at add@russian
-        \let\@tracklang at add@Scottish\@tracklang at add@scottish
-        \let\@tracklang at add@Serbian\@tracklang at add@serbian
-        \let\@tracklang at add@Slovak\@tracklang at add@slovak
-        \let\@tracklang at add@Slovene\@tracklang at add@slovene
-        \let\@tracklang at add@Spanish\@tracklang at add@spanish
-        \let\@tracklang at add@Swedish\@tracklang at add@swedish
-        \let\@tracklang at add@Turkish\@tracklang at add@turkish
-        \let\@tracklang at add@Ukrainian\@tracklang at add@ukrainian
-        \let\@tracklang at add@UpperSorbian\@tracklang at add@uppersorbian
-        \let\@tracklang at add@Welsh\@tracklang at add@welsh
+    \cs_set_eq:NN \@tracklang at add@Acadian\@tracklang at add@acadian
+    \cs_set_eq:NN \@tracklang at add@French\@tracklang at add@french
+    \cs_set_eq:NN \@tracklang at add@Afrikaans\@tracklang at add@afrikaans
+    \cs_set_eq:NN \@tracklang at add@Dutch\@tracklang at add@dutch
+    \cs_set_eq:NN \@tracklang at add@AmericanEnglish\@tracklang at add@american
+    \cs_set_eq:NN \@tracklang at add@Austrian\@tracklang at add@austrian
+    \cs_set_eq:cN{@tracklang at add@Austrian1997}\@tracklang at add@naustrian
+    \cs_set_eq:NN \@tracklang at add@Bahasa\@tracklang at add@bahasa
+    \cs_set_eq:NN \@tracklang at add@Basque\@tracklang at add@basque
+    \cs_set_eq:NN \@tracklang at add@Brazilian\@tracklang at add@brazil
+    \cs_set_eq:NN \@tracklang at add@Portuguese\@tracklang at add@portuguese
+    \cs_set_eq:NN \@tracklang at add@Breton\@tracklang at add@breton
+    \cs_set_eq:NN \@tracklang at add@BritishEnglish\@tracklang at add@british
+    \cs_set_eq:NN \@tracklang at add@Bulgarian\@tracklang at add@bulgarian
+    \cs_set_eq:NN \@tracklang at add@Canadian\@tracklang at add@canadian
+    \cs_set_eq:NN \@tracklang at add@Canadien\@tracklang at add@canadien
+    \cs_set_eq:NN \@tracklang at add@Catalan\@tracklang at add@catalan
+    \cs_set_eq:NN \@tracklang at add@Croatian\@tracklang at add@croatian
+    \cs_set_eq:NN \@tracklang at add@Czech\@tracklang at add@czech
+    \cs_set_eq:NN \@tracklang at add@Danish\@tracklang at add@danish
+    \cs_set_eq:NN \@tracklang at add@Dutch\@tracklang at add@dutch
+    \cs_set_eq:NN \@tracklang at add@English\@tracklang at add@english
+    \cs_set_eq:NN \@tracklang at add@Esperanto\@tracklang at add@esperanto
+    \cs_set_eq:NN \@tracklang at add@Estonian\@tracklang at add@estonian
+    \cs_set_eq:NN \@tracklang at add@Finnish\@tracklang at add@finnish
+    \cs_set_eq:NN \@tracklang at add@French\@tracklang at add@french
+    \cs_set_eq:NN \@tracklang at add@Galician\@tracklang at add@galician
+    \cs_set_eq:NN \@tracklang at add@German\@tracklang at add@german
+    \cs_set_eq:cN{@tracklang at add@German1997}\@tracklang at add@ngerman
+    \cs_set_eq:NN \@tracklang at add@Greek\@tracklang at add@greek
+    \cs_set_eq:NN \@tracklang at add@Polutoniko\@tracklang at add@polutoniko
+    \cs_set_eq:NN \@tracklang at add@Hebrew\@tracklang at add@hebrew
+    \cs_set_eq:NN \@tracklang at add@Hungarian\@tracklang at add@hungarian
+    \cs_set_eq:NN \@tracklang at add@Icelandic\@tracklang at add@icelandic
+    \cs_set_eq:NN \@tracklang at add@Irish\@tracklang at add@irish
+    \cs_set_eq:NN \@tracklang at add@Italian\@tracklang at add@italian
+    \cs_set_eq:NN \@tracklang at add@Latin\@tracklang at add@latin
+    \cs_set_eq:NN \@tracklang at add@LowerSorbian\@tracklang at add@lowersorbian
+    \cs_set_eq:NN \@tracklang at add@Magyar\@tracklang at add@magyar
+    \cs_set_eq:NN \@tracklang at add@Nynorsk\@tracklang at add@nynorsk
+    \cs_set_eq:NN \@tracklang at add@Norsk\@tracklang at add@norsk
+    \cs_set_eq:NN \@tracklang at add@Polish\@tracklang at add@polish
+    \cs_set_eq:NN \@tracklang at add@Portuguese\@tracklang at add@portuguese
+    \cs_set_eq:NN \@tracklang at add@Romanian\@tracklang at add@romanian
+    \cs_set_eq:NN \@tracklang at add@Russian\@tracklang at add@russian
+    \cs_set_eq:NN \@tracklang at add@Scottish\@tracklang at add@scottish
+    \cs_set_eq:NN \@tracklang at add@Serbian\@tracklang at add@serbian
+    \cs_set_eq:NN \@tracklang at add@Slovak\@tracklang at add@slovak
+    \cs_set_eq:NN \@tracklang at add@Slovene\@tracklang at add@slovene
+    \cs_set_eq:NN \@tracklang at add@Spanish\@tracklang at add@spanish
+    \cs_set_eq:NN \@tracklang at add@Swedish\@tracklang at add@swedish
+    \cs_set_eq:NN \@tracklang at add@Turkish\@tracklang at add@turkish
+    \cs_set_eq:NN \@tracklang at add@Ukrainian\@tracklang at add@ukrainian
+    \cs_set_eq:NN \@tracklang at add@UpperSorbian\@tracklang at add@uppersorbian
+    \cs_set_eq:NN \@tracklang at add@Welsh\@tracklang at add@welsh
 %    \end{macrocode}
 % Now iterate through the declared languages:
 %    \begin{macrocode}
-        \@for\this at language:=\trans at languages\do{%
-           \@ifundefined{@tracklang at add@\this at language}{}%
-           {\@nameuse{@tracklang at add@\this at language}}%
-        }%
-      }%
-    }%
-    {%
+    \clist_map_inline:Nn \trans at languages
+     {
+       \cs_if_exist_use:c { @tracklang at add@##1 }
+     }
+ }
 %    \end{macrocode}
-% Add from \sty{babel}
+%
 %    \begin{macrocode}
-      \@for\this at language:=\bbl at loaded\do{%
-         \@ifundefined{@tracklang at add@\this at language}%
-         {%
-           \PackageWarning{tracklang}%
-             {Adding unknown babel language `\this at language'}%
+\tl_if_empty:NT \@tracklang at languages
+ {
+   \__tracklang_localeforeach:
 %    \end{macrocode}
-%\changes{1.3.7}{2019-08-31}{corrected misspelt command}
+% The babel settings may have been passed via package option
+% instead or as well as \cs{babelprovide}.
 %    \begin{macrocode}
-           \AddTrackedLanguage{\this at language}%
-         }%
-         {\@nameuse{@tracklang at add@\this at language}}%
-       }%
+   \tl_if_exist:NTF \bbl at loaded
+    {
+      \__tracklang_bbl_loaded:
+    }
+    {
 %    \end{macrocode}
-% If \sty{babel} has been loaded with \pkgoptfmt{serbian}, then 
-% the script needs to be set to \texttt{Latn}. (The Cyrillic
-% script is provided with \pkgoptfmt{serbianc}.)
+% \cs{bbl at loaded} not defined.
 %    \begin{macrocode}
-       \ifx\captionsserbian\undefined
-       \else
-         \SetTrackedDialectScript{serbian}{Latn}%
-       \fi
-    }%
-  \else
-    \@tracklang at verbose{\string\LocaleForEach\space defined}%
+      \tl_if_exist:NTF \trans at languages
+       {
+         \__tracklang_translator:
+       }
+       {
 %    \end{macrocode}
-% \cs{LocaleForEach} is defined, so use that:
+% \cs{trans at languages} not defined.
+% Has \sty{ngerman} been loaded? (Deprecated, but still support.)
 %    \begin{macrocode}
-    \LocaleForEach
-    {%
-       \@tracklang at verbose{Checking babel locale `#1'}%
-       \@tracklang at ifundef{@tracklang at add@#1}%
-       {
-         \getlocaleproperty\tracklang at propresult{#1}{identification/tag.bcp47}%
-         \expandafter\TrackLanguageTag\expandafter{\tracklang at propresult}%
+         \@ifpackageloaded{ngerman}
+         {
+           \@tracklang at add@ngerman
+         }
+         {
 %    \end{macrocode}
-% If \sty{babel} label doesn't match \sty{tracklang}'s dialect label, add mapping:
+%Likewise, has \sty{german} been loaded?
+%\changes{1.3}{2016-10-07}{added test for german.sty}
 %    \begin{macrocode}
-         \edef\@tracklang at tmp{#1}%
-         \ifx\TrackLangLastTrackedDialect\@tracklang at tmp
-         \else
-           \@tracklang at info
-            {Adding mapping `\TrackLangLastTrackedDialect' -> `#1'}%
-           \expandafter\SetTrackedDialectLabelMap\expandafter
-             {\TrackLangLastTrackedDialect}{#1}%
-         \fi
-       }%
-       {%
-         \@nameuse{@tracklang at add@#1}%
-       }%
-    }%
+           \@ifpackageloaded{german}
+           {
+             \@tracklang at add@german
+           }
+           {
 %    \end{macrocode}
-%\changes{1.6.5}{2025-03-04}{warn if no dialect information found
-%with \cs{LocaleForEach}}
+% Has \sty{polyglossia} been loaded? 
 %    \begin{macrocode}
-    \ifx\@tracklang at languages\@empty
-     \@tracklang at pkgwarn{tracklang}{no dialect information picked up
-with \string\LocaleForEach}%
-    \fi
-  \fi
+             \@ifpackageloaded{polyglossia}
+             {
+               \__tracklang_polyglossia:
+             }
+             {
 %    \end{macrocode}
-% End of check for language packages
+% \sty{polyglossia} has not been loaded either.
+% None of the known packages have been loaded, so do nothing in case
+% another package wants to load this one before setting up the
+% language options. However, if at this point \sty{babel} has been
+% loaded, then it's an older version that hasn't defined
+% \cs{bbl at loaded} so check for this.
 %    \begin{macrocode}
-\fi
+               \@ifpackageloaded{babel}
+                {
+                 \PackageInfo {tracklang}
+                  {
+                    babel ~ loaded ~ but ~ 
+                    \tl_to_str:N \bbl at loaded \c_space_tl ~ not ~
+                    defined. ~ Will ~ attempt ~ to ~ track ~ known ~
+                     languages.
+                  }
+                 \clist_map_inline:Nn \@tracklang at declaredoptions
+                  {
+                    \cs_if_exist:cT {captions #1 }
+                    { \cs_if_exist_use:c { @tracklang at add@ #1 } }
+                  }
+                }
+                { }
+             }
+           }
+         }
+       }
+    }
+ }
 %    \end{macrocode}
+%Switch off \LaTeX3 syntax.
+%    \begin{macrocode}
+\ExplSyntaxOff
+%    \end{macrocode}
 %\iffalse
 %    \begin{macrocode}
 %</tracklang.sty>
@@ -506,9 +529,9 @@
 \fi
 %    \end{macrocode}
 %\end{macro}
-% First check if this file has already been loaded:
+% First check if this file has already been loaded.
 %    \begin{macrocode}
-\ifx\@tracklang at languages\undefined
+\ifx\@tracklang at languages \@tracklang at undefined
 \else
   \@tracklang at restore@at
   \expandafter\endinput
@@ -517,7 +540,7 @@
 % Version info.
 %    \begin{macrocode}
 \expandafter\def\csname ver at tracklang.tex\endcsname{%
- 2025/03/04 v1.6.5 (NLCT) Track Languages Generic Code}
+ 2025/03/11 v1.6.6 (NLCT) Track Languages Generic Code}
 %    \end{macrocode}
 % Define a long command for determining the existence of a control
 % sequence by its name. (\cs{relax} is considered undefined.)
@@ -543,7 +566,7 @@
 %\cs{ifcsname} is an e\TeX\ primitive. Need to check if it's
 %defined.
 %    \begin{macrocode}
-\ifx\ifcsname\undefined
+\ifx\ifcsname\@tracklang at undefined
 %    \end{macrocode}
 %Not using e\TeX.
 %    \begin{macrocode}
@@ -555,6 +578,20 @@
     \fi
   }
 %    \end{macrocode}
+%\cs{ifdefined} won't be available either.
+%    \begin{macrocode}
+  \long\def\@tracklang at ifundef@N#1#2#3{%
+    \ifx#1\@tracklang at undefined
+      #2%
+    \else 
+      \ifx#1\relax
+       #2%
+      \else 
+       #3%
+      \fi
+    \fi
+  }
+%    \end{macrocode}
 %Can't have an else part here as \TeX\ won't recognise
 %\cs{ifcsname} and we'll have an unmatched end brace.
 %    \begin{macrocode}
@@ -561,6 +598,28 @@
 \fi
 %    \end{macrocode}
 %\end{macro}
+%\begin{definition}
+%\cs{@tracklang at ifundef@N}\meta{cs}\marg{true}\marg{false}
+%\end{definition}
+%Provide \cs{@tracklang at ifundef} if not already defined.
+%This does true if \meta{cs} is either undefined or \cs{relax}.
+%    \begin{macrocode}
+\@tracklang at ifundef{@tracklang at ifundef@N}%
+ {%
+  \long\def\@tracklang at ifundef@N#1#2#3{%
+   \ifdefined#1\relax
+    \ifx#1\relax
+     #2%
+    \else
+     #3%
+    \fi
+   \else
+    #2%
+   \fi
+  }
+ }%
+ {}%
+%    \end{macrocode}
 %
 % The shell escape stuff needs the Plain \TeX\ version of
 % \cs{input}. This is \cs{@@input} if we're using \LaTeX.
@@ -567,13 +626,15 @@
 %\begin{macro}{\@tracklang at input}
 %\changes{1.6.3}{2025-01-22}{added \cs{@tracklang at inputfile}}
 %    \begin{macrocode}
-\ifx\@@input\undefined
+\@tracklang at ifundef@N \@@input
+{
   \let\@tracklang at input\input
   \def\@tracklang at inputfile#1{\input #1\relax}
-\else
+}
+{
   \let\@tracklang at input\@@input
   \def\@tracklang at inputfile#1{\input{#1}}
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -580,17 +641,20 @@
 % Provide some commands in case the \LaTeX\ kernel hasn't been loaded.
 %\begin{macro}{\@tracklang at nnil}
 %    \begin{macrocode}
-\ifx\@nnil\undefined
+\@tracklang at ifundef@N \@nnil
+{
   \def\@tracklang at nnil{\@nil}
-\else
+}
+{
   \let\@tracklang at nnil\@nnil
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
 %\begin{macro}{\@tracklang at for}
 %    \begin{macrocode}
-\ifx\@for\undefined
+\@tracklang at ifundef@N \@for
+{
   \long\def\@tracklang at for#1:=#2\do#3{%
     \expandafter\def\expandafter\@fortmp\expandafter{#2}%
     \ifx\@fortmp\empty
@@ -624,19 +688,22 @@
     #2\@@ #3{#4}%
   }
   \long\def\@tracklang at fornoop#1\@@ #2#3{}
-\else
+}
+{
   \let\@tracklang at for\@for
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
 %\begin{macro}{\@tracklang at namedef}
 %    \begin{macrocode}
-\ifx\@namedef\undefined
+\@tracklang at ifundef@N \@namedef
+{
   \def\@tracklang at namedef#1{\expandafter\def\csname#1\endcsname}
-\else
+}
+{
   \let\@tracklang at namedef\@namedef
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -682,14 +749,16 @@
 %\begin{macro}{\@tracklang at sanitize}
 %\changes{1.3}{2016-10-07}{new}
 %    \begin{macrocode}
-\ifx\@onelevel at sanitize\undefined
+\@tracklang at ifundef@N \@onelevel at sanitize
+{
   \def\@tracklang at sanitize#1{%
     \edef#1{\expandafter\@tracklang at strip@prefix\meaning#1}%
   }
   \def\@tracklang at strip@prefix#1>{}
-\else
+}
+{
   \let\@tracklang at sanitize\@onelevel at sanitize
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -712,13 +781,15 @@
 %\begin{macro}{\@tracklang at err}
 %\changes{1.3.4}{2017-03-25}{fixed typo in \cs{errhelp} command name}
 %    \begin{macrocode}
-\ifx\PackageError\undefined
+\@tracklang at ifundef@N \PackageError
+{
   \def\@tracklang at err#1#2{%
     \errhelp{#2}%
     \errmessage{tracklang: #1}}
-\else
+}
+{
   \def\@tracklang at err#1#2{\PackageError{tracklang}{#1}{#2}}
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -735,7 +806,8 @@
 %\changes{1.3.4}{2017-03-25}{new}
 %Provided for related packages such as \sty{texosquery}.
 %    \begin{macrocode}
-\ifx\PackageWarning\undefined
+\@tracklang at ifundef@N \PackageWarning
+{
   \def\@tracklang at pkgwarn#1#2{%
     \ifTrackLangShowWarnings
       {%
@@ -745,13 +817,14 @@
       }%
     \fi
   }
-\else
+}
+{
   \def\@tracklang at pkgwarn#1#2{%
     \ifTrackLangShowWarnings
       \PackageWarning{#1}{#2}%
     \fi
   }
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -774,7 +847,8 @@
 %\begin{macro}{\@tracklang at info}
 %\changes{1.3}{2016-10-07}{new}
 %    \begin{macrocode}
-\ifx\PackageInfo\undefined
+\@tracklang at ifundef@N \PackageInfo
+{
   \def\@tracklang at info#1{%
    \ifTrackLangShowInfo
      {%
@@ -784,13 +858,14 @@
      }%
    \fi
   }%
-\else
+}
+{
   \def\@tracklang at info#1{%
     \ifTrackLangShowInfo
       \PackageInfo{tracklang}{#1}%
     \fi
   }%
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -818,7 +893,8 @@
 %
 %\begin{macro}{\@tracklang at IfFileExists}
 %    \begin{macrocode}
-\ifx\IfFileExists\undefined
+\@tracklang at ifundef@N \IfFileExists
+{
  \long\def\@tracklang at IfFileExists#1#2#3{%
    \openin0=#1 %
    \ifeof0\relax
@@ -830,10 +906,10 @@
    \fi
    \@tracklang at tmp
  }
-
-\else
+}
+{
   \let\@tracklang at IfFileExists\IfFileExists
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -842,11 +918,13 @@
 %Provide a default encoding name to avoid repeated tests to determine whether or not
 %\cs{inputencodingname} has been defined.
 %    \begin{macrocode}
-\ifx\inputencodingname\undefined
+\@tracklang at ifundef@N \inputencodingname
+{
   \def\TrackLangEncodingName{utf8}
-\else
+}
+{
   \def\TrackLangEncodingName{\inputencodingname}
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -906,7 +984,8 @@
 %    \end{macrocode}
 %\end{macro}
 %    \begin{macrocode}
-\ifx\directlua\undefined
+\@tracklang at ifundef@N \directlua
+{
 %    \end{macrocode}
 %We can't use Lua, so we'll have to use the shell escape if it's
 %enabled. First determine if the shell escape is available.
@@ -929,8 +1008,10 @@
 %\changes{1.3.2}{2016-10-11}{added check if \cs{shellescape} has
 %been set to \cs{relax}}
 %    \begin{macrocode}
-   \ifx\pdfshellescape\undefined
-     \ifx\shellescape\undefined
+   \@tracklang at ifundef@N \pdfshellescape
+   {%
+     \@tracklang at ifundef@N \shellescape
+     {%
 %    \end{macrocode}
 % Can't determine if the shell escape has been enabled.
 %    \begin{macrocode}
@@ -950,20 +1031,23 @@
             \def\TrackLangEnv{}%
           }%
         }%
-     \else
+     }%
+     {%
 %    \end{macrocode}
 %\cs{shellescape} is defined. Check no one's been messing around
 %with it and set it to \cs{relax}.
 %    \begin{macrocode}
-       \ifx\shellescape\relax
-       \else
+       \@tracklang at ifundef@N \shellescape
+       {}%
+       {%
          \ifnum\shellescape=0\relax
          \else
            \def\@tracklang at tryshellescape#1{#1}%
          \fi
-       \fi
-     \fi
-   \else
+       }%
+     }%
+   }%
+   {%
 %    \end{macrocode}
 %\cs{pdfshellescape} is defined. Check no one's been messing around
 %with it and set it to \cs{relax}. (Default no-op already set.)
@@ -973,8 +1057,9 @@
 %\cs{pdfshellescape} has been set to \cs{relax}. Is it possible that
 %\cs{shellescape} is available?
 %    \begin{macrocode}
-       \ifx\shellescape\undefined
-       \else
+       \@tracklang at ifundef@N \shellescape
+       {}%
+       {%
          \ifx\shellescape\relax
          \else
 %    \end{macrocode}
@@ -985,7 +1070,7 @@
              \def\@tracklang at tryshellescape#1{#1}%
            \fi
          \fi
-       \fi
+       }%
      \else
        \ifnum\pdfshellescape=0\relax
        \else
@@ -992,7 +1077,7 @@
          \def\@tracklang at tryshellescape#1{#1}%
        \fi
      \fi
-   \fi
+   }%
 %    \end{macrocode}
 %\end{macro}
 % Try the shell escape:
@@ -1024,10 +1109,12 @@
 %    \end{macrocode}
 % Try texosquery if available.
 %    \begin{macrocode}
-           \ifx\TeXOSQueryLocale\undefined
+           \@tracklang at ifundef@N \TeXOSQueryLocale
+           {%
              \@tracklang at warn{Locale environment variables
               unavailable (tried LC\string_ALL and LANG)}%
-           \else
+           }%
+           {%
              \@tracklang at info{Using texosquery to find locale}%
              \TeXOSQueryLocale\TrackLangEnv
              \ifx\TrackLangEnv\empty
@@ -1035,7 +1122,7 @@
                (tried querying LC\string_ALL and LANG variables and
                tried using texosquery)}%
              \fi
-           \fi
+           }%
          \fi
        \fi
      }%
@@ -1066,10 +1153,12 @@
 %    \end{macrocode}
 % Try texosquery if available.
 %    \begin{macrocode}
-             \ifx\TeXOSQueryLocale\undefined
-             \@tracklang at warn{Locale environment variables unavailable
-              (tried LC\string_ALL, #1 and LANG)}%
-             \else
+             \@tracklang at ifundef@N \TeXOSQueryLocale
+             {%
+              \@tracklang at warn{Locale environment variables unavailable
+               (tried LC\string_ALL, #1 and LANG)}%
+             }%
+             {%
                \@tracklang at info{Using texosquery to find locale}%
                \TeXOSQueryLocale\TrackLangEnv
                \ifx\TrackLangEnv\empty
@@ -1077,7 +1166,7 @@
                  (tried querying LC\string_ALL, #1 and LANG variables and
                  tried using texosquery)}%
                \fi
-             \fi
+             }%
            \fi
          \fi
        \fi
@@ -1086,7 +1175,8 @@
 %\end{macro}
 %    \begin{macrocode}
   }%
-\else
+}
+{
 %    \end{macrocode}
 %\cs{directlua} is defined, so we can query it through Lua:
 %\begin{macro}{\TrackLangQueryEnv}
@@ -1112,11 +1202,13 @@
 %    \end{macrocode}
 % Try texosquery if available.
 %    \begin{macrocode}
-         \ifx\TeXOSQueryLocale\undefined
-         \@tracklang at warn{Locale can't be found through Lua
-          (tried querying LC\string_ALL and LANG variables and
-           os.setlocale(nil))}%
-         \else
+         \@tracklang at ifundef@N \TeXOSQueryLocale
+         {%
+          \@tracklang at warn{Locale can't be found through Lua
+           (tried querying LC\string_ALL and LANG variables and
+            os.setlocale(nil))}%
+         }%
+         {%
            \TeXOSQueryLocale\TrackLangEnv
            \ifx\TrackLangEnv\empty
              \@tracklang at warn{Locale can't be found through Lua
@@ -1123,9 +1215,9 @@
              (tried querying LC\string_ALL and LANG variables and
              os.setlocale(nil) and tried using texosquery)}%
            \fi
-         \fi
+         }%
        \fi
-   }
+   }%
 %    \end{macrocode}
 %\end{macro}
 %\begin{macro}{\TrackLangQueryOtherEnv}
@@ -1155,11 +1247,13 @@
 %    \end{macrocode}
 % Try texosquery if available.
 %    \begin{macrocode}
-         \ifx\TeXOSQueryLocale\undefined
-         \@tracklang at warn{Locale can't be found through Lua
-          (tried querying LC\string_ALL, #1 and LANG variables and
-           os.setlocale(nil))}%
-         \else
+         \@tracklang at ifundef@N \TeXOSQueryLocale
+         {%
+          \@tracklang at warn{Locale can't be found through Lua
+           (tried querying LC\string_ALL, #1 and LANG variables and
+            os.setlocale(nil))}%
+         }%
+         {%
            \TeXOSQueryLocale\TrackLangEnv
            \ifx\TrackLangEnv\empty
              \@tracklang at warn{Locale can't be found through Lua
@@ -1166,13 +1260,13 @@
              (tried querying LC\string_ALL, #1 and LANG variables and
              os.setlocale(nil) and tried using texosquery)}%
            \fi
-         \fi
+         }%
        \fi
    }
 %    \end{macrocode}
 %\end{macro}
 %    \begin{macrocode}
-\fi
+}
 %    \end{macrocode}
 %
 % Allowed formats for the localisation environment variables are 
@@ -1192,7 +1286,8 @@
 % \cs{TrackLangFromEnv} to query, parse and set.
 %    \begin{macrocode}
 \def\TrackLangParseFromEnv{%
-  \ifx\TrackLangEnv\undefined
+  \@tracklang at ifundef@N\TrackLangEnv
+  {%
      \@tracklang at warn{\string\TrackLangParseFromEnv\space
      non-operational as \string\TrackLangEnv\space hasn't been
      defined}%
@@ -1200,7 +1295,8 @@
      \def\TrackLangEnvTerritory{}%
      \def\TrackLangEnvCodeSet{}%
      \def\TrackLangEnvModifier{}%
-  \else
+  }%
+  {%
     \ifx\TrackLangEnv\empty
       \@tracklang at warn{\string\TrackLangParseFromEnv\space
       non-operational as \string\TrackLangEnv\space is empty}%
@@ -1215,7 +1311,7 @@
       \let\TrackLangEnvCodeSet\@TrackLangEnvCodeSet
       \let\TrackLangEnvModifier\@TrackLangEnvModifier
     \fi
-  \fi
+  }%
 }
 %    \end{macrocode}
 %\end{macro}
@@ -1514,6 +1610,7 @@
 % All labels should be expandable.)
 %    \begin{macrocode}
 \def\AddTrackedDialect#1#2{%
+ \@tracklang at info{Tracking dialect `#1' (language `#2')}%
  \@tracklang at add{#1}{\@tracklang at dialects}%
  \@tracklang at add{#2}{\@tracklang at languages}%
 %    \end{macrocode}
@@ -3157,9 +3254,10 @@
 % Is three digit numeric code. We need the mappings. Has
 % \texttt{tracklang-region-codes.tex} been loaded?
 %    \begin{macrocode}
-         \ifx\TrackLangIfKnownNumericRegion\undefined
+         \@tracklang at ifundef@N \TrackLangIfKnownNumericRegion
+         {%
            \@tracklang at inputfile{tracklang-region-codes.tex}%
-         \fi
+         }{}%
          \TrackLangIfKnownNumericRegion{\@tracklang at split@pre}%
          {%
            \edef\@TrackLangEnvTerritory{%
@@ -3208,14 +3306,15 @@
 % be input by tracklang-regions-codes.tex
 %    \begin{macrocode}
 \def\TrackLangAddExtraRegionFile#1{% 
- \ifx\TrackLangRegionMap\undefined
- \else
+ \@tracklang at ifundef@N \TrackLangRegionMap
+ {}%
+ {%
 %    \end{macrocode}
 % tracklang-region-codes.tex has already been loaded so input the file
 % now.
 %    \begin{macrocode}
     \@tracklang at inputfile{#1}%
- \fi
+ }%
  \@tracklang at add{#1}{\@tracklang at extra@region at filelist}%
 }
 %    \end{macrocode}
@@ -3248,14 +3347,15 @@
 % automatically loaded by tracklang-scripts.tex
 %    \begin{macrocode}
 \def\TrackLangAddExtraScriptFile#1{% 
- \ifx\TrackLangScriptMap\undefined
- \else
+ \@tracklang at ifundef@N \TrackLangScriptMap
+ {}%
+ {%
 %    \end{macrocode}
 % tracklang-scripts.tex has already been loaded so input the file
 % now.
 %    \begin{macrocode}
     \@tracklang at inputfile{#1}%
- \fi
+ }%
  \@tracklang at add{#1}{\@tracklang at extra@script at filelist}%
 }
 %    \end{macrocode}
@@ -3461,9 +3561,10 @@
 %If \cs{TrackQueryEnv} is empty, assume \cs{TrackQueryEnv} has already
 %been attempted but failed, so don't bother retrying.
 %    \begin{macrocode}
-  \ifx\TrackLangEnv\undefined
+  \@tracklang at ifundef@N \TrackLangEnv
+  {%
     \TrackLangQueryEnv
-  \fi
+  }{}%
   \ifx\TrackLangEnv\empty
      \@tracklang at warn{\string\TrackLangFromEnv\space
      non-operational as \string\TrackLangEnv\space is empty}%
@@ -3473,11 +3574,13 @@
 % \cs{TrackLangQueryEnv} fails it should define \cs{TrackLangEnv} to
 % be empty), but check in case something unexpected has happened.
 %    \begin{macrocode}
-    \ifx\TrackLangEnv\undefined
+    \@tracklang at ifundef@N \TrackLangEnv
+    {%
        \@tracklang at warn{\string\TrackLangFromEnv\space
        non-operational as \string\TrackLangEnv\space hasn't been
        defined}%
-    \else
+    }%
+    {%
 %    \end{macrocode}
 % Parse and track.
 %    \begin{macrocode}
@@ -3486,7 +3589,7 @@
        \let\TrackLangEnvTerritory\@TrackLangEnvTerritory
        \let\TrackLangEnvCodeSet\@TrackLangEnvCodeSet
        \let\TrackLangEnvModifier\@TrackLangEnvModifier
-    \fi
+    }%
   \fi
 }
 %    \end{macrocode}
@@ -3702,9 +3805,10 @@
 % provide a definition that ignores its argument if not already
 % defined.
 %    \begin{macrocode}
-\ifx\@tracklang at declareoption\undefined
+\@tracklang at ifundef@N \@tracklang at declareoption
+{%
   \def\@tracklang at declareoption#1{}
-\fi
+}{}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -8779,7 +8883,8 @@
 %If \cs{ProvidesFile} exists, we can use that, otherwise we need to
 %provide a generic version.
 %    \begin{macrocode}
-\ifx\ProvidesFile\undefined
+\@tracklang at ifundef@N \ProvidesFile
+{%
 %    \end{macrocode}
 %Generic code uses simplistic method to grab the version
 %details in the final optional argument. Since we're not using
@@ -8786,11 +8891,12 @@
 %\LaTeX\ we don't have commands like \cs{@ifnextchar} available.
 %    \begin{macrocode}
   \long\def\TrackLangProvidesResource#1#2{%
-    \ifx\TrackLangRequireDialectPrefix\undefined
+    \@tracklang at ifundef@N \TrackLangRequireDialectPrefix
+    {%
       \@tracklang at err{Resources files using 
         \string\TrackLangProvidesResource\space
         must be loaded with \string\TrackLangRequireDialect}%
-    \fi
+    }{}%
     \ifx#2[\relax
       \def\@tracklang at next{%
         \@tracklang at providesresource{\TrackLangRequireDialectPrefix-#1.ldf}#2%
@@ -8815,20 +8921,22 @@
        \message{^^JFile: #1 #2^^J}%
      }%
   }
-\else
+}%
+{%
 %    \end{macrocode}
 %\LaTeX\ code can simply use \cs{ProvidesFile}.
 %    \begin{macrocode}
   \def\TrackLangProvidesResource#1{%
-    \ifx\TrackLangRequireDialectPrefix\undefined
+    \@tracklang at ifundef@N \TrackLangRequireDialectPrefix
+    {%
       \@tracklang at err{Resources files using 
         \string\TrackLangProvidesResource\space
         must be loaded with \string\TrackLangRequireDialect}%
-    \fi
+    }{}%
     \expandafter\ProvidesFile\expandafter
      {\TrackLangRequireDialectPrefix-#1.ldf}%
   }
-\fi
+}
 %    \end{macrocode}
 %\end{macro}
 %
@@ -9573,7 +9681,7 @@
 %    \end{macrocode}
 % Check if this file has already been loaded:
 %    \begin{macrocode}
-\ifx\TrackLangRegionMap\undefined
+\ifx\TrackLangRegionMap\@tracklang at undefined
 \else
   \@tracklang at regions@restore at at
   \expandafter\endinput
@@ -9582,7 +9690,7 @@
 % Version info.
 %    \begin{macrocode}
 \expandafter\def\csname ver at tracklang-region-codes.tex\endcsname{%
- 2025/03/04 v1.6.5 (NLCT) Track Languages Regions}%
+ 2025/03/11 v1.6.6 (NLCT) Track Languages Regions}%
 %    \end{macrocode}
 %
 %\begin{macro}{\TrackLangRegionMap}
@@ -9975,7 +10083,7 @@
 %\changes{1.3}{2016-10-07}{added tracklang-scripts.sty}
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang-scripts}[2025/03/04 v1.6.5 (NLCT) Track
+\ProvidesPackage{tracklang-scripts}[2025/03/11 v1.6.6 (NLCT) Track
 Language Scripts (LaTeX)]
 \RequirePackage{tracklang}
 \input{tracklang-scripts}
@@ -10008,7 +10116,7 @@
 %    \end{macrocode}
 % Check if this file has already been loaded:
 %    \begin{macrocode}
-\ifx\TrackLangScriptMap\undefined
+\ifx\TrackLangScriptMap\@tracklang at undefined
 \else
   \@tracklang at scripts@restore at at
   \expandafter\endinput
@@ -10017,7 +10125,7 @@
 % Version info.
 %    \begin{macrocode}
 \expandafter\def\csname ver at tracklang-scripts.tex\endcsname{%
- 2025/03/04 v1.6.5 (NLCT) Track Languages Scripts (Generic)}%
+ 2025/03/11 v1.6.6 (NLCT) Track Languages Scripts (Generic)}%
 %    \end{macrocode}
 %
 %\begin{macro}{\TrackLangScriptMap}

Modified: trunk/Master/texmf-dist/source/latex/tracklang/tracklang.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/tracklang/tracklang.ins	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/source/latex/tracklang/tracklang.ins	2025-03-11 20:10:07 UTC (rev 74576)
@@ -1,4 +1,4 @@
-% tracklang.ins generated using makedtx version 1.2 2025/3/4 9:49
+% tracklang.ins generated using makedtx version 1.2 2025/3/11 10:28
 \input docstrip
 
 \preamble

Modified: trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-region-codes.tex	2025-03-11 20:10:07 UTC (rev 74576)
@@ -46,13 +46,13 @@
   }%
  \catcode`\@=11\relax
 \fi
-\ifx\TrackLangRegionMap\undefined
+\ifx\TrackLangRegionMap\@tracklang at undefined
 \else
   \@tracklang at regions@restore at at
   \expandafter\endinput
 \fi
 \expandafter\def\csname ver at tracklang-region-codes.tex\endcsname{%
- 2025/03/04 v1.6.5 (NLCT) Track Languages Regions}%
+ 2025/03/11 v1.6.6 (NLCT) Track Languages Regions}%
 \def\TrackLangRegionMap#1#2#3{%
   \@tracklang at enamedef{@tracklang at region@numtoalphaii@#1}{#2}%
   \@tracklang at enamedef{@tracklang at region@numtoalphaiii@#1}{#3}%

Modified: trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/tex/generic/tracklang/tracklang-scripts.tex	2025-03-11 20:10:07 UTC (rev 74576)
@@ -46,13 +46,13 @@
   }%
  \catcode`\@=11\relax
 \fi
-\ifx\TrackLangScriptMap\undefined
+\ifx\TrackLangScriptMap\@tracklang at undefined
 \else
   \@tracklang at scripts@restore at at
   \expandafter\endinput
 \fi
 \expandafter\def\csname ver at tracklang-scripts.tex\endcsname{%
- 2025/03/04 v1.6.5 (NLCT) Track Languages Scripts (Generic)}%
+ 2025/03/11 v1.6.6 (NLCT) Track Languages Scripts (Generic)}%
 \def\TrackLangScriptMap#1#2#3#4#5{%
   \@tracklang at enamedef{TrackLangScript#1}{#1}%
   \@tracklang at enamedef{@tracklang at script@numtoalpha@#2}{#1}%

Modified: trunk/Master/texmf-dist/tex/generic/tracklang/tracklang.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tracklang/tracklang.tex	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/tex/generic/tracklang/tracklang.tex	2025-03-11 20:10:07 UTC (rev 74576)
@@ -46,13 +46,13 @@
   }%
  \catcode`\@=11\relax
 \fi
-\ifx\@tracklang at languages\undefined
+\ifx\@tracklang at languages \@tracklang at undefined
 \else
   \@tracklang at restore@at
   \expandafter\endinput
 \fi
 \expandafter\def\csname ver at tracklang.tex\endcsname{%
- 2025/03/04 v1.6.5 (NLCT) Track Languages Generic Code}
+ 2025/03/11 v1.6.6 (NLCT) Track Languages Generic Code}
 \long\def\@tracklang at ifundef#1#2#3{%
   \ifcsname#1\endcsname
     \expandafter\ifx\csname #1\endcsname\relax
@@ -68,7 +68,7 @@
     \fi
   \fi
 }
-\ifx\ifcsname\undefined
+\ifx\ifcsname\@tracklang at undefined
   \long\def\@tracklang at ifundef#1#2#3{%
     \expandafter\ifx\csname #1\endcsname\relax
       #2%
@@ -76,20 +76,51 @@
       #3%
     \fi
   }
+  \long\def\@tracklang at ifundef@N#1#2#3{%
+    \ifx#1\@tracklang at undefined
+      #2%
+    \else
+      \ifx#1\relax
+       #2%
+      \else
+       #3%
+      \fi
+    \fi
+  }
 \fi
-\ifx\@@input\undefined
+\@tracklang at ifundef{@tracklang at ifundef@N}%
+ {%
+  \long\def\@tracklang at ifundef@N#1#2#3{%
+   \ifdefined#1\relax
+    \ifx#1\relax
+     #2%
+    \else
+     #3%
+    \fi
+   \else
+    #2%
+   \fi
+  }
+ }%
+ {}%
+\@tracklang at ifundef@N \@@input
+{
   \let\@tracklang at input\input
   \def\@tracklang at inputfile#1{\input #1\relax}
-\else
+}
+{
   \let\@tracklang at input\@@input
   \def\@tracklang at inputfile#1{\input{#1}}
-\fi
-\ifx\@nnil\undefined
+}
+\@tracklang at ifundef@N \@nnil
+{
   \def\@tracklang at nnil{\@nil}
-\else
+}
+{
   \let\@tracklang at nnil\@nnil
-\fi
-\ifx\@for\undefined
+}
+\@tracklang at ifundef@N \@for
+{
   \long\def\@tracklang at for#1:=#2\do#3{%
     \expandafter\def\expandafter\@fortmp\expandafter{#2}%
     \ifx\@fortmp\empty
@@ -123,14 +154,17 @@
     #2\@@ #3{#4}%
   }
   \long\def\@tracklang at fornoop#1\@@ #2#3{}
-\else
+}
+{
   \let\@tracklang at for\@for
-\fi
-\ifx\@namedef\undefined
+}
+\@tracklang at ifundef@N \@namedef
+{
   \def\@tracklang at namedef#1{\expandafter\def\csname#1\endcsname}
-\else
+}
+{
   \let\@tracklang at namedef\@namedef
-\fi
+}
 \def\@tracklang at enamedef#1{\expandafter\edef\csname#1\endcsname}
 \def\@tracklang at nameuse#1{%
   \@tracklang at ifundef{#1}{}{\csname#1\endcsname}%
@@ -145,26 +179,31 @@
     \fi
   }%
 }
-\ifx\@onelevel at sanitize\undefined
+\@tracklang at ifundef@N \@onelevel at sanitize
+{
   \def\@tracklang at sanitize#1{%
     \edef#1{\expandafter\@tracklang at strip@prefix\meaning#1}%
   }
   \def\@tracklang at strip@prefix#1>{}
-\else
+}
+{
   \let\@tracklang at sanitize\@onelevel at sanitize
-\fi
+}
 \long\def\@tracklang at firstoftwo#1#2{#1}
 \long\def\@tracklang at secondoftwo#1#2{#2}
-\ifx\PackageError\undefined
+\@tracklang at ifundef@N \PackageError
+{
   \def\@tracklang at err#1#2{%
     \errhelp{#2}%
     \errmessage{tracklang: #1}}
-\else
+}
+{
   \def\@tracklang at err#1#2{\PackageError{tracklang}{#1}{#2}}
-\fi
+}
 \newif\ifTrackLangShowWarnings
 \TrackLangShowWarningstrue
-\ifx\PackageWarning\undefined
+\@tracklang at ifundef@N \PackageWarning
+{
   \def\@tracklang at pkgwarn#1#2{%
     \ifTrackLangShowWarnings
       {%
@@ -174,17 +213,19 @@
       }%
     \fi
   }
-\else
+}
+{
   \def\@tracklang at pkgwarn#1#2{%
     \ifTrackLangShowWarnings
       \PackageWarning{#1}{#2}%
     \fi
   }
-\fi
+}
 \def\@tracklang at warn#1{\@tracklang at pkgwarn{tracklang}{#1}}%
 \newif\ifTrackLangShowInfo
 \TrackLangShowInfotrue
-\ifx\PackageInfo\undefined
+\@tracklang at ifundef@N \PackageInfo
+{
   \def\@tracklang at info#1{%
    \ifTrackLangShowInfo
      {%
@@ -194,13 +235,14 @@
      }%
    \fi
   }%
-\else
+}
+{
   \def\@tracklang at info#1{%
     \ifTrackLangShowInfo
       \PackageInfo{tracklang}{#1}%
     \fi
   }%
-\fi
+}
 \newif\ifTrackLangShowVerbose
 \TrackLangShowVerbosefalse
 \def\@tracklang at verbose#1{%
@@ -208,7 +250,8 @@
     \@tracklang at info{#1}%
   \fi
 }%
-\ifx\IfFileExists\undefined
+\@tracklang at ifundef@N \IfFileExists
+{
  \long\def\@tracklang at IfFileExists#1#2#3{%
    \openin0=#1 %
    \ifeof0\relax
@@ -220,15 +263,17 @@
    \fi
    \@tracklang at tmp
  }
-
-\else
+}
+{
   \let\@tracklang at IfFileExists\IfFileExists
-\fi
-\ifx\inputencodingname\undefined
+}
+\@tracklang at ifundef@N \inputencodingname
+{
   \def\TrackLangEncodingName{utf8}
-\else
+}
+{
   \def\TrackLangEncodingName{\inputencodingname}
-\fi
+}
 \def\@tracklang at checklocale{%
   \ifx\TrackLangEnv\empty
   \else
@@ -251,7 +296,8 @@
 }
 \def\@tracklang at locale@posix{POSIX}
 \def\@tracklang at locale@c{C}
-\ifx\directlua\undefined
+\@tracklang at ifundef@N \directlua
+{
   \def\@tracklang at tryshellescape#1{%
    \def\TrackLangQueryEnv{%
      \@tracklang at warn{\string\TrackLangQueryEnv\space
@@ -264,8 +310,10 @@
      \def\TrackLangEnv{}%
    }%
   }%
-   \ifx\pdfshellescape\undefined
-     \ifx\shellescape\undefined
+   \@tracklang at ifundef@N \pdfshellescape
+   {%
+     \@tracklang at ifundef@N \shellescape
+     {%
         \def\@tracklang at tryshellescape#1{%
           \def\TrackLangQueryEnv{%
             \@tracklang at warn{\string\TrackLangQueryEnv\space
@@ -282,19 +330,23 @@
             \def\TrackLangEnv{}%
           }%
         }%
-     \else
-       \ifx\shellescape\relax
-       \else
+     }%
+     {%
+       \@tracklang at ifundef@N \shellescape
+       {}%
+       {%
          \ifnum\shellescape=0\relax
          \else
            \def\@tracklang at tryshellescape#1{#1}%
          \fi
-       \fi
-     \fi
-   \else
+       }%
+     }%
+   }%
+   {%
      \ifx\pdfshellescape\relax
-       \ifx\shellescape\undefined
-       \else
+       \@tracklang at ifundef@N \shellescape
+       {}%
+       {%
          \ifx\shellescape\relax
          \else
            \ifnum\shellescape=0\relax
@@ -302,7 +354,7 @@
              \def\@tracklang at tryshellescape#1{#1}%
            \fi
          \fi
-       \fi
+       }%
      \else
        \ifnum\pdfshellescape=0\relax
        \else
@@ -309,7 +361,7 @@
          \def\@tracklang at tryshellescape#1{#1}%
        \fi
      \fi
-   \fi
+   }%
    \@tracklang at tryshellescape
    {%
      \def\TrackLangQueryEnv{%
@@ -325,10 +377,12 @@
            \@tracklang at input|"kpsewhich --var-value LANG" }}\@tracklang at x
          \@tracklang at checklocale
          \ifx\TrackLangEnv\empty
-           \ifx\TeXOSQueryLocale\undefined
+           \@tracklang at ifundef@N \TeXOSQueryLocale
+           {%
              \@tracklang at warn{Locale environment variables
               unavailable (tried LC\string_ALL and LANG)}%
-           \else
+           }%
+           {%
              \@tracklang at info{Using texosquery to find locale}%
              \TeXOSQueryLocale\TrackLangEnv
              \ifx\TrackLangEnv\empty
@@ -336,7 +390,7 @@
                (tried querying LC\string_ALL and LANG variables and
                tried using texosquery)}%
              \fi
-           \fi
+           }%
          \fi
        \fi
      }%
@@ -359,10 +413,12 @@
              \@tracklang at input|"kpsewhich --var-value LANG"}}\@tracklang at x
            \@tracklang at checklocale
            \ifx\TrackLangEnv\empty
-             \ifx\TeXOSQueryLocale\undefined
-             \@tracklang at warn{Locale environment variables unavailable
-              (tried LC\string_ALL, #1 and LANG)}%
-             \else
+             \@tracklang at ifundef@N \TeXOSQueryLocale
+             {%
+              \@tracklang at warn{Locale environment variables unavailable
+               (tried LC\string_ALL, #1 and LANG)}%
+             }%
+             {%
                \@tracklang at info{Using texosquery to find locale}%
                \TeXOSQueryLocale\TrackLangEnv
                \ifx\TrackLangEnv\empty
@@ -370,13 +426,14 @@
                  (tried querying LC\string_ALL, #1 and LANG variables and
                  tried using texosquery)}%
                \fi
-             \fi
+             }%
            \fi
          \fi
        \fi
      }%
   }%
-\else
+}
+{
    \def\TrackLangQueryEnv{%
      \edef\TrackLangEnv{\directlua{
        l = os.getenv("LC_ALL")
@@ -394,11 +451,13 @@
        end
        tex.print(l)}}%
        \ifx\TrackLangEnv\empty
-         \ifx\TeXOSQueryLocale\undefined
-         \@tracklang at warn{Locale can't be found through Lua
-          (tried querying LC\string_ALL and LANG variables and
-           os.setlocale(nil))}%
-         \else
+         \@tracklang at ifundef@N \TeXOSQueryLocale
+         {%
+          \@tracklang at warn{Locale can't be found through Lua
+           (tried querying LC\string_ALL and LANG variables and
+            os.setlocale(nil))}%
+         }%
+         {%
            \TeXOSQueryLocale\TrackLangEnv
            \ifx\TrackLangEnv\empty
              \@tracklang at warn{Locale can't be found through Lua
@@ -405,9 +464,9 @@
              (tried querying LC\string_ALL and LANG variables and
              os.setlocale(nil) and tried using texosquery)}%
            \fi
-         \fi
+         }%
        \fi
-   }
+   }%
    \def\TrackLangQueryOtherEnv#1{%
      \edef\TrackLangEnv{\directlua{
        l = os.getenv("LC_ALL")
@@ -429,11 +488,13 @@
        end
        tex.print(l}}%
        \ifx\TrackLangEnv\empty
-         \ifx\TeXOSQueryLocale\undefined
-         \@tracklang at warn{Locale can't be found through Lua
-          (tried querying LC\string_ALL, #1 and LANG variables and
-           os.setlocale(nil))}%
-         \else
+         \@tracklang at ifundef@N \TeXOSQueryLocale
+         {%
+          \@tracklang at warn{Locale can't be found through Lua
+           (tried querying LC\string_ALL, #1 and LANG variables and
+            os.setlocale(nil))}%
+         }%
+         {%
            \TeXOSQueryLocale\TrackLangEnv
            \ifx\TrackLangEnv\empty
              \@tracklang at warn{Locale can't be found through Lua
@@ -440,12 +501,13 @@
              (tried querying LC\string_ALL, #1 and LANG variables and
              os.setlocale(nil) and tried using texosquery)}%
            \fi
-         \fi
+         }%
        \fi
    }
-\fi
+}
 \def\TrackLangParseFromEnv{%
-  \ifx\TrackLangEnv\undefined
+  \@tracklang at ifundef@N\TrackLangEnv
+  {%
      \@tracklang at warn{\string\TrackLangParseFromEnv\space
      non-operational as \string\TrackLangEnv\space hasn't been
      defined}%
@@ -453,7 +515,8 @@
      \def\TrackLangEnvTerritory{}%
      \def\TrackLangEnvCodeSet{}%
      \def\TrackLangEnvModifier{}%
-  \else
+  }%
+  {%
     \ifx\TrackLangEnv\empty
       \@tracklang at warn{\string\TrackLangParseFromEnv\space
       non-operational as \string\TrackLangEnv\space is empty}%
@@ -468,7 +531,7 @@
       \let\TrackLangEnvCodeSet\@TrackLangEnvCodeSet
       \let\TrackLangEnvModifier\@TrackLangEnvModifier
     \fi
-  \fi
+  }%
 }
 \def\@tracklang at parse@locale#1{%
   \def\@TrackLangEnvLang{}%
@@ -607,6 +670,7 @@
   \fi
 }
 \def\AddTrackedDialect#1#2{%
+ \@tracklang at info{Tracking dialect `#1' (language `#2')}%
  \@tracklang at add{#1}{\@tracklang at dialects}%
  \@tracklang at add{#2}{\@tracklang at languages}%
  \@tracklang at enamedef{@tracklang at fromdialect@#1}{#2}%
@@ -1368,9 +1432,10 @@
           \relax\relax\relax
           \@end at tracklang@hasthirdchar
        {%
-         \ifx\TrackLangIfKnownNumericRegion\undefined
+         \@tracklang at ifundef@N \TrackLangIfKnownNumericRegion
+         {%
            \@tracklang at inputfile{tracklang-region-codes.tex}%
-         \fi
+         }{}%
          \TrackLangIfKnownNumericRegion{\@tracklang at split@pre}%
          {%
            \edef\@TrackLangEnvTerritory{%
@@ -1396,10 +1461,11 @@
 }%
 \def\@tracklang at extra@region at filelist{}
 \def\TrackLangAddExtraRegionFile#1{%
- \ifx\TrackLangRegionMap\undefined
- \else
+ \@tracklang at ifundef@N \TrackLangRegionMap
+ {}%
+ {%
     \@tracklang at inputfile{#1}%
- \fi
+ }%
  \@tracklang at add{#1}{\@tracklang at extra@region at filelist}%
 }
 \def\@tracklang at input@extra at region@files{%
@@ -1410,10 +1476,11 @@
 }
 \def\@tracklang at extra@script at filelist{}
 \def\TrackLangAddExtraScriptFile#1{%
- \ifx\TrackLangScriptMap\undefined
- \else
+ \@tracklang at ifundef@N \TrackLangScriptMap
+ {}%
+ {%
     \@tracklang at inputfile{#1}%
- \fi
+ }%
  \@tracklang at add{#1}{\@tracklang at extra@script at filelist}%
 }
 \def\@tracklang at input@extra at script@files{%
@@ -1493,24 +1560,27 @@
  \def\TrackLangEnvTerritory{}%
  \def\TrackLangEnvCodeSet{}%
  \def\TrackLangEnvModifier{}%
-  \ifx\TrackLangEnv\undefined
+  \@tracklang at ifundef@N \TrackLangEnv
+  {%
     \TrackLangQueryEnv
-  \fi
+  }{}%
   \ifx\TrackLangEnv\empty
      \@tracklang at warn{\string\TrackLangFromEnv\space
      non-operational as \string\TrackLangEnv\space is empty}%
   \else
-    \ifx\TrackLangEnv\undefined
+    \@tracklang at ifundef@N \TrackLangEnv
+    {%
        \@tracklang at warn{\string\TrackLangFromEnv\space
        non-operational as \string\TrackLangEnv\space hasn't been
        defined}%
-    \else
+    }%
+    {%
        \@tracklang at parse@track at locale{\TrackLangEnv}%
        \let\TrackLangEnvLang\@TrackLangEnvLang
        \let\TrackLangEnvTerritory\@TrackLangEnvTerritory
        \let\TrackLangEnvCodeSet\@TrackLangEnvCodeSet
        \let\TrackLangEnvModifier\@TrackLangEnvModifier
-    \fi
+    }%
   \fi
 }
 \def\TrackLocale#1{%
@@ -1620,9 +1690,10 @@
     \SetTrackedDialectAdditional{\@tracklang at dialect}{\@TrackLangEnvAdditional}%
   \fi
 }
-\ifx\@tracklang at declareoption\undefined
+\@tracklang at ifundef@N \@tracklang at declareoption
+{%
   \def\@tracklang at declareoption#1{}
-\fi
+}{}
 \def\TrackLangProvidePredefinedLanguage#1{%
   \@tracklang at namedef{@tracklang at add@#1}{%
     \AddTrackedLanguage{#1}%
@@ -3788,13 +3859,15 @@
    }%
    {#5}% unknown dialect
 }
-\ifx\ProvidesFile\undefined
+\@tracklang at ifundef@N \ProvidesFile
+{%
   \long\def\TrackLangProvidesResource#1#2{%
-    \ifx\TrackLangRequireDialectPrefix\undefined
+    \@tracklang at ifundef@N \TrackLangRequireDialectPrefix
+    {%
       \@tracklang at err{Resources files using
         \string\TrackLangProvidesResource\space
         must be loaded with \string\TrackLangRequireDialect}%
-    \fi
+    }{}%
     \ifx#2[\relax
       \def\@tracklang at next{%
         \@tracklang at providesresource{\TrackLangRequireDialectPrefix-#1.ldf}#2%
@@ -3819,17 +3892,19 @@
        \message{^^JFile: #1 #2^^J}%
      }%
   }
-\else
+}%
+{%
   \def\TrackLangProvidesResource#1{%
-    \ifx\TrackLangRequireDialectPrefix\undefined
+    \@tracklang at ifundef@N \TrackLangRequireDialectPrefix
+    {%
       \@tracklang at err{Resources files using
         \string\TrackLangProvidesResource\space
         must be loaded with \string\TrackLangRequireDialect}%
-    \fi
+    }{}%
     \expandafter\ProvidesFile\expandafter
      {\TrackLangRequireDialectPrefix-#1.ldf}%
   }
-\fi
+}
 \def\TrackLangAddToHook{\noop at TrackLangAddToHook}
 \def\noop at TrackLangAddToHook#1#2{%
   \@tracklang at err{\string\TrackLangAddToHook\space

Modified: trunk/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/tex/latex/tracklang/tracklang-scripts.sty	2025-03-11 20:10:07 UTC (rev 74576)
@@ -39,7 +39,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang-scripts}[2025/03/04 v1.6.5 (NLCT) Track
+\ProvidesPackage{tracklang-scripts}[2025/03/11 v1.6.6 (NLCT) Track
 Language Scripts (LaTeX)]
 \RequirePackage{tracklang}
 \input{tracklang-scripts}

Modified: trunk/Master/texmf-dist/tex/latex/tracklang/tracklang.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tracklang/tracklang.sty	2025-03-11 20:09:53 UTC (rev 74575)
+++ trunk/Master/texmf-dist/tex/latex/tracklang/tracklang.sty	2025-03-11 20:10:07 UTC (rev 74576)
@@ -39,7 +39,7 @@
 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
 %%   Right brace   \}     Tilde         \~}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tracklang}[2025/03/04 v1.6.5 (NLCT) Track Languages]
+\ProvidesPackage{tracklang}[2025/03/11 v1.6.6 (NLCT) Track Languages]
 \providecommand*{\@tracklang at declareoption}[1]{%
   \DeclareOption{#1}{\TrackPredefinedDialect{#1}}%
 }
@@ -51,199 +51,218 @@
 \DeclareOption{nowarn}{\TrackLangShowWarningsfalse}
 \ProcessOptions
 \let\@tracklang at declareoption\@gobble
-\csname @tracklang at prelangpkgcheck@hook\endcsname
-\ifx\@tracklang at languages\@empty
-  \ifx\LocaleForEach\undefined
-    \@tracklang at verbose{\string\LocaleForEach\space not defined
-     (checking for other packages)}%
-    \@ifundefined{bbl at loaded}%
-    {%
-      \@ifundefined{trans at languages}
-      {%
-         \@ifpackageloaded{ngerman}%
-         {%
+\ExplSyntaxOn
+\cs_if_exist_use:N \@tracklang at prelangpkgcheck@hook
+\cs_new:Nn \__tracklang_localeforeach:
+ {
+  \cs_if_exist:NT \LocaleForEach
+   {
+     \LocaleForEach
+      {
+        \@tracklang at verbose{Checking babel locale `##1'}%
+        \cs_if_exist_use:cF { @tracklang at add@##1 }
+         {
+           \getlocaleproperty \tracklang at propresult
+            {##1} {identification/tag.bcp47}
+           \exp_args:NV \TrackLanguageTag \tracklang at propresult
+           \tl_if_eq:NnF \TrackLangLastTrackedDialect { ##1 }
+            {
+             \@tracklang at info
+              {Adding ~ mapping ~ `\TrackLangLastTrackedDialect' ~ -> ~ `##1'}
+             \exp_args:NV \SetTrackedDialectLabelMap
+               \TrackLangLastTrackedDialect
+               { ##1 }
+            }
+         }
+      }
+   }
+ }
+\cs_new:Nn \__tracklang_bbl_loaded:
+ {
+   \clist_map_inline:Nn \bbl at loaded
+    {
+      \cs_if_exist:cTF
+        { @tracklang at add@ ##1 }
+       {
+         \tl_if_eq:nnTF { ##1 } { nil }
+          {
+            \tl_if_empty:NT \@tracklang at languages
+             {
+               \@tracklang at add@nil
+             }
+          }
+          {
+            \use:c { @tracklang at add@ ##1 }
+            \tl_if_eq:nnT { ##1 } { serbian }
+             {
+               \SetTrackedDialectScript{serbian}{Latn}
+             }
+          }
+       }
+       {
+         \@tracklang at pkgwarn
+           {tracklang}
+           {Adding ~ unknown ~ babel ~ language ~ `##1'}
+          \AddTrackedLanguage { ##1 }
+       }
+    }
+ }
+\cs_new:Nn \__tracklang_polyglossia:
+ {
+   \tl_if_exist:NTF \xpg at bcp@loaded
+    {
+      \clist_map_inline:Nn \xpg at bcp@loaded
+       {
+         \@tracklang at info{Found ~ polyglossia ~ BCP ~ `##1'}%
+         \TrackLanguageTag { ##1 }
+       }
+    }
+    {
+     \tl_if_exist:NTF \xpg at loaded
+       {
+        \clist_map_inline:Nn \xpg at loaded
+         {
+          \cs_if_exist_use:cF {@tracklang at add@ ##1 }
+           {
+             \@tracklang at pkgwarn
+               {tracklang}
+               {Adding ~ unknown ~ polyglossia ~ language ~ `##1'}
+             \AddTrackedLanguage { ##1 }
+           }
+        }
+     }
+     {
+       \PackageInfo {tracklang}
+        {
+          polyglossia ~ loaded ~ but ~
+          \tl_to_str:N \xpg at loaded\c_space_tl ~ not ~ defined. ~
+           Will ~ attempt ~ to ~ track ~ known ~ languages.
+        }
+       \clist_map:Nn \@tracklang at declaredoptions
+        {
+          \tl_if_exist:cT { ##1 @loaded }
+          { \cs_use:c { @tracklang at add@ ##1} }
+        }
+      }
+    }
+   \tl_if_exist:NT \BCPdata
+    {
+      \exp_args:Ne \TrackLanguageTag { \BCPdata {tag} }
+    }
+ }
+\cs_new:Nn \__tracklang_translator:
+ {
+    \cs_set_eq:NN \@tracklang at add@Acadian\@tracklang at add@acadian
+    \cs_set_eq:NN \@tracklang at add@French\@tracklang at add@french
+    \cs_set_eq:NN \@tracklang at add@Afrikaans\@tracklang at add@afrikaans
+    \cs_set_eq:NN \@tracklang at add@Dutch\@tracklang at add@dutch
+    \cs_set_eq:NN \@tracklang at add@AmericanEnglish\@tracklang at add@american
+    \cs_set_eq:NN \@tracklang at add@Austrian\@tracklang at add@austrian
+    \cs_set_eq:cN{@tracklang at add@Austrian1997}\@tracklang at add@naustrian
+    \cs_set_eq:NN \@tracklang at add@Bahasa\@tracklang at add@bahasa
+    \cs_set_eq:NN \@tracklang at add@Basque\@tracklang at add@basque
+    \cs_set_eq:NN \@tracklang at add@Brazilian\@tracklang at add@brazil
+    \cs_set_eq:NN \@tracklang at add@Portuguese\@tracklang at add@portuguese
+    \cs_set_eq:NN \@tracklang at add@Breton\@tracklang at add@breton
+    \cs_set_eq:NN \@tracklang at add@BritishEnglish\@tracklang at add@british
+    \cs_set_eq:NN \@tracklang at add@Bulgarian\@tracklang at add@bulgarian
+    \cs_set_eq:NN \@tracklang at add@Canadian\@tracklang at add@canadian
+    \cs_set_eq:NN \@tracklang at add@Canadien\@tracklang at add@canadien
+    \cs_set_eq:NN \@tracklang at add@Catalan\@tracklang at add@catalan
+    \cs_set_eq:NN \@tracklang at add@Croatian\@tracklang at add@croatian
+    \cs_set_eq:NN \@tracklang at add@Czech\@tracklang at add@czech
+    \cs_set_eq:NN \@tracklang at add@Danish\@tracklang at add@danish
+    \cs_set_eq:NN \@tracklang at add@Dutch\@tracklang at add@dutch
+    \cs_set_eq:NN \@tracklang at add@English\@tracklang at add@english
+    \cs_set_eq:NN \@tracklang at add@Esperanto\@tracklang at add@esperanto
+    \cs_set_eq:NN \@tracklang at add@Estonian\@tracklang at add@estonian
+    \cs_set_eq:NN \@tracklang at add@Finnish\@tracklang at add@finnish
+    \cs_set_eq:NN \@tracklang at add@French\@tracklang at add@french
+    \cs_set_eq:NN \@tracklang at add@Galician\@tracklang at add@galician
+    \cs_set_eq:NN \@tracklang at add@German\@tracklang at add@german
+    \cs_set_eq:cN{@tracklang at add@German1997}\@tracklang at add@ngerman
+    \cs_set_eq:NN \@tracklang at add@Greek\@tracklang at add@greek
+    \cs_set_eq:NN \@tracklang at add@Polutoniko\@tracklang at add@polutoniko
+    \cs_set_eq:NN \@tracklang at add@Hebrew\@tracklang at add@hebrew
+    \cs_set_eq:NN \@tracklang at add@Hungarian\@tracklang at add@hungarian
+    \cs_set_eq:NN \@tracklang at add@Icelandic\@tracklang at add@icelandic
+    \cs_set_eq:NN \@tracklang at add@Irish\@tracklang at add@irish
+    \cs_set_eq:NN \@tracklang at add@Italian\@tracklang at add@italian
+    \cs_set_eq:NN \@tracklang at add@Latin\@tracklang at add@latin
+    \cs_set_eq:NN \@tracklang at add@LowerSorbian\@tracklang at add@lowersorbian
+    \cs_set_eq:NN \@tracklang at add@Magyar\@tracklang at add@magyar
+    \cs_set_eq:NN \@tracklang at add@Nynorsk\@tracklang at add@nynorsk
+    \cs_set_eq:NN \@tracklang at add@Norsk\@tracklang at add@norsk
+    \cs_set_eq:NN \@tracklang at add@Polish\@tracklang at add@polish
+    \cs_set_eq:NN \@tracklang at add@Portuguese\@tracklang at add@portuguese
+    \cs_set_eq:NN \@tracklang at add@Romanian\@tracklang at add@romanian
+    \cs_set_eq:NN \@tracklang at add@Russian\@tracklang at add@russian
+    \cs_set_eq:NN \@tracklang at add@Scottish\@tracklang at add@scottish
+    \cs_set_eq:NN \@tracklang at add@Serbian\@tracklang at add@serbian
+    \cs_set_eq:NN \@tracklang at add@Slovak\@tracklang at add@slovak
+    \cs_set_eq:NN \@tracklang at add@Slovene\@tracklang at add@slovene
+    \cs_set_eq:NN \@tracklang at add@Spanish\@tracklang at add@spanish
+    \cs_set_eq:NN \@tracklang at add@Swedish\@tracklang at add@swedish
+    \cs_set_eq:NN \@tracklang at add@Turkish\@tracklang at add@turkish
+    \cs_set_eq:NN \@tracklang at add@Ukrainian\@tracklang at add@ukrainian
+    \cs_set_eq:NN \@tracklang at add@UpperSorbian\@tracklang at add@uppersorbian
+    \cs_set_eq:NN \@tracklang at add@Welsh\@tracklang at add@welsh
+    \clist_map_inline:Nn \trans at languages
+     {
+       \cs_if_exist_use:c { @tracklang at add@##1 }
+     }
+ }
+\tl_if_empty:NT \@tracklang at languages
+ {
+   \__tracklang_localeforeach:
+   \tl_if_exist:NTF \bbl at loaded
+    {
+      \__tracklang_bbl_loaded:
+    }
+    {
+      \tl_if_exist:NTF \trans at languages
+       {
+         \__tracklang_translator:
+       }
+       {
+         \@ifpackageloaded{ngerman}
+         {
            \@tracklang at add@ngerman
-         }%
-         {%
-           \@ifpackageloaded{german}%
-           {%
+         }
+         {
+           \@ifpackageloaded{german}
+           {
              \@tracklang at add@german
-           }%
-           {%
+           }
+           {
              \@ifpackageloaded{polyglossia}
-             {%
-               \@ifundefined{xpg at bcp@loaded}%
-               {%
-                 \@ifundefined{xpg at loaded}%
-                 {%
-                   \PackageInfo{tracklang}{polyglossia loaded but
-                   \string\xpg at loaded\space not defined. Will attempt
-                   to track known languages.}%
-                    \@for\this at language:=\@tracklang at declaredoptions\do{%
-                      \@ifundefined{\this at language @loaded}%
-                      {}%
-                      {\@nameuse{@tracklang at add@\this at language}}%
-                    }%
-                   }%
-                   {%
-                    \@for\this at language:=\xpg at loaded\do{%
-                      \@ifundefined{@tracklang at add@\this at language}%
-                      {%
-                         \PackageWarning{tracklang}%
-                           {Adding unknown polyglossia language `\this at language'}%
-                         \AddTrackedLanguage{\this at language}%
-                      }%
-                      {\@nameuse{@tracklang at add@\this at language}}%
-                    }%
-                 }%
-               }%
-               {%
-                 \@for\this at language:=\xpg at bcp@loaded\do{%
-                    \expandafter\TrackLanguageTag{\this at language}%
-                 }%
-               }%
-               \@ifundefined{mainbabelname}{}%
-               {%
-                 \let\@org at tracklang@add at latex\@tracklang at add@latex
-                 \def\@tracklang at add@latex{%
-                   \PackageWarning{tracklang}%
-                     {Can't detect polyglossia main language. It may
-                       not have been set yet}%
-                 }%
-                 \@ifundefined{@tracklang at add@\mainbabelname}%
-                 {%
-                   \PackageWarning{tracklang}%
-                     {Adding unknown polyglossia main babel name `\mainbabelname'}%
-                   \expandafter\AddTrackedLanguage{\mainbabelname}%
-                 }%
-                 {%
-                   \@nameuse{@tracklang at add@\mainbabelname}%
-                 }%
-                 \let\@tracklang at add@latex\@org at tracklang@add at latex
-               }%
-             }%
-             {%
+             {
+               \__tracklang_polyglossia:
+             }
+             {
                \@ifpackageloaded{babel}
-               {%
-                 \PackageInfo{tracklang}{babel loaded but
-                 \string\bbl at loaded\space not defined. Will attempt
-                 to track known languages.}%
-                 \@for\this at language:=\@tracklang at declaredoptions\do{%
-                   \@ifundefined{captions\this at language}%
-                   {}%
-                   {\@nameuse{@tracklang at add@\this at language}}%
-                 }%
-               }%
-               {}%
-             }%
-           }%
-         }%
-      }%
-      {%
-        \let\@tracklang at add@Acadian\@tracklang at add@acadian
-        \let\@tracklang at add@French\@tracklang at add@french
-        \let\@tracklang at add@Afrikaans\@tracklang at add@afrikaans
-        \let\@tracklang at add@Dutch\@tracklang at add@dutch
-        \let\@tracklang at add@AmericanEnglish\@tracklang at add@american
-        \let\@tracklang at add@Austrian\@tracklang at add@austrian
-        \@namedef{@tracklang at add@Austrian1997}{\@tracklang at add@naustrian}%
-        \let\@tracklang at add@Bahasa\@tracklang at add@bahasa
-        \let\@tracklang at add@Basque\@tracklang at add@basque
-        \let\@tracklang at add@Brazilian\@tracklang at add@brazil
-        \let\@tracklang at add@Portuguese\@tracklang at add@portuguese
-        \let\@tracklang at add@Breton\@tracklang at add@breton
-        \let\@tracklang at add@BritishEnglish\@tracklang at add@british
-        \let\@tracklang at add@Bulgarian\@tracklang at add@bulgarian
-        \let\@tracklang at add@Canadian\@tracklang at add@canadian
-        \let\@tracklang at add@Canadien\@tracklang at add@canadien
-        \let\@tracklang at add@Catalan\@tracklang at add@catalan
-        \let\@tracklang at add@Croatian\@tracklang at add@croatian
-        \let\@tracklang at add@Czech\@tracklang at add@czech
-        \let\@tracklang at add@Danish\@tracklang at add@danish
-        \let\@tracklang at add@Dutch\@tracklang at add@dutch
-        \let\@tracklang at add@English\@tracklang at add@english
-        \let\@tracklang at add@Esperanto\@tracklang at add@esperanto
-        \let\@tracklang at add@Estonian\@tracklang at add@estonian
-        \let\@tracklang at add@Finnish\@tracklang at add@finnish
-        \let\@tracklang at add@French\@tracklang at add@french
-        \let\@tracklang at add@Galician\@tracklang at add@galician
-        \let\@tracklang at add@German\@tracklang at add@german
-        \@namedef{@tracklang at add@German1997}{\@tracklang at add@ngerman}%
-        \let\@tracklang at add@Greek\@tracklang at add@greek
-        \let\@tracklang at add@Polutoniko\@tracklang at add@polutoniko
-        \let\@tracklang at add@Hebrew\@tracklang at add@hebrew
-        \let\@tracklang at add@Hungarian\@tracklang at add@hungarian
-        \let\@tracklang at add@Icelandic\@tracklang at add@icelandic
-        \let\@tracklang at add@Irish\@tracklang at add@irish
-        \let\@tracklang at add@Italian\@tracklang at add@italian
-        \let\@tracklang at add@Latin\@tracklang at add@latin
-        \let\@tracklang at add@LowerSorbian\@tracklang at add@lowersorbian
-        \let\@tracklang at add@Magyar\@tracklang at add@magyar
-        \let\@tracklang at add@Nynorsk\@tracklang at add@nynorsk
-        \let\@tracklang at add@Norsk\@tracklang at add@norsk
-        \let\@tracklang at add@Polish\@tracklang at add@polish
-        \let\@tracklang at add@Portuguese\@tracklang at add@portuguese
-        \let\@tracklang at add@Romanian\@tracklang at add@romanian
-        \let\@tracklang at add@Russian\@tracklang at add@russian
-        \let\@tracklang at add@Scottish\@tracklang at add@scottish
-        \let\@tracklang at add@Serbian\@tracklang at add@serbian
-        \let\@tracklang at add@Slovak\@tracklang at add@slovak
-        \let\@tracklang at add@Slovene\@tracklang at add@slovene
-        \let\@tracklang at add@Spanish\@tracklang at add@spanish
-        \let\@tracklang at add@Swedish\@tracklang at add@swedish
-        \let\@tracklang at add@Turkish\@tracklang at add@turkish
-        \let\@tracklang at add@Ukrainian\@tracklang at add@ukrainian
-        \let\@tracklang at add@UpperSorbian\@tracklang at add@uppersorbian
-        \let\@tracklang at add@Welsh\@tracklang at add@welsh
-        \@for\this at language:=\trans at languages\do{%
-           \@ifundefined{@tracklang at add@\this at language}{}%
-           {\@nameuse{@tracklang at add@\this at language}}%
-        }%
-      }%
-    }%
-    {%
-      \@for\this at language:=\bbl at loaded\do{%
-         \@ifundefined{@tracklang at add@\this at language}%
-         {%
-           \PackageWarning{tracklang}%
-             {Adding unknown babel language `\this at language'}%
-           \AddTrackedLanguage{\this at language}%
-         }%
-         {\@nameuse{@tracklang at add@\this at language}}%
-       }%
-       \ifx\captionsserbian\undefined
-       \else
-         \SetTrackedDialectScript{serbian}{Latn}%
-       \fi
-    }%
-  \else
-    \@tracklang at verbose{\string\LocaleForEach\space defined}%
-    \LocaleForEach
-    {%
-       \@tracklang at verbose{Checking babel locale `#1'}%
-       \@tracklang at ifundef{@tracklang at add@#1}%
-       {
-         \getlocaleproperty\tracklang at propresult{#1}{identification/tag.bcp47}%
-         \expandafter\TrackLanguageTag\expandafter{\tracklang at propresult}%
-         \edef\@tracklang at tmp{#1}%
-         \ifx\TrackLangLastTrackedDialect\@tracklang at tmp
-         \else
-           \@tracklang at info
-            {Adding mapping `\TrackLangLastTrackedDialect' -> `#1'}%
-           \expandafter\SetTrackedDialectLabelMap\expandafter
-             {\TrackLangLastTrackedDialect}{#1}%
-         \fi
-       }%
-       {%
-         \@nameuse{@tracklang at add@#1}%
-       }%
-    }%
-    \ifx\@tracklang at languages\@empty
-     \@tracklang at pkgwarn{tracklang}{no dialect information picked up
-with \string\LocaleForEach}%
-    \fi
-  \fi
-\fi
+                {
+                 \PackageInfo {tracklang}
+                  {
+                    babel ~ loaded ~ but ~
+                    \tl_to_str:N \bbl at loaded \c_space_tl ~ not ~
+                    defined. ~ Will ~ attempt ~ to ~ track ~ known ~
+                     languages.
+                  }
+                 \clist_map_inline:Nn \@tracklang at declaredoptions
+                  {
+                    \cs_if_exist:cT {captions #1 }
+                    { \cs_if_exist_use:c { @tracklang at add@ #1 } }
+                  }
+                }
+                { }
+             }
+           }
+         }
+       }
+    }
+ }
+\ExplSyntaxOff
 \endinput
 %%
 %% End of file `tracklang.sty'.



More information about the tex-live-commits mailing list.