Comment traduire ?
Les outils
Puisque nous sommes des accros d'emacs, autant se servir de notre éditeur, programmeur, machin... favori. Tout d'abord gettext. Avec ce logiciel est livré po-mode.el. Il suffit d'installer gettext et gettext-el pour avoir les fonctionnalités de po-mode.el dans emacs.
Comment ?
Vous avez maintenant la couleur, le noir et blanc étant triste, et surtout vous ne pourrez traduire que ce qu'il y a à traduire, mise à part certaines exceptions à NE PAS traduire:
- La licence en début de document
- @kbd{...}
- @code
- @node
- ...
Il vous est également mis à position une page d'aide (non?), il suffit de taper h, puis une touche pour sortir. Le moyen le plus simple, pour moi, est d'appuyer sur 0, cela me donne une fenêtre où je peux chercher l'original, le traduire puis C-x o, return pour ouvrir le msgstr et y coller le texte. Mais à chaqu'un sa soupe!
Pour le traducteur ou le relecteur que vous êtes, c'est largement suffisant . Pour le coordinateur, il faut encore quelque chose en plus : po4a dont je voudrais remercier le mainteneur, Nicolas François dit nekral.
Un petit truc pour avoir un dico français-anglais sous la main avec Emacs:
(require 'url-util)
(defvar gt8-before-translation 't) (defvar gt8-acc "") (defvar gt8-after-translation nil) (defvar gt8-buffname "*gt8*")
(defun gt8-filter (proc string)
- (with-current-buffer gt8-buffname
- (when gt8-before-translation
- (setq gt8-acc (concat gt8-acc string)) (if (string-match ".*{\"translatedText\":\"" gt8-acc)
- (setq string (substring gt8-acc (match-end 0))
- gt8-before-translation nil)
- (setq string "")))
- (setq string "") (if (string-match "\"" string) (setq string (substring string 0 (match-beginning 0))
- gt8-after-translation 't)))
- (setq string (substring gt8-acc (match-end 0))
(when (> (length string) 0)
- (insert (replace-regexp-in-string "\\\\u0026#39;" "\'" string)))))
- (setq gt8-acc (concat gt8-acc string)) (if (string-match ".*{\"translatedText\":\"" gt8-acc)
- (when gt8-before-translation
(defun gt8 (source target text &optional buffname)
- (let ( (default-process-coding-system '(utf-8 . utf-8))
- (buffname (or buffname "*gt8*")))
- (unless (equal buffname (buffer-name))
- (when (get-buffer buffname)
- (kill-buffer buffname))
- (start-process-shell-command
- "gt8-process" nil
"curl" (format "'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s%%7C%s'" (replace-regexp-in-string "'" "'\\\\" (url-hexify-string text)) source target))
- "gt8-process" nil
- (when (get-buffer buffname)
(defun gt8-on-region ( buffname &optional source target)
- "translate the region, with a prefix arg insert the traduction
- after the point"
- (source
- (or source (read-from-minibuffer "source: " "en")))
- (target
- (or target (read-from-minibuffer "target: " "fr")))
- (or (and (not (stringp buffname)) (buffer-name))
- buffname)))
- target (buffer-substring
- (point-min) (- (point-max) 1))
; (region-beginning) (region-end))
- buffname)))
(defun gt8-on-region-en-fr (buffname) (interactive "P") (gt8-on-region buffname "en" "fr"))
(provide 'gt8)