<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="193379" data-post-id="193379">
  <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>It’s October and release time for <a href="http://cldr.unicode.org/index/downloads/cldr-38" rel="nofollow">CLDR version 38</a>.  With some adjustments to the <code>ex_cldr</code> build process I can now get new releases of <a href="https://hex.pm/packages/ex_cldr" rel="nofollow">ex_cldr</a> out the door at the same time.</p>
<h3><a name="p-193379-updated-ex_cldr-library-versions-1" class="anchor" href="#p-193379-updated-ex_cldr-library-versions-1" aria-label="Heading link" rel="nofollow"></a>Updated ex_cldr library versions:</h3>
<ul>
<li><a href="https://hex.pm/packages/ex_cldr/2.18.0" rel="nofollow">ex_cldr 2.18.0</a> (<a href="https://hexdocs.pm/ex_cldr/2.18.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_currencies/2.8.0" rel="nofollow">ex_cldr_currencies 2.8.0</a> (<a href="https://hexdocs.pm/ex_cldr_currencies/2.8.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_numbers/2.16.0" rel="nofollow">ex_cldr_numbers 2.16.0</a> (<a href="https://hexdocs.pm/ex_cldr_numbers/2.16.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_dates_times/2.6.0" rel="nofollow">ex_cldr_dates_times 2.16.0</a> (<a href="https://hexdocs.pm/ex_cldr_dates_times/2.6.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_lists/2.7.0" rel="nofollow">ex_cldr_lists 2.7.0</a> (<a href="https://hexdocs.pm/ex_cldr_lists/2.7.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_units/3.3.0" rel="nofollow">ex_cldr_units 3.3.0</a> (<a href="https://hexdocs.pm/ex_cldr_units/3.3.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_calendars/1.11.0" rel="nofollow">ex_cldr_calendars 1.11.0</a> (<a href="https://hexdocs.pm/ex_cldr_calendars/1.11.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_print/0.4.0" rel="nofollow">ex_cldr_print 0.4.0</a> (<a href="https://hexdocs.pm/ex_cldr_print/0.4.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_cldr_html/0.1.0" rel="nofollow">ex_cldr_html 0.1.0</a> (<a href="https://hexdocs.pm/ex_cldr_html/0.1.0/changelog.html#content" rel="nofollow">Changelog</a>)</li>
<li><a href="https://hex.pm/packages/ex_money/5.4.0" rel="nofollow">ex_money 5.4.0</a> (<a href="https://hexdocs.pm/ex_money/5.4.0/changelog.html#content" rel="nofollow">Changelog</a>)</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="193379" data-batch-url="/posts/batch_likers">
                        4
                      </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/52">Post #51</a>
	                </div>
	            </div>
              <div id="likers-container-193379" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="193379"
                     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 #51"></div>
  </section>
</div>
    <div class="postbit" id="193552" data-post-id="193552">
  <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>This week, downloads of <a href="https://hex.pm/packages/ex_cldr" rel="nofollow">ex_cldr</a> hits <code>500,000</code>.</p>
<p>A little over 4 years ago I decided to follow <a class="mention" href="/u/josevalim" rel="nofollow">@josevalim</a> to Elixir and having spent a bit of time hanging around on the edges of the <a href="https://rubygems.org/gems/i18n/versions/0.7.0" rel="nofollow">Ruby i18n Gem</a> I thought working on an I18n project for Elixir would be a good way to spend a weekend getting to know the language.</p>
<p>That weekend turned into a 4 year journey. Fast forward and now there have been</p>
<ul>
<li><code>ex_cldr</code> and 17 other libraries in the I18n and <a href="https://cldr.unicode.org" rel="nofollow">CLDR</a> domain published on hex.</li>
<li><code>2,628</code> commits across all libraries</li>
<li><code>139</code> releases of the main library</li>
<li><code>17</code> contributors across all libraries</li>
<li>Two additional libraries: <a href="https://hex.pm/packages/ex_cldr_languages" rel="nofollow">ex_cldr_languages</a> by <a class="mention" href="/u/lostkobrakai" rel="nofollow">@LostKobrakai</a> and <a href="https://hex.pm/packages/ex_cldr_territories" rel="nofollow">ex_cldr_territories</a> by <a class="mention" href="/u/schultzer" rel="nofollow">@Schultzer</a></li>
</ul>
<p>Many thanks to <a class="mention" href="/u/lostkobrakai" rel="nofollow">@lostkobrakai</a>, <a class="mention" href="/u/danschultzer" rel="nofollow">@danschultzer</a>, <span class="mention">@szTheory</span>, <span class="mention">@KronidDeth</span>, <a class="mention" href="/u/michalmuskala" rel="nofollow">@michalmuskala</a>, <span class="mention">@zaack</span>, <span class="mention">@tcitworld</span>, @ <strong>jueberschlag, @</strong> Schultzer, <a class="mention" href="/u/zurga" rel="nofollow">@Zurga</a>, <a class="mention" href="/u/yuchunc" rel="nofollow">@yuchunc</a>, <a class="mention" href="/u/kwando" rel="nofollow">@kwando</a>, <a class="mention" href="/u/bglusman" rel="nofollow">@bglusman</a>, <span class="mention">@kianmeng</span>, <a class="mention" href="/u/qqwy" rel="nofollow">@Qqwy</a>, <span class="mention">@NickNeck</span> and <span class="mention">@dbernheisel</span> for their support.  It’s been a wild ride and there’s still more to come!</p>
<p>To celebrate what is, for me, a pretty big milestone I’ve started a blog on i18n with Elixir with the first two articles at <a href="https://elixir-cldr.github.io" rel="nofollow">Adventures in Internationalization and Localization</a>.</p>
<p>Yeah, creative it isn’t and my writing is really rusty. Like software, I assume it will get better with practise!</p> 
	            </div>

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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Congratulations <a class="mention" href="/u/kip" rel="nofollow">@kip</a> and thank you for the extensive contributions to the ecosystem!</p>
<p>The blog looks great, I’ve already learned about Cldr.Chars, which I found pretty neat. <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="193554" 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/54">Post #53</a>
	                </div>
	            </div>
              <div id="likers-container-193554" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="193554"
                     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 #53"></div>
  </section>
</div>
    <div class="postbit" id="193570" data-post-id="193570">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="outlog" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  outlog
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>thank you <a class="mention" href="/u/kip" rel="nofollow">@kip</a> for all the great work on cldr <img src="https://forum.elixirforum.com/images/emoji/apple/raised_hands.png?v=15" title=":raised_hands:" class="emoji" alt=":raised_hands:" 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="193570" 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/55">Post #54</a>
	                </div>
	            </div>
              <div id="likers-container-193570" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="193570"
                     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 #54"></div>
  </section>
</div>
    <div class="postbit" id="193572" data-post-id="193572">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Congratulation <a class="mention" href="/u/kip" rel="nofollow">@kip</a>, this is a big milestone! And reading your blog is like reading your code, its easy to read and well thought out! Thanks again for all your contributions!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="193572" 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/56">Post #55</a>
	                </div>
	            </div>
              <div id="likers-container-193572" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="193572"
                     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 #55"></div>
  </section>
</div>
    <div class="postbit" id="195842" data-post-id="195842">
  <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>Today is the launch of a small addition to the <code>ex_cldr</code> family, <a href="https://hex.pm/packages/ex_cldr_strftime" rel="nofollow">ex_cldr_strftime</a>.  Its only purpose is to provide a keyword list of options to <a href="https://hexdocs.pm/elixir/1.11.0/Calendar.html#strftime/3" rel="nofollow">Calendar.strftime/3</a> that was introduced in Elixir 1.11.</p>
<p>This makes it easy to use the localised date/time/datetime formats of CLDR for over 500 locales but using the format strings of <code>Calendar.strftime/3</code>.</p>
<h4><a name="p-195842-examples-1" class="anchor" href="#p-195842-examples-1" aria-label="Heading link" rel="nofollow"></a>Examples</h4>
<p>These examples use the <code>%x</code>, <code>%X</code> and <code>%c</code> format placeholders to delegate to the preferred <a href="https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table" rel="nofollow">formats defined by CLDR</a>.  The <code>CLDR</code> format strings are translated to the <code>strftime/3</code> format at compile time so runtime performance is on par with other format strings.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Calendar.strftime ~U[2019-08-26 13:52:06.0Z], "%x", Cldr.Strftime.strftime_options!()
"Aug 26, 2019"

iex&gt; Calendar.strftime ~U[2019-08-26 13:52:06.0Z], "%X", Cldr.Strftime.strftime_options!()
"13:52:06 PM"

iex&gt; Calendar.strftime ~U[2019-08-26 13:52:06.0Z], "%c", Cldr.Strftime.strftime_options!()
"Aug 26, 2019, 13:52:06 PM"

iex&gt; Calendar.strftime ~U[2019-08-26 13:52:06.0Z], "%c", Cldr.Strftime.strftime_options!("ja")
"2019/08/26 13:52:06"

iex&gt; Calendar.strftime ~U[2019-08-26 13:52:06.0Z], "%c", Cldr.Strftime.strftime_options!("ja", format: :long)
"2019年08月26日 13:52:06 +0000"

iex&gt; Calendar.strftime ~U[2019-08-26 13:52:06.0Z], "%c", Cldr.Strftime.strftime_options!("pl")
"26 sie 2019, 13:52:06"

iex&gt; Calendar.strftime ~U[2019-08-26 13:52:06.0Z], "%c", Cldr.Strftime.strftime_options!("pl", format: :long)
"26 sierpnia 2019 13:52:06 +0000"
</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="195842" data-batch-url="/posts/batch_likers">
                        6
                      </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/57">Post #56</a>
	                </div>
	            </div>
              <div id="likers-container-195842" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="195842"
                     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 #56"></div>
  </section>
</div>
    <div class="postbit" id="209604" data-post-id="209604">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tmbb" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tmbb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>How is the ICU message parsing and rendering going? My internationalization library is pretty good now. It uses .PO and .POT files for the backend, which means translations can be edited with programs like Poedit. The limiting factor is only the ICU message handling, and I’m not sure exactly which features are supported <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="209604" 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/58">Post #57</a>
	                </div>
	            </div>
              <div id="likers-container-209604" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209604"
                     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 #57"></div>
  </section>
</div>
    <div class="postbit" id="209657" data-post-id="209657">
  <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="http://cldr.unicode.org/index/downloads/cldr-39" rel="nofollow">CLDR version 39</a> was released today. With an updated tool chain and release process I can now update the <a href="https://github.com/elixir-cldr" rel="nofollow">ex_cldr</a> libraries and release them on the same day. The following is a summary of the main updates to the family of libraries.  Happy localising!</p>
<h3><a name="p-209657-ex_cldr-version-2000httpshexpmpackagesex_cldr2200-1" class="anchor" href="#p-209657-ex_cldr-version-2000httpshexpmpackagesex_cldr2200-1" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr/2.20.0" rel="nofollow">ex_cldr version 20.0.0</a></h3>
<ul>
<li>
<p>Updates to <a href="http://cldr.unicode.org/index/downloads/cldr-39" rel="nofollow">CLDR version 39</a> data.</p>
</li>
<li>
<p>Add <code>Cldr.Locale.parent/1</code> to return the parent locale according. This is not exactly the same as the CLDR <a href="https://unicode.org/reports/tr35/#Locale_Inheritance" rel="nofollow">locale inheritance rules</a></p>
</li>
<li>
<p>Add <code>Cldr.Locale.parents/2</code> to return a list of parents up to and including the <code>root</code> locale. It is a recursive use of <code>Cldr.Locale.parent/1</code>.</p>
</li>
<li>
<p>Add locale display name data to the locale files. This data can be used to format a locale for UI usage.</p>
</li>
<li>
<p>Add subdivision translations to the locale files. This data can be used to format subdivision names for UI usage. Thanks to <span class="mention">@mskv</span>. Closes <span class="hashtag-raw">#144</span>.</p>
</li>
<li>
<p>Add grammatical features to the repository. This data is used in <a href="https://github.com/elixir-cldr/cldr_units" rel="nofollow">ex_cldr_units</a>. See also <code>Cldr.Config.grammatical_features/0</code>.</p>
</li>
<li>
<p>Add grammatical gender to the repository. This data is used in <a href="https://github.com/elixir-cldr/cldr_units" rel="nofollow">ex_cldr_units</a>. See also <code>Cldr.Config.grammatical_gender/0</code>.</p>
</li>
<li>
<p>Make <code>Cldr.Locale.first_match/2</code> a public function. This function is useful for other CLDR-based libraries to help resolve the files of localised content in CLDR.</p>
</li>
<li>
<p>Add <code>:add_fallback_locales</code> to the backend configuration. When <code>true</code>, the fallback locales of the configured backend locales is also added to the configuration. The default is <code>false</code> and therefore by default there is no change to behaviour from previous releases. Setting this option to <code>true</code> enables means that data that is stored in parent locales rather than child locales can be processed. This applies particularly to rules-based number formats and subdivision data. These data aren’t stored in all locales - generally they are stored in the base language locale.</p>
</li>
<li>
<p>Add <code>Cldr.Config.fallback_chain/1</code> which takes a locale name and returns a list of locales from which this locale inherits up to but not including the <code>root</code> locale.</p>
</li>
<li>
<p>Add <code>Cldr.Config.fallback/1</code> which takes a locale name and returns the direct parent of the locale name.</p>
</li>
<li>
<p>Rename alias key <code>subdivisionAlias</code> to <code>subdivision</code></p>
</li>
<li>
<p>Fix <code>Cldr.Substitution.substitute/2</code> when the template has no substitutions. Thanks to <span class="mention">@jarrodmoldrich</span>. Closes <a href="https://github.com/elixir-cldr/cldr_units/issues/20" rel="nofollow">ex_cldr_units #20</a>.</p>
</li>
</ul>
<h3><a name="p-209657-ex_cldr_currencies-291httpshexpmpackagesex_cldr_currencies291-2" class="anchor" href="#p-209657-ex_cldr_currencies-291httpshexpmpackagesex_cldr_currencies291-2" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr_currencies/2.9.1" rel="nofollow">ex_cldr_currencies 2.9.1</a></h3>
<ul>
<li>
<p>Depends upon <code>ex_cldr</code> version 2.20 which embodies CLDR39 data.</p>
</li>
<li>
<p>Add <code>Cldr.Currency.display_name/2</code> that returns a localized display name suitable for use in UI applications.</p>
</li>
<li>
<p>Add implementation of <code>String.Chars</code> and <code>Cldr.Chars</code> protocols for <code>t:Cldr.Currency</code> structs.</p>
</li>
</ul>
<h3><a name="p-209657-ex_cldr_units-version-350httpshexpmpackagesex_cldr_units350-3" class="anchor" href="#p-209657-ex_cldr_units-version-350httpshexpmpackagesex_cldr_units350-3" aria-label="Heading link" rel="nofollow"></a><a href="https://hex.pm/packages/ex_cldr_units/3.5.0" rel="nofollow">ex_cldr_units version 3.5.0</a></h3>
<h4><a name="p-209657-overview-4" class="anchor" href="#p-209657-overview-4" aria-label="Heading link" rel="nofollow"></a>Overview</h4>
<p>In this release the <code>Cldr.Unit.to_string/{1, 2, 3}</code> function has been rewritten and the concrete impementation is now in <code>Cldr.Unit.Format</code>.  The primary reasons for rewriting are:</p>
<ol>
<li>Improves performance by 20% over the old implementation.</li>
<li>Supports grammatical case and grammatical gender. These allow for better sentence formation in a localised fashion. Only are few locales have the required data for now (for example, <code>fr</code> and <code>de</code>) however more locales will have data in upcoming CLDR releases.</li>
</ol>
<p>Note that full testing of grammatical case and grammatical gender variations is not yet complete.</p>
<h4><a name="p-209657-soft-deprecation-5" class="anchor" href="#p-209657-soft-deprecation-5" aria-label="Heading link" rel="nofollow"></a>Soft Deprecation</h4>
<ul>
<li>
<p>The function <code>Cldr.Unit.to_iolist/{1, 2, 3}</code> is soft deprecated. It is still available and no deprecation warning is emitted. It will however be removed from the public API in a future release. This function is primarily used to support implementation of <code>Cldr.Unit.to_string/3</code></p>
</li>
<li>
<p>As of this release, argument checking in <code>Cldr.Unit.to_iolist/3</code> is less rigorous in order to avoid the relatively expensive argument normalization process happening twice (once in <code>Cldr.Unit.to_string/3</code> and then again in <code>Cldr.Unit.to_iolist/3</code>).</p>
</li>
</ul>
<h4><a name="p-209657-bug-fixes-6" class="anchor" href="#p-209657-bug-fixes-6" aria-label="Heading link" rel="nofollow"></a>Bug Fixes</h4>
<ul>
<li>
<p>The new string formatter correctly assembles units with an SI prefix (ie <code>millimeter</code>) in languages such as German where the noun is capitalized.</p>
</li>
<li>
<p>Fixes calculating the base unit when the unit is a complex compound unit.</p>
</li>
<li>
<p>Remove double parsing when calling <code>Cldr.Unit.new/2</code> and the unit is not in <code>Cldr.Unit.known_units/0</code></p>
</li>
<li>
<p>Ensure <code>Cldr.Unit.unit_category/1</code> returns an error tuple if the category is unknown</p>
</li>
</ul>
<h4><a name="p-209657-enhancements-7" class="anchor" href="#p-209657-enhancements-7" aria-label="Heading link" rel="nofollow"></a>Enhancements</h4>
<ul>
<li>
<p>Updated to require <a href="https://hex.pm/packages/ex_cldr/2.20.0" rel="nofollow">ex_cldr version 2.20</a> which includes <a href="http://cldr.unicode.org/index/downloads/cldr-39" rel="nofollow">CLDR 39</a> data.</p>
</li>
<li>
<p>Add <code>Cldr.Unit.validate_grammatical_gender/2</code></p>
</li>
<li>
<p>Add <code>Cldr.Unit.known_grammatical_cases/0</code></p>
</li>
<li>
<p>Add <code>Cldr.Unit.known_grammatical_genders/0</code></p>
</li>
<li>
<p>Add <code>Cldr.Unit.known_measurement_system_names/0</code></p>
</li>
<li>
<p>Add <code>Cldr.Unit.invert/1</code> to invert a “per” unit. This allows for increased compatibility for conversions. For example, “liters per 100 kilometers” is a measure of consumption, as is “miles per gallon”.  However these two units are not convertible without inverting one of them first since one is “volume per length” and the other is “length per volume”.</p>
</li>
<li>
<p>Add <code>Cldr.Unit.conversion_for/2</code> to return a conversion list used when converting one unit to another.</p>
</li>
<li>
<p>Add <code>Cldr.Unit.grammatical_gender/2</code> to return the grammatical gender for a given unit and locale</p>
</li>
<li>
<p>Add <code>Cldr.Unit.conversion_for/2</code> to return a conversion list used when converting one unit to another.</p>
</li>
<li>
<p>Add support for grammatical cases for <code>Cldr.Unit.to_string/2</code> and <code>Cldr.Unit.to_iolist/2</code>. Not all locales support more than the nominative case. The nominative case is the default. Any configured “Additional Units” in a backend module will need to be modified to put the localisations a map with the key <code>:nominative</code>.  See the readme for more information on migrating additional units.  On example is:</p>
</li>
</ul>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp.Cldr do
  use Cldr.Unit.Additional

  use Cldr,
    locales: ["en", "fr", "de", "bs", "af", "af-NA", "se-SE"],
    default_locale: "en",
    providers: [Cldr.Number, Cldr.Unit, Cldr.List]

  unit_localization(:person, "en", :long,
    nominative: %{
      one: "{0} person",
      other: "{0} people"
    },
    display_name: "people"
  )
end
</code></pre>
<ul>
<li>Support conversions where one of the base units is the inverted conversion of the other. This allows conversion between, for example, <code>mile per gallon</code> and <code>liter per 100 kilometer</code>. These are both compound units of <code>length</code> and <code>volume</code> but are inverse representations from each other.</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="209657" data-batch-url="/posts/batch_likers">
                        4
                      </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/59">Post #58</a>
	                </div>
	            </div>
              <div id="likers-container-209657" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="209657"
                     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 #58"></div>
  </section>
</div>
    <div class="postbit" id="209658" data-post-id="209658">
  <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 class="mention" href="/u/tmbb" rel="nofollow">@tmbb</a> To the best of my knowledge the full ICU message format is supported for parsing (with some modest extensions that leverage Elixir protocols) and for formatting. The only area I haven’t fully explored is how well the compile-time integration with <code>mezzofanti</code> operates.</p>
<p>Still very motivated to support your efforts - I think its a huge step forward for Elixir I18n and L10n. Let me know where you see issues or opportunities and I’ll jump on it.  Issues very welcome - now that I have CLDR39 updates done and launched I have a little more capacity to work on this.</p> 
	            </div>

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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’m wondering if these two calls should return the same result?</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">iex&gt; Cldr.Time.Interval.to_string! ~T[20:00:00], ~T[22:00:00]
"8:00 – 10:00 PM"

iex&gt; Cldr.Time.Interval.to_string! ~T[08:00:00], ~T[22:00:00]
"8:00 – 10:00 PM"
</code></pre>
<p>In the 2nd case, I would have expected <code>"8:00 AM – 10:00 PM"</code></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="212818" 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/61">Post #60</a>
	                </div>
	            </div>
              <div id="likers-container-212818" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="212818"
                     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 #60"></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=7">Load more posts (60 remaining)</a>
</div></template></turbo-stream>