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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="belaustegui" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/belaustegui/120/36580_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  belaustegui
                    <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>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi again! We got a new version of Trans!! <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>
<p>The only change in the new 2.1.0 version is the <strong>support of Ecto 3.0</strong> as a dependency. Client code using Trans should keep working as usual without any modification.</p>
<p>You can see the <a href="https://github.com/crbelaus/trans/releases/tag/2.1.0" rel="noopener nofollow ugc">release notes </a> on <a href="https://github.com/crbelaus/trans" rel="noopener nofollow ugc">GitHub</a> or fetch the new version fron <a href="https://hex.pm/packages/trans/2.1.0" rel="nofollow">hex.pm</a>.</p>
<p>As usual, any comments, suggestions, issues or pull-requests are more than welcome!<br>
Love <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" 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="107162" 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/trans-embedded-translations-for-elixir/840/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-107162" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="107162"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="107181" data-post-id="107181">
  <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>Awesome. Just upgraded. The only change in my case was dropping off <code>{:ecto, "~&gt; 3.0", override: true}</code> from my <code>deps</code>. Thank you!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="107181" 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/trans-embedded-translations-for-elixir/840/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-107181" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="107181"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="161450" data-post-id="161450">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="belaustegui" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/belaustegui/120/36580_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  belaustegui
                    <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>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi everybody! I’ve just published a new release of Trans!</p>
<p>Thanks to <a class="mention" href="/u/sfusato" rel="nofollow">@sfusato</a> and <a class="mention" href="/u/gorav" rel="nofollow">@gorav</a> the main change in this 2.2.0 version is that <strong>the locale can now be passed as a string</strong>, so we can use <code>Trans.Translator.translate/3</code> with the value returned by <code>Gettext.get_locale/0</code> <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"> For example we can now write something as:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Trans.Translator.translate(article, :title, Gettext.get_locale())
</code></pre>
<p>This release also removes Faker as a dependency, updates ExDoc and <strong>removes support for Elixir versions older than 1.6</strong> (which are not officially supported by the core team anymore).</p>
<p>You can see the <a href="https://github.com/crbelaus/trans/releases/tag/v2.2.0" rel="noopener nofollow ugc">release notes</a> on <a href="https://github.com/crbelaus/trans" rel="noopener nofollow ugc">GitHub</a> or fetch the new version from <a href="https://hex.pm/packages/trans" rel="nofollow">hex.pm</a>.</p>
<p>As usual, any comments, suggestions, issues or pull-requests are more than welcome!<br>
Love <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" 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="161450" 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/trans-embedded-translations-for-elixir/840/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-161450" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="161450"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="161498" data-post-id="161498">
  <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
                  </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 is great to see, it makes it really easy for <a href="https://hex.pm/packages/ex_cldr" rel="nofollow">ex_cldr</a> users to get in on the party too. For example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Trans.Translator.translate(article, :title, MyApp.Cldr.get_locale().cldr_locale_name)
</code></pre>
<p>One thought for your consideration is locale naming.</p>
<ul>
<li>
<p>A locale name in <a href="https://hexdocs.pm/gettext/Gettext.html#module-locale" rel="nofollow">Gettext</a> is: <code>arbitrary strings as long as they match a directory name</code> which is no issue for simple locale names like <code>es</code>.  But it does create ambiguity when you want Spanish as spoken in Chile. Is it <code>es-CL</code> or <code>es_CL</code> or <code>es-cl</code> or <code>ES_CL</code>?</p>
</li>
<li>
<p><a href="https://www.gnu.org/software/libc/manual/html_node/Locale-Names.html" rel="nofollow">Posix locale names</a> use <code>_</code> as the separator between a language code and a territory code. Therefore <code>es_CL</code>.  Posix locale names aren’t full language tags (in the Unicode sense) but of course they are very common and fulfil most requirements.</p>
</li>
<li>
<p><a href="https://unicode.org/reports/tr35/#Unicode_locale_identifier" rel="nofollow">Unicode’s CLDR</a> says <code>The "-" and "_" separators are treated as equivalent, although "-" is preferred</code>. Therefore <code>es-CL</code>.</p>
</li>
<li>
<p><a href="https://tools.ietf.org/html/bcp47" rel="nofollow">BCP47</a> is the formal definition applied for locale name in <code>ex_cldr</code> and therefore uses the “-” in its canonical form. Whereas <a href="http://site.icu-project.org/home" rel="nofollow">ICU</a>, a common CLDR implementation, uses “_” since its primarily targeted at the posix-compliant world.</p>
</li>
<li>
<p>Last point, <a href="https://unicode.org/reports/tr35/#Unicode_locale_identifier" rel="nofollow">All identifier field values are case-insensitive</a> at least as defined by ICU and CLDR.</p>
</li>
</ul>
<p>I’ve found this to be a source of occasional confusion: Do I use <code>-</code> or <code>_</code>?  Is <code>es-cl</code> the same as <code>es-CL</code>? Since both <code>Gettext</code> and <code>CLDR</code> allow either I force one canonical approach internally <code>ex_cldr</code>.</p>
<p>I like to suggest <code>Trans</code> consider the implications of this too since it now takes a string locale name key. Perhaps:</p>
<ul>
<li>At least treat <code>-</code> and <code>_</code> as equivalent</li>
<li>And desirably treat all identifiers as case insensitive<br>
(which also happens to be what I do in <code>ex_cldr</code>). This might have backward compatibility issues since its easy on a case insensitive file system (most Mac file systems, Windows) but not on Linux and friends.</li>
<li>Or maybe just be really clear about the canonical form you expect and make it the developers concern.</li>
</ul>
<p>Thanks for a great library, hope this wasn’t too much of a dive into esoterica!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="161498" 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/trans-embedded-translations-for-elixir/840/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-161498" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="161498"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="226564" data-post-id="226564">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="belaustegui" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/belaustegui/120/36580_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  belaustegui
                    <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>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi again! I’ve just published a new release of Trans.</p>
<p>Thanks to <a class="mention" href="/u/sfusato" rel="nofollow">@sfusato</a>, <a class="mention" href="/u/rxassim" rel="nofollow">@RxAssim</a> and Philipp Waldmann for their awesome contributions:</p>
<ul>
<li><strong>Translations can now be stored using embedded schemas.</strong> This is now the preferred way of using Trans since it provides stronger, explicit and easy to use translations. The old plain maps are still supported, of course.</li>
<li><strong>Entire structs can now be translated</strong> using the new <code>translate/2</code> function</li>
<li><strong>We can automatically raise an error if a translation does not exist</strong> by using the new <code>translate!/3</code> function.</li>
<li><strong><a href="https://hexdocs.pm/trans/" rel="noopener nofollow ugc">Documentation</a> has been greatly improved</strong> to showcase the new structured translations approach and to include specs in the public functions.</li>
</ul>
<p>This release also updates the Trans dependencies to ensure clean compilations without warnings and <strong>requires Elixir 1.7 or higher</strong>.</p>
<p>You can see the <a href="https://github.com/crbelaus/trans/releases/tag/v2.3.0" rel="noopener nofollow ugc">release notes</a> on <a href="https://github.com/crbelaus/trans" rel="noopener nofollow ugc">GitHub</a> or fetch the new version from <a href="https://hex.pm/packages/trans" rel="nofollow">hex.pm</a>.</p>
<p>As usual, any comments, suggestions or pull-requests are more than welcome.<br>
Love <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" 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="226564" 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/trans-embedded-translations-for-elixir/840/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-226564" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="226564"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="293274" data-post-id="293274">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="belaustegui" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/belaustegui/120/36580_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  belaustegui
                    <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>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi again! I’ve just published Trans 3.0.0.</p>
<p>Thanks to <a class="mention" href="/u/kip" rel="nofollow">@kip</a> , <a href="https://github.com/kianmeng" rel="noopener nofollow ugc">Kian-Meng Ang</a> and <a href="https://github.com/0urobor0s" rel="noopener nofollow ugc">Daniel Tinoco</a> for their awesome contributions:</p>
<ul>
<li><strong>Unstructured translations are not supported anymore.</strong> They have been discouraged for some time but this release cuts them out in favour of structured translations using regular schemas as they provide much more explicitness and robustness.</li>
<li><strong>The new <code>Trans.translations/2</code> generates the translation code for you.</strong> For most cases this macro will generate the required nested schemas so you don’t have to write the code manually. If you prefer to write the translation schemas yourself you can always continue to do it just like you did before.</li>
<li><strong>Locale fallback chains are now supported.</strong> When translating a struct or querying the database you may provide a list of locales instead of a single locale. Trans will fall back to the next locale in the list until it finds a translated one.</li>
<li><strong>Docs and tests have been improved</strong> to showcase the new functionalities.</li>
</ul>
<p>This release also updates Trans dependencies and <strong>bumps the minimum Elixir supported version to 1.11</strong>.</p>
<p>You can see the <a href="https://github.com/crbelaus/trans/releases/tag/v3.0.0" rel="noopener nofollow ugc">release notes</a> on <a href="https://github.com/crbelaus/trans" rel="noopener nofollow ugc">GitHub</a> or fetch the new version from <a href="https://hex.pm/packages/trans" rel="nofollow">hex.pm</a>.</p>
<p>As usual, any comments, suggestions or pull-requests are more than welcome.<br>
Love <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" 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="293274" 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/trans-embedded-translations-for-elixir/840/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-293274" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="293274"
                     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>