2017-12-19 17 views
2

Ich arbeite an einer Shiny-Anwendung, die mehrere Sprachen behandeln soll. Ich habe es geschafft, fast alle Elemente der App dynamisch zu übersetzen, abhängig von einer selectInput, um die Sprache zu wählen. Die "harten Sachen" bleiben jedoch die navbarPage Tabs sowie die innerhalb meiner Seiten. Ich kann ihre Namen nicht ändern. Ich versuchte dies, aber es funktioniert nicht:glänzend: dynamisch Tabnamen ändern

library(shiny) 
ui <- navbarPage("App Title", 
       tabPanel("tab1", 
          selectInput("language", "language", c("EN", "FR"), width = '300px'), 
          textOutput("text")), 
       uiOutput("render_tab2")) 
server <- function(input, output, session) { 
    output$text = renderText({ switch(input$language, "EN"="hello world", "FR"="bonjour monde") }) 
    output$render_tab2 = renderUI({ 
    tabPanel(title=switch(input$language, "EN"="tab2", "FR"="onglet2"))})} 
shinyApp(ui, server) 

Und die updatenavbarpanel() Familie von Funktionen sind nur die aktiven Registerkarte zu setzen, nicht ihre Eigenschaften ändern ... Gibt es eine Möglichkeit, es zu tun, wenn möglich, das tut ändere nicht die Struktur aller meiner App ... Vielen Dank.

+0

Check out [renderUI] (https://shiny.rstudio.com/articles/dynamic -ui.html) um die Registerkarten mit verschiedenen Namen dynamisch zu rendern – blondeclover

Antwort

2

Dieses Stück Code den Titel dynamisch festgelegt:

library(shiny) 
ui <- navbarPage("App Title", 
       tabPanel(title = uiOutput("title_panel"), 
          selectInput("language", "language", c("EN", "FR"), width = '300px') 
       ) 
    ) 

server <- function(input, output, session) { 

    output$title_panel = renderText({ 
     switch(input$language, "EN"="hello world", "FR"="bonjour monde") 
    }) 
} 

shinyApp(ui, server) 

Edit: Arbeitet mit beiden uiOutput("title_panel") & textOutput("title_panel")

+0

danke! Das ist eine großartige Lösung, an die ich nicht gedacht habe! – agenis