2011-04-14 3 views
0

Le dessous est cité de here:Comment utiliser les fonctions liées au textdomain en PHP?

<?php 

$directory = dirname(__FILE__).'/locale'; 
$domain = 'mydomain'; 
$locale ="pt_BR.utf8"; 

//putenv("LANG=".$locale); //not needed for my tests, but people say it's useful for windows 

setlocale(LC_MESSAGES, $locale); 
bindtextdomain($domain, $directory); 
textdomain($domain); 
bind_textdomain_codeset($domain, 'UTF-8'); 

Mais qu'est-ce que ça fait?

Répondre

1

textdomain() est spécifiquement sur la commutation entre plusieurs sources de texte. Dans les applications Web, vous avez généralement un seul domaine de texte, car il s'agit souvent d'une seule grande application. Vous pouvez l'utiliser si votre application est séparée en plusieurs modules. L'avantage est que les fichiers de traduction (.mo et .po) peuvent être édités et mis à jour séparément pour chaque partie de l'application.

Et lors de la commutation entre les modules, chacun peut réinitialiser son domaine:

# mail.php 
textdomain("mail"); 
print _("Application");  # prints "Mail app" 

vs

# calendar.php 
textdomain("calendar"); 
print _("Application");  # prints "Calendar app" e.g. 

Il y a aussi un raccourci à cette fin:

print dgettext("main", "Application"); # "Foobar app" 

Dans la commune Si vous utilisez textdomain() cependant juste avec le nom de l'application principale. Ce devint alors le nom de base pour les sources de transaltion myapp.mo:

textdomain("myapp"); 
+0

Comment configurer le .po afin que 'imprimer _ ("Application"),' 'peut émettre un courriel app'? – compiler

+0

Vous devez créer un fichier 'mail.po' et ajouter la chaîne de texte" Application "comme original, et" Mail app "comme traduction. – mario

Questions connexes