成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Silverlight國際化實現方式詳解

開發 開發工具
對于初學者來說,Silverlight國際化的實現應該還算是比較好理解的。大家可以通過這篇文章介紹的幾段代碼示例來詳細解讀其實現技巧。

作為一個合格的開發人員,應該是對Silverlight這款工具是相當熟悉的。它的應用可以幫助我們輕松的實現一些基于多媒體相關的功能需求。在這里,我們將會了解到有關Silverlight國際化的實現方法。#t#

  1. < TextBlock Text="{Binding alabel, 
    Source={StaticResource myStrings}}"
     /> 

 

如果界面上每個文本部分都要手工輸入這么長串東西,遲早得把寫代碼的人搞瘋掉。就算真的有毅力全部輸入,這么一大坨的XAML對看代碼的人無疑也是一種折磨。附帶一提,有些文章提出的國際化方案似乎意猶未盡,在Binding后面還要再加上一個ConvertParameter,難道這些人對裹腳布有特殊的偏好?

我在項目中為了減少Silverlight國際化的工作量,同時也為了讓代碼變得干凈清爽一點,采用了另外一種基于約定的國際化方案。其實背后的道理說穿不值一文錢,就是讓界面上所有待翻譯的文字輸入時遵循一定的格式,比如“rs:alabel”,程序使用VisualTreeHelper這個方便的類遍歷界面上所有組件,找到所有符合規則的文字,然后翻譯成對于當前語言的內容。這個方案簡單而且工作得很好,因為我們的界面中需要國際化的部分90%以上不脫TextBlock、Button和DataGrid這三種組件,如果有特殊的控件不能用此方式進行國際化也沒有關系,畢竟絕大部分工作都能夠很簡單的完成了。

換言之,現在添加控件的時候只要這樣寫:

  1. < TextBlock Text="rs:alabel" /> 

這樣是不是簡單多了?

遍歷組件并進行Silverlight國際化的代碼也很簡單,基本上就是對VisualTreeHelper的遞歸調用:

  1. void MainPage_Loaded(object sender, 
    RoutedEventArgs e)  
  2. {  
  3. LocalizeRecursive(this);  
  4. }  
  5. void LocalizeRecursive(UIElement elem)  
  6. {  
  7. GetLocalizer(elem.GetType()).
    Localizer(elem);  
  8. int childCount = VisualTreeHelper.
    GetChildrenCount(elem);  
  9. for (int i = 0; i < childCount; i++)  
  10. {  
  11. var child = VisualTreeHelper.
    GetChild(elem, i) as UIElement;  
  12. if (child != null)  
  13. LocalizeRecursive(child);  
  14. }  
  15. }  
  16. ILocalizer GetLocalizer(Type type)  
  17. {  
  18. ILocalizer localizer = null;  
  19. if (!_localizers.TryGetValue
    (type, out localizer))  
  20. localizer = new NullLocalizer();  
  21. return localizer;  
  22. }  
  23. static void RegisterLocalizers()  
  24. {  
  25. _localizers.Add(typeof(TextBlock), 
    new TextBlockLocalizer());  
  26. _localizers.Add(typeof(Button),
     new ButtonLocalizer());  
  27. _localizers.Add(typeof(DataGrid), 
    new DataGridLocalizer());  

 

 

幾種Localizer的代碼因為涉及到一些業務上的東西這里就不給出了,基本上無非就是字符串的查找替換而已。

這樣處理以后,Silverlight國際化界面的XAML代碼變得比以前整潔多了。

責任編輯:曹凱 來源: 博客園
相關推薦

2009-12-29 15:05:29

WPF支持國際化

2024-01-04 08:16:34

Spring國際化標準

2024-01-17 10:16:22

前端國際化消息鍵

2023-01-31 10:29:26

JavaScript國際化國際化庫

2011-07-20 14:53:28

iPhone NSLocalize 國際化

2011-08-18 15:24:40

iPhone國際化

2009-01-19 09:06:31

gettextPHP國際化編程

2011-08-11 13:26:30

iPhoneNSLocalized

2011-07-08 11:13:42

Cocoa Touch XCode

2024-04-03 13:27:28

Next.js擴展項目

2009-06-25 16:04:30

2011-05-17 09:39:38

JavaSE

2011-08-19 13:13:14

struts2Java

2023-04-07 15:12:46

ReactReact-Intl

2009-02-04 15:04:13

2024-09-04 10:27:53

2010-03-02 16:44:59

CentOS Mono

2010-07-28 14:52:29

Flex國際化

2011-08-29 09:48:30

springMVC

2017-01-09 16:24:07

滴滴Android 端 App
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜精品一区二区三区免费视频 | 日本天堂视频在线观看 | 国产精品久久久久久久久久免费看 | 欧美日韩综合 | 久久久精品一区 | 国产精品久久久久久中文字 | 女人av| 日韩一区二区三区av | 久久99久久99精品免视看婷婷 | 成人欧美一区二区三区色青冈 | 在线婷婷 | 欧美精品1区 | 一区二区国产在线观看 | 欧美淫| 国产激情亚洲 | 欧美中文字幕一区二区三区亚洲 | 久久高清 | 一区二区三区视频播放 | 日韩成人av在线播放 | 激情福利视频 | 欧美日本一区 | 九九九久久国产免费 | 91一区二区在线观看 | 精品一二区 | 中文字幕一区二区三区在线观看 | 国产精品一区二区在线 | 91视频正在播放 | www.五月婷婷.com | 毛片一级黄色 | 久久99蜜桃综合影院免费观看 | 精品视频在线一区 | av播播| 亚洲成人一区二区在线 | 亚洲一区二区精品视频在线观看 | 99在线资源 | av在线播放网 | 日韩欧美二区 | 精品国产久 | 日韩免费av | 亚洲欧美综合 | 久久精品一区二区 |