From Fedora Project Wiki
m (Arquitectura)
m (Minor change)
 
(9 intermediate revisions by the same user not shown)
Line 45: Line 45:


==== i18n ====
==== i18n ====
We use the Genshi framework for internationalization. Our current templates need to have special markup around the strings in order to mark them as translatable.
Utilizamos el framework Genshi para la internacionalización. Nuestras plantillas actuales necesitan tener un markup especial alrededor de las cadenas para marcarlas como traducibles.


There are several way to use the markups.  
Hay varias formas de utilizar los markups.


# <code>${_('String')}</code>
# <code>${_('String')}</code>
Line 55: Line 55:
# <code><nowiki>${Markup(_('If you think you\'ve found a bug, read &lt;a href="%s"&gt;here&lt;/a&gt; fist.') % ('http://fedoraproject.org/wiki/Common_F'+global_variables.release['prev_id']+'_bugs'))}</nowiki></code>
# <code><nowiki>${Markup(_('If you think you\'ve found a bug, read &lt;a href="%s"&gt;here&lt;/a&gt; fist.') % ('http://fedoraproject.org/wiki/Common_F'+global_variables.release['prev_id']+'_bugs'))}</nowiki></code>


Fist you have the simplest example. Then the markup that could be used everywhere (it works with embedded html code, not as the first one). Then, you have an example using a variable. That is really useful in order to avoid having translators to translate again the string when changing the variable. The last example is a most complete one which shows you how to deal with multiple variables. The translator will be able to change the variable order using it's name.
Primero tienes el ejemplo más sencillo. Luego, el markup que podría usarse en todas partes (funciona con código html incorporado, no como el primero). Entonces, tienes un ejemplo usando una variable. Eso es realmente útil para evitar que los traductores vuelvan a traducir la cadena al cambiar la variable. El último ejemplo es el más completo que le muestra cómo lidiar con múltiples variables. El traductor podrá cambiar el orden de las variables usando su nombre.


To test that you haven't missed anything (for example you need to escape the simple quote from the string), try with <code>make en test</code> in order to build the website for the <code>en</code> language.
Para probar que no hace falta nada (por ejemplo, necesita evitar la simple comillas de la cadena), intente con <code>make en test</code> para construir el sitio web para el idioma <code>en</code>.


Once it's correct, you need to generate the new translation template file (POT) with <code>make pot</code>.
Una vez que sea correcto, debe generar el nuevo archivo de plantilla de traducción (POT) con code>make pot</code>.


For general information about Genshi templates, see:
Para información general sobre las plantillas de Genshi, vea:
* http://genshi.edgewall.org/wiki/Documentation, and in particular,
* http://genshi.edgewall.org/wiki/Documentation, y en particular,
* http://genshi.edgewall.org/wiki/Documentation/xml-templates.html
* http://genshi.edgewall.org/wiki/Documentation/xml-templates.html


===== Variables =====
===== Variables =====
As described in the examples above, you will note there are a lot of variables instead of hard codes. These variables have been set to make it easier to update our webpages. When merging from one branch to the next, i.e. from beta to final release, all the content of our pages can be updated by editing simply one single file, where all the variables are defined.<br />
Como se describe en los ejemplos anteriores, notará que hay muchas variables en lugar de codificación. Estas variables se han configurado para facilitar la actualización de nuestras páginas web. Cuando se fusiona de una rama a la siguiente, es decir, de la versión beta a la versión final, se puede actualizar todo el contenido de nuestras páginas mediante la edición de un solo archivo, donde se definen todas las variables. <br/>
This file actually is used in the sites of ''fedoraproject.org'' and in ''spins.fedoraproject.org'' and is located in <code>~/build.d/globalvar.py</code>
Este archivo se usa en realidad en los sitios ''fedoraproject.org'' y en ''spins.fedoraproject.org'' y se encuentra en <code>~/build.d/globalvar.py</code>


=== l10n ===
=== l10n ===
All POs are download twice a day. Any error should be reported to our [https://fedorahosted.org/fedora-websites/newticket tracking system].
Todas las archivos POs se descargan dos veces al día. Cualquier error debe informarse a nuestro [https://fedorahosted.org/fedora-websites/newticket sistema de rastreo].
We download only the files translated at least at 10%. Please note that you won't be able to proofread only if you didn't get so far. This value is in the [http://git.fedorahosted.org/cgit/fedora-web.git/tree/Makefile.in#n66 Makefile.in] for the local test and in puppet/syncTranslation.sh for the online websites.
Descargamos solo los archivos traducidos al menos al 10%. Tenga en cuenta que no podrá realizar la revisión solo si no ha llegado tan lejos. Este valor se encuentra en [http://git.fedorahosted.org/cgit/fedora-web.git/tree/Makefile.in#n66 Makefile.in] para la prueba local y en puppet/ yncTranslation.sh para los sitios web en línea.


Whenever the HTML content change, we need to update the POT as explained on the previous section. Then, we need to push this POT to the translation platform, [http://fedora.zanata.com/ zanata.org]. This is done by the command <code>make pushpot</code>. But only the maintainers of the [https://fedora.zanata.org/project/view/fedora-web/ fedora-web] release are able to push a new POT. Ask them if you need to do so opening a new ticket or ask directly on IRC.
Siempre que cambie el contenido HTML, debemos actualizar el POT como se explica en la sección anterior. Luego, debemos enviar este POT a la plataforma de traducción, [http://fedora.zanata.com/ zanata.org]. Esto se hace con el comando <code>make pushpot</code>. Pero solo los mantenedores de la versión [https://fedora.zanata.org/project/view/fedora-web/ fedora-web] pueden subir un nuevo POT. Pregúnteles si necesita hacerlo abriendo un nuevo boleto o pregunte directamente en IRC.


In order to know if the builder is actually pulling the translations in a specific branch/website, check on the [http://git.fedorahosted.org/cgit/fedora-web.git/tree/ repo] if a file named <code>PO_FREEZE</code> exists on the website folder. This could be used while editing the Transifex POT without overriding the existing translations on production.
Para saber si el builder está realmente realizando las traducciones en una rama/sitio web específico, verifique en [http://git.fedorahosted.org/cgit/fedora-web.git/tree/ repo] si un archivo llamado <code>PO_FREEZE</code> existe en la carpeta del sitio web. Esto podría usarse mientras se edita el POT Transifex sin anular las traducciones existentes en producción.


Adding a new language is done through 4 steps:
La adición de un nuevo idioma se realiza a través de 4 pasos:
# first, create it at zanata.org by uploading a new translation on the website.
# Then, update the <code>translations.ini</code> file accordingly for local builds
# update the <code>LINGUAS</code> file (<code>tools/l10N_update.sh</code> might be of help) - for local builds
# update the local <code>httpd/conf/language.conf</code> file (by running <code>make en test</code> for example) and ask to make this change in the infra (puppet). That is probably needed as we have the same exact copy of this file there. File a ticket for that on our [https://fedorahosted.org/fedora-websites/newticket?type=enhancement&summary=adding%20new%20locale%20to%20puppet&keywords=infra,%20l10n Trac].


== Joining/helping ==
# primero, créelo en zanata.org cargando una nueva traducción en el sitio web.
Please read the [[Websites/Join]] and [[How_to_fix_bugs_on_the_Fedora_Project_website|How to fix bugs]] pages.
# Luego, actualice el archivo <code>translations.ini</code> para las compilaciones locales.
# Actualice el archivo <code>LINGUAS</code> (<code>tools/l10N_update.sh</code> puede ser de ayuda) - para builds locales.
# Actualice el archivo local <code>httpd/conf/language.conf</code> (ejecutando <code>make en test</code> por ejemplo) y solicite hacer este cambio en la infraestructura (puppet). Probablemente sea necesario ya que tenemos la misma copia exacta de este archivo allí. Presente un ticket para eso en nuestro [https://fedorahosted.org/fedora-websites/newticket?type=enhancement&summary=adding%20new%20locale%20to%20puppet&keywords=infra,%20l10n Trac].


== Actual used branches for each (sub)domain ==
== Unirse / Colaborar ==  
Por favor, lea las páginas [[Websites/Join]] y [[How_to_fix_bugs_on_the_Fedora_Project_website | Cómo corregir errores]].


All our websites in production now are built against master branch. This makes it much easier for contributors to push their commits to the right branch. Staging websites on the other hand are built against the actual developing ''release-state'' branch: this could be alpha or beta, but in some cases can also be a specific branch. In fact we use the staging (stg) branch for specific enhancements, this allows us to keep the alpha or beta branch clean.<br />
== Ramas reales utilizadas para cada (sub) dominio ==
The new workflow means we will merge every single development branch to master at D-day, as production sites are built only against master branch.<br />
 
This overview should help you to understand which git-branch is used to build a single subdomain or domain.
Todos nuestros sitios web en producción ahora están construidos contra la rama maestra. Esto hace que sea mucho más fácil para los contribuyentes enviar sus cambios a la rama correcta. Por otra parte, los sitios web de Staging se construyen contra la rama de ''release-state'' en desarrollo real: esto podría ser alfa o beta, pero en algunos casos también puede ser una rama específica. De hecho, usamos la rama de staging (stg) para mejoras específicas, esto nos permite mantener la rama alfa o beta limpia. <br/>
El nuevo flujo de trabajo significa que haremos merge de cada rama de desarrollo a la rama master de día D, ya que los sitios de producción se crean solo contra la rama maestra. <br/>
Esta descripción general debe ayudarlo a comprender qué rama de git se usa para crear un solo subdominio o dominio.


{|
{|

Latest revision as of 04:50, 8 October 2018


La arquitectura de los sitios web (build, dev and trans)

Nuestro sistema de build

Nuestros sitios web son reconstruidos cada hora. Esto se hace usando el script syncStatic que es administrado por Puppet. En otras palabras, debes estar en el equipo de infraestructura para cambiarlo. Aquí se carga una copia de muestra. Aquí es donde decidimos en qué rama construimos cada sitio web. También hay un script syncStatic.stg específico para los sitios web de staging. Ejemplo de sitios web de stg son stg.fedoraproject.org y spins.stg.fedoraproject.org

Para conocer el tiempo de publicación, consulte nuestra documentación específica. También tenemos un documento que le ayudará a no olvidar nada cuando se hace merge con la próxima versión de lanzamiento

Uso

Para crear las páginas de sitios web estáticos, puede ejecutar make desde el directorio raíz del sitio web específico. Esto construirá las páginas en todos los idiomas disponibles. Una lista de todas las traducciones existentes está disponible en el encabezado del archivo Makefile.
Este tipo de build es bastante largo, si quieres también puedes correr:

  • make LANG: construye las páginas en un idioma específico, donde LANG es la abreviatura de dos letras para la traducción.
  • make LANG test: crea una instancia de prueba en http://localhost:5000/ en un idioma específico, ejecute make stoptest para eliminarlo.
  • make test: Igual que el anterior, creará una instancia de prueba para todos los idiomas disponibles.

Codificación

Muchos de nuestros sitios web utilizan el Bootstrap sistema Bootstrap, por lo que verá muchos divs en nuestros archivos fuente HTML. Es posible que desee ver una explicación.

Arquitectura

El repositorio web de fedora(fedora-web) se parece a lo siguiente (en su mayoría, todos los sitios web utilizan el mismo árbol que boot.fedoraproject.org).

  .
  |-- boot.fedoraproject.org
  |   |-- data
  |   |-- Makefile
  |   |-- po
  |   -- static
  |-- build.d
  |   |-- buildconf.py
  |   |-- build.py
  |   |-- construct-translations.py
  |   |-- globalvar.py
  |   |-- pybabel.cfg
  |   -- translations.ini
  …
  |-- httpd
  |-- Makefile.in
  `-- tools

Cada directorio de sitios web consiste en una carpeta data con código HTML, mientras que todos los códigos estáticos (JS, imágenes, CSS ...) están en carperta static. Algunos sitios web utilizan archivos de construcción específicos en el directorio build, si los hay. build.d contiene los scripts de construcción de python y la plantilla de Genshi, así como el nombre del idioma localizado para cada idioma. La carpeta httpd contiene archivos apache independientes para probar localmente nuestros sitios web. tools es el lugar para el script manual que ejecutamos de vez en cuando. Para actualizar el archivo LINGUAS, o consultar los sitios web ..

i18n

Utilizamos el framework Genshi para la internacionalización. Nuestras plantillas actuales necesitan tener un markup especial alrededor de las cadenas para marcarlas como traducibles.

Hay varias formas de utilizar los markups.

  1. ${_('String')}
  2. ${Markup(_('String with &gt; html code'))}
  3. ${Markup(_('String with a &lt;a href="%s"&gt;link&lt;/a&gt;') % 'http://fedoraproject.org')}
  4. ${_('%(size)s, DVD ISO disc image for %(arch)s-bit PC') % {'size':'3.1 GB', 'arch':'32'}}
  5. ${Markup(_('If you think you\'ve found a bug, read <a href="%s">here</a> fist.') % ('http://fedoraproject.org/wiki/Common_F'+global_variables.release['prev_id']+'_bugs'))}

Primero tienes el ejemplo más sencillo. Luego, el markup que podría usarse en todas partes (funciona con código html incorporado, no como el primero). Entonces, tienes un ejemplo usando una variable. Eso es realmente útil para evitar que los traductores vuelvan a traducir la cadena al cambiar la variable. El último ejemplo es el más completo que le muestra cómo lidiar con múltiples variables. El traductor podrá cambiar el orden de las variables usando su nombre.

Para probar que no hace falta nada (por ejemplo, necesita evitar la simple comillas de la cadena), intente con make en test para construir el sitio web para el idioma en.

Una vez que sea correcto, debe generar el nuevo archivo de plantilla de traducción (POT) con code>make pot.

Para información general sobre las plantillas de Genshi, vea:

Variables

Como se describe en los ejemplos anteriores, notará que hay muchas variables en lugar de codificación. Estas variables se han configurado para facilitar la actualización de nuestras páginas web. Cuando se fusiona de una rama a la siguiente, es decir, de la versión beta a la versión final, se puede actualizar todo el contenido de nuestras páginas mediante la edición de un solo archivo, donde se definen todas las variables.
Este archivo se usa en realidad en los sitios fedoraproject.org y en spins.fedoraproject.org y se encuentra en ~/build.d/globalvar.py

l10n

Todas las archivos POs se descargan dos veces al día. Cualquier error debe informarse a nuestro sistema de rastreo. Descargamos solo los archivos traducidos al menos al 10%. Tenga en cuenta que no podrá realizar la revisión solo si no ha llegado tan lejos. Este valor se encuentra en Makefile.in para la prueba local y en puppet/ yncTranslation.sh para los sitios web en línea.

Siempre que cambie el contenido HTML, debemos actualizar el POT como se explica en la sección anterior. Luego, debemos enviar este POT a la plataforma de traducción, zanata.org. Esto se hace con el comando make pushpot. Pero solo los mantenedores de la versión fedora-web pueden subir un nuevo POT. Pregúnteles si necesita hacerlo abriendo un nuevo boleto o pregunte directamente en IRC.

Para saber si el builder está realmente realizando las traducciones en una rama/sitio web específico, verifique en repo si un archivo llamado PO_FREEZE existe en la carpeta del sitio web. Esto podría usarse mientras se edita el POT Transifex sin anular las traducciones existentes en producción.

La adición de un nuevo idioma se realiza a través de 4 pasos:

  1. primero, créelo en zanata.org cargando una nueva traducción en el sitio web.
  2. Luego, actualice el archivo translations.ini para las compilaciones locales.
  3. Actualice el archivo LINGUAS (tools/l10N_update.sh puede ser de ayuda) - para builds locales.
  4. Actualice el archivo local httpd/conf/language.conf (ejecutando make en test por ejemplo) y solicite hacer este cambio en la infraestructura (puppet). Probablemente sea necesario ya que tenemos la misma copia exacta de este archivo allí. Presente un ticket para eso en nuestro Trac.

Unirse / Colaborar

Por favor, lea las páginas Websites/Join y Cómo corregir errores.

Ramas reales utilizadas para cada (sub) dominio

Todos nuestros sitios web en producción ahora están construidos contra la rama maestra. Esto hace que sea mucho más fácil para los contribuyentes enviar sus cambios a la rama correcta. Por otra parte, los sitios web de Staging se construyen contra la rama de release-state en desarrollo real: esto podría ser alfa o beta, pero en algunos casos también puede ser una rama específica. De hecho, usamos la rama de staging (stg) para mejoras específicas, esto nos permite mantener la rama alfa o beta limpia.
El nuevo flujo de trabajo significa que haremos merge de cada rama de desarrollo a la rama master de día D, ya que los sitios de producción se crean solo contra la rama maestra.
Esta descripción general debe ayudarlo a comprender qué rama de git se usa para crear un solo subdominio o dominio.

Domain Branch
getfedora.org master
spins.fedoraproject.org master
labs.fedoraproject.org master
arm.fedoraproject.org master
stg.getfedora.org f24-beta
spins.stg.fedoraproject.org f24-beta
labs.stg.fedoraproject.org f24-beta
arm.stg.fedoraproject.org f24-beta
fudcon.fedoraproject.org master
boot.fedoraproject.org master
fedoracommunity.org master
fadorahosted.org master
fedorapeople.org master
flocktofedora.org master
start.fedoraproject.org master