Internacionalizar y localizar un sitio son formas fantásticas de ampliar su audiencia y garantizar que todos los visitantes puedan acceder a la información que necesitan. Sin embargo, esto a menudo conlleva una penalización de rendimiento. A continuación se muestran algunas estrategias que puede emplear para reducir la sobrecarga de i18n y l10n.
No todos los adaptadores de traducción son iguales. Algunos tienen más características que otros, y algunos rinden mejor que otros. Además, puede tener requisitos de negocio que le obliguen a usar un adaptador en particular. Sin embargo, si tiene posibilidad de elegir, ¿qué adaptadores son los más rápidos?
Zend Framework se distribuye con una variedad de adaptadores de traducción. La mitad de ellos utilizan un formato XML, lo que implica una sobrecarga de memoria y rendimiento. Afortunadamente, hay varios adaptadores que utilizan otros formatos que pueden analizarse mucho más rápidamente. En orden de velocidad, de más rápido a más lento, son:
Array: este es el más rápido, ya que, por definición, se analiza en un formato nativo de PHP inmediatamente al incluirse.
CSV: usa
fgetcsv()para analizar un archivo CSV y transformarlo en un formato nativo de PHP.INI: usa
parse_ini_file()para analizar un archivo INI y transformarlo en un formato nativo de PHP. Este y el adaptador CSV son aproximadamente equivalentes en rendimiento.Gettext: el adaptador gettext de Zend Framework no utiliza la extensión gettext ya que no es segura para hilos y no permite especificar más de una configuración regional por servidor. Como resultado, es más lento que usar la extensión gettext directamente, pero, debido a que el formato gettext es binario, es más rápido de analizar que XML.
Si el alto rendimiento es una de sus preocupaciones, le sugerimos utilizar uno de los adaptadores anteriores.
Tal vez, por razones de negocio, esté limitado a un adaptador de traducción basado en XML. O tal vez le gustaría acelerar las cosas aún más. O tal vez quiera hacer más rápidas las operaciones de l10n. ¿Cómo puede hacer esto?
Tanto Zend_Translate como Zend_Locale
implementan una funcionalidad de caché que puede afectar en gran medida
el rendimiento. En cada caso, el cuello de botella principal
suele ser la lectura de los archivos, no las búsquedas en sí; usar una
caché elimina la necesidad de leer los archivos de traducción y/o
localización.
Puede leer sobre el almacenamiento en caché de las cadenas de traducción y localización en los siguientes lugares: