Translation components API.

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

GET /api/translations/freebsd-doc/articles_linux-emulation/pt_BR/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/pt_BR/units/?format=api&page=4",
    "previous": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/pt_BR/units/?format=api&page=2",
    "results": [
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/articles_linux-emulation/pt_BR/?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": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 107,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99504/?format=api",
            "priority": 100,
            "id": 26756,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=514a23a8f845ccc4",
            "url": "https://translate-dev.freebsd.org/api/units/26756/?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/pt_BR/?format=api",
            "source": [
                "the last 0 means no signal is sent when any of the threads exits."
            ],
            "previous_source": "",
            "target": [
                "o último 0 significa que nenhum sinal é enviado quando qualquer uma das threads finaliza."
            ],
            "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": 26757,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=da29cdbf82c57f02",
            "url": "https://translate-dev.freebsd.org/api/units/26757/?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/pt_BR/?format=api",
            "source": [
                "What is emulation"
            ],
            "previous_source": "",
            "target": [
                "O que é emulação"
            ],
            "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": 26758,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=d6f7617aed20b941",
            "url": "https://translate-dev.freebsd.org/api/units/26758/?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/pt_BR/?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": [
                "De acordo com uma definição de dicionário, emulação é a capacidade de um programa ou dispositivo de imitar um outro programa ou dispositivo. Isto é conseguido fornecendo a mesma reação a um determinado estímulo que o objeto emulado. Na prática, o mundo do software vê três tipos de emulação - um programa usado para emular uma máquina (QEMU, vários emuladores de consoles de jogos etc.), emulação de software de uma instalação de hardware (emuladores OpenGL, emulação de unidades de ponto flutuante etc.) e emulação do sistema (no kernel do sistema operacional ou como um programa de espaço do usuário)."
            ],
            "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": 26759,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=e61087500eb29a0a",
            "url": "https://translate-dev.freebsd.org/api/units/26759/?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/pt_BR/?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": [
                "Emulação é geralmente usada em um lugar, onde o uso do componente original não é viável nem possível a todos. Por exemplo, alguém pode querer usar um programa desenvolvido para um sistema operacional diferente do que eles usam. Então a emulação vem a calhar. Por vezes, não há outra maneira senão usar emulação - por ex. Quando o dispositivo de hardware que você tenta usar não existe (ainda/mais), então não há outro caminho além da emulação. Isso acontece com frequência ao transferir um sistema operacional para uma nova plataforma (inexistente). Às vezes é mais 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": 26760,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=a7b43db20683fc3b",
            "url": "https://translate-dev.freebsd.org/api/units/26760/?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/pt_BR/?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": [
                "Olhando do ponto de vista da implementação, existem duas abordagens principais para a implementação da emulação. Você pode emular a coisa toda - aceitando possíveis entradas do objeto original, mantendo o estado interno e emitindo a saída correta com base no estado e/ou na entrada. Este tipo de emulação não requer condições especiais e basicamente pode ser implementado em qualquer lugar para qualquer dispositivo/programa. A desvantagem é que a implementação de tal emulação é bastante difícil, demorada e propensa a erros. Em alguns casos, podemos usar uma abordagem mais simples. Imagine que você deseja emular uma impressora que imprime da esquerda para a direita em uma impressora que imprime da direita para a esquerda. É óbvio que não há necessidade de uma camada de emulação complexa, mas a simples reversão do texto impresso é suficiente. Às vezes, o ambiente de emulação é muito semelhante ao emulado, portanto, apenas uma camada fina de alguma tradução é necessária para fornecer uma emulação totalmente funcional! Como você pode ver, isso é muito menos exigente de implementar, portanto, menos demorado e propenso a erros do que a abordagem anterior. Mas a condição necessária é que os dois ambientes sejam semelhantes o suficiente. A terceira abordagem combina os dois anteriores. Na maioria das vezes, os objetos não fornecem os mesmos recursos, portanto, em um caso de emulação, o mais poderoso é o menos poderoso que temos para emular os recursos ausentes com a emulação completa descrita acima."
            ],
            "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": 26761,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=7cd7cb70e56612fc",
            "url": "https://translate-dev.freebsd.org/api/units/26761/?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/pt_BR/?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 tese de mestrado lida com a emulação de <trademark class=\"registered\">UNIX</trademark> em <trademark class=\"registered\">UNIX</trademark>, que é exatamente o caso, onde apenas uma camada fina de tradução é suficiente para fornecer emulação completa. A API do <trademark class=\"registered\">UNIX</trademark> consiste em um conjunto de syscalls, que geralmente são autônomas e não afetam algum estado global do 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": 26762,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=99bbe53d4944dd93",
            "url": "https://translate-dev.freebsd.org/api/units/26762/?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/pt_BR/?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": [
                "Existem algumas syscalls que afetam o estado interno, mas isso pode ser resolvido fornecendo algumas estruturas que mantêm o estado extra."
            ],
            "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": 26763,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=649a12a99f6ab583",
            "url": "https://translate-dev.freebsd.org/api/units/26763/?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/pt_BR/?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": [
                "Nenhuma emulação é perfeita e as emulações tendem a não ter algumas partes, mas isso geralmente não causa nenhuma desvantagem séria. Imagine um emulador de console de jogos que emula tudo, menos a saída de música. Não há dúvida de que os jogos são jogáveis e pode-se usar o emulador. Pode não ser tão confortável quanto o console original, mas é um compromisso aceitável entre preço e conforto."
            ],
            "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": 26764,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=1b62708e11ecca94",
            "url": "https://translate-dev.freebsd.org/api/units/26764/?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/pt_BR/?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": [
                "O mesmo acontece com a API do <trademark class=\"registered\">UNIX</trademark>. A maioria dos programas pode viver com um conjunto muito limitado de syscalls funcionando. Essas syscalls tendem a ser as mais antigas (<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), portanto, é fácil emular porque sua semântica é compartilhada entre todos os <trademark class=\"registered\">UNIX</trademark>, que existem hoje."
            ],
            "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": 26765,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=f51d3c501881c86b",
            "url": "https://translate-dev.freebsd.org/api/units/26765/?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/pt_BR/?format=api",
            "source": [
                "Emulation"
            ],
            "previous_source": "",
            "target": [
                "Emulação"
            ],
            "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": 26766,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=c6558cefff341d32",
            "url": "https://translate-dev.freebsd.org/api/units/26766/?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/pt_BR/?format=api",
            "source": [
                "How emulation works in FreeBSD"
            ],
            "previous_source": "",
            "target": [
                "Como funciona a emulação no 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": 26767,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=554f52c6d5c6140a",
            "url": "https://translate-dev.freebsd.org/api/units/26767/?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/pt_BR/?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 dito anteriormente, o FreeBSD suporta a execução de binários a partir de vários outros <trademark class=\"registered\">UNIX</trademark>. Isso funciona porque o FreeBSD tem uma abstração chamada loader de classes de execução. Isso se encaixa na syscall <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry>, então quando <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> está prestes a executar um binário que examina seu 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": 26768,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=fee05e370c062d73",
            "url": "https://translate-dev.freebsd.org/api/units/26768/?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/pt_BR/?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": [
                "Existem basicamente dois tipos de binários no FreeBSD. Scripts de texto semelhantes a shell que são identificados por <literal>#!</literal> como seus dois primeiros caracteres e binários normais (normalmente <firstterm>ELF</firstterm>), que são uma representação de um objeto executável compilado. A grande maioria (pode-se dizer todos eles) de binários no FreeBSD é do tipo ELF. Os arquivos ELF contêm um cabeçalho, que especifica a ABI do OS para este arquivo ELF. Ao ler essas informações, o sistema operacional pode determinar com precisão o tipo de binário do arquivo fornecido."
            ],
            "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": 26769,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=ee6b833c98e7ad53",
            "url": "https://translate-dev.freebsd.org/api/units/26769/?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/pt_BR/?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": [
                "Toda ABI de OS deve ser registrada no kernel do FreeBSD. Isso também se aplica ao sistema operacional nativo do FreeBSD. Então, quando <citerefentry><refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum></citerefentry> executa um binário, ele itera através da lista de APIs registradas e quando ele encontra a correta, ele começa a usar as informações contidas na descrição da ABI do OS (sua tabela syscall, tabela de tradução <literal>errno</literal>, etc.). Assim, toda vez que o processo chama uma syscall, ele usa seu próprio conjunto de syscalls em vez de uma global. Isso efetivamente fornece uma maneira muito elegante e fácil de suportar a execução de vários formatos binários."
            ],
            "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": 26770,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=1ffdbe99db524981",
            "url": "https://translate-dev.freebsd.org/api/units/26770/?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/pt_BR/?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": [
                "A natureza da emulação de diferentes sistemas operacionais (e também alguns outros subsistemas) levou os desenvolvedores a invitar um mecanismo de evento manipulador. Existem vários locais no kernel, onde uma lista de manipuladores de eventos é chamada. Cada subsistema pode registrar um manipulador de eventos e eles são chamados de acordo com sua necessidade. Por exemplo, quando um processo é encerrado, há um manipulador chamado que possivelmente limpa o que o subsistema que ele  precisa de limpeza."
            ],
            "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": true,
            "num_words": 69,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99520/?format=api",
            "priority": 100,
            "id": 26771,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=3e9991b80d2693d3",
            "url": "https://translate-dev.freebsd.org/api/units/26771/?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/pt_BR/?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": [
                "Essas facilidades simples fornecem basicamente tudo o que é necessário para a infra-estrutura de emulação e, de fato, essas são basicamente as únicas coisas necessárias para implementar a camada de emulação do <trademark class=\"registered\">Linux</trademark>."
            ],
            "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": 26772,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=6ad0f8211d093ec8",
            "url": "https://translate-dev.freebsd.org/api/units/26772/?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/pt_BR/?format=api",
            "source": [
                "Common primitives in the FreeBSD kernel"
            ],
            "previous_source": "",
            "target": [
                "Primitivas comuns no kernel do 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": 26773,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=44b20b8ec7a1ce89",
            "url": "https://translate-dev.freebsd.org/api/units/26773/?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/pt_BR/?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": [
                "Camadas de emulação precisam de algum suporte do sistema operacional. Eu vou descrever algumas das primitivas suportadas no sistema operacional 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": 26774,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=77cf46a75b4a3282",
            "url": "https://translate-dev.freebsd.org/api/units/26774/?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/pt_BR/?format=api",
            "source": [
                "Locking primitives"
            ],
            "previous_source": "",
            "target": [
                "Primitivas de Bloqueio"
            ],
            "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": 26775,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=85ab0536c67c3ae7",
            "url": "https://translate-dev.freebsd.org/api/units/26775/?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/pt_BR/?format=api",
            "source": [
                "Contributed by: Attilio Rao <email>attilio@FreeBSD.org</email>"
            ],
            "previous_source": "",
            "target": [
                "Contribuído 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": 26776,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=44a592a5189f6592",
            "url": "https://translate-dev.freebsd.org/api/units/26776/?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/pt_BR/?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": [
                "O conjunto de primitivas de sincronização do FreeBSD é baseado na idéia de fornecer um grande número de diferentes primitivas de uma maneira que a melhor possa ser usada para cada situação específica e apropriada."
            ],
            "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": 26777,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=d215cd0c1190cab0",
            "url": "https://translate-dev.freebsd.org/api/units/26777/?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/pt_BR/?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": [
                "Para um ponto de vista de alto nível, você pode considerar três tipos de primitivas de sincronização no kernel do 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": 26778,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=bcdeff083ec59306",
            "url": "https://translate-dev.freebsd.org/api/units/26778/?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/pt_BR/?format=api",
            "source": [
                "atomic operations and memory barriers"
            ],
            "previous_source": "",
            "target": [
                "operações atômicas e barreiras de memória"
            ],
            "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": 26779,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=902ef0a8d0502c4b",
            "url": "https://translate-dev.freebsd.org/api/units/26779/?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/pt_BR/?format=api",
            "source": [
                "locks"
            ],
            "previous_source": "",
            "target": [
                "locks"
            ],
            "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": 26780,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=8e3702c695889d5b",
            "url": "https://translate-dev.freebsd.org/api/units/26780/?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/pt_BR/?format=api",
            "source": [
                "scheduling barriers"
            ],
            "previous_source": "",
            "target": [
                "barreiras de agendamento"
            ],
            "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": 26781,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=3973413e170c97a0",
            "url": "https://translate-dev.freebsd.org/api/units/26781/?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/pt_BR/?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": [
                "Abaixo, há descrições para as 3 famílias. Para cada bloqueio, você deve verificar a página de manual vinculada (onde for possível) para obter explicações mais detalhadas."
            ],
            "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": 26782,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=ed43464270488034",
            "url": "https://translate-dev.freebsd.org/api/units/26782/?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/pt_BR/?format=api",
            "source": [
                "Atomic operations and memory barriers"
            ],
            "previous_source": "",
            "target": [
                "Operações atômicas e barreiras de memória"
            ],
            "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": 26783,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=7fe043cd26b6a591",
            "url": "https://translate-dev.freebsd.org/api/units/26783/?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/pt_BR/?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": [
                "Operações atômicas são implementadas através de um conjunto de funções que executam aritmética simples em operandos de memória de maneira atômica com relação a eventos externos (interrupções, preempção, etc.). Operações atômicas podem garantir atomicidade apenas em pequenos tipos de dados (na ordem de magnitude do tipo de dados C da arquitetura <literal>.long.</literal>), portanto raramente devem ser usados diretamente no código de nível final, se não apenas para operações muito simples (como configuração de flags em um bitmap, por exemplo). De fato, é bastante simples e comum escrever uma semântica errada baseada apenas em operações atômicas (geralmente referidas como lock-less). O kernel do FreeBSD oferece uma maneira de realizar operações atômicas em conjunto com uma barreira de memória. As barreiras de memória garantirão que uma operação atômica ocorrerá seguindo alguma ordem especificas em relação a outros acessos à memória. Por exemplo, se precisarmos que uma operação atômica aconteça logo depois que todas as outras gravações pendentes (em termos de instruções reordenando atividades de buffers) forem concluídas, precisamos usar explicitamente uma barreira de memória em conjunto com essa operação atômica. Portanto, é simples entender por que as barreiras de memória desempenham um papel fundamental na construção de bloqueios de alto nível (assim como referências, exclusões mútuas, etc.). Para uma explicação detalhada sobre operações atômicas, consulte <citerefentry><refentrytitle>atomic</refentrytitle><manvolnum>9</manvolnum></citerefentry>. É muito, no entanto, notar que as operações atômicas (e as barreiras de memória também) devem, idealmente, ser usadas apenas para construir bloqueios front-ending (como mutexes)."
            ],
            "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": 26784,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=af50ffa6f4237dc3",
            "url": "https://translate-dev.freebsd.org/api/units/26784/?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/pt_BR/?format=api",
            "source": [
                "Refcounts"
            ],
            "previous_source": "",
            "target": [
                "Refcounts"
            ],
            "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": 26785,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=9475133804121cb0",
            "url": "https://translate-dev.freebsd.org/api/units/26785/?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/pt_BR/?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": [
                "Refcounts são interfaces para manipular contadores de referência. Eles são implementados por meio de operações atômicas e destinam-se a ser usados apenas para casos em que o contador de referência é a única coisa a ser protegida, portanto, até mesmo algo como um spin-mutex é obsoleto. Usar a interface de recontagem para estruturas, onde um mutex já é usado, geralmente está errado, pois provavelmente devemos fechar o contador de referência em alguns caminhos já protegidos. Uma manpage discutindo refcount não existe atualmente, apenas verifique <filename>sys/refcount.h</filename> para uma visão geral da 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": 26786,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=769a1c98de5db898",
            "url": "https://translate-dev.freebsd.org/api/units/26786/?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/pt_BR/?format=api",
            "source": [
                "Locks"
            ],
            "previous_source": "",
            "target": [
                "Locks"
            ],
            "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": 26787,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=06ee696cda582e2b",
            "url": "https://translate-dev.freebsd.org/api/units/26787/?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/pt_BR/?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": [
                "O kernel do FreeBSD tem enormes classes de bloqueios. Cada bloqueio é definido por algumas propriedades peculiares, mas provavelmente o mais importante é o evento vinculado a detentores de contestação (ou, em outros termos, o comportamento de threading incapazes de adquirir o bloqueio). O esquema de bloqueio do FreeBSD apresenta três comportamentos diferentes para contendores:"
            ],
            "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": 26788,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=8302fe68da0e3704",
            "url": "https://translate-dev.freebsd.org/api/units/26788/?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/pt_BR/?format=api",
            "source": [
                "spinning"
            ],
            "previous_source": "",
            "target": [
                "spinning"
            ],
            "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": 26789,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=11848a1862686151",
            "url": "https://translate-dev.freebsd.org/api/units/26789/?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/pt_BR/?format=api",
            "source": [
                "blocking"
            ],
            "previous_source": "",
            "target": [
                "blocking"
            ],
            "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": 26790,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=f3a68c56b9c79627",
            "url": "https://translate-dev.freebsd.org/api/units/26790/?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/pt_BR/?format=api",
            "source": [
                "sleeping"
            ],
            "previous_source": "",
            "target": [
                "sleeping"
            ],
            "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": 26791,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=15d037e1b7a2f826",
            "url": "https://translate-dev.freebsd.org/api/units/26791/?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/pt_BR/?format=api",
            "source": [
                "numbers are not casual"
            ],
            "previous_source": "",
            "target": [
                "números não são casuais"
            ],
            "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": 26792,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=d68926cac6f8ec2e",
            "url": "https://translate-dev.freebsd.org/api/units/26792/?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/pt_BR/?format=api",
            "source": [
                "Spinning locks"
            ],
            "previous_source": "",
            "target": [
                "Spinning locks"
            ],
            "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": 26793,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=6cbcb4c1d7a59758",
            "url": "https://translate-dev.freebsd.org/api/units/26793/?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/pt_BR/?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": [
                "Spin locks permitem que os acumuladores rotacionarem até que eles não consigam adquirir um lock. Uma questão importante é quando um segmento contesta em um spin lock se não for desmarcado. Uma vez que o kernel do FreeBSD é preventivo, isto expõe o spin lock ao risco de deadlocks que podem ser resolvidos apenas desabilitando as interrupções enquanto elas são adquiridas. Por essa e outras razões (como falta de suporte à propagação de prioridade, falta de esquemas de balanceamento de carga entre CPUs, etc.), os spin locks têm a finalidade de proteger endereçamentos muito pequenos de código ou, idealmente, não serem usados se não solicitados explicitamente ( explicado posteriormente)."
            ],
            "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": 26794,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=4175665e6454585f",
            "url": "https://translate-dev.freebsd.org/api/units/26794/?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/pt_BR/?format=api",
            "source": [
                "Blocking"
            ],
            "previous_source": "",
            "target": [
                "Bloqueio"
            ],
            "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": 26795,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=47e095873f9c6496",
            "url": "https://translate-dev.freebsd.org/api/units/26795/?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/pt_BR/?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": [
                "Os locks em blocos permitem que as tarefas dos acumuladores sejam removidas e bloqueados até que o proprietário do bloqueio não os libere e ative um ou mais contendores. Para evitar problemas de fome, os locks em bloco fazem a propagação de prioridade dos acumuladores para o proprietário. Os locks em bloco devem ser implementados por meio da interface turnstile e devem ser o tipo mais usado de bloqueios no kernel, se nenhuma condição específica for atendida."
            ],
            "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": 26796,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=f6307bdf273eefed",
            "url": "https://translate-dev.freebsd.org/api/units/26796/?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/pt_BR/?format=api",
            "source": [
                "Sleeping"
            ],
            "previous_source": "",
            "target": [
                "Sleeping"
            ],
            "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": 26797,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=11c8083a8ff50e11",
            "url": "https://translate-dev.freebsd.org/api/units/26797/?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/pt_BR/?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": [
                "Sleep locks permitem que as tarefas dos waiters sejam removidas e eles adormecem até que o suporte do lock não os deixe cair e desperte um ou mais waiters. Como os sleep locks se destinam a proteger grandes endereçamentos de código e a atender a eventos assíncronos, eles não fazem nenhuma forma de propagação de prioridade. Eles devem ser implementados por meio da interface <citerefentry><refentrytitle>sleepqueue</refentrytitle><manvolnum>9</manvolnum></citerefentry>."
            ],
            "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": 26798,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=1c0b0c4078d8d888",
            "url": "https://translate-dev.freebsd.org/api/units/26798/?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/pt_BR/?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": [
                "A ordem usada para adquirir locks é muito importante, não apenas pela possibilidade de deadlock devido a reversões de ordem de bloqueio, mas também porque a aquisição de lock deve seguir regras específicas vinculadas a naturezas de bloqueios. Se você der uma olhada na tabela acima, a regra prática é que, se um segmento contiver um lock de nível n (onde o nível é o número listado próximo ao tipo de bloqueio), não é permitido adquirir um lock de níveis superiores , pois isso quebraria a semântica especificada para um caminho. Por exemplo, se uma thread contiver um lock em bloco (nível 2), ele poderá adquirir um spin lock (nível 1), mas não um sleep lock (nível 3), pois os locks em bloco são destinados a proteger caminhos menores que o sleep lock ( essas regras não são sobre operações atômicas ou agendamento de barreiras, no entanto)."
            ],
            "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": 26799,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=2d3c89f738419564",
            "url": "https://translate-dev.freebsd.org/api/units/26799/?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/pt_BR/?format=api",
            "source": [
                "This is a list of lock with their respective behaviors:"
            ],
            "previous_source": "",
            "target": [
                "Esta é uma lista de bloqueio com seus respectivos comportamentos:"
            ],
            "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": 26800,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=be9b88b29fb12616",
            "url": "https://translate-dev.freebsd.org/api/units/26800/?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/pt_BR/?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": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 152,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 6,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99550/?format=api",
            "priority": 100,
            "id": 26801,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=48ea8e5230293e34",
            "url": "https://translate-dev.freebsd.org/api/units/26801/?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/pt_BR/?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": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 153,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 6,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99551/?format=api",
            "priority": 100,
            "id": 26802,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=4a7938d40fd53e2d",
            "url": "https://translate-dev.freebsd.org/api/units/26802/?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/pt_BR/?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": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 154,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 6,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99552/?format=api",
            "priority": 100,
            "id": 26803,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=6276d914d17bbb58",
            "url": "https://translate-dev.freebsd.org/api/units/26803/?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/pt_BR/?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": [
                "família sleep - sleeping - <citerefentry><refentrytitle>sleep</refentrytitle><manvolnum>9</manvolnum></citerefentry> pausa 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": 26804,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=c8431f3b847a377c",
            "url": "https://translate-dev.freebsd.org/api/units/26804/?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/pt_BR/?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": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 156,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 5,
            "source_unit": "https://translate-dev.freebsd.org/api/units/99554/?format=api",
            "priority": 100,
            "id": 26805,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/articles_linux-emulation/pt_BR/?checksum=7353a9fe5d28ef7b",
            "url": "https://translate-dev.freebsd.org/api/units/26805/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2019-10-20T12:10:39.735033Z"
        }
    ]
}