<div dir="ltr">And we can always log the missing key situation into server log - that should be enough for developers to notice it, and fix it.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 9, 2015 at 8:09 AM, Stian Thorgersen <span dir="ltr">&lt;<a href="mailto:sthorger@redhat.com" target="_blank">sthorger@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">There&#39;s two places where keys can be missing:<div><br></div><div>* In a translation - this can be an honest mistake, or the translation wasn&#39;t updated when KC was updated</div><div>* Custom keys added - for example when keys are used for display names of clients, roles, etc..</div><div><br></div><div>Manually having to go through all sorts of pages to look for missing keys is very error prone and time consuming, so will not be the best option for developers. In both cases above the correct way to do this would be to have a way to verify a message bundle. We need a tool that can quickly identify if there are missing keys and we could expose that through the admin console. We currently have a student looking at providing a UI for defining locales and she is also going to look at adding some way of identifying if a locale is missing keys and also to easily list only missing keys.</div><div><br></div><div>For end users as I&#39;ve said they will have no clue what ???key??? is, and even worse if we throw an exception/error just because a missing key we&#39;ll actually break the whole console just because of a missing key. It&#39;s a much better option to look for the key in another translation and display that. Chances are they will be able to interpret one or two English words. Certainly higher chance of that then them being able to interpret ???key???.</div><div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On 9 October 2015 at 07:51, Thomas Raehalme <span dir="ltr">&lt;<a href="mailto:thomas.raehalme@aitiofinland.com" target="_blank">thomas.raehalme@aitiofinland.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr">How about returning something noticeable like ???key??? for example?</p><div><div>
<div class="gmail_quote">On Oct 9, 2015 8:10 AM, &quot;Stian Thorgersen&quot; &lt;<a href="mailto:sthorger@redhat.com" target="_blank">sthorger@redhat.com</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">That&#39;s not putting it to rest at all! Throwing a RuntimeException and rendering the whole admin console useless just because there&#39;s a missing key is a horrible idea.</div><div class="gmail_extra"><br><div class="gmail_quote">On 8 October 2015 at 20:33, Stan Silvert <span dir="ltr">&lt;<a href="mailto:ssilvert@redhat.com" target="_blank">ssilvert@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div>What if English is the bundle that has
      a missing key?<br>
      <br>
      Let&#39;s just put this to rest and solve it once and for all.  The
      simplest solution I can think of is to just compare keys when a
      new bundle is loaded.  If any bundle has a missing key or it has
      key not found in the previous loaded bundle, we throw a
      RuntimeException.  I can submit a patch for that in just a few
      minutes.<div><div><br>
      <br>
      On 10/8/2015 1:28 PM, Stian Thorgersen wrote:<br>
    </div></div></div><div><div>
    <blockquote type="cite">
      <div dir="ltr">I&#39;m not sure I&#39;m buying into the argument that
        displaying the key is better for developers. Having English
        suddenly pop-up in a German translation is just as obvious as a
        key. Besides as Stan points out you catch missing keys by
        comparing missing keys between English and German.
        <div><br>
        </div>
        <div>However, if there is a mistake in a translation then a user
          may quite likely be able to interpret English text, while a
          user will not be able to interpret a key. So if a key is
          missing in a translation (which is obviously a &quot;bug&quot;) it&#39;s
          better to display English than to display the key.</div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On 8 October 2015 at 14:13, Stan
          Silvert <span dir="ltr">&lt;<a href="mailto:ssilvert@redhat.com" target="_blank">ssilvert@redhat.com</a>&gt;</span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div text="#000000" bgcolor="#FFFFFF"><span>
                <div>On 10/8/2015 12:48 AM, Thomas Raehalme wrote:<br>
                </div>
                <blockquote type="cite">
                  <p dir="ltr"><br>
                    On Oct 8, 2015 6:53 AM, &quot;Stian Thorgersen&quot; &lt;<a href="mailto:sthorger@redhat.com" target="_blank">sthorger@redhat.com</a>&gt;

                    wrote:<br>
                    &gt;<br>
                    &gt; With regards to internationalization I have two
                    questions:<br>
                    &gt;<br>
                    &gt; * Should we fallback to English messages if a
                    key is missing in a translation? Alternative is to
                    show key, but that&#39;s not going to help anyone</p>
                  <p dir="ltr">A missing key is a bug and showing the
                    message in the default locale may hide the problem.
                  </p>
                  <p dir="ltr">Even though showing the key does not help
                    the end user it helps the developer and identifies
                    the problem. For this reason I think showing the key
                    would be a good idea.</p>
                </blockquote>
              </span> For our bundles, we could catch missing keys at
              build time.  <br>
              <br>
              Failing that, I agree that displaying the key is better
              than falling back to English.  This is especially true
              right now while we haven&#39;t completed the task of
              converting everything.  If we fall back to English we
              won&#39;t know if the problem is a missing key or if the text
              just hasn&#39;t been converted yet.<span><br>
                <br>
                <blockquote type="cite">
                  <p dir="ltr">&gt; * Should we change message bundles
                    to UTF-8? Or is ISO 8859-1 going to work for all
                    languages?</p>
                  <p dir="ltr">Depends what those all languages are :-)</p>
                  <p dir="ltr">I think UTF-8 is the best choice as it
                    will handle practically any character. </p>
                  <p dir="ltr">But if you&#39;re referring to Java resource
                    bundles the encoding for .properties is ISO-8859-1
                    but there are means to handle any UTF-8 character.</p>
                </blockquote>
              </span> Yes, an UTF-8 character can be encoded in
              ISO-8859-1.  Java provides a native2ascii tool for
              converting entire files.  The resource bundle tools in
              most IDE&#39;s do this for you automatically.  So you just
              edit as UTF-8 and it saves the bundle as ISO-8859-1.<br>
              <br>
              We can read our bundles as UTF-8 if we want to do that. 
              I&#39;d rather not, because I&#39;m not sure what we might run
              into down the road with Java assuming resource bundles are
              always ISO-8859-1.<br>
              <br>
              But I&#39;d like to get the perspective of people who have
              handled resource bundles in languages that are not fully
              supported by ISO-8859-1.  Is it too much of a pain to do a
              conversion or do the tools make the process seamless?
              <div>
                <div><br>
                  <blockquote type="cite">
                    <p dir="ltr">Best regards,<br>
                      Thomas<br>
                    </p>
                    <p dir="ltr">&gt;<br>
                      &gt; On 7 October 2015 at 18:42, Stan Silvert &lt;<a href="mailto:ssilvert@redhat.com" target="_blank">ssilvert@redhat.com</a>&gt;
                      wrote:<br>
                      &gt;&gt;<br>
                      &gt;&gt; Marko brought this to my attention
                      yesterday.  For some things, we<br>
                      &gt;&gt; dynamically create UI.  In this case, the
                      java code contains the English<br>
                      &gt;&gt; text and it needs to be localized. 
                      Luckily, the solution was pretty<br>
                      &gt;&gt; straightforward.  We just replace the
                      English text with a key into the<br>
                      &gt;&gt; message bundle.  The html template that
                      displays this text already pulls<br>
                      &gt;&gt; from an Angular scope so we just leave
                      that alone and pass it through<br>
                      &gt;&gt; the |translate filter.  You do need to
                      also add the double-colon.<br>
                      &gt;&gt;<br>
                      &gt;&gt; One nice side effect is that if the key
                      is not found in the bundle then<br>
                      &gt;&gt; the output of the translate filter is the
                      unchanged text.  This means<br>
                      &gt;&gt; that any code which has not converted to
                      using bundle keys will still<br>
                      &gt;&gt; work as expected.   And, any third-party
                      providers can just pass in<br>
                      &gt;&gt; plain text if they don&#39;t care about
                      l10n.  If they ever do care about<br>
                      &gt;&gt; l10n we will just need to provide a means
                      for them to add key/value<br>
                      &gt;&gt; pairs to the resource bundles.<br>
                      &gt;&gt;<br>
                      &gt;&gt; Here is an example for anyone who needs
                      to localize English text<br>
                      &gt;&gt; embedded in java:<br>
                      &gt;&gt; <a href="https://github.com/ssilvert/keycloak/commit/c9437595b70810c4472325373dd8833c37be8549" target="_blank">https://github.com/ssilvert/keycloak/commit/c9437595b70810c4472325373dd8833c37be8549</a><br>
                      &gt;&gt;<br>
                      &gt;&gt; Stan<br>
                      &gt;&gt;
                      _______________________________________________<br>
                      &gt;&gt; keycloak-dev mailing list<br>
                      &gt;&gt; <a href="mailto:keycloak-dev@lists.jboss.org" target="_blank">keycloak-dev@lists.jboss.org</a><br>
                      &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
                      &gt;<br>
                      &gt;<br>
                      &gt;<br>
                      &gt;
                      _______________________________________________<br>
                      &gt; keycloak-dev mailing list<br>
                      &gt; <a href="mailto:keycloak-dev@lists.jboss.org" target="_blank">keycloak-dev@lists.jboss.org</a><br>
                      &gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br>
                    </p>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </div></div></div>

</blockquote></div><br></div>
</blockquote></div>
</div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
keycloak-dev mailing list<br>
<a href="mailto:keycloak-dev@lists.jboss.org">keycloak-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/keycloak-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-dev</a><br></blockquote></div><br></div>