Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Как мне в шаблоне <template> можно будет подставлять текст разных языков?
Не в сети
не могу сказать как вообще vue-исты решают этот вопрос, но мне кажется тут надо смотреть – а как вообще в принципе делается локализация js-приложений. в шаблонах же можно рендерить языковые строки уже обычным js-кодом. мне кажется эта задача не является специфичной для vue
Не в сети
не могу сказать как вообще vue-исты решают этот вопрос
точно так же как Тейлор решает вопрос с локализацией - папкой lang.
Не в сети
constb пишет:не могу сказать как вообще vue-исты решают этот вопрос
точно так же как Тейлор решает вопрос с локализацией - папкой lang.
Ну, а если не использовать blade? В Blade шаблоне находится только один div, к которому подключается Vue-компоненты. Или выход перенести все в Blade?
Не в сети
речь ни разу не о блейде, а об архитектуре.
грузи свои шаблоны из соответствующей app()->getLocale() переменной папки
Не в сети
это самый простой, "нормализованный" вариант архитектуры. он плох тем, что придётся поддерживать дубликат для другого языка.
есть другой вариант - пиши локализованные переменные и для js, например создай какой-нить localization.en.js объект. и его дёргай от какой-нить переменной, хранимой напримерв теге <html lang="{{app()->getLocale()}}">, которую дёрнуть как два пальца об асвальт.
нынешнее поколение не креативно. ищет готовые решения. огорчает.
Не в сети
нынешнее поколение не креативно. ищет готовые решения. огорчает.
Да, потому что мы хотим все правильно и по стандарту делать, потому и ищем, создаем темы, спрашиваем, а не хоть как лишь бы работало.)
Не в сети
Я недавно задался этим вопросом и не нашел идеального решения. Зато нашел очень много великов, некоторые из которых уже не работают (т.е. перестали работать при малейшем обновлении), некоторые грузят все переводы при каждом запросе (здравствуйте, JS файлики в пару мегабайт).
Использовал пакет vue-i18n, инициализацию сделал так:
import VueInternalization from 'vue-i18n';
import Locales from './vue-i18n-locales.js';
Vue.use(VueInternalization);
// Get current localization from URI. Returns string like 'en' or 'ru'.
Vue.config.lang = window.location.pathname.split('/')[1];
Object.keys(Locales).forEach(function (lang) {
Vue.locale(lang, Locales[lang])
});
При этом фразы с переводами находятся в vue-i18n-locales.js:
export default {
"en": {
"app": {
"example": "Example"
},
},
"ru": {
"app": {
"example": "Пример"
}
}
}
В компонентах Vue.js:
<label for="description" class="control-label">{{ $t('app.example') }}</label>
Может быть пригодится. Если у кого-то есть более интересное решение, поделитесь.
Не в сети
Страницы 1