asp classic - son - Soporte multilingüe para ASP clásico
que son las paginas aspx (2)
Tengo un cliente que me llamó esta mañana para actualizar un sitio para recibir asistencia multilingüe. El sitio es una aplicación ASP clásica, y el cliente no desea / presupuesto para reescribir es como ASP.NET (o cualquier otra cosa ...).
Hablamos sobre las dificultades con esto, pero gran parte del texto resulta ser cadenas cortas que se leen desde una base de datos y él estaría contento con solo poder traducir este texto.
Si esto no fuera ASP clásico, usaría una solución basada en GNU gettext (). Sin embargo, no he podido encontrar un equivalente para ASP clásico.
Podría agregar una tabla a su base de datos para almacenar las traducciones de cadenas, y luego solo consultar esto, pero también significaría hacer una interfaz de administrador para que pueda editar las cadenas (en lugar de simplemente editar un archivo de texto plano).
También podría crear mi propia solución de archivos planos, probablemente basada en Scripting.Dictionary , pero realmente preferiría no hacerla mía aquí.
¿Hay alguna solución alternativa aquí? Gracias.
Usamos una solución basada en XML, tenemos archivos XML con la siguiente estructura:
<?xml version="1.0" encoding="Windows-1252"?>
<resource>
<language LCID="1043" name="nederlands">
<label id="pageheader"><![CDATA[Over deze applicatie]]></label>
<label id="warning"><![CDATA[]]></label>
</language>
<language LCID="2067" name="vlaams">
<label id="pageheader">Over deze applicatie</label>
<label id="warning"><![CDATA[]]></label>
</language>
<language LCID="2057" name="english (uk)">
<label id="pageheader"><![CDATA[About this software]]></label>
<label id="warning"><![CDATA[]]></label>
<label id=""><![CDATA[]]></label>
</language>
</resource>
Elegimos que todos los directorios tuvieran su propio archivo XML, pero si no hay muchas traducciones en su sitio, podría tener un gran XML en la raíz. Sin embargo, esto tendrá un impacto en tu rendimiento. Escribimos un WSC para manejar las traducciones, así que solo podemos abrir una traducción de WSC en la parte superior de cada página ASP, y usar un método para traducir de la siguiente manera:
Al comienzo de cada página:
dim translate
set translate = GetObject("script:"&Server.MapPath("/~components/DLL/Translation.wsc"))
call translate.OpenWithLCID(session.LCID)
En el HTML:
<%= translate.label("systemerror") %>
Al final de la página:
call translate.close()
set translate = nothing
El impacto en el rendimiento es mínimo; solo asegúrese de que en su función obtenga una traducción, salga del ciclo y devuelva el valor tan pronto como encuentre el nodo XML correspondiente. Cometimos este error al principio, lo que resultó en que se procesara el archivo XML completo cuando llamamos a Translate.label ().
Mi solución probablemente signifique que tendrá que averiguar sobre el uso de WSC en ASP, pero una vez que comience a usarlos, nunca querrá volver atrás. Soluciona completamente el código de spaghetti en ASp y permite la separación de preocupaciones y la reutilización del código.
HTH, Erik Espero que esto ayude
tal vez algo como babelfish