diff --git a/faq/design.po b/faq/design.po
index 3504cd7..396e444 100644
--- a/faq/design.po
+++ b/faq/design.po
@@ -2,24 +2,25 @@
 # Copyright (C) 2001-2021, Python Software Foundation
 # This file is distributed under the same license as the Python package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
+#
 # Translators:
 # oon arfiandwi <oon.arfiandwi@gmail.com>, 2019
-# 
-#, fuzzy
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.9\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2021-03-16 05:43+0000\n"
-"PO-Revision-Date: 2017-02-16 17:42+0000\n"
+"PO-Revision-Date: 2021-10-05 14:53+0700\n"
 "Last-Translator: oon arfiandwi <oon.arfiandwi@gmail.com>, 2019\n"
-"Language-Team: Indonesian (https://www.transifex.com/python-doc/teams/5390/id/)\n"
+"Language-Team: Indonesian (https://www.transifex.com/python-doc/teams/5390/"
+"id/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: id\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.3\n"
 
 #: ../../faq/design.rst:3
 msgid "Design and History FAQ"
@@ -45,35 +46,47 @@ msgstr ""
 
 #: ../../faq/design.rst:17
 msgid ""
-"Since there are no begin/end brackets there cannot be a disagreement between"
-" grouping perceived by the parser and the human reader.  Occasionally C "
+"Since there are no begin/end brackets there cannot be a disagreement between "
+"grouping perceived by the parser and the human reader.  Occasionally C "
 "programmers will encounter a fragment of code like this::"
 msgstr ""
+"Karena tidak ada tanda tutup kurung begin/end, tidak bisa ada perselisihan "
+"antara pengelompokan dengan parser dan manusia. Umumnya, pemrogram C akan "
+"menemui potongan kode seperti ini::"
 
 #: ../../faq/design.rst:26
 msgid ""
 "Only the ``x++`` statement is executed if the condition is true, but the "
-"indentation leads many to believe otherwise.  Even experienced C programmers"
-" will sometimes stare at it a long time wondering as to why ``y`` is being "
+"indentation leads many to believe otherwise.  Even experienced C programmers "
+"will sometimes stare at it a long time wondering as to why ``y`` is being "
 "decremented even for ``x > y``."
 msgstr ""
+"Pernyataan ``x++`` akan dieksekusi jika kondisi true, namun indentasinya "
+"bisa jadi membingungkan. Bahkan seorang pemrogram C yang berpengalaman "
+"sekalipun akan melihatnya dalam waktu yang tidak sebentar, mempertanyakan "
+"mengapa ``y`` dikurangi bahkan hanya untuk ``x > y``"
 
 #: ../../faq/design.rst:31
 msgid ""
-"Because there are no begin/end brackets, Python is much less prone to "
-"coding-style conflicts.  In C there are many different ways to place the "
-"braces. After becoming used to reading and writing code using a particular "
-"style, it is normal to feel somewhat uneasy when reading (or being required "
-"to write) in a different one."
+"Because there are no begin/end brackets, Python is much less prone to coding-"
+"style conflicts.  In C there are many different ways to place the braces. "
+"After becoming used to reading and writing code using a particular style, it "
+"is normal to feel somewhat uneasy when reading (or being required to write) "
+"in a different one."
 msgstr ""
+"Karena tidak memiliki kurung buka/tutup, Python berisiko lebih kecil "
+"terhadap konflik coding-style. Pada C terdapat banyak cara untuk meletakkan "
+"kurung. Setelah terbiasa membaca dan menulis kode menggunakan gaya tertentu, "
+"menjadi normal saat merasa sulit membaca (atau harus menulis) dengan gaya "
+"yang berbeda."
 
 #: ../../faq/design.rst:38
 msgid ""
 "Many coding styles place begin/end brackets on a line by themselves.  This "
 "makes programs considerably longer and wastes valuable screen space, making "
 "it harder to get a good overview of a program.  Ideally, a function should "
-"fit on one screen (say, 20--30 lines).  20 lines of Python can do a lot more"
-" work than 20 lines of C.  This is not solely due to the lack of begin/end "
+"fit on one screen (say, 20--30 lines).  20 lines of Python can do a lot more "
+"work than 20 lines of C.  This is not solely due to the lack of begin/end "
 "brackets -- the lack of declarations and the high-level data types are also "
 "responsible -- but the indentation-based syntax certainly helps."
 msgstr ""
@@ -84,7 +97,7 @@ msgstr ""
 
 #: ../../faq/design.rst:50
 msgid "See the next question."
-msgstr ""
+msgstr "Lihat pertanyaan berikutnya."
 
 #: ../../faq/design.rst:54
 msgid "Why are floating-point calculations so inaccurate?"
@@ -103,13 +116,12 @@ msgstr ""
 
 #: ../../faq/design.rst:65
 msgid ""
-"The :class:`float` type in CPython uses a C ``double`` for storage.  A "
-":class:`float` object's value is stored in binary floating-point with a "
-"fixed precision (typically 53 bits) and Python uses C operations, which in "
-"turn rely on the hardware implementation in the processor, to perform "
-"floating-point operations. This means that as far as floating-point "
-"operations are concerned, Python behaves like many popular languages "
-"including C and Java."
+"The :class:`float` type in CPython uses a C ``double`` for storage.  A :"
+"class:`float` object's value is stored in binary floating-point with a fixed "
+"precision (typically 53 bits) and Python uses C operations, which in turn "
+"rely on the hardware implementation in the processor, to perform floating-"
+"point operations. This means that as far as floating-point operations are "
+"concerned, Python behaves like many popular languages including C and Java."
 msgstr ""
 
 #: ../../faq/design.rst:72
@@ -154,8 +166,8 @@ msgstr ""
 
 #: ../../faq/design.rst:99
 msgid ""
-"One is performance: knowing that a string is immutable means we can allocate"
-" space for it at creation time, and the storage requirements are fixed and "
+"One is performance: knowing that a string is immutable means we can allocate "
+"space for it at creation time, and the storage requirements are fixed and "
 "unchanging.  This is also one of the reasons for the distinction between "
 "tuples and lists."
 msgstr ""
@@ -163,8 +175,8 @@ msgstr ""
 #: ../../faq/design.rst:104
 msgid ""
 "Another advantage is that strings in Python are considered as \"elemental\" "
-"as numbers.  No amount of activity will change the value 8 to anything else,"
-" and in Python, no amount of activity will change the string \"eight\" to "
+"as numbers.  No amount of activity will change the value 8 to anything else, "
+"and in Python, no amount of activity will change the string \"eight\" to "
 "anything else."
 msgstr ""
 
@@ -181,8 +193,8 @@ msgstr ""
 #: ../../faq/design.rst:117
 msgid ""
 "First, it's more obvious that you are using a method or instance attribute "
-"instead of a local variable.  Reading ``self.x`` or ``self.meth()`` makes it"
-" absolutely clear that an instance variable or method is used even if you "
+"instead of a local variable.  Reading ``self.x`` or ``self.meth()`` makes it "
+"absolutely clear that an instance variable or method is used even if you "
 "don't know the class definition by heart.  In C++, you can sort of tell by "
 "the lack of a local variable declaration (assuming globals are rare or "
 "easily recognizable) -- but in Python, there are no local variable "
@@ -194,13 +206,13 @@ msgstr ""
 #: ../../faq/design.rst:127
 msgid ""
 "Second, it means that no special syntax is necessary if you want to "
-"explicitly reference or call the method from a particular class.  In C++, if"
-" you want to use a method from a base class which is overridden in a derived"
-" class, you have to use the ``::`` operator -- in Python you can write "
+"explicitly reference or call the method from a particular class.  In C++, if "
+"you want to use a method from a base class which is overridden in a derived "
+"class, you have to use the ``::`` operator -- in Python you can write "
 "``baseclass.methodname(self, <argument list>)``.  This is particularly "
-"useful for :meth:`__init__` methods, and in general in cases where a derived"
-" class method wants to extend the base class method of the same name and "
-"thus has to call the base class method somehow."
+"useful for :meth:`__init__` methods, and in general in cases where a derived "
+"class method wants to extend the base class method of the same name and thus "
+"has to call the base class method somehow."
 msgstr ""
 
 #: ../../faq/design.rst:136
@@ -211,8 +223,8 @@ msgid ""
 "explicitly declared global), there has to be some way to tell the "
 "interpreter that an assignment was meant to assign to an instance variable "
 "instead of to a local variable, and it should preferably be syntactic (for "
-"efficiency reasons).  C++ does this through declarations, but Python doesn't"
-" have declarations and it would be a pity having to introduce them just for "
+"efficiency reasons).  C++ does this through declarations, but Python doesn't "
+"have declarations and it would be a pity having to introduce them just for "
 "this purpose.  Using the explicit ``self.var`` solves this nicely.  "
 "Similarly, for using instance variables, having to write ``self.var`` means "
 "that references to unqualified names inside a method don't have to search "
@@ -261,18 +273,17 @@ msgstr ""
 #: ../../faq/design.rst:180
 msgid ""
 "(b) When I read code that says len(x) I *know* that it is asking for the "
-"length of something. This tells me two things: the result is an integer, and"
-" the argument is some kind of container. To the contrary, when I read "
-"x.len(), I have to already know that x is some kind of container "
-"implementing an interface or inheriting from a class that has a standard "
-"len(). Witness the confusion we occasionally have when a class that is not "
-"implementing a mapping has a get() or keys() method, or something that isn't"
-" a file has a write() method."
+"length of something. This tells me two things: the result is an integer, and "
+"the argument is some kind of container. To the contrary, when I read x."
+"len(), I have to already know that x is some kind of container implementing "
+"an interface or inheriting from a class that has a standard len(). Witness "
+"the confusion we occasionally have when a class that is not implementing a "
+"mapping has a get() or keys() method, or something that isn't a file has a "
+"write() method."
 msgstr ""
 
 #: ../../faq/design.rst:207
-msgid ""
-"https://mail.python.org/pipermail/python-3000/2006-November/004643.html"
+msgid "https://mail.python.org/pipermail/python-3000/2006-November/004643.html"
 msgstr ""
 "https://mail.python.org/pipermail/python-3000/2006-November/004643.html"
 
@@ -301,8 +312,8 @@ msgstr ""
 msgid ""
 "The first runs along the lines of: \"It looks really ugly using a method of "
 "a string literal (string constant)\", to which the answer is that it might, "
-"but a string literal is just a fixed value. If the methods are to be allowed"
-" on names bound to strings there is no logical reason to make them "
+"but a string literal is just a fixed value. If the methods are to be allowed "
+"on names bound to strings there is no logical reason to make them "
 "unavailable on literals."
 msgstr ""
 
@@ -310,9 +321,8 @@ msgstr ""
 msgid ""
 "The second objection is typically cast as: \"I am really telling a sequence "
 "to join its members together with a string constant\".  Sadly, you aren't.  "
-"For some reason there seems to be much less difficulty with having "
-":meth:`~str.split` as a string method, since in that case it is easy to see "
-"that ::"
+"For some reason there seems to be much less difficulty with having :meth:"
+"`~str.split` as a string method, since in that case it is easy to see that ::"
 msgstr ""
 
 #: ../../faq/design.rst:222
@@ -323,8 +333,8 @@ msgstr ""
 
 #: ../../faq/design.rst:225
 msgid ""
-":meth:`~str.join` is a string method because in using it you are telling the"
-" separator string to iterate over a sequence of strings and insert itself "
+":meth:`~str.join` is a string method because in using it you are telling the "
+"separator string to iterate over a sequence of strings and insert itself "
 "between adjacent elements.  This method can be used with any argument which "
 "obeys the rules for sequence objects, including any new classes you might "
 "define yourself. Similar methods exist for bytes and bytearray objects."
@@ -337,8 +347,8 @@ msgstr ""
 #: ../../faq/design.rst:235
 msgid ""
 "A try/except block is extremely efficient if no exceptions are raised.  "
-"Actually catching an exception is expensive.  In versions of Python prior to"
-" 2.0 it was common to use this idiom::"
+"Actually catching an exception is expensive.  In versions of Python prior to "
+"2.0 it was common to use this idiom::"
 msgstr ""
 
 #: ../../faq/design.rst:245
@@ -362,8 +372,8 @@ msgstr ""
 msgid ""
 "You can do this easily enough with a sequence of ``if... elif... elif... "
 "else``. There have been some proposals for switch statement syntax, but "
-"there is no consensus (yet) on whether and how to do range tests.  See "
-":pep:`275` for complete details and the current status."
+"there is no consensus (yet) on whether and how to do range tests.  See :pep:"
+"`275` for complete details and the current status."
 msgstr ""
 "Anda dapat melakukan ini dengan cukup mudah dengan urutan ``if... elif... "
 "elif... else``. Ada beberapa proposal untuk sintaks pernyataan *switch*, "
@@ -380,8 +390,8 @@ msgstr ""
 
 #: ../../faq/design.rst:280
 msgid ""
-"For calling methods on objects, you can simplify yet further by using the "
-":func:`getattr` built-in to retrieve methods with a particular name::"
+"For calling methods on objects, you can simplify yet further by using the :"
+"func:`getattr` built-in to retrieve methods with a particular name::"
 msgstr ""
 
 #: ../../faq/design.rst:292
@@ -408,8 +418,8 @@ msgstr ""
 
 #: ../../faq/design.rst:305
 msgid ""
-"Answer 2: Fortunately, there is `Stackless Python <https://github.com"
-"/stackless-dev/stackless/wiki>`_, which has a completely redesigned "
+"Answer 2: Fortunately, there is `Stackless Python <https://github.com/"
+"stackless-dev/stackless/wiki>`_, which has a completely redesigned "
 "interpreter loop that avoids the C stack."
 msgstr ""
 
@@ -445,8 +455,8 @@ msgid ""
 "`Cython <http://cython.org/>`_ compiles a modified version of Python with "
 "optional annotations into C extensions.  `Nuitka <http://www.nuitka.net/>`_ "
 "is an up-and-coming compiler of Python into C++ code, aiming to support the "
-"full Python language. For compiling to Java you can consider `VOC "
-"<https://voc.readthedocs.io>`_."
+"full Python language. For compiling to Java you can consider `VOC <https://"
+"voc.readthedocs.io>`_."
 msgstr ""
 
 #: ../../faq/design.rst:336
@@ -467,8 +477,8 @@ msgstr ""
 #: ../../faq/design.rst:346
 msgid ""
 "Other implementations (such as `Jython <http://www.jython.org>`_ or `PyPy "
-"<http://www.pypy.org>`_), however, can rely on a different mechanism such as"
-" a full-blown garbage collector.  This difference can cause some subtle "
+"<http://www.pypy.org>`_), however, can rely on a different mechanism such as "
+"a full-blown garbage collector.  This difference can cause some subtle "
 "porting problems if your Python code depends on the behavior of the "
 "reference counting implementation."
 msgstr ""
@@ -482,16 +492,16 @@ msgstr ""
 #: ../../faq/design.rst:359
 msgid ""
 "Indeed, using CPython's reference counting and destructor scheme, each new "
-"assignment to *f* closes the previous file.  With a traditional GC, however,"
-" those file objects will only get collected (and closed) at varying and "
+"assignment to *f* closes the previous file.  With a traditional GC, however, "
+"those file objects will only get collected (and closed) at varying and "
 "possibly long intervals."
 msgstr ""
 
 #: ../../faq/design.rst:364
 msgid ""
-"If you want to write code that will work with any Python implementation, you"
-" should explicitly close the file or use the :keyword:`with` statement; this"
-" will work regardless of memory management scheme::"
+"If you want to write code that will work with any Python implementation, you "
+"should explicitly close the file or use the :keyword:`with` statement; this "
+"will work regardless of memory management scheme::"
 msgstr ""
 
 #: ../../faq/design.rst:374
@@ -500,9 +510,9 @@ msgstr ""
 
 #: ../../faq/design.rst:376
 msgid ""
-"For one thing, this is not a C standard feature and hence it's not portable."
-" (Yes, we know about the Boehm GC library.  It has bits of assembler code "
-"for *most* common platforms, not for all of them, and although it is mostly "
+"For one thing, this is not a C standard feature and hence it's not portable. "
+"(Yes, we know about the Boehm GC library.  It has bits of assembler code for "
+"*most* common platforms, not for all of them, and although it is mostly "
 "transparent, it isn't completely transparent; patches are required to get "
 "Python to work with it.)"
 msgstr ""
@@ -524,17 +534,17 @@ msgstr ""
 #: ../../faq/design.rst:393
 msgid ""
 "Objects referenced from the global namespaces of Python modules are not "
-"always deallocated when Python exits.  This may happen if there are circular"
-" references.  There are also certain bits of memory that are allocated by "
-"the C library that are impossible to free (e.g. a tool like Purify will "
-"complain about these).  Python is, however, aggressive about cleaning up "
-"memory on exit and does try to destroy every single object."
+"always deallocated when Python exits.  This may happen if there are circular "
+"references.  There are also certain bits of memory that are allocated by the "
+"C library that are impossible to free (e.g. a tool like Purify will complain "
+"about these).  Python is, however, aggressive about cleaning up memory on "
+"exit and does try to destroy every single object."
 msgstr ""
 
 #: ../../faq/design.rst:400
 msgid ""
-"If you want to force Python to delete certain things on deallocation use the"
-" :mod:`atexit` module to run a function that will force those deletions."
+"If you want to force Python to delete certain things on deallocation use "
+"the :mod:`atexit` module to run a function that will force those deletions."
 msgstr ""
 
 #: ../../faq/design.rst:405
@@ -545,18 +555,18 @@ msgstr ""
 msgid ""
 "Lists and tuples, while similar in many respects, are generally used in "
 "fundamentally different ways.  Tuples can be thought of as being similar to "
-"Pascal records or C structs; they're small collections of related data which"
-" may be of different types which are operated on as a group.  For example, a"
-" Cartesian coordinate is appropriately represented as a tuple of two or "
-"three numbers."
+"Pascal records or C structs; they're small collections of related data which "
+"may be of different types which are operated on as a group.  For example, a "
+"Cartesian coordinate is appropriately represented as a tuple of two or three "
+"numbers."
 msgstr ""
 
 #: ../../faq/design.rst:414
 msgid ""
 "Lists, on the other hand, are more like arrays in other languages.  They "
-"tend to hold a varying number of objects all of which have the same type and"
-" which are operated on one-by-one.  For example, ``os.listdir('.')`` returns"
-" a list of strings representing the files in the current directory.  "
+"tend to hold a varying number of objects all of which have the same type and "
+"which are operated on one-by-one.  For example, ``os.listdir('.')`` returns "
+"a list of strings representing the files in the current directory.  "
 "Functions which operate on this output would generally not break if you "
 "added another file or two to the directory."
 msgstr ""
@@ -613,10 +623,10 @@ msgid ""
 "Dictionaries work by computing a hash code for each key stored in the "
 "dictionary using the :func:`hash` built-in function.  The hash code varies "
 "widely depending on the key and a per-process seed; for example, \"Python\" "
-"could hash to -539294296 while \"python\", a string that differs by a single"
-" bit, could hash to 1142331976.  The hash code is then used to calculate a "
-"location in an internal array where the value will be stored.  Assuming that"
-" you're storing keys that all have different hash values, this means that "
+"could hash to -539294296 while \"python\", a string that differs by a single "
+"bit, could hash to 1142331976.  The hash code is then used to calculate a "
+"location in an internal array where the value will be stored.  Assuming that "
+"you're storing keys that all have different hash values, this means that "
 "dictionaries take constant time -- O(1), in Big-O notation -- to retrieve a "
 "key."
 msgstr ""
@@ -641,8 +651,8 @@ msgstr ""
 #: ../../faq/design.rst:472
 msgid ""
 "If you want a dictionary indexed with a list, simply convert the list to a "
-"tuple first; the function ``tuple(L)`` creates a tuple with the same entries"
-" as the list ``L``.  Tuples are immutable and can therefore be used as "
+"tuple first; the function ``tuple(L)`` creates a tuple with the same entries "
+"as the list ``L``.  Tuples are immutable and can therefore be used as "
 "dictionary keys."
 msgstr ""
 
@@ -660,30 +670,30 @@ msgstr ""
 msgid ""
 "would raise a :exc:`KeyError` exception because the id of the ``[1, 2]`` "
 "used in the second line differs from that in the first line.  In other "
-"words, dictionary keys should be compared using ``==``, not using "
-":keyword:`is`."
+"words, dictionary keys should be compared using ``==``, not using :keyword:"
+"`is`."
 msgstr ""
 
 #: ../../faq/design.rst:488
 msgid ""
-"Make a copy when using a list as a key.  This doesn't work because the list,"
-" being a mutable object, could contain a reference to itself, and then the "
+"Make a copy when using a list as a key.  This doesn't work because the list, "
+"being a mutable object, could contain a reference to itself, and then the "
 "copying code would run into an infinite loop."
 msgstr ""
 
 #: ../../faq/design.rst:492
 msgid ""
 "Allow lists as keys but tell the user not to modify them.  This would allow "
-"a class of hard-to-track bugs in programs when you forgot or modified a list"
-" by accident. It also invalidates an important invariant of dictionaries: "
+"a class of hard-to-track bugs in programs when you forgot or modified a list "
+"by accident. It also invalidates an important invariant of dictionaries: "
 "every value in ``d.keys()`` is usable as a key of the dictionary."
 msgstr ""
 
 #: ../../faq/design.rst:497
 msgid ""
-"Mark lists as read-only once they are used as a dictionary key.  The problem"
-" is that it's not just the top-level object that could change its value; you"
-" could use a tuple containing a list as a key.  Entering anything as a key "
+"Mark lists as read-only once they are used as a dictionary key.  The problem "
+"is that it's not just the top-level object that could change its value; you "
+"could use a tuple containing a list as a key.  Entering anything as a key "
 "into a dictionary would require marking all objects reachable from there as "
 "read-only -- and again, self-referential objects could cause an infinite "
 "loop."
@@ -695,8 +705,8 @@ msgid ""
 "risk: You can wrap a mutable structure inside a class instance which has "
 "both a :meth:`__eq__` and a :meth:`__hash__` method.  You must then make "
 "sure that the hash value for all such wrapper objects that reside in a "
-"dictionary (or other hash based structure), remain fixed while the object is"
-" in the dictionary (or other structure). ::"
+"dictionary (or other hash based structure), remain fixed while the object is "
+"in the dictionary (or other structure). ::"
 msgstr ""
 
 #: ../../faq/design.rst:527
@@ -708,11 +718,11 @@ msgstr ""
 
 #: ../../faq/design.rst:531
 msgid ""
-"Furthermore it must always be the case that if ``o1 == o2`` (ie "
-"``o1.__eq__(o2) is True``) then ``hash(o1) == hash(o2)`` (ie, "
-"``o1.__hash__() == o2.__hash__()``), regardless of whether the object is in "
-"a dictionary or not.  If you fail to meet these restrictions dictionaries "
-"and other hash based structures will misbehave."
+"Furthermore it must always be the case that if ``o1 == o2`` (ie ``o1."
+"__eq__(o2) is True``) then ``hash(o1) == hash(o2)`` (ie, ``o1.__hash__() == "
+"o2.__hash__()``), regardless of whether the object is in a dictionary or "
+"not.  If you fail to meet these restrictions dictionaries and other hash "
+"based structures will misbehave."
 msgstr ""
 
 #: ../../faq/design.rst:536
@@ -751,20 +761,20 @@ msgstr ""
 
 #: ../../faq/design.rst:563
 msgid ""
-"An interface specification for a module as provided by languages such as C++"
-" and Java describes the prototypes for the methods and functions of the "
-"module.  Many feel that compile-time enforcement of interface specifications"
-" helps in the construction of large programs."
+"An interface specification for a module as provided by languages such as C++ "
+"and Java describes the prototypes for the methods and functions of the "
+"module.  Many feel that compile-time enforcement of interface specifications "
+"helps in the construction of large programs."
 msgstr ""
 
 #: ../../faq/design.rst:568
 msgid ""
 "Python 2.6 adds an :mod:`abc` module that lets you define Abstract Base "
 "Classes (ABCs).  You can then use :func:`isinstance` and :func:`issubclass` "
-"to check whether an instance or a class implements a particular ABC.  The "
-":mod:`collections.abc` module defines a set of useful ABCs such as "
-":class:`~collections.abc.Iterable`, :class:`~collections.abc.Container`, and"
-" :class:`~collections.abc.MutableMapping`."
+"to check whether an instance or a class implements a particular ABC.  The :"
+"mod:`collections.abc` module defines a set of useful ABCs such as :class:"
+"`~collections.abc.Iterable`, :class:`~collections.abc.Container`, and :class:"
+"`~collections.abc.MutableMapping`."
 msgstr ""
 
 #: ../../faq/design.rst:575
@@ -779,20 +789,20 @@ msgid ""
 "as a module interface specification and a set of examples.  Many Python "
 "modules can be run as a script to provide a simple \"self test.\"  Even "
 "modules which use complex external interfaces can often be tested in "
-"isolation using trivial \"stub\" emulations of the external interface.  The "
-":mod:`doctest` and :mod:`unittest` modules or third-party test frameworks "
-"can be used to construct exhaustive test suites that exercise every line of "
-"code in a module."
+"isolation using trivial \"stub\" emulations of the external interface.  The :"
+"mod:`doctest` and :mod:`unittest` modules or third-party test frameworks can "
+"be used to construct exhaustive test suites that exercise every line of code "
+"in a module."
 msgstr ""
 
 #: ../../faq/design.rst:586
 msgid ""
 "An appropriate testing discipline can help build large complex applications "
-"in Python as well as having interface specifications would.  In fact, it can"
-" be better because an interface specification cannot test certain properties"
-" of a program.  For example, the :meth:`append` method is expected to add "
-"new elements to the end of some internal list; an interface specification "
-"cannot test that your :meth:`append` implementation will actually do this "
+"in Python as well as having interface specifications would.  In fact, it can "
+"be better because an interface specification cannot test certain properties "
+"of a program.  For example, the :meth:`append` method is expected to add new "
+"elements to the end of some internal list; an interface specification cannot "
+"test that your :meth:`append` implementation will actually do this "
 "correctly, but it's trivial to check this property in a test suite."
 msgstr ""
 
@@ -821,16 +831,16 @@ msgstr ""
 
 #: ../../faq/design.rst:611
 msgid ""
-"One can also use exceptions to provide a \"structured goto\" that works even"
-" across function calls.  Many feel that exceptions can conveniently emulate "
+"One can also use exceptions to provide a \"structured goto\" that works even "
+"across function calls.  Many feel that exceptions can conveniently emulate "
 "all reasonable uses of the \"go\" or \"goto\" constructs of C, Fortran, and "
 "other languages.  For example::"
 msgstr ""
 
 #: ../../faq/design.rst:627
 msgid ""
-"This doesn't allow you to jump into the middle of a loop, but that's usually"
-" considered an abuse of goto anyway.  Use sparingly."
+"This doesn't allow you to jump into the middle of a loop, but that's usually "
+"considered an abuse of goto anyway.  Use sparingly."
 msgstr ""
 
 #: ../../faq/design.rst:632
@@ -849,8 +859,8 @@ msgid ""
 "Raw strings were designed to ease creating input for processors (chiefly "
 "regular expression engines) that want to do their own backslash escape "
 "processing. Such processors consider an unmatched trailing backslash to be "
-"an error anyway, so raw strings disallow that.  In return, they allow you to"
-" pass on the string quote character by escaping it with a backslash.  These "
+"an error anyway, so raw strings disallow that.  In return, they allow you to "
+"pass on the string quote character by escaping it with a backslash.  These "
 "rules work well when r-strings are used for their intended purpose."
 msgstr ""
 
@@ -878,7 +888,7 @@ msgstr ""
 
 #: ../../faq/design.rst:668
 msgid "In Python, such a construct would be ambiguous."
-msgstr ""
+msgstr "Dalam Python, construct tersebut akan menjadi ambigu."
 
 #: ../../faq/design.rst:670
 msgid ""
@@ -969,12 +979,12 @@ msgstr ""
 
 #: ../../faq/design.rst:748
 msgid "There are several reasons to allow this."
-msgstr ""
+msgstr "Terdapat beberapa alasan untuk mengizinkan ini."
 
 #: ../../faq/design.rst:750
 msgid ""
-"When you have a literal value for a list, tuple, or dictionary spread across"
-" multiple lines, it's easier to add more elements because you don't have to "
+"When you have a literal value for a list, tuple, or dictionary spread across "
+"multiple lines, it's easier to add more elements because you don't have to "
 "remember to add a comma to the previous line.  The lines can also be "
 "reordered without creating a syntax error."
 msgstr ""
@@ -988,8 +998,8 @@ msgstr ""
 #: ../../faq/design.rst:765
 msgid ""
 "This list looks like it has four elements, but it actually contains three: "
-"\"fee\", \"fiefoo\" and \"fum\".  Always adding the comma avoids this source"
-" of error."
+"\"fee\", \"fiefoo\" and \"fum\".  Always adding the comma avoids this source "
+"of error."
 msgstr ""
 
 #: ../../faq/design.rst:768