Avatar billede Slettet bruger
17. oktober 2007 - 23:31 Der er 8 kommentarer

Multi-Language spørgsmål

Hej alle,
Jeg har et C# app, baseret på vgdotnet - men altså C# kode (ikke windows forms).
Her vil jeg slå op i en database, og opdatere lokale variabler overalt i min app.

I databasen er sproget tilknyttet til variablens navn i mit app.

Er der nogen der har en ide til hvordan jeg kan læse sprog fra DB, og smide det videre ind i min lokale var og dermed opdatere mit bruger interface til et nyt sprog?

Database kommunikation osv har jeg styr på, men det er fra jeg modtager data fra DB og så til at opdatere den lokale variabel.

Håber på lidt konstruktive inputs :-)

Tak
Avatar billede a1a1 Novice
17. oktober 2007 - 23:52 #1
det kommer jo an på hvordan du/dine brugere angiver sproget.

er det på "topdomain" ~ tld (top level domain; f.eks. masterseek.dk), subdomain f.eks. http://dk.masterseek.com, en cookie (sprogvalg) som brugeren har, eller via "browser sprog"

det var det første....
Avatar billede a1a1 Novice
17. oktober 2007 - 23:59 #2
når du ved det er det "bare" at lave en funktion der tager tld, subdomain (osv), og "oversætter" til noget du kan hente fra din db...

jeg bruger bl.a. denne funktion tit (det er vb.net)

;o) Det må være et svar

Public Shared Function GetLangFromSubdomain() As String(,)
        '** Returns languagecode, countrycode, language, languageNative from subdomain

        Dim aout As String(,)
        Dim server As String = "http://<DIN URL>"        '** Default value
        Dim subdomain As String = "com"
        Dim languagecode As String = "en"          '** Default value
        Dim countrycode As String = "uk"          '** Default value
        Dim language As String = "English"          '** Default value
        Dim languageNative As String = "English"  '** Default value
        Dim language2 As String = ""

        '** Get server name
        server = HttpContext.Current.Request.ServerVariables("SERVER_NAME")

        '** Get subdomain
        If InStr(server, ".") > 0 Then
            subdomain = Split(server, ".")(0)
        Else
            subdomain = server
        End If
        'HttpContext.Current.Response.Write("<br>server0: " & server)
        'HttpContext.Current.Response.Write("<br>subdomain0: " & subdomain)

        '** get language, countrycode
        Select Case subdomain
            Case "dk"
                '** denmark
                languagecode = "da"
                countrycode = "dk"
                language = "Danish"
                languageNative = "Dansk"
            Case "be"
                '** Belgium
                languagecode = "fr"
                countrycode = "be"
                language = "French"
                'languageNative = ""
            Case "no"
                '** Norway
                languagecode = "no"
                countrycode = "no"
                language = "Norwegian"
                languageNative = "Norsk"
            Case "de"
                '** Germany
                languagecode = "de"
                countrycode = "de"
                language = "German"
                languageNative = "Deutsch"
            Case "at"
                '** Austria (German)
                languagecode = "de"
                countrycode = "at"
                language = "German"
                languageNative = "Deutsch"
            Case "ch"
                '** Switzerland (german)
                languagecode = "de"
                countrycode = "ch"
                language = "German"
                languageNative = "Deutsch"
                'languagecode2 = "de"
                'countrycode2 = "ch"
                'language2 = "French"
                'languageNative2 = "French..."
            Case "nl"
                '** Netherland
                languagecode = "nl"
                countrycode = "nl"
                language = "Dutch"
                'languageNative = "Dutch"
            Case "fi"
                '** Finland
                languagecode = "fi"
                countrycode = "fi"
                language = "Finnish"
                'languageNative = ""
            Case "se"
                '** Sweden
                languagecode = "sv"
                countrycode = "se"
                language = "Swedish"
                languageNative = "Svenska"
            Case "fr"
                '** France
                languagecode = "fr"
                countrycode = "fr"
                language = "French"
                'languageNative = ""
            Case "es"
                '** Spain
                languagecode = "es"
                countrycode = "es"
                language = "Spanish"
                'languageNative = ""
            Case "jp"
                '** Japan
                languagecode = "jp"
                countrycode = "jp"
                language = "Japanese"
                'languageNative = ""
            Case "pt"
                '** Portugal
                languagecode = "pt"
                countrycode = "pt"
                language = "Portuguese"
                'languageNative = ""
            Case "it"
                '** Italy
                languagecode = "it"
                countrycode = "it"
                language = "Italian"
                'languageNative = ""
            Case "et"
                languagecode = "et"
                countrycode = "ee"
                language = ""
                'languageNative = ""
            Case "ee"
                '** Estonia
                languagecode = "ee"
                countrycode = "ee"
                language = "Estonian"
                'languageNative = ""
            Case "ro"
                '** Romania
                languagecode = "ro"
                countrycode = "ro"
                language = "Romanian"
                'languageNative = ""
            Case "hu"
                '** Hungary
                languagecode = "hu"
                countrycode = "hu"
                language = "Hungarian"
                'languageNative = ""
            Case "sl"
                '** Slovenia
                languagecode = "sl"
                countrycode = "sl"
                language = "Slovenian"
                'languageNative = ""
            Case "lv"
                '** Latvian
                languagecode = "lv"
                countrycode = "lv"
                language = ""
                'languageNative = ""
            Case "lu"
                '** Luxembourg
                languagecode = "de"
                countrycode = "lu"
                language = "German"
                languageNative = "Deutsch"
            Case "pl"
                '** Poland
                languagecode = "pl"
                countrycode = "pl"
                language = "Polish"
                'languageNative = ""
            Case "ru"
                '** Russia
                languagecode = "ru"
                countrycode = "ru"
                language = "Russian"
                languageNative = ""
            Case "tr"
                '** Turkey
                languagecode = "tr"
                countrycode = "tr"
                language = "Turkish"
                'languageNative = ""
            Case "cn"
                '** China
                languagecode = "zh"
                countrycode = "cn"
                language = "Chinese"
                'languageNative = ""
            Case "gr"
                '** Greece
                languagecode = "el"
                countrycode = "gr"
                language = "Greek"
                'languageNative = ""
            Case Else
                '** English
                languagecode = "en"
        End Select

        aout = New String(,) {{languagecode, countrycode, language, languageNative}}
        Return aout
    End Function
Avatar billede Slettet bruger
18. oktober 2007 - 18:20 #3
Det er et winform C# app.

Min problemstilling er at jeg har variablens navn i en DB, ud af DB får jeg varnavn, og indholdet til var.
Men hvordan kan jeg gå fra mit string varnavn, og ændre i min lokale var som har det samme navn?

Det er ikke så meget sproget i sidste ende det går ud på..
Avatar billede Syska Mester
18. oktober 2007 - 20:16 #4
Tror ikke jeg er med på hvad du mener ...

Smid lidt kode, så kan vi måske bedre følge hvad du prøver at skrive ...

lyder som om du vil:
dk
string dk_navn = "mit navn";

uk
string uk_name = "my name";

Hvor både variable navn og værdi kommer fra databasen ?

korrekt eller ... det du skriver lyder i hvert fald sådan ... ?

// ouT
Avatar billede Slettet bruger
19. oktober 2007 - 01:09 #5
Output fra Database:
Variabel navn,Variabel indhold
EndtimeTxt,End Time

Ud fra det skal jeg "finde/ramme" min lokale var EndtimeTxt og sætte den til værdien fra databasen.

EndtimeTxt = End Time


Altså jeg skal have en liste jeg kan søge igennem, med mit string variablen navn fra dabasen, og så knytter det til min lokale variabel...
Avatar billede Slettet bruger
19. oktober 2007 - 01:24 #6
Skal man virkelig lave en switch man løber igennem? ala:

Switch(Varname)
{
  case "EndtimeTxt":
    EndtimeTxt=Value;
  break;
}
Avatar billede a1a1 Novice
19. oktober 2007 - 02:15 #7
hvordan er db'en opbygget?
Avatar billede Syska Mester
19. oktober 2007 - 13:50 #8
ahhhhhh, hvis alt er string kan du bruge ...

Dictinary Generics

Dictinary<string, string> list = new Dictinary<string, string>();
list.Add("EndTime", "10:00:00");

senere kan du bare hente den med:
list["EndTime"] ... kræver så godt nok at alt er string ... men det burde kunne lade sig gøre ....

// ouT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester