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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Awesome stuff as usual, we’re rocking Localize in production and it has been a very, <em>very</em> good experience. <code>Localize.Inputs.Date.Components.DatePickerLive</code> got me thinking. We’re used to splitting locale into language, timezone and formatting conventions. We have a lot of customers who want to see e.g. the UI in English, in Amsterdam timezone, with Swedish datetime format. I feel like most people (and libraries) assume locale should implicitly determine both language and formatting preferences. Just out of curiosity, how do you, or anyone here, feel about 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="390083" 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/localize-next-generation-localisation-ex-cldr-v3-0/73933/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-390083" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="390083"
                     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 #41"></div>
  </section>
</div>
    <div class="postbit" id="390086" data-post-id="390086">
  <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">
								<blockquote>
<p>Just out of curiosity, how do you, or anyone here, feel about this?</p>
</blockquote>
<p>As a library writer I try to be aggressively ambivalent about it.  By which I mean, use <code>Localize.default_locale/0</code> if not specified, but take a <code>:locale</code> option on all functions so you can achieve what you’re after - at least in Localize.</p>
<p>I broadly agree that users see value in being more explicit about their choices if they want to. But should also get a reasonable response if they don’t have firm preferences.  The UI to make all of that straight forward is not something I’m skilled at at all!</p>
<p>PS: Really glad you’re finding Localize up to the job, thanks for saying so.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="390086" 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/localize-next-generation-localisation-ex-cldr-v3-0/73933/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-390086" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="390086"
                     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 #42"></div>
  </section>
</div>
    <div class="postbit" id="391181" data-post-id="391181">
  <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 <a href="https://hex.pm/packages/localize/0.45.0" rel="nofollow">localize version 0.45.0</a> which has a primary focus on conformance, robustness and code quality. A <em>lot</em> of bugs have been squashed.</p>
<p>In combination with this release as well as 0.44.0, 0.43.0, 0.42.0 and 0.41.0, I consider <code>Localize</code> now to be a solid 1.0 candidate release. This means that you can expect a period of stability after a flurry or work and you can expect a 1.0 candidate release by the end of July.</p>
<h3><a name="p-391181-changelogs-1" class="anchor" href="#p-391181-changelogs-1" aria-label="Heading link" rel="nofollow"></a>Changelogs</h3>
<ul>
<li><a href="https://github.com/elixir-localize/localize/releases/tag/v0.42.0" rel="nofollow">Localize 0.42.0</a></li>
<li><a href="https://github.com/elixir-localize/localize/releases/tag/v0.43.0" rel="nofollow">Localize 0.43.0</a></li>
<li><a href="https://github.com/elixir-localize/localize/releases/tag/v0.44.0" rel="nofollow">Localize 0.44.0</a></li>
<li><a href="https://github.com/elixir-localize/localize/releases/tag/v0.45.0" rel="nofollow">Localize 0.45.0</a></li>
</ul>
<h3><a name="p-391181-deprecations-2" class="anchor" href="#p-391181-deprecations-2" aria-label="Heading link" rel="nofollow"></a>Deprecations</h3>
<p>While it’s not yet at 1.0, I have tried to keep the public API stable. However in the interests of consistency in function naming and stability for the long term, I have made a few changes in <code>0.43.0</code>.</p>
<blockquote>
<p>The existing function names will continue to operate but will issue a depreciation message. The deprecated functions will be removed when I publish Localize 1.0.</p>
</blockquote>
<h4><a name="p-391181-deprecated-functions-and-their-replacements-3" class="anchor" href="#p-391181-deprecated-functions-and-their-replacements-3" aria-label="Heading link" rel="nofollow"></a>Deprecated functions (and their replacements)</h4>
<p>The naming rule is now uniform: <code>known_*</code> is the locale-independent CLDR universe, <code>supported_*</code> reflects configuration, and <code>*_for</code> is data localized into a display locale. The renamed functions are:</p>
<ul>
<li>
<p><code>Language.available_languages/1</code> → <code>Language.languages_for/1</code>.</p>
</li>
<li>
<p><code>Language.known_languages/1</code> → <code>Language.language_names_for/1</code>.</p>
</li>
<li>
<p><code>Script.available_scripts/1</code> → <code>Script.scripts_for/1</code>.</p>
</li>
<li>
<p><code>Script.known_scripts/1</code> → <code>Script.script_names_for/1</code>.</p>
</li>
<li>
<p><code>Subdivision.available_subdivisions/1</code> → <code>Subdivision.subdivisions_for/1</code>.</p>
</li>
<li>
<p><code>Subdivision.known_subdivisions/1</code> → <code>Subdivision.subdivision_names_for/1</code>.</p>
</li>
<li>
<p><code>Territory.available_styles/0</code> → <code>Territory.known_styles/0</code>.</p>
</li>
</ul>
<h4><a name="p-391181-renamed-options-4" class="anchor" href="#p-391181-renamed-options-4" aria-label="Heading link" rel="nofollow"></a>Renamed options</h4>
<p>Two option names are also swapped for consistency; the deprecated keys remain accepted until 1.0:</p>
<ul>
<li>
<p>The <code>:style</code> option of <code>Localize.Duration.to_string/2</code> and of <code>Localize.quote/2</code> is deprecated in favour of <code>:format</code>.</p>
</li>
<li>
<p>The <code>:format</code> option of <code>Localize.Unit.display_name/2</code> is deprecated in favour of <code>:style</code>.</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="391181" 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/localize-next-generation-localisation-ex-cldr-v3-0/73933/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-391181" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="391181"
                     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 #43"></div>
  </section>
</div>
    <div class="postbit" id="391202" data-post-id="391202">
  <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>One of the biggest complaints about <code>ex_cldr</code> has always been the compile time cost. <code>Localize</code> improved on that out-of-the-box, but not in a material way. But with today’s <a href="https://hex.pm/packages/localize/0.46.0" rel="nofollow">Localize version 0.46.0</a>, you can expect significant improvement in compile time.</p>
<p>On my Mac M1 Max, a <strong>cold compile has reduced from 66s → 3.5s, a 19x improvement</strong>. In addition, the generated BEAM files are 1.7Mb smaller.</p>
<p>Now you can expect Localize to be more robust, more conformant <em>and</em> faster at compiling.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="391202" data-batch-url="/posts/batch_likers">
                        9
                      </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/localize-next-generation-localisation-ex-cldr-v3-0/73933/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-391202" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="391202"
                     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 #44"></div>
  </section>
</div>
    <div class="postbit" id="391282" data-post-id="391282">
  <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">
								<h2><a name="p-391282-localize-the-road-to-10-1" class="anchor" href="#p-391282-localize-the-road-to-10-1" aria-label="Heading link" rel="nofollow"></a>Localize — the road to 1.0</h2>
<p>Localize consolidates the <code>ex_cldr_*</code> family into a single package — CLDR-based formatting for numbers, currencies, dates/times, units, lists, messages (MessageFormat 2) and locale-aware collation, with no compile-time backend modules.</p>
<p>It has been through an intensive quality cycle over the last weeks (releases 0.42 through 0.46: TR35 conformance fixes, the MessageFormat 2 working-group test suite, test coverage from 70% to 91%, and a compile-time reduction from ~66s to ~3.5s). The API has been stable since 0.43. It is time to talk about 1.0.</p>
<h3><a name="p-391282-end-of-july-2026-localize-10-2" class="anchor" href="#p-391282-end-of-july-2026-localize-10-2" aria-label="Heading link" rel="nofollow"></a>End of July 2026 — Localize 1.0</h3>
<p>The API that exists today in 0.46 is the 1.0 API. The only removals are the delegates and option keys deprecated since 0.43, per the notices they have carried (“removed by Localize 1.0”):</p>
<ul>
<li>The inventory functions renamed to the uniform scheme — <code>known_*</code> (the CLDR universe), <code>supported_*</code> (your configuration), <code>*_for</code> (localized into a display locale). The deprecated names are
<ul>
<li><code>Language.available_languages/1</code>,</li>
<li><code>Language.known_languages/1</code>,</li>
<li><code>Script.available_scripts/1</code>,</li>
<li><code>Script.known_scripts/1</code>,</li>
<li><code>Subdivision.available_subdivisions/1</code>,</li>
<li><code>Subdivision.known_subdivisions/1</code> and</li>
<li><code>Territory.available_styles/0</code>.</li>
</ul>
</li>
<li>The <code>:style</code> option of <code>Localize.Duration.to_string/2</code> and <code>Localize.quote/2</code> (use <code>:format</code>), and the <code>:format</code> option of <code>Localize.Unit.display_name/2</code> (use <code>:style</code>).</li>
</ul>
<p>If your app compiles today without deprecation warnings, Localize 1.0 is a drop-in upgrade.</p>
<h3><a name="p-391282-localize-10-does-not-drop-support-for-otp-26-3" class="anchor" href="#p-391282-localize-10-does-not-drop-support-for-otp-26-3" aria-label="Heading link" rel="nofollow"></a>Localize 1.0 does not drop support for OTP 26</h3>
<p>I announced that OTP 26 support ends on December 31st 2026, and that date stands. Localize 1.0 runs on OTP 26 exactly as 0.46 does (with <code>json_polyfill</code> in your deps). The only change is that applications starting on OTP 26 will log a one-time warning pointing at the December date.</p>
<h3><a name="p-391282-october-2026-cldr-49-4" class="anchor" href="#p-391282-october-2026-cldr-49-4" aria-label="Heading link" rel="nofollow"></a>October 2026 — CLDR 49</h3>
<p>This is the regular annual data update, probably shipped as a Localize 1.1 release when Unicode publishes CLDR 49. Data changes only from your perspective; any output changes that come from Unicode’s own data revisions will be listed in the changelog as usual.</p>
<h3><a name="p-391282-early-january-2027-localize-12-5" class="anchor" href="#p-391282-early-january-2027-localize-12-5" aria-label="Heading link" rel="nofollow"></a>Early January 2027 — Localize 1.2</h3>
<p>OTP 26 support is removed, honouring the December 31st end-of-support date. This is the release where <code>json_polyfill</code> stops being needed and stops being supported.</p>
<h3><a name="p-391282-what-to-do-now-to-prepare-for-10-6" class="anchor" href="#p-391282-what-to-do-now-to-prepare-for-10-6" aria-label="Heading link" rel="nofollow"></a>What to do now to prepare for 1.0</h3>
<ul>
<li>Upgrade to <a href="https://hex.pm/packages/localize" rel="nofollow">Localize 0.46</a> and fix any deprecation warnings — that is the entire 1.0 migration.</li>
<li>If you are on OTP 26, plan your OTP upgrade for before the end of the year.</li>
<li>If you are migrating from <code>ex_cldr_*</code>, the <a href="https://hexdocs.pm/localize/migration.html" rel="nofollow">migration guide</a> covers the mapping.</li>
</ul>
<h3><a name="p-391282-documentation-7" class="anchor" href="#p-391282-documentation-7" aria-label="Heading link" rel="nofollow"></a>Documentation</h3>
<ul>
<li>Docs are at <a href="https://hexdocs.pm/localize" rel="nofollow">hexdocs.pm/localize</a>,</li>
<li>Full changelog at <a href="https://hexdocs.pm/localize/changelog.html" rel="nofollow">hexdocs.pm/localize/changelog.html</a>,</li>
<li>Issues at <a href="https://github.com/elixir-localize/localize" rel="nofollow">github.com/elixir-localize/localize</a>.</li>
</ul>
<p>Feedback on the plan is welcome — particularly if the OTP 26 timeline creates a problem for your deployment that I have not considered.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="391282" 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/localize-next-generation-localisation-ex-cldr-v3-0/73933/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-391282" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="391282"
                     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>