際際滷

際際滷Share a Scribd company logo
Building
Multi-language (i18n) Flex
          Applications



          Thomas Burleson
       Senior Architect / Consultant




                                       March 6, 2010
First some acronyms...
 i18n[Internationalization]
   entire business processes focused on software product support for other languages


          documentation
            translation,
            quality assurance,
            support,
            etc.

 l10n [Localization]
   Adaptation of software to 1 or more speci鍖c locales and culture contexts.

          Text translation
          Text Expansion and Flow
          Changes to images, colors, and sounds
          Changes to dynamic content and URLs
          Changes to fonts and styles
          etc.
English   |   Spanish | French |   Japanese   |   Chinese
Multi-language?
 Want to release your product in different languages?

     Could make separate build/codebase for each language


     Could build support for multi-language into your product.




 Could load the localized content from a...

     text 鍖le
     compiled resource bundle (for text, images, data, etc)
     remote database
     remote web service
Live
     Sample
 Registration Demo
 English & Spanish Support
 Startup Locale Detection
Registration Demo
    before l10n




  Review App hierarchy
  Review View source code
  Review View design mode
Registration Demo
             with
 Traditional l10n

 Create Properties 鍖les
 Compile Properties to Bundles
 Embed or Load Bundles
 Using the ResourceManager



 Review Impacts on Source
 Review Impacts on Design
 Consider Impacts on App
Registration Demo
             with
 Traditional l10n

 Create Properties 鍖les
 Compile Properties to Bundles
 Embed or Load Bundles
 Using the ResourceManager
     ... change all your views!


 Review Impacts on Source
 Review Impacts on Design
 Consider Impacts on App
Registration Demo
             with
 Traditional l10n

 Create Properties 鍖les
 Compile Properties to Bundles
 Embed or Load Bundles
 Using the ResourceManager



 Review Impacts on Source
 Review Impacts on Design
 Consider Impacts on App
Consider impacts...




     ... mangled design views!
...using ResourceManager
Using ResourceManager




01/21/10                    ThomasBurleson@gmail.com
Using ResourceManager




01/21/10                    ThomasBurleson@gmail.com
Consider IOC...
      Use Inversion of Control (IOC)



control instances "connect"            From   PULL
  to ResourceManager to
   access (pull) localized
          content.


                                             localized content is
                      To   PUSH              magically "injected"
                                           into control instances.


      With IOC, we can


                Centralize all injections of localized content
                Centralize all mappings from properties
IOC   with   l10n Injection




01/21/10                           ThomasBurleson@gmail.com
Injection   with   LocalizationMaps




01/21/10                       ThomasBurleson@gmail.com
l10n Injection
 Understanding concepts of
          LocalizationMap
          Resource Injectors
          Resource Proxies
          Smart ResourceInjectors

 Create your custom LocalizationMap

   1. Inject text to registered instances
   2. Inject parameterized Values
   3. Inject to ALL instances
   4. Inject localized bitmaps
   5. Inject skins
Registration Demo
with l10n Injection




 Create Properties 鍖les
 Compile Properties to Bundles
 Embed or Load Bundles
 Using the ResourceManager
 Create LocalizationMap registry


 Review Impacts on View Source
 Review Impacts on Design
 Consider Impacts on App
Registration Demo
with l10n Injection




 Create Properties 鍖les
 Compile Properties to Bundles
 Embed or Load Bundles
 Using the ResourceManager
 Create LocalizationMap registry



 Review Impacts on View Source
 Review Impacts on Design
 Consider Impacts on App
Registration Demo
with l10n Injection




 Create Properties 鍖les
 Compile Properties to Bundles
 Embed or Load Bundles
 Using the ResourceManager



 Review Impacts on View Source
 Review Impacts on Design
 Consider Impacts on App
LocalizationMaps
 Learned how to us LocalizationMaps in your App


 When does the injection occur?

           1. When ResourceManager announces locale changes.
           2. When instances are created           (if...)

           3. When parameterized values change     (if...)

           4. When view states change              (if...)
LocalizationMaps
 Extra considerations

   1. Dynamically loading Bundles
   2. Font Dependencies and Unicode
   3. Compiling with Unicode
   4. Dynamically loading Fonts



 Issues still remaining...

   1. Text Expansion
   2. Text Translation & Online Tools
   3. Databases vs Bundles
 Use ColdFusion as remote localization server:
      1. RESTful Service for dynamic xml as virtual bundles

      2. Performed at the business services layer

      3. Completely transparent to LocalizationMaps and your app.

      4. Can load dynamically compiled fonts




 Use ColdFusion for Translation services:
      1. Save/load translations of properties 鍖les (key/value pairs).

      2. Duplicate for other locales

      3. Upload content for localized bitmaps and other assets
Thomas Burleson
                                                        Senior Architect / Consultant



1. Source code:     http://github.com/ThomasBurleson/l10n_Injection

2. Sample apps:     http://github.com/ThomasBurleson/l10nInjection_Samples

3. Personal blog: http://www.gridlinked.info/

4. Intro to i18n:   http://www.tinyurl.com/ykru3yp




                                                                   ThomasBurleson@gmail.com

More Related Content

Building Multilanguage (i18n) Flex Applications

  • 1. Building Multi-language (i18n) Flex Applications Thomas Burleson Senior Architect / Consultant March 6, 2010
  • 2. First some acronyms... i18n[Internationalization] entire business processes focused on software product support for other languages documentation translation, quality assurance, support, etc. l10n [Localization] Adaptation of software to 1 or more speci鍖c locales and culture contexts. Text translation Text Expansion and Flow Changes to images, colors, and sounds Changes to dynamic content and URLs Changes to fonts and styles etc.
  • 3. English | Spanish | French | Japanese | Chinese
  • 4. Multi-language? Want to release your product in different languages? Could make separate build/codebase for each language Could build support for multi-language into your product. Could load the localized content from a... text 鍖le compiled resource bundle (for text, images, data, etc) remote database remote web service
  • 5. Live Sample Registration Demo English & Spanish Support Startup Locale Detection
  • 6. Registration Demo before l10n Review App hierarchy Review View source code Review View design mode
  • 7. Registration Demo with Traditional l10n Create Properties 鍖les Compile Properties to Bundles Embed or Load Bundles Using the ResourceManager Review Impacts on Source Review Impacts on Design Consider Impacts on App
  • 8. Registration Demo with Traditional l10n Create Properties 鍖les Compile Properties to Bundles Embed or Load Bundles Using the ResourceManager ... change all your views! Review Impacts on Source Review Impacts on Design Consider Impacts on App
  • 9. Registration Demo with Traditional l10n Create Properties 鍖les Compile Properties to Bundles Embed or Load Bundles Using the ResourceManager Review Impacts on Source Review Impacts on Design Consider Impacts on App
  • 10. Consider impacts... ... mangled design views!
  • 12. Using ResourceManager 01/21/10 ThomasBurleson@gmail.com
  • 13. Using ResourceManager 01/21/10 ThomasBurleson@gmail.com
  • 14. Consider IOC... Use Inversion of Control (IOC) control instances "connect" From PULL to ResourceManager to access (pull) localized content. localized content is To PUSH magically "injected" into control instances. With IOC, we can Centralize all injections of localized content Centralize all mappings from properties
  • 15. IOC with l10n Injection 01/21/10 ThomasBurleson@gmail.com
  • 16. Injection with LocalizationMaps 01/21/10 ThomasBurleson@gmail.com
  • 17. l10n Injection Understanding concepts of LocalizationMap Resource Injectors Resource Proxies Smart ResourceInjectors Create your custom LocalizationMap 1. Inject text to registered instances 2. Inject parameterized Values 3. Inject to ALL instances 4. Inject localized bitmaps 5. Inject skins
  • 18. Registration Demo with l10n Injection Create Properties 鍖les Compile Properties to Bundles Embed or Load Bundles Using the ResourceManager Create LocalizationMap registry Review Impacts on View Source Review Impacts on Design Consider Impacts on App
  • 19. Registration Demo with l10n Injection Create Properties 鍖les Compile Properties to Bundles Embed or Load Bundles Using the ResourceManager Create LocalizationMap registry Review Impacts on View Source Review Impacts on Design Consider Impacts on App
  • 20. Registration Demo with l10n Injection Create Properties 鍖les Compile Properties to Bundles Embed or Load Bundles Using the ResourceManager Review Impacts on View Source Review Impacts on Design Consider Impacts on App
  • 21. LocalizationMaps Learned how to us LocalizationMaps in your App When does the injection occur? 1. When ResourceManager announces locale changes. 2. When instances are created (if...) 3. When parameterized values change (if...) 4. When view states change (if...)
  • 22. LocalizationMaps Extra considerations 1. Dynamically loading Bundles 2. Font Dependencies and Unicode 3. Compiling with Unicode 4. Dynamically loading Fonts Issues still remaining... 1. Text Expansion 2. Text Translation & Online Tools 3. Databases vs Bundles
  • 23. Use ColdFusion as remote localization server: 1. RESTful Service for dynamic xml as virtual bundles 2. Performed at the business services layer 3. Completely transparent to LocalizationMaps and your app. 4. Can load dynamically compiled fonts Use ColdFusion for Translation services: 1. Save/load translations of properties 鍖les (key/value pairs). 2. Duplicate for other locales 3. Upload content for localized bitmaps and other assets
  • 24. Thomas Burleson Senior Architect / Consultant 1. Source code: http://github.com/ThomasBurleson/l10n_Injection 2. Sample apps: http://github.com/ThomasBurleson/l10nInjection_Samples 3. Personal blog: http://www.gridlinked.info/ 4. Intro to i18n: http://www.tinyurl.com/ykru3yp ThomasBurleson@gmail.com