Translation components API.

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

GET /api/translations/freebsd-doc/boooks_developers-handbook/fa/units/?format=api&page=42
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 2274,
    "next": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/units/?format=api&page=43",
    "previous": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/units/?format=api&page=41",
    "results": [
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "<function role=\"opcode\">frndint</function> rounds the <acronym>TOS</acronym> to the nearest integer. <function role=\"opcode\">fld1</function> pushes a <constant>1</constant>. <function role=\"opcode\">fscale</function> shifts the <constant>1</constant> we have on the <acronym>TOS</acronym> by the value in <varname role=\"register\">st(1)</varname>, effectively raising 2 to <varname role=\"register\">st(1)</varname>."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 3767844606187069047,
            "content_hash": 3767844606187069047,
            "location": "book.translate.xml:13523",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2127,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 36,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107656/?format=api",
            "priority": 100,
            "id": 190080,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=b44a12b4d8a6de77",
            "url": "https://translate-dev.freebsd.org/api/units/190080/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.111278Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Finally, <function role=\"opcode\">fsqrt</function> calculates the square root of the result, i.e., the nearest normalized f–number."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -6179792189097635202,
            "content_hash": -6179792189097635202,
            "location": "book.translate.xml:13530",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2128,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 15,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107657/?format=api",
            "priority": 100,
            "id": 190081,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=2a3cf7bef71a127e",
            "url": "https://translate-dev.freebsd.org/api/units/190081/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.121313Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "We now have the nearest normalized f–number on the <acronym>TOS</acronym>, the base–2 logarithm rounded to the nearest integer in <varname role=\"register\">st(1)</varname>, and the square of the actual f–number in <varname role=\"register\">st(2)</varname>. We are saving the value in <varname role=\"register\">st(2)</varname> for later."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2879884163239167325,
            "content_hash": 2879884163239167325,
            "location": "book.translate.xml:13534",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2129,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 41,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107658/?format=api",
            "priority": 100,
            "id": 190082,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=a7f767636024c55d",
            "url": "https://translate-dev.freebsd.org/api/units/190082/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.129928Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "But we do not need the contents of <varname role=\"register\">st(1)</varname> anymore. The last line, <function role=\"opcode\">fstp st1</function>, places the contents of <varname role=\"register\">st</varname> to <varname role=\"register\">st(1)</varname>, and pops. As a result, what was <varname role=\"register\">st(1)</varname> is now <varname role=\"register\">st</varname>, what was <varname role=\"register\">st(2)</varname> is now <varname role=\"register\">st(1)</varname>, etc. The new <varname role=\"register\">st</varname> contains the normalized f–number. The new <varname role=\"register\">st(1)</varname> contains the square of the actual f–number we have stored there for posterity."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 5625734228262589584,
            "content_hash": 5625734228262589584,
            "location": "book.translate.xml:13541",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2130,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 73,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107659/?format=api",
            "priority": 100,
            "id": 190083,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=ce129f7964591490",
            "url": "https://translate-dev.freebsd.org/api/units/190083/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.138578Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "At this point, we are ready to output the normalized f–number. Because it is normalized, we will not round it off to four significant digits, but will send it out in its full precision."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8203564430774900584,
            "content_hash": -8203564430774900584,
            "location": "book.translate.xml:13552",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2131,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107660/?format=api",
            "priority": 100,
            "id": 190084,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=0e27159d53a1e898",
            "url": "https://translate-dev.freebsd.org/api/units/190084/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.147100Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "The normalized f-number is useful as long as it is reasonably small and can be found on our light meter. Otherwise we need a different method of determining proper exposure."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -7405414089624555576,
            "content_hash": -7405414089624555576,
            "location": "book.translate.xml:13557",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2132,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 30,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107661/?format=api",
            "priority": 100,
            "id": 190085,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=193aaf1efd416fc8",
            "url": "https://translate-dev.freebsd.org/api/units/190085/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.161481Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Earlier we have figured out the formula of calculating proper exposure at an arbitrary f–number from that measured at a different f–number."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 7937372065583017906,
            "content_hash": 7937372065583017906,
            "location": "book.translate.xml:13562",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2133,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 22,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107662/?format=api",
            "priority": 100,
            "id": 190086,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=ee2735d6f32f2fb2",
            "url": "https://translate-dev.freebsd.org/api/units/190086/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.171335Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Every light meter I have ever seen can determine proper exposure at f5.6. We will, therefore, calculate an <emphasis>\"f5.6 multiplier,\"</emphasis> i.e., by how much we need to multiply the exposure measured at f5.6 to determine the proper exposure for our pinhole camera."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2156470033227604267,
            "content_hash": 2156470033227604267,
            "location": "book.translate.xml:13566",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2134,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 42,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107663/?format=api",
            "priority": 100,
            "id": 190087,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=9ded5211db4e612b",
            "url": "https://translate-dev.freebsd.org/api/units/190087/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.180402Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "From the above formula we know this factor can be calculated by dividing our f–number (the actual one, not the normalized one) by <constant>5.6</constant>, and squaring the result."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3504754305938641872,
            "content_hash": -3504754305938641872,
            "location": "book.translate.xml:13573",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2135,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 28,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107664/?format=api",
            "priority": 100,
            "id": 190088,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=4f5c9c871981ac30",
            "url": "https://translate-dev.freebsd.org/api/units/190088/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.189913Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Mathematically, dividing the square of our f–number by the square of <constant>5.6</constant> will give us the same result."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3280065384999780046,
            "content_hash": -3280065384999780046,
            "location": "book.translate.xml:13578",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2136,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 18,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107665/?format=api",
            "priority": 100,
            "id": 190089,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=527adde92f088132",
            "url": "https://translate-dev.freebsd.org/api/units/190089/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.200259Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Computationally, we do not want to square two numbers when we can only square one. So, the first solution seems better at first."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -5437672337773623387,
            "content_hash": -5437672337773623387,
            "location": "book.translate.xml:13582",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2137,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 23,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107666/?format=api",
            "priority": 100,
            "id": 190090,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=348981d19e0907a5",
            "url": "https://translate-dev.freebsd.org/api/units/190090/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.209718Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "<constant>5.6</constant> is a <emphasis>constant</emphasis>. We do not have to have our <acronym>FPU</acronym> waste precious cycles. We can just tell it to divide the square of the f–number by whatever <constant>5.6²</constant> equals to. Or we can divide the f–number by <constant>5.6</constant>, and then square the result. The two ways now seem equal."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 7846341516013340695,
            "content_hash": 7846341516013340695,
            "location": "book.translate.xml:13588",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2138,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 51,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107667/?format=api",
            "priority": 100,
            "id": 190091,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=ece3ce0980600817",
            "url": "https://translate-dev.freebsd.org/api/units/190091/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.218700Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "But, they are not!"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 5891264316276649234,
            "content_hash": 5891264316276649234,
            "location": "book.translate.xml:13597",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2139,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 4,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107668/?format=api",
            "priority": 100,
            "id": 190092,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=d1c1f9aeb19aad12",
            "url": "https://translate-dev.freebsd.org/api/units/190092/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.227863Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Having studied the principles of photography above, we remember that the <constant>5.6</constant> is actually square root of 2 raised to the fifth power. An <emphasis>irrational</emphasis> number. The square of this number is <emphasis>exactly</emphasis> <constant>32</constant>."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 6445515622990180408,
            "content_hash": 6445515622990180408,
            "location": "book.translate.xml:13599",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2140,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107669/?format=api",
            "priority": 100,
            "id": 190093,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=d973124f2e8f7038",
            "url": "https://translate-dev.freebsd.org/api/units/190093/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.236748Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Not only is <constant>32</constant> an integer, it is a power of 2. We do not need to divide the square of the f–number by <constant>32</constant>. We only need to use <function role=\"opcode\">fscale</function> to shift it right by five positions. In the <acronym>FPU</acronym> lingo it means we will <function role=\"opcode\">fscale</function> it with <varname role=\"register\">st(1)</varname> equal to <constant>-5</constant>. That is <emphasis>much faster</emphasis> than a division."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 3312875118141753756,
            "content_hash": 3312875118141753756,
            "location": "book.translate.xml:13606",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2141,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 63,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107670/?format=api",
            "priority": 100,
            "id": 190094,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=adf9b25e1a11c99c",
            "url": "https://translate-dev.freebsd.org/api/units/190094/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.245274Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "So, now it has become clear why we have saved the square of the f–number on the top of the <acronym>FPU</acronym> stack. The calculation of the f5.6 multiplier is the easiest calculation of this entire program! We will output it rounded to four significant digits."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -5156536948575703013,
            "content_hash": -5156536948575703013,
            "location": "book.translate.xml:13615",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2142,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 45,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107671/?format=api",
            "priority": 100,
            "id": 190095,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=38704cf73cf7f01b",
            "url": "https://translate-dev.freebsd.org/api/units/190095/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.256277Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "There is one more useful number we can calculate: The number of stops our f–number is from f5.6. This may help us if our f–number is just outside the range of our light meter, but we have a shutter which lets us set various speeds, and this shutter uses stops."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 9106124903246464960,
            "content_hash": 9106124903246464960,
            "location": "book.translate.xml:13622",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2143,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 50,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107672/?format=api",
            "priority": 100,
            "id": 190096,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=fe5f745a6a5807c0",
            "url": "https://translate-dev.freebsd.org/api/units/190096/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.265026Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Say, our f–number is 5 stops from f5.6, and the light meter says we should use 1/1000 sec. Then we can set our shutter speed to 1/1000 first, then move the dial by 5 stops."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -567499781759901878,
            "content_hash": -567499781759901878,
            "location": "book.translate.xml:13628",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2144,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 35,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107673/?format=api",
            "priority": 100,
            "id": 190097,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=781fd5f48a16df4a",
            "url": "https://translate-dev.freebsd.org/api/units/190097/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.273788Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "This calculation is quite easy as well. All we have to do is to calculate the base-2 logarithm of the f5.6 multiplier we had just calculated (though we need its value from before we rounded it off). We then output the result rounded to the nearest integer. We do not need to worry about having more than four significant digits in this one: The result is most likely to have only one or two digits anyway."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3439975233069712653,
            "content_hash": -3439975233069712653,
            "location": "book.translate.xml:13633",
            "context": "",
            "note": "(itstool) path: sect3/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2145,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 76,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107674/?format=api",
            "priority": 100,
            "id": 190098,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=5042c0c054bcfaf3",
            "url": "https://translate-dev.freebsd.org/api/units/190098/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.283191Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "FPU Optimizations"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -7231818209246006265,
            "content_hash": -7231818209246006265,
            "location": "book.translate.xml:13645",
            "context": "",
            "note": "(itstool) path: sect2/title",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2146,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107675/?format=api",
            "priority": 100,
            "id": 190099,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=1ba36ba78db0b407",
            "url": "https://translate-dev.freebsd.org/api/units/190099/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.291976Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "In assembly language we can optimize the <acronym>FPU</acronym> code in ways impossible in high languages, including C."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 7028503342464191154,
            "content_hash": 7028503342464191154,
            "location": "book.translate.xml:13647",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2147,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 17,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107676/?format=api",
            "priority": 100,
            "id": 190100,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=e18a428d26394ab2",
            "url": "https://translate-dev.freebsd.org/api/units/190100/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.300982Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Whenever a C function needs to calculate a floating–point value, it loads all necessary variables and constants into <acronym>FPU</acronym> registers. It then does whatever calculation is required to get the correct result. Good C compilers can optimize that part of the code really well."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 7097687243821198784,
            "content_hash": 7097687243821198784,
            "location": "book.translate.xml:13651",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2148,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 44,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107677/?format=api",
            "priority": 100,
            "id": 190101,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=e2800cf16ec8adc0",
            "url": "https://translate-dev.freebsd.org/api/units/190101/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.310087Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "It \"returns\" the value by leaving the result on the <acronym>TOS</acronym>. However, before it returns, it cleans up. Any variables and constants it used in its calculation are now gone from the <acronym>FPU</acronym>."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8772594334384879649,
            "content_hash": 8772594334384879649,
            "location": "book.translate.xml:13658",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2149,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 33,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107678/?format=api",
            "priority": 100,
            "id": 190102,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=f9be8411639d7821",
            "url": "https://translate-dev.freebsd.org/api/units/190102/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.318447Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "It cannot do what we just did above: We calculated the square of the f–number and kept it on the stack for later use by another function."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1769300496684309844,
            "content_hash": 1769300496684309844,
            "location": "book.translate.xml:13664",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2150,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 27,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107679/?format=api",
            "priority": 100,
            "id": 190103,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=988dd16d75ca5d54",
            "url": "https://translate-dev.freebsd.org/api/units/190103/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.326711Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "We <emphasis>knew</emphasis> we would need that value later on. We also knew we had enough room on the stack (which only has room for 8 numbers) to store it there."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 5741852902169948805,
            "content_hash": 5741852902169948805,
            "location": "book.translate.xml:13668",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2151,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 30,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107680/?format=api",
            "priority": 100,
            "id": 190104,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=cfaf28cafa62b285",
            "url": "https://translate-dev.freebsd.org/api/units/190104/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.335211Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "A C compiler has no way of knowing that a value it has on the stack will be required again in the very near future."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 366653196152306439,
            "content_hash": 366653196152306439,
            "location": "book.translate.xml:13673",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2152,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 25,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107681/?format=api",
            "priority": 100,
            "id": 190105,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=85169d23a86b7b07",
            "url": "https://translate-dev.freebsd.org/api/units/190105/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.345630Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Of course, the C programmer may know it. But the only recourse he has is to store the value in a memory variable."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 5105895138258436357,
            "content_hash": 5105895138258436357,
            "location": "book.translate.xml:13677",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2153,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 23,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107682/?format=api",
            "priority": 100,
            "id": 190106,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=c6dbc8937849c105",
            "url": "https://translate-dev.freebsd.org/api/units/190106/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.354841Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "That means, for one, the value will be changed from the 80-bit precision used internally by the <acronym>FPU</acronym> to a C <emphasis>double</emphasis> (64 bits) or even <emphasis>single</emphasis> (32 bits)."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8473406416203843339,
            "content_hash": -8473406416203843339,
            "location": "book.translate.xml:13681",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2154,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 29,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107683/?format=api",
            "priority": 100,
            "id": 190107,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=0a6869c22ca778f5",
            "url": "https://translate-dev.freebsd.org/api/units/190107/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.363657Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "That also means that the value must be moved from the <acronym>TOS</acronym> into the memory, and then back again. Alas, of all <acronym>FPU</acronym> operations, the ones that access the computer memory are the slowest."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 5973274387404212580,
            "content_hash": 5973274387404212580,
            "location": "book.translate.xml:13687",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2155,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107684/?format=api",
            "priority": 100,
            "id": 190108,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=d2e55568572ac964",
            "url": "https://translate-dev.freebsd.org/api/units/190108/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.374869Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "So, whenever programming the <acronym>FPU</acronym> in assembly language, look for the ways of keeping intermediate results on the <acronym>FPU</acronym> stack."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -988919825105767884,
            "content_hash": -988919825105767884,
            "location": "book.translate.xml:13692",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2156,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 20,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107685/?format=api",
            "priority": 100,
            "id": 190109,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=7246a6a8993ab234",
            "url": "https://translate-dev.freebsd.org/api/units/190109/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.384701Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "We can take that idea even further! In our program we are using a <emphasis>constant</emphasis> (the one we named <constant>PC</constant>)."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8064811438628566868,
            "content_hash": -8064811438628566868,
            "location": "book.translate.xml:13696",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2157,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 20,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107686/?format=api",
            "priority": 100,
            "id": 190110,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=101408b9cc0988ac",
            "url": "https://translate-dev.freebsd.org/api/units/190110/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.394711Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "It does not matter how many pinhole diameters we are calculating: 1, 10, 20, 1000, we are always using the same constant. Therefore, we can optimize our program by keeping the constant on the stack all the time."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 6742906599422310453,
            "content_hash": 6742906599422310453,
            "location": "book.translate.xml:13700",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2158,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 38,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107687/?format=api",
            "priority": 100,
            "id": 190111,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=dd939dd3a4343835",
            "url": "https://translate-dev.freebsd.org/api/units/190111/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.403663Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Early on in our program, we are calculating the value of the above constant. We need to divide our input by <constant>10</constant> for every digit in the constant."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -4281944639053031985,
            "content_hash": -4281944639053031985,
            "location": "book.translate.xml:13705",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2159,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 28,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107688/?format=api",
            "priority": 100,
            "id": 190112,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=44937a09995b15cf",
            "url": "https://translate-dev.freebsd.org/api/units/190112/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.411963Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "It is much faster to multiply than to divide. So, at the start of our program, we divide <constant>10</constant> into <constant>1</constant> to obtain <constant>0.1</constant>, which we then keep on the stack: Instead of dividing the input by <constant>10</constant> for every digit, we multiply it by <constant>0.1</constant>."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -4809719098145789852,
            "content_hash": -4809719098145789852,
            "location": "book.translate.xml:13710",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2160,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 46,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107689/?format=api",
            "priority": 100,
            "id": 190113,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=3d4071f6959ba864",
            "url": "https://translate-dev.freebsd.org/api/units/190113/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.420624Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "By the way, we do not input <constant>0.1</constant> directly, even though we could. We have a reason for that: While <constant>0.1</constant> can be expressed with just one decimal place, we do not know how many <emphasis>binary</emphasis> places it takes. We, therefore, let the <acronym>FPU</acronym> calculate its binary value to its own high precision."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2611228202075354943,
            "content_hash": -2611228202075354943,
            "location": "book.translate.xml:13718",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2161,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 53,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107690/?format=api",
            "priority": 100,
            "id": 190114,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=5bc30dc8fbd108c1",
            "url": "https://translate-dev.freebsd.org/api/units/190114/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.429237Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "We are using other constants: We multiply the pinhole diameter by <constant>1000</constant> to convert it from millimeters to microns. We compare numbers to <constant>10000</constant> when we are rounding them off to four significant digits. So, we keep both, <constant>1000</constant> and <constant>10000</constant>, on the stack. And, of course, we reuse the <constant>0.1</constant> when rounding off numbers to four digits."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1888699545286075948,
            "content_hash": 1888699545286075948,
            "location": "book.translate.xml:13726",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2162,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 58,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107691/?format=api",
            "priority": 100,
            "id": 190115,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=9a36023acc37e62c",
            "url": "https://translate-dev.freebsd.org/api/units/190115/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.437872Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "Last but not least, we keep <constant>-5</constant> on the stack. We need it to scale the square of the f–number, instead of dividing it by <constant>32</constant>. It is not by coincidence we load this constant last. That makes it the top of the stack when only the constants are on it. So, when the square of the f–number is being scaled, the <constant>-5</constant> is at <varname role=\"register\">st(1)</varname>, precisely where <function role=\"opcode\">fscale</function> expects it to be."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1749766509883660553,
            "content_hash": 1749766509883660553,
            "location": "book.translate.xml:13736",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 2163,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 75,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107692/?format=api",
            "priority": 100,
            "id": 190116,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=98486b5ebd7d9909",
            "url": "https://translate-dev.freebsd.org/api/units/190116/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.446338Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "It is common to create certain constants from scratch instead of loading them from the memory. That is what we are doing with <constant>-5</constant>:"
            ],
            "previous_source": "",
            "target": [
                "ساخت برخی مقدارهای ثابت از ابتدا به جای بارگیری آنها از حافظه امری رایج است. این همان کاریست که با <constant>-5</constant> انجام می‌دهیم:"
            ],
            "id_hash": 5109115538294521607,
            "content_hash": 5109115538294521607,
            "location": "book.translate.xml:13747",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2164,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 24,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107693/?format=api",
            "priority": 100,
            "id": 190117,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=c6e7398348793f07",
            "url": "https://translate-dev.freebsd.org/api/units/190117/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.454415Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "\tfld1\t\t\t; TOS =  1\n\tfadd\tst0, st0\t; TOS =  2\n\tfadd\tst0, st0\t; TOS =  4\n\tfld1\t\t\t; TOS =  1\n\tfaddp\tst1, st0\t; TOS =  5\n\tfchs\t\t\t; TOS = -5"
            ],
            "previous_source": "",
            "target": [
                "\tfld1\t\t\t; TOS =  1\n\tfadd\tst0, st0\t; TOS =  2\n\tfadd\tst0, st0\t; TOS =  4\n\tfld1\t\t\t; TOS =  1\n\tfaddp\tst1, st0\t; TOS =  5\n\tfchs\t\t\t; TOS = -5"
            ],
            "id_hash": -1868010080821691878,
            "content_hash": -1868010080821691878,
            "location": "book.translate.xml:13751",
            "context": "",
            "note": "(itstool) path: sect2/programlisting",
            "flags": "no-wrap",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2165,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 36,
            "source_unit": "https://translate-dev.freebsd.org/api/units/92253/?format=api",
            "priority": 100,
            "id": 190118,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=66137eba87c63a1a",
            "url": "https://translate-dev.freebsd.org/api/units/190118/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.463404Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "We can generalize all these optimizations into one rule: <emphasis>Keep repeat values on the stack!</emphasis>"
            ],
            "previous_source": "",
            "target": [
                "می‌توانیم تمام این بهینه‌سازی‌ها را در قالب یک حکم تعمیم دهیم: <emphasis>مقدارهای تکراری را در پشته نگاه دار!</emphasis>"
            ],
            "id_hash": -3775556738510070225,
            "content_hash": -3775556738510070225,
            "location": "book.translate.xml:13758",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2166,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 15,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107694/?format=api",
            "priority": 100,
            "id": 190119,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=4b9a87266bc65e2f",
            "url": "https://translate-dev.freebsd.org/api/units/190119/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.471477Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "<emphasis><trademark class=\"registered\">PostScript</trademark></emphasis> is a stack–oriented programming language. There are many more books available about <trademark class=\"registered\">PostScript</trademark> than about the <acronym>FPU</acronym> assembly language: Mastering <trademark class=\"registered\">PostScript</trademark> will help you master the <acronym>FPU</acronym>."
            ],
            "previous_source": "",
            "target": [
                "<emphasis><trademark class=\"registered\">PostScript</trademark></emphasis> یک زبان برنامه‌نویسیِ پشته‌محور است. کتاب‌های بیشتری با موضوع <trademark class=\"registered\">PostScript</trademark> نسبت به زبان اسمبلیِ <acronym>FPU</acronym> در دسترس است: مهارت در <trademark class=\"registered\">PostScript</trademark> به شما کمک می‌کند تا در <acronym>FPU</acronym> مهارت پیدا کنید."
            ],
            "id_hash": 2432770344906227768,
            "content_hash": 2432770344906227768,
            "location": "book.translate.xml:13762",
            "context": "",
            "note": "(itstool) path: tip/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2167,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 31,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107695/?format=api",
            "priority": 100,
            "id": 190120,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=a1c2efbd443d8038",
            "url": "https://translate-dev.freebsd.org/api/units/190120/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.482631Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "<application>pinhole</application>—The Code"
            ],
            "previous_source": "",
            "target": [
                "<application>pinhole</application>—کد"
            ],
            "id_hash": -1531671275355463432,
            "content_hash": -1531671275355463432,
            "location": "book.translate.xml:13772",
            "context": "",
            "note": "(itstool) path: sect2/title",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2168,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107696/?format=api",
            "priority": 100,
            "id": 190121,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=6abe691717c4a0f8",
            "url": "https://translate-dev.freebsd.org/api/units/190121/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.491227Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                ";;;;;;; pinhole.asm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;\n; Find various parameters of a pinhole camera construction and use\n;\n; Started:\t 9-Jun-2001\n; Updated:\t10-Jun-2001\n;\n; Copyright (c) 2001 G. Adam Stanislav\n; All rights reserved.\n;\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\n%include\t'system.inc'\n\n%define\tBUFSIZE\t2048\n\nsection\t.data\nalign 4\nten\tdd\t10\nthousand\tdd\t1000\ntthou\tdd\t10000\nfd.in\tdd\tstdin\nfd.out\tdd\tstdout\nenvar\tdb\t'PINHOLE='\t; Exactly 8 bytes, or 2 dwords long\npinhole\tdb\t'04,', \t\t; Bender's constant (0.04)\nconnors\tdb\t'037', 0Ah\t; Connors' constant\nusg\tdb\t'Usage: pinhole [-b] [-c] [-e] [-p &lt;value&gt;] [-o &lt;outfile&gt;] [-i &lt;infile&gt;]', 0Ah\nusglen\tequ\t$-usg\niemsg\tdb\t\"pinhole: Can't open input file\", 0Ah\niemlen\tequ\t$-iemsg\noemsg\tdb\t\"pinhole: Can't create output file\", 0Ah\noemlen\tequ\t$-oemsg\npinmsg\tdb\t\"pinhole: The PINHOLE constant must not be 0\", 0Ah\npinlen\tequ\t$-pinmsg\ntoobig\tdb\t\"pinhole: The PINHOLE constant may not exceed 18 decimal places\", 0Ah\nbiglen\tequ\t$-toobig\nhuhmsg\tdb\t9, '???'\nsepar\tdb\t9, '???'\nsep2\tdb\t9, '???'\nsep3\tdb\t9, '???'\nsep4\tdb\t9, '???', 0Ah\nhuhlen\tequ\t$-huhmsg\nheader\tdb\t'focal length in millimeters,pinhole diameter in microns,'\n\tdb\t'F-number,normalized F-number,F-5.6 multiplier,stops '\n\tdb\t'from F-5.6', 0Ah\nheadlen\tequ\t$-header\n\nsection .bss\nibuffer\tresb\tBUFSIZE\nobuffer\tresb\tBUFSIZE\ndbuffer\tresb\t20\t\t; decimal input buffer\nbbuffer\tresb\t10\t\t; BCD buffer\n\nsection\t.text\nalign 4\nhuh:\n\tcall\twrite\n\tpush\tdword huhlen\n\tpush\tdword huhmsg\n\tpush\tdword [fd.out]\n\tsys.write\n\tadd\tesp, byte 12\n\tret\n\nalign 4\nperr:\n\tpush\tdword pinlen\n\tpush\tdword pinmsg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 4\t\t; return failure\n\tsys.exit\n\nalign 4\nconsttoobig:\n\tpush\tdword biglen\n\tpush\tdword toobig\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 5\t\t; return failure\n\tsys.exit\n\nalign 4\nierr:\n\tpush\tdword iemlen\n\tpush\tdword iemsg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 1\t\t; return failure\n\tsys.exit\n\nalign 4\noerr:\n\tpush\tdword oemlen\n\tpush\tdword oemsg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 2\n\tsys.exit\n\nalign 4\nusage:\n\tpush\tdword usglen\n\tpush\tdword usg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 3\n\tsys.exit\n\nalign 4\nglobal\t_start\n_start:\n\tadd\tesp, byte 8\t; discard argc and argv[0]\n\tsub\tesi, esi\n\n.arg:\n\tpop\tecx\n\tor\tecx, ecx\n\tje\tnear .getenv\t\t; no more arguments\n\n\t; ECX contains the pointer to an argument\n\tcmp\tbyte [ecx], '-'\n\tjne\tusage\n\n\tinc\tecx\n\tmov\tax, [ecx]\n\tinc\tecx\n\n.o:\n\tcmp\tal, 'o'\n\tjne\t.i\n\n\t; Make sure we are not asked for the output file twice\n\tcmp\tdword [fd.out], stdout\n\tjne\tusage\n\n\t; Find the path to output file - it is either at [ECX+1],\n\t; i.e., -ofile --\n\t; or in the next argument,\n\t; i.e., -o file\n\n\tor\tah, ah\n\tjne\t.openoutput\n\tpop\tecx\n\tjecxz\tusage\n\n.openoutput:\n\tpush\tdword 420\t; file mode (644 octal)\n\tpush\tdword 0200h | 0400h | 01h\n\t; O_CREAT | O_TRUNC | O_WRONLY\n\tpush\tecx\n\tsys.open\n\tjc\tnear oerr\n\n\tadd\tesp, byte 12\n\tmov\t[fd.out], eax\n\tjmp\tshort .arg\n\n.i:\n\tcmp\tal, 'i'\n\tjne\t.p\n\n\t; Make sure we are not asked twice\n\tcmp\tdword [fd.in], stdin\n\tjne\tnear usage\n\n\t; Find the path to the input file\n\tor\tah, ah\n\tjne\t.openinput\n\tpop\tecx\n\tor\tecx, ecx\n\tje near usage\n\n.openinput:\n\tpush\tdword 0\t\t; O_RDONLY\n\tpush\tecx\n\tsys.open\n\tjc\tnear ierr\t\t; open failed\n\n\tadd\tesp, byte 8\n\tmov\t[fd.in], eax\n\tjmp\t.arg\n\n.p:\n\tcmp\tal, 'p'\n\tjne\t.c\n\tor\tah, ah\n\tjne\t.pcheck\n\n\tpop\tecx\n\tor\tecx, ecx\n\tje\tnear usage\n\n\tmov\tah, [ecx]\n\n.pcheck:\n\tcmp\tah, '0'\n\tjl\tnear usage\n\tcmp\tah, '9'\n\tja\tnear usage\n\tmov\tesi, ecx\n\tjmp\t.arg\n\n.c:\n\tcmp\tal, 'c'\n\tjne\t.b\n\tor\tah, ah\n\tjne\tnear usage\n\tmov\tesi, connors\n\tjmp\t.arg\n\n.b:\n\tcmp\tal, 'b'\n\tjne\t.e\n\tor\tah, ah\n\tjne\tnear usage\n\tmov\tesi, pinhole\n\tjmp\t.arg\n\n.e:\n\tcmp\tal, 'e'\n\tjne\tnear usage\n\tor\tah, ah\n\tjne\tnear usage\n\tmov\tal, ','\n\tmov\t[huhmsg], al\n\tmov\t[separ], al\n\tmov\t[sep2], al\n\tmov\t[sep3], al\n\tmov\t[sep4], al\n\tjmp\t.arg\n\nalign 4\n.getenv:\n\t; If ESI = 0, we did not have a -p argument,\n\t; and need to check the environment for \"PINHOLE=\"\n\tor\tesi, esi\n\tjne\t.init\n\n\tsub\tecx, ecx\n\n.nextenv:\n\tpop\tesi\n\tor\tesi, esi\n\tje\t.default\t; no PINHOLE envar found\n\n\t; check if this envar starts with 'PINHOLE='\n\tmov\tedi, envar\n\tmov\tcl, 2\t\t; 'PINHOLE=' is 2 dwords long\nrep\tcmpsd\n\tjne\t.nextenv\n\n\t; Check if it is followed by a digit\n\tmov\tal, [esi]\n\tcmp\tal, '0'\n\tjl\t.default\n\tcmp\tal, '9'\n\tjbe\t.init\n\t; fall through\n\nalign 4\n.default:\n\t; We got here because we had no -p argument,\n\t; and did not find the PINHOLE envar.\n\tmov\tesi, pinhole\n\t; fall through\n\nalign 4\n.init:\n\tsub\teax, eax\n\tsub\tebx, ebx\n\tsub\tecx, ecx\n\tsub\tedx, edx\n\tmov\tedi, dbuffer+1\n\tmov\tbyte [dbuffer], '0'\n\n\t; Convert the pinhole constant to real\n.constloop:\n\tlodsb\n\tcmp\tal, '9'\n\tja\t.setconst\n\tcmp\tal, '0'\n\tje\t.processconst\n\tjb\t.setconst\n\n\tinc\tdl\n\n.processconst:\n\tinc\tcl\n\tcmp\tcl, 18\n\tja\tnear consttoobig\n\tstosb\n\tjmp\tshort .constloop\n\nalign 4\n.setconst:\n\tor\tdl, dl\n\tje\tnear perr\n\n\tfinit\n\tfild\tdword [tthou]\n\n\tfld1\n\tfild\tdword [ten]\n\tfdivp\tst1, st0\n\n\tfild\tdword [thousand]\n\tmov\tedi, obuffer\n\n\tmov\tebp, ecx\n\tcall\tbcdload\n\n.constdiv:\n\tfmul\tst0, st2\n\tloop\t.constdiv\n\n\tfld1\n\tfadd\tst0, st0\n\tfadd\tst0, st0\n\tfld1\n\tfaddp\tst1, st0\n\tfchs\n\n\t; If we are creating a CSV file,\n\t; print header\n\tcmp\tbyte [separ], ','\n\tjne\t.bigloop\n\n\tpush\tdword headlen\n\tpush\tdword header\n\tpush\tdword [fd.out]\n\tsys.write\n\n.bigloop:\n\tcall\tgetchar\n\tjc\tnear done\n\n\t; Skip to the end of the line if you got '#'\n\tcmp\tal, '#'\n\tjne\t.num\n\tcall\tskiptoeol\n\tjmp\tshort .bigloop\n\n.num:\n\t; See if you got a number\n\tcmp\tal, '0'\n\tjl\t.bigloop\n\tcmp\tal, '9'\n\tja\t.bigloop\n\n\t; Yes, we have a number\n\tsub\tebp, ebp\n\tsub\tedx, edx\n\n.number:\n\tcmp\tal, '0'\n\tje\t.number0\n\tmov\tdl, 1\n\n.number0:\n\tor\tdl, dl\t\t; Skip leading 0's\n\tje\t.nextnumber\n\tpush\teax\n\tcall\tputchar\n\tpop\teax\n\tinc\tebp\n\tcmp\tebp, 19\n\tjae\t.nextnumber\n\tmov\t[dbuffer+ebp], al\n\n.nextnumber:\n\tcall\tgetchar\n\tjc\t.work\n\tcmp\tal, '#'\n\tje\t.ungetc\n\tcmp\tal, '0'\n\tjl\t.work\n\tcmp\tal, '9'\n\tja\t.work\n\tjmp\tshort .number\n\n.ungetc:\n\tdec\tesi\n\tinc\tebx\n\n.work:\n\t; Now, do all the work\n\tor\tdl, dl\n\tje\tnear .work0\n\n\tcmp\tebp, 19\n\tjae\tnear .toobig\n\n\tcall\tbcdload\n\n\t; Calculate pinhole diameter\n\n\tfld\tst0\t; save it\n\tfsqrt\n\tfmul\tst0, st3\n\tfld\tst0\n\tfmul\tst5\n\tsub\tebp, ebp\n\n\t; Round off to 4 significant digits\n.diameter:\n\tfcom\tst0, st7\n\tfstsw\tax\n\tsahf\n\tjb\t.printdiameter\n\tfmul\tst0, st6\n\tinc\tebp\n\tjmp\tshort .diameter\n\n.printdiameter:\n\tcall\tprintnumber\t; pinhole diameter\n\n\t; Calculate F-number\n\n\tfdivp\tst1, st0\n\tfld\tst0\n\n\tsub\tebp, ebp\n\n.fnumber:\n\tfcom\tst0, st6\n\tfstsw\tax\n\tsahf\n\tjb\t.printfnumber\n\tfmul\tst0, st5\n\tinc\tebp\n\tjmp\tshort .fnumber\n\n.printfnumber:\n\tcall\tprintnumber\t; F number\n\n\t; Calculate normalized F-number\n\tfmul\tst0, st0\n\tfld1\n\tfld\tst1\n\tfyl2x\n\tfrndint\n\tfld1\n\tfscale\n\tfsqrt\n\tfstp\tst1\n\n\tsub\tebp, ebp\n\tcall\tprintnumber\n\n\t; Calculate time multiplier from F-5.6\n\n\tfscale\n\tfld\tst0\n\n\t; Round off to 4 significant digits\n.fmul:\n\tfcom\tst0, st6\n\tfstsw\tax\n\tsahf\n\n\tjb\t.printfmul\n\tinc\tebp\n\tfmul\tst0, st5\n\tjmp\tshort .fmul\n\n.printfmul:\n\tcall\tprintnumber\t; F multiplier\n\n\t; Calculate F-stops from 5.6\n\n\tfld1\n\tfxch\tst1\n\tfyl2x\n\n\tsub\tebp, ebp\n\tcall\tprintnumber\n\n\tmov\tal, 0Ah\n\tcall\tputchar\n\tjmp\t.bigloop\n\n.work0:\n\tmov\tal, '0'\n\tcall\tputchar\n\nalign 4\n.toobig:\n\tcall\thuh\n\tjmp\t.bigloop\n\nalign 4\ndone:\n\tcall\twrite\t\t; flush output buffer\n\n\t; close files\n\tpush\tdword [fd.in]\n\tsys.close\n\n\tpush\tdword [fd.out]\n\tsys.close\n\n\tfinit\n\n\t; return success\n\tpush\tdword 0\n\tsys.exit\n\nalign 4\nskiptoeol:\n\t; Keep reading until you come to cr, lf, or eof\n\tcall\tgetchar\n\tjc\tdone\n\tcmp\tal, 0Ah\n\tjne\t.cr\n\tret\n\n.cr:\n\tcmp\tal, 0Dh\n\tjne\tskiptoeol\n\tret\n\nalign 4\ngetchar:\n\tor\tebx, ebx\n\tjne\t.fetch\n\n\tcall\tread\n\n.fetch:\n\tlodsb\n\tdec\tebx\n\tclc\n\tret\n\nread:\n\tjecxz\t.read\n\tcall\twrite\n\n.read:\n\tpush\tdword BUFSIZE\n\tmov\tesi, ibuffer\n\tpush\tesi\n\tpush\tdword [fd.in]\n\tsys.read\n\tadd\tesp, byte 12\n\tmov\tebx, eax\n\tor\teax, eax\n\tje\t.empty\n\tsub\teax, eax\n\tret\n\nalign 4\n.empty:\n\tadd\tesp, byte 4\n\tstc\n\tret\n\nalign 4\nputchar:\n\tstosb\n\tinc\tecx\n\tcmp\tecx, BUFSIZE\n\tje\twrite\n\tret\n\nalign 4\nwrite:\n\tjecxz\t.ret\t; nothing to write\n\tsub\tedi, ecx\t; start of buffer\n\tpush\tecx\n\tpush\tedi\n\tpush\tdword [fd.out]\n\tsys.write\n\tadd\tesp, byte 12\n\tsub\teax, eax\n\tsub\tecx, ecx\t; buffer is empty now\n.ret:\n\tret\n\nalign 4\nbcdload:\n\t; EBP contains the number of chars in dbuffer\n\tpush\tecx\n\tpush\tesi\n\tpush\tedi\n\n\tlea\tecx, [ebp+1]\n\tlea\tesi, [dbuffer+ebp-1]\n\tshr\tecx, 1\n\n\tstd\n\n\tmov\tedi, bbuffer\n\tsub\teax, eax\n\tmov\t[edi], eax\n\tmov\t[edi+4], eax\n\tmov\t[edi+2], ax\n\n.loop:\n\tlodsw\n\tsub\tax, 3030h\n\tshl\tal, 4\n\tor\tal, ah\n\tmov\t[edi], al\n\tinc\tedi\n\tloop\t.loop\n\n\tfbld\t[bbuffer]\n\n\tcld\n\tpop\tedi\n\tpop\tesi\n\tpop\tecx\n\tsub\teax, eax\n\tret\n\nalign 4\nprintnumber:\n\tpush\tebp\n\tmov\tal, [separ]\n\tcall\tputchar\n\n\t; Print the integer at the TOS\n\tmov\tebp, bbuffer+9\n\tfbstp\t[bbuffer]\n\n\t; Check the sign\n\tmov\tal, [ebp]\n\tdec\tebp\n\tor\tal, al\n\tjns\t.leading\n\n\t; We got a negative number (should never happen)\n\tmov\tal, '-'\n\tcall\tputchar\n\n.leading:\n\t; Skip leading zeros\n\tmov\tal, [ebp]\n\tdec\tebp\n\tor\tal, al\n\tjne\t.first\n\tcmp\tebp, bbuffer\n\tjae\t.leading\n\n\t; We are here because the result was 0.\n\t; Print '0' and return\n\tmov\tal, '0'\n\tjmp\tputchar\n\n.first:\n\t; We have found the first non-zero.\n\t; But it is still packed\n\ttest\tal, 0F0h\n\tjz\t.second\n\tpush\teax\n\tshr\tal, 4\n\tadd\tal, '0'\n\tcall\tputchar\n\tpop\teax\n\tand\tal, 0Fh\n\n.second:\n\tadd\tal, '0'\n\tcall\tputchar\n\n.next:\n\tcmp\tebp, bbuffer\n\tjb\t.done\n\n\tmov\tal, [ebp]\n\tpush\teax\n\tshr\tal, 4\n\tadd\tal, '0'\n\tcall\tputchar\n\tpop\teax\n\tand\tal, 0Fh\n\tadd\tal, '0'\n\tcall\tputchar\n\n\tdec\tebp\n\tjmp\tshort .next\n\n.done:\n\tpop\tebp\n\tor\tebp, ebp\n\tje\t.ret\n\n.zeros:\n\tmov\tal, '0'\n\tcall\tputchar\n\tdec\tebp\n\tjne\t.zeros\n\n.ret:\n\tret"
            ],
            "previous_source": "",
            "target": [
                ";;;;;;; pinhole.asm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n;\n; Find various parameters of a pinhole camera construction and use\n;\n; Started:\t 9-Jun-2001\n; Updated:\t10-Jun-2001\n;\n; Copyright (c) 2001 G. Adam Stanislav\n; All rights reserved.\n;\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\n%include\t'system.inc'\n\n%define\tBUFSIZE\t2048\n\nsection\t.data\nalign 4\nten\tdd\t10\nthousand\tdd\t1000\ntthou\tdd\t10000\nfd.in\tdd\tstdin\nfd.out\tdd\tstdout\nenvar\tdb\t'PINHOLE='\t; Exactly 8 bytes, or 2 dwords long\npinhole\tdb\t'04,', \t\t; Bender's constant (0.04)\nconnors\tdb\t'037', 0Ah\t; Connors' constant\nusg\tdb\t'Usage: pinhole [-b] [-c] [-e] [-p &lt;value&gt;] [-o &lt;outfile&gt;] [-i &lt;infile&gt;]', 0Ah\nusglen\tequ\t$-usg\niemsg\tdb\t\"pinhole: Can't open input file\", 0Ah\niemlen\tequ\t$-iemsg\noemsg\tdb\t\"pinhole: Can't create output file\", 0Ah\noemlen\tequ\t$-oemsg\npinmsg\tdb\t\"pinhole: The PINHOLE constant must not be 0\", 0Ah\npinlen\tequ\t$-pinmsg\ntoobig\tdb\t\"pinhole: The PINHOLE constant may not exceed 18 decimal places\", 0Ah\nbiglen\tequ\t$-toobig\nhuhmsg\tdb\t9, '???'\nsepar\tdb\t9, '???'\nsep2\tdb\t9, '???'\nsep3\tdb\t9, '???'\nsep4\tdb\t9, '???', 0Ah\nhuhlen\tequ\t$-huhmsg\nheader\tdb\t'focal length in millimeters,pinhole diameter in microns,'\n\tdb\t'F-number,normalized F-number,F-5.6 multiplier,stops '\n\tdb\t'from F-5.6', 0Ah\nheadlen\tequ\t$-header\n\nsection .bss\nibuffer\tresb\tBUFSIZE\nobuffer\tresb\tBUFSIZE\ndbuffer\tresb\t20\t\t; decimal input buffer\nbbuffer\tresb\t10\t\t; BCD buffer\n\nsection\t.text\nalign 4\nhuh:\n\tcall\twrite\n\tpush\tdword huhlen\n\tpush\tdword huhmsg\n\tpush\tdword [fd.out]\n\tsys.write\n\tadd\tesp, byte 12\n\tret\n\nalign 4\nperr:\n\tpush\tdword pinlen\n\tpush\tdword pinmsg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 4\t\t; return failure\n\tsys.exit\n\nalign 4\nconsttoobig:\n\tpush\tdword biglen\n\tpush\tdword toobig\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 5\t\t; return failure\n\tsys.exit\n\nalign 4\nierr:\n\tpush\tdword iemlen\n\tpush\tdword iemsg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 1\t\t; return failure\n\tsys.exit\n\nalign 4\noerr:\n\tpush\tdword oemlen\n\tpush\tdword oemsg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 2\n\tsys.exit\n\nalign 4\nusage:\n\tpush\tdword usglen\n\tpush\tdword usg\n\tpush\tdword stderr\n\tsys.write\n\tpush\tdword 3\n\tsys.exit\n\nalign 4\nglobal\t_start\n_start:\n\tadd\tesp, byte 8\t; discard argc and argv[0]\n\tsub\tesi, esi\n\n.arg:\n\tpop\tecx\n\tor\tecx, ecx\n\tje\tnear .getenv\t\t; no more arguments\n\n\t; ECX contains the pointer to an argument\n\tcmp\tbyte [ecx], '-'\n\tjne\tusage\n\n\tinc\tecx\n\tmov\tax, [ecx]\n\tinc\tecx\n\n.o:\n\tcmp\tal, 'o'\n\tjne\t.i\n\n\t; Make sure we are not asked for the output file twice\n\tcmp\tdword [fd.out], stdout\n\tjne\tusage\n\n\t; Find the path to output file - it is either at [ECX+1],\n\t; i.e., -ofile --\n\t; or in the next argument,\n\t; i.e., -o file\n\n\tor\tah, ah\n\tjne\t.openoutput\n\tpop\tecx\n\tjecxz\tusage\n\n.openoutput:\n\tpush\tdword 420\t; file mode (644 octal)\n\tpush\tdword 0200h | 0400h | 01h\n\t; O_CREAT | O_TRUNC | O_WRONLY\n\tpush\tecx\n\tsys.open\n\tjc\tnear oerr\n\n\tadd\tesp, byte 12\n\tmov\t[fd.out], eax\n\tjmp\tshort .arg\n\n.i:\n\tcmp\tal, 'i'\n\tjne\t.p\n\n\t; Make sure we are not asked twice\n\tcmp\tdword [fd.in], stdin\n\tjne\tnear usage\n\n\t; Find the path to the input file\n\tor\tah, ah\n\tjne\t.openinput\n\tpop\tecx\n\tor\tecx, ecx\n\tje near usage\n\n.openinput:\n\tpush\tdword 0\t\t; O_RDONLY\n\tpush\tecx\n\tsys.open\n\tjc\tnear ierr\t\t; open failed\n\n\tadd\tesp, byte 8\n\tmov\t[fd.in], eax\n\tjmp\t.arg\n\n.p:\n\tcmp\tal, 'p'\n\tjne\t.c\n\tor\tah, ah\n\tjne\t.pcheck\n\n\tpop\tecx\n\tor\tecx, ecx\n\tje\tnear usage\n\n\tmov\tah, [ecx]\n\n.pcheck:\n\tcmp\tah, '0'\n\tjl\tnear usage\n\tcmp\tah, '9'\n\tja\tnear usage\n\tmov\tesi, ecx\n\tjmp\t.arg\n\n.c:\n\tcmp\tal, 'c'\n\tjne\t.b\n\tor\tah, ah\n\tjne\tnear usage\n\tmov\tesi, connors\n\tjmp\t.arg\n\n.b:\n\tcmp\tal, 'b'\n\tjne\t.e\n\tor\tah, ah\n\tjne\tnear usage\n\tmov\tesi, pinhole\n\tjmp\t.arg\n\n.e:\n\tcmp\tal, 'e'\n\tjne\tnear usage\n\tor\tah, ah\n\tjne\tnear usage\n\tmov\tal, ','\n\tmov\t[huhmsg], al\n\tmov\t[separ], al\n\tmov\t[sep2], al\n\tmov\t[sep3], al\n\tmov\t[sep4], al\n\tjmp\t.arg\n\nalign 4\n.getenv:\n\t; If ESI = 0, we did not have a -p argument,\n\t; and need to check the environment for \"PINHOLE=\"\n\tor\tesi, esi\n\tjne\t.init\n\n\tsub\tecx, ecx\n\n.nextenv:\n\tpop\tesi\n\tor\tesi, esi\n\tje\t.default\t; no PINHOLE envar found\n\n\t; check if this envar starts with 'PINHOLE='\n\tmov\tedi, envar\n\tmov\tcl, 2\t\t; 'PINHOLE=' is 2 dwords long\nrep\tcmpsd\n\tjne\t.nextenv\n\n\t; Check if it is followed by a digit\n\tmov\tal, [esi]\n\tcmp\tal, '0'\n\tjl\t.default\n\tcmp\tal, '9'\n\tjbe\t.init\n\t; fall through\n\nalign 4\n.default:\n\t; We got here because we had no -p argument,\n\t; and did not find the PINHOLE envar.\n\tmov\tesi, pinhole\n\t; fall through\n\nalign 4\n.init:\n\tsub\teax, eax\n\tsub\tebx, ebx\n\tsub\tecx, ecx\n\tsub\tedx, edx\n\tmov\tedi, dbuffer+1\n\tmov\tbyte [dbuffer], '0'\n\n\t; Convert the pinhole constant to real\n.constloop:\n\tlodsb\n\tcmp\tal, '9'\n\tja\t.setconst\n\tcmp\tal, '0'\n\tje\t.processconst\n\tjb\t.setconst\n\n\tinc\tdl\n\n.processconst:\n\tinc\tcl\n\tcmp\tcl, 18\n\tja\tnear consttoobig\n\tstosb\n\tjmp\tshort .constloop\n\nalign 4\n.setconst:\n\tor\tdl, dl\n\tje\tnear perr\n\n\tfinit\n\tfild\tdword [tthou]\n\n\tfld1\n\tfild\tdword [ten]\n\tfdivp\tst1, st0\n\n\tfild\tdword [thousand]\n\tmov\tedi, obuffer\n\n\tmov\tebp, ecx\n\tcall\tbcdload\n\n.constdiv:\n\tfmul\tst0, st2\n\tloop\t.constdiv\n\n\tfld1\n\tfadd\tst0, st0\n\tfadd\tst0, st0\n\tfld1\n\tfaddp\tst1, st0\n\tfchs\n\n\t; If we are creating a CSV file,\n\t; print header\n\tcmp\tbyte [separ], ','\n\tjne\t.bigloop\n\n\tpush\tdword headlen\n\tpush\tdword header\n\tpush\tdword [fd.out]\n\tsys.write\n\n.bigloop:\n\tcall\tgetchar\n\tjc\tnear done\n\n\t; Skip to the end of the line if you got '#'\n\tcmp\tal, '#'\n\tjne\t.num\n\tcall\tskiptoeol\n\tjmp\tshort .bigloop\n\n.num:\n\t; See if you got a number\n\tcmp\tal, '0'\n\tjl\t.bigloop\n\tcmp\tal, '9'\n\tja\t.bigloop\n\n\t; Yes, we have a number\n\tsub\tebp, ebp\n\tsub\tedx, edx\n\n.number:\n\tcmp\tal, '0'\n\tje\t.number0\n\tmov\tdl, 1\n\n.number0:\n\tor\tdl, dl\t\t; Skip leading 0's\n\tje\t.nextnumber\n\tpush\teax\n\tcall\tputchar\n\tpop\teax\n\tinc\tebp\n\tcmp\tebp, 19\n\tjae\t.nextnumber\n\tmov\t[dbuffer+ebp], al\n\n.nextnumber:\n\tcall\tgetchar\n\tjc\t.work\n\tcmp\tal, '#'\n\tje\t.ungetc\n\tcmp\tal, '0'\n\tjl\t.work\n\tcmp\tal, '9'\n\tja\t.work\n\tjmp\tshort .number\n\n.ungetc:\n\tdec\tesi\n\tinc\tebx\n\n.work:\n\t; Now, do all the work\n\tor\tdl, dl\n\tje\tnear .work0\n\n\tcmp\tebp, 19\n\tjae\tnear .toobig\n\n\tcall\tbcdload\n\n\t; Calculate pinhole diameter\n\n\tfld\tst0\t; save it\n\tfsqrt\n\tfmul\tst0, st3\n\tfld\tst0\n\tfmul\tst5\n\tsub\tebp, ebp\n\n\t; Round off to 4 significant digits\n.diameter:\n\tfcom\tst0, st7\n\tfstsw\tax\n\tsahf\n\tjb\t.printdiameter\n\tfmul\tst0, st6\n\tinc\tebp\n\tjmp\tshort .diameter\n\n.printdiameter:\n\tcall\tprintnumber\t; pinhole diameter\n\n\t; Calculate F-number\n\n\tfdivp\tst1, st0\n\tfld\tst0\n\n\tsub\tebp, ebp\n\n.fnumber:\n\tfcom\tst0, st6\n\tfstsw\tax\n\tsahf\n\tjb\t.printfnumber\n\tfmul\tst0, st5\n\tinc\tebp\n\tjmp\tshort .fnumber\n\n.printfnumber:\n\tcall\tprintnumber\t; F number\n\n\t; Calculate normalized F-number\n\tfmul\tst0, st0\n\tfld1\n\tfld\tst1\n\tfyl2x\n\tfrndint\n\tfld1\n\tfscale\n\tfsqrt\n\tfstp\tst1\n\n\tsub\tebp, ebp\n\tcall\tprintnumber\n\n\t; Calculate time multiplier from F-5.6\n\n\tfscale\n\tfld\tst0\n\n\t; Round off to 4 significant digits\n.fmul:\n\tfcom\tst0, st6\n\tfstsw\tax\n\tsahf\n\n\tjb\t.printfmul\n\tinc\tebp\n\tfmul\tst0, st5\n\tjmp\tshort .fmul\n\n.printfmul:\n\tcall\tprintnumber\t; F multiplier\n\n\t; Calculate F-stops from 5.6\n\n\tfld1\n\tfxch\tst1\n\tfyl2x\n\n\tsub\tebp, ebp\n\tcall\tprintnumber\n\n\tmov\tal, 0Ah\n\tcall\tputchar\n\tjmp\t.bigloop\n\n.work0:\n\tmov\tal, '0'\n\tcall\tputchar\n\nalign 4\n.toobig:\n\tcall\thuh\n\tjmp\t.bigloop\n\nalign 4\ndone:\n\tcall\twrite\t\t; flush output buffer\n\n\t; close files\n\tpush\tdword [fd.in]\n\tsys.close\n\n\tpush\tdword [fd.out]\n\tsys.close\n\n\tfinit\n\n\t; return success\n\tpush\tdword 0\n\tsys.exit\n\nalign 4\nskiptoeol:\n\t; Keep reading until you come to cr, lf, or eof\n\tcall\tgetchar\n\tjc\tdone\n\tcmp\tal, 0Ah\n\tjne\t.cr\n\tret\n\n.cr:\n\tcmp\tal, 0Dh\n\tjne\tskiptoeol\n\tret\n\nalign 4\ngetchar:\n\tor\tebx, ebx\n\tjne\t.fetch\n\n\tcall\tread\n\n.fetch:\n\tlodsb\n\tdec\tebx\n\tclc\n\tret\n\nread:\n\tjecxz\t.read\n\tcall\twrite\n\n.read:\n\tpush\tdword BUFSIZE\n\tmov\tesi, ibuffer\n\tpush\tesi\n\tpush\tdword [fd.in]\n\tsys.read\n\tadd\tesp, byte 12\n\tmov\tebx, eax\n\tor\teax, eax\n\tje\t.empty\n\tsub\teax, eax\n\tret\n\nalign 4\n.empty:\n\tadd\tesp, byte 4\n\tstc\n\tret\n\nalign 4\nputchar:\n\tstosb\n\tinc\tecx\n\tcmp\tecx, BUFSIZE\n\tje\twrite\n\tret\n\nalign 4\nwrite:\n\tjecxz\t.ret\t; nothing to write\n\tsub\tedi, ecx\t; start of buffer\n\tpush\tecx\n\tpush\tedi\n\tpush\tdword [fd.out]\n\tsys.write\n\tadd\tesp, byte 12\n\tsub\teax, eax\n\tsub\tecx, ecx\t; buffer is empty now\n.ret:\n\tret\n\nalign 4\nbcdload:\n\t; EBP contains the number of chars in dbuffer\n\tpush\tecx\n\tpush\tesi\n\tpush\tedi\n\n\tlea\tecx, [ebp+1]\n\tlea\tesi, [dbuffer+ebp-1]\n\tshr\tecx, 1\n\n\tstd\n\n\tmov\tedi, bbuffer\n\tsub\teax, eax\n\tmov\t[edi], eax\n\tmov\t[edi+4], eax\n\tmov\t[edi+2], ax\n\n.loop:\n\tlodsw\n\tsub\tax, 3030h\n\tshl\tal, 4\n\tor\tal, ah\n\tmov\t[edi], al\n\tinc\tedi\n\tloop\t.loop\n\n\tfbld\t[bbuffer]\n\n\tcld\n\tpop\tedi\n\tpop\tesi\n\tpop\tecx\n\tsub\teax, eax\n\tret\n\nalign 4\nprintnumber:\n\tpush\tebp\n\tmov\tal, [separ]\n\tcall\tputchar\n\n\t; Print the integer at the TOS\n\tmov\tebp, bbuffer+9\n\tfbstp\t[bbuffer]\n\n\t; Check the sign\n\tmov\tal, [ebp]\n\tdec\tebp\n\tor\tal, al\n\tjns\t.leading\n\n\t; We got a negative number (should never happen)\n\tmov\tal, '-'\n\tcall\tputchar\n\n.leading:\n\t; Skip leading zeros\n\tmov\tal, [ebp]\n\tdec\tebp\n\tor\tal, al\n\tjne\t.first\n\tcmp\tebp, bbuffer\n\tjae\t.leading\n\n\t; We are here because the result was 0.\n\t; Print '0' and return\n\tmov\tal, '0'\n\tjmp\tputchar\n\n.first:\n\t; We have found the first non-zero.\n\t; But it is still packed\n\ttest\tal, 0F0h\n\tjz\t.second\n\tpush\teax\n\tshr\tal, 4\n\tadd\tal, '0'\n\tcall\tputchar\n\tpop\teax\n\tand\tal, 0Fh\n\n.second:\n\tadd\tal, '0'\n\tcall\tputchar\n\n.next:\n\tcmp\tebp, bbuffer\n\tjb\t.done\n\n\tmov\tal, [ebp]\n\tpush\teax\n\tshr\tal, 4\n\tadd\tal, '0'\n\tcall\tputchar\n\tpop\teax\n\tand\tal, 0Fh\n\tadd\tal, '0'\n\tcall\tputchar\n\n\tdec\tebp\n\tjmp\tshort .next\n\n.done:\n\tpop\tebp\n\tor\tebp, ebp\n\tje\t.ret\n\n.zeros:\n\tmov\tal, '0'\n\tcall\tputchar\n\tdec\tebp\n\tjne\t.zeros\n\n.ret:\n\tret"
            ],
            "id_hash": -5460198032763687273,
            "content_hash": -5460198032763687273,
            "location": "book.translate.xml:13774",
            "context": "",
            "note": "(itstool) path: sect2/programlisting",
            "flags": "no-wrap",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2169,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 1662,
            "source_unit": "https://translate-dev.freebsd.org/api/units/92254/?format=api",
            "priority": 100,
            "id": 190122,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=34397ad18dd56e97",
            "url": "https://translate-dev.freebsd.org/api/units/190122/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.513898Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "The code follows the same format as all the other filters we have seen before, with one subtle exception:"
            ],
            "previous_source": "",
            "target": [
                "این کد همانند تمام فیلترهایی که از پیش دیده‌ایم، همان قالب همیشگی را دنبال می‌کند، با یک استثنای جزئی:"
            ],
            "id_hash": 6776174772122067920,
            "content_hash": 6776174772122067920,
            "location": "book.translate.xml:14472",
            "context": "",
            "note": "(itstool) path: sect2/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2170,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 19,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107697/?format=api",
            "priority": 100,
            "id": 190123,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=de09cf0db44ca3d0",
            "url": "https://translate-dev.freebsd.org/api/units/190123/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.525043Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "We are no longer assuming that the end of input implies the end of things to do, something we took for granted in the <emphasis>character–oriented</emphasis> filters."
            ],
            "previous_source": "",
            "target": [
                "ما دیگر چنین فرض نمی‌کنیم که پایان ورودی نشان‌دهندهٔ پایان کارهایی است که باید انجام داد، چیزی که در فیلترهای <emphasis>character–oriented</emphasis> فرض مسلم می‌گرفتیم."
            ],
            "id_hash": -4279636395901132782,
            "content_hash": -4279636395901132782,
            "location": "book.translate.xml:14476",
            "context": "",
            "note": "(itstool) path: blockquote/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2171,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 26,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107698/?format=api",
            "priority": 100,
            "id": 190124,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=449bad5f567ae012",
            "url": "https://translate-dev.freebsd.org/api/units/190124/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.533536Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "This filter does not process characters. It processes a <emphasis>language</emphasis> (albeit a very simple one, consisting only of numbers)."
            ],
            "previous_source": "",
            "target": [
                "این فیلتر نویسه‌ها را پردازش نمی‌کند. یک <emphasis>زبان</emphasis> را پردازش می‌کند (هرچند بسیار ساده، تنها شامل اعداد است)."
            ],
            "id_hash": -8173714564093884929,
            "content_hash": -8173714564093884929,
            "location": "book.translate.xml:14481",
            "context": "",
            "note": "(itstool) path: blockquote/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2172,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 19,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107699/?format=api",
            "priority": 100,
            "id": 190125,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=0e9121e8ffbf45ff",
            "url": "https://translate-dev.freebsd.org/api/units/190125/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.541718Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "When we have no more input, it can mean one of two things:"
            ],
            "previous_source": "",
            "target": [
                "هنگامی‌که دیگر هیچ ورودی‌ای نداریم، می تواند دو مفهوم داشته باشد:"
            ],
            "id_hash": -5339035781248277956,
            "content_hash": -5339035781248277956,
            "location": "book.translate.xml:14485",
            "context": "",
            "note": "(itstool) path: blockquote/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2173,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 13,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107700/?format=api",
            "priority": 100,
            "id": 190126,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=35e7ef3e8f98a23c",
            "url": "https://translate-dev.freebsd.org/api/units/190126/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.554497Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "We are done and can quit. This is the same as before."
            ],
            "previous_source": "",
            "target": [
                "کار ما تمام شده است و می‌توانیم خارج شویم. این همانند قبل است."
            ],
            "id_hash": -8946829018730070756,
            "content_hash": -8946829018730070756,
            "location": "book.translate.xml:14490",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2174,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 12,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107701/?format=api",
            "priority": 100,
            "id": 190127,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=03d67a68e86ffd1c",
            "url": "https://translate-dev.freebsd.org/api/units/190127/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.566063Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "The last character we have read was a digit. We have stored it at the end of our <acronym>ASCII</acronym>–to–float conversion buffer. We now need to convert the contents of that buffer into a number and write the last line of our output."
            ],
            "previous_source": "",
            "target": [
                "آخرین نویسه‌ای که خوانده‌ایم یک رقم است. ما آن را در انتهای میان‌گیرِ تبدیلِ <acronym>ASCII</acronym> به شناور ذخیره کرده‌ایم. اکنون باید محتوای آن میان‌گیر را به عدد تبدیل کنیم و آخرین سطر از خروجی‌مان را بنویسیم."
            ],
            "id_hash": -5071210316204882378,
            "content_hash": -5071210316204882378,
            "location": "book.translate.xml:14495",
            "context": "",
            "note": "(itstool) path: listitem/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2175,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 42,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107702/?format=api",
            "priority": 100,
            "id": 190128,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=399f7115f94fc636",
            "url": "https://translate-dev.freebsd.org/api/units/190128/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.575004Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_developers-handbook/fa/?format=api",
            "source": [
                "For that reason, we have modified our <function>getchar</function> and our <function>read</function> routines to return with the <varname role=\"register\">carry flag</varname> <emphasis>clear</emphasis> whenever we are fetching another character from the input, or the <varname role=\"register\">carry flag</varname> <emphasis>set</emphasis> whenever there is no more input."
            ],
            "previous_source": "",
            "target": [
                "به همین دلیل، <function>getchar</function> و رویه‌های <function>read</function> را تغییر می‌دهیم تا هر زمان که نویسهٔ دیگری را از ورودی می‌گیریم با <varname role=\"register\">carry flag</varname><emphasis>clear</emphasis> بازگشت داده شوند، یا <varname role=\"register\">carry flag</varname><emphasis>set</emphasis> برای زمانی‌که دیگر هیچ ورودی‌ای وجود ندارد."
            ],
            "id_hash": 2712746872431766467,
            "content_hash": 2712746872431766467,
            "location": "book.translate.xml:14504",
            "context": "",
            "note": "(itstool) path: blockquote/para",
            "flags": "",
            "labels": [],
            "state": 20,
            "fuzzy": false,
            "translated": true,
            "approved": false,
            "position": 2176,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 41,
            "source_unit": "https://translate-dev.freebsd.org/api/units/107703/?format=api",
            "priority": 100,
            "id": 190129,
            "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_developers-handbook/fa/?checksum=a5a59ce860d8ebc3",
            "url": "https://translate-dev.freebsd.org/api/units/190129/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2020-07-06T12:25:45.584106Z"
        }
    ]
}