Your SlideShare is downloading. ×
0
Flash 开发者交流会 Flex 国际化 I18N 解决方案 internationalization  沪江网 - 尹星军
Flex 使用 .properties 文件实现国际化,环境配置 <ul><li>在 Flex 中默认只支持 en_US , ja_JP 这两种本地化 ( D:Program FilesAdobeFlex Builder 3sdks3.2.0f...
本地化编译 - 编译不同的语言版本   <ul><li>创建项目的语言资源文件 1 ) 多语言包目录 - copylocale  original_locale   new_locale  2 )资源文件( .properties ) </li...
使用 .properties 文件实现国际化 <ul><li>interface.properties  。   Key=value  (utf-8  键 - 值 )    pic=Embed(“demo.gif&quot;)    swf=E...
本地化资源中使用绑定   <ul><li>@Resource 指令  <mx:Label text=“@Resource(key=‘key’,  bundle=‘ interface ’)” /> </li></ul><ul><li>AS 代码...
运行时改变资源包 <ul><li>绑定 <mx:Text text=&quot;{resourceManager.getString( 'source' , 'user.name' )}“ </li></ul><ul><li>编译参数  loc...
SDK 语言资源 Framework_rb.swc <ul><li>sdks3.2.0frameworksprojectsframeworkundlesen_USsrc </li></ul><ul><li>sdks3.2.0framework...
资源模块化 <ul><li>命令行编译指定资源 </li></ul><ul><li>mxmlc -locale= en_US    -source-path=locale/{locale} // 相对于 FLEX 的目录,使用绝对路径   -i...
加载资源 <ul><li>ResourceManager 的 loadResourceModule() // 异步 </li></ul><ul><li>var eventDispatcher:IEventDispatcher = resourc...
本地化字体 <ul><li><mx:Style>  </li></ul><ul><li>@font-face {src: url(“en.ttf&quot;); fontFamily:enFont;}  </li></ul><ul><li>@f...
FLASH IDE 动态嵌入字体 <ul><ul><li>字型建立 fontlib.swf 运行库共享导出 继承 font  类名 fontlib </li></ul></ul><ul><ul><li>动态调用  fontlib.swf 运行库...
FLEX IDE  <ul><ul><li>建立 AS 工程  flexFont (主类) </li></ul></ul><ul><li>[ Embed (source= &quot;C:/WINDOWS/Fonts/verdana.TTF&q...
引用本地字体 <ul><li>var fontLibrary:Class=event.target.applicationDomain.getDefinition(&quot;embedFont_localFont&quot;) as Clas...
实际应用 <ul><li>1 )渲染标准组件字体 (Label 的 public  属性 textField:TextField 进行设置 ) </li></ul><ul><li>c.textField.embedFonts = true; <...
谢谢大家 不周之处,请多包含
Upcoming SlideShare
Loading in...5
×

Flex国际化I18N解决方案

2,855

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,855
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
58
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Flex国际化I18N解决方案"

  1. 1. Flash 开发者交流会 Flex 国际化 I18N 解决方案 internationalization 沪江网 - 尹星军
  2. 2. Flex 使用 .properties 文件实现国际化,环境配置 <ul><li>在 Flex 中默认只支持 en_US , ja_JP 这两种本地化 ( D:Program FilesAdobeFlex Builder 3sdks3.2.0frameworkslocale ) </li></ul><ul><li>添加新的本地化支持 -sdk 的 bin 目录下,运行命令: copylocale en_US zh_CN (需安装 java runtime ) </li></ul><ul><li>默认的语言资源文件 D:Program FilesAdobeFlex Builder 3sdks3.2.0frameworksprojectsframeworkundles </li></ul>
  3. 3. 本地化编译 - 编译不同的语言版本 <ul><li>创建项目的语言资源文件 1 ) 多语言包目录 - copylocale original_locale new_locale 2 )资源文件( .properties ) </li></ul><ul><li>配置语言包 -locale=en_US 1) sourcepath+=e: esourcelocale{locale} 2) 添加 source path 3) SDK 的默认语言包资源 </li></ul>
  4. 4. 使用 .properties 文件实现国际化 <ul><li>interface.properties 。 Key=value (utf-8 键 - 值 ) pic=Embed(“demo.gif&quot;) swf=Embed(“demo.swf&quot;) </li></ul><ul><li>resourceManager </li></ul><ul><li>[ResourceBundle] 元数据标签绑定 <mx:Metadata>   </li></ul><ul><li>    [ResourceBundle(“interface&quot;)]   </li></ul><ul><li>    </mx:Metadata>    </li></ul>
  5. 5. 本地化资源中使用绑定 <ul><li>@Resource 指令 <mx:Label text=“@Resource(key=‘key’, bundle=‘ interface ’)” /> </li></ul><ul><li>AS 代码绑定 [ Bindable ] private var _as:String; _as=resourceManager.getString( interface' , ‘key' ); </li></ul>
  6. 6. 运行时改变资源包 <ul><li>绑定 <mx:Text text=&quot;{resourceManager.getString( 'source' , 'user.name' )}“ </li></ul><ul><li>编译参数 locale en_US zh_CN </li></ul><ul><li>改变语言资源 resourceManager.localeChain=[locale];//en_US zh_CN ResourceManager 调度 &quot;change&quot; UICompoment.resourceChange() </li></ul>
  7. 7. SDK 语言资源 Framework_rb.swc <ul><li>sdks3.2.0frameworksprojectsframeworkundlesen_USsrc </li></ul><ul><li>sdks3.2.0frameworkslocale </li></ul><ul><li>compc 编译语言包 compc -locale=zh_CN -source-path=..frameworksprojectsframeworkundleszh_CNsrc -include-resource-bundles=collections,containers,controls,core,effects,formatters,logging,SharedResources,skins,states,styles,validators -output=..frameworks/locale/zh_CN/framework_rb.swc </li></ul>
  8. 8. 资源模块化 <ul><li>命令行编译指定资源 </li></ul><ul><li>mxmlc -locale= en_US -source-path=locale/{locale} // 相对于 FLEX 的目录,使用绝对路径 -include-resource-bundles=interface , interface1 -output en_US_ResourceModule.swf </li></ul><ul><li>mxmlc -locale= zh_CN -source-path=locale/{locale} -include-resource-bundles=interface , interface1 -output zh_CN_ResourceModule.swf </li></ul>
  9. 9. 加载资源 <ul><li>ResourceManager 的 loadResourceModule() // 异步 </li></ul><ul><li>var eventDispatcher:IEventDispatcher = resourceManager.loadResourceModule(resourceModuleURL); </li></ul><ul><li>UIComponent 类 resourcesChanged () </li></ul>
  10. 10. 本地化字体 <ul><li><mx:Style> </li></ul><ul><li>@font-face {src: url(“en.ttf&quot;); fontFamily:enFont;} </li></ul><ul><li>@font-face {src: url(“jp.ttf&quot;); fontFamily: jpFont;} </li></ul><ul><li>.enFont{ </li></ul><ul><li>fontFamily: enFont; </li></ul><ul><li>} </li></ul><ul><li>.jpFont{ </li></ul><ul><li>fontFamily: jpFont; </li></ul><ul><li>} </li></ul><ul><li></mx:Style> </li></ul><ul><li># /locale/en_US/Font.properties fonsty=ENFont# /locale/ja_JP/Font.properties fontsty=JPFont </li></ul><ul><li><mx:Text styleName=&quot;{resourceManager.getString('Font', ‘fontsty')}&quot;/> </li></ul>
  11. 11. FLASH IDE 动态嵌入字体 <ul><ul><li>字型建立 fontlib.swf 运行库共享导出 继承 font 类名 fontlib </li></ul></ul><ul><ul><li>动态调用 fontlib.swf 运行库共享导入 继承 font 类名 fontlib </li></ul></ul><ul><ul><li>问题:无法同时兼容中日字符 </li></ul></ul><ul><ul><li>发现字符实际存在,但无法显示,未得到渲染 </li></ul></ul>
  12. 12. FLEX IDE <ul><ul><li>建立 AS 工程 flexFont (主类) </li></ul></ul><ul><li>[ Embed (source= &quot;C:/WINDOWS/Fonts/verdana.TTF&quot; ,fontName= “verdana ,mimeType= &quot;application/x-font&quot; )] </li></ul><ul><li>public var testFont:Class; </li></ul><ul><li>///////////////////////////////// </li></ul><ul><li>AdobeFlex Builder 3sdks3.2.0frameworksflash-unicode-table.xml </li></ul><ul><li>  unicodeRange=‘U+0020-U+002F” 标记可以标记字符嵌入范围 </li></ul>
  13. 13. 引用本地字体 <ul><li>var fontLibrary:Class=event.target.applicationDomain.getDefinition(&quot;embedFont_localFont&quot;) as Class; </li></ul><ul><li>trace(fontLibrary); </li></ul><ul><li>Font.registerFont(fontLibrary); </li></ul><ul><li>} </li></ul><ul><li>function test() { </li></ul><ul><li>var _embeddedFonts:Array = new Array(); </li></ul><ul><li>_embeddedFonts = Font.enumerateFonts(false); </li></ul><ul><li>trace(_embeddedFonts); </li></ul><ul><li>trace((_embeddedFonts[0]) </li></ul>
  14. 14. 实际应用 <ul><li>1 )渲染标准组件字体 (Label 的 public 属性 textField:TextField 进行设置 ) </li></ul><ul><li>c.textField.embedFonts = true; </li></ul><ul><li>c.textField.setTextFormat(tf); </li></ul><ul><li>c.textField.x=10; </li></ul><ul><li>c.textField.width=160; </li></ul><ul><li>c.textField.height=40; </li></ul><ul><li>2 ) 渲染动态 / 输入文本框: </li></ul><ul><li>var tx:TextField=new TextField(); tx.type=&quot;input&quot;;// 自行改正 tx.embedFonts=true;   var txt:TextFormat = new TextFormat(_embeddedFonts[0].fontName,20,0xFF0000);;   txt.size = 28;   StyleManager.setStyle(&quot;textFormat&quot;, txt); </li></ul>
  15. 15. 谢谢大家 不周之处,请多包含
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×