Size: a a a

GraphQL — русскоговорящее сообщество

2018 November 06

KL

Konstantin Lyssenko in GraphQL — русскоговорящее сообщество
Думаю, есть два варианта: либо на клиенте выбирать разные запросы в зависимости от языка:
if (lang == 'ru') query = "{ nameRu }" else query = "{ nameCn }"

Либо можно длинные лапшеобразные запросы через фрагменты и директиву, вроде include писать
источник

KL

Konstantin Lyssenko in GraphQL — русскоговорящее сообщество
Maxim Makarov
Есть ли способ сделать что-то подобное в GraphQL, без использования шаблонизаторов?
Но такого функционала в gql точно нет
источник

🦉⁣

🦉 ⁣ in GraphQL — русскоговорящее сообщество
а можно юзать интерполяцию
источник

🦉⁣

🦉 ⁣ in GraphQL — русскоговорящее сообщество
если юзается жс
источник

EM

Eugene Maltsev in GraphQL — русскоговорящее сообщество
🙂или на бекенде отдавать в зависимости от  Language-Code
источник

🦉⁣

🦉 ⁣ in GraphQL — русскоговорящее сообщество
да
источник

🦉⁣

🦉 ⁣ in GraphQL — русскоговорящее сообщество
так даже лучше
источник

KL

Konstantin Lyssenko in GraphQL — русскоговорящее сообщество
Maxim Makarov
Есть ли способ сделать что-то подобное в GraphQL, без использования шаблонизаторов?
Так или иначе на клиенте лучше решается. Тем более, если бэкенд именно в такой форме решил i18n писать
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
Konstantin Lyssenko
Так или иначе на клиенте лучше решается. Тем более, если бэкенд именно в такой форме решил i18n писать
Да я сам не понимаю как лучше мне организовать i18n. Сейчас в БД это строчки name_en, name_ru, etc, а Hasura транслирует эти поля из sql прям в graphql
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
можно запариться и сделать extend типов, что я и сделаю, скорее всего
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
На клиенте apollostack, запросы лежат в .gql, отдельно от .ts
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
спасибо за помощь)
источник

MM

Maxim Makarov in GraphQL — русскоговорящее сообщество
Schema stiching кто-нибудь юзал на сервере?
источник

a

akaSybe in GraphQL — русскоговорящее сообщество
я бы наверно вопрос i18n решал с помощью директив
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Konstantin Lyssenko
Думаю, есть два варианта: либо на клиенте выбирать разные запросы в зависимости от языка:
if (lang == 'ru') query = "{ nameRu }" else query = "{ nameCn }"

Либо можно длинные лапшеобразные запросы через фрагменты и директиву, вроде include писать
Я использую кукис аутентификации. А там уже есть язык. Не совсем REST like, но самый простой вариант, вместо добавления аргументов или других штук для сайтовых апи.
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
Но для какой-то внешней апишки такое не получится сделать, надо, да, верно уже подсказали, делать что-то вроде:
type Query {
   articles(lang: LanguageEnum!): ArticlesQuery!
}

type ArticlesQuery {
   all: [Article!]!
   find(id: ID!): Article
}
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
Я бы рекомендовал к варианту Кирилла еще заюзать стандартный http заголовок Accept-Language и аргумент lang сделать необязательным.

- На уровне сервака http-заголовок языка ложим в контекст
- В резолвере мутим функцию помогайку которая:
— сперва смотрит аргумент
— если не указан, то смотрит контекст
— если опять не указан, то берет дефолтное значение
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
ну это уже бэк
источник

KN

Kirill Nesmeyanov in GraphQL — русскоговорящее сообщество
а на бэке там вообще можно устроить дичь по детекту языка
источник

P@

Pavel @nodkz in GraphQL — русскоговорящее сообщество
ну и схему тебе бек отдает, ты просто потребитель 😊
источник