Editing Localisation Messages in Application's SQL Database


Author
Message
Peter Denton
Peter Denton
StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)
Group: Forum Members
Posts: 77, Visits: 787
G'day

I'm working on developing a system that will be sold overseas, potentially into countries where english is not the main language. It also deals with an industry where local nomenclature can be very different, and we believe it is important that the end-user is able to customise the terms used in the system (ie Localisation text values and messages) to match their usage.

For this reason we have decided to use the application's database to hold the Localisation Tables. I've written an editor that alows the text values and messages to be edited from there, however I'm having a slight problem with the messages. When I change one of the parameters of a message I can see that my editor saves that change to the database, but when I try to test the message as follows I don't get what I expect:

Private Sub btnMessageItemTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMessageItemTest.Click
    If Me.PrimaryBusinessObject.IsDirty Then
        Me.PrimaryBusinessObject.Save()
    End If
    MessageForm.ShowMessageByKey(BoMessageItemMessage1.msg_key, "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20")
    ' Back into editing mode
    Me.Edit()
End Sub

I get a dialog displayed, but the most recent change (or in fact any since the editor was opened) is not reflected. Is there a cache of the messages that I need to refresh somehow, or have I got something a little (or totally) confused?

I have the MessageLanguages and MessageItems tables in the application database (Unchanged from the definition in the Strataframe database, except for the addition of defaults on some columns).

Any advice greatly appreciated.

Peter


Peter Denton
Peter Denton
StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)
Group: Forum Members
Posts: 77, Visits: 787
G'day again,

I just realised that I need to change language to that of the Message I'm attempting to test. It's not the solution to my problem and my attempt to change language doesn't work properly either, but the code snippet should look more like this:

Private Sub btnMessageItemTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMessageItemTest.Click

    ' Save Bo if necessary

    If Me.PrimaryBusinessObject.IsDirty Then

        Me.PrimaryBusinessObject.Save()

    End If

    ' Change language to that used by the current "Message", test "Message", and put language back how it was.

    Dim my_lang As Integer = MicroFour.StrataFrame.UI.Localization.GetActiveLanguage()

    MicroFour.StrataFrame.UI.Localization.SetActiveLanguage(MicroFour.StrataFrame.Data.ConnectionManager.ApplicationKey, CType(BoMessageItemMessage1.msg_language, Integer))

    MicroFour.StrataFrame.UI.Localization.WriteApplicationDataToDisk()

    MessageForm.ShowMessageByKey(BoMessageItemMessage1.msg_key, "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20")

    MicroFour.StrataFrame.UI.Localization.SetActiveLanguage(MicroFour.StrataFrame.Data.ConnectionManager.ApplicationKey, my_lang)

    MicroFour.StrataFrame.UI.Localization.WriteApplicationDataToDisk()

    ' Back into editing mode

    Me.Edit()

End Sub

Any ideas?

StrataFrame Team
S
StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
Yes, there is a cache of the values within the application.  It is faster to cache the values in a dictionary than to retrieve them every time from the database.  There is not an explicit ClearCache() method, but you can clear the cache by setting the MessageLocaleID just like you did in your code sample.  I wouldn't call the GetActiveLanguage() again, just do this:

Localization.MessageLocaleID = Localization.MessageLocaleID

It will do this in the Setter of that property:

Set(ByVal value As Integer)
_MessageCodePage = value
'-- Clear out the cache
Try
_MessageCache.Clear()
_TextValueCache.Clear()
Catch ex As Exception
End Try
'-- Set the button localized values
Try
SetActiveLanguageButtonText(value)
Catch
End Try
End Set


Peter Denton
Peter Denton
StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)StrataFrame Novice (109 reputation)
Group: Forum Members
Posts: 77, Visits: 787
Thanks Ben

Worked perfecty.

The other problem with setting language, you had already sorted out for me (http://forum.strataframe.net/Topic7964-10-1.aspx) with some updated dlls, but I have since inadvertantly reverted to the old ones.

Peter

StrataFrame Team
S
StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)StrataFrame Developer (4.2K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
Good to hear Smile
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search