diff --git a/DESCRIPTION b/DESCRIPTION index 8d95086..8e57c7a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -38,4 +38,5 @@ Imports: tidytacos Remotes: github::LebeerLab/tidytacos, - github::daattali/shinycssloaders + github::daattali/shinycssloaders, + github::Appsilon/shiny.i18n diff --git a/NAMESPACE b/NAMESPACE index 4654a4a..f777895 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -4,4 +4,5 @@ export(run_app) import(ggplot2) import(magrittr) import(shiny) +import(shiny.i18n) importFrom(shiny,shinyApp) diff --git a/R/run_app.R b/R/run_app.R index 2b3c29f..d6e0042 100644 --- a/R/run_app.R +++ b/R/run_app.R @@ -2,6 +2,13 @@ #' #' @export #' @importFrom shiny shinyApp -run_app <- function(){ - shinyApp(ui = ui, server = server) +#' @importFrom golem with_golem_options +run_app <- function(onStart=NULL, options=list(), enableBookmarking=NULL){ + shinyApp( + ui = ui, + server = server, + onStart = onStart, + options = options, + enableBookmarking = enableBookmarking, + ) } diff --git a/R/server.R b/R/server.R index 1cb7edc..6f53456 100644 --- a/R/server.R +++ b/R/server.R @@ -1,4 +1,18 @@ +i18n <- shiny.i18n::Translator$new(translation_json_path = "inst/app/translation.json") +i18n$set_translation_language("es") + server <- function(input, output, session){ + + # i18n_r <- reactive({ + # i18n + # }) + + observeEvent(input$selected_language, { + shiny.i18n::update_lang(input$selected_language, session = session) + #i18n_r()$set_translation_language(input$selected_language) + #cat("Lang updated to:", input$selected_language, "\n") + }) + my_color_palette <- c("#00719A","#FCD0BE","#413647","#FF9A73","#063547", "#992B00","#F3D9AE","#6991B3","#B8062F","#BDECFC", "#D3D3D3") @@ -21,11 +35,12 @@ server <- function(input, output, session){ ) my_data_sidebar_fileinput_tables <- bslib::card_body( + shiny.i18n::usei18n(i18n), fillable = FALSE, fileInput("my_data_samples", - label = span("Muestras", + label = span(i18n$t("Muestras"), bslib::tooltip(bsicons::bs_icon("info-circle"), - "Carga la tabla 'samples.csv'", + i18n$t("Carga la tabla 'samples.csv'"), placement = "right")), #buttonLabel = "Buscar 'samples.csv'", buttonLabel = bsicons::bs_icon("upload"), @@ -67,7 +82,7 @@ server <- function(input, output, session){ buttonLabel = bsicons::bs_icon("upload"), accept = c(".biom"), width = "100%", - placeholder = "Ningún archivo seleccionado" + placeholder = i18n$t("Ningún archivo seleccionado") ) ) ) @@ -1123,7 +1138,7 @@ server <- function(input, output, session){ xref="paper", xanchor="left", showarrow=FALSE) %>% plotly::layout(barmode = "stack", - xaxis = list(title = "Muestras", showticklabels=FALSE), + xaxis = list(title = i18n$t("Muestras"), showticklabels=FALSE), yaxis = list(title = "Abundancia Relativa"), legend = list(title = list(text = "Taxón"))) }) diff --git a/R/ui.R b/R/ui.R index f4000df..84ee0a0 100644 --- a/R/ui.R +++ b/R/ui.R @@ -1,15 +1,20 @@ +i18n <- shiny.i18n::Translator$new(translation_json_path = "inst/app/translation.json") +i18n$set_translation_language("es") + #' The Application User-Interface #' #' @param request Internal parameter for `{shiny}`. #' -#' @import shiny magrittr +#' @import shiny magrittr shiny.i18n +#' @importFrom shiny.i18n t #' @noRd ui <- function(request){ - #shiny::addResourcePath('www', fs::path_package("app/www", package='VTOOL')) + # Value boxes my_data_value_boxes <- list( bslib::value_box( - title = "Nr. de Muestras", + shiny.i18n::usei18n(i18n), + title = i18n$t("Nr. de Muestras"), value = textOutput("total_sample"), showcase = icon("vial")#, #p("Some text"), @@ -18,14 +23,16 @@ ui <- function(request){ #theme = "success" ), bslib::value_box( - title = "Nr. de Taxones", + shiny.i18n::usei18n(i18n), + title = i18n$t("Nr. de Taxones"), value = textOutput("total_taxa"), showcase = icon("bacteria")#, #p("Some text"), #p("More text ...") ), bslib::value_box( - title = "Lecturas Totales", + shiny.i18n::usei18n(i18n), + title = i18n$t("Lecturas Totales"), value = textOutput("total_reads"), showcase = icon("dna")#, #p("Some text"), @@ -41,18 +48,19 @@ ui <- function(request){ theme = bslib::bs_theme(version = 5, preset = "yeti", primary = "#00719a"), # The Main sidebar sidebar = bslib::sidebar( + shiny.i18n::usei18n(i18n), id = "my_sidebar", - title = span(bsicons::bs_icon("funnel"), "Filtrar Datos", class = "sidebar-title"), + title = span(bsicons::bs_icon("funnel"), i18n$t("Filtrar Datos"), class = "sidebar-title"), open = FALSE, bg = "white", bslib::accordion( open = FALSE, bslib::accordion_panel( - title ="Filtrar muestras", + title = "Filtrar muestras", icon = icon("vial"), sliderInput( "sample_total_count", - label = "Lecturas totales mínimo", + label = i18n$t("Lecturas totales mínimo"), min = 1, max = 10000, value = 1 @@ -66,7 +74,7 @@ ui <- function(request){ placeholder = "Enter Sample_ID")) ), bslib::accordion_panel( - title = "Filtrar taxones", + title = "Filtrar taxones", # can't wrap this in i18n$t()... icon = icon("bacteria"), sliderInput( inputId = "taxa_mean_ra", @@ -93,18 +101,20 @@ ui <- function(request){ ), actionButton( "input_apply_filter", - label = "Filtrar" + label = i18n$t("Filtrar") ), actionButton( "input_clean_filter", - label = "Remover filtros" + label = i18n$t("Remover filtros") )), # The tabs inside the navigation bar #################################### + # First tab #---------- bslib::nav_panel( - title = "Inicio", + #shiny.i18n::usei18n(i18n), + title = i18n$t("Inicio"), value = "start", # The card with content bslib::card_body(fillable = FALSE, @@ -117,50 +127,41 @@ ui <- function(request){ style="margin-left:0px;padding-left:0px"), tags$h3(class = 'jumbotron-heading', stye = 'margin-bottom:0px;margin-top:0px', - 'Un explorador de datos para estudiar el microbioma vaginal'), + i18n$t('Un explorador de datos para estudiar el microbioma vaginal')), #p(lorem::ipsum(paragraphs = 2, sentences = 5)) br(), - p("VTOOL es una herramienta basada en Shiny para el análisis - exploratorio de datos. A través de una interface - interactiva e intuitiva, esta herramienta busca facilitar - la exploración y visualización de datos asociados al estudio - del microbioma vaginal."), + p(i18n$t("VTOOL es una herramienta basada en Shiny para el análisis exploratorio de datos. A través de una interface interactiva e intuitiva, esta herramienta busca facilitar la exploración y visualización de datos asociados al estudio del microbioma vaginal.")), br(), - p("VTOOL es un proyecto de código abierto (open source), - desarrollado en colaboración con investigadores y bioninformáticos, - quienes buscan fomentar el estudio del microbioma vaginal. - Si te interesa contribuir, reportar errores, o saber más de - este proyecto, por favor", - tags$a(href="https://github.com/mticlla/vtool", "visita nuestro - repositorio en GitHub"), ".", .noWS = "outside") + p(i18n$t("VTOOL es un proyecto de código abierto (open source), esarrollado en colaboración con investigadores y bioninformáticos, quienes buscan fomentar el estudio del microbioma vaginal. Si te interesa contribuir, reportar errores, o saber más de este proyecto, por favor"), + tags$a(href="https://github.com/mticlla/vtool", i18n$t("visita nuestro repositorio en GitHub")), ".", .noWS = "outside") ), # Second element bslib::card_body( fillable = FALSE, fill = FALSE, tags$h3(class = 'jumbotron-heading', 'Empezemos cargando tus datos'), - p("1. Selecciona el formato del archivo:"), + p(i18n$t("1. Selecciona el formato del archivo:")), shinyWidgets::awesomeRadio( "input_format", label = "Formato:", choices = c("Tidytacos", "Biom"), selected = "Tidytacos", inline = T), # tags$br(), - p("2. Encuentra tu(s) archivos:"), + p(i18n$t("2. Encuentra tu(s) archivos:")), uiOutput("load_file_options"), tags$br(), actionButton( "input_my_data", - label = "Importar datos", + label = i18n$t("Importar datos"), width = "100%", disabled = FALSE ) %>% bslib::tooltip("¡No olvides cargar tus archivos antes de presionar este botón!"), tags$br(), tags$br(), - tags$h3(class = 'jumbotron-heading', 'O carga un dataset ejemplo'), + tags$h3(class = 'jumbotron-heading', i18n$t('O carga un dataset ejemplo')), actionButton( "input_example", - label = "Cargar ejemplo", + label = i18n$t("Cargar ejemplo"), width = "100%" ), tags$br(), tags$br() @@ -179,7 +180,7 @@ ui <- function(request){ )) ), bslib::nav_panel( - title = "Datos", + title = i18n$t("Datos"), value = "my_data", # the card with content bslib::layout_column_wrap( @@ -193,9 +194,9 @@ ui <- function(request){ id="my_data_tabs", # Muestras y metadata bslib::nav_panel( - title = "Muestras y metadata", + title = i18n$t("Muestras y metadata"), bslib::navset_underline(id="my_samples_navbar", - bslib::nav_panel("Explorar Tabla", + bslib::nav_panel(i18n$t("Explorar Tabla"), bslib::card( class="table-responsive", full_screen = TRUE, @@ -204,7 +205,7 @@ ui <- function(request){ position = "right", width = 400, open = FALSE, - tags$span(strong("Variable seleccionada: "), + tags$span(strong(i18n$t("Variable seleccionada: ")), textOutput("my_col_name")), #textOutput("my_col_name"), uiOutput("my_sample_col_plot_options"), @@ -214,31 +215,21 @@ ui <- function(request){ caption = "Cargando gráfico")) ), - p("Esta vista te permite explorar las muestras y su metadata."), + p(i18n$t("Esta vista te permite explorar las muestras y su metadata.")), DT::dataTableOutput(outputId = "my_samples", width = "100%") %>% shinycssloaders::withSpinner(color="#00719a", caption = "Cargando tabla") )) ), - bslib::nav_panel("Data Faltante", value = "my_samples_na_tab", + bslib::nav_panel(i18n$t("Data Faltante"), value = "my_samples_na_tab", bslib::card( full_screen = TRUE, #card_header("Data Faltante"), tags$span(class = "text-left", - p("Esta vista permite explorar patrones - de valores faltantes (NA) en la tabla de - muestras. El gráfico que mostramos es - una representación gráfica de la tabla, - donde las celdas que contienen valores son - de color ", - span("gris claro", style="color:#333333;"), - " y las celdas con valores faltantes son - de color", - span("gris oscuro", style="color:#cccccc;"),"."), - p("Además, el orden de las filas y las columnas - ha sido re-organizado de tal modo que muestras - con valores faltantes en las mismas columnas son - agrupadas. De igual manera, columnas con valores - faltantes en las mismas muestras son agrupadas.") + p(i18n$t("Esta vista permite explorar patrones de valores faltantes (NA) en la tabla de muestras. El gráfico que mostramos es una representación gráfica de la tabla, donde las celdas que contienen valores son de color"), + span(i18n$t("gris claro"), style="color:#333333;"), + i18n$t("y las celdas con valores faltantes son de color"), " ", + span(i18n$t("gris oscuro"), style="color:#cccccc;"),"."), + p(i18n$t("Además, el orden de las filas y las columnas ha sido re-organizado de tal modo que muestras con valores faltantes en las mismas columnas son agrupadas. De igual manera, columnas con valores faltantes en las mismas muestras son agrupadas.")) ), plotly::plotlyOutput("my_samples_nas") %>% shinycssloaders::withSpinner(color="#00719a", @@ -248,7 +239,7 @@ ui <- function(request){ bslib::nav_spacer()) ), bslib::nav_panel( - title = "Taxones y metadata", + title = i18n$t("Taxones y metadata"), bslib::card( full_screen = TRUE, bslib::layout_sidebar( @@ -256,7 +247,7 @@ ui <- function(request){ position = "right", width = 400, open = FALSE, - tags$span(strong("Variable seleccionada: "), + tags$span(strong(i18n$t("Variable seleccionada: ")), textOutput("my_taxa_col_name")), #textOutput("my_taxa_col_name"), uiOutput("my_taxa_col_plot_options"), @@ -264,13 +255,13 @@ ui <- function(request){ shinycssloaders::withSpinner(color="#00719a", caption = "Cargando gráfico") ), - p("Esta vista te permite explorar las taxa y su metadata."), + p(i18n$t("Esta vista te permite explorar las taxa y su metadata.")), DT::DTOutput(outputId = "my_taxa", width = "100%") %>% shinycssloaders::withSpinner(color="#00719a", caption = "Cargando tabla") )) ), bslib::nav_panel( - title = "Abundancias", + title = i18n$t("Abundancias"), bslib::card( full_screen = TRUE, bslib::layout_sidebar( @@ -278,7 +269,7 @@ ui <- function(request){ position = "right", width = 400, open = FALSE), - p("Esta vista te permite explorar la abundancia de cada taxón en cada muestra."), + p(i18n$t("Esta vista te permite explorar la abundancia de cada taxón en cada muestra.")), DT::DTOutput(outputId = "my_counts", width = "100%") %>% shinycssloaders::withSpinner(color="#00719a", caption = "Cargando tabla") ) @@ -289,14 +280,15 @@ ui <- function(request){ # 3rd tab #---------- bslib::nav_panel( - title = "Composición", + title = i18n$t("Composición"), value = "my_community", bslib::navset_pill( id="my_community_tabs", # Dominant taxa #-------------- bslib::nav_panel( - title = "Taxón dominante", + #shiny.i18n::usei18n(i18n), + title = i18n$t("Taxón dominante"), bslib::layout_sidebar( border = FALSE, sidebar = bslib::sidebar(id="my_dominant_taxa_sidebar", @@ -535,6 +527,21 @@ ui <- function(request){ ) ) ) + ), + # LANG + # LANG TAB + bslib::nav_spacer(), + bslib::nav_item( + #shiny.i18n::usei18n(i18n), + align="right", + shinyWidgets::pickerInput("selected_language", + i18n$t("Cambiar idioma"), + choices = i18n$get_languages(), + selected = i18n$get_key_translation(), + multiple = FALSE, + options = list(container = "nav") + #TODO: figure out how to make this select act normal + ) ) ) } diff --git a/README.Rmd b/README.Rmd index 0e64e1b..02dc505 100644 --- a/README.Rmd +++ b/README.Rmd @@ -16,6 +16,8 @@ knitr::opts_chunk$set( # VTOOL +[![es](https://img.shields.io/badge/lang-es-yellow.svg)](https://github.com/mticlla/VTOOL/blob/master/README.md) +[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/mticlla/VTOOL/blob/master/README.en.md)

diff --git a/README.en.Rmd b/README.en.Rmd new file mode 100644 index 0000000..799b819 --- /dev/null +++ b/README.en.Rmd @@ -0,0 +1,53 @@ +--- +output: github_document +--- + + + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + fig.path = "man/figures/README-", + out.width = "100%" +) +``` + +# VTOOL + + +[![es](https://img.shields.io/badge/lang-es-yellow.svg)](https://github.com/jonatasemidio/multilanguage-readme-pattern/blob/master/README.md) + +

+ +VTOOL is a shiny application designed to explore microbial sequencing data with a focus on vaginal microbiota in relation to socio-demographic, clinical or lifestyle factors. + +VTOOL has been developed following a user-centered-design (UCD) approach. + +The initial conceptual approach of VTOOL is as follows: + +![](man/figures/vtool_ventana_1_1.png) + +![](man/figures/vtool_ventana_2_1.png) + +![](man/figures/vtool_ventana_3.png) + +![](man/figures/vtool_ventana_4.png) + +## Install + +To install the development version of VTOOL in R, you can use the following command: + +``` +# install.packages("devtools") #un-comment if devtools not installed already +devtools::install_github("mticlla/VTOOL") +``` + +## Usage + +Once installed, VTOOL can be accessed through a web application or run locally. + +``` +library(VTOOL) +VTOOL::run_app() +``` diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..d0d008b --- /dev/null +++ b/README.en.md @@ -0,0 +1,44 @@ + + + +# VTOOL + + +[![es](https://img.shields.io/badge/lang-es-yellow.svg)](https://github.com/jonatasemidio/multilanguage-readme-pattern/blob/master/README.md) + +

+ +

+ +VTOOL is a shiny application designed to explore microbial sequencing +data with a focus on vaginal microbiota in relation to +socio-demographic, clinical or lifestyle factors. + +VTOOL has been developed following a user-centered-design (UCD) +approach. + +The initial conceptual approach of VTOOL is as follows: + +![](man/figures/vtool_ventana_1_1.png) + +![](man/figures/vtool_ventana_2_1.png) + +![](man/figures/vtool_ventana_3.png) + +![](man/figures/vtool_ventana_4.png) + +## Install + +To install the development version of VTOOL in R, you can use the +following command: + + # install.packages("devtools") #un-comment if devtools not installed already + devtools::install_github("mticlla/VTOOL") + +## Usage + +Once installed, VTOOL can be accessed through a web application or run +locally. + + library(VTOOL) + VTOOL::run_app() diff --git a/README.md b/README.md index fe04ab7..e3856af 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ # VTOOL +[![es](https://img.shields.io/badge/lang-es-yellow.svg)](https://github.com/mticlla/VTOOL/blob/master/README.md) +[![en](https://img.shields.io/badge/lang-en-red.svg)](https://github.com/mticlla/VTOOL/blob/master/README.en.md)

diff --git a/inst/app/conversion.py b/inst/app/conversion.py new file mode 100644 index 0000000..7b855a0 --- /dev/null +++ b/inst/app/conversion.py @@ -0,0 +1,47 @@ +import json +import pandas as pd + +def excel_to_json(filepath): + df = pd.read_excel(filepath) + df = df.fillna("TODO") + outf = "/".join(filepath.split(".")[:-1]) + ".json" + translations = df.to_dict(orient="records") + lang = df.columns.to_list() + lang.pop("es") + # needs to be first! + lang.insert(0, "es") + data = dict( + languages = lang, + translation = translations + ) + with open(outf, "w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=4) + + +def json_to_excel(filepath): + with open(filepath) as f: + data = json.load(f) + df = pd.DataFrame(data["translation"]) + outf = "/".join(filepath.split(".")[:-1]) + ".xlsx" + df.to_excel(outf, index=False) + +if __name__ == "__main__": + import sys + import os + if len(sys.argv) < 2: + print("Please choose a file to convert") + exit(0) + filepath = sys.argv[1] + if not os.path.exists(filepath): + print(f"File {filepath} does not exist") + exit(0) + + ext = filepath.split(".")[-1] + + if ext == 'json': + json_to_excel(filepath) + elif ext == "xlsx": + excel_to_json(filepath) + else: + raise ValueError(f"Filetype {ext} not supported") + diff --git a/inst/app/translation.json b/inst/app/translation.json new file mode 100644 index 0000000..9584c94 --- /dev/null +++ b/inst/app/translation.json @@ -0,0 +1,249 @@ +{ + "languages": [ + "es", + "en", + "nl" + ], + "translation": [ + { + "en": "1. Select the format of the input", + "es": "1. Selecciona el formato del archivo:", + "nl": "1. Selecteer het formaat van de input" + }, + { + "en": "2. Search for your file(s):", + "es": "2. Encuentra tu(s) archivos:", + "nl": "2. Zoek je bestand(en):" + }, + { + "en": "Abundancy", + "es": "Abundancias", + "nl": "Abundantie" + }, + { + "en": "Change language", + "es": "Cambiar idioma", + "nl": "Verander taal" + }, + { + "en": "Composition", + "es": "Composición", + "nl": "Compositie" + }, + { + "en": "Data", + "es": "Datos", + "nl": "Data" + }, + { + "en": "Let's start with uploading your data", + "es": "Empezemos cargando tus datos", + "nl": "Laten we beginnen met de upload van jouw data" + }, + { + "en": "Filter", + "es": "Filtrar", + "nl": "Filteren" + }, + { + "en": "Filter Data", + "es": "Filtrar Datos", + "nl": "Data Filteren" + }, + { + "en": "Filter samples", + "es": "Filtrar muestras", + "nl": "Filter stalen" + }, + { + "en": "Format", + "es": "Formato:", + "nl": "Formaat" + }, + { + "en": "Start", + "es": "Inicio", + "nl": "Begin" + }, + { + "en": "Total reads", + "es": "Lecturas Totales", + "nl": "Totaal aantal sequenties" + }, + { + "en": "Samples", + "es": "Muestras", + "nl": "Stalen" + }, + { + "en": "Samples and metadata", + "es": "Muestras y metadata", + "nl": "Stalen en metadata" + }, + { + "en": "Amount of samples", + "es": "Nr. de Muestras", + "nl": "Aantal stalen" + }, + { + "en": "Amount of taxa", + "es": "Nr. de Taxones", + "nl": "Aantal taxa" + }, + { + "en": "Remove filters", + "es": "Remover filtros", + "nl": "Verwijder filters" + }, + { + "en": "Dominant taxa", + "es": "Taxón dominante", + "nl": "Dominante taxa" + }, + { + "en": "Taxa and metadata", + "es": "Taxones y metadata", + "nl": "Taxa en metadata" + }, + { + "en": "A tool to explore data to study the vaginal microbiome", + "es": "Un explorador de datos para estudiar el microbioma vaginal", + "nl": "Een dataverkenner om het vaginale microbioom te bestuderen" + }, + { + "en": "Taxonomy", + "es": "Taxonomia", + "nl": "Taxonomie" + }, + { + "en": "Import data", + "es": "Importar datos", + "nl": "Importeer data" + }, + { + "en": "Or load an example dataset", + "es": "O carga un dataset ejemplo", + "nl": "Of laad een voorbeel dataset in" + }, + { + "en": "Load example", + "es": "Cargar ejemplo", + "nl": "Laad voorbeeld" + }, + { + "en": "VTOOL is a tool for exploratory data analysis based on Shiny. Through an interactive and intuitive interface, this tool aims to facilitate the exploration and visualization of data associated with the study of the vaginal microbiome.", + "es": "VTOOL es una herramienta basada en Shiny para el análisis exploratorio de datos. A través de una interface interactiva e intuitiva, esta herramienta busca facilitar la exploración y visualización de datos asociados al estudio del microbioma vaginal.", + "nl": "VTOOL is een applicatie voor de visualisatie en verkenning van data gebaseerd op Shiny. Met behulp van een intuitieve en interactieve interface, wil deze tool het verkennen en weergeven van data geassocieerd met het bestuderen van het vaginale microbioom faciliteren." + }, + { + "en": "VTOOL is an open source project, developed in collaboration with researchers and bioninformaticians, who seek to further the study of the vaginal microbiome. If you are interested in contributing, reporting bugs, or learning more about this project, please", + "es": "VTOOL es un proyecto de código abierto (open source), esarrollado en colaboración con investigadores y bioninformáticos, quienes buscan fomentar el estudio del microbioma vaginal. Si te interesa contribuir, reportar errores, o saber más de este proyecto, por favor", + "nl": "VTOOL is een open source project, ontwikkeld in nauwe samenwerking met onderzoekers en bio-informatici, die de studie van het vaginale microbioom willen bevorderen. Als je geïnteresseerd bent om bij te dragen, bugs te rapporteren of meer te weten te komen over dit project" + }, + { + "es": "visita nuestro repositorio en GitHub", + "en":"visit our repository on GitHub", + "nl":"bezoek onze repository op Github" + }, + { + "en": "No file selected", + "es": "Ningun archivo seleccionado", + "nl": "Geen bestand geselecteerd" + }, + { + "en": "Explore table", + "es": "Explorar Tabla", + "nl": "Verken de tabel" + }, + { + "en": "Missing values", + "es": "Data Faltante", + "nl": "Ontbrekende gegevens" + }, + { + "en": "Here you can view the samples and their metadata", + "es": "Esta vista te permite explorar las muestras y su metadata.", + "nl": "Hier kan je de stalen en metadata bekijken" + }, + { + "en": "This view allows you to explore patterns of missing values (NA) in the sample table. The graph shown is a graphical representation of the table, where cells containing values are light gray", + "es": "Esta vista permite explorar patrones de valores faltantes (NA) en la tabla de muestras. El gráfico que mostramos es una representación gráfica de la tabla, donde las celdas que contienen valores son de color", + "nl": "Met deze weergave kun je patronen van ontbrekende waarden (NA) in de voorbeeldtabel onderzoeken. De weergegeven grafiek is een grafische weergave van de tabel, waarbij cellen met waarden" + }, + { + "es": "y las celdas con valores faltantes son de color", + "en": "and cells with missing values are", + "nl": "zijn en cellen met ontbrekende waarden" + }, + { + "es":"gris claro", + "en":"light gray", + "nl":"lichtgrijs" + }, + { + "es":"gris oscuro", + "en":"dark grey", + "nl":"donkergrijs" + }, + { + "en": "In addition, the order of the rows and columns has been rearranged so that samples with missing values in the same columns are grouped together. Similarly, columns with missing values in the same samples are grouped together.", + "es": "Además, el orden de las filas y las columnas ha sido re-organizado de tal modo que muestras con valores faltantes en las mismas columnas son agrupadas. De igual manera, columnas con valores faltantes en las mismas muestras son agrupadas.", + "nl": "Daarnaast is de volgorde van rijen en kolommen herschikt, zodat steekproeven met ontbrekende waarden in dezelfde kolommen zijn gegroepeerd. Op dezelfde manier zijn kolommen met ontbrekende waarden in dezelfde steekproeven gegroepeerd." + }, + { + "en": "Here you can view the taxa and their metadata", + "es": "Esta vista te permite explorar las taxa y su metadata.", + "nl": "TODO" + }, + { + "en": "In this view you can explore the abundance of each taxa in each sample", + "es": "Esta vista te permite explorar la abundancia de cada taxón en cada muestra.", + "nl": "In dit venster kan je de aanwezigheid van specifieke taxa in elk staal visualizeren" + }, + { + "en": "Profiles", + "es": "Perfiles", + "nl": "Profielen" + }, + { + "en": "Show legend", + "es": "Mostrar legend", + "nl": "Toon legende" + }, + { + "en": "Group participants by variable", + "es": "Agrupar participantes según variable", + "nl": "Groepeer participanten adhv variabele" + }, + { + "es": "Variable seleccionada: ", + "en": "Variable selected: ", + "nl": "Gekozen variabele: " + }, + { + "en": "Group by taxonomical categorie", + "es": "Agrupar por categoría taxonómica", + "nl": "Groepeer obv taxonomie" + }, + { + "en": "Stratify by variable", + "es": "Estratificar por variable", + "nl": "Stratificeer adhv variabele" + }, + { + "en": "Upload the table 'samples.csv'", + "es": "Carga la tabla 'samples.csv'", + "nl": "Laad de tabel 'samples.csv' op" + }, + { + "en": "Upload the table 'counts.csv' or 'abundances.csv'", + "es": "Carga la tabla 'counts.csv' o 'abundances.csv'", + "nl": "Laad de tabel 'counts.csv' of 'abundances.csv' op" + }, + { + "en": "Upload the table 'taxa.csv'", + "es": "Carga la table 'taxa.csv'", + "nl": "Laad de tabel 'taxa.csv' op" + } + ] +} \ No newline at end of file diff --git a/inst/app/translation/translation_en.csv b/inst/app/translation/translation_en.csv new file mode 100644 index 0000000..668e3fa --- /dev/null +++ b/inst/app/translation/translation_en.csv @@ -0,0 +1,3 @@ +es,en +Inicio,Start +Cambiar idioma,Change language diff --git a/inst/app/www/favicon.ico b/inst/app/www/favicon.ico new file mode 100644 index 0000000..6f7aa1e Binary files /dev/null and b/inst/app/www/favicon.ico differ diff --git a/man/run_app.Rd b/man/run_app.Rd index d6ce530..edf99b6 100644 --- a/man/run_app.Rd +++ b/man/run_app.Rd @@ -4,7 +4,13 @@ \alias{run_app} \title{Run the Shiny Application} \usage{ -run_app() +run_app( + onStart = NULL, + options = list(), + enableBookmarking = NULL, + uiPattern = "/", + ... +) } \description{ Run the Shiny Application