Voor een meertalige site was ik op zoek naar een manier om de UI in meerdere talen voor te stellen (nederlands, frans en engels).
In asp.net bestaat er een mogelijkheid om zelf je user-controls aan te maken en dus kwam ik zo op het idee om een label "multilanguageLabel" te maken met volgende properties:
Nu werkt dit perfect!
Resource files kon ik ook gaan gebruiken maar deze hebben geen design time support!
Mijn eigenlijke vraag is: heb ik gekozen voor een goede oplossing of hebben jullie betere voorstellen?
(voor de data: deze wordt bewaard in db's in verschillende talen - geen probleem)
In asp.net bestaat er een mogelijkheid om zelf je user-controls aan te maken en dus kwam ik zo op het idee om een label "multilanguageLabel" te maken met volgende properties:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| <Designer(GetType(MultiLanguageControlDesigner)), DefaultPropertyAttribute("text"), Description("Label voor verschillende talen"), ToolboxData("<{0}:MultilanguageLabel nederlands='' frans='' engels='' runat=server></{0}:MultilanguageLabel>")> Public Class MultiLanguageLabel
Inherits System.Web.UI.WebControls.Label
Private _nederlands As String
Private _frans As String
Private _engels As String
#Region "properties"
<Bindable(True), Category("taal"), DefaultValue("")> Public Property nederlands() As String
Get
Return _nederlands
End Get
Set(ByVal Value As String)
_nederlands = Value
End Set
End Property
<Bindable(True), Category("taal"), DefaultValue("")> Property frans() As String
Get
Return _frans
End Get
Set(ByVal Value As String)
_frans = Value
End Set
End Property
<Bindable(True), Category("taal"), DefaultValue("")> Property engels() As String
Get
Return _engels
End Get
Set(ByVal Value As String)
_engels = Value
End Set
End Property
#End Region
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
Try
Dim ci As CultureInfo = Thread.CurrentThread.CurrentCulture
Select Case ci.CurrentUICulture.DisplayName
Case "nl-BE"
Text = nederlands
Case "fr-FR"
Text = frans
Case "en-US"
Text = engels
End Select
Catch
Finally
MyBase.Render(writer)
End Try
End Sub
End Class |
Nu werkt dit perfect!
Resource files kon ik ook gaan gebruiken maar deze hebben geen design time support!
Mijn eigenlijke vraag is: heb ik gekozen voor een goede oplossing of hebben jullie betere voorstellen?
(voor de data: deze wordt bewaard in db's in verschillende talen - geen probleem)