= Utilisation de gettext = == ''notes internes pour les développeurs == [[BR]] 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 : {{{ #!r 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") {{{ #!r 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 {{{ #!r # 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