oğuzdemirkapı - hands on training: creating our first i18n flex application (2 hours)
DESCRIPTION
This session is designed to create a basic application which has i18N capability with static, dynamic content and database and other platform integration. Every possible integration points such as database, XML or web services etc. will be included in the application with samples. ColdFusion will be used as application server for integration samples.Designed for 2 hours session and needs to have a laptop with Flex Builder installation. For integration samples, ColdFusion installation and one of the database engines of MySQL or MSSQL would be ideal.TRANSCRIPT
![Page 1: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/1.jpg)
CREATING OUR FIRST I18N (ÎÑŢÉRÑÄŢÎÖÑÅĻÎŽÅŢÎÖÑ) FLEX APPLICATION
360|Flex Indianapolis, IN
Oğuz DemirkapıCTO | NicheClick Media | http://NicheClick.com
![Page 2: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/2.jpg)
About Me
• CTO at NicheClick Media
• Coding since ‘85, CGI Programming since ’94
• ColdFusion Developer since ’97 (Flex since ‘07)
• Adobe Certified Expert
• Founder and Manager (prev) of CFUG for Turkey
• Manager of Orange County Adobe Developers User Group
• Interested in ColdFusion, Flex, AIR, Ajax, Frameworks, i18N, L10N, G11N
• Have big interest in Epistemology
• Living in Dana Point, CA
• Personal blog: http://blog.demirkapi.net
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 2
![Page 3: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/3.jpg)
Agenda
What you may expect?
i18N Theory & Basics
Flex & i18N
Resources
Questions & Answers
3i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net
![Page 4: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/4.jpg)
What You May Expect?
Open Your Eyes, if; May be not for you, if;
You are a i18N newbie
You heard that you should create i18N applications
You need to get idea about i18N usage
You want to get some tips
You are already using i18N in Flex in production
You think I know everything about i18N implementation on Flex
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 4
![Page 5: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/5.jpg)
Do we need multilingualism?
Yes!
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 5
![Page 6: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/6.jpg)
Why i18N (Internationalization)?
English is just another language! The World Wide Web should be truly world-wide! Internationalization is important to ensure that users
worldwide can equally benefit from Web technology Wide diversity world-wide:
• Scripts (Latin, Cyrillic, Hebrew, Tamil, Katakana,...) • Languages (English, German, Turkish, Korean, Japanese,...) • Typographic conventions • Cultural conventions • Political circumstances
Avoid fragmentation of specifications due to localization Make sure internationalization is done at the right place
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 6
![Page 7: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/7.jpg)
What is …?
What is i18N (Internationalization)? Application functions in at least two locales
What is L10N (Localization)? Process of applying a locale or language "skin" to an i18N
application
What is G11N (Globalization)? i18N & L10N
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 7
![Page 8: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/8.jpg)
Globalization & Localization
Internationalization Localization
Single character set
Single executable
Single install
Single server serves all clients in all languages
Based on globalized software
Adds specific translations and adaptations for particular languages and markets
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 8
Globalized software can be localized without any code changes
![Page 9: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/9.jpg)
Character encoding
Character encoding specifies mappings from a character set to the integer numbers that represent the characters on a computer.
EUC-JP (Japanese)
EUC-KR (Korean)
ISO-8859-1 (Western European and English)
SHIFT_JIS (Japanese)
UTF-8 (All Languages)
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 9
![Page 10: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/10.jpg)
What is Locale?
The combination of a language and a country code
en_US: US English (color, $)
en_GB: British English (colour, £)
de_CH: German in Switzerland
tr_TR: Turkish in Turkey
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 10
![Page 11: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/11.jpg)
Selecting Locale
Manual• Default locale can be loaded and other options would
be available by selection via buttons/selects etc.
Locale Detection• Capabilities.language property in Flash Player and AIR
• Parsing ‘Accept-Language’ header on HTTP request Not usable with URLLoader
• Parsing browser and OS language settings via JavaScript
• Location detection depending on IP
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 11
![Page 12: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/12.jpg)
Problems
Charset Conversions
Formatting & Parsing
Date & time
Messages
Numbers & currencies
Translated Names
Languages, Regions (Countries), Scripts, Time zones, Currencies
Calendar, Time Zone, Date/Time conversions
Collation
◦ Searching, Sorting, Matching
Segmentation
◦ word, line, …
Transforms
◦ Normalization
◦ Casing
◦ Transliterations
Unicode Regular Expressions
Complex-Text Display / Input
…
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 12
![Page 13: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/13.jpg)
What is Unicode?
Unicode (unicode.org) is an character set for all the characters and symbols of the world.
Unicode provides a unique number for every character.
Except Klingon!
؟" يونِكود"ما هي الشفرة الموحدة Unicode nedir? Τι είναι το UnicodeCos'è Unicode?유니코드에 대해?Что такое Unicode?
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 13
![Page 14: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/14.jpg)
Unicode (cont.)
Why do we need to use Unicode?• Avoids data corruption
• Single encoding for text in all languages
• Makes software globalization possible
Vastly reduces development cost
Vastly reduces maintenance, update and support cost
Switching to Unicode has no disadvantages for single language users, to the contrary it usually offers advantages even for single language users. And it offers great advantages for multilingual users.
Encoding: Use Unicode wherever possible for content, databases, etc. Always declare the encoding of content.
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 14
![Page 15: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/15.jpg)
Unicode (cont.)
Non-Globalized Component• Does not use Unicode
• Hard-coded date/time formatting & parsing
• Hard-coded number & currency formatting & parsing
• Hard-coded collation (sorting/searching/matching)
• Other hard-coded operations
• Hard-coded literals
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 15
![Page 16: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/16.jpg)
Unicode & Files
UTF-8 is the recommended encoding for files.
Use a Unicode capable editor (IDE)
Flex Builder • Default encoding is UTF-8
Eclipse• Default encoding is Cp1252
• Change it into UTF-8 Window-> Preferences -> General -> Workspace Text file encoding
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 16
![Page 17: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/17.jpg)
Unicode & Database
Use a robust database with right settings• MS SQL Server
• MySQL Server
• PostgreSQL Server
• Oracle
Beware of Unicode Support• MySQL 4.1 and up
default-character-set=utf8
• MS SQL Server SQL Server nvarchar, ntext etc.
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 17
![Page 18: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/18.jpg)
Flex & i18N
Flex 3 has embedded i18N features
It is possible to create i18N applications in Flex 2
• Using ResourceBundle class
• Different approaches such as XML usage etc.
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 18
![Page 19: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/19.jpg)
Localization in Flex
Resource Bundles• Idea is based on Java resource bundles technique• Every locale has a localized version of properties files• Creating localized files may need resource bundle
managers Attesoro (attesoro.org) Eclipse Plug-in (sourceforge.net/projects/eclipse-rbe/) RBMan (Flex Application) (rbman.riaforge.org)
• Binary assets such as audio files, video files, SWF files, and images can be referenced flag=Embed("images/flag_us.png")
Every locale needs to create localized properties files
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 19
![Page 20: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/20.jpg)
Localization in Flex
Beware that properties files in Flex encoded in UTF8.
You can edit directly with a Unicode capable editor.
Most of the resource bundle editors will have issues with Unicode encoded properties files.
RBMan is the tool to manage all these and embed to your current applications.
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 20
![Page 21: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/21.jpg)
DEMO
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 21
![Page 22: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/22.jpg)
Localization in Flex - 2
Properties files can be compiled as resource bundles
OR
Properties files can be loaded at run time by resource modules
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 22
![Page 23: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/23.jpg)
Localization in Flex - 3
Flex lets you change locales on the fly• If you compile more than one resource bundle into an
application, you can toggle the resource bundle based on the locale
If you compile resource modules• You can load and unload the SWF files at run time based
on the locale• You can create new resource bundles programmatically
If your application supports many locales, you will likely want to load the appropriate resources at run time rather than compile all supported resources into the application at compile time.
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 23
![Page 24: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/24.jpg)
Accessing The Values in Resource Bundles
Bind values from the resource to an expression• @Resource directive• Available only in MXML• Cannot change locales at run time• Only returns Strings
Methods of the ResourceManager class• Can be used also in ActionScript• Can return data types other than Strings, such as ints,
Booleans, and Numbers (getNumber(), getBoolean())• Can be used to switch locales at run time• Not supported in Flex Builder or ANT FlexTasks and needs
to use command line
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 24
![Page 25: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/25.jpg)
Accessing The Values in Resource Bundles
Compiling as Runtime Shared Libraries• Saves re-compiling your bundles every time while compiling the
main application
Compiling into Component Modules• Separation of dependencies with the main application
Manually loading into the resourceManager at runtime• Remoting can be used to load the required resources from the
server
• Have to have a connection to the server retrieve the bundles
• Modifiying the resource bundles on the server without having to re-compile / re-deploy the application is possible
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 25
![Page 26: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/26.jpg)
Using the @Resource Directive
Sample<mx:FormItem label="@Resource(key=‘username',
bundle=‘myRB')">
<mx:TextInput/>
</mx:FormItem>
Compile Parameters
-locale=en_US -allow-source-path-overlap=true -source-path=locale/{locale}
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 26
![Page 27: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/27.jpg)
Using the ResourceManager
Using the ResourceManager<mx:Metadata>
[ResourceBundle("myRB")]
[ResourceBundle("myOtherRB")]
</mx:Metadata>
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 27
![Page 28: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/28.jpg)
Using the Resource Classes
On an ActionScript
<mx:Script><![CDATA[
import mx.resources.ResourceBundle;
import mx.controls.Alert;
private function registrationComplete():void {
Alert.show(resourceManager.getString(‘myRB',
'thanks'));
} ]]>
</mx:Script>
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 28
![Page 29: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/29.jpg)
DEMO
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 29
![Page 30: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/30.jpg)
Using a Class
Can be used for programmatic skin The following example embeds the
MyCheckBoxIcon_en_US class in the properties file• CHECKBOXSKIN=ClassReference("MyCheckBoxIcon_en_US
")
Binding the value of the getClass() method for programmatic skins
<mx:CheckBox selected="true" selectedUpIcon="{resourceManager.getClass(‘myBundle','CHECKBOXSKIN')}" selectedDownIcon="{resourceManager.getClass(‘myBundle','CHECKBOXSKIN')}" selectedOverIcon="{resourceManager.getClass(‘myBundle','CHECKBOXSKIN')}" />
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 30
![Page 31: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/31.jpg)
DEMO
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 31
![Page 32: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/32.jpg)
Changing Locale in Runtime
To be able to change the locale at run time without using resource modules, you compile all the available locales into the application at compile time by including them as part of the locale option• -locale=en_US,es_ES
The Flex application uses the list of locales in the localeChain property to determine precedence when getting values from resource bundles. If a value does not exist in the first locale in the list, the Flex application looks for that value in the next locale in the list, and so on.• localeComboBox.selectedIndex =
locales.indexOf(resourceManager.localeChain[0]);
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 32
![Page 33: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/33.jpg)
Formatting Date & Times
DateFormatter and CurrencyFormatter can use resources
THEMECOLOR=0x0000FF
DATE_FORMAT=MM/DD/YY
TIME_FORMAT=L:NN A
CURRENCY_PRECISION=2
CURRENCY_SYMBOL=$
THOUSANDS_SEPARATOR=,
DECIMAL_SEPARATOR=.
<mx:DateFormatter id="dateFormatter" formatString="{resourceManager.getString('FormattingValues', 'DATE_FORMAT')}" />
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 33
![Page 34: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/34.jpg)
Styles in Localized Resources
Binding can be usedthemeColor="{resourceManager.getUint('MyStyles', 'color')}“
If the value is a color like 0xFF0000, use the ResourceManager's getUint() method
If the value is a class, like a programmatic skin, then use the getClass() method
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 34
![Page 35: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/35.jpg)
DEMO
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 35
![Page 36: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/36.jpg)
Fonts in Localized Resources
Resource FilesTEXTSTYLE=myENFont
TEXTSTYLE=myJAFont
Application<mx:Style>
@font-face { src: url("ENFont.ttf"); fontFamily: EmbeddedENFont; }
@font-face { src: url("JAFont.ttf"); fontFamily: EmbeddedJAFont; }
.myENFont{ fontFamily: EmbeddedENFont; }
.myJAFont{ fontFamily: EmbeddedJAFont; }
</mx:Style>
In MXML<mx:Text styleName="{resourceManager.getString(‘myFontsRB, 'TEXTSTYLE')}"/>
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 36
![Page 37: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/37.jpg)
AIR & i18N
Generating via Flex
• Flex i18N can be used
Generating via HTML/JavaScript (Ajax)
• General techniques which are available in required platform can be used
• Be careful on data transaction such as on JSON etc.
SQLLite
• SQLLite database can be used to customize assets and literals
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 37
![Page 38: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/38.jpg)
Resources
Unicodehttp://unicode.org
Flex 3 Documentationshttp://www.adobe.com/support/documentation/en/flex/
http://livedocs.adobe.com/flex/3/html/l10n_1.html
Flex.org
RBManhttp://rbman.riaforge.org
My blog http://blog.demirkapi.net
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 38
![Page 39: OğuzDemirkapı - Hands On Training: Creating Our First i18N Flex Application (2 hours)](https://reader033.vdocuments.mx/reader033/viewer/2022052820/54c71c934a795947548b4570/html5/thumbnails/39.jpg)
Questions & Answers
?Oğuz Demirkapı
http://blog.demirkapi.net
i18N (Internationalization) in Flex Applications | Oğuz Demirkapı | http://blog.demirkapi.net 39