懶人用的多國語言實現之方法

摘要:懶人用的多國語言實現之方法

目前手上的案子,多國的方式是都直接寫在 App.config 裡面的 appSettings section,要用時直接調用
ConfigurationManager.AppSettings("ABC"), 這方法沒錯,有達成目的。。。
然而距離我所定義的"懶人之法", 可是差太遠了~
1. 好維護 (X)
2. 易於使用 (O)
單單第一點就不合格了,可以想像在一個 section 裡有 3xxx 行的 <add key, 找一個關於 A form 所引用到
的文字時,是多麼痛苦的一件事,而新增時,所取的 key 值也擔心是否有其他 form 用到。。。
利用 vb form 的 localizable 的特性,直接加入 resource 裡,一個 resource 對一個 form,也不會搞混,
易於查找修改,然而 runtime 時,怎麼取出字串呢? 懶人的方法就是寫個 function 去取回所要的字申

 
Public Function GetResString(ByVal obj As Object, ByVal Tag As String) As String
        Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(obj.GetType())
        Dim str As String = resources.GetString(Tag)
        If (str Is Nothing) Then
            str = ""
        End If
        Return str
End Function

使用方法:

GetResString(Me, "ABC")

注意一點的是英文訊息決不能丟入 xxxx.resx 裡,那麼只要 UI 有變更時 xxxx.resx 會重新做一份

而自訂的訊息是都會消失,因此一定要擺入 xxxx.en-US.resx 裡

我很懶,但也要懶的有格調 XD