如何在Shopify Liquid模板中按本地化语言条件调整价格显示?
解决方案
核心结论
不能直接在Liquid模板中读取页面的data-current-lang属性——Liquid是服务器端渲染语言,DOM属性是页面渲染完成后在客户端存在的,服务器端无法直接获取这类客户端属性。
正确实现方式:使用Shopify内置语言变量
Shopify的Liquid提供了直接获取当前语言环境的内置变量,比如request.locale(返回当前请求的语言代码,如英文en、日文ja),可以直接用它做条件判断,调整价格和文本的显示顺序。
示例修改代码
假设产品最低价格的输出代码是{{ product.price_min | money }},将原代码调整为:
{% if product.price_varies and product.price_min > 0 %} <small><em> {% if request.locale == 'ja' %} {{ product.price_min | money }} {{ 'products.general.from' | t }} {% else %} {{ 'products.general.from' | t }} {{ product.price_min | money }} {% endif %} </em></small> {% endif %}
细节说明
- 先确认
request.locale的实际值:可以在模板中临时添加{{ request.locale }},访问日文页面查看具体返回的语言代码(比如可能是ja-JP而非ja),再调整条件判断的匹配值。 - 建议通过Translate and Adapt维护翻译:将日文的
products.general.from翻译为~,这样不用在模板里硬编码符号,符合多语言维护规范。
内容的提问来源于stack exchange,提问作者DukeSmellington
相关产品推荐
相关产品推荐

