freeCodeCamp/docs/i18n/espanol/how-to-translate-files.md

20 KiB
Raw Blame History

Cómo traducir recursos de freeCodeCamp

Prepárate para las contribuciones

The freeCodeCamp Localization Roadmap There Are No Speed Limits

[!TIP] You can start by reading this announcement. We recommend joining our community forum and Discord chat server.

You can translate as much as you want, when you want. It's only a matter of how much time and energy you are willing to invest as a volunteer translator.

We just ask that you understand the following:

  1. Las traducciones son un esfuerzo de equipo.

    Traducir los recursos de freeCodeCamp es una de las experiencias más divertidas y gratificantes como colaborador, y funciona mejor si involucras a tus amigos y colegas que hablan el mismo idioma que tú.

    You can start by reading this announcement. We recommend joining our community forum and Discord chat server with your friends and showing your interest before starting off with translations. Crowdin and other tools make it easy to contribute translations, but it's still a lot of work.

    Queremos que disfrutes contribuyendo y no te canses o pierdas interés.

    Un grupo pequeño de 4 a 5 personas es un buen tamaño para comenzar tu específico idioma. Y después puedes reclutar aún más amigos para unirse al equipo.

  2. Cuesta bastante girar servidores para cada idioma.

    En la superficie puede no parecer lo complicado que es la pila técnica, pero cuesta bastante mantener los motores en funcionamiento. Esto incluye el aprovisionamiento de servidores adicionales y la dedicación de personal para cuidarlos.

    freeCodeCamp.org está comprometido a ofrecerlos gratis como siempre. Sin embargo, debemos priorizar los recursos para aquellos que más lo necesitan. Lo último que queremos es cerrar los servidores de un idioma si la actividad de traducción se apaga y las cosas se vuelven obsoletas.

    For translating the curriculum, once a language reaches at least a few certifications we can begin deploying the language live on /learn, while you continue to translate the remaining certifications.

    Por ejemplo, nos gustaría implementar al menos toda la suite de certificaciones de front-end cuando enviamos un nuevo idioma por primera vez.

  3. Pero, ¿qué pasa con los idiomas que no figuran en la plataforma de traducción?

    Hemos revisado nuestra base de usuarios y hemos añadido más de 30 idiomas más hablados a la lista de idiomas habilitados en la plataforma de traducciones. Algunos idiomas como el chino y español ya están implementados en vivo en "/learn" en este momento.

    Desafortunadamente, la lista no incluye cientos de idiomas. Recibimos docenas de solicitudes de colaboradores como tú todos los días que quieren ayudar a traducir el sitio a un idioma que hablan.

    Definitivamente estamos deseando agregar más idiomas a la lista, pero como ya puedes adivinar, solo sería factible si obtenemos suficiente impulso alrededor de un idioma.

    Si deseas que incluyamos un nuevo idioma, te recomendamos que entusiasmes a tus amigos con esto.

    Una vez que tengas un pequeño grupo de personas (al menos 4-5) interesadas y comprometidas, podemos llamar. Te explicaremos todos los detalles y te guiaremos a través de algunas de las herramientas y procesos.

Overview of Crowdin

It's our dream to provide you with the resources to learn, no matter the world language you speak. To help us with this massive effort, we have integrated our open-source code-base & curriculum with Crowdin - A tool to help us localize our code-base.

[!NOTE] We use a different tool and workflow for translating news articles. If you are interested in translating articles, read this announcement and reach out to your Language Lead.

The translation workflow is split into two main activities:

  • Traduciendo archivos de currículo, documentación y elementos de interfaz de usuario como botones, etiquetas, etc.:

    Como traductor puedes registrarte en nuestra plataforma de traducción y contribuir con las traducciones en cualquiera de los más de 30 idiomas habilitados allí.

  • Revisando las traducciones de todo lo anterior.

    Los revisores verifican que las traducciones aportadas por la comunidad sean uniformes en el tono y libres de problemas comunes como errores tipográficos, etc. En resumen, aseguran que la calidad de las traducciones sea alta. Ten en cuenta que no utilizamos traducciones automáticas por una razón.

[!WARNING] We are no longer using GitHub to translate files directly, if you are a returning contributor head to our translation platform instead.

Getting started

First, make sure you come say "Hi" in our Discord. Publicamos actualizaciones regulares sobre los recursos de traducción y respondemos a muchas de tus consultas allí.

A continuación, dirígete a nuestro plataforma de traducción e inicia sesión (si no has contribuido a traducciones anteriormente, deberás crear una cuenta).

Por último, ve a través del recorrido detallado a continuación para comprender las herramientas de traducción y los flujos de trabajo a tu disposición.

Feliz traducción.

Select a Project and File

Una vez que visites la plataforma de traducción, verás varios "proyectos" disponibles para traducción:

  1. Documentación del proyecto de contribución , el cual contiene los archivos para este sitio de documentación.
  2. Proyecto de currículo de programación, el cual contiene nuestros archivos de desafío para nuestro plan de estudios.
  3. Aprende Interfaz de usuario proyecto que contiene cadenas para elementos de interfaz de usuario como botones, etiquetas, etc. para nuestra plataforma de aprendizaje.

Selecciona cualquier proyecto al que desees contribuir y verás una lista de los idiomas disponibles para la traducción.

Imagen - Lista de idiomas disponibles

Selecciona el idioma en el que deseas trabajar y verás el árbol de archivos completo.

Imagen - Lista de archivos disponibles

Cada archivo y carpeta mostrará una barra de progreso. La parte azul de la barra de progreso indica qué porcentaje del archivo se ha traducido, mientras que la parte verde de la barra de progreso indica qué porcentaje del archivo ha sido aprobado por el equipo de revisión.

Selecciona un archivo para trabajar y Crowdin abrirá la vista de edición.

[!NOTE] When the editor view opens, you will need to click the settings icon (shown as a gear) and switch the 'HTML tags displaying' setting to 'SHOW'. This will ensure you can see tags such as <code></code> instead of <0></0>.

Translate Curriculum

Imagen - Vista de edición

Crowdin separa un documento en "cadenas" traducibles, normalmente oraciones. Cada cadena se traduce individualmente. Tomando como referencia la imagen anterior:

  1. Una cadena resaltada en verde ya tiene una traducción propuesta.
  2. Una cadena resaltada en rojo no tiene una traducción propuesta.
  3. Una cadena con texto en gris no es traducible. Este es el caso de los bloques de código y otros contenidos que no deben traducirse. No podrás seleccionar estas cadenas en el editor.
  4. Si un contribuyente ha propuesto una traducción a una cadena, Crowdin mostrará esas propuestas aquí. No podrás guardar una traducción idéntica, en su lugar, si una traducción es precisa, debes hacer clic en el ícono + para votar a su favor. Puedes votar en contra de una traducción inexacta con el icono -.
  5. Crowdin recomendará traducciones basadas en Memoria de Traducción (TM) o Traducción Automática (MT). La memoria de traducción se refiere a cadenas similares o idénticas que hemos traducido / aprobado en otros archivos. La Machine Translation (traducción automática) remite hacia las traducciones recomendadas por su biblioteca integrada.
  6. Este es el panel del editor, donde puedes escribir tu propuesta de traducción para la cadena seleccionada.
  7. La cadena seleccionada actualmente en el editor se resaltará en amarillo.
  8. Aquí verás etiquetas que indican el estado de la cadena. Done (hecho) significa que la cadena tiene al menos una traducción propuesta. Todo (por hacer) significa que la cadena no tiene ninguna traducción propuesta.
  9. Aquí puedes ver la ventana de comentarios. Si tienes preguntas o inquietudes sobre una cadena en particular, puedes dejar aquí un comentario sobre la cadena para que lo vean otros traductores.
  10. Estos dos botones de "panel" ocultarán las vistas izquierda (documento) y derecha (comentarios).

[!NOTE] If you see a hidden string that includes translations, please notify us in the Discord so we can remove the translation from memory.

Cuando hayas completado la traducción de una cadena, pulsa el botón Save (guardar) para almacenar tu traducción en Crowdin. Luego, otros contribuyentes podrán votar tu traducción y el equipo de revisores podrán aprobarla.

Eres bienvenido a traducir tantas cadenas como desees, no se requieren pasos adicionales cuando completas todo un archivo o propones una nueva traducción. Hacer clic en el botón Save es todo lo que se necesita para almacenar una traducción.

[!NOTE] If you see something in the English source file that is inaccurate or incorrect, please do not fix it through the translation flow. Instead, leave a comment on the string to notify us that there is a discrepancy, or create a GitHub issue.

Translate the Learn Interface

Our /learn interface relies on JSON files loaded into an i18n plugin to generate translated text. This translation effort is split across both Crowdin and GitHub.

On GitHub

The links.json, meta-tags.json, motivation.json, and trending.json files contain information that needs to be updated to reflect your language. However, we cannot load these into Crowdin, as the content isn't something that would be a one-to-one translation.

These files will most likely be maintained by your language lead but you are welcome to read about how to translate them.

On Crowdin

[!ATTENTION] Do not edit the following files through a GitHub PR.

The intro.json and translations.json files are both translated on Crowdin, in the Learn User Interface project. Translating these can be a bit tricky, as each individual JSON value appears as its own string and sometimes the context is missing.

However, the Context information provided in Crowdin can help understand where the string fits in to the larger structure.

Image with an arrow pointing to Crowdin's context information

If you have any questions about where a string fits in to the prose, reach out to us in our contributor chat.

Translate Documentation

Translating our contributing documentation is a similar flow to translating our curriculum files.

[!NOTE] Our contributing documentation is powered by docsify, and we have special parsing for message boxes like this one. If you see strings that start with [!NOTE], [!WARNING], or [!TIP], these words should NOT be translated.

When you work on translating contributing documentation, watch out for internal links targeting a different section of the documentation.

Make sure to replace the id of the target section (the part after #) with the id on the translated document. For example, it will look like this in Japanese:

Before translation

// in HTML
<a href="target-file-name.md#target-section-heading-id">Link text</a>
<a href="#target-section-heading-id">Link text</a>

// in Markdown
[Link text](target-file-name.md#target-section-heading-id)
[Link text](#target-section-heading-id)

After translation

// in HTML
<a href="target-file-name.md#翻訳後の-id">翻訳後のリンクテキスト</a>
<a href="#翻訳後の-id">翻訳後のリンクテキスト</a>

// in Markdown
[翻訳後のリンクテキスト](target-file-name.md#翻訳後の-id)
[翻訳後のリンクテキスト](#翻訳後の-id)

The actual files in docs are written in Markdown, but they will appear as HTML tags on Crowdin.

You can find out how docsify converts a string in your language into an id by looking into the translated pages. If the translation is not deployed yet, you can preview it by running the docs site locally.

You can learn more about internal links in our docs here.

Translate the LearnToCode RPG

The LearnToCode RPG runs on Ren'Py, which uses special syntax for translated strings: (See Ren'Py Text documentation)

  • Las oraciones a traducir están siempre entre "". Estos son diálogos o cadenas de interfaz de usuario. Las palabras clave que vienen antes o después del diálogo son palabras clave de control del motor del juego y se explicarán en detalle en las reglas posteriores. Tenga en cuenta que esta primera regla rige todas las reglas posteriores enumeradas.
  • En el caso de new "..." No traduzcas la palabra clave new.
  • Prefijos como player, annika, layla, marco (o variantes como player happy, player @ happy) no deben traducirse. Estas son palabras clave de control para mostrar correctamente el sprite del personaje en el juego.
  • Postfixes como nointeract no deben ser traducidos.
  • No traduzca cosas entre [] y {}. Estas son interpolaciones variables y etiquetas de texto. Estos deben permanecer entre paréntesis de media anchura [] y {} en lugar de sus homólogos de ancho completo 【】 y 「」
  • No traduzca la palabra clave nointeract al final de la oración.
  • Si intentamos usar paréntesis de ancho completo (), se mostrará una advertencia de QA. Para evitar la advertencia de QA, utilice paréntesis de ancho medio ()

Examples


Antes de traducir

# "[player_name]? What a coincidence! Our VIP team member {a=[vip_profile_url]}[player_name]{/a} will be honored to hear that."
"[player_name]? What a coincidence! Our VIP team member {a=[vip_profile_url]}[player_name]{/a} will be honored to hear that."  <--- this is the line that needs to be translated. see translation below

Después de traducir

# "[player_name]? What a coincidence! Our VIP team member {a=[vip_profile_url]}[player_name]{/a} will be honored to hear that."
"[player_name]好巧我们的VIP队友{a=[vip_profile_url]}[player_name]{/a}会很高兴的。"

Note: The [] and {} tags should be left intact.


Antes de traducir

old "{icon=icon-fast-forward} Skip"
new "{icon=icon-fast-forward} Skip" <-- translate this line, see below

Después de traducir

old "{icon=icon-fast-forward} Skip"
new "{icon=icon-fast-forward} 跳过"

Note: Again, the new prefix and the {icon=icon-fast-forward} tag should be left intact.


Antes de traducir

# layla @ neutral "Hehe, [player_name], you are a fun one. I'm sure you will enjoy your work as a developer."
layla @ neutral "Hehe, [player_name], you are a fun one. I'm sure you will enjoy your work as a developer."

Después de traducir

# layla @ neutral "Hehe, [player_name], you are a fun one. I'm sure you will enjoy your work as a developer."
layla @ neutral "哈哈,[player_name],你真有趣。我相信你一定会喜欢你的开发者工作的。"

Note: layla @ neutral and [player_name] are left unchanged.


Antes de traducir

# player "Maybe this is all a dream?" nointeract
player "Maybe this is all a dream?" nointeract

Después de traducir

# player "Maybe this is all a dream?" nointeract
player "也许这都是一场梦?" nointeract

A Note on How Crowdin Segments a Sentence

Pay attention to how Crowdin segments a line of dialogue wrapped between opening and closing quotes "". When we are translating the dialogue, we need to make sure to retain the opening and closing quotes, even if the quotes appear in different segments.

This is the line to be translated:

player @ surprised "{b}Full-stack{/b}... What is that? I better take notes so I can learn more about it."

Crowdin segments it into three parts like below:

Screen Shot 2022-01-23 at 10 36 43
# original
player @ surprised "{b}Full-stack{/b}
# translated, keeping the opening quotes `"`
player @ surprised "{b}全栈{/b}
Screen Shot 2022-01-23 at 10 36 49
# original
What is that?
# translated, no quotes on either side
这是什么?
Screen Shot 2022-01-23 at 10 36 54
# original
I better take notes so I can learn more about it."
# translated, keeping the closing quotes `"`
我最好做笔记,这样我可以学习更多东西。"

Rate Translations

Crowdin allows you to rate the existing proposed translations. If you attempt to save a translation, you may see a message indicating that you cannot save a duplicate translation - this means another contributor has proposed that identical translation. If you agree with that translation, click the + button to "upvote" the translation.

If you see a translation that is inaccurate or does not provide the same clarity as the original string, click the - button to "downvote" the translation.

Crowdin uses these votes to give a score to each proposed translation for a string, which helps the proofreading team determine which translation is the best fit for each string.

Quality Assurance Checks

We have enabled some quality assurance steps that will verify a translation is as accurate as possible - this helps our proofreaders review proposed translations.

When you attempt to save a translation, you may see a warning message appear with a notification regarding your proposed translation.

Image - QA Warning Message

This message appears when Crowdin's QA system has identified a potential error in the proposed translation. In this example, we have modified the text of a <code> tag and Crowdin has caught that.

[!WARNING] You have the option to save a translation in spite of errors. If you do, by clicking "Save Anyway", you should also tag a proofreader or project manager and explain why the QA message needs to be ignored in this case.

Translation Best Practices

Follow these guidelines to ensure our translations are as accurate as possible:

  • No traduzca el contenido con etiquetas de <code>. Estas etiquetas indican texto que se encuentra en código y que debe dejarse en inglés.
  • No agregues contenido adicional. Si sientes que un desafío requiere cambios en el contenido de texto o información adicional, debería proponer los cambios a través de un problema de GitHub o una pull request que modifique el archivo en inglés.
  • No cambiar el orden del contenido.

If you have any questions, feel free to reach out to us in our Discord and we will be happy to assist you.