0

我有一个闪亮的应用程序,它具有在多种语言之间翻译其文本的功能,方法是使用一些 RenderText 和一个 ActionButton 在语言之间切换。这是我的应用程序:

library(shiny)
trads = list(text3=list("text3 in language 1", "text in other language"),
             titl3=list("widget label in language 1", "widget label in other language"))

ui <- fluidPage(
  actionButton("language",label="language", icon=icon("flag")),
  htmlOutput("text3", container = tags$h3),
  sliderInput("slider1", label=h2("slider1"), 0, 10, 5)
)

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


     tr <- function(text){sapply(text, function(s) trads[[s]][[input$language%%2+1]], USE.NAMES=FALSE)}

     output$text3 = renderText({tr("text3")})

     observeEvent(input$language, {
          updateSliderInput(session, "slider1", label=tr("titl3"))
     })

}

shinyApp(ui, server)

它工作正常,除了我的滑块标签最初是用 html 标签格式化的h3(),当我使用时,updatesliderinput我松开了这个标签,它返回到纯文本。我尝试在翻译中添加标签paste0,或使用不同的语法,eval但它以文本形式打印粘贴的结果,而不是运行它或给出错误。在保持格式的同时翻译有什么想法吗?谢谢

注意:我对包含 URL 链接的文本也有同样的问题。

4

1 回答 1

2

它真的接缝你在updateSliderInput这里发现了一个错误。它只能处理纯字符串,不能处理 HTML 标签。作为一种解决方法,我建议您在 UI 的开头添加类似的内容

tags$head(
    tags$style(
      'label[for = "slider1"] {
    color: red;
    font-size: 20px;
    }'
    )
  )

但是将 css 更改为您喜欢的任何内容(也许复制 h2 标签的 css 规则),然后始终只将字符串传递给 label 参数。这样,样式始终保持不变。

我的完整代码

library(shiny)
trads = list(text3=list("text3 in language 1", "text in other language"),
             titl3=list("widget label in language 1", "widget label in other language"))

ui <- fluidPage(
  tags$head(
    tags$style(
      'label[for = "slider1"] {
    color: red;
    font-size: 20px;
    }'
    )
  ),
  actionButton("language",label="language", icon=icon("flag")),
  htmlOutput("text3", container = tags$h3),
  sliderInput("slider1", label="slider1", 0, 10, 5)

)

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


  tr <- function(text){sapply(text, function(s) trads[[s]][[input$language%%2+1]], USE.NAMES=FALSE)}

  output$text3 = renderText({tr("text3")})

  observeEvent(input$language, {
    updateSliderInput(session, "slider1", label=tr("titl3"))
  })

}

shinyApp(ui, server)

希望这可以帮助!

于 2017-11-24T23:29:13.113 回答