#' set_user_default_configs
#' @description translate our dynamically
#' @param target_lang language to translate to
#' @param time_zone time zone
#' @param configs_dir parameters folders
#' @export
set_user_default_configs <- function(target_lang = "en",time_zone = "CET", configs_dir = "../home/configs/"){
user_configs <- list(target_lang = target_lang, time_zone = time_zone, update_time = Sys.time())
if(dir.exists(configs_dir) == FALSE){
dir.create(configs_dir, recursive = TRUE)
}
user_name <- strsplit(Sys.getenv("SHINYPROXY_USERNAME"),"@")%>%
unlist()%>%head(1)%>%gsub("\\.","_",.)
configs_file <- paste0(configs_dir,user_name,"_fairviewer_configs.json")
user_configs%>%RJSONIO::toJSON()%>%
write(file = configs_file)
return(user_configs)
}
#' load_user_default_configs
#' @param configs_dir configs directory
#' @export
load_user_default_configs <- function(configs_dir = "../home/configs/"){
user_name <- strsplit(Sys.getenv("SHINYPROXY_USERNAME"),"@")%>%
unlist()%>%head(1)%>%gsub("\\.","_",.)
configs_file <- paste0(configs_dir,user_name,"_fairviewer_configs.json")
if(file.exists(configs_file)== FALSE)set_user_default_configs()
user_configs <- configs_file%>%
RJSONIO::fromJSON()
return(user_configs)
}
#' app_translator_ui
#' @export
app_translator_ui <- function(id){
ns <- NS(id)
fluidPage(
uiOutput(ns("target_language"))
)
}
#'app_translator_server
#' @export
app_translator_server <- function(input, output, session){
countries <- c("en","fr","it")
names(countries) <- c("EN","FR","IT")
flags <- c(
"https://cdn.rawgit.com/lipis/flag-icon-css/master/flags/4x3/gb.svg",
"https://cdn.rawgit.com/lipis/flag-icon-css/master/flags/4x3/fr.svg",
"https://cdn.rawgit.com/lipis/flag-icon-css/master/flags/4x3/it.svg"
)
user_default_configs <- reactive({
load_user_default_configs()
})
output$target_language <- renderUI({
req(user_default_configs())
shinyWidgets::pickerInput(inputId = session$ns("target_language"), label = "Language", multiple = F,
choices = countries,
choicesOpt = list(content =
mapply(countries, flags, FUN = function(country, flagUrl) {
HTML(paste(
tags$img(src=flagUrl, width=20, height=15),
country
))
}, SIMPLIFY = FALSE, USE.NAMES = FALSE)
),
selected = user_default_configs()$target_lang)
})
observeEvent(input$target_language,{
set_user_default_configs(target_lang = input$target_language)
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.