2010-09-11 4 views
2

Existe-t-il un moyen de générer (ou de dupliquer) automatiquement l'arborescence du site pour une traduction dans une autre langue? Par exemple via une commande url ou quelque chose comme ça.Générer automatiquement la traduction de SiteTree dans Silverstripe

Meilleures salutations, Benedikt

+0

Vous voulez dire alimenter l'arborescence du site pour google translate et le montrer dans la langue retournée ou quelque chose comme ça? – markus

+0

Non. Je veux préparer toute la structure du site pour la traduction. Par conséquent, je dois initialiser une contrepartie à chacune des pages existantes, mais avec un autre drapeau de la langue. – Benedikt

Répondre

0

Vous ne dupliquer l'arborescence du site pour créer une traduction. SilverStripe prend en charge les sites multilingues. Vous pouvez lire dessus ici: http://doc.silverstripe.org/sapphire/en/topics/translation

Si vous voulez un moyen d'automatiser cela, il n'y a pas de support natif, mais ce ne serait pas difficile à faire. Par URL, il suffirait d'ajouter une fonction à votre Page_Controller ou, encore mieux, vous pourriez écrire un module simple si c'est quelque chose que vous allez faire régulièrement (regardez le module googlesitemaps pour un exemple quand il passe à travers) pages comme vous le feriez). Vous pouvez obtenir toutes les pages en appelant:

Versioned::get_by_stage('SiteTree', 'Live', $filter); 

Ensuite, vous créez votre traduction en boucle. Vous pouvez également le faire via commandline en utilisant CMDLINE utilitaire de SilverStripe « l'amour »: http://doc.silverstripe.org/sapphire/en/topics/commandline

+0

Oui, mais le système crée une copie (liée) de cette page avec un autre indicateur de langue. – Benedikt

+0

OK - donc vous voulez juste un moyen de le faire automatiquement plutôt que d'éditer chaque page? Si oui, j'ai ajouté à ma réponse ci-dessus. –

1

Astuce:

->createTranslation() ne crée un enregistrement en direct, même si vous appelez cela sur une scène-objet créé avec:

$a = Versioned::get_one_by_stage($this->ClassName, 'Stage', $this->ClassName.".ID = ".$this->ID); 

Pour créer scène et Live-pages, vous devez:

$translation_GB = $this->createTranslation('en_GB'); 
$translation_GB->doRestoreToStage(); 

économie se fait automatiquement dans les deux cas.

Questions connexes