Avatar billede januskh Nybegynder
14. juni 2001 - 22:33 Der er 19 kommentarer og
4 løsninger

Flere sprog...

Hej allesammen...

Jeg er i færd med, at kode en \"skabelon\" af et web site, som skal kunne installeres på flere web servere rundt omkring på kloden. Dvs. at der skal være support for flere sprog.

Jeg vil lave web sitet/skabelonen, således at sproget kan ændres, blot ved at åbne en side i en editor og oversætte samtlige linier f.eks. fra engelsk til svensk.

Men hvordan programmeres dette lettetst? Første overvejelse jeg havde var f.eks. at lave alle linierne, som variabler. Men så kommer der jo et hav, af variabler i koden, hvis man inkluderer \"sprog filen\" på den enkelte side.

Siden skulle gerne fungere på samme måde som et stylesheet... forstået på den måde, at når f.eks. ordet: \"Titel\" oversættes til \"Catagory\", så vil alle overskrifter som før hed \"Titel\" komme til at hedde \"Catagory\".

En INI-fil kunne måske også være en ide, men er der nogle kloge hoveder, som måske havde en smartere idé?

/Januskh
Avatar billede chris2k Nybegynder
14. juni 2001 - 22:48 #1
Variabler er nok det bedste.
Avatar billede mesterlars Nybegynder
14. juni 2001 - 22:49 #2
hvem sagde XML?
Avatar billede orca Nybegynder
14. juni 2001 - 22:51 #3
Hvad med en database som indeholder alle sprogene og som henter det korrekte sprog ud alt efter en variabel der er sat...?

Orca
Avatar billede januskh Nybegynder
14. juni 2001 - 23:10 #4
->>Chris2k: Det kommer til at være for omstændigt... der kommer bare for mange varialber. Plus at så skulle en eventuel korrespondent/sekretær skal redigere syntax kode

->>mesterlars: Ja... hvad med XML... findes der noget syntax på at XML... jeg har aldrig set en sådan handling udført.

->>Orca: Jeg tror bare at det går hen og bliver for tungt. Minimum ét opslag ekstra pr. side?!? Det belaster jo også et allerede trafikkeret server. Plus at hvordan vil du oprette en \"pæn\" database til det? En kolonne til hvert ord? Beklager det er udelukket.
Avatar billede mesterlars Nybegynder
14. juni 2001 - 23:16 #5
janus < desværre ved jeg meget lidt om XML, dette lyder bare som en oplagt mulighed til at bruge det, men det kræver nok en del timer at sætte sig ind i det

Humlen i XML er jo at man sepererer indhold og præsentation. Altså sepererer teksten fra det grafiske - og det er jo netop det man ønsker når man vil have forskellige sprog.

Men hvordan man laver det aner jeg ikke.
Avatar billede jivefive Nybegynder
14. juni 2001 - 23:16 #6
Hej Janus

Hvis du skal have flettet dit dokument, så er der, så vidt jeg kan se kun to måder at gøre det på.

Den ene er simpelthen at køre et eller andet søgeprogram, der udskifter de enkelte ord én gang for alle og derefter gemmer dokumenterne. Den løsning er bare ikke særlig fleksibel, da det skal gøres hver gang der sker ændringer i dokumenterne eller hvis der kommer nye dokumenter til og derudover er der også lidt problemer med at arbejde med \"fritekst\", som jeg nævner nedenfor.

Den anden løsning er at lave udskiftningen dynamisk, når dokumentet bliver sendt afsted fra serveren. Dette kan gøres på to måder. Du kan bruge et serverkomponent, der laver alle udskiftningerne før dokumentet sendes, eller du kan gøre det vha. asp eller et andet serverside script. Begge løsninger kan bruges på to måder.
Du kan enten søge efter forekomster af den tekst du vil have udskiftet og udskifte den med den rette oversættelse (fritekstsøgning), eller du kan \"mærke\" hele dokumentet op med variabler, som du så indsætter de rette oversættelser i inden dokumentet sendes.

Jeg ved godt, at den første løsning, med at søge efter forekomster og udskifte dem, lyder meget tiltalende. Men der er en ulempe ved det. De fleste, der har prøvet at arbejde bare lidt med fritekst og udskiftning eller søgning i en sådan tekst ved, at det kan være meget ustabilt. Jeg har selv oplevet problemer med f.eks linieskift i sætninger, som ikke umiddelbart kan ses i den endelige html side, men som alligevel betød at teksten ikke blev fanget og behandlet som den skulle. Eller hvad med store og små bogstaver. Man kan simpelthen aldrig være sikker på, at løsningen virker 100%.

Derfor er mit eneste råd, at lave en række skabeloner med en masse definerede variabler i og så indsætte den korrekte tekst når dokumentet bliver kaldt.

Om du så skal vælge den ene eller den anden måde at gøre det på (komponent eller script) er lidt en smagssag. Jeg ville nok vælge at lave en scriptløsning fordi den er mere fleksibel (man kan vælge hvilke dokumenter det skal gøres i) og fordi den er nemmere at implementere. Tilgengæld betyder det, at man skal ind og rode i hvert dokument, som du selv pointere. Men all in all er det nu stadigvæk den løsning, som jeg vil råde dig til at bruge. Selv om server komponenter er seje og lyder meget teknisk ;o)

Hilsen
JiveFive
Avatar billede jivefive Nybegynder
14. juni 2001 - 23:21 #7
En kommentar til XML

Jeg tror ikke lige det er den rette løsning her. Det er rigtig, at XML skiller repræsentationen og teksten i to. Men da det er teksten, som vi er interesseret i, er der ikke meget at hente i XML. Hvis problemstillingen havde været en anden og det havde været én tekst, som skulle bruges i mange forskellige repræsentationer, så ville det virke. Men dette er det modsatte. Mange forskellige tekster, der skal bruges i den samme repræsentation.

JiveFive
Avatar billede jakobandersen Nybegynder
14. juni 2001 - 23:24 #8
XML løsningen er ikke så svær men på den anden side kræver det at dine \"redaktører\" tør rode med XML filer som kan virke noget uoverskuelige. Men sig til hvis jeg skal lave en lille XMLfil og et udtræk af den.

Ellers brug en database og generer HTML filer med et interval på x afhængig af opdateringsfrekvensen.

Avatar billede orca Nybegynder
14. juni 2001 - 23:27 #9
>januskh

Hvor mange sider skulle der være på denne webside? Hvis det drejer sig om få så kunne man vel lave en tabel til hvert sprog. hver tabel indeholder så de siders kode som kræves. Hvis der er flere sider, så er det jo blevet bragt på banen at definere variabler til hvert sprog/sætning. Hvorfor så ikke bare gemme sætningerne i en database og så hente dem ud?

Orca
Avatar billede carpediem Nybegynder
15. juni 2001 - 09:12 #10
Jeg ville gøre det ved hjælp af global.asa
Alle dine tekststrenge skal stå under SUB Application_OnStart
Her ville jeg så lave:
Application(\"Tekst1\") = \"Velkommen\"
Application(\"Tekst2\") = \"Dette er en side....\"
Osv
Osv
Osv

Og på selve siden ville jeg så bare kalde de enkelte application variabler f.eks.

<HTML>
<HEAD>
</HEAD>
<BODY>
<CENTER><%=Application(\"Tekst1\")%></CENTER><BR>
<CENTER><%=Application(\"Tekst2\")%></CENTER>
</BODY>
</HTML>
Avatar billede mesterlars Nybegynder
15. juni 2001 - 10:07 #11
carpediem.. det er da en lidt underlig løsning.

Han kan da ligeså godt skrive variablerne i en include fil så, istedet for at operere med Application variabler.

Ved din løsning skal han også genstarte webserveren hver gang han skriver ny tekst...
Avatar billede carpediem Nybegynder
15. juni 2001 - 11:21 #12
Mesterlars>> Hvis du gemmer i en include fil, hvordan kan du så vide hvor de enkelte tekster skal være. Jeg vil gerne se et eksempel på hvordan du vil gøre det med en include fil.

Det er ikke nødvendigt at genstarte serveren. Man skal bare gemme global.asa igen, hvilket man jo naturligt gør, når man har rettet i den.(Hvis man har ændret en af teksterne) Og på denne måde skal man ikke bruge ressourcer på at indlæse teksterne hver gang en side bliver kaldt.

Denne løsning er også nem at udbygge med flere sprogvarianter på samme sider.
Hvis du f.eks. vælger dansk laver du en sessionvariabel til den bruger der hedder: Session(\"Lang\") = \"DK\", vælger brugeren engelsk er din session variabel: Session(\"Lang\") = \"UK\", så vil din kode se således ud:

Application(\"Tekst1_DK\") = \"Velkommen\"
Application(\"Tekst2_DK\") = \"Dette er en side....\"
Application(\"Tekst1_UK\") = \"Welcome\"
Application(\"Tekst2_UK\") = \"This is a site....\"
Osv
Osv
Osv

Og på selve siden ville jeg så bare kalde de enkelte application variabler f.eks.

<HTML>
<HEAD>
</HEAD>
<BODY>
<CENTER><%=Application(\"Tekst1_\" & Session(\"Lang\"))%></CENTER><BR>
<CENTER><%=Application(\"Tekst2_\" & Session(\"Lang\"))%></CENTER>
</BODY>
</HTML>
Avatar billede jakobandersen Nybegynder
15. juni 2001 - 14:21 #13
Arghh.. to many application vars application must go down...
Avatar billede carpediem Nybegynder
15. juni 2001 - 14:28 #14
moonduck>> Det har jeg ikke set endnu. Og jeg har lavet tresprogede versioner af komplette intranets på denne måde.
Avatar billede carpediem Nybegynder
15. juni 2001 - 14:35 #15
moonduck>> For at nævne en enkelt, så har den tre sprogvarianter af 187 tekster, hvilket vil sige 561 application variabler blot til tekst og det har ikke givet nogen problemer overhovedet.
Avatar billede jakobandersen Nybegynder
15. juni 2001 - 14:55 #16
Hvor mange unikke hits per time?
Avatar billede carpediem Nybegynder
15. juni 2001 - 14:58 #17
Det er ligegyldigt. Det er ikke sessionvariabler, men application variabler og de bliver jo kun konstrueret første gang siden åbnes.
Avatar billede carpediem Nybegynder
15. juni 2001 - 15:02 #18
Skulle have været:
Det er vel ligegyldigt?
Avatar billede jakobandersen Nybegynder
15. juni 2001 - 15:10 #19
Ok, du har ret det er ikke en dræber, men det virker bare unødvendigt at gemme data der kun skal bruges på en side her. Jeg vil stadig foretrække en autogenerering af HTML filer ud fra en database.
Avatar billede jpk Nybegynder
15. juni 2001 - 15:16 #20
XML kan sagtens komme til sin ret selvom der ikke er tale om forskellige måder at repræsentere indholdet på (...endnu, det kunne jo være der skulle udvides med personlige indstillinger...).
Faktisk ville det være en pæn løsning med ét XML-dokument pr. sprog og så et fælles stylesheet til at formatere outputtet...
Avatar billede januskh Nybegynder
15. juni 2001 - 17:07 #21
jpk>> Jeg tror også, at løsningen går hen og bliver en XML fil. Men er der nogen, som har nogen henvisninger til hvorledes dette kunne laves... Altså det jeg hentyder til er... hvordan kan jeg læse værdierne ud af en XML fil?
Avatar billede jpk Nybegynder
15. juni 2001 - 18:07 #22
Du kan fx have et dokument der ser sådan ud (menu.xml):

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"menu.xsl\"?>

<MENU>
        <SUBMENU name=\"Buzzwords\">
                <MENUITEM name=\"Søg...\" level=\"all\">
                        <TODO file=\"User/searchBuzzword.html\" target=\"search\"/>
                        <TODO file=\"User/searchBuzzword.asp\" target=\"content\"/>
                </MENUITEM>
                <MENUITEM name=\"Foreslå buzzword\" level=\"user\">
                        <TODO file=\"User/suggestBuzzword.asp\" target=\"content\"/>
                        <TODO file=\"User/searchBuzzword.html\" target=\"search\"/>
                </MENUITEM>
                <MENUITEM name=\"Godkend\" level=\"adm\">
                        <TODO file=\"Admin/acceptBuzzword.asp\" target=\"content\"/>
                        <TODO file=\"User/searchBuzzword.html\" target=\"search\"/>
                </MENUITEM>
                <MENUITEM name=\"Tilføj\" level=\"adm\">
                        <TODO file=\"Admin/addBuzzword.asp\" target=\"content\"/>
                        <TODO file=\"User/searchBuzzword.html\" target=\"search\"/>
                </MENUITEM>
        </SUBMENU>

        <SUBMENU name=\"Forum\">
                <MENUITEM name=\"Vis debatindlæg\" level=\"all\">
                        <TODO file=\"User/searchArticle.asp\" target=\"content\"/>
                        <TODO file=\"User/searchArticle.html\" target=\"search\"/>
                </MENUITEM>
                <MENUITEM name=\"Opret debatindlæg\" level=\"all\">
                        <TODO file=\"User/makeArticle.html\" target=\"content\"/>
                        <TODO file=\"User/searchArticle.html\" target=\"search\"/>
                </MENUITEM>
               
        </SUBMENU>

        <SUBMENU name=\"Om..\">
                <MENUITEM name=\"Buzzwords.dk\" level=\"all\">
                        <TODO file=\"User/aboutBuzzwords.xml\" target=\"content\"/>
                </MENUITEM>
                <MENUITEM name=\"Ecarisma\" level=\"all\">
                        <TODO file=\"User/aboutEcarisma.xml\" target=\"content\"/>
                </MENUITEM>
                <MENUITEM name=\"Tip en ven\" level=\"all\">
                        <TODO file=\"User/tipAFriend.asp\" target=\"content\"/>
                </MENUITEM>
                <MENUITEM name=\"Vejledning\" level=\"adm\">
                        <TODO file=\"Admin/Manual.asp\" target=\"content\"/>
                </MENUITEM>               
        </SUBMENU>
</MENU>





Dette beskriver udelukkende menuens indhold, ikke dens udseende.
Layoutet definerer du i et XSL-stylesheet (menu.xsl):






<?xml version=\"1.0\" encoding=\'ISO-8859-1\'?>
<xsl:stylesheet type=\"text/xsl\" xmlns:xsl=\"http://www.w3.org/TR/WD-xsl\">
<xsl:template match=\"/\">

<HTML>
<HEAD>
    <TITLE>Show</TITLE>
    <LINK rel=\"stylesheet\" type=\"text/css\" href=\"Stylesheet/layout.css\"/>

<SCRIPT language=\"JavaScript\">
<xsl:comment><![CDATA[

document.onclick = doOutline;

function doOutline()
{
  var srcElement, targetElement;
  srcElement = window.event.srcElement;

  if(srcElement.className == \"subMenu\")
  {
        srcElement = srcElement.id;
        srcElement = srcElement.substr(0, srcElement.length-1);
        targetElement = document.all(srcElement);

        if(targetElement.style.display == \"none\")
        {
            targetElement.style.display = \"\";
        }
        else
        {
            targetElement.style.display = \"none\";
        }
    }
}

]]></xsl:comment>
</SCRIPT>

</HEAD>
<BODY>
<BR/><BR/><BR/>
</BODY>
</HTML>

<TABLE width=\"124\" align=\"center\" bgcolor=\"#556688\" border=\"0\" cellpadding=\"0\"><TR><TD>
    <xsl:for-each select=\"MENU/SUBMENU\">

        <SPAN class=\"subMenu\"><xsl:attribute name=\"id\"><xsl:eval>\"sub\" +
            formatIndex(childNumber(this), \"1\") + \"sm\"</xsl:eval></xsl:attribute>
        <xsl:value-of select=\"@name\"/></SPAN><BR/>

        <TABLE class=\"zMenu\" style=\"display:block\" ><xsl:attribute name=\"id\"><xsl:eval>\"sub\" +
            formatIndex(childNumber(this), \"1\") + \"s\"</xsl:eval></xsl:attribute>

            <xsl:for-each select=\"MENUITEM\">
                <TR>
                    <TD width=\"7\"></TD>
                    <TD class=\"menuItem\">
                    <xsl:attribute name=\"onclick\">
                        <xsl:for-each select=\"TODO\">
                        <xsl:eval>\"parent.\"</xsl:eval><xsl:value-of select=\"@target\"/><xsl:eval>\".document.URL = \'\"</xsl:eval><xsl:value-of select=\"@file\"/><xsl:eval>\"\';\"</xsl:eval>
                        </xsl:for-each>
                        </xsl:attribute><xsl:value-of select=\"@name\"/><BR/>
                    </TD>
                </TR>               
            </xsl:for-each>

        </TABLE>

        </xsl:for-each>
</TD></TR></TABLE>

    </xsl:template>
</xsl:stylesheet>


Dette kan så, som her, yderligere benytte et stylesheet (layout.css):
(bemærk: dette stylesheet definerer flere styles, end der bruges her...)

BODY
{
        BACKGROUND-COLOR: #333333;
        COLOR: white;
        VLINK:green;
        ALINK:black;
        TEXT-DECORATION:none;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
        BACKGROUND-IMAGE: url(..\\Grafik\\bg1.jpg);
        BACKGROUND-ATTACHMENT:FIXED
}
.textStyle
{
        COLOR: #ddddbc;
        VLINK:green;
        ALINK:black;
        TEXT-DECORATION:none;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 9pt;
}
.-Style
{
    BACKGROUND-COLOR: brown;
    COLOR: white
}
.menu
{
    BACKGROUND-COLOR: #335577;
}
.yStyle
{
    BACKGROUND: yellow;
    BORDER-LEFT: medium none;
    BORDER-RIGHT: medium none;
    BORDER-TOP: medium none;
    FONT-FAMILY: MS Sans Serif;
    FONT-SIZE: 10pt;
    TEXT-ALIGN: right;
    WIDTH: 100px
}
.wStyle
{
    BORDER-LEFT: medium none;
    BORDER-RIGHT: medium none;
    BORDER-TOP: medium none;
    FONT-FAMILY: Verdana;
        FONT-COLOR: #AA0000;
    FONT-SIZE: 10pt;
    TEXT-ALIGN: right
}
.lStyle
{
    BORDER-LEFT: medium none;
    BORDER-RIGHT: medium none;
    BORDER-TOP: medium none;
    FONT-FAMILY: Verdana;
    FONT-SIZE: 10pt;
        COLOR: Blue;
    TEXT-ALIGN: left
}
.tStyle
{
    BACKGROUND: goldenrod;
    BORDER-BOTTOM: medium none;
    BORDER-LEFT: medium none;
    BORDER-RIGHT: medium none;
    BORDER-TOP: medium none;
    FONT-FAMILY: MS Sans Serif;
    FONT-SIZE: 10pt;
    FONT-WEIGHT: bold;
    TEXT-ALIGN: right;
    WIDTH: 100px
}
.wordStyle
{
        BORDER-LEFT: medium none;
        BORDER-RIGHT: medium none;
        BORDER-TOP: medium none;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
            FONT-WEIGHT: bold;
            COLOR: #bbbb33;
        TEXT-ALIGN: left
            CURSOR: hand;
}
.defStyle
{   
            WIDTH:400;
        BORDER-LEFT: medium none;
        BORDER-RIGHT: medium none;
        BORDER-TOP: medium none;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
            COLOR: #bbbb77;
        TEXT-ALIGN: left
}
.pageNumberStyle
{   

        BORDER-LEFT: medium none;
        BORDER-RIGHT: medium none;
        BORDER-TOP: medium none;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
            COLOR: #bbbb99;
        TEXT-ALIGN: left
}
.searchLetterStyle
{   
        FONT-FAMILY: Verdana;
        FONT-SIZE: 7pt;
            COLOR: #bbbb99;
        TEXT-ALIGN: left
}
.colorStyle
{
        COLOR: #555555;
}
.subMenu
{
        CURSOR: hand;
        COLOR: #FFFadC;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
        FONT-WEIGHT: bold;
}
.menuItem
{
        CURSOR: hand;
        COLOR: #bbbb77;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 7pt;
        FONT-WEIGHT: bold;
}
.menu
{
        WIDTH: 150;
        DISPLAY: none;
        POSITION: absolute;       
}
.mainmenuitem
{
        WIDTH: 120;
        BORDER: 0;
}
.menuitemOff
{
        WIDTH:120;
        HEIGHT:14;
    CURSOR: hand;
        FONT-FAMILY: Verdana;
      FONT-SIZE: 7pt;
        FONT-WEIGHT: bold;
        TEXT-ALIGN: left;
        PADDING-LEFT: 5;
        COLOR: #333333;
        BORDER-LEFT: 3;
        BACKGROUND-COLOR: #beb74b;
}
.menuitemOn
{
        WIDTH:120;
        HEIGHT:14;
    CURSOR: hand;
        FONT-FAMILY: Verdana;
      FONT-SIZE: 7pt;
        FONT-WEIGHT: bold;
        TEXT-ALIGN: left;
        PADDING-LEFT: 5;
        COLOR: #beb74b;
        BACKGROUND-COLOR: #333333;
        BORDER-LEFT:1 solid #beb74b;
        BORDER-RIGHT:1 solid #beb74b;
}
.area
{
        BACKGROUND-COLOR: #556688;
        BORDER-COLOR: #777777;
        COLOR: #ffffff;
        BORDER: 0px;   
        WIDTH:400;
}
.searchArea
{
        BACKGROUND-COLOR: #556688;
        BORDER-COLOR: #777777;
        COLOR: #ffffff;
        BORDER: 0px;
        WIDTH: 140px;
}
.button
{
        CURSOR: hand;
}
TH
{
        CURSOR: hand;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
        FONT-WEIGHT: bold;
        COLOR: #333333;
        TEXT-ALIGN: left;
        PADDING-LEFT: 5;
}
TD
{
        BORDER-BOTTOM: 0pt solid;
        FONT-SIZE: 10pt;
}
INPUT
{
        BORDER-BOTTOM: medium none;
        BORDER-COLOR: #333333;
}
BUTTON
{
        BACKGROUND-COLOR: #AAAA66;
        COLOR: #333333;
        FONT-WEIGHT: bolder;
        WIDTH:80;
        CURSOR:hand
}
.topTenTable
{   
        BACKGROUND-COLOR:#556688;
        COLOR: black;
        FONT-FAMILY: Verdana;
          FONT-SIZE: 8pt;
        FONT-WEIGHT: NONE;
        TEXT-DECORATION:none;
        WIDTH:200;
        TEXT-ALIGN: left;
        CURSOR:HAND;
}
.topTenTableHead
{   
        BACKGROUND-COLOR:#beb74b;
          COLOR: black;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
        FONT-WEIGHT: bold;
        TEXT-DECORATION:none;
        TEXT-ALIGN:center;
}
.links
{
        COLOR: #dddd66;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
        FONT-WEIGHT: bold;
        TEXT-DECORATION:none;

}
.zMenu
{
        WIDTH:120;
        HEIGHT:14;
        CURSOR: hand;
        FONT-FAMILY: Verdana;
          FONT-SIZE: 7pt;
        FONT-WEIGHT: bold;
        TEXT-ALIGN: left;
        PADDING-LEFT: 5;
       
        BACKGROUND-COLOR: #333333;
        BORDER-top:0 solid #557799;
        BORDER-BOTTOM:0 solid #557799;
        BORDER-LEFT:0 solid #557799;
        BORDER-RIGHT:0 solid #beb74b;
        background-image: url(Z:\\Grafik\\bg1.jpg);
}
.articleList
{
       
        CURSOR: hand;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 7pt;
        COLOR: white;
       

}

.articleTableHead
{   
        BACKGROUND-COLOR:#beb74b;
          COLOR: black;
        FONT-FAMILY: Verdana;
        FONT-SIZE: 10pt;
        FONT-WEIGHT: bold;
        TEXT-DECORATION:none;       
}
.fat
{
    FONT-WEIGHT: bold;
}
Avatar billede jakobandersen Nybegynder
17. juni 2001 - 18:34 #23
http://www.asp101.com og http://www.4guysfromrolla.com har haft nogle udmærkede artikler om ASP + XML
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
Kurser inden for grundlæggende programmering

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