如何在 OctoberCMS rainlab.location 插件中查看翻译的县

How to view translated county in OctoberCMS rainlab.location plugin

我已经安装了 rainlab.location 和 rainlab.translate 插件。我在后端翻译了国家和州,但无法在前端查看它们的翻译。这是我正在使用的代码(来自文档):

 {% set countryId = countryId|default(form_value('country_id')) %}
 {% set stateId = stateId|default(form_value('state_id')) %}

 <div class="form-group">
 <label for="accountCountry">Country</label>
 {{ form_select_country('country_id', countryId, {
    id: 'accountCountry',
    class: 'form-control',
    emptyOption: '',
    'data-request': 'onInit',
    'data-request-update': {
        'country-state': '#partialCountryState'
    }
  }) }}
 </div>

 <div class="form-group">
 <label for="accountState">State</label>
 {{ form_select_state('state_id', countryId, stateId, {
    id: 'accountState',
    class: 'form-control',
    emptyOption: ''
 }) }}
 </div>

它以英语显示国家和州,即使我切换了语言!

可能是检索记录有问题

https://github.com/rainlab/location-plugin/blob/master/models/Country.php#L71

当我们直接使用->lists('name', 'id');调用时没有加载翻译关系。

但如果您将此行从

return self::$nameList = self::isEnabled()
     ->orderBy('is_pinned', 'desc')->lists('name', 'id');

return self::$nameList = self::isEnabled()
     ->orderBy('is_pinned', 'desc')->get()->lists('name', 'id');
                                ----- ^ <- this one

It load translation relations and works fine.

现在你可以在本地更改它应该可以工作,将来他们可能会解决它。

if you are concern about plugin update then you can extract that function and implement your own function.

它只是 form_select_country twig function 您可以使用不同的名称添加到您自己的插件中以使其正常工作,正如您所见,只需复制少量代码:)

https://octobercms.com/docs/plugin/registration#extending-twig

如有疑问请评论。