我想做个多语言的软件!高分!

Oo云 2008-09-03 01:08:39
我想用vb.net做个多语言的软件,能实现英文,中文,日语的切换,最好是可以判断一下操作系统的语言,自动切换,
越详细越好!谢谢各位大侠了!
...全文
319 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oo云 2008-09-05
  • 打赏
  • 举报
回复
一个小时以后结贴,5的方法已经可以解决问题了,谢谢各位的帮助,回帖均给分!
yanlongwuhui 2008-09-05
  • 打赏
  • 举报
回复
楼主要的不是根据配置文件来调整软件中的语言,而是要根据选装系统的语言来调整。Application.CurrentCulture
试试
Oo云 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 limeng0513 的回复:]
My.Application.Culture.Name 用这个判断当前系统语言。
[/Quote]
我用这个只能得到当前系统所在的区域,也就是说我的区域是中国,而系统语言是英文,
用这个代码就不能显示出系统是英文的,
同样用lcid也没有表示出当前系统的语言
用什么方法能准确得到系统的默认语言啊!
孤剑 2008-09-04
  • 打赏
  • 举报
回复
建议楼主看一下 MSDN 的多语言化的内容,
技术实现有好多方法,可以使用资源文件.strings
也可以考虑自己创建 *.xml 的资源文件,写类去读取。
Oo云 2008-09-04
  • 打赏
  • 举报
回复
问题解决了,
private mycollection as new collection
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
GetChildCtrl(Me)
Dim rm As Resources.ResourceManager
rm = New Resources.ResourceManager("test1.resource3", Me.GetType().Assembly)
'Label1.Text = rm.GetString("物料号:") '改变 label内容到英文

For i As Int16 = 1 To MyCollections.Count
Dim str As String = Trim(CStr(CType(MyCollections.Item(i), Control).Text))
CType(MyCollections.Item(i), Control).Text = rm.GetString(str)
Next


End Sub


Private Sub GetChildCtrl(ByVal ParentCtrl As Control)
Dim ctrlC As Control
For Each ctrlC In ParentCtrl.Controls
MyCollections.Add(ctrlC) '加入集合
'如果有容器
If (TypeOf ctrlC Is Panel) OrElse _
(TypeOf ctrlC Is GroupBox) OrElse _
(TypeOf ctrlC Is ToolBar) Then
GetChildCtrl(ctrlC) '自身调用
End If
Next
End Sub
因为我要通过判断控件的名字改变他的语言,
所以我把Dim str As String = Trim(CStr(CType(MyCollections.Item(i), Control).Text)) 后面的text改成了name
就实现了,不过只是一个小例子
现在的问题就是如何对所有的窗体实现这个功能!
Oo云 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 JeffChung 的回复:]
C#的Windows编程中多语言的实现
http://dev.yesky.com/msdn/470/2568470.shtml
[/Quote]
非常感谢,不过我要的是vb.net的啊!
JeffChung 2008-09-04
  • 打赏
  • 举报
回复
C#的Windows编程中多语言的实现
http://dev.yesky.com/msdn/470/2568470.shtml
yanlongwuhui 2008-09-04
  • 打赏
  • 举报
回复
使用资源文件肯定是可以的,不过就不知道有没有更简便的方法。关注中
Oo云 2008-09-04
  • 打赏
  • 举报
回复
顶起,我的问题还没有解决啊!
fairy4 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 yun_liang1028 的回复:]
引用 20 楼 JeffChung 的回复:

C#的Windows编程中多语言的实现
http://dev.yesky.com/msdn/470/2568470.shtml

非常感谢,不过我要的是vb.net的啊!
[/Quote]
差別并不大
行者无疆-Kevin 2008-09-03
  • 打赏
  • 举报
回复
资源文件
xml结构
数据
都可以,

用户登录的时候保存一下选择的语言类型,然后加载他的语言类型就可以了
Oo云 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 juge001 的回复:]
使用资源文件

如果你是WIN的话,大致可以这样做

点一个form,属性里有一个language,默认是default,如果你想加日文版的话,那就把这一项选成日文

这个时候,你再在把一个lable的text改成对应的日文,那么到日文系统下,他就会自己切换了.你想改中文的话,也是同样.

具体的你可以去网上找找相关的资料
[/Quote]
这种方法我知道,不过也是刚刚才在网上找到的,这样做真的可以在别的语言系统中自动切换么?太神奇了吧!
Oo云 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 LYDF4151 的回复:]
'定义一个窗体变量
private mycollection as new collection
[/Quote]
collection具体定义的是什么啊?
For i As Int16 = 1 To MyCollections.Count
Dim str As String = Trim(CStr(CType(MyCollections.Item(i), Control).Text))
CType(MyCollections.Item(i), Control).Text = rm.GetString(str)
Next
不是很清楚这个for循环到底在做什么!
在resx文件的中所有东西都是通过这个for循环改变的语言么?
juge001 2008-09-03
  • 打赏
  • 举报
回复
使用资源文件

如果你是WIN的话,大致可以这样做

点一个form,属性里有一个language,默认是default,如果你想加日文版的话,那就把这一项选成日文

这个时候,你再在把一个lable的text改成对应的日文,那么到日文系统下,他就会自己切换了.你想改中文的话,也是同样.

具体的你可以去网上找找相关的资料
LYDF4151 2008-09-03
  • 打赏
  • 举报
回复
'定义一个窗体变量
private mycollection as new collection

LYDF4151 2008-09-03
  • 打赏
  • 举报
回复
mycollection是需要定义的集合。
破咖啡罐子 2008-09-03
  • 打赏
  • 举报
回复
My.Application.Culture.Name 用这个判断当前系统语言。
Oo云 2008-09-03
  • 打赏
  • 举报
回复
顶起!期待最好的解决方法!我刚刚学VB,希望能给注释详细一点的例子!
Oo云 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 LYDF4151 的回复:]
Public Sub setUICulture(Optional ByVal Culture As String = "")
If Culture = "" Then Exit Sub
Select Case Culture
Case "E" : Culture = "en"
Case "S" : Culture = "zh-CHS"
Case "T" : Culture = "zh-CHT"
End Select

[/Quote]
CType(MyCollections.Item(i), Control).Text = rm.GetString(str)

MyCollections是什么啊?
yagebu1983 2008-09-03
  • 打赏
  • 举报
回复
关注!!
加载更多回复(6)

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧