Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/translations/freebsd-doc/articles_linux-emulation/es/units/?format=api&page=3
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 384,
    "next": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/units/?format=api&page=4",
    "previous": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/units/?format=api&page=2",
    "results": [
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "#define CLONE_SIGNAL (CLONE_SIGHAND | CLONE_THREAD)"
            ],
            "previous_source": "",
            "target": [
                "#define CLONE_SIGNAL (CLONE_SIGHAND | CLONE_THREAD)"
            ],
            "id_hash": -3365838562879222588,
            "content_hash": -3365838562879222588,
            "location": "article.translate.xml:692",
            "context": "",
            "note": "(itstool) path: sect4/programlisting",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 107,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99504/?format=api",
            "priority": 100,
            "id": 26372,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=514a23a8f845ccc4",
            "url": "https://translate-dev.freebsd.org/api/units/26372/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.271919Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "the last 0 means no signal is sent when any of the threads exits."
            ],
            "previous_source": "",
            "target": [
                "el último 0 significa que no se envía ninguna señal cuando alguno de los hilos sale."
            ],
            "id_hash": 6496950159875079938,
            "content_hash": 6496950159875079938,
            "location": "article.translate.xml:694",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 108,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 14,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99505/?format=api",
            "priority": 100,
            "id": 26373,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=da29cdbf82c57f02",
            "url": "https://translate-dev.freebsd.org/api/units/26373/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.283372Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "What is emulation"
            ],
            "previous_source": "",
            "target": [
                "Que es la emulacion"
            ],
            "id_hash": 6266584587101583681,
            "content_hash": 6266584587101583681,
            "location": "article.translate.xml:701",
            "context": "",
            "note": "(itstool) path: sect2/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 109,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 3,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99506/?format=api",
            "priority": 100,
            "id": 26374,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=d6f7617aed20b941",
            "url": "https://translate-dev.freebsd.org/api/units/26374/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.298287Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "According to a dictionary definition, emulation is the ability of a program or device to imitate another program or device. This is achieved by providing the same reaction to a given stimulus as the emulated object. In practice, the software world mostly sees three types of emulation - a program used to emulate a machine (QEMU, various game console emulators etc.), software emulation of a hardware facility (OpenGL emulators, floating point units emulation etc.) and operating system emulation (either in kernel of the operating system or as a userspace program)."
            ],
            "previous_source": "",
            "target": [
                "Según una definición de diccionario, la emulación es la capacidad de un programa o dispositivo para imitar otro programa o dispositivo. Esto se logra proporcionando la misma reacción a un estímulo dado que el objeto emulado. En la práctica, el mundo del software ve principalmente tres tipos de emulación: un programa utilizado para emular una máquina (QEMU, varios emuladores de consola de juegos, etc.), emulación de software de una instalación de hardware (emuladores OpenGL, emulación de unidades de punto flotante, etc.) y operación emulación del sistema (ya sea en el núcleo del sistema operativo o como un programa de espacio de usuario)."
            ],
            "id_hash": 7354526969409739274,
            "content_hash": 7354526969409739274,
            "location": "article.translate.xml:703",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 110,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 90,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99507/?format=api",
            "priority": 100,
            "id": 26375,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=e61087500eb29a0a",
            "url": "https://translate-dev.freebsd.org/api/units/26375/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.311904Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Emulation is usually used in a place, where using the original component is not feasible nor possible at all. For example someone might want to use a program developed for a different operating system than they use. Then emulation comes in handy. Sometimes there is no other way but to use emulation - e.g. when the hardware device you try to use does not exist (yet/anymore) then there is no other way but emulation. This happens often when porting an operating system to a new (non-existent) platform. Sometimes it is just cheaper to emulate."
            ],
            "previous_source": "",
            "target": [
                "La emulación se usa generalmente en un lugar donde usar el componente original no es factible ni posible en absoluto. Por ejemplo, alguien podría querer usar un programa desarrollado para un sistema operativo diferente al que usa. Entonces la emulación es útil. A veces no hay otra forma que usar la emulación, por ejemplo, cuando el dispositivo de hardware que intenta utilizar no existe (todavía / más), no hay otra forma que la emulación. Esto sucede a menudo cuando se traslada un sistema operativo a una plataforma nueva (inexistente). A veces es más barato emular."
            ],
            "id_hash": 2860979498109893691,
            "content_hash": 2860979498109893691,
            "location": "article.translate.xml:714",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 111,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 94,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99509/?format=api",
            "priority": 100,
            "id": 26376,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=a7b43db20683fc3b",
            "url": "https://translate-dev.freebsd.org/api/units/26376/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.324026Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Looking from an implementation point of view, there are two main approaches to the implementation of emulation. You can either emulate the whole thing - accepting possible inputs of the original object, maintaining inner state and emitting correct output based on the state and/or input. This kind of emulation does not require any special conditions and basically can be implemented anywhere for any device/program. The drawback is that implementing such emulation is quite difficult, time-consuming and error-prone. In some cases we can use a simpler approach. Imagine you want to emulate a printer that prints from left to right on a printer that prints from right to left. It is obvious that there is no need for a complex emulation layer but simply reversing of the printed text is sufficient. Sometimes the emulating environment is very similar to the emulated one so just a thin layer of some translation is necessary to provide fully working emulation! As you can see this is much less demanding to implement, so less time-consuming and error-prone than the previous approach. But the necessary condition is that the two environments must be similar enough. The third approach combines the two previous. Most of the time the objects do not provide the same capabilities so in a case of emulating the more powerful one on the less powerful we have to emulate the missing features with full emulation described above."
            ],
            "previous_source": "",
            "target": [
                "Desde el punto de vista de la implementación, hay dos enfoques principales para la implementación de la emulación. Puede emular todo, aceptando posibles entradas del objeto original, manteniendo el estado interno y emitiendo la salida correcta según el estado y / o la entrada. Este tipo de emulación no requiere condiciones especiales y básicamente se puede implementar en cualquier lugar para cualquier dispositivo / programa. El inconveniente es que implementar tal emulación es bastante difícil, requiere mucho tiempo y es propenso a errores. En algunos casos, podemos utilizar un enfoque más simple. Imagine que desea emular una impresora que imprime de izquierda a derecha en una impresora que imprime de derecha a izquierda. Es obvio que no hay necesidad de una capa de emulación compleja, pero basta con invertir el texto impreso. A veces, el entorno de emulación es muy similar al emulado, por lo que solo se necesita una capa fina de traducción para proporcionar una emulación completamente funcional. Como puede ver, esto es mucho menos exigente de implementar, por lo que consume menos tiempo y es propenso a errores que el enfoque anterior. Pero la condición necesaria es que los dos entornos sean lo suficientemente similares. El tercer enfoque combina los dos anteriores. La mayoría de las veces los objetos no brindan las mismas capacidades, por lo que en el caso de emular el más poderoso en el menos poderoso, tenemos que emular las características faltantes con la emulación completa descrita anteriormente."
            ],
            "id_hash": -227489570413473028,
            "content_hash": -227489570413473028,
            "location": "article.translate.xml:725",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 112,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 234,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99510/?format=api",
            "priority": 100,
            "id": 26377,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=7cd7cb70e56612fc",
            "url": "https://translate-dev.freebsd.org/api/units/26377/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.334555Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "This master thesis deals with emulation of <trademark class=\"registered\">UNIX</trademark> on <trademark class=\"registered\">UNIX</trademark>, which is exactly the case, where only a thin layer of translation is sufficient to provide full emulation. The <trademark class=\"registered\">UNIX</trademark> API consists of a set of syscalls, which are usually self contained and do not affect some global kernel state."
            ],
            "previous_source": "",
            "target": [
                "Esta tesis de maestría trata sobre la emulación de <trademark class=\"registered\">UNIX</trademark> en <trademark class=\"registered\">UNIX</trademark>, que es exactamente el caso, donde solo una fina capa de traducción es suficiente para proporcionar una emulación completa. los <trademark class=\"registered\">UNIX</trademark> La API consta de un conjunto de llamadas al sistema, que normalmente son independientes y no afectan al estado global del kernel."
            ],
            "id_hash": 1854327722978106771,
            "content_hash": 1854327722978106771,
            "location": "article.translate.xml:751",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 113,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 53,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99511/?format=api",
            "priority": 100,
            "id": 26378,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=99bbe53d4944dd93",
            "url": "https://translate-dev.freebsd.org/api/units/26378/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.346172Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "There are a few syscalls that affect inner state but this can be dealt with by providing some structures that maintain the extra state."
            ],
            "previous_source": "",
            "target": [
                "Hay algunas llamadas al sistema que afectan el estado interno, pero esto se puede solucionar proporcionando algunas estructuras que mantienen el estado adicional."
            ],
            "id_hash": -1974244966915197565,
            "content_hash": -1974244966915197565,
            "location": "article.translate.xml:758",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 114,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 24,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99512/?format=api",
            "priority": 100,
            "id": 26379,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=649a12a99f6ab583",
            "url": "https://translate-dev.freebsd.org/api/units/26379/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.356753Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "No emulation is perfect and emulations tend to lack some parts but this usually does not cause any serious drawbacks. Imagine a game console emulator that emulates everything but music output. No doubt that the games are playable and one can use the emulator. It might not be that comfortable as the original game console but its an acceptable compromise between price and comfort."
            ],
            "previous_source": "",
            "target": [
                "Ninguna emulación es perfecta y las emulaciones tienden a carecer de algunas partes, pero esto no suele causar inconvenientes graves. Imagina un emulador de consola de juegos que emula todo menos la salida de música. No hay duda de que los juegos son jugables y se puede usar el emulador. Puede que no sea tan cómodo como la consola de juegos original, pero es un compromiso aceptable entre precio y comodidad."
            ],
            "id_hash": -7250108694624679276,
            "content_hash": -7250108694624679276,
            "location": "article.translate.xml:762",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 115,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 64,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99513/?format=api",
            "priority": 100,
            "id": 26380,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=1b62708e11ecca94",
            "url": "https://translate-dev.freebsd.org/api/units/26380/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.363393Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "The same goes with the <trademark class=\"registered\">UNIX</trademark> API. Most programs can live with a very limited set of syscalls working. Those syscalls tend to be the oldest ones (<citerefentry><refentrytitle>read</refentrytitle><manvolnum>2</manvolnum></citerefentry>/<citerefentry><refentrytitle>write</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry><refentrytitle>fork</refentrytitle><manvolnum>2</manvolnum></citerefentry> family, <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>3</manvolnum></citerefentry> handling, <citerefentry><refentrytitle>exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>2</manvolnum></citerefentry> API) hence it is easy to emulate because their semantics is shared among all <trademark class=\"registered\">UNIX</trademark>es, which exist todays."
            ],
            "previous_source": "",
            "target": [
                "Lo mismo ocurre con el <trademark class=\"registered\">UNIX</trademark> API. La mayoría de los programas pueden vivir con un conjunto muy limitado de llamadas al sistema funcionando. Esas llamadas al sistema tienden a ser las más antiguas (<citerefentry><refentrytitle>leer</refentrytitle><manvolnum>2</manvolnum></citerefentry>/<citerefentry><refentrytitle>write</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <citerefentry><refentrytitle>fork</refentrytitle><manvolnum>2</manvolnum></citerefentry> family, <citerefentry><refentrytitle>señal</refentrytitle><manvolnum>3</manvolnum></citerefentry> handling, <citerefentry><refentrytitle>salida</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>2</manvolnum></citerefentry> API), por lo que es fácil de emular porque su semántica se comparte entre todos <trademark class=\"registered\">UNIX</trademark>es, que existen hoy."
            ],
            "id_hash": 8438967591468386411,
            "content_hash": 8438967591468386411,
            "location": "article.translate.xml:770",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 116,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 54,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99514/?format=api",
            "priority": 100,
            "id": 26381,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=f51d3c501881c86b",
            "url": "https://translate-dev.freebsd.org/api/units/26381/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.371078Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Emulation"
            ],
            "previous_source": "",
            "target": [
                "Emulación"
            ],
            "id_hash": 5068111918082039090,
            "content_hash": 5068111918082039090,
            "location": "article.translate.xml:781",
            "context": "",
            "note": "(itstool) path: sect1/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 117,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99515/?format=api",
            "priority": 100,
            "id": 26382,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=c6558cefff341d32",
            "url": "https://translate-dev.freebsd.org/api/units/26382/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.377697Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "How emulation works in FreeBSD"
            ],
            "previous_source": "",
            "target": [
                "Cómo funciona la emulación en FreeBSD"
            ],
            "id_hash": -3076149006527228918,
            "content_hash": -3076149006527228918,
            "location": "article.translate.xml:784",
            "context": "",
            "note": "(itstool) path: sect2/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 118,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99516/?format=api",
            "priority": 100,
            "id": 26383,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=554f52c6d5c6140a",
            "url": "https://translate-dev.freebsd.org/api/units/26383/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.384718Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "As stated earlier, FreeBSD supports running binaries from several other <trademark class=\"registered\">UNIX</trademark>es. This works because FreeBSD has an abstraction called the execution class loader. This wedges into the <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> syscall, so when <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> is about to execute a binary it examines its type."
            ],
            "previous_source": "",
            "target": [
                "Como se dijo anteriormente, FreeBSD admite la ejecución de binarios de varios otros <trademark class=\"registered\">UNIX</trademark>es. esto funciona porque FreeBSD tiene una abstracción llamada cargador de clases de ejecución. Esto encaja en el<citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry>syscall, así que cuando <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> está a punto de ejecutar un binario examina su tipo."
            ],
            "id_hash": 9142410834080050547,
            "content_hash": 9142410834080050547,
            "location": "article.translate.xml:786",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 119,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 43,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99517/?format=api",
            "priority": 100,
            "id": 26384,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=fee05e370c062d73",
            "url": "https://translate-dev.freebsd.org/api/units/26384/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.394077Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "There are basically two types of binaries in FreeBSD. Shell-like text scripts which are identified by <literal>#!</literal> as their first two characters and normal (typically <firstterm>ELF</firstterm>) binaries, which are a representation of a compiled executable object. The vast majority (one could say all of them) of binaries in FreeBSD are from type ELF. ELF files contain a header, which specifies the OS ABI for this ELF file. By reading this information, the operating system can accurately determine what type of binary the given file is."
            ],
            "previous_source": "",
            "target": [
                "Básicamente, existen dos tipos de binarios en FreeBSD. Scripts de texto tipo shell que se identifican por <literal>#!</literal> como sus dos primeros personajes y normal (typically <firstterm>ELF</firstterm>) binarios, que son una representación de un objeto ejecutable compilado. La gran mayoría (se podría decir que todos) de los binarios en FreeBSD son del tipo ELF. Los archivos ELF contienen un encabezado, que especifica la ABI del sistema operativo para este archivo ELF. Al leer esta información, el sistema operativo puede determinar con precisión qué tipo de binario es el archivo dado."
            ],
            "id_hash": 7956597462966709587,
            "content_hash": 7956597462966709587,
            "location": "article.translate.xml:792",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 120,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 85,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99518/?format=api",
            "priority": 100,
            "id": 26385,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=ee6b833c98e7ad53",
            "url": "https://translate-dev.freebsd.org/api/units/26385/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.401506Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Every OS ABI must be registered in the FreeBSD kernel. This applies to the FreeBSD native OS ABI, as well. So when <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> executes a binary it iterates through the list of registered APIs and when it finds the right one it starts to use the information contained in the OS ABI description (its syscall table, <literal>errno</literal> translation table, etc.). So every time the process calls a syscall, it uses its own set of syscalls instead of some global one. This effectively provides a very elegant and easy way of supporting execution of various binary formats."
            ],
            "previous_source": "",
            "target": [
                "Cada OS ABI debe estar registrado en el kernel de FreeBSD. Esto también se aplica a la ABI del sistema operativo nativo de FreeBSD. Así que cuando <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> ejecuta un binario, itera a través de la lista de API registradas y cuando encuentra la correcta, comienza a usar la información contenida en la descripción de la ABI del sistema operativo (su tabla syscall,<literal>errno</literal> tabla de traducción, etc.). Entonces, cada vez que el proceso llama a una llamada al sistema, utiliza su propio conjunto de llamadas al sistema en lugar de una global. Esto proporciona efectivamente una forma muy elegante y fácil de soportar la ejecución de varios formatos binarios."
            ],
            "id_hash": -6918163884552337023,
            "content_hash": -6918163884552337023,
            "location": "article.translate.xml:803",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 121,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 96,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99519/?format=api",
            "priority": 100,
            "id": 26386,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=1ffdbe99db524981",
            "url": "https://translate-dev.freebsd.org/api/units/26386/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.408806Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "The nature of emulation of different OSes (and also some other subsystems) led developers to invite a handler event mechanism. There are various places in the kernel, where a list of event handlers are called. Every subsystem can register an event handler and they are called accordingly. For example, when a process exits there is a handler called that possibly cleans up whatever the subsystem needs to be cleaned."
            ],
            "previous_source": "",
            "target": [
                "La naturaleza de la emulación de diferentes sistemas operativos (y también algunos otros subsistemas) llevó a los desarrolladores a invitar a un mecanismo de eventos de controlador. Hay varios lugares en el kernel, donde se llama a una lista de controladores de eventos. Cada subsistema puede registrar un controlador de eventos y se los llama en consecuencia. Por ejemplo, cuando un proceso sale, se llama a un controlador que posiblemente limpia lo que sea que el subsistema necesite limpiarse."
            ],
            "id_hash": -4712575315385871405,
            "content_hash": -4712575315385871405,
            "location": "article.translate.xml:814",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 122,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 69,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99520/?format=api",
            "priority": 100,
            "id": 26387,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=3e9991b80d2693d3",
            "url": "https://translate-dev.freebsd.org/api/units/26387/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.417109Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Those simple facilities provide basically everything that is needed for the emulation infrastructure and in fact these are basically the only things necessary to implement the <trademark class=\"registered\">Linux</trademark> emulation layer."
            ],
            "previous_source": "",
            "target": [
                "Esas sencillas instalaciones proporcionan básicamente todo lo que se necesita para la infraestructura de emulación y, de hecho, son básicamente las únicas cosas necesarias para implementar el <trademark class=\"registered\">Linux</trademark> capa de emulación."
            ],
            "id_hash": -1526447452573843768,
            "content_hash": -1526447452573843768,
            "location": "article.translate.xml:823",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 123,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 30,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99521/?format=api",
            "priority": 100,
            "id": 26388,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=6ad0f8211d093ec8",
            "url": "https://translate-dev.freebsd.org/api/units/26388/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.425756Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Common primitives in the FreeBSD kernel"
            ],
            "previous_source": "",
            "target": [
                "Primitivas comunes en el kernel de FreeBSD"
            ],
            "id_hash": -4273340388558647671,
            "content_hash": -4273340388558647671,
            "location": "article.translate.xml:830",
            "context": "",
            "note": "(itstool) path: sect2/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 124,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 6,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99522/?format=api",
            "priority": 100,
            "id": 26389,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=44b20b8ec7a1ce89",
            "url": "https://translate-dev.freebsd.org/api/units/26389/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.432439Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Emulation layers need some support from the operating system. I am going to describe some of the supported primitives in the FreeBSD operating system."
            ],
            "previous_source": "",
            "target": [
                "Las capas de emulación necesitan soporte del sistema operativo. Voy a describir algunas de las primitivas soportadas en el sistema operativo FreeBSD."
            ],
            "id_hash": -590175341557173630,
            "content_hash": -590175341557173630,
            "location": "article.translate.xml:832",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 125,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 24,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99523/?format=api",
            "priority": 100,
            "id": 26390,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=77cf46a75b4a3282",
            "url": "https://translate-dev.freebsd.org/api/units/26390/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.442381Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Locking primitives"
            ],
            "previous_source": "",
            "target": [
                "Bloqueo de primitivos"
            ],
            "id_hash": 408425924023565031,
            "content_hash": 408425924023565031,
            "location": "article.translate.xml:837",
            "context": "",
            "note": "(itstool) path: sect3/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 126,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99524/?format=api",
            "priority": 100,
            "id": 26391,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=85ab0536c67c3ae7",
            "url": "https://translate-dev.freebsd.org/api/units/26391/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.449108Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Contributed by: Attilio Rao <email>attilio@FreeBSD.org</email>"
            ],
            "previous_source": "",
            "target": [
                "Contribuido por: Attilio Rao <email>attilio@FreeBSD.org</email>"
            ],
            "id_hash": -4276851033338059374,
            "content_hash": -4276851033338059374,
            "location": "article.translate.xml:839",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 127,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99525/?format=api",
            "priority": 100,
            "id": 26392,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=44a592a5189f6592",
            "url": "https://translate-dev.freebsd.org/api/units/26392/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.457238Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "The FreeBSD synchronization primitive set is based on the idea to supply a rather huge number of different primitives in a way that the better one can be used for every particular, appropriate situation."
            ],
            "previous_source": "",
            "target": [
                "El conjunto de primitivas de sincronización de FreeBSD se basa en la idea de suministrar un número bastante grande de primitivas diferentes de manera que se pueda utilizar la mejor para cada situación particular y apropiada."
            ],
            "id_hash": 5914859137339017904,
            "content_hash": 5914859137339017904,
            "location": "article.translate.xml:841",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 128,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99526/?format=api",
            "priority": 100,
            "id": 26393,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=d215cd0c1190cab0",
            "url": "https://translate-dev.freebsd.org/api/units/26393/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.466680Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "To a high level point of view you can consider three kinds of synchronization primitives in the FreeBSD kernel:"
            ],
            "previous_source": "",
            "target": [
                "Desde un punto de vista de alto nivel, puede considerar tres tipos de primitivas de sincronización en el kernel de FreeBSD:"
            ],
            "id_hash": 4386223497983398662,
            "content_hash": 4386223497983398662,
            "location": "article.translate.xml:846",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 129,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 19,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99527/?format=api",
            "priority": 100,
            "id": 26394,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=bcdeff083ec59306",
            "url": "https://translate-dev.freebsd.org/api/units/26394/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.477559Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "atomic operations and memory barriers"
            ],
            "previous_source": "",
            "target": [
                "operaciones atómicas y barreras de memoria"
            ],
            "id_hash": 1166133961375624267,
            "content_hash": 1166133961375624267,
            "location": "article.translate.xml:852",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 130,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99528/?format=api",
            "priority": 100,
            "id": 26395,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=902ef0a8d0502c4b",
            "url": "https://translate-dev.freebsd.org/api/units/26395/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.484028Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "locks"
            ],
            "previous_source": "",
            "target": [
                "Cerraduras"
            ],
            "id_hash": 1024290492185615707,
            "content_hash": 1024290492185615707,
            "location": "article.translate.xml:855",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 131,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99529/?format=api",
            "priority": 100,
            "id": 26396,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=8e3702c695889d5b",
            "url": "https://translate-dev.freebsd.org/api/units/26396/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.491119Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "scheduling barriers"
            ],
            "previous_source": "",
            "target": [
                "barreras de programación"
            ],
            "id_hash": -5083647819440679008,
            "content_hash": -5083647819440679008,
            "location": "article.translate.xml:858",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 132,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99530/?format=api",
            "priority": 100,
            "id": 26397,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=3973413e170c97a0",
            "url": "https://translate-dev.freebsd.org/api/units/26397/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.497324Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Below there are descriptions for the 3 families. For every lock, you should really check the linked manpage (where possible) for more detailed explanations."
            ],
            "previous_source": "",
            "target": [
                "A continuación hay descripciones de las 3 familias. Para cada bloqueo, debería consultar la página de manual vinculada (cuando sea posible) para obtener explicaciones más detalladas."
            ],
            "id_hash": 7873213824739344436,
            "content_hash": 7873213824739344436,
            "location": "article.translate.xml:862",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 133,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 24,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99531/?format=api",
            "priority": 100,
            "id": 26398,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=ed43464270488034",
            "url": "https://translate-dev.freebsd.org/api/units/26398/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.510472Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Atomic operations and memory barriers"
            ],
            "previous_source": "",
            "target": [
                "Operaciones atómicas y barreras de memoria"
            ],
            "id_hash": -8932650857880175,
            "content_hash": -8932650857880175,
            "location": "article.translate.xml:867",
            "context": "",
            "note": "(itstool) path: sect4/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 134,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99532/?format=api",
            "priority": 100,
            "id": 26399,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=7fe043cd26b6a591",
            "url": "https://translate-dev.freebsd.org/api/units/26399/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.521344Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Atomic operations are implemented through a set of functions performing simple arithmetics on memory operands in an atomic way with respect to external events (interrupts, preemption, etc.). Atomic operations can guarantee atomicity just on small data types (in the magnitude order of the <literal>.long.</literal> architecture C data type), so should be rarely used directly in the end-level code, if not only for very simple operations (like flag setting in a bitmap, for example). In fact, it is rather simple and common to write down a wrong semantic based on just atomic operations (usually referred as lock-less). The FreeBSD kernel offers a way to perform atomic operations in conjunction with a memory barrier. The memory barriers will guarantee that an atomic operation will happen following some specified ordering with respect to other memory accesses. For example, if we need that an atomic operation happen just after all other pending writes (in terms of instructions reordering buffers activities) are completed, we need to explicitly use a memory barrier in conjunction to this atomic operation. So it is simple to understand why memory barriers play a key role for higher-level locks building (just as refcounts, mutexes, etc.). For a detailed explanatory on atomic operations, please refer to <citerefentry><refentrytitle>atomic</refentrytitle><manvolnum>9</manvolnum></citerefentry>. It is far, however, noting that atomic operations (and memory barriers as well) should ideally only be used for building front-ending locks (as mutexes)."
            ],
            "previous_source": "",
            "target": [
                "Las operaciones atómicas se implementan a través de un conjunto de funciones que realizan aritmética simple sobre operandos de memoria de forma atómica con respecto a eventos externos (interrupciones, apropiación, etc.). Las operaciones atómicas pueden garantizar la atomicidad solo en tipos de datos pequeños (en el orden de magnitud del <literal>.long.</literal>tipo de datos de arquitectura C), por lo que rara vez se debe usar directamente en el código de nivel final, si no solo para operaciones muy simples (como la configuración de banderas en un mapa de bits, por ejemplo). De hecho, es bastante simple y común escribir una semántica incorrecta basada solo en operaciones atómicas (generalmente referidas como sin bloqueo). El kernel de FreeBSD ofrece una forma de realizar operaciones atómicas junto con una barrera de memoria. Las barreras de memoria garantizarán que ocurra una operación atómica siguiendo un orden específico con respecto a otros accesos a la memoria. Por ejemplo, si necesitamos que ocurra una operación atómica justo después de que se completen todas las demás escrituras pendientes (en términos de instrucciones que reordenan las actividades de búfer), necesitamos usar explícitamente una barrera de memoria junto con esta operación atómica. Por lo tanto, es sencillo entender por qué las barreras de memoria juegan un papel clave para la construcción de bloqueos de nivel superior (como refcounts, mutexes, etc.). Para obtener una explicación detallada sobre las operaciones atómicas, consulte <citerefentry><refentrytitle>atomic</refentrytitle><manvolnum>9</manvolnum></citerefentry>. Sin embargo, está lejos de señalar que las operaciones atómicas (y las barreras de memoria también) deberían idealmente usarse solo para construir bloqueos frontales (como mutex)."
            ],
            "id_hash": 3409506010445086147,
            "content_hash": 3409506010445086147,
            "location": "article.translate.xml:869",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 135,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 229,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99533/?format=api",
            "priority": 100,
            "id": 26400,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=af50ffa6f4237dc3",
            "url": "https://translate-dev.freebsd.org/api/units/26400/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.529809Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Refcounts"
            ],
            "previous_source": "",
            "target": [
                "Recuentos"
            ],
            "id_hash": 1474105584341097648,
            "content_hash": 1474105584341097648,
            "location": "article.translate.xml:900",
            "context": "",
            "note": "(itstool) path: sect4/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 136,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99534/?format=api",
            "priority": 100,
            "id": 26401,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=9475133804121cb0",
            "url": "https://translate-dev.freebsd.org/api/units/26401/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.539684Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Refcounts are interfaces for handling reference counters. They are implemented through atomic operations and are intended to be used just for cases, where the reference counter is the only one thing to be protected, so even something like a spin-mutex is deprecated. Using the refcount interface for structures, where a mutex is already used is often wrong since we should probably close the reference counter in some already protected paths. A manpage discussing refcount does not exist currently, just check <filename>sys/refcount.h</filename> for an overview of the existing API."
            ],
            "previous_source": "",
            "target": [
                "Los refcounts son interfaces para manejar contadores de referencia. Se implementan a través de operaciones atómicas y están destinadas a usarse solo en casos, donde el contador de referencia es lo único que debe protegerse, por lo que incluso algo como un spin-mutex está en desuso. El uso de la interfaz refcount para estructuras, donde ya se usa un mutex, a menudo es incorrecto, ya que probablemente deberíamos cerrar el contador de referencia en algunas rutas ya protegidas. Actualmente no existe una página de manual que discuta refcount, solo verifique <filename>sys/refcount.h</filename> para obtener una descripción general de la API existente."
            ],
            "id_hash": -677197351074547560,
            "content_hash": -677197351074547560,
            "location": "article.translate.xml:902",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 137,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 88,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99535/?format=api",
            "priority": 100,
            "id": 26402,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=769a1c98de5db898",
            "url": "https://translate-dev.freebsd.org/api/units/26402/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.548658Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Locks"
            ],
            "previous_source": "",
            "target": [
                "Cerraduras"
            ],
            "id_hash": -8723919511929475541,
            "content_hash": -8723919511929475541,
            "location": "article.translate.xml:916",
            "context": "",
            "note": "(itstool) path: sect4/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 138,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99536/?format=api",
            "priority": 100,
            "id": 26403,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=06ee696cda582e2b",
            "url": "https://translate-dev.freebsd.org/api/units/26403/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.561887Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "FreeBSD kernel has huge classes of locks. Every lock is defined by some peculiar properties, but probably the most important is the event linked to contesting holders (or in other terms, the behavior of threads unable to acquire the lock). FreeBSD's locking scheme presents three different behaviors for contenders:"
            ],
            "previous_source": "",
            "target": [
                "El kernel de FreeBSD tiene enormes clases de bloqueos. Cada bloqueo está definido por algunas propiedades peculiares, pero probablemente la más importante es el evento vinculado a los titulares de la competencia (o en otros términos, el comportamiento de los hilos que no pueden adquirir el bloqueo). El esquema de bloqueo de FreeBSD presenta tres comportamientos diferentes para los contendientes:"
            ],
            "id_hash": 217015458355623684,
            "content_hash": 217015458355623684,
            "location": "article.translate.xml:918",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 139,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 49,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99537/?format=api",
            "priority": 100,
            "id": 26404,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=8302fe68da0e3704",
            "url": "https://translate-dev.freebsd.org/api/units/26404/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.573771Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "spinning"
            ],
            "previous_source": "",
            "target": [
                "hilado"
            ],
            "id_hash": -7961086403949338287,
            "content_hash": -7961086403949338287,
            "location": "article.translate.xml:927",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 140,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99538/?format=api",
            "priority": 100,
            "id": 26405,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=11848a1862686151",
            "url": "https://translate-dev.freebsd.org/api/units/26405/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.582688Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "blocking"
            ],
            "previous_source": "",
            "target": [
                "bloqueo"
            ],
            "id_hash": 8333502464607622695,
            "content_hash": 8333502464607622695,
            "location": "article.translate.xml:930",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 141,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99539/?format=api",
            "priority": 100,
            "id": 26406,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=f3a68c56b9c79627",
            "url": "https://translate-dev.freebsd.org/api/units/26406/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.589107Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "sleeping"
            ],
            "previous_source": "",
            "target": [
                "dormir"
            ],
            "id_hash": -7651554324314392538,
            "content_hash": -7651554324314392538,
            "location": "article.translate.xml:933",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 142,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99540/?format=api",
            "priority": 100,
            "id": 26407,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=15d037e1b7a2f826",
            "url": "https://translate-dev.freebsd.org/api/units/26407/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.599634Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "numbers are not casual"
            ],
            "previous_source": "",
            "target": [
                "los números no son casuales"
            ],
            "id_hash": 6235557811434613806,
            "content_hash": 6235557811434613806,
            "location": "article.translate.xml:938",
            "context": "",
            "note": "(itstool) path: note/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 143,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 4,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99541/?format=api",
            "priority": 100,
            "id": 26408,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=d68926cac6f8ec2e",
            "url": "https://translate-dev.freebsd.org/api/units/26408/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.606757Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Spinning locks"
            ],
            "previous_source": "",
            "target": [
                "Cerraduras giratorias"
            ],
            "id_hash": -1388035840497313960,
            "content_hash": -1388035840497313960,
            "location": "article.translate.xml:943",
            "context": "",
            "note": "(itstool) path: sect4/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 144,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99542/?format=api",
            "priority": 100,
            "id": 26409,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=6cbcb4c1d7a59758",
            "url": "https://translate-dev.freebsd.org/api/units/26409/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.617007Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Spin locks let waiters to spin until they cannot acquire the lock. An important matter do deal with is when a thread contests on a spin lock if it is not descheduled. Since the FreeBSD kernel is preemptive, this exposes spin lock at the risk of deadlocks that can be solved just disabling interrupts while they are acquired. For this and other reasons (like lack of priority propagation support, poorness in load balancing schemes between CPUs, etc.), spin locks are intended to protect very small paths of code, or ideally not to be used at all if not explicitly requested (explained later)."
            ],
            "previous_source": "",
            "target": [
                "Las cerraduras giratorias permiten a los camareros girar hasta que no pueden adquirir la cerradura. Un asunto importante con el que se trata es cuando un hilo compite en un bloqueo de giro si no está programado. Dado que el kernel de FreeBSD es preventivo, esto expone el bloqueo de giro al riesgo de interbloqueos que pueden resolverse simplemente deshabilitando las interrupciones mientras se adquieren. Por esta y otras razones (como la falta de soporte de propagación de prioridad, deficiencias en los esquemas de equilibrio de carga entre las CPU, etc.), los bloqueos de giro están destinados a proteger rutas de código muy pequeñas o, idealmente, no deben usarse en absoluto si no se solicitan explícitamente ( explicado más adelante)."
            ],
            "id_hash": -4506583296518104993,
            "content_hash": -4506583296518104993,
            "location": "article.translate.xml:945",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 145,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 102,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99543/?format=api",
            "priority": 100,
            "id": 26410,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=4175665e6454585f",
            "url": "https://translate-dev.freebsd.org/api/units/26410/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.624868Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Blocking"
            ],
            "previous_source": "",
            "target": [
                "Bloqueo"
            ],
            "id_hash": -4044068057258367850,
            "content_hash": -4044068057258367850,
            "location": "article.translate.xml:959",
            "context": "",
            "note": "(itstool) path: sect4/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 146,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99544/?format=api",
            "priority": 100,
            "id": 26411,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=47e095873f9c6496",
            "url": "https://translate-dev.freebsd.org/api/units/26411/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.635967Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Block locks let waiters to be descheduled and blocked until the lock owner does not drop it and wakes up one or more contenders. In order to avoid starvation issues, blocking locks do priority propagation from the waiters to the owner. Block locks must be implemented through the turnstile interface and are intended to be the most used kind of locks in the kernel, if no particular conditions are met."
            ],
            "previous_source": "",
            "target": [
                "Las cerraduras de bloque permiten que los camareros sean desprogramados y bloqueados hasta que el propietario de la cerradura no la deje caer y despierte a uno o más contendientes. Para evitar problemas de inanición, las cerraduras de bloqueo se propagan prioritariamente de los camareros al propietario. Los bloqueos de bloqueo deben implementarse a través de la interfaz del torniquete y están destinados a ser el tipo de bloqueo más utilizado en el núcleo, si no se cumplen condiciones particulares."
            ],
            "id_hash": 8516443093723967469,
            "content_hash": 8516443093723967469,
            "location": "article.translate.xml:961",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 147,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 70,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99545/?format=api",
            "priority": 100,
            "id": 26412,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=f6307bdf273eefed",
            "url": "https://translate-dev.freebsd.org/api/units/26412/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.642886Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Sleeping"
            ],
            "previous_source": "",
            "target": [
                "Dormir"
            ],
            "id_hash": -7942088895251542511,
            "content_hash": -7942088895251542511,
            "location": "article.translate.xml:972",
            "context": "",
            "note": "(itstool) path: sect4/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 148,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99546/?format=api",
            "priority": 100,
            "id": 26413,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=11c8083a8ff50e11",
            "url": "https://translate-dev.freebsd.org/api/units/26413/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.649913Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "Sleep locks let waiters to be descheduled and fall asleep until the lock holder does not drop it and wakes up one or more waiters. Since sleep locks are intended to protect large paths of code and to cater asynchronous events, they do not do any form of priority propagation. They must be implemented through the <citerefentry><refentrytitle>sleepqueue</refentrytitle><manvolnum>9</manvolnum></citerefentry> interface."
            ],
            "previous_source": "",
            "target": [
                "Las cerraduras para dormir permiten que los camareros se desagreguen y se duerman hasta que el soporte de la cerradura no se caiga y despierte a uno o más camareros. Dado que los bloqueos de suspensión están destinados a proteger grandes rutas de código y atender eventos asincrónicos, no realizan ningún tipo de propagación de prioridad. Deben implementarse a través del <citerefentry><refentrytitle>sleepqueue</refentrytitle><manvolnum>9</manvolnum></citerefentry> interfaz."
            ],
            "id_hash": -7202649708004059000,
            "content_hash": -7202649708004059000,
            "location": "article.translate.xml:974",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 149,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 58,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99547/?format=api",
            "priority": 100,
            "id": 26414,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=1c0b0c4078d8d888",
            "url": "https://translate-dev.freebsd.org/api/units/26414/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.659104Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "The order used to acquire locks is very important, not only for the possibility to deadlock due at lock order reversals, but even because lock acquisition should follow specific rules linked to locks natures. If you give a look at the table above, the practical rule is that if a thread holds a lock of level n (where the level is the number listed close to the kind of lock) it is not allowed to acquire a lock of superior levels, since this would break the specified semantic for a path. For example, if a thread holds a block lock (level 2), it is allowed to acquire a spin lock (level 1) but not a sleep lock (level 3), since block locks are intended to protect smaller paths than sleep lock (these rules are not about atomic operations or scheduling barriers, however)."
            ],
            "previous_source": "",
            "target": [
                "El orden utilizado para adquirir cerraduras es muy importante, no solo por la posibilidad de interbloqueo debido a las inversiones de orden de cerradura, sino incluso porque la adquisición de cerraduras debe seguir reglas específicas vinculadas a la naturaleza de las cerraduras. Si echa un vistazo a la tabla de arriba, la regla práctica es que si un hilo tiene un candado de nivel n (donde el nivel es el número listado cerca del tipo de candado) no está permitido adquirir un candado de niveles superiores , ya que esto rompería la semántica especificada para una ruta. Por ejemplo, si un hilo tiene un bloqueo de bloqueo (nivel 2), se le permite adquirir un bloqueo de giro (nivel 1) pero no un bloqueo de suspensión (nivel 3), ya que los bloqueos de bloqueo están destinados a proteger rutas más pequeñas que el bloqueo de suspensión ( Sin embargo, estas reglas no se refieren a operaciones atómicas o barreras de programación)."
            ],
            "id_hash": -5963740111651629724,
            "content_hash": -5963740111651629724,
            "location": "article.translate.xml:982",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 150,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 142,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99548/?format=api",
            "priority": 100,
            "id": 26415,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=2d3c89f738419564",
            "url": "https://translate-dev.freebsd.org/api/units/26415/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.679690Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "This is a list of lock with their respective behaviors:"
            ],
            "previous_source": "",
            "target": [
                "Esta es una lista de bloqueo con sus respectivos comportamientos:"
            ],
            "id_hash": 4511349752506426902,
            "content_hash": 4511349752506426902,
            "location": "article.translate.xml:997",
            "context": "",
            "note": "(itstool) path: sect4/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 151,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 10,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99549/?format=api",
            "priority": 100,
            "id": 26416,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=be9b88b29fb12616",
            "url": "https://translate-dev.freebsd.org/api/units/26416/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.687779Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "spin mutex - spinning - <citerefentry><refentrytitle>mutex</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "previous_source": "",
            "target": [
                "spin mutex - spinning - <citerefentry><refentrytitle>mutex</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "id_hash": -3969203637927199180,
            "content_hash": -3969203637927199180,
            "location": "article.translate.xml:1002",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 152,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 6,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99550/?format=api",
            "priority": 100,
            "id": 26417,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=48ea8e5230293e34",
            "url": "https://translate-dev.freebsd.org/api/units/26417/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.698766Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "sleep mutex - blocking - <citerefentry><refentrytitle>mutex</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "previous_source": "",
            "target": [
                "sleep mutex - blocking - <citerefentry><refentrytitle>mutex</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "id_hash": -3856989122416263635,
            "content_hash": -3856989122416263635,
            "location": "article.translate.xml:1005",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 153,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 6,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99551/?format=api",
            "priority": 100,
            "id": 26418,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=4a7938d40fd53e2d",
            "url": "https://translate-dev.freebsd.org/api/units/26418/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.706002Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "pool mutex - blocking - <citerefentry><refentrytitle>mtx_pool</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "previous_source": "",
            "target": [
                "pool mutex - blocking - <citerefentry><refentrytitle>mtx_pool</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "id_hash": -2128275090448860328,
            "content_hash": -2128275090448860328,
            "location": "article.translate.xml:1008",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 154,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 6,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99552/?format=api",
            "priority": 100,
            "id": 26419,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=6276d914d17bbb58",
            "url": "https://translate-dev.freebsd.org/api/units/26419/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.717888Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "sleep family - sleeping - <citerefentry><refentrytitle>sleep</refentrytitle><manvolnum>9</manvolnum></citerefentry> pause tsleep msleep msleep spin msleep rw msleep sx"
            ],
            "previous_source": "",
            "target": [
                "dormir familia - dormir - <citerefentry><refentrytitle>sleep</refentrytitle><manvolnum>9</manvolnum></citerefentry> pause tsleep msleep msleep spin msleep rw msleep sx"
            ],
            "id_hash": 5207039934656558972,
            "content_hash": 5207039934656558972,
            "location": "article.translate.xml:1011",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 155,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 15,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99553/?format=api",
            "priority": 100,
            "id": 26420,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=c8431f3b847a377c",
            "url": "https://translate-dev.freebsd.org/api/units/26420/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.727569Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/es/?format=api",
            "source": [
                "condvar - sleeping - <citerefentry><refentrytitle>condvar</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "previous_source": "",
            "target": [
                "condvar - sleeping - <citerefentry><refentrytitle>condvar</refentrytitle><manvolnum>9</manvolnum></citerefentry>"
            ],
            "id_hash": -913199389476327557,
            "content_hash": -913199389476327557,
            "location": "article.translate.xml:1015",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 156,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99554/?format=api",
            "priority": 100,
            "id": 26421,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/es/?checksum=7353a9fe5d28ef7b",
            "url": "https://translate-dev.freebsd.org/api/units/26421/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.735033Z"
        }
    ]
}