2010-06-15 3 views
0

Je veux consulter sur quelque chose que je fais.Site Web multilingue utilisant ASP et une base de données

mon site web dispose de 3 langues. Hébreu (principal), anglais et russe. J'utilise une base de données ayant une table avec les champs: ID, fieldName, 1, 2, 3. où 1 2 3 sont les langues. En entrant dans la langue du site Web 1 (hébreu) ​​est choisi automatiquement jusqu'à ce que vous en choisissiez un autre. et enregistré en tant que session("currentLanguage").

i a écrit une fonction langstirng whice un nom recieves de champ et imprime la valeur acording à la langue dans session("currentLanguage"):

Dim languageStrings 
Set languageStrings = Server.CreateObject("ADODB.Recordset") 
languageStrings.ActiveConnection = MM_KerenDB_STRING 
languageStrings.Source = "SELECT fieldName,"&current_Language&"FROM Multilangual" 
languageStrings.CursorType = 0 
languageStrings.CursorLocation = 2 
languageStrings.LockType = 1 
languageStrings.Open() 

sub langstring(fieldName) 
    do while NOT(languageStrings.EOF) 
     if (languageStrings.fields.item("fieldName").value = fieldName) then 
      exit do 
     else 
      languageStrings.movenext 
     end if 
    loop 

if (languageStrings.EOF) then 
    response.Write("***"&fieldName&"***") 
else 
    response.Write(languageStrings.fields.item(currentLanguage+1).value) 
end if 
    languageStrings.movefirst 
end sub 

et je l'utilise comme ceci: <div>langstring("header")</div>. Je trouve stupide de continuer à envoyer la requête au serveur sur n'importe quelle page. puisque la table multilangue ne change pas "QUE" souvent je veux sauver en quelque sorte le jeu d'enregistrements pour la navigation courante.

Je cherche de l'aide pour CETTE solution, s'il vous plaît.

Répondre

1

Si elles ne changent pas très souvent, pourquoi ne pas simplement vider les chaînes dans un fichier .asp?

Ce fichier peut être réécrit chaque fois que vous avez apporté des modifications à la base de données.

Une autre option serait de mettre en cache les chaînes en mémoire en utilisant quelque chose comme Caprock.Dictionary

0

Une autre option serait si vous voulez stocker les langues dans une table séparée, puis utiliser une jointure déclaration pour tirer cette information sur la base de le cookie ou la session auquel la langue est définie.

Ensuite, vous ne devez jamais vérifier la langue et créer la combobox comme cela vous auriez juste une liste déroulante html avec des valeurs de l'ID unique de la langue dans la table.

Questions connexes