<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="387310" data-post-id="387310">
  <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>Wow, you noticed!</p>
<p>TLDR; I would dearly love to have Localize be a first class citizen in the HEEX/Liveview world. But I lack the design skills and the Liveview skills and experience to be confident in making good decisions. I am happy to do “work”, but I need community guidance and review.</p>
<h3><a name="p-387310-current-thoughts-1" class="anchor" href="#p-387310-current-thoughts-1" aria-label="Heading link" rel="nofollow"></a>Current thoughts</h3>
<p>And they are just throughts.</p>
<ul>
<li>MF2 messages should flow into a HEEX template with minimum friction.</li>
<li>MF2 messages with the syntax should also flow easily into a template, especially if the message is static text. The HTML markup is guaranteed safe because there are no escape hatches in MF2 for the markup syntax.</li>
<li>I wish we had L10N components for input/output. I know this is a much wider issue and I don’t think either W3C or Unicode/CLDR are tackling it. Why can’t we enter dates in our own calendars. Or even numbers with our own separators. Let alone money with currency. <code>Intl</code> can do the formatting - but the input? Not so much.</li>
<li>I wish we had a localisation workbench that just plugged into Phoenix in dev to let us right-click a message on a screen and translate it. Do translation of complex messages in real time and see them flow into the application.  Easily see our application in different translated languages and see if the layout still works.</li>
</ul>
<p>Actually, I am working actively on the localisation workbench, but not far enough allow for a preview.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387310" data-batch-url="/posts/batch_likers">
                        8
                      </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/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-387310" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387310"
                     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 #31"></div>
  </section>
</div>
    <div class="postbit" id="387630" data-post-id="387630">
  <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 wanted to note that I have completed an update to <a href="https://hex,pm/packages/ex_money" rel="nofollow">ex_money</a> to be supported on Localize and and update to <a href="https://hex.pm/packages/digital_token" rel="nofollow">digital_token</a> to revise how and what token data is downloaded from the ISO authority, They will be out early next week.</p>
</blockquote>
<p><code>ex_money</code> version 6.0.0-rc.0 is now released, see the <a href="https://forum.elixirforum.com/t/ex-money-money-with-currency-type/20143/11" rel="nofollow">announcement</a> for more information.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387630" 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/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-387630" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387630"
                     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 #32"></div>
  </section>
</div>
    <div class="postbit" id="387631" data-post-id="387631">
  <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>For the 7 people using it, <a href="https://hex.pm/pacakges/localize_units_sql" rel="nofollow">localize_units_sql</a> has been published. It replaces <code>ex_cldr_units_sql</code> for when you want to serialise <code>Localize.Unit.t</code> to a database.</p>
<p>I <em>think</em> thats the migration to <code>Localize</code> complete for all the ecosystem packages. Please let me know if you see something is missing that you depend upon.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="387631" 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/localize-next-generation-localisation-ex-cldr-v3-0/73933/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-387631" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="387631"
                     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 #33"></div>
  </section>
</div>
    <div class="postbit" id="388681" data-post-id="388681">
  <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>Will the publishing today of <a href="https://hex.pm/packages/localize/0.33.0" rel="nofollow">localize version 0.33.0</a> and <a href="https://hex.pm/packages/localize_web/0.7.0" rel="nofollow">localize_web version 0.7.0</a> its now possible to take advantage of some macro magic to make localizing templates that much easier.</p>
<h2><a name="p-388681-message-format-2-translation-sigils-for-phoenix-with-inline-markup-1" class="anchor" href="#p-388681-message-format-2-translation-sigils-for-phoenix-with-inline-markup-1" aria-label="Heading link" rel="nofollow"></a>Message Format 2 translation sigils for Phoenix, with inline markup</h2>
<p><a href="https://hex.pm/packages/localize" rel="nofollow">Localize</a> and <a href="https://hex.pm/packages/localize_web" rel="nofollow">localize_web</a> add a small set of compile-time tools for writing ICU MessageFormat 2 translations directly in Elixir and HEEx — including translations that contain inline markup like <code>{#bold}…{/bold}</code> or <code>{#link navigate=…}…{/link}</code>.</p>
<p>The design borrows heavily from <a href="https://hex.pm/packages/gettext_sigils" rel="nofollow"><code>gettext_sigils</code></a> — that package’s <code>~t</code> sigil for terse Gettext interpolation is one of the most pleasant translation APIs in any language, and the new tools here are a direct homage. If you’re using plain Gettext today, <code>gettext_sigils</code> is still the right choice; the new sigils make sense only if you want MF2’s features (selectors, plurals, gender, locale-aware formatters) or inline markup.</p>
<h2><a name="p-388681-whats-new-2" class="anchor" href="#p-388681-whats-new-2" aria-label="Heading link" rel="nofollow"></a>What’s new</h2>
<h3><a name="p-388681-t-sigil-plain-text-translation-with-compile-time-mf2-binding-extraction-3" class="anchor" href="#p-388681-t-sigil-plain-text-translation-with-compile-time-mf2-binding-extraction-3" aria-label="Heading link" rel="nofollow"></a><code>~t</code> sigil — plain-text translation with compile-time MF2 binding extraction</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir">use Localize.Message.Sigils, backend: MyApp.Gettext

~t"Hello, #{user.name}!"
# at compile time becomes ....
gettext("Hello, {$user_name}!", %{user_name: user.name})
</code></pre>
<p>The msgid that goes into <code>.po</code> is canonical MF2 — translators can use the full MF2 grammar per locale:</p>
<pre data-code-wrap="pot"><code class="lang-pot">msgid "You have {$count} item(s)"
msgstr ".input {$count :number}\n.match $count\n0 {{Aucun}}\n1 {{Un}}\n* {{{$count} éléments}}"
</code></pre>
<h3><a name="p-388681-localizehtmlmessage-component-render-mf2-markup-as-heex-4" class="anchor" href="#p-388681-localizehtmlmessage-component-render-mf2-markup-as-heex-4" aria-label="Heading link" rel="nofollow"></a><code>&lt;Localize.HTML.message&gt;</code> component — render MF2 markup as HEEx</h3>
<p>MF2 messages can contain inline markup. The component walks the message and dispatches each markup tag to a registered renderer. Defaults cover <code>bold</code>/<code>strong</code>, <code>italic</code>/<code>em</code>/<code>emphasis</code>, <code>code</code>, <code>link</code>, <code>br</code>. The <code>link</code> default uses Phoenix’s <code>&lt;.link&gt;</code> so translators can write <code>navigate=…</code>, <code>patch=…</code>, or <code>href=…</code>:</p>
<pre data-code-wrap="heex"><code class="lang-heex">&lt;Localize.HTML.message msgid="Visit {#link navigate=|/dashboard|}your dashboard{/link}" /&gt;
</code></pre>
<p>Custom markup is registered globally or per-call:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">config :localize_web, :mf2_markup,
  components: %{"user" =&gt; &amp;MyAppWeb.MF2.user_mention/1}
</code></pre>
<pre data-code-wrap="heex"><code class="lang-heex">&lt;Localize.HTML.message msgid="Posted by {#user id=42}Kip{/user}" /&gt;
</code></pre>
<p>Unknown MF2 tags raise a compile-time exception.</p>
<h3><a name="p-388681-localizehtmlt1-macro-the-recommended-heex-approach-5" class="anchor" href="#p-388681-localizehtmlt1-macro-the-recommended-heex-approach-5" aria-label="Heading link" rel="nofollow"></a><code>Localize.HTML.t/1</code> macro — the recommended HEEx approach</h3>
<p>The sigil and the component combined into a single macro for use directly inside HEEx body interpolation - rendering any embedded MF2 markup on the way:</p>
<pre data-code-wrap="heex"><code class="lang-heex">&lt;h1&gt;{t("Hello, #{@user.name}!")}&lt;/h1&gt;

&lt;p&gt;{t("By signing up you accept our {#link navigate=|/terms|}terms{/link}.")}&lt;/p&gt;

&lt;p&gt;{t("Read {#bold}#{@count} item(s){/bold}")}&lt;/p&gt;
</code></pre>
<p>The <code>assigns</code> prefix that HEEx auto-injects for <code>@foo</code> is stripped during binding derivation, so <code>#{@user.name}</code> derives the binding <code>user_name</code> (not <code>assigns_user_name</code>).</p>
<h3><a name="p-388681-setup-6" class="anchor" href="#p-388681-setup-6" aria-label="Heading link" rel="nofollow"></a>Setup</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir"># Gettext backend with MF2 interpolation
defmodule MyApp.Gettext do
  use Gettext.Backend,
    otp_app: :my_app,
    interpolation: Localize.Gettext.Interpolation
end

# In MyAppWeb.html_helpers/0 or similar:
quote do
  use Phoenix.Component
  import Localize.HTML
  use Localize.Message.Sigils,
    backend: MyApp.Gettext,
    sigils: [domain: "messages"]
end
</code></pre>
<p>Now <code>~t</code>, <code>t/1</code>, and <code>&lt;.message&gt;</code> are all available in every LiveView, component, and HEEx-using module.</p>
<h3><a name="p-388681-when-to-use-what-7" class="anchor" href="#p-388681-when-to-use-what-7" aria-label="Heading link" rel="nofollow"></a>When to use what</h3>
<ul>
<li>Inside HEEx → <code>t/1</code>. Handles plain text and markup, extracts to <code>.po</code>.</li>
<li>Outside HEEx (error messages, page titles assigned to vars, etc.) → <code>~t</code>. Returns a <code>String.t()</code>. Markup-free.</li>
<li>Dynamic msgid (for example, loaded from a database) → <code>&lt;.message msgid={...} bindings={...} /&gt;</code>. Bypasses Gettext extraction (the msgid isn’t a literal) but still walks markup.</li>
</ul>
<h3><a name="p-388681-credit-feedback-8" class="anchor" href="#p-388681-credit-feedback-8" aria-label="Heading link" rel="nofollow"></a>Credit &amp; feedback</h3>
<p>Huge thanks to the <code>gettext_sigils</code> authors — the <code>~t</code> sigil shape, the modifier-table idea, the compile-time interpolation walk, and even some of the binding-derivation rules are lifted near-verbatim from that package. If you’ve used <code>gettext_sigils</code> before, almost everything here should feel familiar.</p>
<p>If, after localize 1.0, its possible to be based directly on <code>gettext_sigils</code>, thats what I’ll do.</p>
<p>Docs:</p>
<ul>
<li><a href="https://hexdocs.pm/localize_web/mf2-messages-in-heex.html" rel="nofollow">Localize MF2 messages in HEEx guide</a></li>
<li><a href="https://hexdocs.pm/localize/Localize.Message.Sigils.html" rel="nofollow">Localize.Message.Sigils</a></li>
<li><a href="https://hexdocs.pm/localize_web/Localize.HTML.Message.html" rel="nofollow">Localize.HTML.Message</a></li>
</ul>
<p>Feedback welcome — particularly on the markup component registry shape (per-call vs. config vs. defaults), and on whether the <code>t/1</code> macro’s binding-derivation rules match what you would actually write.</p> 
	            </div>

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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s here! I can’t wait to try it out. Thanks for the massive effort, this will make translations much nicer.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="388736" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/localize-next-generation-localisation-ex-cldr-v3-0/73933/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-388736" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="388736"
                     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 #35"></div>
  </section>
</div>
    <div class="postbit" id="388752" data-post-id="388752">
  <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="munksgaard" data-post="36" data-topic="73933">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/munksgaard/48/36998_2.png" class="avatar"> munksgaard:</div>
<blockquote>
<p>this will make translations much nicer.</p>
</blockquote>
</aside>
<p>In which case you might also find <a href="https://hex.pm/packages/localize_translate" rel="nofollow">localize_translate</a> useful as well - just published today.</p>
<p>It’s an Ecto add-on that keeps per-locale translations in a JSONB column on the schema itself, instead of the common translation side-table.</p>
<p>It’s a continuation of <a href="https://hex.pm/packages/trans" rel="nofollow"><code>trans</code></a> by <a href="https://github.com/crbelaus" rel="nofollow">@crbelaus</a> and the <code>ex_cldr_trans</code> fork, now built on <a href="https://hex.pm/packages/localize" rel="nofollow"><code>localize</code></a> for CLDR-aware locale handling.</p>
<h3><a name="p-388752-examples-1" class="anchor" href="#p-388752-examples-1" aria-label="Heading link" rel="nofollow"></a>Examples</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp.Article do  
  use Ecto.Schema  
  use Localize.Translate,    
    translates: [:title, :body],    
    locales: [:en, :es, :fr],    
    default_locale: :en

  schema "articles" do    
    field :title, :string    
    field :body, :string    
    translations :translations  
  end
end

# Reading
Localize.Translate.translate(article, :title, :es)
#=&gt; "Cómo escribir un corrector ortográfico"

# CLDR parent walk: :"es-419" → :es
{:ok, tag} = Localize.LanguageTag.new("es-419")
Localize.Translate.translate(article, :title, tag)
#=&gt; "Cómo escribir un corrector ortográfico"

# Querying
import Localize.Translate.QueryBuilder
from a in Article, where: translated(Article, a.title, :fr) == "Elixir"
</code></pre>
<p>The query compiles to a plain <code>COALESCE(translations-&gt;'fr'-&gt;&gt;'title', title)</code> fragment — no JOINs, no per-locale tables, no extra schemas to keep in sync.</p>
<p>A few things the <code>:localize</code> integration gets you for free:</p>
<ul>
<li>Locale identifiers validate against CLDR at compile time and at every call site, so typos like <code>:englsh</code> raise immediately rather than silently miss.</li>
<li><code>Localize.LanguageTag</code> is accepted everywhere; fallback chains walk CLDR parents automatically (<code>:"en-AU"</code> → <code>:"en-001"</code> → <code>:en</code>).</li>
<li><code>translate/1,2</code> default to <code>Localize.get_locale/0</code>, so you can wire it into a Plug-based locale strategy in one line.</li>
</ul>
<p>There’s a <a href="https://hexdocs.pm/localize_translate/translatable_database_systems.html" rel="nofollow">walkthrough guide</a> covering the design rationale, schema setup, the bundled Postgres <code>translate_field</code> migration, Phoenix form patterns, testing, and operational concerns (storage, renames, replication).</p>
<h3><a name="p-388752-links-2" class="anchor" href="#p-388752-links-2" aria-label="Heading link" rel="nofollow"></a>Links</h3>
<p>Hex: <a href="https://hex.pm/packages/localize_translate" class="inline-onebox" rel="nofollow">localize_translate | Hex</a><br>
Docs: <a href="https://hexdocs.pm/localize_translate" class="inline-onebox" rel="nofollow">Localize Translate v0.1.0 — Documentation</a></p>
<h3><a name="p-388752-feedback-3" class="anchor" href="#p-388752-feedback-3" aria-label="Heading link" rel="nofollow"></a>Feedback</h3>
<p>Happy to hear feedback, especially from anyone with a translatable-content shape that <em>doesn’t</em> fit this pattern — the guide has a “when this doesn’t fit” section but I’d love to expand it with real cases.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="388752" 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/localize-next-generation-localisation-ex-cldr-v3-0/73933/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-388752" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="388752"
                     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 #36"></div>
  </section>
</div>
    <div class="postbit" id="389119" data-post-id="389119">
  <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>Continuing on from the <a href="https://hex.pm/packages/ex_money_input" rel="nofollow">money input component</a>, today some additional components for <code>localize</code> are published.</p>
<p>You can try all the components out in the new playground at <a href="https://inputs.elixir-localize.com" rel="nofollow">https://inputs.elixir-localize.com</a></p>
<h3><a name="p-389119-number-inputs-1" class="anchor" href="#p-389119-number-inputs-1" aria-label="Heading link" rel="nofollow"></a>Number inputs</h3>
<p><a href="https://hex.pm/packages/localize_number_inputs" rel="nofollow">Localized number input</a> which respect a locales grouping and decimal separators.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/f/1/f1ce83718a446c49da3cc00f3127b4ac3a3e531d.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/f1ce83718a446c49da3cc00f3127b4ac3a3e531d" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/f/1/f1ce83718a446c49da3cc00f3127b4ac3a3e531d.jpeg" alt="image" data-base62-sha1="yv7wrYww9fw1o19IwToWfRv9Pat" width="690" height="492" data-dominant-color="F6F7FA"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×856 33 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h3><a name="p-389119-units-input-2" class="anchor" href="#p-389119-units-input-2" aria-label="Heading link" rel="nofollow"></a>Units input</h3>
<p><a href="https://hex.pm/packages/localize_number_inputs" rel="nofollow">Localized number input</a> also provides a units input that includes a unit picker. The list of units is presented with the locales measurement system units for a category listed first (metric, US, UK).</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/3/e/3e5df9ef40f907a509b194ea045ba56c9a255a6e.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/3e5df9ef40f907a509b194ea045ba56c9a255a6e" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/3/e/3e5df9ef40f907a509b194ea045ba56c9a255a6e_2_690x558.jpeg" alt="image" data-base62-sha1="8TIWGfXn4w2bHKoAxcbhbUu5i4S" width="690" height="558" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/3/e/3e5df9ef40f907a509b194ea045ba56c9a255a6e_2_690x558.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/3/e/3e5df9ef40f907a509b194ea045ba56c9a255a6e_2_1035x837.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/original/3X/3/e/3e5df9ef40f907a509b194ea045ba56c9a255a6e.jpeg 2x" data-dominant-color="ECEFF5"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×972 66.7 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h3><a name="p-389119-money-input-3" class="anchor" href="#p-389119-money-input-3" aria-label="Heading link" rel="nofollow"></a>Money input</h3>
<p><a href="https://hex.pm/packages/ex_money_input" rel="nofollow">Money input</a> makes it easy to input money amounts in a given currency. The component allows specify the preferred currencies.</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/7/c/7c8ddd65ef6b0839911aec41fa425402310dbbd1.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/7c8ddd65ef6b0839911aec41fa425402310dbbd1" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/7/c/7c8ddd65ef6b0839911aec41fa425402310dbbd1_2_690x726.jpeg" alt="image" data-base62-sha1="hLR9jVLD3nExX6v5JAsNyXrPSKt" width="690" height="726" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/7/c/7c8ddd65ef6b0839911aec41fa425402310dbbd1_2_690x726.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/7/c/7c8ddd65ef6b0839911aec41fa425402310dbbd1_2_1035x1089.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/original/3X/7/c/7c8ddd65ef6b0839911aec41fa425402310dbbd1.jpeg 2x" data-dominant-color="F2F4F5"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×1263 68.8 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h3><a name="p-389119-date-input-4" class="anchor" href="#p-389119-date-input-4" aria-label="Heading link" rel="nofollow"></a>Date input</h3>
<p><a href="https://hex.pm/packages/localize_datetime_inputs" rel="nofollow">Localized calendar input</a> provides a locale- and calendar-aware date picker for single dates and date ranges.</p>
<h4><a name="p-389119-single-date-5" class="anchor" href="#p-389119-single-date-5" aria-label="Heading link" rel="nofollow"></a>Single date</h4>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/6/7/67852168d1c16d7a59905e06da8bfcaad3d71d42.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/67852168d1c16d7a59905e06da8bfcaad3d71d42" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/6/7/67852168d1c16d7a59905e06da8bfcaad3d71d42_2_690x564.jpeg" alt="image" data-base62-sha1="eLMpqZRChgOkTQRufGSemc5F8xs" width="690" height="564" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/6/7/67852168d1c16d7a59905e06da8bfcaad3d71d42_2_690x564.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/6/7/67852168d1c16d7a59905e06da8bfcaad3d71d42_2_1035x846.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/original/3X/6/7/67852168d1c16d7a59905e06da8bfcaad3d71d42.jpeg 2x" data-dominant-color="F2F4F6"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×981 57.8 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<h4><a name="p-389119-date-range-6" class="anchor" href="#p-389119-date-range-6" aria-label="Heading link" rel="nofollow"></a>Date range</h4>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/c/d/cd4cd058ce80fb3da1902290f603492972f6f43e.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/cd4cd058ce80fb3da1902290f603492972f6f43e" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/c/d/cd4cd058ce80fb3da1902290f603492972f6f43e_2_690x547.jpeg" alt="image" data-base62-sha1="tiasaAvPOYB8B3NnwDnaOe8nkia" width="690" height="547" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/c/d/cd4cd058ce80fb3da1902290f603492972f6f43e_2_690x547.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/c/d/cd4cd058ce80fb3da1902290f603492972f6f43e_2_1035x820.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/original/3X/c/d/cd4cd058ce80fb3da1902290f603492972f6f43e.jpeg 2x" data-dominant-color="F0F3F6"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">1200×953 55.7 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p> 
	            </div>

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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey <a class="mention" href="/u/kip" rel="nofollow">@kip</a>, I just wanted to thank you again for your awesome work. The transition to Localize was easy. Also, I like the clearer naming of some functions. The <code>localize_web</code> package is also awesome. I’m really picky about dependencies, but Localize is a must!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="389938" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/localize-next-generation-localisation-ex-cldr-v3-0/73933/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-389938" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="389938"
                     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 #38"></div>
  </section>
</div>
    <div class="postbit" id="389945" data-post-id="389945">
  <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="munksgaard" data-post="31" data-topic="73933">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/munksgaard/48/36998_2.png" class="avatar"> munksgaard:</div>
<blockquote>
<p>This is the foundation for HTML/HEEX renderers in companion packages</p>
</blockquote>
</aside>
<p>I should have updated earlier.  There is now a <a href="https://localize-web.hexdocs.pm/Localize.HTML.html#t/1" rel="nofollow">Localize.HTML.t/1</a> macro that, used inside a HEEX template, renders an MF2 message, preserving the embedded MF2 markup and returning a raw HTML string.</p>
<h3><a name="p-389945-example-1" class="anchor" href="#p-389945-example-1" aria-label="Heading link" rel="nofollow"></a>Example</h3>
<p>From the docs:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">&lt;h1&gt;{t("Hello, #{@user.name}!")}&lt;/h1&gt;
&lt;p&gt;{t("By signing up you accept our {#link navigate=|/terms|}terms{/link}.")}&lt;/p&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="389945" 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/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-389945" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="389945"
                     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 #39"></div>
  </section>
</div>
    <div class="postbit" id="389993" data-post-id="389993">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oh man!! Those macros being officially part of the shape of localize is nice!</p> 
	            </div>

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