15. januar 2005 - 00:19
Der er
59 kommentarer og
1 løsning
Oversættelser i message_dk message_eng format!
Hej igen igen..
jeg har opdaget at man kan gøre sådan at man kan load forskellige sprog, så jeg ville gerne starte med dansk og engelsk.
jeg opretter derfor en fil kaldet message_da og message_en også feks. 1 ting der skal over sættes.
#Hello=Hej(i DA)
#Hello=Hello(i en)
Når jeg så skal have sat det ind i en <td> feks.
gør jeg så <%=getmsg("Hello")%> .
Men et eller andet sted skal den jo vide om den skal tages fra den engelske fil eller den danske. og det ville jeg gerne have i en cookie, så hvis brugeren trykker på det danske flag får han det i dansk og omvendt..
Nogen der kan hjælpe mig med det??
Siden er en blanding af asp og java..
men mener bestemt at det her er java delen hehe..
Mange tak på forhånd
15. januar 2005 - 00:22
#1
15. januar 2005 - 00:28
#2
jeg har 2 filler henholdsvis message_en og message_da som den skal hente fra.
og jeg burde kunne indsætte <%=GetMgs("select.langues")%>
Det jeg mener jeg mangler er noget i still med det her!!
<%
'
' $Id: inc.loader.asp,v 1.1.1.1 2003/03/09 22:45:58 peter Exp $
'
' Loads all messages used in chat -- this function should be OPTIMIZED!
'
' @author Peter Theill peter@theill.com
'
Dim all_messages
Set all_messages = CreateObject("Scripting.Dictionary")
readMessages()
Sub readMessages()
Dim messageFile
messageFile = Server.MapPath("messages/messages." & MESSAGE_LANGUAGE)
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
If (fs.FileExists(messageFile)) Then
Dim a
Set a = fs.OpenTextFile(messageFile)
Dim line, msg
Do While Not (a.AtEndOfStream)
line = Trim(a.ReadLine)
If (Len(line) > 0 AND Left(line, 1) <> "#" AND Left(line, 1) <> "'") Then
' get messages by spliting where the = is located; notice the second
' parameter which is used to split the line in two parts only and
' thus allowing users to type = in the localized message
msg = Split(line, "=", 2)
If (UBound(msg) = 1) Then
all_messages.Add Trim(msg(0)), Trim(msg(1))
End If
End If
Loop
End If
End Sub
%>
Men jeg skal bare have den til at tage fra en cookie..
Eller er det mig der er total på spanden lige nu?
15. januar 2005 - 00:39
#3
Hvor meget er det lige, der skal oversættes?
15. januar 2005 - 00:45
#4
jeg havde tænkt mig alle overskifter og links navne..
i selve mine messages_da og message_en har jeg feks...
(da)
# select
select.langues=Vælg Sprog
(en)
# select
select.langues=Select Langue
og det burde jeg kunne kalde frem sådan her, hvis jeg altså kan få det i en cookie hvilket sprog brugeren vælger.
<%=getMgs("select.langues")%>
. ved at brugeren trykker på _en eller _da så skal den jo sætte det ind i en cookie.
hvordan gør jeg det smartest..
og hvordan med det script der så læser fra cookie og erstatter <%=getMgs("select.langues")%>
15. januar 2005 - 00:59
#5
eller forklare jeg mig forkert??
så bare sig til :) så skal jeg prøve på en anden måde
15. januar 2005 - 00:59
#6
Giv et eksempel på noget fra websitet..
15. januar 2005 - 01:06
#7
(da)
velkomst=Velkommen
(en)
velkomst=Welcome
Det skal højst sandsynligt være sådan her:
session(Trim(msg(0))) = Trim(msg(1))
Derefter kan du bruge:
<%= session("velkomst")%> som så skriver:
Velkommen (da)
Welcome (en)
15. januar 2005 - 01:07
#8
jeg har ikke lavet noget på mit eget endnu. men feks. den chat der kan jeg give lidt fra :)
inc.config.asp
' Defines used language for all messages shown. Change this value to
' a language of your chat and create a new message file in the 'messages'
' directory called: "messages.<language code>", i.e. if you want to
' create one for danish use "messages.da" and change the setting below
' to "da".
'
' Default Value: "en"
'
Const MESSAGE_LANGUAGE = "en"
inc.loader.asp
<%
'
' $Id: inc.loader.asp,v 1.1.1.1 2003/03/09 22:45:58 peter Exp $
'
' Loads all messages used in chat -- this function should be OPTIMIZED!
'
' @author Peter Theill peter@theill.com
'
Dim all_messages
Set all_messages = CreateObject("Scripting.Dictionary")
readMessages()
Sub readMessages()
Dim messageFile
messageFile = Server.MapPath("messages/messages." & MESSAGE_LANGUAGE)
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
If (fs.FileExists(messageFile)) Then
Dim a
Set a = fs.OpenTextFile(messageFile)
Dim line, msg
Do While Not (a.AtEndOfStream)
line = Trim(a.ReadLine)
If (Len(line) > 0 AND Left(line, 1) <> "#" AND Left(line, 1) <> "'") Then
' get messages by spliting where the = is located; notice the second
' parameter which is used to split the line in two parts only and
' thus allowing users to type = in the localized message
msg = Split(line, "=", 2)
If (UBound(msg) = 1) Then
all_messages.Add Trim(msg(0)), Trim(msg(1))
End If
End If
Loop
End If
End Sub
%><!-- #include file="inc.utility.asp" -->
inc.utility.asp
<script language="JScript" runat="Server">
/**
* Need to use JScript for this since I want to have optional parameters
* in my 'getMsg' function call.
*
*/
/**
* Returns message and replaces arguments with dynamic text if the function
* may be called with:
*
* getMsg("I'm pretty sure {0} taste better than {1}.", "coke", "sprite")
*
* Which will result in a line saying:
*
* I'm pretty sure coke taste better than sprite.
*
* @param name Name with text string and optional {} tags
* @param ... Optional arguments to replace tags
* @return String with replaced parameter
*
*/
function getMsg(name) {
if (!all_messages.Exists(name)) {
return "[" + name + "]";
}
var message = all_messages.Item(name);
for (var i = 0; i < arguments.length; i++) {
message = message.replace("\{" + i + "\}", arguments[i+1]);
}
return message;
} // > function getMsg(name)
function gettext(name) {
if (!all_messages.Exists(name)) {
return name;
}
var message = all_messages.Item(name);
for (var i = 0; i < arguments.length; i++) {
message = message.replace("\{" + i + "\}", arguments[i+1]);
}
return message;
}
</script>
index.asp
<!-- #include file="inc.config.asp" -->
<!-- #include file="inc.loader.asp" -->
<table width=100% border=0 cellspacing=0 cellpadding=4 style="border-right: 3px double #003300">
<tr>
<td colspan=3 class=uocap><%= getMsg("login.users_online") %></td>
</tr>
<% If (countUsers() <> 0) Then %>
<tr>
<th class=uo> </th>
<th class=uo><%= getMsg("login.header.username") %></th>
<th class=uo><%= getMsg("login.header.room") %></th>
</tr>
15. januar 2005 - 01:11
#9
Jeg vil tro, at du kan bruge 15/01-2005 01:06:28
Mht til "?lang=".. du bruger bare:
select case lcase(request.querystring("lang"))
case "da"
MESSAGE_LANGUAGE = "da" ' brugeren har valgt dansk
case "en"
MESSAGE_LANGUAGE = "en" ' brugeren har valgt engelsk
case else
MESSAGE_LANGUAGE = "da" ' brugeren har måske skrevet noget andet, der ikke passer ind
end select
messageFile = Server.MapPath("messages/messages." & MESSAGE_LANGUAGE)
15. januar 2005 - 01:16
#10
Ja det ser fornuftigt ud. nu er siden så på dansk fordi brugeren ikke har valgt noget.
Men hvordan skal det se ud når han vælger??
jeg har
<a href="sprog.asp?lang=da"><img src="dansk_flag.gif></a> <a href="sprog.asp?lang=en"><img src="engelsk_flag.gif"></a>
Skal jeg så bare kopirer det her ind i sprog.asp ?
select case lcase(request.querystring("lang"))
case "da"
MESSAGE_LANGUAGE = "da" ' brugeren har valgt dansk
case "en"
MESSAGE_LANGUAGE = "en" ' brugeren har valgt engelsk
case else
MESSAGE_LANGUAGE = "da" ' brugeren har måske skrevet noget andet, der ikke passer ind
end select
messageFile = Server.MapPath("messages/messages." & MESSAGE_LANGUAGE)
eller kan man sætte den i en cookie så brugeren er fr for at vælge næste gang han er på siden ?
15. januar 2005 - 01:19
#11
Ja, det er rigtigt (opsætningen).
Du kan godt smide det i en cookie (
http://www.html.dk/tutorials/asp/lektion13.asp ), så detautomatisk bliver valgt næste gang.
Du kan også lave det sådan, at brugeren automatisk sendes tilbage, til den side han/hun kom fra, ved valg af sprog..
Der bruger du request.servervariables("path_info").
15. januar 2005 - 01:23
#12
lige en sidste ting.. hvad variable skal jeg bruger for at få texten frem.
for jeg kan vel ikke bruge den her.
<%=getMgs("select.langues")%>
15. januar 2005 - 01:25
#13
Hvis du bruger sessions:
<%=session("select.langues")%>
Hvis du bruger cookies
<%=request.cookies("select.langues")%>
15. januar 2005 - 01:28
#14
og hvis man skal vælge fra gang til gang man er på siden ???
15. januar 2005 - 01:29
#15
hvordan mener du?
15. januar 2005 - 01:34
#16
Ja lige nu har vi ikke gemt den i noget som helst sådan som vi har lavet det..
for at gemme den som session eller cookie skal jeg jo tilføje noget mere.
eventuelt tilføje "da" eller "en" i en cookie.
Men selve sproget er gemt, det tjekker vi jo når siden åbnes med
select case lcase(request.querystring("lang"))
case "da"
MESSAGE_LANGUAGE = "da" ' brugeren har valgt dansk
case "en"
MESSAGE_LANGUAGE = "en" ' brugeren har valgt engelsk
case else
MESSAGE_LANGUAGE = "da" ' brugeren har måske skrevet noget andet, der ikke passer ind
end select
messageFile = Server.MapPath("messages/messages." & MESSAGE_LANGUAGE)
men hvordan får jeg den udskrivet sådan som vi har lavet den nu ?
15. januar 2005 - 01:39
#17
' -------------------------------- hent sproget fra urlen og brug den:
select case lcase(request.querystring("lang"))
case "da"
MESSAGE_LANGUAGE = "da" ' brugeren har valgt dansk
case "en"
MESSAGE_LANGUAGE = "en" ' brugeren har valgt engelsk
case else
MESSAGE_LANGUAGE = "da" ' brugeren har måske skrevet noget andet, der ikke passer ind
end select
messageFile = Server.MapPath("messages/messages." & MESSAGE_LANGUAGE)
.. resten af koden her...
.. og så:
' -------------------------------- gem ordene i sessions:
' tidligere var denne linie jo "all_messages.Add Trim(msg(0)), Trim(msg(1))":
session(Trim(msg(0))) = Trim(msg(1)) ' se 15/01-2005 01:06:28
' -------------------------------- ordene udskrives/bruges:
<%=session("velkomst")%>
15. januar 2005 - 01:41
#18
Hvis du vil, kan du jo også smide den i en cookie..
Så kan du lave et check:
HVIS cookies("lang") eksisterer SÅ
brug cookie
ELLERS
bruge urlen med select case
SLUT HVIS
15. januar 2005 - 01:41
#19
Nu jeg ikke helt med..
skal jeg skrive alle ordne i sessions eller kan jeg godt have de 2 filer jeg har den henter fra ?
og hvor skal jeg indsætte den her? session(Trim(msg(0))) = Trim(msg(1))
15. januar 2005 - 01:43
#20
Nu har jeg lige lavet den her. det burde gemme den i en cookie.
<%
select case lcase(request.querystring("lang"))
case "da"
MESSAGE_LANGUAGE = "da" ' brugeren har valgt dansk
Response.Cookies("After8")("MESSAGE_LANGUAGE") = "da"
case "en"
MESSAGE_LANGUAGE = "en" ' brugeren har valgt engelsk
Response.Cookies("After8")("MESSAGE_LANGUAGE") = "en"
case else
MESSAGE_LANGUAGE = "en" ' brugeren har måske skrevet noget andet, der ikke passer ind
end select
messageFile = Server.MapPath("messages/messages." & request.cookies("MESSAGE_LANGUAGE"))
%>
15. januar 2005 - 01:44
#21
Alle ordene smides i sessions..
Før var linien "all_messages.Add Trim(msg(0)), Trim(msg(1))".. nu er linien (samme linie) lavet om til "session(Trim(msg(0))) = Trim(msg(1))"
Jeg kan se at du inkluderer nogle ekstre filer.. jeg ved ikke hvad de gør, og hvordan "all_messages.add" virker.. altså, det fremgår ikke hvordan der holdes styr på ordenen..
15. januar 2005 - 01:45
#22
Det skal nok være request.cookies("After8")("MESSAGE_LANGUAGE")..
15. januar 2005 - 01:46
#23
alt det der er fra chat siden har jeg ikke indført.
kun det du har hjulpet mig med fornær Trim da jeg ikke er helt med hvor du vil have den.. men jeg skal måske bruge inc.loader.asp og inc.utility.asp ??
15. januar 2005 - 01:52
#24
jeg skal jo næsten lave 2 sprog.asp da den ene skal bruges når siden loader og den anden til når brugeren vælger sprog..
så den siden automatisk loader må se sådan her ud.
<%
If cookie("After8")("MESSAGE_LANGUAGE") = "da" Then
Const MESSAGE_LANGUAGE = "da"
elseif cookie("After8")("MESSAGE_LANGUAGE") = "en" Then
Const MESSAGE_LANGUAGE ="en"
else
Const MESSAGE_LANGUAGE ="en"
end if
%>
15. januar 2005 - 01:57
#25
Jeg ved ikke hvad inc.loader.asp og inc.utility.asp er.. du har jo skrevet hvad der står i dem :-)
Hvis du bruger det jeg har lavet, vil du kunne bruge "læse fra fil"-scripet, plus min kode.. og du skulle gerne kunne nøjes med det..
Den anden del bruges vel til chatten..
Husk Request.Cookies...
15. januar 2005 - 02:01
#26
ja sorry fordi jeg ikke lige fatter det her hehe..
Men læse fra fil ?? hvad er det du lige mener ??
15. januar 2005 - 02:03
#27
Du læser jo ordene fra en fil :-)
De bliver smidt ind i sessions.. og derefter kan de bruges..
15. januar 2005 - 02:05
#28
ohh ja selvfølgelig vi mangler bare en ting :)
session(Trim(msg(0))) = Trim(msg(1)) hvor skal jeg sætte den ind henne ?
for lige nu virker det nemlig ikke der får jeg en fejl som hedder..
Microsoft VBScript compilation error '800a0411'
Name redefined
/sprog01.asp, line 6
Const MESSAGE_LANGUAGE = "en"
------^
15. januar 2005 - 02:09
#29
hehe.. den siger jo "Name redefined", og henviser til Const MESSAGE_LANGUAGE = "en" som er linie 6 :-)
Hvad mener behøver du? :-)
Du kan jo kun bruge Const VariabelNavn 1 gang.. så har du defineret den..
Jeg fatter det ikke.. hvad er det du ikke forstår ved "session(Trim(msg(0))) = Trim(msg(1))"...? :-)
Læs:
15/01-2005 01:06:28
15/01-2005 01:39:16
15/01-2005 01:44:10
15. januar 2005 - 02:10
#30
Det må vist snart være sengetid.. :-)
15. januar 2005 - 02:12
#31
jamen jeg har jo lavet den her..
<%
if Request.Cookies("After8")("MESSAGE_LANGUAGE") = "da" Then
Const MESSAGE_LANGUAGE = "da"
elseif Request.Cookies("After8")("MESSAGE_LANGUAGE") = "en" Then
Const MESSAGE_LANGUAGE = "en"
else
Const MESSAGE_LANGUAGE = "en"
end if
%>
Det jeg ikke forstår ved "session(Trim(msg(0))) = Trim(msg(1))"...?
er hvor og hvordan skal jeg sætte den ind i mit script ???
Håber lige du når at besvare det her så jeg kan få det til at due :) hehe
15. januar 2005 - 02:15
#32
Du har indsat Const igen et eller andet sted. Enten i samme fil, eller i en fil du inkluderer. Se godt efter. Hvis "linie 6" er før din IF-sætning, kunne det være fil du har indkluderet.
--
1) Find linien: "all_messages.Add Trim(msg(0)), Trim(msg(1))"
2) Erstat den med: "session(Trim(msg(0))) = Trim(msg(1))"
3) Var det bedre? :-)
15. januar 2005 - 02:16
#33
jeg har ikke indsat "all_messages.Add Trim(msg(0)), Trim(msg(1))"
nogen steder..
og jeg har kun const i den jeg lige sendte.. jeg fatter hat :(
15. januar 2005 - 02:18
#34
Du har den lige.....
Do While Not (a.AtEndOfStream)
line = Trim(a.ReadLine)
If (Len(line) > 0 AND Left(line, 1) <> "#" AND Left(line, 1) <> "'") Then
' get messages by spliting where the = is located; notice the second
' parameter which is used to split the line in two parts only and
' thus allowing users to type = in the localized message
msg = Split(line, "=", 2)
If (UBound(msg) = 1) Then
all_messages.Add Trim(msg(0)), Trim(msg(1)) ' ------------------ her :-)
End If
End If
Loop
15. januar 2005 - 02:19
#35
Arh jamen så skal jeg jo bruge inc.loader.asp og inc.utillity.asp fra chat scriptet du gjore mig fandme helt forvirret hehe..
Den const fejl, fatter jeg ikke. er der andet jeg skal gøre istedet for at lave det til const ??
15. januar 2005 - 02:24
#36
hmm... det giver ikke mening, det der med "Const MESSAGE_LANGUAGE"..
Lav en søgnnig i mappen.. søg efter "Const MESSAGE_LANGUAGE".. hvor mange filer finder den?
Backup-filer tælles ikke med.. kun "aktive" filer..
15. januar 2005 - 02:25
#37
den finder kun den..
okay i stedet for kan man så ikke lave noget andet en const ??
15. januar 2005 - 02:27
#38
Const fortæller den, at værdien er konstant.. Prøv at ændre den..
dim MESSAGE_LANGUAGE
så bruger du bare: MESSAGE_LANGUAGE = "da" (osv..)
15. januar 2005 - 02:27
#39
de må være skrevet forkert ud.. for når jeg sletter de 2 af dem virker det fint.. bortset fra der ikke kommer noget noget text fra mine da og en hehe
15. januar 2005 - 02:29
#40
Microsoft VBScript compilation error '800a0401'
Expected end of statement
/sprog01.asp, line 3
dim MESSAGE_LANGUAGE = "da"
---------------------^
15. januar 2005 - 02:30
#41
1) dim MESSAGE_LANGUAGE
2) MESSAGE_LANGUAGE = "da"
15. januar 2005 - 02:30
#42
Sorry sproget kom frem :)
da jeg slettede allesammen fornær const.. men så finder den kun dansk sprog haha..
15. januar 2005 - 02:37
#43
arh sådan her ?
<%
dim MESSAGE_LANGUAGE
if Session("MESSAGE_LANGUAGE") = "da" then
MESSAGE_LANGUAGE = "da"
elseif Session("MESSAGE_LANGUAGE") = "en" then
MESSAGE_LANGUAGE = "en"
else
MESSAGE_LANGUAGE = "en"
end if
%>
men den gider ikke skifte sprog når jeg trykker på flagene :(
15. januar 2005 - 02:38
#44
Hvad gjorde du af SELECT CASE ? :-)
15. januar 2005 - 02:39
#45
i index.asp
<%=Session("select.langues")%> <a href="sprog.asp?lang=da"><img src="image/Denmark.bmp" border="0"></a> <a href="sprog.asp?lang=en"><img src="image/England.bmp" border="0"></a>
sprog.asp
<%
select case lcase(request.querystring("lang"))
case "da"
MESSAGE_LANGUAGE = "da" ' brugeren har valgt dansk
Response.Cookies("After8")("MESSAGE_LANGUAGE") = "da"
case "en"
MESSAGE_LANGUAGE = "en" ' brugeren har valgt engelsk
Response.Cookies("After8")("MESSAGE_LANGUAGE") = "en"
end select
messageFile = Server.MapPath("messages/messages." & request.cookies("After8")("MESSAGE_LANGUAGE"))
response.redirect "index.asp"
%>
15. januar 2005 - 02:41
#46
1) heheheh... du sætter en cookie, men checker en session.. :-)
2) du bruger response.redirect "index.asp".. så er det lige meget med linien:
messageFile = Server.MapPath("messages/messages." & request.cookies("After8")("MESSAGE_LANGUAGE"))
15. januar 2005 - 02:42
#47
skal jeg bruge det her til noget?
<script language="JScript" runat="Server">
function getMsg(name) {
if (!all_messages.Exists(name)) {
return "[" + name + "]";
}
var message = all_messages.Item(name);
for (var i = 0; i < arguments.length; i++) {
message = message.replace("\{" + i + "\}", arguments[i+1]);
}
return message;
} // > function getMsg(name)
function gettext(name) {
if (!all_messages.Exists(name)) {
return name;
}
var message = all_messages.Item(name);
for (var i = 0; i < arguments.length; i++) {
message = message.replace("\{" + i + "\}", arguments[i+1]);
}
return message;
}
</script>
15. januar 2005 - 02:43
#48
"skal jeg bruge det her til noget?": nej, ikke til sprog-skiftet..
15. januar 2005 - 02:43
#49
hvad skal jeg så gøre med response "index.asp" ??
15. januar 2005 - 02:45
#50
Jeg ved ikke hvorfor du lige har indsat response.redirect "index.asp" :-)
Den var der ikke før..
15. januar 2005 - 02:46
#51
jamen hvis jeg laver den sådan her <%=request.cookies("select.langues")%>
så kommer der slet ikke noget frem..
heller ej med..
<%
dim MESSAGE_LANGUAGE
if request.cookies("MESSAGE_LANGUAGE") = "da" then
MESSAGE_LANGUAGE = "da"
elseif request.cookies("MESSAGE_LANGUAGE") = "en" then
MESSAGE_LANGUAGE = "en"
else
MESSAGE_LANGUAGE = "en"
end if
%>
15. januar 2005 - 02:48
#52
Jamen ellers kan jeg ikke komme tilbage til index.asp ???
15. januar 2005 - 02:50
#53
nu fik jeg det hele til at due :) næsten..
mangler bare lige at den kommer tilbage til index.asp efter sprog.asp :)
15. januar 2005 - 02:52
#54
response.buffer=true
response.clear
response.redirect "index.asp"
response.end
sådan måske efter ??? hehe
15. januar 2005 - 02:52
#55
Jeg kan ikke se, hvad du vil med "messageFile = Server.Ma.."-linien.. hvis du alligevel loader index.asp..
Du kan først bruge response.redirect "index.asp" efter at du har sat/checket dine cookies/sessions..
At du sætter en variabel til et eller andet, og derefter skifter til index.asp, får du ikke meget ud af.. altså variablen..
15. januar 2005 - 02:53
#56
Nu dur det hele.. jihad nu jeg fandme glad..
Mange tak for hjælpen..
Du fortjener dine points..
skriv et svar og du skal få :)
15. januar 2005 - 02:53
#57
mkay :-)
15. januar 2005 - 02:54
#58
jeg har en frame spørgsmål oppe også hehe, hvis du engang får tid når du er stået op :)
15. januar 2005 - 02:55
#59
kan muligvis ske i morgen eftermiddag..
Takker for points :-)
Nu er vist sengetid.. :-)
15. januar 2005 - 02:57
#60
..godnat og sov godt..
Kurser inden for grundlæggende programmering