[ASP] language pack maken

Pagina: 1
Acties:
  • 115 views sinds 30-01-2008
  • Reageer

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
Ik weet dat php een goede manier heeft om language packs te maken, kijk naar bv php forums... maarnu, hoe kan ik dit het beste doen met asp

Ik vraag me het volgende af, ik denk dat het zo ie zo niet mer een database moet maar hoe kan ik het beste hieraan beginnen, ik kan natuurlijk 1001 variablen gaan maken maar dat lijkt mij niet het beste, er zijn vast standaard manieren om dit het beste en meest overzichtelijk te houden.

Kan iemand mij een voorbeeld geven hoe, of uitleggen waar ik het best naar kan kijken. Google/GoT heeft me niet het juiste materiaal gegeven namelijk.

Verwijderd

Dit verhaaltje kan misschien een handig startpunt zijn: http://www.tek-tips.com/g.../lev3/31/pid/333/fid/3616

Je kunt de TranslateIt functie natuurlijk mooier maken door de teksten te laten halen uit een databse bijvoorbeeld.

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
ehh... dit is net niet wat ik zoek, beetje moeilijk uit te leggen zeg ;/

ik probeer dus wel een oplossing te vinden die anders is dan op deze manier variabelen gaan toevoegen. ik moet dus eigenlijk maar 1 bestand nodig nodig te hebben voor 1 taal..

  • Hoppie
  • Registratie: Februari 2001
  • Niet online
Het lijkt mij toch het handigst om een aparte taal file te maken voor de diverse talen, die gebruik maken van de zelfde variabelen. Afhankelijk van de geïnclude file, wordt dan de site in de ene of andere taal getoond.
Het voorbeeld dat MrX aangeeft, lijkt me ook erg inflexibel. Voor iedere nieuwe taal moet je hele stukken code aanpassen.
ASP:
1
2
3
4
<%   'dutch.asp
  sTitle = "Titel"
  sSubtitle = "Ondertitel"
%>

ASP:
1
2
3
4
<%   'english.asp
  sTitle = "Title"
  sSubtitle = "Subtitle"
%>

ASP:
1
2
3
4
<%   'german.asp
  sTitle = "Zeile"
  sSubtitle = "Unterzeile"
%>

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Hoppie schreef op 24 januari 2004 @ 01:07:
Afhankelijk van de geïnclude file, wordt dan de site in de ene of andere taal getoond.
Dynamisch includen in ASP werkt niet.

Als je erg veel teksten krijgt is het misschien handig om deze met een bepaalde sleutel in een globale dictionary op te slaan. Schrijf er een functie bij die op basis van een sleutel de juiste tekst toont. Hoe je de dictionary vult is dan om het even.

Problem Exists Between Chair And Keyboard


  • gijoe666
  • Registratie: Februari 2002
  • Laatst online: 07-05 22:15
zoek je iets als mijn site die 2 talig is?
Het is opgebouwd uit ASP en eigenlijk heel simpel op te zetten.
www.control-alt-delete.nl :)

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 22-05 17:39
(jarig!)
majornono schreef op 24 januari 2004 @ 10:09:
[...]


Dynamisch includen in ASP werkt niet.

Als je erg veel teksten krijgt is het misschien handig om deze met een bepaalde sleutel in een globale dictionary op te slaan. Schrijf er een functie bij die op basis van een sleutel de juiste tekst toont. Hoe je de dictionary vult is dan om het even.
er zijn wel work-arounds voor...:
- http://www.asp101.com/art...namicincludes/default.asp
- http://www.4guysfromrolla.com/webtech/080199-1.3.shtml

Everyday's an endless stream, of cigarettes and magazines...


  • Folkert
  • Registratie: September 2001
  • Laatst online: 14:05
waarom werk je niet met een xml file. Dan heb je een bestand met daarin de verschillende talen. De variabelen worden gekoppeld aan een xml element.

Dus dan ziet je xml file er bijv uit als:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<xml>
  <taal id="nl-NL">
    <key1>content</key1>
    <key2>content</key2>
  </taal>
  <taal id="du-DU">
    <key1>content duits</key1>
    <key2>content duits</key2>
  </taal>
  <taal id="gb-GB">
    <key1>content engels</key1>
    <key2>content engels</key2>
  </taal>
</xml>


en in je code komt uiteindelijk een verwijng naar de element dmv <%=key1%>

resteert nog een functie voor een koppeling naar de xml document waarin je de juiste waardes filtert afhankelijk van de gekozen taal...

linkje:
http://www.aspnl.com/aspnl/nl/artikelen/aspxmlmultilang.asp

[ Voor 38% gewijzigd door Folkert op 24-01-2004 11:39 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:36

gorgi_19

Kruimeltjes zijn weer op :9

ik zou alleen dan meerdere XML-files gebruiken. je kan eens kijken hoe ASP.Net hun ResourceManager heeft opgebouwd en deze functionaliteit 'nabouwen'

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Hoppie
  • Registratie: Februari 2001
  • Niet online
majornono schreef op 24 januari 2004 @ 10:09:
[...]


Dynamisch includen in ASP werkt niet.

Als je erg veel teksten krijgt is het misschien handig om deze met een bepaalde sleutel in een globale dictionary op te slaan. Schrijf er een functie bij die op basis van een sleutel de juiste tekst toont. Hoe je de dictionary vult is dan om het even.
Huh? Ik heb dat toch echt al een keer gebruikt.
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%
    dim sAction
    if not request("action") = "" then
        sAction = request("action")
    end if

    if sAction = "" then
        %>
            <!--#INCLUDE FILE="includes\site_frontpage_inc.asp" -->
        <%
    else
        %>
            <!--#INCLUDE FILE="includes\site_otherpages_inc.asp" -->
        <%
    end if      
%>

Bovenstaande heb ik onlangs voor een intra-net site op m'n werk gebruikt, maar werkt uitstekend!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:36

gorgi_19

Kruimeltjes zijn weer op :9

Da's niet dynamisch includen. Je include per definitie beide asp bestanden.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Ik heb het "dynamisch includen" (wat het natuurlijk niet is op deze manier) ooit nog eens zo gedaan:

ASP.NET Visual Basic:
1
2
If strContent = "form" Then Server.Execute "include/mod_form.asp"
If strContent = "news" Then Server.Execute "include/mod_news.asp"
Wat er fout aan is weet ik ook ja, maar deze manier werkte wel redelijk. Maargoed, dit is lichtelijk offtopic en niet te gebruiken voor het language pack. :)

  • Hoppie
  • Registratie: Februari 2001
  • Niet online
gorgi_19 schreef op 24 januari 2004 @ 14:36:
Da's niet dynamisch includen. Je include per definitie beide asp bestanden.
Echt waar? :?
ff gecheckt door in beide files dezelfde variabele te declareren. Inderdaad....
Dan is het dus toeval geweest dat het werkte en dat ik niet per ongeluk dezelfde variabele namen heb gebruikt.... 8)7

Verwijderd

Hoppie schreef op 24 januari 2004 @ 14:46:
Echt waar? :?
ff gecheckt door in beide files dezelfde variabele te declareren. Inderdaad....
Dan is het dus toeval geweest dat het werkte en dat ik niet per ongeluk dezelfde variabele namen heb gebruikt.... 8)7
Includes worden in je code gezet vóór het uitvoeren van de ASP code. Dat is dus ook de reden dat je het path niet dynamisch kunt bepalen en dat het helemaal niets uitmaakt of je de code in je pagina zelf of in een include zet. Met de Server.Execute manier maakt het niets uit of je dezelfde namen gebruikt aangezien die op zichzelf word uitgevoerd.

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
Ik heb wel een goed idee van iemand anders gekregen, mosschien leuk om voor jullie weeer nieuwe ideean te brengen dit is ook waar ik nu denk mee verder te gaan:

Het bericht van Sven Glasenburg alias Questor:
- Maak een globale variabele genaamd LanguagePack. Maak hier een dictionary object van.
- Maak voor elke taal een .asp bestand wat mbv LanguagePack.Add allerlei zinsdelen of woorden of zinnen definiëert met een unieke code als index. Elk taal-bestand moet elke gebruikte code definiëren,
- Gebruik LanguagePack("MijnUniekeCode") op de plekken waar je de tekst (in welke taal dan ook) nodig hebt.

Voorbeeldje van initialisatie en inladen van de languagepack (dit dient dus op elke pagina te gebeuren, dus doe dit in een asp bestand die je include, zodat je het op 1 plek houdt):
code:
1
2
3
4
5
6
7
8
9
10
<% 
  dim LanguagePack, Language 
  set LanguagePack = CreateObject("Scripting.Dictionay") 
     
  ' Zet de language of haal het uit een database of een session of zoiets: 
  Language = "dutch" 
     
  ' Nu de juiste asp file inladen ahv de language: 
  Server.Execute "languagepacks/" & Language & ".asp" 
%>


Voorbeeldje van languagepacks/dutch.asp:
code:
1
2
3
4
5
<% 
  LanguagePack.Add "StartNewThread", "Nieuw onderwerp beginnen" 
  LanguagePack.Add "AddReply", "Plaats een reactie" 
  LanguagePack.Add "EditPost", "Bewerk dit bericht" 
%>


Voorbeeldje van languagepacks/english.asp:
code:
1
2
3
4
5
<% 
  LanguagePack.Add "StartNewThread", "Start new thread" 
  LanguagePack.Add "AddReply", "Add a reply" 
  LanguagePack.Add "EditPost", "Edit this post" 
%>


Voorbeeldje voor het gebruik:
code:
1
2
3
<% 
  response.write "<a href='editpost.asp?id=" & MessageID & "'>" & LanguagePack("EditPost") & "</a>" 
%>


Door op deze manier te werken kun je in je pagina's een algemene werkwijze hanteren (in het voorbeeld: LanguagePack("EditPost")). Je houdt de initialisatie op 1 plek. Je hebt losse (door kommentaar overzichtelijk te maken) bestanden voor elk van de talen. Er worden geen overbodige talen ingeladen die je toch niet gebruikt: enkel de gekozen taal wordt ingeladen.

Ik hoop dat je hier wat aan hebt!

Sven Glazenburg

Verwijderd

Euhm, heb jij of degene die dit voorstelde dit ook al eens uitgeprobeerd? Bij mijn weten is LanguagePack helemaal niet beschikbaar als je Server.Execute gebruikt? :? Maargoed, het zal vast kloppen, ik dacht alleen dat het anders zat. ;)

  • Folkert
  • Registratie: September 2001
  • Laatst online: 14:05
hm, zou niet mijn voorkeur hebben aangezien taalmodules het best als extern bestand kunnen worden opgeslagen. Bij voorkeur xml aangezien deze makkelijk te vertalen zijn zonder complete broncodes te laten vertalen. Een XML document kan je makkelijk versturen naar een vertaler (indien dat is gewenst).

Als jij een vertaler een stuk broncode geeft met de vraag of hij dat kan vertalen kan je leuke resultaten verwachten...

<%..
taal pak = ...

antwoord.schrijf ("dit is een vertaalde zin")
..%>

;)

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 13:37
gijoe6666 schreef op 24 januari 2004 @ 10:16:
zoek je iets als mijn site die 2 talig is?
Het is opgebouwd uit ASP en eigenlijk heel simpel op te zetten.
www.control-alt-delete.nl :)
Mag ik zo brutaal zijn om te vragen hoe je deze multilanguage site globaal hebt aangepakt? Zelf heb ik een multilanguage site opgesteld door middel van dynamische includes en door middel van een database, maar ik merk dat de pagina's zichtbaar langzamer worden opgebouwd.

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Heb net dit topic gevonden en de methode van "Sven Glazenburg" toegepast.
Maar nu krijg ik een wazige error. Google geeft weinig resultaten, of pagina's waar ik niks mee kan. En hier kan ik bijna niks relevants vinden :?
De server waar het op draait is van een vriend van mij maar laat die nu net op vakantie zijn. Heb dus op dit moment geen mogelijkheid om op die server instellingen te veranderen.

Ligt de volgende error aan rechten problemen of instellingen of doe ik nu gewoon iets fout?
code:
1
2
3
4
5
Microsoft VBScript runtime  error '800a01a8'

Object required: 'LanguagePack'

/mtc/ontwikkel/languagepacks/dutch.asp, line 2


De volgende code staat bovenaan de pagina
code:
1
2
3
4
5
6
7
8
9
10
11
12
<%@ LANGUAGE="VBSCRIPT"%>
<%
  dim LanguagePack, Language 
  set LanguagePack = CreateObject("Scripting.Dictionary") 
     
  ' Zet de language of haal het uit een database of een session of zoiets: 
  Language = "dutch" 
     
  ' Nu de juiste asp file inladen ahv de language: 
  '
  Server.Execute "languagepacks/" & Language & ".asp" 
%>


en dit is de dutch.asp:
code:
1
2
3
4
5
<% 
  LanguagePack.Add "test", "test1" 
  LanguagePack.Add "AddReply", "Plaats een reactie" 
  LanguagePack.Add "EditPost", "Bewerk dit bericht" 
%>


Of raden mensen nu een andere methode aan(bijv. XML)?

[ Voor 53% gewijzigd door Freemann op 09-08-2004 16:48 ]

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
je object languagepack is niet bekend op dutch.asp

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Hier een stukje code van mij hoe ik het gebruik:

index.asp:

If lang = "nl" Then
%>
<!--#include file="language_nl.asp"-->
<%
Else
%>
<!--#include file="language_en.asp"-->
<%
End If


language_nl.asp:

<%
strHello = "Hallo"
strTest = "Dit is een test"
strBla = "Bla"
%>

Dit werkt perfect.


En mocht het om de een of andere reden niet werken (lijkt me onwaarschijnlijk omdat ik dit op 4+ server gebruik) kan je het volgende doen:

1. schrijf een class/functie die het opgevraagde bestand opend.
2. lees het bestaand en haal de waarde eruit die je wilt
3. output het resultaat.

code:

Sub Include(strFile)
Dim objRegExp
Dim objFSO

Set objRegExp = new RegExp
With objRegExp
.Global = True
.MultiLine = True
.IgnoreCase = True
End With

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(Server.MapPath(strFile)) Then

Set objFile = objFSO.OpenTextFile(Server.MapPath(strFile), 1)
strSource = objFile.ReadAll

// Filter comments en ASP tags
strSource = Replace(strSource, Chr(60)&Chr(37), "")
strSource = Replace(strSource, Chr(37)&Chr(62), "")
objRegExp.Pattern = "^[ \t]*(//|\')[\s\S]*?$"
strSource = objRegExp.Replace(strSource, "")

arrSource = Split(strSource, Chr(10))

// Execute the code
On Error Resume Next
Execute strSource


If Err.Number>0 Then
// fout gevonden
End If

On Error GoTo 0
Else
// include niet gevonden
End If
End Sub

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

ok, dat heb ik aangepast. Maar nu krijg ik geen errors meer en krijg ik niks terug van Languagepack.

De volgende code gebruik ik nu:
show.asp
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
<%@ LANGUAGE="VBSCRIPT"%>
<%
  dim Language ,LanguagePack
  set LanguagePack = CreateObject("Scripting.Dictionary") 
  ' Zet de language of haal het uit een database of een session of zoiets: 
  Language = "dutch" 
  ' Nu de juiste asp file inladen ahv de language: 
  '
  Server.Execute "languagepacks/" & Language & ".asp" 

  response.write "a" & LanguagePack("testen") & "a"
%>


dutch.asp
ASP.NET Visual Basic:
1
2
3
4
5
6
7
<%   
  dim Language ,LanguagePack
  set LanguagePack = CreateObject("Scripting.Dictionary") 
  LanguagePack.Add "testen", "test1" 
  LanguagePack.Add "AddReply", "Plaats een reactie" 
  LanguagePack.Add "EditPost", "Bewerk dit bericht" 
%>


wanneer het wel werkt is al ik het volgende doe:
show.asp
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ LANGUAGE="VBSCRIPT"%>
<%
  dim Language ,LanguagePack
  set LanguagePack = CreateObject("Scripting.Dictionary") 
  ' Zet de language of haal het uit een database of een session of zoiets: 
  Language = "dutch" 
  ' Nu de juiste asp file inladen ahv de language: 
  '
  Server.Execute "languagepacks/" & Language & ".asp" 

  LanguagePack.Add "testen", "test1" 
  LanguagePack.Add "AddReply", "Plaats een reactie" 
  LanguagePack.Add "EditPost", "Bewerk dit bericht" 

  response.write "a" & LanguagePack("testen") & "a"
%>


Maar ja dan is het hele verhaal onbruikbaar geworden. Op de een of andere manier word de dutch.asp niet goed uitgevoerd.

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Die LanguagePack is vanuit de pagina niet in de language.asp bekend.
Probeer dit eens:

ASP:
1
2
3
4
5
Session("Language") = LanguagePack

Server.Exectute ....

LanguagePack = Session("Language")


en dan in languagepack.asp

ASP:
1
2
3
4
5
LanguagePack = Session("Language")

LanguagePack.Add ....

Session("Language") = LanguagePack

[ Voor 9% gewijzigd door DukeMan op 10-08-2004 12:01 ]


  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

ok heb even de veranderingen doorgevoerd, en krijg nu bij onderstaande code de volgende foutmelding:
show.asp
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ LANGUAGE="VBSCRIPT"%>
<%
    dim Language ,LanguagePack
  set LanguagePack = CreateObject("Scripting.Dictionary") 
  ' Zet de language of haal het uit een database of een session of zoiets: 
  Language = "dutch" 

  LanguagePack = Session("Language")
  
  Server.Execute "languagepacks/" & Language & ".asp" 

  response.write "a" & LanguagePack("testen") & "a"
%>


dutch.asp
ASP:
1
2
3
4
5
6
7
8
9
10
11
<%   
  LanguagePack = Session("Language")
 
  set LanguagePack = CreateObject("Scripting.Dictionary")
  
  LanguagePack.Add "testen", "test1" 
  LanguagePack.Add "AddReply", "Plaats een reactie" 
  LanguagePack.Add "EditPost", "Bewerk dit bericht" 
  
  Session("Language") = LanguagePack
%>



foutmelding
code:
1
2
3
4
5
6
7
Session object error 'ASP 0185 : 8002000e'

Missing Default Property

/mtc/ontwikkel/languagepacks/dutch.asp, line 10

A default property was not found for the object.


We rennen van de ene foutmelding in de ander :?

[ Voor 14% gewijzigd door Freemann op 10-08-2004 12:34 ]

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


Verwijderd

Heb je als je Server.Execute doet wel beschikking over je sessie-variabelen?

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Ik denk dat het hem erin zit dat je LanguagePack variabele alleen binnen de scope van je ge-include-de bestand bestaat. Die Sven Glazenburg heeft het over globale variabelen maar volgens mij bestaat dat in ASP helemaal niet.

Als je een variabele met Dim declareert bestaat ie alleen binnen de scope van de pagina, en is dus onbereikbaar voor code uit een andere pagina.
Je zou de LanguagePack variabele als Application of Session variabele kunnen opslaan, maar onder classic ASP is het opslaan van objecten in het geheugen niet echt aan te raden.

ASP.Net is wat dat betreft een stuk beter toegerust, daar heb je ook meer opties om variabelen op te slaan (het Context object bijv.).

[ Voor 3% gewijzigd door Not Pingu op 10-08-2004 12:34 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Gunp01nt schreef op 10 augustus 2004 @ 12:33:
Ik denk dat het hem erin zit dat je LanguagePack variabele alleen binnen de scope van je ge-include-de bestand bestaat. Die Sven Glazenburg heeft het over globale variabelen maar volgens mij bestaat dat in ASP helemaal niet.

Als je een variabele met Dim declareert bestaat ie alleen binnen de scope van de pagina, en is dus onbereikbaar voor code uit een andere pagina.
Je zou de LanguagePack variabele als Application of Session variabele kunnen opslaan, maar onder classic ASP is het opslaan van objecten in het geheugen niet echt aan te raden.

ASP.Net is wat dat betreft een stuk beter toegerust, daar heb je ook meer opties om variabelen op te slaan (het Context object bijv.).
Hoe zou ik dit dan het beste op kunnen gaan pakken?
Toch met XML ? of is dat ook niet aan te raden?

Heb al even met XML zitten klooien maar dat krijg ik niet op naam aangesproken.
PHP kent dat wel(array met namen aanspreken), maar ASP blijkt dat niet te kunnen. Dat is natuurlijk helemaal niet lekker werken als je met nummertjes werkt.

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Een 'array met namen' heet in ASP classic gewoon een Dictionary object ;)
Je zou om te proberen gewoon het LanguagePack uit dat stukje code van Sven Glazenburg aan het eind van dutch.asp als Session variabele kunnen opslaan, en even kijken of de performance daar niet loeihard van onderuit gaat.

Anders kun je nog een algemene functie schrijven in een include file die je op elke pagina include (en niet dmv. Server.Execute).
In die functie lees je dan bijv. een GET variabele uit (bijv. Request.QueryString("lang")) en dat gebruik je om uit die XML file een bepaalde taal te filteren waar je een Dictionary object van genereert. Op die manier heb je je Dictionary object toch ter beschikking op de pagina zelf.

Beetje code als voorbeeld:
(bear with me, het is al een tijdje geleden dat ik met classic ASP heb gewerkt ;))
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'Dit is de include file, bijv. language.asp

Dim objLanguagePack = Server.CreateObject("Scripting.Dictionary")

Sub FilterLanguage

     'Hier kun je meerdere dingen doen
     '1) Je hardcode hier de variabelen in het Dictionary object, dus:

     Select Case Request.QueryString("lang")
     Case "NL"
           Call objLanguagePack.Add("Foutmelding", "Er is een fout opgetreden")
     Case "EN"
           Call objLanguagePack.Add("Foutmelding", "An error has occured")
     End Select

     '2) Je maakt meerdere XML files met de vertalingen (voor elke taal 1 XML file) 
     '    en je laadt hier op basis van de GET variabele een van de files in
     '3) Je pleurt alles in 1 XML file, je laadt die in en selecteert de taalnode die je 
     '   nodig hebt

End Sub


Hoe dan ook, als je zorgt dat je altijd een Dictionary object overhoudt met de nodige keys erin (zoals "Foutmelding") dan kun je er in je ASP pagina gewoon vanuit gaan dat die bestaat:

ASP:
1
2
3
4
5
'Dit is dus je ASP pagina

<!--#INCLUDE FILE="lang.asp" -->

<h1><%= objLanguagePack("Foutmelding") %></h1>


en dan kun je bijv. zonder problemen switchen van hardcoded naar XML (omdat het handiger is om een XML file te editen dan hardcoded variabelen) zonder dat je daarvoor al je pagina's moet aanpassen.

[ Voor 96% gewijzigd door Not Pingu op 10-08-2004 13:31 . Reden: Layoutverneuking en sub afsluiten gefixt :P ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Je.Zus, dit noem ik een behoorlijk slimme en toch vrij simpele oplossing _/-\o_

ik ga hier eens mee stoeien!
als ik het werkt, dan laat ik de uiteindelijk XML->dictionary code hier ook nog wel ff achter. Maar nu moet ik me eerst ff gaan verdiepen in XML en zijn parse mogelijkheden. Want hier ben ik nog maar net mee bezig(als er iemand is die wat voorbeeldjes heeft, of mij de goede richting in kan helpen, graag)

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:13

Janoz

Moderator Devschuur®

!litemod

Ik kan mij trouwens niet voorstellen dat er voor ASP (.net) niet iets vergelijkbaars is als bij j2ee. Ikzefl heb gewoon een aantal grote resource bestanden:
ApplicationResources_NL_nl.properties
ApplicationResources_ES_es.properties
ApplicationResources_US_en.properties
Automagisch wordt adhv accept language van de browsers bepaald welke taal er genomen wordt (wat mbv de session ook nog wel aan te passen is).

Het lijkt me heel onwaarschijnlijk dat ASP niet een soort gelijke resource manager heeft. (Bijna) alle oplossingen hierboven vragen om een aanpassing in de CODE waneer er iets in de CONTENT verandert. Bij mij laat zo'n soort bewerking net zoveel alarmbellen afgaan als het gebruik van csv in een database veld.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Janoz schreef op 10 augustus 2004 @ 13:43:
Ik kan mij trouwens niet voorstellen dat er voor ASP (.net) niet iets vergelijkbaars is als bij j2ee. Ikzefl heb gewoon een aantal grote resource bestanden:
ApplicationResources_NL_nl.properties
ApplicationResources_ES_es.properties
ApplicationResources_US_en.properties
Automagisch wordt adhv accept language van de browsers bepaald welke taal er genomen wordt (wat ook programaties mbv de session ook nog wel aan te passen is).

Het lijkt me heel onwaarschijnlijk dat ASP niet een soort gelijke resource manager heeft. (Bijna) alle oplossingen hierboven vragen om een aanpassing in de CODE waneer er iets in de CONTENT verandert. Bij mij laat zo'n soort bewerking net zoveel alarmbellen afgaan als het gebruik van csv in een database veld.
ik heb het nog niet kunnen vinden helaas. Wat je zegt is waar, maar als het op dit moment niet anders kan dan ga ik het zo maar doen. Het is helaas niet anders denk ik.

Voorlopig hou ik het redelijk simpel met 2 talen (engels en nederlands). Wil dit ook vooral doen om de code overzichtelijker te maken. Want dat begint nu echt een rijstenbrij te worden met ASP,JS en HTML. Nu hoop ik hiermee nagenoeg alle HTML eruit te kunnen gooien.

[ Voor 12% gewijzigd door Freemann op 10-08-2004 13:54 ]

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Janoz schreef op 10 augustus 2004 @ 13:43:
Ik kan mij trouwens niet voorstellen dat er voor ASP (.net) niet iets vergelijkbaars is als bij j2ee. Ikzefl heb gewoon een aantal grote resource bestanden:
ApplicationResources_NL_nl.properties
ApplicationResources_ES_es.properties
ApplicationResources_US_en.properties
Automagisch wordt adhv accept language van de browsers bepaald welke taal er genomen wordt (wat ook programaties mbv de session ook nog wel aan te passen is).

Het lijkt me heel onwaarschijnlijk dat ASP niet een soort gelijke resource manager heeft. (Bijna) alle oplossingen hierboven vragen om een aanpassing in de CODE waneer er iets in de CONTENT verandert. Bij mij laat zo'n soort bewerking net zoveel alarmbellen afgaan als het gebruik van csv in een database veld.
Bedenk je wel dat ASP classic al vrij oud is en niet meer is dan een simpel scriptplatform waar later ook functionaliteit voor databaseinteractie aan is toegevoegd. Object-orientation is ver te zoeken en hoewel het wel kan, is het niet echt aan te raden. Daar is ASP.Net echt 100x beter op toegerust.

Maar het zou denk ik wel kunnen, een klasse LanguageSettings oid definieren waarin je voor elk stuk tekst een property definieert. Maar echt fijn werkt dat in ASP.Net niet hoor.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Volgens mij kan je met ASP .Net gewoon gebruik maken van de Globalisatie in .Net met vertaaltabellen in je resource file die je vervolgens in satellite assemblies plakt. Maar dan heb je het wel over ASP .Net en niet het oude ASP.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Infinitive schreef op 10 augustus 2004 @ 14:34:
Volgens mij kan je met ASP .Net gewoon gebruik maken van de Globalisatie in .Net met vertaaltabellen in je resource file die je vervolgens in satellite assemblies plakt. Maar dan heb je het wel over ASP .Net en niet het oude ASP.
whoeha!Kun je dit toelichten? Snap er de ballen van :?

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:36

gorgi_19

Kruimeltjes zijn weer op :9

mfrijm schreef op 10 augustus 2004 @ 18:24:
whoeha!Kun je dit toelichten? Snap er de ballen van :?
Aangezien je met ASP werkt, weet ik niet of het nuttig is om de ResourceManager van .Net uit te gaan leggen :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-05 23:32

alienfruit

the alien you never expected

Ik gebruik zelf zoiets, een eigen ResourceManager (ASP.NEt/PHP ;))

code:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<file>
    <name>Add New Article</name>
    <resources language="nl">
        <resource id="00001" ref="txtTitle">Bla</resource>
        <resource id="00002" ref="txtHeaderDetails">Bliep</resource>
        <resource id="00003" ref="btnDetailsCollapse">Blop</resource>
        <resource id="00004" ref="txtErrorMsg">Bleh</resource>
    </resources>
</file>


resource -> taaldefinitie
resource -> resourche linking id -> unieke nummer
resource -> resource ref -> linkt vertaling aan een item/veld.

De resource manager gebruikt vervolgens een XML/XSLT transform.
Pagina: 1