wiki:Stacomi gettext

Version 25 (modified by cedric, 8 years ago) (diff)

--

Utilisation de gettext

notes internes pour les développeurs


retour à la page de démarrage ..


téléchargement du logiciel https://www.gnu.org/software/gettext/ ... en fait les routines d'uilisation de po sont dans poedit ci après
Aide : https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Internationalization
https://poedit.net/ ???

Dans R

Utilisation de gettext

Traduction des messages stop, warning et message + tout message encapsulé dans gettext et gettextf.

Outils pour préparer :

tools::xgettext2pot 
res<-tools::xgettext("F:/workspace/stacomir/pkg/stacomir")# extracts the actual calls 
# prépare le répertoire du package
 tools::update_pkg_po("F:/workspace/stacomir/pkg/stacomir")
# en fait crée un répertoire po avec un fichier R-stacomiR.pot

Pour aller chercher toutes les instances d'appel à msg j'utilise l'expression régulière qui suit (en cochant la case expression régulière en éclipse)

get\(\"msg\"\,envir\_stacomi\)\$(.)+(,)

et pour remplacer l'expression régulière is faut utiliser

gettext($1)

ce qui va ajouter gettext au 1er match de l'expression régulière précédente

L'appel à tools::update_pkg_po("F:/workspace/stacomir/pkg/stacomir") ne prend que les trucs entre quote, pour extraire tout il faut res<-tools::xgettext("F:/workspace/stacomir/pkg/stacomir")

res<-tools::xgettext("F:/workspace/stacomir/pkg/stacomir")
str(res)
#List of 29
# $ F:/workspace/stacomir/pkg/stacomir/R/Bilan_carlot.r                 :Class 'xgettext'  chr [1:13] "get(\"msg\", envir_stacomi)$Bilan_carlot.1" "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.2" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/Bilan_poids_moyen.r            :Class 'xgettext'  chr [1:19] "get(\"msg\", envir_stacomi)$Bilan_poids_moyen.1" "get(\"msg\", envir_stacomi)$Bilan_poids_moyen.2" "get(\"msg\", envir_stacomi)$ref.9" "TRUE" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/Bilan_stades_pigm.r            :Class 'xgettext'  chr [1:6] "get(\"msg\", envir_stacomi)$Bilan_stades_pigm.1" "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.5" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanAgedemer.r                :Class 'xgettext'  chr [1:14] "get(\"msg\", envir_stacomi)$BilanAgedemer.1" "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.2" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanAnnuels.r                 :Class 'xgettext'  chr [1:11] "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.2" "get(\"msg\", envir_stacomi)$ref.3" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanArgentee.r                :Class 'xgettext'  chr [1:12] "get(\"msg\", envir_stacomi)$BilanArgentee.1" "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.2" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanEspeces.r                 :Class 'xgettext'  chr [1:8] "get(\"msg\", envir_stacomi)$BilanEspeces.7" "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.9" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanFonctionnementDC.r        :Class 'xgettext'  chr [1:23] "get(\"msg\", envir_stacomi)$BilanFonctionnementDC.1" "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.5" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanFonctionnementDF.r        :Class 'xgettext'  chr [1:7] "plot.type must be 1,2,3 or 4" "get(\"msg\", envir_stacomi)$BilanFonctionnementDF.7" "bilanFonctionnementDF@df@df_selectionne" "get(\"msg\", envir_stacomi)$BilanFonctionnementDF.6[1]" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanMigration.r               :Class 'xgettext'  chr [1:25] "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.2" "get(\"msg\", envir_stacomi)$ref.3" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanMigrationInterAnnuelle.r  :Class 'xgettext'  chr [1:21] "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.2" "get(\"msg\", envir_stacomi)$ref.3" ...
# $ F:/workspace/stacomir/pkg/stacomir/R/BilanMigrationMult.r           :Class 'xgettext'  chr [1:22] "get(\"msg\", envir_stacomi)$ref.1" "TRUE" "get(\"msg\", envir_stacomi)$ref.2" "get(\"msg\", envir_stacomi)$ref.3" ...

Comment remplacer toutes les entrées de la base

Hors de leur contexte d'appel, certains messages, notamment la concatenation de plusieurs chaines ne sera pas aisée Il faut trouver tous les funout() et les get("msg",envir_stacomi)$ et les remplacer par gettext("this is the message in get...") Ci dessous des méthodes sont programmées pour récupérer les messages

# message en anglais
assign("lang","English",envir=envir_stacomi)
object=new("RefMsg")
msgfr<-charge_avec_filtre(object,lang='French')
str(msgfr)
#Formal class 'RefMsg' [package "stacomiR"] with 2 slots
#  ..@ messager    :'data.frame':       0 obs. of  0 variables
#Formal class 'data.frame' [package "methods"] with 4 slots
#  .. .. ..@ .Data    : list()
#  .. .. ..@ names    : chr(0) 
#  .. .. ..@ row.names: int(0) 
#  .. .. ..@ .S3Class : chr "data.frame"
#  ..@ messagerlang:'data.frame':       364 obs. of  3 variables:
#  .. ..$ mrl_id    : int [1:364] 1 2 3 4 5 6 7 8 9 10 ...
# .. ..$ mrl_msr_id: int [1:364] 1 2 3 4 5 6 7 8 9 10 ...
#  .. ..$ mrl_text  : chr [1:364] "\"Il faut choisir un dispositif de comptage,cliquez sur valider \"" "\"Il faut choisir un taxon,cliquez sur valider \"" "\"Il faut choisir un stade,cliquez sur valider \"" "\"Il faut choisir un parametre,cliquez sur valider \"" ...
createmessage(object,TRUE)
msg<-get("msg",envir=envir_stacomi)
#$Bilan_stades_pigm.2
#[1] "Bilan des stades pigmentaires\n"
#
#$Bilan_stades_pigm.3
#[1] "BILAN STADES PIGMENTAIRES "

Dans eclipse rechercher toutes les instances de gettext Le script est dans /inst/config/generate_message.r En gros on transforme les messages en anglais puis on va remplacer le code ligne à ligne en l'évaluant. C'est bourrin !!!!!!!!!!

Ensuite il faudra utiliser les lignes de code pour traduire en prenant pour base le fichier Comme on ne peut rien classer il faudra le faire ligne à ligne, peut être à partir de tableurs excel