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 les différents DEFINIR 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'Verwerter 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:

  <Datei>
  <Body>
      > Travail de bas niveaux sur Actionscript 3.0 </trans-unit > <Trans-unit id = "NAME"> travail sur bas niveaux Actionscript 3.0 </ trans-unit>
  </ Body>
 </ File> 

Comme dans une Déjà-vu Vorige leçon, auf va 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 embed PXEmbedEngine..
	 pixlib . load . PXResourceLocator ; . Importnetto pixlib Last PXResourceLocator..
	 pixlib . log . PXDebug ; . Importnetto pixlib anmelden PXDebug..
	 pixlib . log . PXTraceLayout ; . Importnetto pixlib anmelden PXTraceLayout..
	 pixlib . log . addLogListener ; . Importnetto pixlib anmelden 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 Beispiel 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 embed
			 "frFR" , PXEmbedEngine . parseXML ) ; . PXEmbedEngine addParser ("frFR", PXEmbedEngine parseXML.);
			 "enUS" , PXEmbedEngine . parseXML ) ; . PXEmbedEngine addParser ("enUS", 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 (neue PXXMLLanguageBundle ("fr-FR", PXResourceLocator getInstance () locateXML ("frFR"))...);
			 new PXXMLLanguageBundle ( "en-US" , PXResourceLocator . getInstance ( ) . locateXML ( "enUS" ) ) ) ; lang addBundle (neue PXXMLLanguageBundle ("en-US", PXResourceLocator getInstance () locateXML ("enUS"))...);

			 // 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> Seren
			 // Envoyé
			 ; . lang Strom = "de-DE";
		 }

		 _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"), das..).
		 }
	 }
 } 

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 anmelden PXDebug..
	 pixlib . log . PXTraceLayout ; . Importnetto pixlib anmelden PXTraceLayout..
	 pixlib . log . addLogListener ; . Importnetto pixlib anmelden 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 Beispiel 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 ();.

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

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

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

3. Gestion des fichiers de traductions

Afin de pouvoir découper vos traductions il est de möglich DEFINIR un identifiant gießen chaque Bundle.

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

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

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

Bad, gießen récupérer les traductions, il suffit de cibler le Bündel Begierde:

  _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"), 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 divers exemple ci dessus, auf la méthode nutzen #getString () afin de la Valeur récupérer d'une traduction dans le langage et le Bündel Lust. 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 à Retourner 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 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 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 par la méthode défini 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 Formate: 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ücklich 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: <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="">