<!DOCTYPE html>
knitr::opts_chunk$set(eval = FALSE)
Note importante : Pensez à être bien vigilant sur l’harmonisation des code-langues. En d’autres termes, si l’on ajoute une langue avec le code es
, ce code doit être strictement respécté partout, sinon la traduction ne pourra pas être effectuée correctement dans l’application.
Pour l’interface utilisateur, l’application met ensemble des fichiers CSV, contenus dans le dossier inst/
et des tables contenues dans la base de données PostGre. Certains de ces fichiers sont automatiquement générés, certains se modifient à la main.
Tous ces fichiers contiennent au moins 5 colonnes:
entry
: la clé d’entrée dans le front (pour i18n)
en
: la traduction en anglais
fr
: la traduction en français
es
: la traduction en espagnol
pt
: la traduction en portugais
abundance_level
translation_abundance_level(session)
=> Cette fonction est à mettre à jour dans R/utils_helpers.R
species
: contient les traductions pour les éléments de niveau d’abondance.
translation_species(session)
=> Cette fonction est à mettre à jour dans R/utils_helpers.R
v_ecosystemic_services
translation_v_ecosystemic_services(session)
=> Cette fonction est à mettre à jour dans R/utils_helpers.R
Les help bubbles sont les éléments d’aide lors du passage de la souris sur un élément (?)
. ents.
Ces contenus sont dans le second onglet du Google Sheet de traduction, et sont ensuite compilés dans inst/translation_help.csv
, via le code ci-dessous, à relancer en cas de changement.
unlink("inst/translation_help.csv")
library(googlesheets4)
sheet_url <- readline("Enter the sheet url: ")
translation <- read_sheet(sheet_url, sheet = "help_bubbles")
translation <- translation %>%
mutate(
en = coalesce(en, contenu_markdown),
fr = coalesce(fr, contenu_markdown),
pt = coalesce(pt, contenu_markdown),
es = coalesce(es, contenu_markdown)
) %>%
mutate_at(
vars(en, fr, pt, es), function(x) {
purrr::map_chr(x, commonmark::markdown_html)
}
) %>%
select(-contenu_markdown)
translation %>%
readr::write_csv("inst/translation_help.csv")
translation
translation_iucn.csv
: contient les traductions pour status IUCN. Se génère via le code suivant mais devra être mis dans la base.
# TODO : get the translation inside the DB
# On utilise ici la description trouvée sur
# https://uicn.fr/liste-rouge-mondiale/
desc <- strsplit(
"Éteinte (EX), Éteinte à l’état sauvage (EW), En danger critique (CR), En danger (EN), Vulnérable (VU), Quasi menacée (NT), Préoccupation mineure (LC), Données insuffisantes (DD), Non évaluée (NE)",
split = ", "
)[[1]]
french_iucn <- data.frame(
fr_vals = gsub(
"([^\\(]+) \\(([^\\(]+)\\)",
"\\1,\\2",
desc
)
) %>%
tidyr::separate(
fr_vals,
into = c("fr", "entry"), sep = ","
)
en_iucn <- DBI::dbGetQuery(
get_con(session),
"SELECT distinct iucn_level_code AS entry,iucn_level_name AS en FROM v_iucn"
)
en_iucn %>%
dplyr::full_join(french_iucn) %>%
mutate(
es = en,
pt = en
) %>%
readr::write_csv("inst/translation_iucn.csv")
IMPORTANT Merci de centraliser dans le Google Sheet.
library(googlesheets4)
sheet_url <- readline("Enter the sheet url: ")
translation <- read_sheet(sheet_url)
translation$DESCRIPTION <- NULL
translation <- translation %>%
mutate(
en = coalesce(en, entry),
fr = coalesce(fr, en),
pt = coalesce(pt, en),
es = coalesce(es, en)
)
translation
Vérifier le dataframe au besoin. Ce dernier doit posséder à minima :
readr::write_csv(
translation,
"inst/translation.csv"
)
Vous pouvez vérifier l’intégrité du csv :
output <- check_translation_csv("inst/translation.csv")
head(output)
Ajouter une nouvelle langue doit se faire aux emplacements suivants:
translation_help.csv
avec le code suivant :
unlink("inst/translation_help.csv")
library(googlesheets4)
sheet_url <- readline("Enter the sheet url: ")
translation <- read_sheet(sheet_url, sheet = "help_bubbles")
translation %>%
mutate(
en = coalesce(en, contenu_markdown),
fr = coalesce(fr, contenu_markdown),
pt = coalesce(pt, contenu_markdown),
es = coalesce(es, contenu_markdown),
# Nouvelle langue
xyz = coalesce(xyz, contenu_markdown)
) %>%
mutate_at(
vars(en, fr, pt, es, xyz), function(x) {
purrr::map_chr(x, commonmark::markdown_html)
}
) %>%
select(-contenu_markdown) %>%
readr::write_csv("inst/translation_help.csv")
Fichier Google Sheet, ajouter une nouvelle colonne à droite (exemple es
)
translation_iucn.csv
: dans le code de génération du dessus, il faudra créer un nouveau data.frame, avec les traductions.
Note : ces traductions devront à termes être intégrées à la base
es_iucn <- data.frame(
entry = c("EX", "EW", "CR", "EN", "VU", "NT", "LC", "DD", "NE"),
es = c("", "", "", "", "", "", "", "", "")
)
puis mettre à jour le code du début de ce Rmd.
Ces fonctions sont dans R/utils_helpers.R
Les fonctions qui utilisent la traduction dans la bdd sont les suivantes :
translation_abundance_level()
: il faudra ajouter une partie au SQL type diadesatlas.translate(abundance_level_interpretation_short, ‘es’) AS es
translation_species()
: il faudra ajouter une partie au SQL type diadesatlas.translate(english_name, ‘es’) AS es
translation_v_ecosystemic_services()
pour chaque sous requête SQL, il faudra ajouter une partie au SQL type diadesatlas.translate(subcategory_name, ‘es’) as es
Si disponible, ajouter le langage dans get_dt_lg()
, à vérifier sur https://cdn.datatables.net/plug-ins/1.10.11/i18n/
Dans R/app_ui.R
, ajouter une entrée pour le sélecteur de langue. Si votre entrée de laangue est es
, ajouter <option value=“en”>