PixTMS - La Lokalisierung de vos Anwendungen

PixTMS, nouvelle Erweiterung de Pixlib, permet de réaliser facile la 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 (Bundle):

  • PXXMLLanguageBundle: données XML
  • PXXLIFFLanguageBundle: données au Format XLIFF
  • PXPropLanguageBundle: fichier de Propriétés
  • PXPOLanguageBundle: données au Format PO
  • 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'utiliser des données qui sont packagées lors de la Zusammenstellung (eingebettet).

1. Vorlage et traductions packagées

Prenons un premier exemple avec l'Auslastung de l'Erweiterung PixEmbed de Pixlib:

Tout d'abord un fichier XML de traduction rapide:

  <File>
  <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> 

Comme déjà vu dans une précédente 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 à proprement parler:

  Paket
 {
	 pixlib . core . PXBaseDocument ; . Importnetto pixlib Kern PXBaseDocument..;
	 pixlib . embed . PXEmbedEngine ; . Importnetto pixlib embed PXEmbedEngine..;
	 pixlib . load . PXResourceLocator ; . Importnetto pixlib Last PXResourceLocator..;
	 pixlib . log . PXDebug ; . Importnetto pixlib loggen PXDebug..;
	 pixlib . log . PXTraceLayout ; . Importnetto pixlib loggen PXTraceLayout..;
	 pixlib . log . addLogListener ; . Einfuhrnetto pixlib einloggen addLogListener..;
	 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 schreiben geschützten Funktion onDocumentReady (): void
		 {
			 // Auf rajoute une sortie pour les Nachrichten de Pixlib, ici le classique "Spur"
			 getInstance ( ) ) ; addLogListener (PXTraceLayout getInstance ().);

			 // An erklären les embed
			 "frFR" , PXEmbedEngine . parseXML ) ; . PXEmbedEngine addParser ("frFR", PXEmbedEngine parseXML.);
			 "enUS" , PXEmbedEngine . parseXML ) ; . PXEmbedEngine addParser ("deDE", PXEmbedEngine parseXML.);
			 MyEmbed ) ; . PXEmbedEngine embed (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 (neue PXXMLLanguageBundle ("de-DE", PXResourceLocator getInstance () locateXML ("frFR"))...);
			 new PXXMLLanguageBundle ( "en-US" , PXResourceLocator . getInstance ( ) . locateXML ( "enUS" ) ) ) ; lang addBundle (neue PXXMLLanguageBundle ("en-US", PXResourceLocator getInstance () locateXML ("deDE"))...);

			 // Auf écoute les changements 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 = "de-DE";
		 }

		 _onChange ( event : Event ) : void private Funktion _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"), das...);
		 }
	 }
 } 

2. Les traductions externes

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

  Paket
 {
	 pixlib . core . PXBaseDocument ; . Importnetto pixlib Kern PXBaseDocument..;
	 pixlib . log . PXDebug ; . Importnetto pixlib loggen PXDebug..;
	 pixlib . log . PXTraceLayout ; . Importnetto pixlib loggen PXTraceLayout..;
	 pixlib . log . addLogListener ; . Einfuhrnetto pixlib einloggen addLogListener..;
	 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 schreiben geschützten Funktion onDocumentReady (): 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 ();.

			 // Am Lade nos traductions en utilisant un Service HTTP
			 new PXLoadableBundle ( new PXXLIFFLanguageBundle ( "fr-FR" ) , new PXHTTPService ( "fr-FR.xlf" ) ) ) ; . lang addBundle (neue PXLoadableBundle (neue PXXLIFFLanguageBundle ("de-DE"), neue PXHTTPService ("fr-FR.xlf")));
			 new PXLoadableBundle ( new PXXLIFFLanguageBundle ( "en-US" ) , new PXHTTPService ( "en-US.xlf" ) ) ) ; . lang addBundle (neue PXLoadableBundle (neue 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 Funktion _onChange (event: Event): void
		 {
			 PXLanguage . getInstance ( ) . getString ( "NAME" ) , this ) ; PXDebug DEBUG (PXLanguage getInstance () getString ("NAME"), das...);
		 }
	 }
 } 

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

Ce Bündel prend comme Argument, le geben de traduction à 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 möglich de définir un identifiant gießen chaque Bündel.

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

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

 // Bündel dédiés
 new PXLoadableBundle ( new PXMLLanguageBundle ( "fr-FR" , null , "home" ) , new PXHTTPService ( "fr/home.xml" ) ) ) ; . lang addBundle (neue PXLoadableBundle (neue PXMLLanguageBundle ("de-DE", null, "Heimat"), neue PXHTTPService ("fr / home.xml")));
 new PXLoadableBundle ( new PXMLLanguageBundle ( "fr-FR" , null , "error" ) , new PXHTTPService ( "fr/error.xml" ) ) ) ; . lang addBundle (neue PXLoadableBundle (neue PXMLLanguageBundle ("de-DE", null, "error"), neue PXHTTPService ("fr / error.xml"))); 

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

  _onChange ( event : Event ) : void private Funktion _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"), das...);

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

4. récupérer une traduction

Comme vu dans les Taucher exemple ci dessus, auf Nutzung la méthode #getString () afin de la récupérer valeur d'une traduction dans le langage et le Bündel wünschen. 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 à reto dans le cadre où la traduction demandée n'existe pas:

  _onChange ( event : Event ) : void private Funktion _onChange (event: Event): void
 {
	 // Auf récupère dans le Bündel par Standard.  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"), das...);
 } 

Et le 4 ème parametre lui est un tableau de Substitution que l'on peut 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 Funktion _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 Formiat par exemple: Mein Name ist {0} um {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 Email-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst diese HTML Tags und Attribute: <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="">