<!DOCTYPE html>
knitr::opts_chunk$set(eval = FALSE)
Si c’est nécessaire, se connecter à la base de données en suivant les instructions du Readme.Rmd
# Chargement des packages
pkgload::load_all(attach_testthat = FALSE)
library(dplyr)
library(here)
# Connexion à la base si nécessaire
session <- new.env()
connect(session)
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
respecté partout, sinon la traduction ne pourra pas être effectuée
correctement dans l’application.
Pour l’interface utilisateur, l’application combine les fichiers csv
contenus dans le dossier inst/
et des tables contenues dans
la base de données PostGres.
Tous ces fichiers/tables 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
Si la requête SQL pour récupérer les tables suivantes doit changer,
alors ces fonctions sont à mettre à jour dans
R/utils_helpers.R
. Sinon, il n’y a rien à faire côté R lors
d’ajout de traductions dans la base.
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
inst/translation_help.csv
: contient la traduction pour les
bulles d’aide. Les bulles d’aide sont les bulles qui s’affichent lors du
passage de la souris sur un élément (?)
.
,
et avec l’option
“Formater les champs entre guillemets comme texte”
,
inst/translation_iucn.csv
: contient les traductions des
status IUCN.
,
et avec l’option
“Formater les champs entre guillemets comme texte”
,
inst/translation.csv
: contient tous les autres éléments
traduisibles de l’interface utilisateur.
,
et avec l’option
“Formater les champs entre guillemets comme texte”
,
Ces fichiers partagent la même structure. Ces derniers doivent posséder a minima:
NB: Dans le cas de inst/translation.csv
, la première
colonne est ‘DESCRIPTION’. Elle comporte une description plus détaillée
de la ligne en question.
Vous pouvez vérifier l’intégrité du csv à l’aide de la fonction
check_translation_csv()
:
translation_help <- check_translation_csv(here::here("inst/translation_help.csv"))
head(translation_help)
translation_iucn <- check_translation_csv(here::here("inst/translation_iucn.csv"))
head(translation_iucn)
translation <- check_translation_csv(here::here("inst/translation.csv"))
head(translation)
Ajouter une nouvelle langue doit se faire aux emplacements suivants:
Dans les fichiers manuellement mis à jour:
inst/translation_help.csv
inst/translation_iucn.csv
inst/translation.csv
Ajouter une nouvelle colonne à droite dont le titre correspond à
l’abbréviation de la nouvelle langue par exemple es
pour
l’espagnol et compléter chaque entrée avec la traduction.
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 langue est es
, ajouter
<option value="en">001f1ea001f1f8
Espanol</option>
. Le code unicode s’obtient en utilisant
l’émoji et stringi::stri_escape_unicode("🇪🇸")
.
i18n
et la
fonction with_i18()
dans l’app
with_i18(
"Text de base",
"text_de_base"
)
Va créer <span data-i18n="text_de_base">Text de
base</span>
.
Text de base
est affiché si i18n
plante
data-i18n="text_de_base"
correspond à la clé
d’entrée dans le data.frame de traduction, i.e. la valeur dans la
colonne entry.
Schématiquement, lorsque le JavaScript va traduire la page, il va aller
chercher pour chaque tag l’entrée data-i18n
, en tirer la
valeur, et aller chercher la traduction correspondante.
Par exemple, si nous traduisons en “fr”, la localisation fait (en JavaScript) l’action suivante
Sur un bouton
tags$span(
w3_hover_button(...), # bulle pour un bouton
w3_help_button(
"Select a species",
"species_modal_help" # repertorié dans "entry"
)
)
Sur un titre
h4(
with_i18("Catch and bycatch at sea", "[html]map-bycatch"),
w3_help_button(
"Select a species",
"catch_bycatch_help"
)
)
Si vous êtes dans une chaine d’opérations qui s’effectue dans la base de
données (avant un collect()
), vous pouvez utiliser la
fonction diadesatlas.translate()
qui est incluse dans la
base. C’est bien une fonction SQL incluse dans la base PostGIS et non
pas une fonction R.
Dans R, cela se traduit par un
mutate()
de la colonne à traduire comme ceci:
La traduction doit donc exister dans le csv de traduction.
Dans ce
cas, nous utilisons la fonction R de notre package
get_translation_entry()
get_translation_entry(entry = 'hsi_ggplot', lg = 'fr')
entry = 'hsi_ggplot'
correspond à la clé d’entrée
dans le data.frame de traduction, i.e. la valeur dans la colonne entry.