【问题标题】:javascript string localization in LaravelLaravel 中的 javascript 字符串本地化
【发布时间】:2015-11-10 17:44:42
【问题描述】:

我在 laravel 中对一些本地化字符串进行编码时遇到问题。

在我的西班牙语本地化文件中(在许多其他字符串中):

"truck" => "camión"

在myView.blade.php中,如果我直接打印字符串:

<h2>{{trans('localizationFile.truck'}}</h2>

它工作正常并打印

camión

但如果我尝试在 javascript 中使用相同的字符串:

<script>
$(document).ready(function()
{           
    alert("{{trans('events.camion')}}");
}
</script>

它将带重音的 o 编码为:cami&amp;oacute;n

我该如何解决这个问题? 还是我做错了什么? 也许这不是本地化 javascript 消息的方式...

提前致谢!

【问题讨论】:

    标签: javascript php laravel localization internationalization


    【解决方案1】:

    输出警报时,HTML 实体不会被解码,因此它们显示为纯文本。解决此问题的最简单解决方案是将文本添加到 HTML 元素并通过 text 方法返回其内容,该方法将解码 HTML 实体:

    <script>
        $(document).ready(function () {
            alert($('<div>{{trans('events.camion')}}</div>').text());
        }
    </script>
    

    上面使用了jQuery的html方法,但是这可以用vanilla JS和innerHtml来实现。


    如果你想包含一个额外的 JS 库,你可以使用he,它负责解码。所以它看起来像这样:

    <script>
        $(document).ready(function () {
            alert(he.decode({{trans('events.camion')}}));
        }
    </script>
    

    【讨论】:

    • Hum.. 我想过将文本“保存”在 html 实体中,但看起来太复杂了。我想我会和图书馆一起去,看起来更干净。非常感谢!
    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多