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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Great! Thanks so much for providing such essential libs to elixir <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" 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="125152" 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/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-125152" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="125152"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="131340" data-post-id="131340">
  <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><em>Finally</em> updated <a href="https://hex.pm/packages/ex_cldr_dates_times" rel="nofollow">ex_cldr_dates_times</a> to <a href="https://hex.pm/packages/ex_cldr_dates_times/2.0.0" rel="nofollow">version 2.0</a>.  This completes the migration of the <code>Cldr_*</code> family to version 2.0.</p>
<p>Please note that <code>ex_cldr_dates_times</code> requires Elixir 1.8 or later since it leverages capabilities of the <code>Calendar</code> module.</p>
<p>It also depends on <code>ex_cldr_calendars</code> which implements enhanced calendar functionality including week-based calendars, financial year calendars and user defined calendars based upon the Gregorian calendar.  In future releases it will support additional calendars with a first focus on Persian and Islamic.</p>
<p>With this release out the door the <code>Cldr_*</code> family has only two packages left on my “todo” list:</p>
<ul>
<li>[Updated] <a href="https://hex.pm/packages/ex_cldr" rel="nofollow">ex_cldr </a></li>
<li>[Updated] <a href="https://hex.pm/packages/ex_cldr_numbers" rel="nofollow">ex_cldr_numbers</a></li>
<li>[Updated] <a href="https://hex.pm/packages/ex_money" rel="nofollow">ex_money </a></li>
<li>[Updated] <a href="https://hex.pm/packages/ex_cldr_lists" rel="nofollow">ex_cldr_lists </a></li>
<li>[Updated] <a href="https://hex.pm/packages/ex_cldr_dates_times" rel="nofollow">ex_cldr_dates_times </a></li>
<li>[Updated] <a href="https://hex.pm/packages/ex_cldr_units" rel="nofollow">ex_cldr_units</a></li>
<li>[New] <a href="https://hex.pm/packages/ex_cldr_calendars" rel="nofollow">ex_cldr_calendars</a></li>
<li>[New] <a href="https://hex.pm/packages/ex_cldr_calendars_format" rel="nofollow">ex_cldr_calendars_format</a></li>
<li>[New] <a href="https://hex.pm/packages/ex_cldr_print" rel="nofollow">ex_cldr_print</a></li>
<li>[In Development] <code>ex_cldr_collations</code></li>
<li>[Not started yet] <code>ex_cldr_messages</code></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="131340" 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/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-131340" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="131340"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="141073" data-post-id="141073">
  <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 pretty large update to <a href="https://hex.pm/packages/ex_cldr_units" rel="nofollow">ex_cldr_units</a> today. Primary focus is on converting units from one measurement system (ie <code>:metric</code>) to the system customary for a territory (country). I think this is pretty cool <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">  The changelog entry is:</p>
<h3><a name="p-141073-enhancements-1" class="anchor" href="#p-141073-enhancements-1" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>Add <code>Cldr.Unit.localize/3</code> to support converting a given unit into units that are familiar to a given territory. For example, given a unit of <code>#Unit&lt;1.8, :meter&gt;</code> it would normally be expected to show this as <code>[#Unit&lt;:foot, 5&gt;, #Unit&lt;:inch, 11&gt;] in the US</code>. The data to support these conversions is returned by <code>Cldr.Unit.unit_preferences/0</code>. An example:</li>
</ul>
<pre data-code-wrap="elixir"><code class="lang-elixir">  iex&gt; height = Cldr.Unit.new(1.8, :meter)
  iex&gt; Cldr.Unit.localize height, :person, territory: :US, style: :informal
  [#Unit&lt;:foot, 5&gt;, #Unit&lt;:inch, 11&gt;]
  iex&gt; Cldr.Unit.to_string us_height
  "5 feet and 11 inches"
</code></pre>
<ul>
<li>Note that conversion is dependent on context. The context above is <code>:person</code> reflecting that we are referring to the height of a person. For units of <code>length</code> category, the other contexts available are <code>:rainfall</code>, <code>:snowfall</code>, <code>:vehicle</code>, <code>:visibility</code> and <code>:road</code>. Using the above example with the context of <code>:rainfall</code> we see</li>
</ul>
<pre data-code-wrap="elixir"><code class="lang-elixir">  iex&gt; Cldr.Unit.localize height, :rainfall, territory: :US
  [#Unit&lt;:inch, 71&gt;]
  iex&gt; Cldr.Unit.to_string height
  "71 inches"
</code></pre>
<ul>
<li>
<p>Adds a <code>:per</code> option to <code>Cldr.Unit.to_string/3</code>. This option leverages the <code>per</code> formatting style to allow compound units to be printed.  For example, assume want to emit a string which represents “kilograms per second”. There is no such unit defined in CLDR (or perhaps anywhere!). But if we define the unit <code>unit = Cldr.Unit.new(:kilogram, 20)</code> we can then execute <code>Cldr.Unit.to_string(unit, per: :second)</code>.  Each locale defines a specific way to format such a compount unit.  Usually it will return something like <code>20 kilograms/second</code></p>
</li>
<li>
<p>Adds <code>Cldr.Unit.unit_preferences/0</code> to map units into a territory preference alternative unit(s)</p>
</li>
<li>
<p>Adds <code>Cldr.Unit.measurement_systems/0</code> that identifies the unit system in use for a territory</p>
</li>
<li>
<p>Adds <code>Cldr.Unit.measurement_system_for/1</code> that returns the measurement system in use for a given territory.  The result will be one of <code>:metric</code>, <code>:US</code> or <code>:UK</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="141073" 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/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-141073" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="141073"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="141098" data-post-id="141098">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a href="https://hex.pm/packages/ex_cldr_messages" rel="nofollow">ex_cldr_messages</a> version 0.1.0 is now published.  This package implements the <a href="http://userguide.icu-project.org/formatparse/messages" rel="nofollow">ICU Message Format</a>.  A good explanation of the motivation for the <code>ICU Message format</code> is in <a href="https://docs.google.com/presentation/d/1ZyN8-0VXmod5hbHveq-M1AeQ61Ga3BmVuahZjbmbBxo/pub?start=false&amp;loop=false&amp;delayms=3000&amp;slide=id.g1bc43a82_2_14" rel="nofollow">this presentation by Mark Davis from Google</a>.</p>
<p>Eventually this package will be an alternative to <a href="https://hex.pm/packages/gettext" rel="nofollow">Gettext</a> however this first release is simply a message formatter.</p>
<p>The ICU message format leverages the localisation data from <a href="https://cldr.unicode.org" rel="nofollow">CLDR</a>. This implementation uses the capabilities of <a href="https://hex,pm/packages/ex_cldr" rel="nofollow">ex_cldr</a>, <a href="https://hex,pm/packages/ex_cldr_numbers" rel="nofollow">ex_cldr_numbers</a>, <a href="https://hex,pm/packages/ex_cldr_dates_times" rel="nofollow">ex_cldr_dates_times</a>, <a href="https://hex,pm/packages/ex_cldr_units" rel="nofollow">ex_cldr_units</a> and <a href="https://hex,pm/packages/ex_cldr_lists" rel="nofollow">ex_cldr_lists</a> to simplify the localisation of messages.</p>
<p>A couple of examples:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"> # Simple binding interpolation
 iex&gt; Cldr.Message.to_string! "My name is {name}", name: "Kip"
 "My name is Kip"

 # Pluralization used the CLDR pluralisation rules implemented in ex_cldr
 iex&gt; Cldr.Message.to_string! "On {taken_date, date, short} {name} took {num_photos, plural,
        =0 {no photos.}
        =1 {one photo.}
        other {# photos.}}", 
      taken_date: Date.utc_today(), name: "Kip", num_photos: 10
 "On 8/26/19 Kip took 10 photos."

 # ICU Messages can manage grammatical gender, nested message formats,
 iex&gt; Cldr.Message.to_string! "{gender_of_host, select,
      female {
        {num_guests, plural, offset: 1
          =0 {{host} does not give a party.}
          =1 {{host} invites {guest} to her party.}
          =2 {{host} invites {guest} and one other person to her party.}
          other {{host} invites {guest} and # other people to her party.}}}
      male {
        {num_guests, plural, offset: 1
          =0 {{host} does not give a party.}
          =1 {{host} invites {guest} to his party.}
          =2 {{host} invites {guest} and one other person to his party.}
          other {{host} invites {guest} and # other people to his party.}}}
      other {
        {num_guests, plural, offset: 1
          =0 {{host} does not give a party.}
          =1 {{host} invites {guest} to their party.}
          =2 {{host} invites {guest} and one other person to their party.}
          other {{host} invites {guest} and # other people to their party.}}}}",
      gender_of_host: "male", host: "Kip", guest: "Jim", num_guests: 4
"Kip invites Jim and 3 other people to his party."
</code></pre>
<p>The package is under active development with expected frequent updates over the next couple of months.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="141098" data-batch-url="/posts/batch_likers">
                        7
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-141098" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="141098"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="141197" data-post-id="141197">
  <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>Do you compile the strings or interpret them every time you call <code>Message.to_string!</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="141197" 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/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-141197" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="141197"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="141200" data-post-id="141200">
  <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 first version is interpreted each call.  It’s clearly not ready for real world use.</p>
<p>Next version I’ll have done in a few days introduces the <code>f/1/2</code> macro which will compile the format.</p>
<p>What I’m aiming for is to make it as easy as possible to update existing strings to be localised.  So something like just converting <code>”this is a string”</code> to <code>f”this is a string”</code> would be one way to do that.  With interpolation it would be <code>f”this is a {number}”</code> and it will assume <code>number</code> is defined in the scope and therefore resolve to <code>var!/1</code>. This way the behaviour is similar to standard elixir string interpolation.</p>
<p>Then after that its all of the translation scaffolding.  Rather than take the <code>po</code> file approach I am looking at pluggable backends with a primary intent to build a backend translation service so that translations can be updated without code building and release cycles and allow good support for crowd-sourced translations.</p>
<p>I know you’ve done a lot of work in this area so any feedback, thoughts, suggestions and criticisms are most welcome.</p> 
	            </div>

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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="kip" data-post="17" data-topic="17350">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/48/1440_2.png" class="avatar"> kip:</div>
<blockquote>
<p>So something like just converting <code>”this is a string”</code> to <code>f”this is a string”</code> would be one way to do that. With interpolation it would be <code>f”this is a {number}”</code> and it will assume <code>number</code> is defined in the scope and therefore resolve to <code>var!/1</code> .</p>
</blockquote>
</aside>
<p>I‘m not sure I really like that. It means coupling the name in the translatable string to code concerns, a.k.a. a variable name. I‘d guess I‘d rather like it to work like gettext, where you supply a keyword list for substitution.</p>
<p>This is especially relevant if the same string is used in multiple contexts, where variables might be names differently.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="141201" 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/ex-cldr-common-locale-data-repository-cldr-functions-for-elixir/17350/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-141201" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="141201"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="141203" data-post-id="141203">
  <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>Definitely there iwill be an option to supply a binding in the same way as for gettext.  I’m still in experimentation mode.  For standard string interpolation the binding is already implicit though.  So there is a behaviour difference between normal strings and gettext strings.</p> 
	            </div>

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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="kip" data-post="19" data-topic="17350">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/48/1440_2.png" class="avatar"> kip:</div>
<blockquote>
<p>For standard string interpolation the binding is already implicit though. So there is a behaviour difference between normal strings and gettext strings.</p>
</blockquote>
</aside>
<p>Yeah, but the important difference is that for normal string interpolation the scope of the variable name in the string is the scope of the variable itself. For translations the scope of variable names extends to being useful names for translators as well. E.g. I just read the medium post on slack implementing translation using ICU messages and they have a rule to always suffix <code>_possissive</code> to their variables if the variable should be in possessive form.</p>
<p>Another difference is that string interpolation understands elixir code, e.g. <code>"#{helper.name} helped #{receiver.name}"</code>, which I’m not sure if possible in ICU messages, where I guess you need a plain variable without nesting.</p>
<p>I don’t think code like this is preferable to the latter</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">helper_name = helper.name
reciver_name = receiver.name
…
f("{helper_name} helped {receiver_name}")
</code></pre>
<pre data-code-wrap="elixir"><code class="lang-elixir">f("{helper_name} helped {receiver_name}", helper_name: helper.name, receiver_name: receiver.name)
</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="141205" 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/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-141205" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="141205"
                     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 #19"></div>
  </section>
</div>
    <div class="postbit" id="141211" data-post-id="141211">
  <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>Good points as always. Gettext strategy it is.</p>
<p>Do you have the link to the article you mentioned?</p> 
	            </div>

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