Discover a better, amazing way to build multi-language i18n features into your Flex applications. Instead of using the traditional approaches using the UIComponent.resourceManager, use Inversion of Control (IoC) and inject your localized resources at runtime. Learn more about the l10n Injection framework.
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
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
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