<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="360522" data-post-id="360522">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve published updates to <code>ex_cldr</code>, <code>ex_cldr_numbers</code>, <code>ex_cldr_units</code> and <code>ex_cldr_calendars</code> to be compatible with the upcoming Elixir 1.19 and also with OTP 28.</p>
<p>If I’ve done my job properly then you won’t see any differences with one small exception. The updated OTP <a href="https://www.erlang.org/docs/28/upcoming_incompatibilities.html#the-re-module-will-use-a-different-regular-expression-engine" rel="nofollow">re module</a> upon which Elixir’s <code>Regex</code> module is based, is not 100% compatible with previous versions.  For the <code>ex_cldr_*</code> libraries there are two considerations:</p>
<ol>
<li>Assigning compiled regular expressions to a module attribute and then <code>unquoting</code> them into code is not supported. There are quite a few of these in <code>ex_cldr_*</code> and they’ve all been replaced with runtime compilation. I have not assessed if this creates material performance impacts but I suspect not.</li>
<li>The version of Unicode used by the old/current <code>:re</code> module is Unicode 7.0 from 2014 (thanks <a class="mention" href="/u/adamu" rel="nofollow">@adamu</a>). The Bitcoin symbol <code>₿</code> was introduced in Unicode 10 in 2017.  The consequence is that if you’re formatting money with a bitcoin currency symbol, the formatting will be ever so slightly different between OTP 27 and OTP 28.</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="360522" data-batch-url="/posts/batch_likers">
                        7
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/112">Post #111</a>
	                </div>
	            </div>
              <div id="likers-container-360522" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="360522"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #111"></div>
  </section>
</div>
    <div class="postbit" id="377455" data-post-id="377455">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://cldr.unicode.org/downloads/cldr-48" rel="nofollow">CLDR 48</a> was released last week which has triggered new versions of several of the core <a href="https://github.com/elixir-cldr" rel="nofollow">ex_cldr</a> libraries.  Here’s a summary of newsworthy changes:</p>
<h2><a name="p-377455-ex_cldr-1" class="anchor" href="#p-377455-ex_cldr-1" aria-label="Heading link" rel="nofollow"></a>Ex_cldr</h2>
<h3><a name="p-377455-bug-fixes-2" class="anchor" href="#p-377455-bug-fixes-2" aria-label="Heading link" rel="nofollow"></a>Bug Fixes</h3>
<ul>
<li>Parsing language tags with the <code>und</code> (unknown) language now correctly substituted for a known language name if one can be found in <code>Cldr.Locale.likely_subtags/0</code>. For example:</li>
</ul>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex&gt; Cldr.validate_locale("und-TW")
{:ok, TestBackend.Cldr.Locale.new!("zh-Hant-TW")}
</code></pre>
<ul>
<li>
<p>The <code>:gettext_locale_name</code> field of a <code>t:Cldr.LanguageTag.t/0</code> is now set exactly as returned from <code>Gettext.known_locale_names/1</code>. Previously it was being tranformed to a BCP 47 format locale (replacing “_” with “-”). That is no longer the case.</p>
</li>
<li>
<p>Territory containment was previously not considering nested containers and is now doing so. For example, territory “019” (Americas) includes “419” (Latin America and the Carribbean) but “419” was not appearing in the list for “019” since CLDR categorises “grouping” territories separately. This should not affect any consumers, only library writers.</p>
</li>
</ul>
<h3><a name="p-377455-enhancements-3" class="anchor" href="#p-377455-enhancements-3" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>
<p>Update to <a href="https://cldr.unicode.org/downloads/cldr-48" rel="nofollow">CLDR 48</a> data.</p>
</li>
<li>
<p>Add <code>Cldr.Locale.Match.best_match/2</code> and <code>Cldr.Locale.Match.match_distance/3</code> to implement the <a href="https://www.unicode.org/reports/tr35/tr35.html#LanguageMatching" rel="nofollow">CLDR Language Matching algorithm</a>. This is a more formal and testable approach that the previous mechanism. This new function will be use to implement better matching between a known CLDR locale name and supported Gettext locale names. Therefore it is possible that the <code>gettext_locale_name</code> field of a <code>t:Cldr.LanguageTag.t/0</code> may change with this release.</p>
</li>
</ul>
<h2><a name="p-377455-cldr-numbers-4" class="anchor" href="#p-377455-cldr-numbers-4" aria-label="Heading link" rel="nofollow"></a>Cldr Numbers</h2>
<ul>
<li>
<p>Adds <code>Cldr.Number.to_ratio_string/3</code> to format numbers as a rational string. Numbers can also be formatted as an integer and a ratio. Since different rendering systems (browsers, terminals etc) reproduce ratios with differing fidelity, there are options to format the ratio as a precomposed fraction, super- and subscript numerals separated by a <a href="https://www.compart.com/en/unicode/U+2044" rel="nofollow">fraction slash</a> or normal numerals separated by a fraction slash.</p>
</li>
<li>
<p>For number systems other than <code>Latn</code>, the <code>:prefer: :precomposed</code> and <code>prefer: :super_sub</code> options have no effect.</p>
</li>
</ul>
<h3><a name="p-377455-examples-5" class="anchor" href="#p-377455-examples-5" aria-label="Heading link" rel="nofollow"></a>Examples</h3>
<div class="md-table">
<table>
<thead>
<tr>
<th>Function call</th>
<th style="text-align:left">Result</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Cldr.Number.to_ratio_string(0.75)</code></td>
<td style="text-align:left"><code>{:ok, "3⁄4"}</code></td>
</tr>
<tr>
<td><code>Cldr.Number.to_ratio_string(0.75, prefer: :super_sub)</code></td>
<td style="text-align:left"><code>{:ok, "¹⁄₂"}</code></td>
</tr>
<tr>
<td><code>Cldr.Number.to_ratio_string(0.75, prefer: :precomposed)</code>.</td>
<td style="text-align:left"><code>{:ok, "½"}</code></td>
</tr>
<tr>
<td><code>Cldr.Number.to_ratio_string(0.875, prefer: [:precomposed, :super_sub])</code></td>
<td style="text-align:left"><code>{:ok, "⅞"}</code></td>
</tr>
<tr>
<td><code>Cldr.Number.to_ratio_string(3.875, prefer: [:precomposed, :super_sub])</code></td>
<td style="text-align:left"><code>{:ok, "3\u2060⅞"}</code></td>
</tr>
<tr>
<td><code>Cldr.Number.to_ratio_string(0.923, prefer: [:precomposed, :super_sub])</code></td>
<td style="text-align:left"><code>{:ok, "⁹⁄₁₀"}</code></td>
</tr>
</tbody>
</table>
</div><h2><a name="p-377455-cldr-dates-times-6" class="anchor" href="#p-377455-cldr-dates-times-6" aria-label="Heading link" rel="nofollow"></a>Cldr Dates Times</h2>
<h3><a name="p-377455-breaking-changes-7" class="anchor" href="#p-377455-breaking-changes-7" aria-label="Heading link" rel="nofollow"></a>Breaking Changes</h3>
<ul>
<li>Changes in the implemementation of time zone formatting may result in different (but semantically the same) strings for formats that include time zone information. See Bug Fixes below.</li>
</ul>
<h3><a name="p-377455-bug-fixes-8" class="anchor" href="#p-377455-bug-fixes-8" aria-label="Heading link" rel="nofollow"></a>Bug Fixes</h3>
<ul>
<li>
<p>Fixes the generation of time zone formats to be in accordance with <a href="https://www.unicode.org/reports/tr35/dev/tr35-dates.html#Time_Zone_Names" rel="nofollow">CLDR Time Zone Names</a>.  This is particularly true of the following <a href="https://www.unicode.org/reports/tr35/dev/tr35-dates.html#Time_Zone_Format_Terminology" rel="nofollow">time zone formats</a>:</p>
<ul>
<li>Generic non-location format (eg “Pacific Time”, “PT”)</li>
<li>Generic partial location format (eg “Pacific Time (Canada)”)</li>
<li>Generic location format (eg “France Time”, “Adelaide Time”)</li>
<li>Specific non-location format (eg “Pacific Standard Time”, “PST”)</li>
<li>Localized GMT format (eg “GMT+03:30”, “Гринуич+03:30”, “GMT+?”)</li>
</ul>
</li>
<li>
<p>Fixes <code>Cldr.DateTime.Relative.to_string/3</code> when the relative value is an integer of <code>2</code> or <code>-2</code> and the locale provides a specific word for that value. For example, in English there are words for 1 day in advance or behind (“today” and “yesterday”). When specifing 2 days ago, English has no specific word so the result is “2 days ago”. In German the result is “vorgestern”. Similary for the English “in 2 days”, the German result will be “übermorgen”.</p>
</li>
</ul>
<h3><a name="p-377455-enhancements-9" class="anchor" href="#p-377455-enhancements-9" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>
<p>Updates to <a href="https://cldr.unicode.org/downloads/cldr-48" rel="nofollow">CLDR 48</a> data.</p>
</li>
<li>
<p>Adds <code>Cldr.DateTime.Format.gmt_unknown_format/1</code> to return a string representing an unknown GMT offset.</p>
</li>
<li>
<p>Adds <code>style: :at</code> to <code>Cldr.DateTime.Relative.to_string/2</code>. This allows formatting of string like “tomorrow at 3:30 PM”. The default is <code>style: :standard</code>.</p>
</li>
<li>
<p>Significant improvement in support of <a href="https://www.unicode.org/reports/tr35/dev/tr35-dates.html#availableFormats_appendItems" rel="nofollow">date time skeletons</a>. Skeletons are a flexible way to express desired formatting in a locale-indepdendent way.</p>
</li>
<li>
<p>Support is added for the “j”, “J” and “C” <a href="https://www.unicode.org/reports/tr35/dev/tr35-dates.html#Date_Field_Symbol_Table" rel="nofollow">input skeleton symbols</a> which will be substituted with the locales preferred hour formats.  These changes also improve implicit format generation derived from whatever date and time data is passed to the <code>Cldr.Date.to_string/3</code>, <code>Cldr.Time.to_string/3</code>, <code>Cldr.DateTime.to_string/3</code> functions.</p>
</li>
</ul>
<h2><a name="p-377455-cldr-calendars-10" class="anchor" href="#p-377455-cldr-calendars-10" aria-label="Heading link" rel="nofollow"></a>Cldr Calendars</h2>
<p>Primarily bug fixes to the Julian calendar and enhancements to make the Julian calendar configurable (in history, the Julian calendar new year has celebrated at different times of year).</p>
<h3><a name="p-377455-bug-fixes-11" class="anchor" href="#p-377455-bug-fixes-11" aria-label="Heading link" rel="nofollow"></a>Bug Fixes</h3>
<ul>
<li>
<p>Fix <code>year/1</code>, <code>month/2</code> and <code>days_in_month/2</code> for Julian calendars.</p>
</li>
<li>
<p>CLDR 48 fixes the dates for some Japanese eras.</p>
</li>
</ul>
<h3><a name="p-377455-enhancements-12" class="anchor" href="#p-377455-enhancements-12" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>
<p>Use <a href="https://cldr.unicode.org/downloads/cldr-48" rel="nofollow">CLDR 48</a> calendar data. The primary change for calendars is to the era dates for the Japanese calendar.</p>
</li>
<li>
<p>Adds <code>use Cldr.Calendar.Julian, new_year_starting_month_and_day: {month_of_year, day_of_month}</code> to allow modelling Julian calendars that don’t start on January 1st.</p>
</li>
<li>
<p>Adds <code>Cldr.Calendar.convert/2</code> which converts either a date or a date range to another calendar.</p>
</li>
</ul>
<h2><a name="p-377455-cldr-calendars-japanese-13" class="anchor" href="#p-377455-cldr-calendars-japanese-13" aria-label="Heading link" rel="nofollow"></a>Cldr Calendars Japanese</h2>
<h3><a name="p-377455-bug-fixes-14" class="anchor" href="#p-377455-bug-fixes-14" aria-label="Heading link" rel="nofollow"></a>Bug Fixes</h3>
<ul>
<li>
<p>Several era dates were fixed in CLDR 48.</p>
</li>
<li>
<p>The <code>calendar_year/3</code> callback was fixed to return the regnal year (year of the reign of the then-current emperor) as expected by date time formatting.</p>
</li>
</ul>
<h2><a name="p-377455-other-library-updates-15" class="anchor" href="#p-377455-other-library-updates-15" aria-label="Heading link" rel="nofollow"></a>Other library updates</h2>
<p>These are updates primarily to be compatible with CLDR 48</p>
<ul>
<li><a href="https://hex.pm/packages/ex_cldr_units" rel="nofollow">ex_cldr_units</a></li>
<li><a href="https://hex.pm/packages/ex_cldr_routes" rel="nofollow">ex_cldr_routes</a> including REAME update to recognise the original work by <a class="mention" href="/u/bartotten" rel="nofollow">@BartOtten</a></li>
<li><a href="https://hex.pm/packages/ex_cldr_locale_display" rel="nofollow">ex_cldr_locale_display</a></li>
<li><a href="https://hex.pm/packages/ex_cldr_person_names" rel="nofollow">ex_cldr_person_names</a></li>
<li><a href="https://hex.pm/packages/ex_cldr_territories" rel="nofollow">ex_cldr_territories</a></li>
</ul>
<h2><a name="p-377455-evolution-of-ex_cldr-16" class="anchor" href="#p-377455-evolution-of-ex_cldr-16" aria-label="Heading link" rel="nofollow"></a>Evolution of ex_cldr</h2>
<p>Work continues on <code>localize</code> as the “version 3” of <code>ex_cldr</code>. The objective is to get the initial release covering the core, numbers, calendars and date/times  released in the first quarter of 2026.</p>
<p>It’s my intention to continue to maintain <code>ex_cldr</code> and friends for as long as there is usage and bug reports. However I hope this will be the last update for <code>ex_cldr</code> to use a new version of CLDR data so that I can focus more time on <code>localize</code>.  That scenario can be revised if required around March 2026 with CLDR 49.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377455" data-batch-url="/posts/batch_likers">
                        16
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/113">Post #112</a>
	                </div>
	            </div>
              <div id="likers-container-377455" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377455"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #112"></div>
  </section>
</div>
    <div class="postbit" id="377492" data-post-id="377492">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="nathanl" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/nathanl/120/39891_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  nathanl
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>CLDR 48</p>
<blockquote>
<p>Additional units were added for scientific contexts (coulombs, farads, teslas, etc.) and for English systems (fortnights, imperial pints, etc.)</p>
</blockquote>
<p>Looking forward to having my app say “2.6 fortnights ago” <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
<p>Seriously though, thank you Kip for all your work on these libraries. It’s such a service to the rest of us.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377492" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/114">Post #113</a>
	                </div>
	            </div>
              <div id="likers-container-377492" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377492"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #113"></div>
  </section>
</div>
    <div class="postbit" id="377512" data-post-id="377512">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for the kind words <a class="mention" href="/u/nathanl" rel="nofollow">@nathanl</a>. And just for fun using your example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex&gt; fortnights = Cldr.Unit.new!(2.6, :fortnight)
Cldr.Unit.new!(:fortnight, "2.6")

iex&gt; Cldr.Unit.to_string fortnights, format: :ratio
{:ok, "2 3⁄5 fortnights"}
iex&gt; Cldr.Unit.to_string fortnights, format: :ratio, prefer: :precomposed
{:ok, "2 ⅗ fortnights"}
iex&gt; Cldr.Unit.to_string fortnights, format: :ratio, prefer: [:precomposed, :super_sub]
{:ok, "2\u2060⅗ fortnights"}
</code></pre>
<p>(there aren’t any translations for “fortnight” in CLDR 48 that I’m aware of).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377512" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/115">Post #114</a>
	                </div>
	            </div>
              <div id="likers-container-377512" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377512"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #114"></div>
  </section>
</div>
    <div class="postbit" id="377514" data-post-id="377514">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="jswanner" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/jswanner/120/24585_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  jswanner
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Whoa! I’ve totally overlooked the <code>:ratio</code> format, so cool!</p>
<p>Thanks for the update on Cldr, and for all your amazing contributions to the community, Kip.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377514" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/116">Post #115</a>
	                </div>
	            </div>
              <div id="likers-container-377514" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377514"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #115"></div>
  </section>
</div>
    <div class="postbit" id="377515" data-post-id="377515">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Now you mention it, I don’t think it’s documented properly on <code>Cldr.Unit.to_string/2</code>. You can see more about this in <a href="https://hexdocs.pm/ex_cldr_numbers/Cldr.Number.html#to_ratio_string/3" rel="nofollow">Cldr.Number.to_ratio_string/2</a> and <a href="https://hexdocs.pm/ex_cldr_numbers/Cldr.Number.Formatter.Ratio.html" rel="nofollow">Cldr.Number.Formatter.Ratio</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377515" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/117">Post #116</a>
	                </div>
	            </div>
              <div id="likers-container-377515" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377515"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #116"></div>
  </section>
</div>
    <div class="postbit" id="377554" data-post-id="377554">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="BartOtten" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/BartOtten/120/25440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  BartOtten
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Once again an impressive release; keeping the quality high.</p>
<aside class="quote no-group" data-username="kip" data-post="113" data-topic="17350">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/48/1440_2.png" class="avatar"> kip:</div>
<blockquote>
<p>Work continues on <code>localize</code> as the “version 3” of <code>ex_cldr</code>.</p>
</blockquote>
</aside>
<p>Psssst, wanna buy a Hex-package name? Just kidding, I was planning to write a <code>localize</code> suite and initial work was published on Hex but life got in the way. I’ll transfer the namespace to you before Q1 2026.</p>
<p>Any roadmap or architecture we can see for Localize?</p>
<p>Ps. thanks for the attribution !</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377554" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/118">Post #117</a>
	                </div>
	            </div>
              <div id="likers-container-377554" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377554"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #117"></div>
  </section>
</div>
    <div class="postbit" id="377722" data-post-id="377722">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Doerge" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Doerge/120/19632_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Doerge
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Another great release Kip! You are an real asset to the community!</p>
<aside class="quote no-group quote-modified" data-username="kip" data-post="113" data-topic="17350">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/48/1440_2.png" class="avatar"> kip:</div>
<blockquote>
<p><code>Cldr.Number.to_ratio_string(0.75)</code> <code>{:ok, "1⁄2"}</code></p>
</blockquote>
</aside>
<p>Is this maybe supposed to return <code>{:ok, “3/4”}</code>? Or is this some sort of imperial thing I’m too euro to understand?<img src="https://forum.elixirforum.com/images/emoji/apple/laughing.png?v=15" title=":laughing:" class="emoji" alt=":laughing:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377722" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/119">Post #118</a>
	                </div>
	            </div>
              <div id="likers-container-377722" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377722"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #118"></div>
  </section>
</div>
    <div class="postbit" id="377723" data-post-id="377723">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>D’Oh, thanks for pointing that out. Fixed now in the original post. Documentation error - not a code error <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="377723" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/120">Post #119</a>
	                </div>
	            </div>
              <div id="likers-container-377723" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="377723"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #119"></div>
  </section>
</div>
    <div class="postbit" id="390704" data-post-id="390704">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h3><a name="p-390704-support-notification-1" class="anchor" href="#p-390704-support-notification-1" aria-label="Heading link" rel="nofollow"></a>Support notification</h3>
<p>With <a href="https://hex.pm/packages/localize" rel="nofollow">localize</a> now largely stable (and already at 25% of the weekly downloads of <code>ex-cldr</code>) I want to be clear about the transition and support plans for <code>ex_cldr_*</code> libraries:</p>
<ol>
<li><strong><code>ex_cldr</code> and dependant libraries will continue to be supported with bug fixes until December 31, 2027</strong>. After that I do not plan to provide support. I will very happily add maintainers to the repo(s) and provide support guidance if any kind soul wants (or needs) to continue support.</li>
<li><code>ex_cldr</code> and dependant libraries are currently based upon <a href="https://cldr.unicode.org/downloads/cldr-48" rel="nofollow">CLDR version 48.2</a> and I have no plans to update the CLDR version for <code>ex_cldr_*</code> libraries.</li>
<li>I have no plans for enhancements for <code>ex_cldr_*</code> libraries but I will review PRs on a case-by-case basis.</li>
<li>At the end of December 2026 I will remove support for OTP 26 in <code>ex_cldr_*</code> libraries. <code>ex_cldr_*</code> will at that time be supported on OTP 27, 28 and 29 and Elixir 1.17+.</li>
<li>I will update all libraries to ensure compatibility with OTP 30 (anticipated around the middle of 2027) and Elixir 1.21 and 1.22 (assuming the usual Elixir release cadence).</li>
<li>I will attempt to maintain Elixir 1.17+ as the minimum release but that is not guaranteed.</li>
</ol>
<p><a href="https://hex.pm/packages/localize" rel="nofollow">localize</a> will continue to be actively developed and supported. Current <code>ex_cldr</code> consumers are encouraged to migrate to <code>localize</code>.</p>
<p>On a longer term support note:  I’ve been working on <code>ex_cldr</code> now for over 10 years. I am optimistic I can continue to provide active development and support for <code>localize</code> (and my other libraries) until 2030 but I’m less confident beyond that.</p>
<p>My goal over the next few releases is to make update and maintenance of CLDR updates easier and more automated.</p>
<p>Given this longer term plan, I will increase my efforts to encourage collaborators, contributors and maintainers to engage to ensure continuity of <code>localize</code> for as long as the community sees value in the work.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="390704" data-batch-url="/posts/batch_likers">
                        12
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/121">Post #120</a>
	                </div>
	            </div>
              <div id="likers-container-390704" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="390704"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>