pkgEnv <- new.env()
pkgEnv$label_en = list(
"Please authenticate" = "Please authenticate",
"Username:" = "Username :",
"Password:" = "Password :",
"Login" = "Login",
"Username or password are incorrect" = "Username or password are incorrect",
"Your account has expired" = "Your account has expired",
"Please change your password" = "Please change your password",
"New password:" = "New password :",
"Confirm password:" = "Confirm password :",
"Update new password" = "Update new password",
"Password successfully updated! Please re-login" = "Password successfully updated! Please re-login",
"The two passwords are different" = "The two passwords are different",
"Failed to update password" = "Failed to update password",
"Logout" = "Logout",
"Go to application" = "Go to application",
"Administrator mode" = "Administrator mode",
"Add a user" = "Add a user",
"Failed to update user" = "Failed to update user",
"User successfully updated" = "User successfully updated",
"Cancel" = "Cancel",
"Confirm new user" = "Confirm new user",
"Confirm change" = "Confirm change",
"Are you sure to remove user(s): %s from the database ?" = "Are you sure to remove user(s): %s from the database ?",
"Delete user(s)" = "Delete user(s)",
"Delete user" = "Delete user",
"Edit user" = "Edit user",
"User already exist!" = "User already exist!",
"Dismiss" = "Dismiss",
"New user %s succesfully created!" = "New user %s succesfully created!",
"Ask to change password" = "Ask to change password",
"Confirm" = "Confirm",
"Ask %s to change password on next connection?" = "Ask %s to change password on next connection?",
"Change saved!" = "Change saved!",
"Failed to update the database" = "Failed to update the database",
"Password does not respect safety requirements" = "Password does not respect safety requirements",
"Password must contain at least one number, one lowercase, one uppercase and must be at least length 6." = "Password must contain at least one number, one lowercase, one uppercase and must be at least length 6.",
"Number of connections per user" = "Number of connections per user",
"Number of connections per day" = "Number of connections per day",
"Total number of connection" = "Total number of connection",
"You can\'t remove yourself!" = "You can\'t remove yourself!",
"User:" = "User :",
"Period:" = "Period :",
"Last week" = "Last week",
"Last month" = "Last month",
"All period" = "All period",
"Home" = "Home",
"Select all shown users" = "Select all shown users",
"Remove selected users" = "Remove selected users",
"Force selected users to change password" = "Force selected users to change password",
"Users" = "Users",
"Passwords" = "Passwords",
"Download logs database" = "Download logs database",
"Download SQL database" = "Download SQL database",
"Reset password for %s?" = "Reset password for %s?",
"Reset password" = "Reset password",
"Temporary password:" = "Temporary password:",
"Password succesfully reset!" = "Password succesfully reset!",
"You are not authorized for this application" = "You are not authorized for this application",
"Language" = "Language"
)
pkgEnv$label_fr = list(
"Please authenticate" = "Veuillez vous authentifier",
"Username:" = "Nom d\'utilisateur :",
"Password:" = "Mot de passe :",
"Login" = "Se connecter",
"Username or password are incorrect" = "Nom d\'utilisateur ou mot de passe incorrect",
"Your account has expired" = "Votre compte a expir\u00e9",
"Please change your password" = "Veuillez changer votre mot de passe",
"New password:" = "Nouveau mot de passe :",
"Confirm password:" = "Confirmez le mot de passe :",
"Update new password" = "Mettre \u00e0 jour",
"Password successfully updated! Please re-login" = "Mot de passe modifi\u00e9! Veuillez vous reconnecter",
"The two passwords are different" = "Les deux mots de passe sont diff\u00e9rents",
"Failed to update password" = "Echec de la mise \u00e0 jour du mot de passe",
"Logout" = "Se d\u00e9connecter",
"Go to application" = "Aller \u00e0 l\'application",
"Administrator mode" = "Mode administrateur",
"Add a user" = "Ajouter un utilisateur",
"Failed to update user" = "Echec de la mise \u00e0 jour de l\'utilisateur",
"User successfully updated" = "Mise \u00e0 jour r\u00e9ussie",
"Cancel" = "Annuler",
"Confirm new user" = "Valider l\'ajout",
"Confirm change" = "Valider les modifications",
"Are you sure to remove user(s): %s from the database ?" = "Etes-vous s\u00fbr de vouloir supprimer %s de la base de donn\u00e9es ?",
"Delete user(s)" = "Supprimer l\'/les utilisateur(s)",
"Delete user" = "Supprimer l\'utilisateur",
"Edit user" = "Modifier l\'utilisateur",
"User already exist!" = "L\'utilisateur existe d\u00e9j\u00e0",
"Dismiss" = "Fermer",
"New user %s succesfully created!" = "Nouvel utilisateur %s cr\u00e9\u00e9 avec succ\u00e8s !",
"Ask to change password" = "Demander \u00e0 changer le mot de passe",
"Confirm" = "Confirmer",
"Ask %s to change password on next connection?" = "Demander \u00e0 %s de changer son mot de passe \u00e0 la prochaine connexion ?",
"Change saved!" = "Changements sauvegard\u00e9s !",
"Failed to update the database" = "Une erreur s\'est produite",
"Password does not respect safety requirements" = "Le mot de passe ne respecte les r\u00e8gles de s\u00e9curit\u00e9",
"Password must contain at least one number, one lowercase, one uppercase and must be at least length 6." = "Le mot de passe doit contenir au minimum un chiffre, une lettre majuscule, une lettre minuscule et doit \u00eatre au moins de longueur 6.",
"Number of connections per user" = "Nombre de connexions par utilisateur",
"Number of connections per day" = "Nombre de connexions par jour",
"Total number of connection" = "Nombre total de connexions",
"You can\'t remove yourself!" = "Vous ne pouvez pas supprimer votre propre compte!",
"User:" = "Utilisateur :",
"Period:" = "P\u00e9riode :",
"Last week" = "Semaine derni\u00e8re",
"Last month" = "Mois dernier",
"All period" = "P\u00e9riode enti\u00e8re",
"Home" = "Accueil",
"Select all shown users" = "S\u00e9lectionner tous les utilisateurs affich\u00e9s",
"Remove selected users" = "Supprimer les utilisateurs s\u00e9lectionn\u00e9s",
"Force selected users to change password" = "Forcer les utilisateurs s\u00e9l\u00e9ctionn\u00e9s \u00e0 changer de mot de passe",
"Users" = "Utilisateurs",
"Passwords" = "Mots de passe",
"Download logs database" = "T\u00e9l\u00e9charger les logs",
"Download SQL database" = "T\u00e9l\u00e9charger la base SQL",
"Reset password for %s?" = "R\u00e9initialiser le mot de passe de %s ?",
"Reset password" = "R\u00e9initialiser le mot de passe",
"Temporary password:" = "Mot de passe temporaire",
"Password succesfully reset!" = "Mot de passe r\u00e9initialis\u00e9",
"You are not authorized for this application" = "Vous n\'\u00eates pas habilit\u00e9 pour cette application",
"Language" = "Langue"
)
pkgEnv$label_ptbr = list(
"Please authenticate" = "Autentica\u00e7\u00e3o",
"Username:" = "Usu\u00e1rio :",
"Password:" = "Senha :",
"Login" = "Conectar",
"Username or password are incorrect" = "Usu\u00e1rio ou senha incorreto",
"Your account has expired" = "Sua conta expirou",
"Please change your password" = "Por favor, mude sua senha",
"New password:" = "Nova senha :",
"Confirm password:" = "Confirmar nova senha:",
"Update new password" = "Atualizar nova senha",
"Password successfully updated! Please re-login" = "Senha alterada com sucesso! Por favor, autentique-se novamente",
"The two passwords are different" = "As duas senhas s\u00e3o diferentes",
"Failed to update password" = "Falha em atualizar a senha",
"Logout" = "Desconectar",
"Go to application" = "Ir \u00e0 aplica\u00e7\u00e3o",
"Administrator mode" = "Modo administrador",
"Add a user" = "Adicionar usu\u00e1rio",
"Failed to update user" = "Falha em atualizar usu\u00e1rio",
"User successfully updated" = "Usu\u00e1rio atualizado com sucesso",
"Cancel" = "Cancelas",
"Confirm new user" = "Confirmar novo usu\u00e1rio",
"Confirm change" = "Confirmar mudan\u00e7a",
"Are you sure to remove user(s): %s from the database ?" = "Tem certeza que deseja remover o(s) usu\u00e1rio(s) %s do banco de dados?",
"Delete user(s)" = "Deletar usu\u00e1rio(s)",
"Delete user" = "Deletar usu\u00e1rio",
"Edit user" = "Modificar usu\u00e1rio",
"User already exist!" = "O usu\u00e1rio j\u00e1 existe!",
"Dismiss" = "Fechar",
"New user %s succesfully created!" = "Novo usu\u00e1rio %s criado com sucesso!",
"Ask to change password" = "Pedir para alterar a senha",
"Confirm" = "Confirmar",
"Ask %s to change password on next connection?" = "Pedir a %s para alterar a senha na pr\u00f3xima conex\u00e3o?",
"Change saved!" = "Mudan\u00e7as salvas!",
"Failed to update the database" = "Erro em atualizar o banco de dados",
"Password does not respect safety requirements" = "Senha n\u00e3o conforme com as exig\u00eancias de seguran\u00e7a",
"Password must contain at least one number, one lowercase, one uppercase and must be at least length 6." = "A senha deve conter pelo menos um n\u00famero, uma letra min\u00fascula, uma letra mai\u00fascula e deve ter pelo menos 6 caracteres",
"Number of connections per user" = "N\u00famero de conex\u00f5es por usu\u00e1rio",
"Number of connections per day" = "N\u00famero de conex\u00f5es por dia",
"Total number of connection" = "N\u00famero total de conex\u00f5es",
"You can\'t remove yourself!" = "Voc\u00ea n\u00e3o pode se remover!",
"User:" = "Usu\u00e1rio :",
"Period:" = "Per\u00edodo :",
"Last week" = "Semana passada",
"Last month" = "M\u00eas passado",
"All period" = "Todo per\u00edodo",
"Home" = "In\u00edcio",
"Select all shown users" = "Selecionar todos os usu\u00e1rios mostrados",
"Remove selected users" = "Remover usu\u00e1rios selecionados",
"Force selected users to change password" = "For\u00e7ar usu\u00e1rio selecionado a mudar a senha",
"Users" = "Usu\u00e1rios",
"Passwords" = "Senhas",
"Download logs database" = "Fazer download dos logs do banco de dados",
"Download SQL database" = "Fazer download do banco de dados SQL",
"Reset password for %s?" = "Resetar a senha de %s?",
"Reset password" = "Resetar a senha",
"Temporary password:" = "Senha tempor\u00e1ria",
"Password succesfully reset!" = "Senha resetada com sucesso!",
"You are not authorized for this application" = "Voc\u00ea n\u00e3o est\u00e1 autorizado a utilizar esse aplicativo",
"Language" = "L\u00edngua"
)
#' @importFrom R6 R6Class
#' @importFrom utils modifyList
language <- R6::R6Class(
classname = "language",
public = list(
initialize = function() {
invisible(self)
},
set_language = function(lan) {
if (!lan %in% private$language_registered) {
stop("Unsupported language !", call. = FALSE)
}
private$language <- lan
private$labels <- switch (lan,
"en" = pkgEnv$label_en,
"fr" = pkgEnv$label_fr,
"pt-BR" = pkgEnv$label_ptbr
)
},
get = function(label) {
private$labels[[label]]
},
get_all = function() {
private$labels
},
get_DT = function() {
private$DT_lan[[private$language]]
},
get_language_registered = function() {
private$language_registered
},
get_language = function() {
private$language
}
),
private = list(
language = "en",
language_registered = c("en", "fr", "pt-BR"),
labels = pkgEnv$label_en,
DT_lan = list(
fr = list(
sProcessing = "Traitement en cours...", sSearch = "Rechercher :",
sLengthMenu = "Afficher _MENU_ éléments",
sInfo = "Affichage de l\'élément _START_ à _END_ sur _TOTAL_ éléments",
sInfoEmpty = "Affichage de l\'élément 0 à 0 sur 0 élément",
sInfoFiltered = "(filtré de _MAX_ éléments au total)",
sInfoPostFix = "", sLoadingRecords = "Chargement en cours...",
sZeroRecords = "Aucun élément à afficher",
sEmptyTable = "Aucune donnée disponible dans le tableau",
oPaginate = list(
sFirst = "Premier", sPrevious = "Précédent",
sNext = "Suivant", sLast = "Dernier"
),
oAria = list(
sSortAscending = ": activer pour trier la colonne par ordre croissant",
sSortDescending = ": activer pour trier la colonne par ordre décroissant"
)
),
en = list(
sEmptyTable = "No data available in table",
sInfo = "Showing _START_ to _END_ of _TOTAL_ entries",
sInfoEmpty = "Showing 0 to 0 of 0 entries",
sInfoFiltered = "(filtered from _MAX_ total entries)",
sInfoPostFix = "",
sInfoThousands = ",",
sLengthMenu = "Show _MENU_ entries",
sLoadingRecords = "Loading...",
sProcessing = "Processing...",
sSearch = "Search:",
sZeroRecords = "No matching records found",
oPaginate = list(
sFirst = "First",
sLast = "Last",
sNext = "Next",
sPrevious = "Previous"
),
oAria = list(
sSortAscending = ": activate to sort column ascending",
sSortDescending = ": activate to sort column descending"
)
),
`pt-BR` = list(
sEmptyTable = "Nenhum dado dispon\u00edvel na tabela",
sInfo = "Mostrando entrada de _START_ at\u00e9 _END_ de um total de _TOTAL_ entradas",
sInfoEmpty = "Mostrando entrada de 0 at\u00e9 0 de um total de 0 entradas",
sInfoFiltered = "(filtrado de um total de _MAX_ entradas)",
sInfoPostFix = "",
sInfoThousands = ",",
sLengthMenu = "Mostrar _MENU_ entradas",
sLoadingRecords = "Carregando...",
sProcessing = "Processando...",
sSearch = "Busca:",
sZeroRecords = "Nenhum registro compat\u00edvel encontrado",
oPaginate = list(
sFirst = "Primeiro",
sLast = "\u00daltimo",
sNext = "Pr\u00f3ximo",
sPrevious = "Anterior"
),
oAria = list(
sSortAscending = ": ativar para ordenar coluna de forma ascendente",
sSortDescending = ": ativar para ordenar coluna de forma descendente"
)
)
),
length = function() base::length(private$labels)
)
)
use_language <- function(lan = "en") {
lang <- language$new()
lang$set_language(lan)
lang
}
#' @title Modify {shinymanager} labels to use custom text
#'
#' @description See all labels registered with \code{get_labels()},
#' then set custom text with \code{set_labels()}.
#'
#' @param language Language to use for labels, supported values are : "en", "fr", "pt-BR".
#' @param ... A named list with labels to replace.
#'
#' @return \code{get_labels()} return a named list with all labels registered.
#' @export
#'
#' @name custom-labels
#'
#' @examples
#'
#' # In global.R for example:
#' set_labels(
#' language = "en",
#' "Please authenticate" = "You have to login",
#' "Username:" = "What's your name:",
#' "Password:" = "Enter your password:"
#' )
set_labels <- function(language, ...) {
if (!language %in% c("en", "fr", "pt-BR")) {
stop("Only supported language for the now are: en, fr, pt-BR", call. = FALSE)
}
args <- list(...)
if (!all(nzchar(names(args)))) {
stop("All arguments must be named!", call. = FALSE)
}
current_labels <- switch (language,
"en" = pkgEnv$label_en,
"fr" = pkgEnv$label_fr,
"pt-BR" = pkgEnv$label_ptbr
)
udpate_labels <- modifyList(
x = current_labels,
val = lapply(args, I)
)
if(language %in% "en"){
pkgEnv$label_en <- udpate_labels
} else if(language %in% "fr"){
pkgEnv$label_fr <- udpate_labels
} else if(language %in% "pt-BR"){
pkgEnv$label_ptbr <- udpate_labels
}
invisible(TRUE)
}
#' @export
#'
#' @rdname custom-labels
get_labels <- function(language = "en") {
if (!language %in% c("en", "fr", "pt-BR")) {
warning("Only supported language for the now are: en, fr, pt-BR", call. = FALSE)
language <- "en"
}
switch (language,
"en" = pkgEnv$label_en,
"fr" = pkgEnv$label_fr,
"pt-BR" = pkgEnv$label_ptbr
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.