PixTMS - La Lokalisierung de vos Anwendungen

PixTMS, nouvelle de Erweiterung Pixlib, permet de la Realiser facile Lokalisierung de vos Anwendungen Flash.

PixTMS gießen Pix lib T BERSETZUNG M anagement S ystem va permettre de vos gérer traductions avec le Unterstützung de fichiers:

  • XML
  • XLIFF
  • MO / PO
  • Fichier de Propriétés

Voyons Kommentar cela fonctionne.

Tout d'abord, une présentation rapide du système de Klassen mis à disposition dans cette librairie.

PXLanguage est le Singleton (le pilier) qui va s'occuper d'Aller récupérer les traductions et ensuite un ensemble de Klassen permettant de définir les différents Arten de données Geres pour les traductions (Bündel):

  • PXXMLLanguageBundle: données XML
  • PXXLIFFLanguageBundle: données au XLIFF-Format
  • PXPropLanguageBundle: fichier de Propriétés
  • PXPOLanguageBundle: données au PO-Format
  • PXMOLanguageBundle: données binaire MO

Ces Klassen tourne autour de l'Schnittstelle principale PXILanguageBundle (et d'une classe abstraite PXLanguageBundle).

Le système de traduction mis en place par PixTMS permet de Ladegerät des Dokumenten externes, mais aussi d'Verwerter des données qui sont packagées lors de la Zusammenstellung (eingebettet).

1. Présentation et traductions packagées

Prenons un premier l'exemple avec de l'Auslastung Verlängerung PixEmbed de Pixlib:

Tout d'abord un fichier XML de traduction rapide:

  <datei>
  <body>
      > Travail de bas niveaux sur Actionscript 3.0 </trans-unit > <trans-unit id = "NAME"> Travail de bas niveaux sur Actionscript 3.0 </ trans-unit>
  </ Body>
 </ File> 

Déjà-vu Comme dans une Vorige leçon, va auf créer nos einbetten:

  Paket
 {
	 MyEmbed public class MyEmbed
	 {
		 source = "fr-FR.xml" , mimeType= "application/octet-stream" ) ] [Embed (source = "fr-FR.xml" mimetype = "application / octet-stream")]
		 frFR : Class ; public var frFR: Klasse;

		 source = "en-US.xml" , mimeType= "application/octet-stream" ) ] [Embed (source = "en-US.xml" mimetype = "application / octet-stream")]
		 enUS : Class ; public var enUS: Klasse;
	 }
 } 

Et maintenant, on va gérer les traductions à parler proprement:

  Paket
 {
	 pixlib . core . PXBaseDocument ; . Importnetto pixlib Kern PXBaseDocument..
	 pixlib . embed . PXEmbedEngine ; . Importnetto pixlib einbetten PXEmbedEngine..
	 pixlib . load . PXResourceLocator ; . Importnetto pixlib Last PXResourceLocator..
	 pixlib . log . PXDebug ; .. Importnetto pixlib PXDebug einloggen.
	 pixlib . log . PXTraceLayout ; .. Importnetto pixlib PXTraceLayout einloggen.
	 pixlib . log . addLogListener ; .. Importnetto pixlib addLogListener einloggen.
	 pixlib . tms . PXLanguage ; . Importnetto pixlib tms PXLanguage..
	 pixlib . tms . bundles . PXXMLLanguageBundle ; ... Importnetto pixlib tms Bündel PXXMLLanguageBundle.

	 . Event ; . Import flash.events Ereignis;

	 Sample extends PXBaseDocument public class Probe erstreckt PXBaseDocument
	 {
		 onDocumentReady ( ) : void überschreiben geschützt OnDocumentReady Funktion (): void
		 {
			 / / Auf rajoute une sortie pour les-Nachrichten de Pixlib, ici le classique "Spur"
			 getInstance ( ) ) ; addLogListener (PXTraceLayout getInstance ().);

			 / / An erklären les einbetten
			 "frFR" , PXEmbedEngine . parseXML ) ; . PXEmbedEngine addParser ("frFR", PXEmbedEngine parseXML.);
			 "enUS" , PXEmbedEngine . parseXML ) ; . PXEmbedEngine addParser ("deDE", PXEmbedEngine parseXML.);
			 MyEmbed ) ; . PXEmbedEngine einbetten (MyEmbed);

			 / / Auf récupère le Singleton
			 PXLanguage = PXLanguage . getInstance ( ) ; var lang:. PXLanguage = PXLanguage getInstance ();

			 / / Auf ajoutes 2 Bündel en utilisant des Bundles XML (<em> PXXMLLanguageBundle </ em>) et
			 / / Auf récupère les données XML Brute depuis nos Ressourcen.
			 new PXXMLLanguageBundle ( "fr-FR" , PXResourceLocator . getInstance ( ) . locateXML ( "frFR" ) ) ) ; . lang addBundle (neu PXXMLLanguageBundle ("fr-FR", PXResourceLocator getInstance () locateXML ("frFR"))..);
			 new PXXMLLanguageBundle ( "en-US" , PXResourceLocator . getInstance ( ) . locateXML ( "enUS" ) ) ) ; . lang addBundle (neu PXXMLLanguageBundle ("en-US", PXResourceLocator getInstance () locateXML ("deDE"))..);

			 / / Auf écoute les change de langue möglich
			 ( PXLanguage . onChangeEVENT , _onChange ) ; . lang addEventListener (PXLanguage OnChange Ereignis, _onChange.);

			 / / Auf définie la langue Courante, ce qui aura gießen effet de Ladegerät
			 / / La traduction automatiquement.  Et l'évènement <em> # <strong> OnChange Ereignis </ strong> </ em> sera
			 / / Envoyé
			 ; . lang Strom = "fr-FR";
		 }

		 _onChange ( event : Event ) : void private function _onChange (event: Event): void
		 {
			 / / Auf récupère la traduction identifiée par "NAME" dans notre fichier XML.
			 PXLanguage . getInstance ( ) . getString ( "NAME" ) , this ) ; . PXDebug DEBUG (. PXLanguage getInstance () getString ("NAME"), so.);
		 }
	 }
 } 

2. Les TRADUCTIONS externes

Bien Aushöhlen, il est aussi de möglich Ladegerät des traductions depuis l'extérieur.

  Paket
 {
	 pixlib . core . PXBaseDocument ; . Importnetto pixlib Kern PXBaseDocument..
	 pixlib . log . PXDebug ; .. Importnetto pixlib PXDebug einloggen.
	 pixlib . log . PXTraceLayout ; .. Importnetto pixlib PXTraceLayout einloggen.
	 pixlib . log . addLogListener ; .. Importnetto pixlib addLogListener einloggen.
	 pixlib . services . PXHTTPService ; . Importnetto pixlib Dienstleistungen PXHTTPService..
	 pixlib . tms . PXLanguage ; . Importnetto pixlib tms PXLanguage..
	 pixlib . tms . bundles . PXLoadableBundle ; ... Importnetto pixlib tms Bündel PXLoadableBundle.
	 pixlib . tms . bundles . PXXLIFFLanguageBundle ; ... Importnetto pixlib tms Bündel PXXLIFFLanguageBundle.

	 . Event ; . Import flash.events Ereignis;

	 Sample extends PXBaseDocument public class Probe erstreckt PXBaseDocument
	 {
		 onDocumentReady ( ) : void überschreiben geschützt OnDocumentReady Funktion (): void
		 {
			 / / Auf rajoute une sortie pour les-Nachrichten de Pixlib, ici le classique "Spur"
			 getInstance ( ) ) ; addLogListener (PXTraceLayout getInstance ().);

			 / / Auf récupère le Singleton
			 PXLanguage = PXLanguage . getInstance ( ) ; var lang:. PXLanguage = PXLanguage getInstance ();

			 / / Ein Lade nos traductions en un utilisant Service HTTP
			 new PXLoadableBundle ( new PXXLIFFLanguageBundle ( "fr-FR" ) , new PXHTTPService ( "fr-FR.xlf" ) ) ) ; . lang addBundle (neu PXLoadableBundle (neu PXXLIFFLanguageBundle ("fr-FR"), neue PXHTTPService ("fr-FR.xlf")));
			 new PXLoadableBundle ( new PXXLIFFLanguageBundle ( "en-US" ) , new PXHTTPService ( "en-US.xlf" ) ) ) ; . lang addBundle (neu PXLoadableBundle (neu PXXLIFFLanguageBundle ("en-US"), neue PXHTTPService ("en-US.xlf")));

			 ( PXLanguage . onChangeEVENT , _onChange ) ; . lang addEventListener (PXLanguage OnChange Ereignis, _onChange.);
			 ; . lang Strom = "en-US";
		 }

		 _onChange ( event : Event ) : void private function _onChange (event: Event): void
		 {
			 PXLanguage . getInstance ( ) . getString ( "NAME" ) , this ) ; . PXDebug DEBUG (. PXLanguage getInstance () getString ("NAME"), so.);
		 }
	 }
 } 

Pour le charge externe, auf donc un nutzen Bündel particulier qui est le PXLoadableBundle.

Ce Bündel prend comme Argument, le de traduction à geben gérer (XML, XLIFF, PO, etc) sous forme de PXILanguageBundle et ensuite un PXService permettant de définir Kommentar seront chargées ces traductions.

3. Gestion des fichiers de traductions

Afin de pouvoir découper vos traductions il est de möglich définir un identifiant chaque Bündel gießen.

Pratique gießen créer des traductions spécifiques gießen telle ou d'une telle partie Anwendung.
Cet identifiant est un du constructeur Argument:

  / / Bundle par Default (sans Identifiant explizite)
 new PXLoadableBundle ( new PXMLLanguageBundle ( "fr-FR" ) , new PXHTTPService ( "fr/home.xml" ) ) ) ; . lang addBundle (neu PXLoadableBundle (neu PXMLLanguageBundle ("fr-FR"), neue PXHTTPService ("fr / home.xml")));

 / / Bündelt dédiés
 new PXLoadableBundle ( new PXMLLanguageBundle ( "fr-FR" , null , "home" ) , new PXHTTPService ( "fr/home.xml" ) ) ) ; . lang addBundle (neu PXLoadableBundle (neu PXMLLanguageBundle ("fr-FR", null, "zu Hause"), neue PXHTTPService ("fr / home.xml")));
 new PXLoadableBundle ( new PXMLLanguageBundle ( "fr-FR" , null , "error" ) , new PXHTTPService ( "fr/error.xml" ) ) ) ; . lang addBundle (neu PXLoadableBundle (neu PXMLLanguageBundle ("fr-FR", null, "Fehler"), neue PXHTTPService ("fr / error.xml"))); 

Ensuite, gießen récupérer les traductions, il suffit cibler de le Bündel désiré:

  _onChange ( event : Event ) : void private function _onChange (event: Event): void
 {
	 / / Auf récupère dans le Bündel par Standard
	 PXLanguage . getInstance ( ) . getString ( "NAME" ) , this ) ; . PXDebug DEBUG (. PXLanguage getInstance () getString ("NAME"), so.);

	 / / Auf récupère dans le Bündel "zu Hause"
	 PXLanguage . getInstance ( ) . getString ( "MESSAGE" , "home" ) , this ) ; . PXDebug DEBUG (. PXLanguage getInstance () getString ("MESSAGE", "Heimat"), so.);
 } 

4. Une traduction récupérer

Comme vu dans les divers exemple ci dessus, la méthode nutzen auf # getString () afin de la récupérer valeur d'une traduction dans le langage et le Bündel Desire. Cette méthode Gère aussi 2 paramètres optionnels supplémentaire afin de mieux contrôler la récupération des données.

Le 3 ème parametre est la valeur par défaut à-Feeds dans le cadre où la traduction demandée n'existe pas:

  _onChange ( event : Event ) : void private function _onChange (event: Event): void
 {
	 / / Auf récupère dans le Bündel par Default.  Si 'NAME' n'est pas défini
	 / / Alors on retournera "Pixlib"
	 PXLanguage . getInstance ( ) . getString ( "NAME" , null , "Pixlib" ) , this ) ; . PXDebug DEBUG (.. PXLanguage getInstance () getString ("NAME", null, "Pixlib"), this);
 } 

Et le 4 ème parametre lui est un tableau de l'Substitution que peut auf envoyer directement.

Une fois la traduction Retrouvée, la substituion avec les valeurs de ce tableau sera réalisé. Les Substitutionen fonctionnant sous le modèle défini par la méthode PXStringUtils # Ersatz ().

  _onChange ( event : Event ) : void private function _onChange (event: Event): void
 {
	 / / Auf récupère dans le Bündel "zu Hause", et une auf Réalise Substitution sur la traduction.
	 / / Dans le fichier de traduction, notre texte Devra être par exemple Format: Mein Name ist {0} {1}
	 PXLanguage . getInstance ( ) . getString ( "MESSAGE" , "home" , null , [ "Pixlib" , "AS3" ] ) , this ) ; . PXDebug DEBUG (.. PXLanguage getInstance () getString ("MESSAGE", "Heimat", null, ["Pixlib", "AS3"]), this);
 } 

5. Les téléchargements

Glückliche Codierung mit Pixlib

Dieser Eintrag wurde veröffentlicht in Erweiterung , Rahmen , Tutorial und verschlagwortet mit , , , , , , . Lesezeichen auf den Permalink .

Lassen Sie eine Antwort

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Sie können diese HTML-Tags und Attribute verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">