Antecedentes¿La forma en que traducimos nuestro sitio web genera problemas de rendimiento?
Nuestro sitio es un sitio de prensa y es visto por muchas personas en todo el mundo. Obviamente, esto significa que localizaremos el sitio en la mayor cantidad de idiomas posible. Se contratará un traductor profesional para cada idioma.
Cómo funciona nuestro sitio Actualmente
La forma en que hemos planeado para hacer esto es mediante el almacenamiento de una traducción para cada elemento de la página en la base de datos vinculada por un GUID. Por lo tanto, cuando la página se carga, las cadenas se extraen de la base de datos utilizando la Guía y las preferencias de idioma del usuario.
Tenemos varios documentos en nuestro proyecto que contienen traducciones al inglés. Como este:
public class StandardButtonToken : LocalisationToken
{
protected StandardButtonToken(string defaultText, Guid key) : base(defaultText, key)
{
}
public static readonly LocalisationToken Update = new StandardButtonToken("Update", Guid.Parse("8a999f5b-7ca1-466d-93ca-377321e6de00"));
public static readonly LocalisationToken Go = new StandardButtonToken("Go", Guid.Parse("7a013ecc-0772-4f87-9f1f-da6a878a3c99"));
public static readonly LocalisationToken Edit = new StandardButtonToken("Edit", Guid.Parse("c31be427-5016-475d-997a-96fa5ff8b51f"));
public static readonly LocalisationToken New = new StandardButtonToken("New", Guid.Parse("f72d365c-b18f-4f01-a6e4-b0cd930dc730"));
public static readonly LocalisationToken More = new StandardButtonToken("More", Guid.Parse("bd4da7df-afd2-481e-b6b6-b4a989324758"));
public static readonly LocalisationToken Delete = new StandardButtonToken("Delete", Guid.Parse("ab00ec14-4414-4cda-a8e2-4f03c9e7c5a8"));
public static readonly LocalisationToken Add = new StandardButtonToken("Add", Guid.Parse("01e44600-a556-4a07-8a2a-e69a1ea79629"));
public static readonly LocalisationToken Confirm = new StandardButtonToken("Confirm", Guid.Parse("4c50e91e-3e2f-42fa-97aa-9f1f6f077f09"));
public static readonly LocalisationToken Send = new StandardButtonToken("Send", Guid.Parse("24121766-f424-4d73-ac58-76f90d58b95c"));
public static readonly LocalisationToken Continue = new StandardButtonToken("Continue", Guid.Parse("dd2ca0e5-8a35-4128-b2e8-db68a64a6fe5"));
public static readonly LocalisationToken OK = new StandardButtonToken("OK", Guid.Parse("9a359f93-7c23-44ad-b863-e53c5eadce90"));
public static readonly LocalisationToken Accept = new StandardButtonToken("Accept", Guid.Parse("3206a76b-1cd7-4dc3-9fff-61dfb0992c75"));
public static readonly LocalisationToken Reject = new StandardButtonToken("Reject", Guid.Parse("f99c6a9c-6a55-4f55-ac4b-9581e56d18d3"));
public static readonly LocalisationToken RequestMoreInfo = new StandardButtonToken("Request more info", Guid.Parse("19f3d76b-dafa-47ae-8416-b7d61546b03d"));
public static readonly LocalisationToken Cancel = new StandardButtonToken("Cancel", Guid.Parse("75617287-5418-466b-9373-cc36f8298859"));
public static readonly LocalisationToken Publish = new StandardButtonToken("Publish", Guid.Parse("efd87fd4-e7f1-4071-9d26-a622320c366b"));
public static readonly LocalisationToken Remove = new StandardButtonToken("Remove", Guid.Parse("f7db5d81-5af8-42bf-990f-778df609948e"));
}
Cada vez que creamos una página nos aseguramos de que los botones utilizan estos símbolos en lugar de escribir manualmente el texto. Entonces, si decidimos que necesitamos un nuevo botón, agregaremos un nuevo token en el siguiente archivo y cuando el sitio se ejecute por primera vez, se comprobará si existe en la base de datos y, de no ser así, se creará.
Por lo tanto, en lo que se refiere a la traducción, enviaremos estos tokens a los traductores y solo cambiarán el texto. Esto se agregará al sitio en el idioma correspondiente y la página llamará a la traducción correcta en función del idioma seleccionado.
problema/pregunta
Nuestros signos traducción tiene el texto predeterminado como cadenas, pero estoy preocupado de que el servidor tiene que cargar todas estas cadenas de texto en la memoria en el arranque. En realidad, solo se usan para almacenar la traducción en el DB y nunca se usan en el código, por lo que creo que podría ser un desperdicio. En cambio, creo que podríamos llamar estas traducciones por separado cuando sea necesario, quizás desde algún tipo de tabla de búsqueda que no esté en la memoria.
Así que la pregunta es. ¿La forma en que estamos haciendo esto va a causar problemas de rendimiento?
Si es así, ¿alguien puede sugerir alguna solución mejor?
En total hay 1000 de estos tokens en nuestro sitio.
Google no me ha sido muy útil en esta ocasión, por lo que cualquier consejo sería muy apreciado. He intentado tan duro como puedo decir esto para que tenga sentido. No es fácil de explicar.
Gracias de antemano por cualquier ayuda que puedan proporcionar las personas.
por qué no intenta utilizar ** recursos ** archivos ... vea esto (http://msdn.microsoft.com/en-us/magazine/cc163566.aspx) – Yasser
Desafortunadamente los archivos de recursos no son una opción como tenemos que ser capaces de cambiar cosas sobre la marcha y no tener que volver a compilar. –
según entiendo de wat que leo ... necesita localización para los botones ¿no? – Yasser