Каков был бы самый простой / эффективный способ сделать глянцевый приложение, использующий пакет блестящий менеджер, многоязычным (в зависимости от пользователя)? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть большое блестящее приложение, которое используется несколькими пользователями, и я использую пакетосвещение для управления учетными данными. Некоторые пользователи просили перевести пользовательский интерфейс на свой собственный язык. Требуемые языки (в зависимости от пользователя): Engli sh, французский и голландский.

Перевод требуется только для компонентов пользовательского интерфейса. Мне было интересно, есть ли способ сохранить языковые предпочтения в базе данных учетных данных sqlite пакета shinyapp, а затем перевести весь пользовательский интерфейс на основе этого значения, см. Минимальный пример ниже для иллюстрации. Блестящий администратор должен иметь возможность создать нового пользователя через страницу администратора и выбрать язык ...

  credentials <- data.frame(
    user = c("shiny", "shinymanager"),
    password = c("azerty", "12345"),
    language = c("en","fr") # example.
    stringsAsFactors = FALSE
  )

Основываясь на этом, как я могу эффективно переводить свои компоненты пользовательского интерфейса? (желательно хранить файлы перевода в отдельном файле сценария / Json или в любом другом месте.

Обратите внимание, что здесь я не беспокоюсь о странице входа на блестящий менеджер (где пользователь еще не зарегистрирован, поэтому его языковые предпочтения не могут через базу данных sqlite).

[EDIT]

# server.R
shinyServer(function(input, output, session){
  #### Credential login ####
  res_auth <- secure_server(
    check_credentials =  check_credentials(sqlite_path, passphrase = "password")
  )
  output$lang <- renderPrint({
    reactiveValuesToList(res_auth)$language # see the credential file above
  })

В основном я хочу, чтобы в приведенном ниже пользовательском интерфейсе было изменено значение «Это панель вкладок» на «Ceci est un onglet», если выводится $ lang is == "fr". Сложность, с которой я столкнулся здесь, заключается в том, что касается реактивности и процесса оценки сервера. В идеале я бы не использовал оцененный сервером интерфейс (т.е. с uiOutput & renderUi), так как это увеличивает сложность код и язык не меняются после запуска интерфейса после входа в систему.

userinterface <- navbarPage('Dashboard', id="page", collapsible=TRUE, inverse=FALSE,
  tabPanel("This is a tab panel", module.ui("mymoduleui")) #some ui in module.ui
)

ui <- secure_app(userinterface,
                 enable_admin = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...