xgettext en ligne de commande (linux)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : xgettext en ligne de commande (linux)

Re: xgettext en ligne de commande (linux)

par AB » 29 juil. 2010, 16:11

=D> =D>

Bon investissement !

Te voilà maintenant avec un code à la bonnes norme :) Sinon tu aurais traîné l'ancienne version comme un fardeau... Du coup tu dois te sentir plus léger maintenant :wink:

Juste une petite remarque au passage pour ceux qui liront ce topic : il peut être plus simple de remplacer htmlentities($content) par htmlspecialchars($content) plutôt que de remplacer htmlentities($content) par htmlentities($content,ENT_COMPAT,'UTF-8')

Re: xgettext en ligne de commande (linux)

par jojolapine » 29 juil. 2010, 15:22

Alors petit état des lieux intermédiaire de la situation!

Bon déjà bonne nouvelle, j'ai réussit à passer mon local en utf8!
Il me reste maintenant à automatiser ça, pour que la migration de la prod soit la plus courte possible!

Donc voici comment j'ai procédé:
  1. ransformation des sources en utf8 à l'aide d'utf8izer complètement refondu!
    (Les sources comprenaient un dump de la bdd)
  2. Changement de tout les charset du dump de la bdd (latin1 collate latin1_swedish bla bla bla)
  3. création de la base
  4. Remplacement de toutes les apparitions de code ISO au des sources (header(), <meta>, etc...)
  5. Remplacement de htmlentities($content) par htmlentities($content,ENT_COMPAT,'UTF-8')
Voilà et à priori tout tourne, reste à vérifier dans tout les recoins, partir à la recherche d'éventuels utf8_encode/decode etc...

Si je script tout ça je partagerai! ;)
Merci pour le coup de motivation!

Re: xgettext en ligne de commande (linux)

par albat » 29 juil. 2010, 09:08

une solution possible pour convertir les fichiers est là
Excellente, cette solution ! =D> :pouce: ;) :lol:

Pour info, tu peux également tenter un export de ta base, coller le tout dans un fichier,
le passer dans cette moulinette magique et réimporter le résultat dans ta base.

Je l'ai fait et ça permet d'UTF-8iser une base en quelques minutes. ;o)

N'oublie pas alors d'ajouter dans ton code :

Code : Tout sélectionner

$utf8 = mysql_query("SET NAMES 'utf8';") or die('Conversion UTF-8 impossible');

Re: xgettext en ligne de commande (linux)

par AB » 29 juil. 2010, 04:43

Comme je l'ai dit plus haut, j'avais laissé des liens en bas de page sur ce topic concernant l'utf-8 . Pour t'éviter de rechercher, une solution possible pour convertir les fichiers est là

Après c'est sûr qu'il faudra faire des recherches sur les encode/decode pour les virer de ton code, mais bon comme tu connais les fonctions utilisées, elles seront assez facile à retrouver.

Peut-être il te faudra plusieurs jours ... pour tout vérifier et remettre en ordre mais ça vaut le coup d'envisager cette possibilité.

Déjà niveau maintenance et évolution future du code ce sera une facilité sans commune mesure comparé au maelstrom que vous êtes entrain de générer. Le peu de temps que vous allez gagner en continuant avec ces bidouilles est négligeable si l'on considère que c'est pour finir sur de très mauvaises bases - y'a pas pire - pour un site multilingues (c'est presque suicidaire !!!).

En d'autres termes il est quasiment certain que l'investissement passé aujourd'hui pour tout convertir au standard utf-8 sera très vite rentable, même à court terme, et au moins vous serez sur de bonne bases et vous pourrez envisager un avenir serein !

Heu... sinon... ils s'y connaissent un minimum en développement web tes patrons ? Parce que là ... envisager un site multilingue en iso de nos jours ... faut quand même oser :mrgreen:

Enfin bon, finalement c'est pas grave s'ils veulent raisonner à très court terme, ça te fera plus de boulot par la suite pour la moindre évolution du code. Ce qu'ils ne veulent pas payer aujourd'hui, ils le paieront demain au centuple :)

Re: xgettext en ligne de commande (linux)

par jojolapine » 28 juil. 2010, 21:45

Alors déjà pour être clair :p :
Je suis tout à fait de ton avis, mes devs persos sont tous en utf-8 pour les raisons que tu as cités et bien d'autres!
Vala!

Maintenant au boulot, on a un projet codé en ISO-8859-1 (et oui même pas 15) c'est environ à la louche:
-une centaine de fichiers (php,html,xml,js etc...)
-une 50aine de tables bien remplies.

Je fait surement des imprécisions, m'enfin bref!
Là dedans les sources sont normalement toutes encodées en ISO-8859-1 sauf certains fichiers ajax qui demandent comme tu l'as dis de l'utf8, les jonctions sont bidouillées à coup d'utf8_(de|en)code() etc...
On à réussit je ne sais par quel miracle à inclure le caractère € dans nos pages (rappelez-vous qu'il ne fait pas partie du charset ISO-8859-1).

Bref comme vous pouvez le voir, c'est bien le merdier!
Et je suis pas devin, mais je pense qu'il faudrait bien au minimum que je bosse une à deux semaines à plein temps pour transformer le tout... :/

Et s'ajoute à celà le fait que le site tourne pendant ce temps là, et pas question de le couper, donc il faudrait un mécanisme de migration bien ficelé!
Ou alors faire du petit à petit, mais les inclusions de fichier n'aideront pas... :/

Voilà! Belle cata hein?
Vous l'aurez compris les enfants: interdiction de lancer un projet web en charset!=utf8 !!!

Si tu as des idées quand à une migration éventuelle :-° ? (convaincante pour mes patrons :) )

Merci encore!

Re: xgettext en ligne de commande (linux)

par AB » 28 juil. 2010, 21:33

yep,
Alors oui mais non!
Bon déjà sur le projet qui m'occupe, il n'est pas envisageable pour l'instant de passer à l'utf8... Faut faire avec !
La grande question est pourquoi ?

Je dirais plutôt que c'est impératif de coder en utf-8 aujourd'hui, même pour un site mono langue... Faut faire avec !

Si besoin, dans le tuto que j'ai fait sur l'utf-8, y'a des liens en bas de page vers des topic qui permettent de transcoder un site de ISO vers UTF-8
ça peut paraitre de la bidouille, mais pour l'instant mes tests fonctionnent !
En plus d'être de la bidouille...

- Il faut que tu connaisses les langues à traduire pour envoyer les bonnes entêtes et modifier ton code si une langue n'est pas prévue.
- Tu travailles sur un code qui ne sera pas réutilisable ... (trop de bidouilles)
- Iconv peut parfois poser des problèmes sur certains serveurs.
- L'utf-8 est indispensable pour certaines fonctions php comme json souvent utilisée en ajax...

J'en oublie... bref continuer à coder aujourd'hui en en iso est très handicapant... mais bon si on te paye une fortune pour continuer à le faire, pourquoi pas :)

Re: xgettext en ligne de commande (linux)

par jojolapine » 28 juil. 2010, 20:47

yep,

Alors oui mais non!
Bon déjà sur le projet qui m'occupe, il n'est pas envisageable pour l'instant de passer à l'utf8... Faut faire avec!
Donc pour l'instant j'ai concocté un script shell qui me remplaces les entêtes correctement, et à l'aide d'iconv je convertis le tout...
ça peut paraitre de la bidouille, mais pour l'instant mes tests fonctionnent!

Donc bon je vous tiendrais au courant de ce que ça donne par la suite!

Re: xgettext en ligne de commande (linux)

par AB » 28 juil. 2010, 18:04

Ben j'utilise pas gettext pour mes sites multilangues (mes traductions sont en bdd) donc je peux pas répondre directement à ton problème.
Mais sur le principe, qui dit multilangues dit aussi encodage utf-8...

xgettext en ligne de commande (linux)

par jojolapine » 28 juil. 2010, 09:16

Bonjour à tous,

Je cherche désespérément à utiliser xgettext correctement... Sur des fichiers en ISO-8859-1, et avec des msgid comprenant des accents.
J'en demande peut-être beaucoup m'enfin c'est comme ça :)

La commande actuelle que j'utilise:

Code : Tout sélectionner

xgettext -kt --from-code=iso-8859-1 -j index.php -o index.po
Seulement il y a deux choses qui m'embête, premièrement le fichier générer est encodé en utf-8, ensuite les entêtes du fichiers sont les suivantes:

Code : Tout sélectionner

msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-07-28 09:06+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <[email protected]>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n"
Donc visiblement l'option "from-code" fonctionne bien (erreurs si je ne met rien), mais il me faudrait une option "to-code" et apparemment ça n'éxiste pas :(

Alors peut-être faut-il que je bidouille moi même et que j'utilise l'option --omit-header, et que j'écrive les header dans mon script bash (tout en ré-enregistrant le fichier en iso)...

Votre avis? vous avez déjà eu le problème?

Merci d'avance!