<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="264718" data-post-id="264718">
  <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-264718-an-update-on-whats-next-for-ex_cldr-and-friends-1" class="anchor" href="#p-264718-an-update-on-whats-next-for-ex_cldr-and-friends-1" aria-label="Heading link" rel="nofollow"></a>An update on what’s next for ex_cldr and friends</h3>
<p>A very occasional update on what’s coming next for <code>ex_cldr</code> and related libraries.</p>
<h4><a name="p-264718-in-october-2022-proleptic-gregorian-2" class="anchor" href="#p-264718-in-october-2022-proleptic-gregorian-2" aria-label="Heading link" rel="nofollow"></a>In October 2022 (Proleptic Gregorian)</h4>
<ul>
<li>
<p><a href="https://cldr.unicode.org/index/downloads/cldr-42" rel="nofollow">CLDR 42</a> is in beta and due for release in October. In line with usual practise, updated <code>ex_cldr</code> and related libraries will be available on the day of release.  As usual, some formatted results may chance between releases but the API and semantics do not change.</p>
</li>
<li>
<p>Update <a href="https://hex.pm/packages/ex_cldr_routes" rel="nofollow">ex_cldr_routes</a> to support Phoenix 1.7 and to introduce a new sigil to localise the new <a href="https://github.com/phoenixframework/phoenix/blob/master/CHANGELOG.md#changelog-for-v17" rel="nofollow">verified_routes</a> capability.  Probably going to be <code>sigil_q</code> (<code>q</code> being after <code>p</code>) - alternative suggestions welcome!</p>
</li>
</ul>
<h4><a name="p-264718-by-year-end-2022-3" class="anchor" href="#p-264718-by-year-end-2022-3" aria-label="Heading link" rel="nofollow"></a>By Year End 2022</h4>
<ul>
<li>Introduce <code>ex_cldr_person_names</code>.  With CLDR 42 comes data to support <a href="https://cldr-smoke.unicode.org/spec/maint-42/ldml/tr35-personNames.html" rel="nofollow">person name formatting</a>.  <code>ex_cldr_person_names</code> will leverage that data to provide person name formatting. <strong>Input on user requirements are especially welcome.</strong></li>
</ul>
<h4><a name="p-264718-by-march-2023-4" class="anchor" href="#p-264718-by-march-2023-4" aria-label="Heading link" rel="nofollow"></a>By March 2023</h4>
<ul>
<li>Implement the <a href="https://github.com/unicode-org/message-format-wg/blob/main/spec/syntax.md" rel="nofollow">Unicode Message Format version 2.0</a> as a new library.  <a href="https://hex.pm/packages/ex_cldr_message" rel="nofollow">ex_cldr_messages</a> implements the <a href="https://unicode-org.github.io/icu/userguide/format_parse/messages/" rel="nofollow">ICU Message Format</a> and thanks to great work by <a class="mention" href="/u/maennchen" rel="nofollow">@maennchen</a> it’s fully integrated with Elixir <a href="https://hex.pm/packages/gettes" rel="nofollow">gettext</a> making for a seamless developer experience for what I believe is a better message format.  The new Message Format 2.0 syntax is designed to be more widely adopted and address known issues with the 1.0 format. All the heavy-weight players from industry have been part of formulating this specification.</li>
</ul>
<h4><a name="p-264718-in-calendar-year-2023-5" class="anchor" href="#p-264718-in-calendar-year-2023-5" aria-label="Heading link" rel="nofollow"></a>In Calendar Year 2023</h4>
<ul>
<li>
<p>Collaborate on writing book about localizing applications. There is <a href="https://www.amazon.com/s?k=software+internationalisation&amp;crid=285NRE7T7L3NE&amp;sprefix=software+internationalisation%2Caps%2C291&amp;ref=nb_sb_noss" rel="nofollow">very little</a> literature on this topic let alone practical guides.</p>
</li>
<li>
<p>Implement some Liveview components on Phoenix 1.7+.  Input, thoughts, ideas, suggestions very welcome. My initial list:</p>
<ul>
<li>Locale selector. A panel to select an available locale and customize it (calendar, currency, etc etc)</li>
<li>Calendar picker. There are some great javascript calendars and they should be the preferred UI mechanism. But in the liveview  world there is room for a calendar too. And, well, I just like calendars. This implementation will work on any calendar that can be defined with the <code>Cldr.Calendar</code> protocol and be completely localized so it will have different capabilities to the normal JS ones.</li>
</ul>
</li>
<li>
<p>Implement an interactive notepad like <a href="https://numpad.io" rel="nofollow">numpad</a>. <code>ex_cldr</code> and friends have a lot of inbuilt knowledge of numbers, dates, times, units of measure and it would be fun to wrap this in a notebook style interface.  I’m hoping this can be done on top of <a href="https://livebook.dev" rel="nofollow">Livebook</a> - I don’t think there is a way to override the evaluator loop but maybe there is a way to put this all together. Definitely interested in ideas, feedback and suggestions.</p>
</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="264718" data-batch-url="/posts/batch_likers">
                        23
                      </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/92">Post #91</a>
	                </div>
	            </div>
              <div id="likers-container-264718" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="264718"
                     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 #91"></div>
  </section>
</div>
    <div class="postbit" id="264847" data-post-id="264847">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="kip" data-post="92" 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>
<ul>
<li>Introduce <code>ex_cldr_person_names</code>. With CLDR 42 comes data to support <a href="https://cldr-smoke.unicode.org/spec/maint-42/ldml/tr35-personNames.html" rel="noopener nofollow ugc">person name formatting </a>. <code>ex_cldr_person_names</code> will leverage that data to provide person name formatting. <strong>Input on user requirements are especially welcome.</strong></li>
</ul>
</blockquote>
</aside>
<p>This sounds really great!</p>
<p>One thing that could be extremely useful is some kind of guideline on <em>storing</em> names. I’m likely not the only one guilty here of <code>:first_name/:last_name</code> columns, but what would be really amazing would be something similar to what you’ve done with Money.Ecto: some kind of composite name storage that takes localization into account and that can be passed to display functions like <code>short_name</code> or <code>formal_name</code> (spitballing) when rendering in various circumstances.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="264847" data-batch-url="/posts/batch_likers">
                        1
                      </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/93">Post #92</a>
	                </div>
	            </div>
              <div id="likers-container-264847" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="264847"
                     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 #92"></div>
  </section>
</div>
    <div class="postbit" id="264869" data-post-id="264869">
  <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 suggestion, I’ll think on this.</p>
<p><strong>TLDR;</strong> good idea, not quite so simple, thinking on how to do it well, ideas welcome</p>
<p>There’s an intersection of a few topics for name storage than needs some thought:</p>
<ol>
<li>Need to be able to index the individual parts</li>
<li>Would be great to do appropriate full text search indexing for names</li>
<li>But .. in a locale-friendly manner</li>
<li>Including the right collation for names as well (which would mean sorting by the correct name order)</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="264869" 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/94">Post #93</a>
	                </div>
	            </div>
              <div id="likers-container-264869" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="264869"
                     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 #93"></div>
  </section>
</div>
    <div class="postbit" id="264890" data-post-id="264890">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="kip" data-post="94" 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><strong>TLDR;</strong> good idea, not quite so simple, thinking on how to do it well, ideas welcome</p>
</blockquote>
</aside>
<p>Yep, definitely not as simple as I made it out to be! Another potential blocker/challenge: insertion/parsing, which is explicitly outside the scope of the CLDR release. We’d need some way to get name input into the proper shape, and as the document pointed out, there’s a huge amount of ambiguity there (unless you are going to offer a ton of fields which will likely have the effect of confusing many people.)</p>
<p>Perhaps something else to think about along those lines is using locale/preferences to drive name input.</p>
<p>Edit: again re: confusion, but I wonder if a + icon next to given/surname to add a given2 and surname2 would be a “don’t let the perfect be the enemy of the good” kind of solution that gets 95% of the way there.</p>
<p>Edit2: a final note, from the document: <em>How names get placed into fields to be formatted is beyond the scope of CLDR PersonName formats; this document just lays out the assumptions the formatting code makes when formatting the names.</em> Given this, I think it’s unreasonable to expect ExCLDR to address this directly, but helpers/etc. that make thoughtful name input possible to implement could be very useful. E.g. an easy way to get the “standard parts” and “standard order” of a name from a given locale, so that the appropriate number of fields could be rendered in the expected order.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="264890" 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/95">Post #94</a>
	                </div>
	            </div>
              <div id="likers-container-264890" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="264890"
                     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 #94"></div>
  </section>
</div>
    <div class="postbit" id="266057" data-post-id="266057">
  <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">
								<aside class="quote no-group" data-username="kip" data-post="92" 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><a href="https://cldr.unicode.org/index/downloads/cldr-42" rel="nofollow">CLDR 42 </a> is in beta and due for release in October. In line with usual practise, updated <code>ex_cldr</code> and related libraries will be available on the day of release. As usual, some formatted results may chance between releases but the API and semantics do not change.</p>
</blockquote>
</aside>
<p>WIth the release of <a href="https://cldr.unicode.org/index/downloads/cldr-42" rel="nofollow">CLDR 42</a> on October 19th I can now publish the required updates to <code>ex_cldr</code> and friends. Not all libraries need updating,</p>
<p>I missed the “same day” goal by 5 days due to diverting some energy into a new release of <a href="https://hex.pm/packages/image" rel="nofollow">Image</a>.</p>
<h3><a name="p-266057-ex_cldr-version-2340httpshexpmpackagesex_cldr2340-1" class="anchor" href="#p-266057-ex_cldr-version-2340httpshexpmpackagesex_cldr2340-1" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr/2.34.0" rel="nofollow">ex_cldr version 2.34.0</a></h3>
<ul>
<li>Incorporates all the updated locale data for a <strong>total of 586 locales</strong> available</li>
<li><strong>A new <code>-u</code> extension key</strong> to the language tag is added to provide a preferred unit of measurement for temperature: Celsius, Fahrenheit, and Kelvin. (An effort has also been started to provide syntax for other unit preferences in future releases.)</li>
<li><strong>Two new number systems</strong> are available, corresponding to new Unicode 15.0 scripts: <code>Kawi</code> and <code>Nag Mundari</code>.</li>
<li>A new short timezone ID is available, <strong>tz-uaiev</strong>, for Europe/Kyiv</li>
<li>Some locales now have higher coverage levels: Igbo (ig), yo (Yoruba), Chuvash (cv), Xhosa (xh), Haryanvi (bgc), Bhojpuri (bho), Rajasthani (raj), Tigrinya (ti)</li>
<li><strong>Data normalization</strong>: There was an extensive normalization of different kinds of spaces (normal, non-breaking, thin, etc.) for consistency of behavior - <a href="https://www.google.com/url?q=https%3A%2F%2Funicode-org.atlassian.net%2Fbrowse%2FCLDR-14032&amp;sa=D&amp;sntz=1&amp;usg=AOvVaw2QSMar11Z-nVjulP3NbPgx" rel="nofollow">CLDR-14032</a></li>
<li><strong>Plural rules Additions</strong>: Added ‘many’ category for Asturian, Catalan. They only affect messages with large numbers. Maltese now has the ‘two’ category.</li>
<li><strong>Plural Rules Removals</strong>: The ‘many’ plural category for Hebrew (<a href="https://www.google.com/url?q=https%3A%2F%2Funicode-org.atlassian.net%2Fbrowse%2FCLDR-14634&amp;sa=D&amp;sntz=1&amp;usg=AOvVaw1RaAfaNZDIabLfYOImKC8j" rel="nofollow">CLDR-14634</a>) was removed; it is unnecessary in modern practice.</li>
<li><strong>Plural Rules Changes</strong>: There were a few changes to the rules that affect how numbers are assigned to categories.</li>
<li><strong>Formatting Person Names</strong>: Added data and structure for formatting people’s names. For more information on why this feature is being added and what it does, see <a href="https://www.google.com/url?q=https%3A%2F%2Fsites.google.com%2Funicode.org%2Fcldr%2Findex%2Fdownloads%2Fcldr-42%23h.xtb1v8tpviuc&amp;sa=D&amp;sntz=1&amp;usg=AOvVaw0SWmJUY4f91Osn9zzKC41w" rel="nofollow">the background document</a>. A new library, <code>ex_cldr_person_names</code> will be developed to expose and exploit this data by year end 2022.</li>
</ul>
<h3><a name="p-266057-ex_cldr_numbers-version-2280httpshexpmpackagesex_cldr_numbers2280-2" class="anchor" href="#p-266057-ex_cldr_numbers-version-2280httpshexpmpackagesex_cldr_numbers2280-2" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr_numbers/2.28.0" rel="nofollow">ex_cldr_numbers version 2.28.0</a></h3>
<ul>
<li>Two new values for pattern elements used for currency format elements:
<ul>
<li><code>alpha_next_to_number</code>: A pattern to use when the currency symbol would result in letter characters being adjacent to the numeric value; typically this adds a no-break space between the currency symbol and numeric value, if the standard currency format pattern does not already have a space. This provides an improved alternative to the currency spacing patterns.</li>
<li><code>no_currency</code>: A pattern to use when currency-style formats are desired but without the actual symbol (as in a table of currency values all fo the same currency).</li>
</ul>
</li>
<li>For the currency formats element, a new element <code>currency_pattern_append_ISO</code> containing a pattern that shows how to append an ISO currency symbol (¤¤) to a currency pattern using a standard currency symbol (¤); this is needed for certain types of currency display.</li>
<li>Although these data changes are incorporated, the formatting functions do not expose them. They will be added in an update to <code>ex_cldr_numbers</code> by year end 2022.</li>
</ul>
<h3><a name="p-266057-ex_cldr_units-version-3150httpshexpmpackagesex_cldr_units3150-3" class="anchor" href="#p-266057-ex_cldr_units-version-3150httpshexpmpackagesex_cldr_units3150-3" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr_units/3.15.0" rel="nofollow">ex_cldr_units version 3.15.0</a></h3>
<ul>
<li>The new <code>-u</code> extension key to the language tag  is added to provide a preferred unit of measurement for temperature: Celsius, Fahrenheit, and Kelvin. This extension is parsed but is not yet utilised by <code>ex_cldr_units</code>. It will be applied in an update before year end 2022.</li>
<li>The length of a light-year has been adjusted to the IAU value (which uses a Julian year of 365.25 days).</li>
<li>The unit ID for <em>metric-tonne</em> has been deprecated in favor of <em>tonne.</em></li>
</ul>
<h3><a name="p-266057-ex_cldr_dates_times-version-2130httpshexpmpackagesex_cldr_dates_times-4" class="anchor" href="#p-266057-ex_cldr_dates_times-version-2130httpshexpmpackagesex_cldr_dates_times-4" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr_dates_times" rel="nofollow">ex_cldr_dates_times version 2.13.0</a></h3>
<ul>
<li>Several locales, including <code>en</code> , have changed the standard date/time formats replacing <code>&lt;date&gt; at &lt;time&gt;</code> with <code>&lt;date&gt;, &lt;time&gt;</code>. There is a new format type (the <code>at</code> type) available in the underlying data however these formats are not yet exposed in <code>ex_cldr_dates_times</code>. An update will be published before year end 2022 to apply this functionality.</li>
<li>The Yukon metazone has been un-deprecated</li>
<li>Day-periods are added for <code>hi_Latn</code>, and adjusted for mr to only have <code>evening1</code></li>
<li>Support time zone data 2022e. For 2022e: After 2022-10-27, “Asia/Amman” and “Asia/Damascus” removed from metazone “Europe_Eastern” with no replacement metazone.</li>
</ul>
<h3><a name="p-266057-ex_cldr_calendarshttpshexpmex_cldr_calendars-5" class="anchor" href="#p-266057-ex_cldr_calendarshttpshexpmex_cldr_calendars-5" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/ex_cldr_calendars" rel="nofollow">ex_cldr_calendars</a></h3>
<ul>
<li>No version update but relevant updates to data in CLDR 42:</li>
<li>The first day of the week is now Monday in CN (<a href="https://www.google.com/url?q=https%3A%2F%2Funicode-org.atlassian.net%2Fbrowse%2FCLDR-11510&amp;sa=D&amp;sntz=1&amp;usg=AOvVaw23j3b4gDvHCGCEk95-vzRt" rel="nofollow">CLDR-11510</a>)</li>
<li>13 locales have the islamic calendar added</li>
</ul>
<h3><a name="p-266057-ex_cldr_currencieshttpshexpmpackagesex_cldr_currencies-6" class="anchor" href="#p-266057-ex_cldr_currencieshttpshexpmpackagesex_cldr_currencies-6" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr_currencies" rel="nofollow">ex_cldr_currencies</a></h3>
<ul>
<li>No version update but relevant changes to data in CLDR 42</li>
<li>For Sierra Leone, the new currency SLE is now an official tender; the older currency SLL ceases to be legal tender after 2023-03-31.</li>
<li>For Croatia, EUR becomes legal tender on 2023-01-01, and the old currency HRK ceases to be legal tender after 2021-01-15.</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="266057" 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/96">Post #95</a>
	                </div>
	            </div>
              <div id="likers-container-266057" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="266057"
                     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 #95"></div>
  </section>
</div>
    <div class="postbit" id="274961" data-post-id="274961">
  <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>With some great motivation and collaboration from <a class="mention" href="/u/rubas" rel="nofollow">@rubas</a>, <a href="https://hex.pm/packages/ex_cldr_numbers/2.29.0" rel="nofollow">ex_cldr_numbers version 2.29.0</a> is published.  The main new feature is the ability to provide a wrapping function to <code>Cldr.Number.to_string/2</code> that makes it easy to wrap format elements. This is particularly useful if formatting for HTML and you want different parts of the format to have different classes.</p>
<h3><a name="p-274961-example-wrapping-in-html-tags-1" class="anchor" href="#p-274961-example-wrapping-in-html-tags-1" aria-label="Heading link" rel="nofollow"></a>Example wrapping in HTML tags</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex&gt; Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn
...&gt;   string, :currency_symbol -&gt; "&lt;span class=\"symbol\"&gt;" &lt;&gt; string &lt;&gt; "&lt;/span&gt;"
...&gt;   string, :number -&gt; "&lt;span class=\"number\"&gt;" &lt;&gt; string &lt;&gt; "&lt;/span&gt;"
...&gt;   string, :currency_space -&gt; "&lt;span&gt;" &lt;&gt; string &lt;&gt; "&lt;/span&gt;"
...&gt;   string, _other -&gt; string
...&gt; end)
{:ok, "&lt;span class=\"symbol\"&gt;$&lt;/span&gt;&lt;span class=\"number\"&gt;100.00&lt;/span&gt;"}
</code></pre>
<p>It is also possible and recommended to use the <code>Phoenix.HTML.Tag.content_tag/3</code>  function if wrapping HTML tags since these will ensure HTML entities are correctly encoded.  For example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex&gt; Cldr.Number.to_string(100, format: :currency, currency: :USD, wrapper: fn
...&gt;   string, :currency_symbol -&gt; Phoenix.HTML.Tag.content_tag(:span, string, class: "symbol")
...&gt;   string, :number -&gt; Phoenix.HTML.Tag.content_tag(:span, string, class: "number")
...&gt;   string, :currency_space -&gt; Phoenix.HTML.Tag.content_tag(:span, string)
...&gt;   string, _other -&gt; string
...&gt; end)
{:ok, "&lt;span class=\"symbol\"&gt;$&lt;/span&gt;&lt;span class=\"number\"&gt;100.00&lt;/span&gt;"}
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="274961" 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/97">Post #96</a>
	                </div>
	            </div>
              <div id="likers-container-274961" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="274961"
                     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 #96"></div>
  </section>
</div>
    <div class="postbit" id="286480" data-post-id="286480">
  <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/index/downloads/cldr-43" rel="nofollow">CLDR version 43</a> was released this month, triggering a release cycle for the <a href="https://github.com/elixir-cldr" rel="nofollow">ex_cldr</a> family of libraries. All-in-all, 15 <code>ex_cldr</code> libraries have been updated, polished and published as part of this release cycle. Please consult the relevant changelogs for more information.</p>
<h3><a name="p-286480-hightlights-1" class="anchor" href="#p-286480-hightlights-1" aria-label="Heading link" rel="nofollow"></a>Hightlights</h3>
<ul>
<li>
<p><code>ex_cldr</code> data is now versioned. This means that when installing locales, <code>ex_cldr</code> does a better job of detecting if there is any existing locale data and if that data is stale, the updated data will be downloaded and installed.  This addresses a <a href="https://github.com/elixir-cldr/cldr/issues/188" rel="nofollow">long standing issue</a>.</p>
</li>
<li>
<p><code>ex_money_sql</code> now has a set of helper macros for querying money amounts. This was contributed by <span class="mention">@am-kantox</span> - really appreciated.</p>
</li>
<li>
<p>All the additional calendar implementations (Ethiopian, Coptic, Persian, Lunisolar, Composite) are now all at version <code>1.0.0</code>.</p>
</li>
<li>
<p>Lots of work on the <a href="https://hex.pm/packages/ex_cldr_calendars_lunisolar" rel="nofollow">lunisolar calendars</a> to make the API more approachable for common requirements like determining the data of the lunar new year for a given Gregorian year. Many thanks to <span class="mention">@nineclue</span> for pushing me to get this library into good shape.</p>
</li>
<li>
<p>Adds a new calendar implementation, the Japanese calendar. This calendar is the Gregorian calendar but using the Japanese <a href="https://en.wikipedia.org/wiki/Japanese_era_name#:~:text=Thus%2C%20since%201868%2C%20there%20have,%E6%98%8E%E6%B2%BB%E5%A4%A9%E7%9A%87%2C%20Meiji%20Tenn%C5%8D" rel="nofollow">eras</a> which count the number of years of an Emporer’s reign.</p>
</li>
</ul>
<h3><a name="p-286480-upcoming-2" class="anchor" href="#p-286480-upcoming-2" aria-label="Heading link" rel="nofollow"></a>Upcoming</h3>
<p>Despite this round of updates there are still some open issues which I know some very patient people are waiting for. With this round of updates complete I can now focus on the following over the next week:</p>
<ol>
<li>Updating <a href="https://hex.pm/packages/ex_cldr_routes" rel="nofollow">ex_cldr_routes</a> to support localised verified routes. Highest priority.</li>
<li>Publishing <a href="https://github.com/elixir-cldr/cldr_person_names" rel="nofollow">ex_cldr_person_names</a> which provides localised name formatting.  The final two actions required are test conformance and documentation.</li>
<li>Improving <a href="https://hex.pm/packages/ex_cldr_units" rel="nofollow">ex_cldr_units</a> to generalise the algebra for unit multiplication and division and to add a <code>:wrapper</code> option to <code>Cldr.Unit.to_string/2</code> similar to the implementations for <code>Cldr.Number.to_string/2</code> and <code>Cldr.DateTime.to_string./2</code>.</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="286480" data-batch-url="/posts/batch_likers">
                        13
                      </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/98">Post #97</a>
	                </div>
	            </div>
              <div id="likers-container-286480" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="286480"
                     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 #97"></div>
  </section>
</div>
    <div class="postbit" id="287053" data-post-id="287053">
  <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>Localized Verified Routes are now available in <a href="https://hex.pm/packages/ex_cldr_routes/1.0.0" rel="nofollow">ex_cldr_routes version 1.0</a> released today. Some might say, “finally”!.</p>
<p>Localized Verified Routes uses <code>~q</code> (<code>Sigil_q</code>). This choice is made in order to make clear when a verified route is localised or not. And the choice of <code>q</code> is because of its symmetry on US keyboards -<code>q</code> is top left, <code>p</code> is top right.</p>
<h3><a name="p-287053-examples-1" class="anchor" href="#p-287053-examples-1" aria-label="Heading link" rel="nofollow"></a>Examples</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp.Module do
  # Same as Phoenix Router.VerifiedRoutes with the Cldr backend module name
  # prepended. This module is generated at compile time.
  # For this Cldr backend we assume the locales `:en`, `:fr` and `:de` are configured.
  use MyApp.Cldr.Router.VerifiedRoutes, router: MyApp.Router, endpoint: MyApp.Endpoint

  def some_function do
    MyApp.Cldr.put_locale(:de)

    # Returns "/users_de/de" 
    # The sigil is identical to the `~p` sigil except that
    # the path segments `:locale`, :language` and `:territory` are
    # interpolated into the generated `~p` path.
     ~q[/users/:locale]
  end
end
</code></pre>
<h3><a name="p-287053-how-does-it-work-2" class="anchor" href="#p-287053-how-does-it-work-2" aria-label="Heading link" rel="nofollow"></a>How does it work?</h3>
<p><code>Sigil_q</code> generates a case expression with a clause for each locale configured on the Cldr backend. For the example above, the sigil expands to the following code:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># ~q"/users/:locale"
case MyApp.Cldr.get_locale().cldr_locale_name do
  :de -&gt; ~p"/users_de/de"
  :en -&gt; ~p"/users/en"
  :fr -&gt; ~p"/users_fr"
end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="287053" 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/99">Post #98</a>
	                </div>
	            </div>
              <div id="likers-container-287053" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="287053"
                     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 #98"></div>
  </section>
</div>
    <div class="postbit" id="287199" data-post-id="287199">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks <a class="mention" href="/u/kip" rel="nofollow">@kip</a> for doing what’s probably a pretty thankless job (maintaining an important library)!  I have nothing but admiration for folks who give so unselfishly to the benefit of the rest of the community!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="287199" data-batch-url="/posts/batch_likers">
                        10
                      </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/100">Post #99</a>
	                </div>
	            </div>
              <div id="likers-container-287199" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="287199"
                     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 #99"></div>
  </section>
</div>
    <div class="postbit" id="287204" data-post-id="287204">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I second this. And for all the generous support that comes with it!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="287204" data-batch-url="/posts/batch_likers">
                        1
                      </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/101">Post #100</a>
	                </div>
	            </div>
              <div id="likers-container-287204" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="287204"
                     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 #100"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/17350/load_more?page=11">Load more posts (20 remaining)</a>
</div></template></turbo-stream>