diff --git a/autoload/TranslationManager.gd b/autoload/TranslationManager.gd index f6a6ba52..c5b5e10c 100644 --- a/autoload/TranslationManager.gd +++ b/autoload/TranslationManager.gd @@ -10,10 +10,10 @@ const SUPPORTED_LOCALES := [ "en", "es", "it", - "fr", - "pt", - "pt_BR", - "tr", + "fr", + "pt", + "pt_BR", + "tr", ] var current_language := DEFAULT_LOCALE setget set_language diff --git a/i18n/es/application.po b/i18n/es/application.po index 7c4069eb..c485ae48 100644 --- a/i18n/es/application.po +++ b/i18n/es/application.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-05-16 13:45+0200\n" +"PO-Revision-Date: 2023-10-06 08:14+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.1.1\n" +"X-Generator: Poedit 3.3.1\n" #: resources/QuizInputField.gd:17 msgid "You need to type a whole number for this answer. Example: 42" @@ -86,7 +86,8 @@ msgstr "" msgid "" "Oh no! The script has an error, but the Script Verifier did not catch it" msgstr "" -"¡Oh, no! El script tiene un error, pero el verificador de script no lo ha ." +"¡Oh, no! El script tiene un error, pero el verificador de script no lo ha " +"detectado." #: ui/UIPractice.gd:369 msgid "Running Tests..." @@ -658,8 +659,8 @@ msgstr "Este proyecto es de código abierto." msgid "" "Like Godot, this app and course is free and open-source. \n" "\n" -"You can find the app's source code and contribute translations here: [url=" -"\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " +"You can find the app's source code and contribute translations here: " +"[url=\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " "(Github repository)[/url]." msgstr "" "Como Godot, esta aplicación y este curso son gratuitos y de código " diff --git a/i18n/es/classref_database.po b/i18n/es/classref_database.po index 045c6c79..30aac88e 100644 --- a/i18n/es/classref_database.po +++ b/i18n/es/classref_database.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2022-03-20 10:00+0100\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" diff --git a/i18n/es/error_database.po b/i18n/es/error_database.po index ee8340cf..07198411 100644 --- a/i18n/es/error_database.po +++ b/i18n/es/error_database.po @@ -8,17 +8,18 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-06-12 11:18+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-12 19:49+0000\n" +"Last-Translator: gallegonovato \n" +"Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.0.1-dev\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" #. Reference: IN_EXPECTED_AFTER_IDENTIFIER #: script_checking/error_database.csv:40 @@ -32,6 +33,14 @@ msgid "" "creates a new variable with the desired name and assigns each element of the " "array to it." msgstr "" +"Obtienes este error cuando el nombre entre [code]for[/code] y [code]in[/" +"code] no es un nombre de variable válido, o te falta la palabra clave " +"[code]in[/code].\n" +"\n" +"En un bucle [code]for[/code], la palabra clave [code]in[/code] sólo acepta " +"un nombre de variable temporal válido para asignar valores en cada iteración " +"del bucle. El bucle crea una nueva variable con el nombre deseado y le " +"asigna cada elemento del array." #. Reference: IN_EXPECTED_AFTER_IDENTIFIER #: script_checking/error_database.csv:40 @@ -50,6 +59,19 @@ msgid "" "[code]for cell_position in cell_positions_array:\n" " cell_position.x += 1.0[/code]" msgstr "" +"Para solucionar este error, debes asegurarte de que el nombre entre las " +"palabras clave [code]for[/code] y [code]in[/code] es un nombre de una " +"variable válido sin puntuación ni espacios.\n" +"\n" +"Por ejemplo, este código no es válido [code]for cell_position.x in " +"cell_positions_array:[/code] porque [code]cell_position.x[/code] no es un " +"nombre de una variable válida.\n" +"\n" +"Para acceder al subcomponente [code]x[/code] de la variable, tienes que " +"hacerlo dentro del cuerpo del bucle:\n" +"\n" +"[code]for cell_position in cell_positions_array:\n" +" cell_position.x += 1.0[/code]" #. Reference: ASSIGNING_TO_EXPRESSION #: script_checking/error_database.csv:47 @@ -61,6 +83,12 @@ msgid "" "Another possibility is that you want to check for equality in a condition " "but wrote a single = instead of ==." msgstr "" +"Si obtienes este error, lo más probable es que estés intentando asignar un " +"valor a algo que no sea una variable, lo cual es imposible. Sólo se pueden " +"asignar valores a variables.\n" +"\n" +"Otra posibilidad es que quieras comprobar la igualdad en una condición pero " +"hayas escrito un solo = en lugar de ==." #. Reference: ASSIGNING_TO_EXPRESSION #: script_checking/error_database.csv:47 @@ -74,6 +102,14 @@ msgid "" "In the case of a condition, ensure that you are using two equal signs to " "check for equality (==)." msgstr "" +"Si quieres asignar un valor a una variable, comprueba que lo que tienes a la " +"izquierda del signo = es una variable y no una función.\n" +"\n" +"También debes asegurarte de que la sintaxis es correcta. Por ejemplo, no " +"debe haber un paréntesis a la izquierda del signo igual.\n" +"\n" +"En el caso de una condición, asegúrate de que estás utilizando dos signos " +"iguales para comprobar la igualdad (==)." #. Reference: CYCLIC_REFERENCE #: script_checking/error_database.csv:57 @@ -773,6 +809,11 @@ msgid "" "The most common case is when you forget to close a string: you have opening " "quotes, but you forget to add a matching closing quote." msgstr "" +"El ordenador llegó al final de la línea de código, pero la línea tenía un " +"error de sintaxis.\n" +"El caso más común es cuando te olvidas de cerrar una cadena: tienes comillas " +"de apertura, pero te olvidas de añadir las comillas de cierre " +"correspondientes." #. Reference: UNEXPECTED_EOL #: script_checking/error_database.csv:157 @@ -781,11 +822,13 @@ msgid "" "character you used to start the string is the same as the one you used to " "close the string." msgstr "" +"Comprueba que no te falta ninguna comilla o que la comilla con la que " +"empiezas la cadena es la misma que utilizas para cerrarla." #. Reference: CANT_GET_INDEX #: script_checking/error_database.csv:160 msgid "The sub-variable you are trying to access does not exist." -msgstr "" +msgstr "La subvariable a la que intentas acceder no existe." #. Reference: CANT_GET_INDEX #: script_checking/error_database.csv:160 @@ -796,6 +839,11 @@ msgid "" "Ensure that you don't have a capital letter where you should have a " "lowercase letter and vice versa." msgstr "" +"Es probable que haya un error tipográfico en el nombre de la subvariable a " +"la que intentas acceder.\n" +"\n" +"Asegúrate de que no tienes una letra mayúscula donde deberías tener una " +"letra minúscula y viceversa." #~ msgid "" #~ "The server or your computer may currently be disconnected. Also, an app " diff --git a/i18n/es/glossary_database.po b/i18n/es/glossary_database.po index 9278a569..b61aca7e 100644 --- a/i18n/es/glossary_database.po +++ b/i18n/es/glossary_database.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2022-06-12 11:11+0200\n" "Last-Translator: \n" "Language-Team: \n" diff --git a/i18n/es/lesson-1-what-code-is-like.po b/i18n/es/lesson-1-what-code-is-like.po index 84694367..13f4d764 100644 --- a/i18n/es/lesson-1-what-code-is-like.po +++ b/i18n/es/lesson-1-what-code-is-like.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-05-16 09:30+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 07:52+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.1.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-1-what-code-is-like/lesson.tres:14 msgid "" @@ -160,8 +160,11 @@ msgid "" "This is a language by game developers for game developers. You can use it " "within the Godot game engine to create games and applications.\n" "\n" -"SEGA used the Godot engine to create the remake of Sonic Colors Ultimate. " -"Engineers at Tesla use it for their cars' dashboards." +"It's the language used by games like [ignore][url=https://store.steampowered." +"com/app/1637320/Dome_Keeper/]Dome Keeper[/url] and [ignore][url=https://" +"store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" +"Engineers at Tesla also used it for their cars' dashboards." msgstr "" "En este curso, aprenderás el lenguaje de programación GDScript (cuyo nombre " "significa \"script de Godot\").\n" @@ -170,10 +173,13 @@ msgstr "" "de juegos. Puedes utilizarlo dentro del motor de juegos Godot para crear " "juegos y aplicaciones.\n" "\n" -"SEGA utilizó el motor Godot para crear el remake de Sonic Colors Ultimate. " +"Es el lenguaje que utilizan juegos como [ignore][url=https://store." +"steampowered.com/app/1637320/Dome_Keeper/]Dome Keeper[/url] y [ignore]" +"[url=https://store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" "Los ingenieros de Tesla lo usan para los tableros de sus carros." -#: course/lesson-1-what-code-is-like/lesson.tres:148 +#: course/lesson-1-what-code-is-like/lesson.tres:150 msgid "" "GDScript is an excellent language to get started with programming because " "it's specialized. Unlike some other languages, it doesn't have an " @@ -183,11 +189,11 @@ msgstr "" "es especializado. A diferencia de otros lenguajes, no tiene una cantidad " "[i]abrumadora[/i] de funcionalidades que tengas que aprender." -#: course/lesson-1-what-code-is-like/lesson.tres:156 +#: course/lesson-1-what-code-is-like/lesson.tres:158 msgid "Most programming languages are similar" msgstr "La mayoría de los lenguajes de programación son similares" -#: course/lesson-1-what-code-is-like/lesson.tres:158 +#: course/lesson-1-what-code-is-like/lesson.tres:160 msgid "" "Don't be afraid of being locked in. The concepts you learn in your first " "programming language will apply to all the others.\n" @@ -213,15 +219,15 @@ msgstr "" "\n" "Intenta detectar las similitudes y diferencias." -#: course/lesson-1-what-code-is-like/lesson.tres:184 +#: course/lesson-1-what-code-is-like/lesson.tres:186 msgid "It doesn't look [i]that[/i] different, does it?" msgstr "No parece [i]tan[/i] diferente, ¿verdad?" -#: course/lesson-1-what-code-is-like/lesson.tres:192 +#: course/lesson-1-what-code-is-like/lesson.tres:194 msgid "Are programming languages all completely different?" msgstr "¿Son todos los lenguajes de programación completamente diferentes?" -#: course/lesson-1-what-code-is-like/lesson.tres:193 +#: course/lesson-1-what-code-is-like/lesson.tres:195 msgid "" "If you learn one language and then want to learn another, will you have to " "start from scratch?" @@ -229,7 +235,7 @@ msgstr "" "Si aprendes un lenguaje y luego quieres aprender otro, ¿tendrás que empezar " "de cero?" -#: course/lesson-1-what-code-is-like/lesson.tres:195 +#: course/lesson-1-what-code-is-like/lesson.tres:197 msgid "" "Most programming languages build upon the same ideas of how to program. As a " "result, they're mostly similar.\n" @@ -251,20 +257,20 @@ msgstr "" "Sin embargo, lenguajes como GDScript, Python, JavaScript, C++, C# y muchos " "otros se basan en una filosofía de programación similar." -#: course/lesson-1-what-code-is-like/lesson.tres:200 -#: course/lesson-1-what-code-is-like/lesson.tres:201 +#: course/lesson-1-what-code-is-like/lesson.tres:202 +#: course/lesson-1-what-code-is-like/lesson.tres:203 msgid "No, they have many similarities" msgstr "No, tienen muchas similitudes" -#: course/lesson-1-what-code-is-like/lesson.tres:200 +#: course/lesson-1-what-code-is-like/lesson.tres:202 msgid "Yes, they are completely different" msgstr "Sí, son completamente diferentes" -#: course/lesson-1-what-code-is-like/lesson.tres:208 +#: course/lesson-1-what-code-is-like/lesson.tres:210 msgid "This is a course for beginners" msgstr "Este es un curso para principiantes" -#: course/lesson-1-what-code-is-like/lesson.tres:210 +#: course/lesson-1-what-code-is-like/lesson.tres:212 msgid "" "If you want to learn to make games or code but don't know where to start, " "this course should be perfect." @@ -272,7 +278,7 @@ msgstr "" "Si quieres aprender a hacer juegos o a programar pero no sabes por dónde " "empezar, este curso es perfecto para ti." -#: course/lesson-1-what-code-is-like/lesson.tres:230 +#: course/lesson-1-what-code-is-like/lesson.tres:232 msgid "" "We designed it for [i]absolute beginners[/i], but if you already know " "another language, it can be a fun way to get started with Godot.\n" @@ -292,11 +298,11 @@ msgstr "" "Por favor, ten paciencia. Tomará tiempo antes de que puedas hacer tu primer " "juego completo tú solo o sola." -#: course/lesson-1-what-code-is-like/lesson.tres:242 +#: course/lesson-1-what-code-is-like/lesson.tres:244 msgid "Learning to make games takes practice" msgstr "Aprender a hacer juegos requiere práctica" -#: course/lesson-1-what-code-is-like/lesson.tres:244 +#: course/lesson-1-what-code-is-like/lesson.tres:246 msgid "" "Creating games is more accessible than ever, but it still takes a lot of " "work and practice.\n" @@ -322,11 +328,11 @@ msgstr "" "Disfruta del proceso y celebra cada pequeño éxito. Nunca dejarás de aprender " "como desarrollador(a) de juegos." -#: course/lesson-1-what-code-is-like/lesson.tres:258 +#: course/lesson-1-what-code-is-like/lesson.tres:260 msgid "What and how you'll learn" msgstr "Qué y cómo aprenderás" -#: course/lesson-1-what-code-is-like/lesson.tres:260 +#: course/lesson-1-what-code-is-like/lesson.tres:262 msgid "" "In this free course, you will learn the foundations you need to start coding " "things like these:" @@ -334,7 +340,7 @@ msgstr "" "En este curso gratuito, aprenderás los fundamentos que necesitas para " "empezar a codificar cosas como esas." -#: course/lesson-1-what-code-is-like/lesson.tres:290 +#: course/lesson-1-what-code-is-like/lesson.tres:292 msgid "" "Along the way, we'll teach you:\n" "\n" @@ -377,11 +383,25 @@ msgstr "" "a unirte a [url=https://discord.gg/87NNb3Z]nuestra comunidad de Discord[/" "url]." -#: course/lesson-1-what-code-is-like/lesson.tres:310 +#: course/lesson-1-what-code-is-like/lesson.tres:312 +msgid "Is this for Godot 4?" +msgstr "¿Esto es para Godot 4?" + +#: course/lesson-1-what-code-is-like/lesson.tres:314 +msgid "" +"What you'll learn in this free course is fully compatible with Godot 4. " +"While we initially designed this series for Godot 3, the foundations of " +"GDScript are still the same in Godot 4." +msgstr "" +"Lo que aprenderás en este curso gratuito es totalmente compatible con Godot " +"4. Aunque inicialmente diseñamos esta serie para Godot 3, los fundamentos de " +"GDScript siguen siendo los mismos en Godot 4." + +#: course/lesson-1-what-code-is-like/lesson.tres:322 msgid "Programming is a skill" msgstr "Programar es una habilidad" -#: course/lesson-1-what-code-is-like/lesson.tres:312 +#: course/lesson-1-what-code-is-like/lesson.tres:324 msgid "" "Programming is a skill, so to get good at it, you must practice. It is why " "we built this app.\n" @@ -404,11 +424,11 @@ msgstr "" "Para continuar, haz clic en el botón [i]Práctica[/i] de abajo. Te dará una " "breve explicación de cómo funcionan las prácticas." -#: course/lesson-1-what-code-is-like/lesson.tres:326 +#: course/lesson-1-what-code-is-like/lesson.tres:338 msgid "Try Your First Code" msgstr "Prueba tu primer código" -#: course/lesson-1-what-code-is-like/lesson.tres:327 +#: course/lesson-1-what-code-is-like/lesson.tres:339 msgid "" "We prepared a code sample for you. For this practice, you don't need to " "change anything.\n" @@ -421,11 +441,11 @@ msgstr "" "Para probar el código, haz clic en el botón [i]Ejecutar[/i] situado debajo " "del editor de código." -#: course/lesson-1-what-code-is-like/lesson.tres:339 +#: course/lesson-1-what-code-is-like/lesson.tres:351 msgid "Run your first bit of code and see the result." msgstr "Ejecuta tu primer pedacito de código y mira el resultado." -#: course/lesson-1-what-code-is-like/lesson.tres:343 +#: course/lesson-1-what-code-is-like/lesson.tres:355 msgid "What Code is Like" msgstr "Cómo es el código" diff --git a/i18n/es/lesson-10-the-game-loop.po b/i18n/es/lesson-10-the-game-loop.po index 0a7bd9c2..08d20bc8 100644 --- a/i18n/es/lesson-10-the-game-loop.po +++ b/i18n/es/lesson-10-the-game-loop.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-06-12 11:27+0200\n" +"PO-Revision-Date: 2023-10-06 07:53+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-10-the-game-loop/lesson.tres:14 msgid "" @@ -105,7 +105,6 @@ msgid "2" msgstr "2" #: course/lesson-10-the-game-loop/lesson.tres:78 -#, fuzzy msgid "" "The [code]_process()[/code] function won't do anything until we add " "something to it.\n" @@ -125,14 +124,18 @@ msgstr "" "\n" "Puedes observar el guión bajo [code]_[/code] delante del nombre de la " "función. Esta es una convención. Significa que la función ya está definida " -"por Godot.\n" +"por Godot, y sólo tendrá sentido cuando tengas experiencia programando en " +"Godot.\n" "\n" -"Si la función existe y se llama exactamente [code]_process[/code], entonces " -"Godot la ejecutará automáticamente en cada fotograma. " +"Por ahora, todo lo que necesitas saber es que si la función existe en su " +"código, y es llamada precisamente [code]_process[/code], Godot la ejecutará " +"automáticamente cada [i]frame[/i] (cada fotograma).\n" +"\n" +"Cuando Godot dibuja en la pantalla, llamamos a eso un \"frame\"." #: course/lesson-10-the-game-loop/lesson.tres:92 msgid "Is this the same for other engines?" -msgstr "" +msgstr "¿Es lo mismo para otros motores?" #: course/lesson-10-the-game-loop/lesson.tres:94 msgid "" diff --git a/i18n/es/lesson-11-time-delta.po b/i18n/es/lesson-11-time-delta.po index c9c13950..1775d12f 100644 --- a/i18n/es/lesson-11-time-delta.po +++ b/i18n/es/lesson-11-time-delta.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-06-12 11:27+0200\n" +"PO-Revision-Date: 2023-10-06 08:01+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-11-time-delta/lesson.tres:14 msgid "" @@ -60,7 +60,7 @@ msgstr "" #: course/lesson-11-time-delta/lesson.tres:50 msgid "This sounds like Frames Per Second..." -msgstr "" +msgstr "Esto suena como Frames Per Second (Fotograma Por Segundo)..." #: course/lesson-11-time-delta/lesson.tres:52 msgid "" @@ -132,7 +132,6 @@ msgid "Frames take varying amounts of time to calculate" msgstr "Los fotogramas tardan diferentes cantidades de tiempo en calcularse" #: course/lesson-11-time-delta/lesson.tres:93 -#, fuzzy msgid "" "Depending on the game, the computer, and what the game engine needs to " "calculate, frames take more or less time to display.\n" @@ -173,14 +172,20 @@ msgstr "" "completar el [b]fotograma anterior[/b].\n" "\n" "Podemos utilizarlo para asegurarnos de que las variaciones entre fotogramas " -"no hacen que la simulación del juego sea poco fiable." +"no hacen que la simulación del juego sea poco fiable.\n" +"\n" +"Esto es porque los distintos ordenadores funcionan de forma diferente, por " +"lo que un ordenador rápido tendrá más fotogramas por segundo que uno lento.\n" +"\n" +"Si ignoramos [code]delta[/code], la experiencia de juego variará en función " +"del ordenador. Delta ayuda a que la experiencia de juego sea uniforme para " +"todos." #: course/lesson-11-time-delta/lesson.tres:115 msgid "What do we know about delta?" msgstr "¿Qué sabemos sobre delta?" #: course/lesson-11-time-delta/lesson.tres:118 -#, fuzzy msgid "" "[code]delta[/code] is the time it took Godot to complete the previous frame " "in seconds.\n" @@ -209,7 +214,6 @@ msgstr "Varía en cada fotograma." #: course/lesson-11-time-delta/lesson.tres:123 #: course/lesson-11-time-delta/lesson.tres:124 -#, fuzzy msgid "It's the time it took Godot to complete the previous frame." msgstr "Es el tiempo que le toma a Godot completar el fotograma anterior." diff --git a/i18n/es/lesson-13-conditions.po b/i18n/es/lesson-13-conditions.po index edeae8d5..67d5d8be 100644 --- a/i18n/es/lesson-13-conditions.po +++ b/i18n/es/lesson-13-conditions.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-06-12 11:28+0200\n" +"PO-Revision-Date: 2023-10-06 08:04+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-13-conditions/lesson.tres:14 msgid "" @@ -113,7 +113,6 @@ msgstr "" "[i]si[/i] el jugador presiona el botón de un gamepad, el personaje salta." #: course/lesson-13-conditions/lesson.tres:107 -#, fuzzy msgid "" "When the computer checks a condition, this is called [b]to evaluate[/b] a " "condition. All conditions [b]evaluate[/b] to either [code]true[/code] or " @@ -144,7 +143,6 @@ msgstr "" "condición que se debe evaluar y terminamos la línea con dos puntos." #: course/lesson-13-conditions/lesson.tres:133 -#, fuzzy msgid "" "Notice the [code]>[/code] comparison sign. We read this symbol as \"greater " "than\".\n" @@ -201,7 +199,7 @@ msgstr "" #: course/lesson-13-conditions/lesson.tres:187 msgid "What does \"pass\" do in the code?" -msgstr "" +msgstr "¿Qué hace \"pass\" en el código?" #: course/lesson-13-conditions/lesson.tres:189 msgid "" @@ -217,6 +215,17 @@ msgid "" "lines, Godot would give us an \"Expected an indented block after 'if' \" " "error." msgstr "" +"La palabra clave [code]pass[/code] evita errores en nuestro código cuando " +"una línea no puede estar vacía.\n" +"\n" +"Por ejemplo, debemos tener una línea de código después de la definición de " +"una función o de un bloque [code]if[/code]. Cuando aún no sepas qué " +"escribir, puedes usar la palabra clave [code]pass[/code] como marcador de " +"posición, y Godot no dará ningún error.\n" +"\n" +"En el ejemplo anterior, si no hubiera nada debajo de las líneas [code]if[/" +"code], Godot nos daría un error \"Expected an indented block after 'if' " +"\" (\"Se espera un bloque sangrado después de 'if' \")." #: course/lesson-13-conditions/lesson.tres:201 msgid "Which of these statements are true?" @@ -310,7 +319,6 @@ msgid "Using Comparisons" msgstr "Usar comparaciones" #: course/lesson-13-conditions/lesson.tres:261 -#, fuzzy msgid "" "This series of [code]if[/code] statements is all wrong. Change the " "comparisons so each comparison matches the instruction below it.\n" diff --git a/i18n/es/lesson-14-multiplying.po b/i18n/es/lesson-14-multiplying.po index ec549748..5b55bb0e 100644 --- a/i18n/es/lesson-14-multiplying.po +++ b/i18n/es/lesson-14-multiplying.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-04-14 14:19+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 07:48+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-14-multiplying/lesson.tres:14 msgid "" @@ -61,7 +61,6 @@ msgstr "" "rango de variables que podrían aumentar cuando sube de nivel." #: course/lesson-14-multiplying/lesson.tres:70 -#, fuzzy msgid "" "In this lesson, we'll just focus on increasing the robot's [code]max_health[/" "code].\n" @@ -310,7 +309,6 @@ msgstr "" "Este daño debería reducirse a 5." #: course/lesson-14-multiplying/lesson.tres:299 -#: course/lesson-14-multiplying/lesson.tres:302 msgid "" "At higher levels, we want our robot to be super tough and take even less " "damage!" @@ -319,22 +317,20 @@ msgstr "" "que reciba aún menos daño!" #: course/lesson-14-multiplying/lesson.tres:303 -#: course/lesson-14-multiplying/lesson.tres:306 msgid "Multiplying" msgstr "Multiplicar" -#: course/lesson-14-multiplying/lesson.tres:70 -msgid "" -"In this lesson, we'll just focus on increasing the robot's [code]max_health[/" -"code].\n" -"\n" -"The variable [code]max_health[/code] is the maximum amount the robot's " -"[code]health[/code] can be. We change our [code]take_damage()[/code] " -"function to use this variable." -msgstr "" -"En esta lección, sólo nos centraremos en aumentar la salud máxima, o " -"[code]max_health[/code], del robot.\n" -"\n" -"La variable [code]max_health[/code] es la cantidad máxima que puede tener la " -"[code]health[/code] del robot. Cambiamos nuestra función [code]take_damage()" -"[/code] para utilizar esta variable." +#~ msgid "" +#~ "In this lesson, we'll just focus on increasing the robot's " +#~ "[code]max_health[/code].\n" +#~ "\n" +#~ "The variable [code]max_health[/code] is the maximum amount the robot's " +#~ "[code]health[/code] can be. We change our [code]take_damage()[/code] " +#~ "function to use this variable." +#~ msgstr "" +#~ "En esta lección, sólo nos centraremos en aumentar la salud máxima, o " +#~ "[code]max_health[/code], del robot.\n" +#~ "\n" +#~ "La variable [code]max_health[/code] es la cantidad máxima que puede tener " +#~ "la [code]health[/code] del robot. Cambiamos nuestra función " +#~ "[code]take_damage()[/code] para utilizar esta variable." diff --git a/i18n/es/lesson-16-2d-vectors.po b/i18n/es/lesson-16-2d-vectors.po index 14f212cb..6b071540 100644 --- a/i18n/es/lesson-16-2d-vectors.po +++ b/i18n/es/lesson-16-2d-vectors.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-04-20 23:14+0200\n" +"PO-Revision-Date: 2023-10-06 08:09+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-16-2d-vectors/lesson.tres:14 msgid "" @@ -197,7 +197,6 @@ msgid "How would you move the robot 50 pixels to the left?" msgstr "¿Cómo moverías el robot 50 pixeles a la izquierda?" #: course/lesson-16-2d-vectors/lesson.tres:169 -#, fuzzy msgid "" "[code]position -= Vector2(50, 0)[/code] subtracts [code]50[/code] to the sub-" "variable [code]x[/code], and [code]0[/code] to [code]y[/code].\n" @@ -219,7 +218,6 @@ msgid "position -= Vector2(50, 0)" msgstr "position -= Vector2(50, 0)" #: course/lesson-16-2d-vectors/lesson.tres:172 -#, fuzzy msgid "position.x -= Vector2(50, 0)" msgstr "position.x -= Vector(50, 0)" diff --git a/i18n/es/lesson-17-while-loops.po b/i18n/es/lesson-17-while-loops.po index d7590cc4..37c30695 100644 --- a/i18n/es/lesson-17-while-loops.po +++ b/i18n/es/lesson-17-while-loops.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-03-26 18:19+0100\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 07:44+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,10 +18,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-17-while-loops/lesson.tres:14 -#, fuzzy msgid "" "You've seen that you can use functions to [i]reuse[/i] code. In this lesson, " "you'll learn about [b]loops[/b]. Loops help you [i]repeat[/i] code.\n" @@ -45,7 +44,8 @@ msgstr "" "dividido en una cuadrícula.\n" "\n" "Nuestro robot puede moverse a las celdas vecinas cambiando una variable " -"[code]Vector2[/code] llamada variable celda, o [code]cell[/code].\n" +"[code]Vector2[/code] llamada variable celda, o [code]cell[/code]. Representa " +"la celda donde está el roboto.\n" "\n" "Cuando aumentamos [code]cell.x[/code], el robot se mueve hacia la derecha.\n" "\n" @@ -126,7 +126,6 @@ msgstr "" "Puedes ver que el siguiente código se ejecuta cuatro veces en la consola." #: course/lesson-17-while-loops/lesson.tres:126 -#, fuzzy msgid "" "Let's apply this to our [code]move_to_end()[/code] function.\n" "\n" @@ -146,15 +145,17 @@ msgstr "" "haciendo bucles hasta alcanzar el ancho del tablero.\n" "\n" "Ten en cuenta que nos movemos uno menos que el ancho del tablero porque el " -"robot ya está en la primera celda." +"robot ya está en la primera celda.\n" +"\n" +"Un tablero de [code]3[/code] por [code]3[/code] celdas tendría unas " +"coordenadas de celda que irían de [code]0[/code] a [code]2[/code] en los " +"ejes X e Y." #: course/lesson-17-while-loops/lesson.tres:160 -#: course/lesson-17-while-loops/lesson.tres:158 msgid "While loops can cause issues" msgstr "Los bucles while pueden causar problemas" #: course/lesson-17-while-loops/lesson.tres:162 -#: course/lesson-17-while-loops/lesson.tres:160 msgid "" "If you're not careful, your [code]while[/code] loop can run infinitely. In " "that case, the application will freeze.\n" @@ -167,12 +168,10 @@ msgstr "" "Echa un vistazo a este ejemplo de código." #: course/lesson-17-while-loops/lesson.tres:182 -#: course/lesson-17-while-loops/lesson.tres:180 msgid "What would happen if the computer tried to run the code above?" msgstr "¿Qué pasaría si la computadora intentara ejecutar el código anterior?" #: course/lesson-17-while-loops/lesson.tres:185 -#: course/lesson-17-while-loops/lesson.tres:183 msgid "" "Because we don't increment [code]number[/code] within the [code]while[/code] " "loop, it always stays at [code]0[/code].\n" @@ -200,28 +199,22 @@ msgstr "" #: course/lesson-17-while-loops/lesson.tres:192 #: course/lesson-17-while-loops/lesson.tres:193 -#: course/lesson-17-while-loops/lesson.tres:190 -#: course/lesson-17-while-loops/lesson.tres:191 msgid "It would draw squares infinitely until the program is terminated" msgstr "Dibujaría cuadrados infinitamente hasta que el programa sea finalizado" #: course/lesson-17-while-loops/lesson.tres:192 -#: course/lesson-17-while-loops/lesson.tres:190 msgid "It would draw 10 squares" msgstr "Dibujaría 10 cuadrados" #: course/lesson-17-while-loops/lesson.tres:192 -#: course/lesson-17-while-loops/lesson.tres:190 msgid "It would draw 20 squares" msgstr "Dibujaría 20 cuadrados" #: course/lesson-17-while-loops/lesson.tres:200 -#: course/lesson-17-while-loops/lesson.tres:198 msgid "When to use while loops" msgstr "Cuándo utilizar los bucles while" #: course/lesson-17-while-loops/lesson.tres:202 -#: course/lesson-17-while-loops/lesson.tres:200 msgid "" "At first, you will not need [code]while[/code] loops often. Even the code we " "show here has more efficient alternatives.\n" @@ -276,7 +269,6 @@ msgstr "" "en un mapa para la IA." #: course/lesson-17-while-loops/lesson.tres:227 -#: course/lesson-17-while-loops/lesson.tres:225 msgid "" "Let's practice some [code]while[/code] loops, as they're useful to know. " "It's also an excellent opportunity to practice 2D vectors.\n" @@ -292,12 +284,10 @@ msgstr "" "en la siguiente lección." #: course/lesson-17-while-loops/lesson.tres:237 -#: course/lesson-17-while-loops/lesson.tres:235 msgid "Moving to the end of a board" msgstr "Moverse al final de un tablero" #: course/lesson-17-while-loops/lesson.tres:238 -#: course/lesson-17-while-loops/lesson.tres:236 msgid "" "Our robot has decided to stand at the top of the board.\n" "\n" @@ -326,7 +316,6 @@ msgstr "" "funcione para cualquier tamaño de tablero." #: course/lesson-17-while-loops/lesson.tres:256 -#: course/lesson-17-while-loops/lesson.tres:254 msgid "" "Use a while loop to have our robot move from the top of the board to the " "bottom." @@ -335,55 +324,54 @@ msgstr "" "superior del tablero hasta la inferior." #: course/lesson-17-while-loops/lesson.tres:260 -#: course/lesson-17-while-loops/lesson.tres:258 msgid "Introduction to While Loops" msgstr "Introducción a los bucles while" -#: course/lesson-17-while-loops/lesson.tres:14 -msgid "" -"You've seen that you can use functions to [i]reuse[/i] code. In this lesson, " -"you'll learn about [b]loops[/b]. Loops help you [i]repeat[/i] code.\n" -"\n" -"To illustrate how loops work, let's take a game board split into a grid.\n" -"\n" -"Our robot can move to neighboring cells by changing a [code]Vector2[/code] " -"variable named [code]cell[/code].\n" -"\n" -"When we increase [code]cell.x[/code], the robot moves to the right.\n" -"\n" -"Note that we delay the robot's movement in the app to help you visualize how " -"it moves. The following code would normally move the robot instantly." -msgstr "" -"Ya has visto que puedes utilizar funciones para [i]reutilizar[/i] código. En " -"esta lección, aprenderás sobre los [b]bucles[/b]. Los bucles te ayudan a " -"[i]repetir[/i] código.\n" -"\n" -"Para ilustrar cómo funcionan los bucles, tomemos un tablero de juego " -"dividido en una cuadrícula.\n" -"\n" -"Nuestro robot puede moverse a las celdas vecinas cambiando una variable " -"[code]Vector2[/code] llamada variable celda, o [code]cell[/code].\n" -"\n" -"Cuando aumentamos [code]cell.x[/code], el robot se mueve hacia la derecha.\n" -"\n" -"Ten en cuenta que retrasamos el movimiento del robot en la aplicación para " -"ayudarte a visualizar cómo se mueve. El siguiente código normalmente movería " -"el robot de forma instantánea." +#~ msgid "" +#~ "You've seen that you can use functions to [i]reuse[/i] code. In this " +#~ "lesson, you'll learn about [b]loops[/b]. Loops help you [i]repeat[/i] " +#~ "code.\n" +#~ "\n" +#~ "To illustrate how loops work, let's take a game board split into a grid.\n" +#~ "\n" +#~ "Our robot can move to neighboring cells by changing a [code]Vector2[/" +#~ "code] variable named [code]cell[/code].\n" +#~ "\n" +#~ "When we increase [code]cell.x[/code], the robot moves to the right.\n" +#~ "\n" +#~ "Note that we delay the robot's movement in the app to help you visualize " +#~ "how it moves. The following code would normally move the robot instantly." +#~ msgstr "" +#~ "Ya has visto que puedes utilizar funciones para [i]reutilizar[/i] código. " +#~ "En esta lección, aprenderás sobre los [b]bucles[/b]. Los bucles te ayudan " +#~ "a [i]repetir[/i] código.\n" +#~ "\n" +#~ "Para ilustrar cómo funcionan los bucles, tomemos un tablero de juego " +#~ "dividido en una cuadrícula.\n" +#~ "\n" +#~ "Nuestro robot puede moverse a las celdas vecinas cambiando una variable " +#~ "[code]Vector2[/code] llamada variable celda, o [code]cell[/code].\n" +#~ "\n" +#~ "Cuando aumentamos [code]cell.x[/code], el robot se mueve hacia la " +#~ "derecha.\n" +#~ "\n" +#~ "Ten en cuenta que retrasamos el movimiento del robot en la aplicación " +#~ "para ayudarte a visualizar cómo se mueve. El siguiente código normalmente " +#~ "movería el robot de forma instantánea." -#: course/lesson-17-while-loops/lesson.tres:126 -msgid "" -"Let's apply this to our [code]move_to_end()[/code] function.\n" -"\n" -"This time, we compare the number of loops to the board's width. We go " -"through the loop until we reach the width of the board.\n" -"\n" -"Note that we move one less than the board's width because the robot is " -"already on the first cell." -msgstr "" -"Apliquemos esto a nuestra función [code]move_to_end()[/code].\n" -"\n" -"Esta vez, comparamos el número de bucles con el ancho del tablero. Seguimos " -"haciendo bucles hasta alcanzar el ancho del tablero.\n" -"\n" -"Ten en cuenta que nos movemos uno menos que el ancho del tablero porque el " -"robot ya está en la primera celda." +#~ msgid "" +#~ "Let's apply this to our [code]move_to_end()[/code] function.\n" +#~ "\n" +#~ "This time, we compare the number of loops to the board's width. We go " +#~ "through the loop until we reach the width of the board.\n" +#~ "\n" +#~ "Note that we move one less than the board's width because the robot is " +#~ "already on the first cell." +#~ msgstr "" +#~ "Apliquemos esto a nuestra función [code]move_to_end()[/code].\n" +#~ "\n" +#~ "Esta vez, comparamos el número de bucles con el ancho del tablero. " +#~ "Seguimos haciendo bucles hasta alcanzar el ancho del tablero.\n" +#~ "\n" +#~ "Ten en cuenta que nos movemos uno menos que el ancho del tablero porque " +#~ "el robot ya está en la primera celda." diff --git a/i18n/es/lesson-18-for-loops.po b/i18n/es/lesson-18-for-loops.po index 45eb54dd..50181331 100644 --- a/i18n/es/lesson-18-for-loops.po +++ b/i18n/es/lesson-18-for-loops.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-03-26 18:20+0100\n" +"PO-Revision-Date: 2023-10-06 07:59+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-18-for-loops/lesson.tres:14 msgid "" @@ -75,7 +75,6 @@ msgid "The range() function" msgstr "La función range()" #: course/lesson-18-for-loops/lesson.tres:76 -#, fuzzy msgid "" "Godot has the helper function [code]range()[/code]. Calling [code]range(n)[/" "code] creates a list of numbers from [code]0[/code] to [code]n - 1[/code]. \n" @@ -143,7 +142,6 @@ msgstr "" # Godot sets [code]number[/code] to the item, #: course/lesson-18-for-loops/lesson.tres:123 -#, fuzzy msgid "" "In the above example, for each item in the list [code][0, 1, 2][/code], " "Godot sets [code]number[/code] to the item, then executes the code in the " @@ -160,11 +158,12 @@ msgstr "" "code], Godot asigna el elemento a la variable [code]number[/code], y luego " "ejecuta el código en el bucle [code]for[/code].\n" "\n" -"En este ejemplo, estamos imprimiendo el valor de [code]number[/code] a " -"medida que Godot se mueve por el bucle.\n" +"Explicaremos los arrays con más detalle en la próxima lección, pero fíjate " +"en que [code]number[/code] es sólo una variable temporal. La creas cuando " +"defines el bucle, y el bucle se encarga de cambiar su valor. Además, puedes " +"nombrar esta variable como quieras.\n" "\n" -"Podemos poner el código que queramos en el bloque de código del bucle, " -"incluyendo otras llamadas a funciones como [code]draw_rectangle()[/code]." +"Este código se comporta igual que el ejemplo anterior:" #: course/lesson-18-for-loops/lesson.tres:147 msgid "" @@ -179,19 +178,30 @@ msgid "" "We can break down the instructions the loop runs. You can see how a loop is " "a shortcut to code that otherwise gets very long." msgstr "" +"En ambos ejemplos, imprimimos el valor de la variable temporal que hemos " +"creado: [code]número[/code] en el primer ejemplo y [code]elemento[/code] en " +"el segundo.\n" +"\n" +"A medida que Godot avanza por el bucle, asigna cada valor de la matriz a esa " +"variable. Primero, asigna a la variable el valor [code]0[/code], luego el " +"valor [code]1[/code] y, por último, el valor [code]2[/code].\n" +"\n" +"Podemos desglosar las instrucciones que ejecuta el bucle. Puedes ver cómo un " +"bucle es un atajo para un código que, de otro modo, sería muy largo." #: course/lesson-18-for-loops/lesson.tres:171 msgid "" "We can put whatever code we like in the loop's code block, including other " "function calls like [code]draw_rectangle()[/code]." msgstr "" +"Podemos poner el código que queramos en el bloque de código del bucle, " +"incluyendo otras llamadas a funciones como [code]draw_rectangle()[/code]." #: course/lesson-18-for-loops/lesson.tres:179 msgid "Using a for loop instead of a while loop" msgstr "Utilizar un bucle for en lugar de bucles while" #: course/lesson-18-for-loops/lesson.tres:181 -#, fuzzy msgid "" "Here's our old [code]move_to_end()[/code] function which used a [code]while[/" "code] loop." diff --git a/i18n/es/lesson-19-creating-arrays.po b/i18n/es/lesson-19-creating-arrays.po index 81990a51..ec3a344d 100644 --- a/i18n/es/lesson-19-creating-arrays.po +++ b/i18n/es/lesson-19-creating-arrays.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-03-26 18:22+0100\n" +"PO-Revision-Date: 2023-10-06 07:56+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-19-creating-arrays/lesson.tres:13 msgid "" @@ -31,7 +31,6 @@ msgstr "" "lista de números [code][0, 1, 2][/code]." #: course/lesson-19-creating-arrays/lesson.tres:33 -#, fuzzy msgid "" "A list of values, numbers or otherwise, has a precise name in code: we call " "it an [i]array[/i]. So we can say calling the [code]range()[/code] function " @@ -58,12 +57,21 @@ msgid "" "\n" "But we could name it anything we'd like!" msgstr "" +"Como puedes ver, el código sigue funcionando igual. Observa que cuando " +"creamos un bucle [code]for[/code], también creamos una variable local a la " +"que el bucle asigna un valor por iteración. Arriba, la hemos llamado " +"[code]number[/code] (número en inglés) porque el array sobre el que hacemos " +"el bucle contiene tres números (0, 1 y 2).\n" +"\n" +"Pero podemos ponerle el nombre que queramos." #: course/lesson-19-creating-arrays/lesson.tres:77 msgid "" "If we \"unwrap\" the [code]for[/code] loop above, we'd get the following " "code with the exact same behaviour:" msgstr "" +"Si \"desenvolvemos\" el bucle [code]for[/code] anterior, obtendríamos el " +"siguiente código con exactamente el mismo comportamiento:" #: course/lesson-19-creating-arrays/lesson.tres:95 msgid "The syntax of arrays" @@ -148,7 +156,6 @@ msgid "Using arrays to follow a path" msgstr "Utilizar matrices para seguir un camino" #: course/lesson-19-creating-arrays/lesson.tres:192 -#, fuzzy msgid "" "Let's look at a widespread use of arrays in games: finding and following a " "path.\n" @@ -166,9 +173,10 @@ msgstr "" "En los juegos, necesitas que los aliados o los monstruos encuentren el " "camino hacia su objetivo, ya sea el jugador o algún punto de interés.\n" "\n" -"Para conseguir esto, utilizamos [i]algoritmos de búsqueda de rutas[/i]. Como " -"su nombre lo indica, esos algoritmos encuentran la ruta entre dos puntos y " -"permiten que las IAs recorran el juego." +"Para conseguir esto, utilizamos [i]algoritmos de búsqueda de rutas[/i] " +"(\"pathfinding algorithms\" en inglés). Como su nombre lo indica, esos " +"algoritmos encuentran la ruta entre dos puntos y permiten que las IAs " +"recorran el juego." #: course/lesson-19-creating-arrays/lesson.tres:216 msgid "" diff --git a/i18n/es/lesson-21-strings.po b/i18n/es/lesson-21-strings.po index e0e9686c..9bdf1c64 100644 --- a/i18n/es/lesson-21-strings.po +++ b/i18n/es/lesson-21-strings.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-10-10 21:11+0000\n" +"PO-Revision-Date: 2023-10-06 08:08+0200\n" "Last-Translator: Fernando \n" "Language-Team: Spanish \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14.1\n" +"X-Generator: Poedit 3.3.1\n" "Generated-By: Babel 2.9.1\n" #: course/lesson-21-strings/lesson.tres:14 @@ -173,7 +173,6 @@ msgid "Using an array of strings to play a combo" msgstr "Utilizar una matriz de cadenas para reproducir un combo" #: course/lesson-21-strings/lesson.tres:169 -#, fuzzy msgid "" "In this practice, we'll chain together animations using an array of strings. " "You might find such combinations in fighting games.\n" @@ -205,8 +204,8 @@ msgstr "" "Luego, para cada acción en la matriz, llama a la función " "[code]play_animation()[/code] para reproducirlas.\n" "\n" -"El robot debe realizar las siguientes acciones en orden: [code]jab, jab, " -"uppercut[/code]" +"El robot debe realizar las siguientes acciones en orden, por lo que el robot " +"realiza estos tres ataques: dos jabs seguidos de un uppercut." #: course/lesson-21-strings/lesson.tres:190 msgid "Define an array of strings to unleash a powerful combo." diff --git a/i18n/es/lesson-22-functions-return-values.po b/i18n/es/lesson-22-functions-return-values.po index 382f7c7b..967f6eb1 100644 --- a/i18n/es/lesson-22-functions-return-values.po +++ b/i18n/es/lesson-22-functions-return-values.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-06-12 11:30+0200\n" +"PO-Revision-Date: 2023-10-06 08:07+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-22-functions-return-values/lesson.tres:13 msgid "" @@ -57,7 +57,6 @@ msgstr "" "argumento y te devuelve un nuevo número redondeado al dígito más cercano." #: course/lesson-22-functions-return-values/lesson.tres:49 -#, fuzzy msgid "" "Imagine you have a game where you track the player's health as a percentage, " "a decimal number going from [code]0.0[/code] to [code]100.0[/code].\n" @@ -141,7 +140,6 @@ msgid "Writing a function that returns a value" msgstr "Escribir una función que devuelva un valor" #: course/lesson-22-functions-return-values/lesson.tres:149 -#, fuzzy msgid "" "You can make [i]your[/i] functions return values.\n" "\n" @@ -181,6 +179,16 @@ msgid "" "\n" "The function returns the result, allowing us to store it in a variable." msgstr "" +"Para ello, utilizamos una función. La función hace dos cosas:\n" +"\n" +"1. Primero, multiplica las coordenadas de la celda por el tamaño de la " +"celda, lo que nos da la posición de la esquina superior izquierda de la " +"celda en la pantalla, en píxeles.\n" +"2. A continuación, sumamos la mitad del tamaño de la celda para obtener el " +"centro de la misma.\n" +"\n" +"La función devuelve el resultado, lo que nos permite almacenarlo en una " +"variable." #: course/lesson-22-functions-return-values/lesson.tres:202 msgid "" @@ -191,7 +199,6 @@ msgstr "" "la función. Recibirás el resultado donde llames a la función." #: course/lesson-22-functions-return-values/lesson.tres:222 -#, fuzzy msgid "" "Some functions return values, and some do not. During practices, you can " "learn which functions return a value using the documentation panel. It will " @@ -206,7 +213,8 @@ msgid "" msgstr "" "Algunas funciones devuelven valores y otras no. Puedes saber qué funciones " "devuelven un resultado utilizando el panel de documentación de la pantalla " -"de prácticas.\n" +"de prácticas. Te mostrará si la práctica requiere el uso de funciones o " +"variables específicas.\n" "\n" "Allí, las funciones que empiezan con el término [code]void[/code] no " "devuelven ningún valor. Cualquier otro término significa que la función sí " diff --git a/i18n/es/lesson-26-looping-over-dictionaries.po b/i18n/es/lesson-26-looping-over-dictionaries.po index c40a569b..d78bbe30 100644 --- a/i18n/es/lesson-26-looping-over-dictionaries.po +++ b/i18n/es/lesson-26-looping-over-dictionaries.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-06-12 11:07+0200\n" -"PO-Revision-Date: 2022-03-26 18:33+0100\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 08:08+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-26-looping-over-dictionaries/lesson.tres:13 msgid "" @@ -61,9 +61,9 @@ msgstr "" msgid "" "But it's something we do so much that you don't need to call the function.\n" "\n" -"Instead, you can directly type the variable name in a [code]for[/code] loop " -"after the [code]in[/code] keyword. The language understands that you " -"implicitly want to loop over the dictionary's keys." +"Instead, you can directly [ignore]type the variable name in a [code]for[/" +"code] loop after the [code]in[/code] keyword. The language understands that " +"you implicitly want to loop over the dictionary's keys." msgstr "" "Pero esto es algo que hacemos tanto que no es necesario llamar a la " "función.\n" diff --git a/i18n/es/lesson-28-specifying-types.po b/i18n/es/lesson-28-specifying-types.po index 7b4f826e..bc68ed13 100644 --- a/i18n/es/lesson-28-specifying-types.po +++ b/i18n/es/lesson-28-specifying-types.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-05-16 10:29+0200\n" +"PO-Revision-Date: 2023-10-06 08:09+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-28-specifying-types/lesson.tres:13 msgid "" @@ -46,7 +46,6 @@ msgid "Cell size: decimal number, or 2D vector?" msgstr "Tamaño de la celda: ¿número decimal o vector 2D?" #: course/lesson-28-specifying-types/lesson.tres:45 -#, fuzzy msgid "" "Games use grids all the time, be it for grid-based gameplay or to make " "algorithms faster.\n" @@ -69,7 +68,8 @@ msgstr "" "das a cada celda un tamaño en pixeles.\n" "\n" "Es probable que elijas uno de los siguientes dos tipos para eso: " -"[code]float[/code] o [code]Vector2[/code].\n" +"[code]float[/code] o [code]Vector2[/code], porque las posiciones de los " +"píxeles en la pantalla utilizan coordenadas [code]Vector2[/code].\n" "\n" "Cualquiera de esos dos valores estaría bien:" diff --git a/i18n/es/lesson-3-standing-on-shoulders-of-giants.po b/i18n/es/lesson-3-standing-on-shoulders-of-giants.po index ea4db173..15cc9c23 100644 --- a/i18n/es/lesson-3-standing-on-shoulders-of-giants.po +++ b/i18n/es/lesson-3-standing-on-shoulders-of-giants.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-05-16 09:34+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 08:10+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.1.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:14 msgid "" @@ -90,8 +90,8 @@ msgstr "" "[i]llamas[/i] a la función.\n" "\n" "Para llamar a una función, escribes su nombre [i]exacto[/i] seguido de un " -"paréntesis abierto y otro cerrado. Para llamar a la función llamada \"show" -"\", escribirías [code]show()[/code]." +"paréntesis abierto y otro cerrado. Para llamar a la función llamada " +"\"show\", escribirías [code]show()[/code]." #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:58 msgid "" @@ -325,7 +325,7 @@ msgstr "" #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 -msgid "It calls the function named \"show.\"" +msgid "It calls the function named \"show\"." msgstr "Llama a la función llamada \"show\"." #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 @@ -500,8 +500,8 @@ msgstr "Estamos parados sobre los hombros de gigantes" #~ "[i]llamas[/i] a la función.\n" #~ "\n" #~ "Para [i]llamar[/i] a una función, escribes su nombre exacto seguido de un " -#~ "paréntesis abierto y otro cerrado. Para llamar a la función llamada \"show" -#~ "\", escribirías [code]show()[/code].\n" +#~ "paréntesis abierto y otro cerrado. Para llamar a la función llamada " +#~ "\"show\", escribirías [code]show()[/code].\n" #~ "\n" #~ "El siguiente listado de código contiene dos líneas de código que llaman a " #~ "las funciones [code]show()[/code] y [code]hide()[/code].\n" diff --git a/i18n/es/lesson-4-drawing-a-rectangle.po b/i18n/es/lesson-4-drawing-a-rectangle.po index 9d373572..0fe48f4f 100644 --- a/i18n/es/lesson-4-drawing-a-rectangle.po +++ b/i18n/es/lesson-4-drawing-a-rectangle.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-05-16 09:41+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -91,6 +91,10 @@ msgstr "" "Por ejemplo, para mover la tortuga 200 pixeles, escribirías " "[code]move_forward(200)[/code]." +#: course/lesson-4-drawing-a-rectangle/lesson.tres:76 +msgid "Turning left and right" +msgstr "" + #: course/lesson-4-drawing-a-rectangle/lesson.tres:78 msgid "" "The functions [code]turn_left()[/code] and [code]turn_right()[/code] work " @@ -167,10 +171,32 @@ msgid "30" msgstr "30" #: course/lesson-4-drawing-a-rectangle/lesson.tres:140 +msgid "The turtle uses code made specifically for this app!" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:142 +msgid "" +"The turtle is a little learning tool custom-made for this course, based on a " +"proven code learning methodology. It's designed to teach you how to use and " +"create functions.\n" +"\n" +"So please don't be surprised if writing code like [code]turn_left()[/code] " +"inside of the Godot editor doesn't work! And don't worry, once you've " +"learned the foundations, you'll see they make it faster and easier to learn " +"Godot functions." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:154 +msgid "" +"Let's move on to practice! You'll get to play with the turtle functions to " +"draw shapes." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:162 msgid "Drawing a Corner" msgstr "Dibujar una esquina" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:141 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:163 msgid "" "In this practice, we'll tell the turtle to draw a corner.\n" "\n" @@ -212,7 +238,7 @@ msgstr "" "rectángulos.\n" "\n" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:165 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:187 msgid "" "Use the turtle to draw a square's corner. You'll then build upon it to draw " "a rectangle." @@ -220,12 +246,12 @@ msgstr "" "Utiliza la tortuga para dibujar la esquina de un cuadrado. Luego te basarás " "en ella para dibujar un rectángulo." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:170 -#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:192 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:240 msgid "Drawing a Rectangle" msgstr "Dibujar un rectángulo" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:171 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:193 msgid "" "Add the correct arguments to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of [code]200[/" @@ -245,18 +271,18 @@ msgstr "" "En la siguiente práctica, utilizarás las mismas funciones para dibujar un " "rectángulo más grande." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:191 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:213 msgid "" "Based on your rectangle corner, you now need to draw a complete rectangle." msgstr "" "Basándote en la esquina del rectángulo, ahora tienes que dibujar un " "rectángulo completo." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:196 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 msgid "Drawing a Bigger Rectangle" msgstr "Dibujar un rectángulo más grande" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:197 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:219 msgid "" "Write out calls to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of 220 pixels, " @@ -281,7 +307,7 @@ msgstr "" "computadora entienda que forma parte de la función [code]draw_rectangle()[/" "code]." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:214 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:236 msgid "" "At this point, you're ready to code entirely on your own. Call functions by " "yourself to draw a complete rectangle." diff --git a/i18n/es/lesson-8-defining-variables.po b/i18n/es/lesson-8-defining-variables.po index 07a4d6ec..73bce122 100644 --- a/i18n/es/lesson-8-defining-variables.po +++ b/i18n/es/lesson-8-defining-variables.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2022-06-12 11:26+0200\n" +"PO-Revision-Date: 2023-10-06 08:13+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" @@ -18,10 +18,9 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.9.0\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-8-defining-variables/lesson.tres:13 -#, fuzzy msgid "" "In the previous lesson, you used a predefined member variable named " "[code]position[/code].\n" @@ -62,7 +61,14 @@ msgstr "" "[code]health[/code] a la que sumas y restas puntos.\n" "\n" "[i]El siguiente ejemplo introduce la función [code]print()[/code], que envía " -"su parámetro a la casilla de salida de la izquierda.[/i]" +"su parámetro a la casilla de salida de la izquierda.[/i]\n" +"\n" +"Haz clic en el botón [i]run()[/i] para ejecutar instantáneamente toda la " +"función, y haz clic en el botón [i]step[/i] para ejecutar líneas de código " +"una a una.\n" +"\n" +"El panel [i]Debugger[/i] de la parte inferior muestra el valor actual de la " +"variable [code]health[/code]." #: course/lesson-8-defining-variables/lesson.tres:47 msgid "" @@ -83,7 +89,6 @@ msgid "Defining a variable" msgstr "Definir una variable" #: course/lesson-8-defining-variables/lesson.tres:59 -#, fuzzy msgid "" "To use a variable, you must first define it so the computer registers its " "name.\n" @@ -108,6 +113,11 @@ msgstr "" "[code]var[/code] seguida del nombre de la variable que desees. Al igual que " "[code]func[/code] significa [i]función[/i], [code]var[/code] significa " "[i]variable[/i].\n" +"Las variables distinguen entre mayúsculas y minúsculas, lo que significa que " +"[code]salud[/code] y [code]Salud[/code] son técnicamente variables " +"diferentes. Ten cuidado de utilizar las mismas mayúsculas siempre que te " +"refieras a la misma variable, o podrías estar leyendo o escribiendo en una " +"variable diferente.\n" "\n" "La siguiente línea define una variable [code]health[/code] que no apunta a " "ningún valor. Puedes pensar en ello como crear una etiqueta de un producto " @@ -250,7 +260,6 @@ msgstr "" "etiqueta a cualquier otro valor." #: course/lesson-8-defining-variables/lesson.tres:253 -#, fuzzy msgid "" "The above code is like taking a label from the appropriate item and sticking " "it to the wrong thing:\n" @@ -271,12 +280,17 @@ msgstr "" "El código anterior es como coger una etiqueta del artículo apropiado y " "pegarla en el objeto equivocado:\n" "\n" -"- En la línea 1, la variable [code]health[/code] contiene un número.\n" -"- A partir de la línea 2, [code]health[/code] contiene texto.\n" +"- En la línea 2, la variable [code]health[/code] contiene un número.\n" +"- A partir de la línea 3, [code]health[/code] contiene texto.\n" "\n" "¡La computadora te permitirá hacer eso! La sintaxis y la \"gramática\" del " "código son correctas, pero sabemos que esto no está bien.\n" "\n" +"Los nombres de las variables deberían de describir el valor que contienen, " +"por lo que una variable [code]health[/code] (salud) con un valor de texto " +"confundirá a tu futuro yo y a otros programadores. También puede causar " +"errores en tu juego.\n" +"\n" "Más adelante, veremos cómo evitar este problema con los [i]tipos de " "variables[/i]. Por ahora, ¡vamos a practicar la creación de variables!" diff --git a/i18n/es/lesson-9-adding-and-subtracting.po b/i18n/es/lesson-9-adding-and-subtracting.po index 7f73dfe0..eef70a02 100644 --- a/i18n/es/lesson-9-adding-and-subtracting.po +++ b/i18n/es/lesson-9-adding-and-subtracting.po @@ -8,17 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-03-26 17:50+0100\n" -"PO-Revision-Date: 2022-03-01 20:03+0100\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 08:07+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0\n" +"Generated-By: Babel 2.9.0\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-9-adding-and-subtracting/lesson.tres:14 msgid "" @@ -27,7 +27,7 @@ msgid "" "player is from losing the game.\n" "\n" "Health that changes adds tension to the game, especially if the player is " -"fighting with low health! It's a resource that that player should manage " +"fighting with low health! It's a resource that the player should manage " "carefully.\n" "\n" "The character's health might get low if an enemy attacks them or they fall " @@ -58,7 +58,7 @@ msgid "" "often use.\n" "\n" "You can also use a longer form. Both of these lines have the same effect. " -"They both subtract the value of [code]amount[/code] to the [code]health[/" +"They both subtract the value of [code]amount[/code] from the [code]health[/" "code] variable:\n" "\n" "[code]health -= amount[/code]\n" diff --git a/i18n/fr/classref_database.po b/i18n/fr/classref_database.po index 3db8f71d..fd723615 100644 --- a/i18n/fr/classref_database.po +++ b/i18n/fr/classref_database.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-06-07 21:52+0000\n" "Last-Translator: EGuillemot \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/i18n/fr/error_database.po b/i18n/fr/error_database.po index be431014..57965b75 100644 --- a/i18n/fr/error_database.po +++ b/i18n/fr/error_database.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-06-07 21:52+0000\n" "Last-Translator: EGuillemot \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,9 +33,9 @@ msgid "" "creates a new variable with the desired name and assigns each element of the " "array to it." msgstr "" -"Vous obtenez cette erreur lorsque le nom entre [code]for[/code] et " -"[code]in[/code] n'est pas un nom de variable valide, ou qu'il manque le mot-" -"clé [code]in[/code].\n" +"Vous obtenez cette erreur lorsque le nom entre [code]for[/code] et [code]in[/" +"code] n'est pas un nom de variable valide, ou qu'il manque le mot-clé " +"[code]in[/code].\n" "\n" "Dans une boucle [code]for[/code], le mot-clé [code]in[/code] n'accepte qu'un " "nom de variable temporaire valide pour affecter des valeurs à chaque " diff --git a/i18n/fr/glossary_database.po b/i18n/fr/glossary_database.po index 4d54f4ef..2974f3c1 100644 --- a/i18n/fr/glossary_database.po +++ b/i18n/fr/glossary_database.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-06-07 21:52+0000\n" "Last-Translator: EGuillemot \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -272,8 +272,8 @@ msgstr "" "parenthèses des [i]arguments[/i].\n" "\n" "Cependant, lors de l'écriture d'une définition de fonction, nous parlons des " -"[i]paramètres[/i] de la fonction. Dans l'exemple suivant, les noms " -"[code]x[/code] et [code]y[/code] sont des [i]paramètres[/i]." +"[i]paramètres[/i] de la fonction. Dans l'exemple suivant, les noms [code]x[/" +"code] et [code]y[/code] sont des [i]paramètres[/i]." #. Reference: array #: course/glossary.csv:44 diff --git a/i18n/fr/lesson-1-what-code-is-like.po b/i18n/fr/lesson-1-what-code-is-like.po index 28e3027f..1f8ecc07 100644 --- a/i18n/fr/lesson-1-what-code-is-like.po +++ b/i18n/fr/lesson-1-what-code-is-like.po @@ -8,17 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-06-08 15:10+0000\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 07:39+0200\n" "Last-Translator: EGuillemot \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.18-dev\n" +"X-Generator: Poedit 3.3.1\n" "Generated-By: Babel 2.9.1\n" #: course/lesson-1-what-code-is-like/lesson.tres:14 @@ -164,8 +164,11 @@ msgid "" "This is a language by game developers for game developers. You can use it " "within the Godot game engine to create games and applications.\n" "\n" -"SEGA used the Godot engine to create the remake of Sonic Colors Ultimate. " -"Engineers at Tesla use it for their cars' dashboards." +"It's the language used by games like [ignore][url=https://store.steampowered." +"com/app/1637320/Dome_Keeper/]Dome Keeper[/url] and [ignore][url=https://" +"store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" +"Engineers at Tesla also used it for their cars' dashboards." msgstr "" "Dans ce cours, vous apprendrez le langage de programmation GDScript (le nom " "signifie « Godot script » ).\n" @@ -174,11 +177,14 @@ msgstr "" "développeurs de jeux. Vous pouvez l'utiliser dans le moteur de jeu Godot " "pour créer des jeux et des applications.\n" "\n" -"SEGA a utilisé le moteur Godot pour créer le remake de Sonic Colors " -"Ultimate. Les ingénieurs de Tesla l'utilisent pour les tableaux de bord de " -"leurs voitures." +"C'est le langage utilisé par des jeux comme [ignore][url=https://store." +"steampowered.com/app/1637320/Dome_Keeper/]Dome Keeper[/url] et [ignore]" +"[url=https://store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" +"Les ingénieurs de Tesla l'utilisent pour les tableaux de bord de leurs " +"voitures." -#: course/lesson-1-what-code-is-like/lesson.tres:148 +#: course/lesson-1-what-code-is-like/lesson.tres:150 msgid "" "GDScript is an excellent language to get started with programming because " "it's specialized. Unlike some other languages, it doesn't have an " @@ -188,12 +194,12 @@ msgstr "" "spécialisé. Contrairement à d'autres langages, il n'a pas une quantité " "[i]écrasante[/i] de fonctionnalités à apprendre." -#: course/lesson-1-what-code-is-like/lesson.tres:156 +#: course/lesson-1-what-code-is-like/lesson.tres:158 msgid "Most programming languages are similar" msgstr "La plupart des langages de programmation sont similaires" # performant(e) -#: course/lesson-1-what-code-is-like/lesson.tres:158 +#: course/lesson-1-what-code-is-like/lesson.tres:160 msgid "" "Don't be afraid of being locked in. The concepts you learn in your first " "programming language will apply to all the others.\n" @@ -218,15 +224,15 @@ msgstr "" "\n" "Essayez de repérer les similitudes et les différences." -#: course/lesson-1-what-code-is-like/lesson.tres:184 +#: course/lesson-1-what-code-is-like/lesson.tres:186 msgid "It doesn't look [i]that[/i] different, does it?" msgstr "Cela n'a pas l'air [i]si[/i] différent, n'est-ce pas ?" -#: course/lesson-1-what-code-is-like/lesson.tres:192 +#: course/lesson-1-what-code-is-like/lesson.tres:194 msgid "Are programming languages all completely different?" msgstr "Les langages de programmation sont-ils tous complètement différents ?" -#: course/lesson-1-what-code-is-like/lesson.tres:193 +#: course/lesson-1-what-code-is-like/lesson.tres:195 msgid "" "If you learn one language and then want to learn another, will you have to " "start from scratch?" @@ -234,7 +240,7 @@ msgstr "" "Si vous apprenez une langage et que vous souhaitez ensuite en apprendre une " "autre, devrez-vous recommencer à zéro ?" -#: course/lesson-1-what-code-is-like/lesson.tres:195 +#: course/lesson-1-what-code-is-like/lesson.tres:197 msgid "" "Most programming languages build upon the same ideas of how to program. As a " "result, they're mostly similar.\n" @@ -256,20 +262,20 @@ msgstr "" "Cependant, des langages comme GDScript, Python, JavaScript, C++, C# et bien " "d'autres reposent sur une philosophie de programmation similaire." -#: course/lesson-1-what-code-is-like/lesson.tres:200 -#: course/lesson-1-what-code-is-like/lesson.tres:201 +#: course/lesson-1-what-code-is-like/lesson.tres:202 +#: course/lesson-1-what-code-is-like/lesson.tres:203 msgid "No, they have many similarities" msgstr "Non, ils ont de nombreuses similitudes" -#: course/lesson-1-what-code-is-like/lesson.tres:200 +#: course/lesson-1-what-code-is-like/lesson.tres:202 msgid "Yes, they are completely different" msgstr "Oui, ils sont complètement différents" -#: course/lesson-1-what-code-is-like/lesson.tres:208 +#: course/lesson-1-what-code-is-like/lesson.tres:210 msgid "This is a course for beginners" msgstr "C'est un cours pour les débutants" -#: course/lesson-1-what-code-is-like/lesson.tres:210 +#: course/lesson-1-what-code-is-like/lesson.tres:212 msgid "" "If you want to learn to make games or code but don't know where to start, " "this course should be perfect." @@ -277,7 +283,7 @@ msgstr "" "Si vous voulez apprendre à créer des jeux ou à coder mais que vous ne savez " "pas par où commencer, ce cours est fait pour vous." -#: course/lesson-1-what-code-is-like/lesson.tres:230 +#: course/lesson-1-what-code-is-like/lesson.tres:232 msgid "" "We designed it for [i]absolute beginners[/i], but if you already know " "another language, it can be a fun way to get started with Godot.\n" @@ -298,11 +304,11 @@ msgstr "" "Soyez patient(e). Il vous faudra du temps avant de pouvoir réaliser votre " "premier jeu complet tout(e) seul(e)." -#: course/lesson-1-what-code-is-like/lesson.tres:242 +#: course/lesson-1-what-code-is-like/lesson.tres:244 msgid "Learning to make games takes practice" msgstr "Apprendre à faire des jeux demande de la pratique" -#: course/lesson-1-what-code-is-like/lesson.tres:244 +#: course/lesson-1-what-code-is-like/lesson.tres:246 msgid "" "Creating games is more accessible than ever, but it still takes a lot of " "work and practice.\n" @@ -330,11 +336,11 @@ msgstr "" "d'apprendre en tant que développeur ou développeuse de jeux." # Revisar a partir de aqui con Nathan -#: course/lesson-1-what-code-is-like/lesson.tres:258 +#: course/lesson-1-what-code-is-like/lesson.tres:260 msgid "What and how you'll learn" msgstr "Ce que vous apprendrez et comment" -#: course/lesson-1-what-code-is-like/lesson.tres:260 +#: course/lesson-1-what-code-is-like/lesson.tres:262 msgid "" "In this free course, you will learn the foundations you need to start coding " "things like these:" @@ -343,7 +349,7 @@ msgstr "" "commencer à coder des choses comme celles-ci :" # questions brûlantes -#: course/lesson-1-what-code-is-like/lesson.tres:290 +#: course/lesson-1-what-code-is-like/lesson.tres:292 msgid "" "Along the way, we'll teach you:\n" "\n" @@ -368,8 +374,8 @@ msgstr "" "En cours de route, nous vous apprendrons :\n" "\n" "- Des aspects importants de la mentalité dont vous avez besoin en tant que " -"développeur. Trop de cours de programmation sautent cette partie essentielle." -"\n" +"développeur. Trop de cours de programmation sautent cette partie " +"essentielle.\n" "- Comment écrire du code GDScript.\n" "- Les bases de programmation essentielles pour vous aider à démarrer.\n" "\n" @@ -378,21 +384,32 @@ msgstr "" "\n" "Mais il y a tellement de choses à couvrir que nous devons prendre quelques " "raccourcis. Nous ne voulons pas vous [i]submerger[/i] d'informations. Nous " -"voulons aussi respecter le rythme auquel nos cerveaux mémorisent les choses." -"\n" +"voulons aussi respecter le rythme auquel nos cerveaux mémorisent les " +"choses.\n" "\n" "Nous avons divisé le cours en leçons et pratiques courtes. Si nous en " "mettions trop dans chaque partie, vous apprendrez plus lentement.\n" "\n" "Si à un moment donné vous vous retrouvez avec des questions brûlantes, vous " -"êtes plus que bienvenu(e) pour rejoindre [url=https://discord.gg/87NNb3Z]" -"notre communauté Discord[/url]." +"êtes plus que bienvenu(e) pour rejoindre [url=https://discord." +"gg/87NNb3Z]notre communauté Discord[/url]." + +#: course/lesson-1-what-code-is-like/lesson.tres:312 +msgid "Is this for Godot 4?" +msgstr "" -#: course/lesson-1-what-code-is-like/lesson.tres:310 +#: course/lesson-1-what-code-is-like/lesson.tres:314 +msgid "" +"What you'll learn in this free course is fully compatible with Godot 4. " +"While we initially designed this series for Godot 3, the foundations of " +"GDScript are still the same in Godot 4." +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:322 msgid "Programming is a skill" msgstr "La programmation est une compétence" -#: course/lesson-1-what-code-is-like/lesson.tres:312 +#: course/lesson-1-what-code-is-like/lesson.tres:324 msgid "" "Programming is a skill, so to get good at it, you must practice. It is why " "we built this app.\n" @@ -415,11 +432,11 @@ msgstr "" "Pour continuer, cliquez sur le bouton [i]Pratique[/i] ci-dessous. Il vous " "donnera un bref aperçu du fonctionnement des pratiques." -#: course/lesson-1-what-code-is-like/lesson.tres:326 +#: course/lesson-1-what-code-is-like/lesson.tres:338 msgid "Try Your First Code" msgstr "Essayez votre premier code" -#: course/lesson-1-what-code-is-like/lesson.tres:327 +#: course/lesson-1-what-code-is-like/lesson.tres:339 msgid "" "We prepared a code sample for you. For this practice, you don't need to " "change anything.\n" @@ -432,11 +449,11 @@ msgstr "" "Pour tester le code, clique sur le bouton [i]Exécuter[/i] sous l'éditeur de " "code." -#: course/lesson-1-what-code-is-like/lesson.tres:339 +#: course/lesson-1-what-code-is-like/lesson.tres:351 msgid "Run your first bit of code and see the result." msgstr "Exécutez votre premier morceau de code et voyez le résultat." # Ce qu'est le code -#: course/lesson-1-what-code-is-like/lesson.tres:343 +#: course/lesson-1-what-code-is-like/lesson.tres:355 msgid "What Code is Like" msgstr "À quoi ressemble le code" diff --git a/i18n/fr/lesson-26-looping-over-dictionaries.po b/i18n/fr/lesson-26-looping-over-dictionaries.po index fed23459..beb70a9e 100644 --- a/i18n/fr/lesson-26-looping-over-dictionaries.po +++ b/i18n/fr/lesson-26-looping-over-dictionaries.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-06-12 11:07+0200\n" -"PO-Revision-Date: 2022-05-07 16:36+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 07:42+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: fr\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Generated-By: Babel 2.9.1\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.3.1\n" #: course/lesson-26-looping-over-dictionaries/lesson.tres:13 msgid "" @@ -61,9 +61,9 @@ msgstr "" msgid "" "But it's something we do so much that you don't need to call the function.\n" "\n" -"Instead, you can directly type the variable name in a [code]for[/code] loop " -"after the [code]in[/code] keyword. The language understands that you " -"implicitly want to loop over the dictionary's keys." +"Instead, you can directly [ignore]type the variable name in a [code]for[/" +"code] loop after the [code]in[/code] keyword. The language understands that " +"you implicitly want to loop over the dictionary's keys." msgstr "" "Mais c'est quelque chose que nous faisons tellement qu'il n'est pas " "nécessaire d'appeler la fonction.\n" diff --git a/i18n/fr/lesson-3-standing-on-shoulders-of-giants.po b/i18n/fr/lesson-3-standing-on-shoulders-of-giants.po index ff97c477..e5abcd5d 100644 --- a/i18n/fr/lesson-3-standing-on-shoulders-of-giants.po +++ b/i18n/fr/lesson-3-standing-on-shoulders-of-giants.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-06-07 21:52+0000\n" "Last-Translator: EGuillemot \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -336,7 +336,8 @@ msgstr "" #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 -msgid "It calls the function named \"show.\"" +#, fuzzy +msgid "It calls the function named \"show\"." msgstr "Il appelle la fonction nommée « show »." #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 diff --git a/i18n/fr/lesson-4-drawing-a-rectangle.po b/i18n/fr/lesson-4-drawing-a-rectangle.po index 92e8c2e6..5679597d 100644 --- a/i18n/fr/lesson-4-drawing-a-rectangle.po +++ b/i18n/fr/lesson-4-drawing-a-rectangle.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-06-07 21:52+0000\n" "Last-Translator: EGuillemot \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -92,6 +92,10 @@ msgstr "" "Par exemple, pour déplacer la tortue de 200 pixels, vous écrivez " "[code]move_forward(200)[/code]." +#: course/lesson-4-drawing-a-rectangle/lesson.tres:76 +msgid "Turning left and right" +msgstr "" + #: course/lesson-4-drawing-a-rectangle/lesson.tres:78 msgid "" "The functions [code]turn_left()[/code] and [code]turn_right()[/code] work " @@ -168,10 +172,32 @@ msgid "30" msgstr "30" #: course/lesson-4-drawing-a-rectangle/lesson.tres:140 +msgid "The turtle uses code made specifically for this app!" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:142 +msgid "" +"The turtle is a little learning tool custom-made for this course, based on a " +"proven code learning methodology. It's designed to teach you how to use and " +"create functions.\n" +"\n" +"So please don't be surprised if writing code like [code]turn_left()[/code] " +"inside of the Godot editor doesn't work! And don't worry, once you've " +"learned the foundations, you'll see they make it faster and easier to learn " +"Godot functions." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:154 +msgid "" +"Let's move on to practice! You'll get to play with the turtle functions to " +"draw shapes." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:162 msgid "Drawing a Corner" msgstr "Dessiner un coin" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:141 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:163 msgid "" "In this practice, we'll tell the turtle to draw a corner.\n" "\n" @@ -202,9 +228,9 @@ msgstr "" "Les fonctions [code]move_forward()[/code] et [code]turn_right()[/code] à " "droite dessinent un coin, mais il leur manque certains paramètres.\n" "\n" -"Ajoutez les paramètres manquants pour que la tortue avance de " -"[code]200[/code] pixels, tourne à droite de [code]90[/code] degrés, puis " -"avance à nouveau de [code]200[/code] pixels.\n" +"Ajoutez les paramètres manquants pour que la tortue avance de [code]200[/" +"code] pixels, tourne à droite de [code]90[/code] degrés, puis avance à " +"nouveau de [code]200[/code] pixels.\n" "\n" "Nous avons ajouté le premier paramètre pour vous afin que la tortue avance " "de [code]200[/code] pixels.\n" @@ -214,7 +240,7 @@ msgstr "" "\n" # travailler sur cette base -#: course/lesson-4-drawing-a-rectangle/lesson.tres:165 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:187 msgid "" "Use the turtle to draw a square's corner. You'll then build upon it to draw " "a rectangle." @@ -222,12 +248,12 @@ msgstr "" "Utilisez la tortue pour dessiner le coin d'un carré. Vous allez ensuite vous " "appuyer sur cette base pour dessiner un rectangle." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:170 -#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:192 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:240 msgid "Drawing a Rectangle" msgstr "Dessiner un rectangle" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:171 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:193 msgid "" "Add the correct arguments to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of [code]200[/" @@ -247,18 +273,18 @@ msgstr "" "Dans le prochain exercice, vous utiliserez les mêmes fonctions pour dessiner " "un rectangle plus grand." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:191 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:213 msgid "" "Based on your rectangle corner, you now need to draw a complete rectangle." msgstr "" "En vous appuyant sur le coin de votre rectangle, vous devez maintenant " "dessiner un rectangle complet." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:196 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 msgid "Drawing a Bigger Rectangle" msgstr "Dessiner un rectangle plus grand" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:197 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:219 msgid "" "Write out calls to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of 220 pixels, " @@ -283,7 +309,7 @@ msgstr "" "l'ordinateur comprenne qu'elle fait partie de la fonction " "[code]draw_rectangle()[/code]." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:214 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:236 msgid "" "At this point, you're ready to code entirely on your own. Call functions by " "yourself to draw a complete rectangle." diff --git a/i18n/fr/lesson-5-your-first-function.po b/i18n/fr/lesson-5-your-first-function.po index 4f83d2c3..897e602b 100644 --- a/i18n/fr/lesson-5-your-first-function.po +++ b/i18n/fr/lesson-5-your-first-function.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-06-07 21:52+0000\n" -"Last-Translator: EGuillemot \n" +"PO-Revision-Date: 2023-09-11 12:55+0000\n" +"Last-Translator: \"Yannick A.\" \n" "Language-Team: French \n" "Language: fr\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.18-dev\n" +"X-Generator: Weblate 5.0.1-dev\n" "Generated-By: Babel 2.9.1\n" #: course/lesson-5-your-first-function/lesson.tres:14 @@ -215,7 +215,7 @@ msgstr "Pour exécuter plusieurs instructions en une seule fois." #: course/lesson-5-your-first-function/lesson.tres:164 #: course/lesson-5-your-first-function/lesson.tres:165 msgid "To put a name on multiple lines of code." -msgstr "Pour donner un nom aux plusieurs lignes de code." +msgstr "Pour donner un nom à plusieurs lignes de code." #: course/lesson-5-your-first-function/lesson.tres:172 msgid "Names in code have rules" diff --git a/i18n/fr/lesson-9-adding-and-subtracting.po b/i18n/fr/lesson-9-adding-and-subtracting.po index a0e6d177..3996b796 100644 --- a/i18n/fr/lesson-9-adding-and-subtracting.po +++ b/i18n/fr/lesson-9-adding-and-subtracting.po @@ -8,20 +8,20 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-03-07 21:03+0100\n" -"PO-Revision-Date: 2023-06-07 21:52+0000\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-06 07:41+0200\n" "Last-Translator: EGuillemot \n" -"Language-Team: French \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.18-dev\n" +"X-Generator: Poedit 3.3.1\n" "Generated-By: Babel 2.9.1\n" -# that that +# that that #: course/lesson-9-adding-and-subtracting/lesson.tres:14 msgid "" "Our character in our game will have health by defining the [code]health[/" @@ -29,7 +29,7 @@ msgid "" "player is from losing the game.\n" "\n" "Health that changes adds tension to the game, especially if the player is " -"fighting with low health! It's a resource that that player should manage " +"fighting with low health! It's a resource that the player should manage " "carefully.\n" "\n" "The character's health might get low if an enemy attacks them or they fall " @@ -62,7 +62,7 @@ msgid "" "often use.\n" "\n" "You can also use a longer form. Both of these lines have the same effect. " -"They both subtract the value of [code]amount[/code] to the [code]health[/" +"They both subtract the value of [code]amount[/code] from the [code]health[/" "code] variable:\n" "\n" "[code]health -= amount[/code]\n" @@ -125,8 +125,8 @@ msgid "" "health = health + amount\n" "[/code]" msgstr "" -"Ces deux lignes augmentent la [code]health[/code] du robot de " -"[code]amount[/code].\n" +"Ces deux lignes augmentent la [code]health[/code] du robot de [code]amount[/" +"code].\n" "[code]\n" "health += amount\n" "health = health + amount\n" diff --git a/i18n/it/classref_database.po b/i18n/it/classref_database.po index 8447b66e..a01a3cc9 100644 --- a/i18n/it/classref_database.po +++ b/i18n/it/classref_database.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2022-06-20 15:19+0000\n" "Last-Translator: Fettenderi \n" "Language-Team: Italian \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -33,9 +33,9 @@ msgid "" "creates a new variable with the desired name and assigns each element of the " "array to it." msgstr "" -"Si ottiene questo errore quando il nome tra il [code]for[/code] e " -"[code]in[/code] non è un nome di variabile valido, oppure manca la parola " -"chiave [code]in[/code].\n" +"Si ottiene questo errore quando il nome tra il [code]for[/code] e [code]in[/" +"code] non è un nome di variabile valido, oppure manca la parola chiave " +"[code]in[/code].\n" "\n" "In un ciclo [code]for[/code], la parola chiave [code]in[/code] accetta solo " "un nome di variabile temporanea valido per assegnare valori a ogni " diff --git a/i18n/it/glossary_database.po b/i18n/it/glossary_database.po index 7b419025..0017e8a3 100644 --- a/i18n/it/glossary_database.po +++ b/i18n/it/glossary_database.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-05-17 09:52+0000\n" "Last-Translator: Riccardo Santangelo \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/i18n/it/lesson-1-what-code-is-like.po b/i18n/it/lesson-1-what-code-is-like.po index 5dec25da..243dab64 100644 --- a/i18n/it/lesson-1-what-code-is-like.po +++ b/i18n/it/lesson-1-what-code-is-like.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-05-17 09:52+0000\n" "Last-Translator: Riccardo Santangelo \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -153,6 +153,7 @@ msgid "You'll learn to code with GDScript" msgstr "Imparerai a programmare con GDScript" #: course/lesson-1-what-code-is-like/lesson.tres:124 +#, fuzzy msgid "" "In this course, you'll learn the GDScript programming language (the name " "stands for \"Godot script\").\n" @@ -160,8 +161,11 @@ msgid "" "This is a language by game developers for game developers. You can use it " "within the Godot game engine to create games and applications.\n" "\n" -"SEGA used the Godot engine to create the remake of Sonic Colors Ultimate. " -"Engineers at Tesla use it for their cars' dashboards." +"It's the language used by games like [ignore][url=https://store.steampowered." +"com/app/1637320/Dome_Keeper/]Dome Keeper[/url] and [ignore][url=https://" +"store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" +"Engineers at Tesla also used it for their cars' dashboards." msgstr "" "In questo corso, imparerai il linguaggio di programmazione GDScript (che sta " "per \"Godot script\").\n" @@ -172,7 +176,7 @@ msgstr "" "SEGA ha usato Godot per il remake di Sonic Colors Ultimate. Gli ingegneri di " "Tesla l'hanno usato per le dashboard delle loro auto." -#: course/lesson-1-what-code-is-like/lesson.tres:148 +#: course/lesson-1-what-code-is-like/lesson.tres:150 msgid "" "GDScript is an excellent language to get started with programming because " "it's specialized. Unlike some other languages, it doesn't have an " @@ -182,11 +186,11 @@ msgstr "" "specializzato. Al contrario di altri linguaggi, non ha una [i]schiacciante[/" "i] quantità di funzionalità da poter imparare." -#: course/lesson-1-what-code-is-like/lesson.tres:156 +#: course/lesson-1-what-code-is-like/lesson.tres:158 msgid "Most programming languages are similar" msgstr "Molti linguaggi di programmazione sono simili" -#: course/lesson-1-what-code-is-like/lesson.tres:158 +#: course/lesson-1-what-code-is-like/lesson.tres:160 msgid "" "Don't be afraid of being locked in. The concepts you learn in your first " "programming language will apply to all the others.\n" @@ -210,15 +214,15 @@ msgstr "" "\n" "Cerca di trovare i punti in comune e le differenze." -#: course/lesson-1-what-code-is-like/lesson.tres:184 +#: course/lesson-1-what-code-is-like/lesson.tres:186 msgid "It doesn't look [i]that[/i] different, does it?" msgstr "Non sembrano poi [i]così[/i] diversi, vero?" -#: course/lesson-1-what-code-is-like/lesson.tres:192 +#: course/lesson-1-what-code-is-like/lesson.tres:194 msgid "Are programming languages all completely different?" msgstr "I linguaggi di programmazione sono tutti diversi fra loro?" -#: course/lesson-1-what-code-is-like/lesson.tres:193 +#: course/lesson-1-what-code-is-like/lesson.tres:195 msgid "" "If you learn one language and then want to learn another, will you have to " "start from scratch?" @@ -226,7 +230,7 @@ msgstr "" "Dopo aver imparato un linguaggio, dovrai ripartire da zero per impararne uno " "nuovo?" -#: course/lesson-1-what-code-is-like/lesson.tres:195 +#: course/lesson-1-what-code-is-like/lesson.tres:197 msgid "" "Most programming languages build upon the same ideas of how to program. As a " "result, they're mostly similar.\n" @@ -249,20 +253,20 @@ msgstr "" "altri sono stati creati tenendo a mente filosofie di programmazione molto " "simili tra loro." -#: course/lesson-1-what-code-is-like/lesson.tres:200 -#: course/lesson-1-what-code-is-like/lesson.tres:201 +#: course/lesson-1-what-code-is-like/lesson.tres:202 +#: course/lesson-1-what-code-is-like/lesson.tres:203 msgid "No, they have many similarities" msgstr "No, sono molto simili" -#: course/lesson-1-what-code-is-like/lesson.tres:200 +#: course/lesson-1-what-code-is-like/lesson.tres:202 msgid "Yes, they are completely different" msgstr "Sì, sono completamente diversi" -#: course/lesson-1-what-code-is-like/lesson.tres:208 +#: course/lesson-1-what-code-is-like/lesson.tres:210 msgid "This is a course for beginners" msgstr "Questo è un corso per principianti" -#: course/lesson-1-what-code-is-like/lesson.tres:210 +#: course/lesson-1-what-code-is-like/lesson.tres:212 msgid "" "If you want to learn to make games or code but don't know where to start, " "this course should be perfect." @@ -270,7 +274,7 @@ msgstr "" "Se vuoi imparare a fare videogiochi o a programmare ma non sai da dove " "iniziare, questo corso è perfetto per te." -#: course/lesson-1-what-code-is-like/lesson.tres:230 +#: course/lesson-1-what-code-is-like/lesson.tres:232 msgid "" "We designed it for [i]absolute beginners[/i], but if you already know " "another language, it can be a fun way to get started with Godot.\n" @@ -291,11 +295,11 @@ msgstr "" "Per favore, abbi pazienza. Tieni a mente che servirà del tempo prima che tu " "possa creare il tuo primo gioco in modo autonomo." -#: course/lesson-1-what-code-is-like/lesson.tres:242 +#: course/lesson-1-what-code-is-like/lesson.tres:244 msgid "Learning to make games takes practice" msgstr "Imparare a fare giochi ha bisogno di pratica" -#: course/lesson-1-what-code-is-like/lesson.tres:244 +#: course/lesson-1-what-code-is-like/lesson.tres:246 msgid "" "Creating games is more accessible than ever, but it still takes a lot of " "work and practice.\n" @@ -321,11 +325,11 @@ msgstr "" "Divertiti a imparare, e goditi ogni piccola conquista. Non smetterai mai di " "imparare come sviluppatore di videogiochi." -#: course/lesson-1-what-code-is-like/lesson.tres:258 +#: course/lesson-1-what-code-is-like/lesson.tres:260 msgid "What and how you'll learn" msgstr "Cosa imparerai e come" -#: course/lesson-1-what-code-is-like/lesson.tres:260 +#: course/lesson-1-what-code-is-like/lesson.tres:262 msgid "" "In this free course, you will learn the foundations you need to start coding " "things like these:" @@ -333,7 +337,7 @@ msgstr "" "In questo corso gratuito, imparerai le basi necessarie per iniziare a " "programmare cose come queste:" -#: course/lesson-1-what-code-is-like/lesson.tres:290 +#: course/lesson-1-what-code-is-like/lesson.tres:292 msgid "" "Along the way, we'll teach you:\n" "\n" @@ -377,11 +381,22 @@ msgstr "" "riesci proprio a trovare una risposta, puoi unirti alla nostra [url=https://" "discord.gg/87NNb3Z]community su Discord[/url]." -#: course/lesson-1-what-code-is-like/lesson.tres:310 +#: course/lesson-1-what-code-is-like/lesson.tres:312 +msgid "Is this for Godot 4?" +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:314 +msgid "" +"What you'll learn in this free course is fully compatible with Godot 4. " +"While we initially designed this series for Godot 3, the foundations of " +"GDScript are still the same in Godot 4." +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:322 msgid "Programming is a skill" msgstr "Programmare è un'abilità" -#: course/lesson-1-what-code-is-like/lesson.tres:312 +#: course/lesson-1-what-code-is-like/lesson.tres:324 msgid "" "Programming is a skill, so to get good at it, you must practice. It is why " "we built this app.\n" @@ -404,11 +419,11 @@ msgstr "" "Per continuare, clicca sul tasto [i]Pratica[/i] qui sotto. Ti mostrerà in " "breve come funzionano questi esercizi." -#: course/lesson-1-what-code-is-like/lesson.tres:326 +#: course/lesson-1-what-code-is-like/lesson.tres:338 msgid "Try Your First Code" msgstr "Prova Il Tuo Primo Codice" -#: course/lesson-1-what-code-is-like/lesson.tres:327 +#: course/lesson-1-what-code-is-like/lesson.tres:339 msgid "" "We prepared a code sample for you. For this practice, you don't need to " "change anything.\n" @@ -421,11 +436,11 @@ msgstr "" "Per provare questo codice, clicca il bottone [i]Esegui[/i] sotto l'editor " "del codice." -#: course/lesson-1-what-code-is-like/lesson.tres:339 +#: course/lesson-1-what-code-is-like/lesson.tres:351 msgid "Run your first bit of code and see the result." msgstr "Esegui il tuo primo pezzetto di codice e guarda il risultato." -#: course/lesson-1-what-code-is-like/lesson.tres:343 +#: course/lesson-1-what-code-is-like/lesson.tres:355 msgid "What Code is Like" msgstr "Come Funziona Il Codice" diff --git a/i18n/it/lesson-26-looping-over-dictionaries.po b/i18n/it/lesson-26-looping-over-dictionaries.po index 68dfbad8..82649ea4 100644 --- a/i18n/it/lesson-26-looping-over-dictionaries.po +++ b/i18n/it/lesson-26-looping-over-dictionaries.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2022-06-18 13:18+0000\n" "Last-Translator: Fettenderi \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -59,12 +59,13 @@ msgstr "" "funzione membro [code]keys()[/code]." #: course/lesson-26-looping-over-dictionaries/lesson.tres:49 +#, fuzzy msgid "" "But it's something we do so much that you don't need to call the function.\n" "\n" -"Instead, you can directly type the variable name in a [code]for[/code] loop " -"after the [code]in[/code] keyword. The language understands that you " -"implicitly want to loop over the dictionary's keys." +"Instead, you can directly [ignore]type the variable name in a [code]for[/" +"code] loop after the [code]in[/code] keyword. The language understands that " +"you implicitly want to loop over the dictionary's keys." msgstr "" "Ma è qualcosa che facciamo così spesso che non c'è necessità di chiamare la " "funzione.\n" @@ -82,9 +83,8 @@ msgid "" "We can loop over the inventory keys, get the corresponding values, and " "display all that information in the user interface." msgstr "" -"Puoi ottenere i valori usando la seguente sintassi " -"[code]dictionary[key][/code], come hai già imparato nella lezione precedente." -"\n" +"Puoi ottenere i valori usando la seguente sintassi [code]dictionary[key][/" +"code], come hai già imparato nella lezione precedente.\n" "\n" "Possiamo accedere ciclicamente alle chiavi dell'inventario, prendere il " "valore corrispondente e visualizzare tutte queste informazioni " diff --git a/i18n/it/lesson-3-standing-on-shoulders-of-giants.po b/i18n/it/lesson-3-standing-on-shoulders-of-giants.po index 47b841b0..6b252fd1 100644 --- a/i18n/it/lesson-3-standing-on-shoulders-of-giants.po +++ b/i18n/it/lesson-3-standing-on-shoulders-of-giants.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-05-18 10:51+0000\n" "Last-Translator: Riccardo Santangelo \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -326,7 +326,8 @@ msgstr "" #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 -msgid "It calls the function named \"show.\"" +#, fuzzy +msgid "It calls the function named \"show\"." msgstr "Chiama la funzione chiamata \"show\"." #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 diff --git a/i18n/it/lesson-4-drawing-a-rectangle.po b/i18n/it/lesson-4-drawing-a-rectangle.po index 3dae4871..97006777 100644 --- a/i18n/it/lesson-4-drawing-a-rectangle.po +++ b/i18n/it/lesson-4-drawing-a-rectangle.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-05-18 10:51+0000\n" "Last-Translator: Riccardo Santangelo \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -80,11 +80,11 @@ msgstr "" "determinata distanza in [i]pixel[/i]. \n" "- [code]turn_right(degrees)[/code] fa girare la tartaruga in senso orario di " "una quantità precisa di [i]gradi[/i].\n" -"- [code]turn_left(degrees)[/code] funziona come " -"[code]turn_right(degrees)[/code], ma la tartaruga gira in senso antiorario.\n" +"- [code]turn_left(degrees)[/code] funziona come [code]turn_right(degrees)[/" +"code], ma la tartaruga gira in senso antiorario.\n" "\n" -"Queste funzioni si usano nello stesso modo in cui si è usato " -"[code]rotate()[/code].\n" +"Queste funzioni si usano nello stesso modo in cui si è usato [code]rotate()[/" +"code].\n" "\n" "La tartaruga disegna una linea bianca mentre si muove. Questa linea verrà " "utilizzata per disegnare forme.\n" @@ -92,6 +92,10 @@ msgstr "" "Per esempio, per spostare la tartaruga di 200 pixel, si scrive " "[code]move_forward(200)[/code]." +#: course/lesson-4-drawing-a-rectangle/lesson.tres:76 +msgid "Turning left and right" +msgstr "" + #: course/lesson-4-drawing-a-rectangle/lesson.tres:78 msgid "" "The functions [code]turn_left()[/code] and [code]turn_right()[/code] work " @@ -168,10 +172,32 @@ msgid "30" msgstr "30" #: course/lesson-4-drawing-a-rectangle/lesson.tres:140 +msgid "The turtle uses code made specifically for this app!" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:142 +msgid "" +"The turtle is a little learning tool custom-made for this course, based on a " +"proven code learning methodology. It's designed to teach you how to use and " +"create functions.\n" +"\n" +"So please don't be surprised if writing code like [code]turn_left()[/code] " +"inside of the Godot editor doesn't work! And don't worry, once you've " +"learned the foundations, you'll see they make it faster and easier to learn " +"Godot functions." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:154 +msgid "" +"Let's move on to practice! You'll get to play with the turtle functions to " +"draw shapes." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:162 msgid "Drawing a Corner" msgstr "Disegnando uno Spigolo" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:141 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:163 msgid "" "In this practice, we'll tell the turtle to draw a corner.\n" "\n" @@ -212,7 +238,7 @@ msgstr "" "Nei prossimi esercizi, disegneremo più angoli per creare dei rettangoli.\n" "\n" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:165 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:187 msgid "" "Use the turtle to draw a square's corner. You'll then build upon it to draw " "a rectangle." @@ -220,12 +246,12 @@ msgstr "" "Usa la tartaruga per disegnare lo spigolo di un quadrato. Dopodiché su " "quella base, disegnerai un rettangolo." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:170 -#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:192 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:240 msgid "Drawing a Rectangle" msgstr "Disegnando un Rettangolo" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:171 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:193 msgid "" "Add the correct arguments to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of [code]200[/" @@ -245,18 +271,18 @@ msgstr "" "Nel prossimo esercizio, utilizzerete le stesse funzioni per disegnare un " "rettangolo più grande." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:191 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:213 msgid "" "Based on your rectangle corner, you now need to draw a complete rectangle." msgstr "" "A partire dallo spigolo che hai creato, ora dovrai disegnare un rettangolo " "completo." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:196 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 msgid "Drawing a Bigger Rectangle" msgstr "Disegnando un Rettangolo Più Grande" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:197 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:219 msgid "" "Write out calls to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of 220 pixels, " @@ -281,7 +307,7 @@ msgstr "" "così da far comprendere al computer che quelle linee sono parte della " "funzione [code]draw_rectangle()[/code]." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:214 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:236 msgid "" "At this point, you're ready to code entirely on your own. Call functions by " "yourself to draw a complete rectangle." diff --git a/i18n/it/lesson-9-adding-and-subtracting.po b/i18n/it/lesson-9-adding-and-subtracting.po index 63b0c514..e12d7f41 100644 --- a/i18n/it/lesson-9-adding-and-subtracting.po +++ b/i18n/it/lesson-9-adding-and-subtracting.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2022-06-21 23:43+0000\n" "Last-Translator: Fettenderi \n" -"Language-Team: Italian \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,13 +22,14 @@ msgstr "" "Generated-By: Babel 2.9.1\n" #: course/lesson-9-adding-and-subtracting/lesson.tres:14 +#, fuzzy msgid "" "Our character in our game will have health by defining the [code]health[/" "code] variable. The higher the character's health, the further away the " "player is from losing the game.\n" "\n" "Health that changes adds tension to the game, especially if the player is " -"fighting with low health! It's a resource that that player should manage " +"fighting with low health! It's a resource that the player should manage " "carefully.\n" "\n" "The character's health might get low if an enemy attacks them or they fall " @@ -50,6 +51,7 @@ msgstr "" "Possiamo creare una funzione che rappresenta il danno in questi casi." #: course/lesson-9-adding-and-subtracting/lesson.tres:40 +#, fuzzy msgid "" "We pass the amount of damage the robot should take as a parameter.\n" "\n" @@ -59,7 +61,7 @@ msgid "" "often use.\n" "\n" "You can also use a longer form. Both of these lines have the same effect. " -"They both subtract the value of [code]amount[/code] to the [code]health[/" +"They both subtract the value of [code]amount[/code] from the [code]health[/" "code] variable:\n" "\n" "[code]health -= amount[/code]\n" @@ -84,8 +86,8 @@ msgstr "" "[code]health = health - amount[/code]\n" "\n" "Potresti notare che la vita del robot può andare sotto [code]0[/code]. " -"Vedremo come gestire questo in una lezione futura usando le " -"[i]condizioni[/i]." +"Vedremo come gestire questo in una lezione futura usando le [i]condizioni[/" +"i]." #: course/lesson-9-adding-and-subtracting/lesson.tres:61 msgid "" @@ -105,8 +107,8 @@ msgstr "" "Qui di nuovo, la vita può andare oltre a [code]100[/code].\n" "\n" "Inoltre, ancora una volta, la linea corta [code]health += amount[/code] è " -"l'equivalente della sua forma più lunga [code]health = health + " -"amount[/code]." +"l'equivalente della sua forma più lunga [code]health = health + amount[/" +"code]." #: course/lesson-9-adding-and-subtracting/lesson.tres:91 msgid "Which of these would increase the health of the robot?" @@ -170,8 +172,8 @@ msgid "" "\n" "The robot starts with 100 health and will take 50 damage." msgstr "" -"Nel nostro gioco, il protagonista ha una quantità specifica di " -"[code]health[/code]. Quando viene colpito, la vita dovrebbe scendere di una " +"Nel nostro gioco, il protagonista ha una quantità specifica di [code]health[/" +"code]. Quando viene colpito, la vita dovrebbe scendere di una " "[code]quantità[/code] variabile di danno.\n" "\n" "Aggiungi codice alla funzione [code]take_damage()[/code] cosicché sottragga " @@ -203,8 +205,8 @@ msgstr "" "Scrivi una funzione chiamata [code]heal()[/code] che prende una " "[code]amount[/code] come parametro.\n" "\n" -"La funzione dovrebbe aggiungere [code]amount[/code] alla [code]health[/code]." -"\n" +"La funzione dovrebbe aggiungere [code]amount[/code] alla [code]health[/" +"code].\n" "\n" "Il robot inizia con 50 di vita e si curerà di 50 per arrivare a 100." diff --git a/i18n/pt_BR/error_database.po b/i18n/pt_BR/error_database.po index 87dc4db8..30162473 100644 --- a/i18n/pt_BR/error_database.po +++ b/i18n/pt_BR/error_database.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-06-27 07:50+0000\n" "Last-Translator: Deolindo \n" "Language-Team: Portuguese (Brazil) \n" "Language-Team: Portuguese (Brazil) \n" "Language-Team: Portuguese (Brazil) \n" @@ -59,12 +59,13 @@ msgstr "" "membro [code]keys()[/code]." #: course/lesson-26-looping-over-dictionaries/lesson.tres:49 +#, fuzzy msgid "" "But it's something we do so much that you don't need to call the function.\n" "\n" -"Instead, you can directly type the variable name in a [code]for[/code] loop " -"after the [code]in[/code] keyword. The language understands that you " -"implicitly want to loop over the dictionary's keys." +"Instead, you can directly [ignore]type the variable name in a [code]for[/" +"code] loop after the [code]in[/code] keyword. The language understands that " +"you implicitly want to loop over the dictionary's keys." msgstr "" "Mas é algo que fazemos tanto que você não precisa chamar a função.\n" "\n" diff --git a/i18n/pt_BR/lesson-3-standing-on-shoulders-of-giants.po b/i18n/pt_BR/lesson-3-standing-on-shoulders-of-giants.po index 03b930f0..fe095bb8 100644 --- a/i18n/pt_BR/lesson-3-standing-on-shoulders-of-giants.po +++ b/i18n/pt_BR/lesson-3-standing-on-shoulders-of-giants.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-06-30 12:49+0000\n" "Last-Translator: Deolindo \n" "Language-Team: Portuguese (Brazil) \n" "Language-Team: Portuguese (Brazil) " -"\n" +"Last-Translator: Alexandre Vinicius Gonçalves \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.12-dev\n" "Generated-By: Babel 2.9.1\n" #: course/lesson-9-adding-and-subtracting/lesson.tres:14 +#, fuzzy msgid "" -"Our character in our game will have health by defining the " -"[code]health[/code] variable. The higher the character's health, the " -"further away the player is from losing the game.\n" +"Our character in our game will have health by defining the [code]health[/" +"code] variable. The higher the character's health, the further away the " +"player is from losing the game.\n" "\n" -"Health that changes adds tension to the game, especially if the player is" -" fighting with low health! It's a resource that that player should manage" -" carefully.\n" +"Health that changes adds tension to the game, especially if the player is " +"fighting with low health! It's a resource that the player should manage " +"carefully.\n" "\n" -"The character's health might get low if an enemy attacks them or they " -"fall into a hole.\n" +"The character's health might get low if an enemy attacks them or they fall " +"into a hole.\n" "\n" "We can create a function to represent damage in these cases." msgstr "" @@ -51,6 +52,7 @@ msgstr "" "Podemos criar uma função para representar o dano nesses casos." #: course/lesson-9-adding-and-subtracting/lesson.tres:40 +#, fuzzy msgid "" "We pass the amount of damage the robot should take as a parameter.\n" "\n" @@ -59,9 +61,9 @@ msgid "" "Note the [code]-=[/code] syntax which achieves this. It's a shorthand we " "often use.\n" "\n" -"You can also use a longer form. Both of these lines have the same effect." -" They both subtract the value of [code]amount[/code] to the " -"[code]health[/code] variable:\n" +"You can also use a longer form. Both of these lines have the same effect. " +"They both subtract the value of [code]amount[/code] from the [code]health[/" +"code] variable:\n" "\n" "[code]health -= amount[/code]\n" "[code]health = health - amount[/code]\n" @@ -97,8 +99,8 @@ msgstr "" msgid "" "Here again, the health can go beyond [code]100[/code].\n" "\n" -"Also, once more, the short line [code]health += amount[/code] is " -"equivalent to the longer form [code]health = health + amount[/code]." +"Also, once more, the short line [code]health += amount[/code] is equivalent " +"to the longer form [code]health = health + amount[/code]." msgstr "" "Aqui também, a vida pode ir além de [code]100[/code].\n" "\n" @@ -145,13 +147,13 @@ msgstr "health = health - amount" #: course/lesson-9-adding-and-subtracting/lesson.tres:109 msgid "" -"In the following practices, you'll code the [code]take_damage()[/code] " -"and [code]heal()[/code] functions so the robot's health can decrease and " +"In the following practices, you'll code the [code]take_damage()[/code] and " +"[code]heal()[/code] functions so the robot's health can decrease and " "increase." msgstr "" -"Nas práticas a seguir, você vai programar as funções " -"[code]take_damage()[/code] e [code]heal()[/code] para que a vida do robô " -"possa diminuir e aumentar." +"Nas práticas a seguir, você vai programar as funções [code]take_damage()[/" +"code] e [code]heal()[/code] para que a vida do robô possa diminuir e " +"aumentar." #: course/lesson-9-adding-and-subtracting/lesson.tres:117 msgid "Damaging the Robot" @@ -159,9 +161,9 @@ msgstr "Fazendo o robô levar dano" #: course/lesson-9-adding-and-subtracting/lesson.tres:118 msgid "" -"In our game, the main character has a certain amount of " -"[code]health[/code]. When it gets hit, the health should go down by a " -"varying [code]amount[/code] of damage.\n" +"In our game, the main character has a certain amount of [code]health[/code]. " +"When it gets hit, the health should go down by a varying [code]amount[/code] " +"of damage.\n" "\n" "Add to the [code]take_damage()[/code] function so it subtracts the " "[code]amount[/code] to the predefined [code]health[/code] variable.\n" @@ -189,8 +191,8 @@ msgstr "Curando o robô" msgid "" "It's time to heal the robot up to full health!\n" "\n" -"Write a function called [code]heal()[/code] that takes " -"[code]amount[/code] as a parameter.\n" +"Write a function called [code]heal()[/code] that takes [code]amount[/code] " +"as a parameter.\n" "\n" "The function should add [code]amount[/code] to [code]health[/code].\n" "\n" @@ -198,8 +200,8 @@ msgid "" msgstr "" "É hora de curar o robô até a vida máxima!\n" "\n" -"Escreva uma função chamada [code]heal()[/code] que receba [code]amount[/code]" -" como parâmetro.\n" +"Escreva uma função chamada [code]heal()[/code] que receba [code]amount[/" +"code] como parâmetro.\n" "\n" "A função deve adicionar o valor de [code]amount[/code] na variável " "[code]health[/code].\n" @@ -208,8 +210,8 @@ msgstr "" #: course/lesson-9-adding-and-subtracting/lesson.tres:157 msgid "" -"Our robot needs healing after that practice! Create a function to heal it" -" back to full health." +"Our robot needs healing after that practice! Create a function to heal it " +"back to full health." msgstr "" "Nosso robô precisa de cura depois dessa prática! Crie uma função para curar " "a vida dele de volta para o valor máximo." diff --git a/i18n/ru/README.md b/i18n/ru/README.md new file mode 100644 index 00000000..2664a589 --- /dev/null +++ b/i18n/ru/README.md @@ -0,0 +1,95 @@ +Hi there! + +If you want to test the translation in the app, read the instructions in the `🧪 How to test Russian translation in Godot` section. + +Also, be sure to check out the `📜 Translation` guide section before you get started. + +Any help is welcome! + +## Click the title below to expand the text: + +--- + +
+🧪 How to test Russian translation in Godot + +1. Copy the latest version of `learn-gdscript` app code [from the GitHub repository](https://github.com/GDQuest/learn-gdscript/) in any way you like by cloning repository or simply downloading from GitHub WebPage (`Code-Download ZIP`). If you downloaded ZIP unpack `learn-gdscript-main` folder. +2. Copy the contents of the `ru` folder [from the translation repository](https://github.com/GDQuest/learn-gdscript-translations/tree/main/ru) to the `learn-gdscript-main/i18n/ru` folder. +3. Import the `learn-gdscript-main/project.godot` into Godot. +4. Open the `res://autoload/TranslationManager.gd` script in the Godot file manager and add `ru` language code to its `SUPPORTED_LOCALES` constant. The order of languages in `SUPPORTED_LOCALES` defines the order they'll appear in the settings menu. Example code fragment from `TranslationManager.gd`: + +```Python +const SUPPORTED_LOCALES := [ + "en", "ru" +] +``` +5. Run the app by pressing F5, open the settings menu, and select the Russian language. The app will remember your choice when you reopen it. +
+ +--- + +
+📜 Translation guide for Russian-speaking editors + +## 📜 Краткий справочник по переводу на русский язык + +_Шпаргалка для будущих редакторов._ + +### ⭐ Основыные правила перевода: + +- В английском языке в цитатах последняя точка ставится внутри кавычек. В русском — снаружи. + +- При переводе «вы» пишется с маленькой буквы. «Вы» с большой буквы обычно используется только в деловой или личной переписке с одним человеком. + +- В качестве кавычек используются строго «кавычки-елочки». + +- Где необходимо по правилам русского языка, используется символ тире «—», а не дефис «-». + +### 📑 Пояснения конкретных ситуациий при переводе: + +- Смысловой англицизм «этот» (this, it) по возможности заменен на слово, о котором говорится (для более красивой стилистики). + +- «эта» (ошибка, функция) — переведено как «данная» (ошибка, функция). + +- «decimal number» — переведено как «десятичная дробь», а не «десятичное число» или «число с десятичной дробью». + +- «increment» — переведено как «инкремент», а не «приращение», т.к. инкремент — это математический термин и такой перевод устоялся в русской компьютерной литературе. + +- «bits» of code (data) — переведено как «фрагменты» кода (данных), а не «блоки», «части» или «биты». + +- «type hint» — переведено как «обозначение типа переменной», т.к. «подсказка типа» звучит странно и некрасиво по-русски. Речь идет о статической типизации — ручном указании типа при инициализации переменной (var имя : тип = значение). Лексически более верный перевод «определение типа переменной» не подходит, т.к. имеет второе значение — получение типа уже существующей переменной с помощью функции GDScript typeof(имя), а не только обозначение (задание, установку) типа новой переменной. + +- «hint» — так же переведено в большинстве случаев как «обозначение». + +- «opening and a closing parenthesis» — переведено как «открывающая и закрывающая круглые скобки». Перевод: «открывающаяся и закрывающаяся» неверный и означает, что скобка открывает и закрывает сама себя. + +- «Why does that happen?» — переведено как «Почему так происходит?», а не «Почему это происходит?». + +### 📋 Список задач для будущих улучшений: + +- На свежую голову вычитать весь перевод в запущенном приложении на предмет опечаток, англицизмов (английского построения предложений) и вылезаний за пределы полей интерфейса. + +- Проверить автопоиском, чтобы везде правильно были закрыты теги, самая частая ошибка — лишний пробел в закрывающих тегах: `[ /i]` и `[ /b]`. Должно быть: `[/i]` и `[/b]`. + +- «you tell it (computer) to» — в разных местах переведено по-разному: «вы указываете ему (компьютеру)», «вы говорите ему (компьютеру)», «вы приказываете ему (компьютеру)». Хотелось бы подобрать одно максимально лаконичное слово, которое бы хорошо вписывалось во все контексты. +Вариант «вы сообщаете ему (компьютеру)» везде заменен на «вы указываете ему (компьютеру)». +
+ +--- + +
+👦🏻 About me (Paul Argent) + +Hi there! My name is Paul Argent. I'm a Russian native speaker with good knowledge of Russian grammar and programming context. + +I really would like to popularize Godot among Eastern European students and novice developers despite the craziness going now in my brotherhood Russian-speaking countries. + +I will try to translate the lessons using a good Russian style of text (avoiding anglicisms where possible). Where it is impossible to translate terms, I will use explanations in parentheses and generally accepted terms in the Russian programming literature. + +I have translation experience for story games and some software before. + +I'm working on the translation in my free time from my main job and therefore it is not going very fast. Any help is welcome! +
+ +--- + diff --git a/i18n/ru/application.po b/i18n/ru/application.po new file mode 100644 index 00000000..81b29c0c --- /dev/null +++ b/i18n/ru/application.po @@ -0,0 +1,969 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: resources/QuizInputField.gd:17 +msgid "You need to type a whole number for this answer. Example: 42" +msgstr "Для ответа вам нужно ввести целое число. Пример: 42" + +#: resources/QuizInputField.gd:22 +msgid "" +"You need to type a decimal for this answer. Use a \".\" to separate the " +"decimal part. Example: 3.14" +msgstr "" +"Для ответа вам нужно ввести десятичную дробь. Используйте \".\" для " +"отделения десятичной части. Пример: 3.14" + +#: ui/UILesson.tscn:90 +msgid "Title" +msgstr "Заголовок" + +#: ui/UILesson.tscn:125 +msgid "Practices" +msgstr "Упражнения" + +#: ui/UINavigator.gd:365 +msgid "Go back in your navigation history" +msgstr "Вернуться к предыдущему окну" + +#: ui/UINavigator.gd:368 +msgid "(no previous history)" +msgstr "(предыдущее окно не найдено)" + +#: ui/UINavigator.tscn:103 +msgid "CHRISTMAS SALE - 50% OFF" +msgstr "РОЖДЕСТВЕНСКАЯ РАСПРОДАЖА – СКИДКА 50%" + +#: ui/UINavigator.tscn:163 +msgid "CHRISTMAS SALE" +msgstr "РОЖДЕСТВЕНСКАЯ РАСПРОДАЖА" + +#: ui/UIPractice.gd:154 ui/UIPractice.gd:220 +#, python-format +msgid "Hint %s" +msgstr "Подсказка %s" + +#: ui/UIPractice.gd:248 +msgid "Validating Your Code..." +msgstr "Проверяем ваш код..." + +#: ui/UIPractice.gd:268 +#, python-format +msgid "The function `%s` calls itself, this creates an infinite loop" +msgstr "Функция `%s` вызывает сама себя, впадая в бесконечный цикл" + +#: ui/UIPractice.gd:301 +msgid "Running Your Code..." +msgstr "Выполняем ваш код..." + +#: ui/UIPractice.gd:328 +msgid "" +"There is a division by zero in your code. You cannot divide by zero in code. " +"Please ensure you have no \"/ 0\" or \"% 0\" in your code." +msgstr "" +"В вашем коде есть деление на ноль. Вы не можете делить на ноль в коде. " +"Убедитесь, что в вашем коде нет «/ 0» или «% 0»." + +#: ui/UIPractice.gd:343 +msgid "" +"Oh no! The script has an error, but the Script Verifier did not catch it" +msgstr "" +"О, нет! В скрипте есть ошибка, но средство проверки скриптов ее не обнаружило" + +#: ui/UIPractice.gd:369 +msgid "Running Tests..." +msgstr "Проводим тесты..." + +#: ui/UIPractice.tscn:138 +msgid "Suggested Solution" +msgstr "Предлагаемое решение" + +#: ui/UIPractice.tscn:189 +msgid "Use Solution" +msgstr "Использовать решение" + +#: ui/UIPractice.tscn:207 +msgid "Leave unfinished practice?" +msgstr "Оставить незаконченное упражнение?" + +#: ui/components/BigGreenButton.tscn:24 +msgid "Button" +msgstr "Кнопка" + +#: ui/components/CodeEditor.tscn:144 +msgid "Run" +msgstr "Выполнить" + +#: ui/components/CodeEditor.tscn:158 +msgid "Pause" +msgstr "Пауза" + +#: ui/components/CodeEditor.tscn:173 ui/components/RunnableCodeExample.tscn:87 +msgid "Reset" +msgstr "Сбросить" + +#: ui/components/CodeEditor.tscn:195 +msgid "Solution" +msgstr "Решение" + +#: ui/components/CodeEditor.tscn:209 ui/components/OutputConsole.tscn:43 +msgid "Output" +msgstr "Вывод" + +#: ui/components/CodeEditor.tscn:224 +#: ui/components/popups/LessonDonePopup.tscn:198 +#: ui/components/popups/PracticeDonePopup.tscn:165 +msgid "Continue" +msgstr "Продолжить" + +#: ui/components/DebuggerConsoleMonitoredVariable.tscn:20 +#: ui/components/OutputConsolePrintMessage.tscn:23 +msgid "Value" +msgstr "Значение" + +#: ui/components/GameView.tscn:72 +msgid "Paused" +msgstr "На паузе" + +#: ui/components/GlossaryPopup.tscn:37 +msgid "Term" +msgstr "Элемент" + +#: ui/components/GlossaryPopup.tscn:53 +#: ui/components/popups/ErrorOverlayPopup.tscn:74 +msgid "Our error explanation." +msgstr "Наше объяснение ошибки." + +#: ui/components/OutputConsoleErrorMessage.tscn:39 +msgid "ERROR:" +msgstr "ОШИБКА:" + +#: ui/components/OutputConsoleErrorMessage.tscn:47 +#: ui/components/ScrollableTextBox.tscn:43 +#: ui/screens/lesson/UIContentBlock.tscn:68 +msgid "Placeholder text" +msgstr "Текст-заполнитель" + +#: ui/components/OutputConsoleErrorMessage.tscn:62 +msgid "in" +msgstr "в" + +#: ui/components/OutputConsoleErrorMessage.tscn:68 +msgid "FileName" +msgstr "Имя файла" + +#: ui/components/OutputConsoleErrorMessage.tscn:75 +msgid "at" +msgstr "в" + +#: ui/components/OutputConsoleErrorMessage.tscn:82 +msgid "0:0" +msgstr "0:0" + +#: ui/components/OutputConsoleErrorMessage.tscn:92 +msgid "" +"Sometimes errors are reported outside of your code. Why does that happen?" +msgstr "" +"Иногда ошибки возникают за пределами вашего кода. Почему так происходит?" + +#: ui/components/OutputConsoleErrorMessage.tscn:101 +msgid "Explain" +msgstr "Пояснение" + +#: ui/components/Revealer.tscn:74 +msgid "Expand" +msgstr "Развернуть" + +#: ui/components/RunnableCodeExample.tscn:105 +msgid "run()" +msgstr "run()" + +#: ui/components/RunnableCodeExample.tscn:123 +msgid "step" +msgstr "шаг" + +#: ui/components/RunnableCodeExampleDebugger.tscn:44 +msgid "Debugger" +msgstr "Отладчик" + +#: ui/components/SalePopup.tscn:121 +#, python-format +msgid "" +"[center]Get [b]50% off[/b] on all our Godot courses with the \n" +"coupon code [b]DISCOUNT50[/b][/center]" +msgstr "" +"[center]Получите [b]50% скидку[/b] на все наши курсы Godot по\n" +"купону с кодом [b]DISCOUNT50[/b][/center]" + +#: ui/components/SalePopup.tscn:132 +msgid "Only until " +msgstr "Предложение действует до " + +#: ui/components/SalePopup.tscn:155 +msgid "CHECK OUT OUR COURSES" +msgstr "ПОСМОТРЕТЬ НАШИ КУРСЫ" + +#: ui/components/SalePopup.tscn:180 +msgid "X" +msgstr "X" + +#: ui/components/popups/ConfirmPopup.tscn:115 +#: ui/components/popups/PracticeLeaveUnfinishedPopup.tscn:119 +msgid "Confirm" +msgstr "Подтвердить" + +#: ui/components/popups/ConfirmPopup.tscn:127 +#: ui/components/popups/PracticeLeaveUnfinishedPopup.tscn:131 +msgid "Cancel" +msgstr "Отменить" + +#: ui/components/popups/ErrorOverlayPopup.tscn:46 +msgid "Original error message" +msgstr "Исходное сообщение об ошибке" + +#: ui/components/popups/ErrorOverlayPopup.tscn:65 +msgid "Why this happens" +msgstr "Почему так происходит" + +#: ui/components/popups/ErrorOverlayPopup.tscn:82 +msgid "How to fix this" +msgstr "Как это исправить" + +#: ui/components/popups/ErrorOverlayPopup.tscn:91 +msgid "Our suggestion on how to fix it." +msgstr "Наш вариант исправления." + +#: ui/components/popups/ErrorOverlayPopup.tscn:102 +msgid "" +"Sorry, we don't have this particular error message covered yet!\n" +"\n" +"Please, use the [b]Report[/b] button in the top-right corner to tell us more " +"about how you've got it, and we will try to improve our knowledge base for " +"the next version of the application.\n" +"\n" +"[center]Thank you![/center]" +msgstr "" +"Извините, мы ещё не написали пояснение к этой ошибке!\n" +"\n" +"Пожалуйста, используйте кнопку [b]Сообщить о проблеме[/b] в правом верхнем " +"углу, чтобы рассказать нам больше о том, как вы её получили, и мы " +"постараемся улучшить нашу базу знаний к следующей версии приложения.\n" +"\n" +"[center]Спасибо![/center]" + +#: ui/components/popups/ErrorOverlayPopup.tscn:128 +msgid "Hide" +msgstr "Скрыть" + +#: ui/components/popups/ExternalErrorPopup.tscn:66 +msgid "Where do external errors come from?" +msgstr "Откуда берутся внешние ошибки?" + +#: ui/components/popups/ExternalErrorPopup.tscn:83 +msgid "" +"Lessons in this course are designed so you only need to edit the " +"[b]important bits[/b]. But there is much more code outside of what you see " +"that makes the project run.\n" +"\n" +"This means that sometimes changes you make can affect code you have no " +"control over. But don't worry, you can still fix all the issues yourself " +"with the code you [b]can[/b] edit!\n" +"\n" +"[i]This is like how game engines work too.[/i] There is a lot of hidden code " +"that they execute to ensure your project runs smoothly. And yet, an error in " +"your scripts can break them. We'll try to explain how to address each " +"individual error that you face. Quick, click the [b]Explain[/b] button next " +"to the error message!" +msgstr "" +"Уроки этого курса построены так, что вам потребуется редактировать только [b]" +"важные фрагменты кода[/b]. Но кроме того кода, который вы видите, существует " +"ещё очень много кода заставляющего этот проект работать.\n" +"\n" +"Это означает, что иногда вносимые вами изменения могут повлиять на код, " +"который вам недоступен. Но не волнуйтесь, вы всё ещё можете решить все " +"возникающие проблемы самостоятельно, с помощью кода, который вы [b]можете[/b]" +" редактировать!\n" +"\n" +"[i]Это похоже на то, как работают игровые движки.[/i] Существует много " +"скрытого кода, который они выполняют, чтобы обеспечить бесперебойную работу " +"ваших проектов. И все же ошибка в ваших скриптах может их сломать. Мы " +"постараемся объяснить, как устранить каждую отдельную ошибку, с которой вы " +"сталкиваетесь. Просто нажмите кнопку [b]Пояснение[/b] рядом с сообщением об " +"ошибке!" + +#: ui/components/popups/ExternalErrorPopup.tscn:119 +msgid "Got it!" +msgstr "Понятно!" + +#: ui/components/popups/LessonDonePopup.tscn:133 +msgid "Lesson complete!" +msgstr "Урок пройден!" + +#: ui/components/popups/LessonDonePopup.tscn:142 +msgid "" +"But there are still some practices\n" +"that you've skipped." +msgstr "" +"Но есть еще упражнения\n" +"которые вы пропустили." + +#: ui/components/popups/LessonDonePopup.tscn:155 +msgid "" +"[center][b]Stay[/b] and revisit the study material,\n" +"or [b]continue[/b] the course.[/center]" +msgstr "" +"[center]Вы можете [b]остаться[/b] и повторить учебный материал\n" +"или [b]продолжить[/b] курс.[/center]" + +#: ui/components/popups/LessonDonePopup.tscn:183 +#: ui/components/popups/PracticeDonePopup.tscn:144 +msgid "Stay" +msgstr "Остаться" + +#: ui/components/popups/PracticeDonePopup.tscn:89 +msgid "Well done!" +msgstr "Отличная работа!" + +#: ui/components/popups/PracticeDonePopup.tscn:98 +msgid "You completed the practice." +msgstr "Вы выполнили упражнение." + +#: ui/components/popups/PracticeDonePopup.tscn:110 +msgid "" +"[center][b]Stay[/b] and play around,\n" +"or [b]continue[/b] the course.[/center]" +msgstr "" +"[center]Вы можете [b]остаться[/b] и поэкспериментировать\n" +"или [b]продолжить[/b] курс.[/center]" + +#: ui/components/popups/PracticeListPopup.tscn:67 +msgid "Practice List" +msgstr "Список упражнений" + +#: ui/components/popups/PracticeListPopup.tscn:115 +#: ui/components/popups/SettingsPopup.tscn:244 +msgid "Close" +msgstr "Закрыть" + +#: ui/components/popups/ReportFormPopup.tscn:66 +msgid "Report an issue" +msgstr "Сообщить о проблеме" + +#: ui/components/popups/ReportFormPopup.tscn:83 +msgid "" +"If you face an issue in the app, please click the link below to report it on " +"GitHub:\n" +"\n" +"[center][b][url=https://github.com/GDQuest/learn-gdscript/issues]GitHub.com " +"> GDQuest > learn-gdscript > Issues[/url][/b][/center]\n" +"\n" +"On that page, you can report any issues, whether something's not working or " +"there's an error in a lesson.\n" +"\n" +"You can generate a log to help us identify the problem. To do so, click " +"here: [b][url=download]generate error log[/url][/b].\n" +"\n" +"Please drag and drop the generated file onto your issue on GitHub to attach " +"it.\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]What's GitHub[/font]\n" +"\n" +"GitHub is an online platform to host and manage open-source projects like " +"the GDScript Learn app. It helps developers organize their work and " +"collaborate online.\n" +"\n" +"You can use GitHub to study the source code of many open projects, report " +"issues, or even contribute code yourself.\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]How to report an issue[/font]\n" +"\n" +"1. Click the link above to get to the [i]GitHub Issues[/i] page.\n" +"2. Click on the [i]New Issue[/i] button.\n" +"3. Fill out the form to tell us more about your problem.\n" +"\n" +"You will need a GitHub account to do so.\n" +"\n" +"Please add as much relevant information as possible, such as the kind of " +"device you're using to access the app, and maybe attach a screenshot or " +"video clip showcasing the issue.\n" +"\n" +"[center]Thank you for contributing to open source![/center]" +msgstr "" +"Если вы столкнулись с проблемой в приложении, нажмите на ссылку ниже, чтобы " +"сообщить о ней на GitHub:\n" +"\n" +"[center][b][url=https://github.com/GDQuest/learn-gdscript/issues]GitHub.com " +"> GDQuest > learn-gdscript > Issues[/url][/b][/center]\n" +"\n" +"На этой странице вы можете сообщить о любых проблемах, если что-то не " +"работает, либо есть ошибка в уроке.\n" +"\n" +"Вы можете сгенерировать журнал (log-файл), чтобы помочь нам определить " +"проблему. Для этого нажмите здесь: [b][url=download]Создать журнал ошибок[/" +"url][/b].\n" +"\n" +"Перетащите сгенерированный журнал в свою проблему (issue) на GitHub, чтобы " +"прикрепить его.\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]Что такое GitHub[/font]\n" +"\n" +"GitHub — это онлайн-платформа для размещения и управления проектами с " +"открытым исходным кодом, такими как приложение GDScript Learn. Она помогает " +"разработчикам организовывать свою работу и сотрудничать онлайн.\n" +"\n" +"Вы можете использовать GitHub для изучения исходного кода многих открытых " +"проектов, сообщать о проблемах или даже вносить правки в код " +"самостоятельно.\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]Как сообщить о проблеме[/font]\n" +"\n" +"1. Нажмите на ссылку выше, чтобы перейти на страницу [i]GitHub Issues[/i].\n" +"2. Нажмите кнопку [i]New Issue[/i].\n" +"3. Заполните форму, чтобы рассказать нам больше о своей проблеме.\n" +"\n" +"Для этого вам понадобится учетная запись GitHub.\n" +"\n" +"Пожалуйста, добавьте к описанию проблемы как можно больше полезной " +"информации, например, укажите тип устройства, которое вы используете для " +"доступа к приложению, и, если возможно, прикрепите снимок экрана или " +"видеоклип, демонстрирующий проблему.\n" +"\n" +"[center]Спасибо за ваше участие в улучшении проекта![/center]" + +#: ui/components/popups/ReportFormPopup.tscn:158 +msgid "OK" +msgstr "OK" + +#: ui/components/popups/SettingsPopup.tscn:76 +msgid "Configure the App" +msgstr "Настроить приложение" + +#: ui/components/popups/SettingsPopup.tscn:103 +msgid "Language" +msgstr "Язык" + +#: ui/components/popups/SettingsPopup.tscn:123 +msgid "Text Size" +msgstr "Размер текста" + +#: ui/components/popups/SettingsPopup.tscn:151 +msgid "Sample text" +msgstr "Пример текста" + +#: ui/components/popups/SettingsPopup.tscn:164 +msgid "Scroll sensitivity" +msgstr "Чувствительность прокрутки" + +#: ui/components/popups/SettingsPopup.tscn:190 +msgid "Framerate cap" +msgstr "Ограничение частоты кадров" + +#: ui/components/popups/SettingsPopup.tscn:212 +msgid "Lower contrast" +msgstr "Понизить контрастность" + +#: ui/components/popups/SettingsPopup.tscn:259 +msgid "Apply" +msgstr "Применить" + +#: ui/screens/course_outliner/CourseLessonDetails.gd:93 +msgid "Open Lesson" +msgstr "Открыть урок" + +#: ui/screens/course_outliner/CourseLessonDetails.gd:95 +msgid "Continue Lesson" +msgstr "Продолжить урок" + +#: ui/screens/course_outliner/CourseLessonDetails.gd:97 +msgid "Start Lesson" +msgstr "Начать урок" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:35 +msgid "Lesson Title Goes Here" +msgstr "Название урока находится здесь" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:48 +msgid "Lesson read" +msgstr "Прогресс чтения" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:56 +msgid "0%" +msgstr "0%" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:79 +msgid "Quizzes completed" +msgstr "Тестов пройдено" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:87 +#: ui/screens/course_outliner/CourseLessonDetails.tscn:108 +msgid "0 / 0" +msgstr "0 / 0" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:100 +msgid "Practices completed" +msgstr "Упражнений выполнено" + +#: ui/screens/course_outliner/CourseLessonItem.tscn:36 +msgid "Lesson 0" +msgstr "Урок 0" + +#: ui/screens/course_outliner/CourseLessonItem.tscn:44 +msgid "Lesson Title" +msgstr "Название урока" + +#: ui/screens/course_outliner/CourseOutliner.tscn:44 +msgid "Course Index - " +msgstr "Содержание курса - " + +#: ui/screens/course_outliner/CourseOutliner.tscn:51 +msgid "Course Title Goes Here" +msgstr "Название курса находится здесь" + +#: ui/screens/course_outliner/CourseOutliner.tscn:83 +msgid "Reset Progress" +msgstr "Сбросить прогресс" + +#: ui/screens/course_outliner/CourseOutliner.tscn:98 +msgid "Confirm Resetting Progress" +msgstr "Подтвердите сброс прогресса" + +#: ui/screens/end_screen/EndScreen.tscn:229 +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:196 +msgid "Congratulations!" +msgstr "Поздравляем!" + +#: ui/screens/end_screen/EndScreen.tscn:236 +msgid "" +"You completed Learn GDScript From Zero. You now have the basics you need to " +"dive into game creation with the Godot game engine.\n" +"\n" +"If you're looking for a free series to keep learning the basics with us, you " +"can move on to [url=https://www.gdquest.com/tutorial/godot/learning-paths/" +"getting-started-in-2021/]Getting Started with Godot[/url]." +msgstr "" +"Вы завершили курс Learn GDScript From Zero. Теперь у вас есть необходимые " +"базовые знания, чтобы с головой погрузиться в разработку игр с помощью " +"игрового движка Godot.\n" +"\n" +"Если вы ищите бесплатные уроки чтобы продолжить получать знания с нами, вы " +"можете перейти на [url=https://www.gdquest.com/tutorial/godot/learning-paths/" +"getting-started-in-2021/]Введение в Godot[/url]." + +#: ui/screens/end_screen/EndScreen.tscn:249 +msgid "Or level up faster by taking this shortcut" +msgstr "Или повышайте уровень быстрее, используя короткий путь" + +#: ui/screens/end_screen/EndScreen.tscn:256 +msgid "" +"There are loads of free game creation tutorials, but they don't form a clear " +"path.\n" +"\n" +"Worse, most of them are like step-by-step recipes. But as you learned, you " +"can't become a developer by just following recipes.\n" +"\n" +"Every project has unique challenges and requires [i]creative problem " +"solving[/i]. You need to [i]think like a programmer[/i].\n" +"\n" +"Learning that on your own can take years." +msgstr "" +"Есть много бесплатных уроков по созданию игр, но у них нет определенного " +"пути изучения.\n" +"\n" +"Еще хуже, большинство их них представляют из себя пошаговые рецепты. Как вы " +"уже узнали — невозможно стать разработчиком просто следуя рецептам.\n" +"\n" +"В каждом нашем проекте есть уникальные испытания которые требуют " +"[i]креативного решения проблем[/i]. Вам нужно [i]думать как программист[/" +"i].\n" +"\n" +"На самостоятельное изучение этого могут уйти годы." + +#: ui/screens/end_screen/EndScreen.tscn:277 +msgid "Learn to Code From Zero, with Godot" +msgstr "Научитесь программировать с нуля в Godot" + +#: ui/screens/end_screen/EndScreen.tscn:284 +msgid "" +"This app is the free part of our in-depth course, [url=https://gdquest." +"mavenseed.com/courses/learn-to-code-from-zero-with-godot][b]Learn to Code " +"From Zero, with Godot[/b][/url].\n" +"\n" +"The course picks up right where this app ends to take you to the point where " +"you can make [i]your[/i] game.\n" +"\n" +"It's the only course that'll truly teach you [i]how to become a game " +"developer[/i] with Godot." +msgstr "" +"Это приложение — бесплатная часть нашего углубленного курса, [url=https://" +"gdquest.mavenseed.com/courses/learn-to-code-from-zero-with-godot]" +"[b]Научитесь программировать с нуля в Godot[/b][/url].\n" +"\n" +"Этот курс начинается ровно там, где заканчивается этот, чтобы привести вас к " +"моменту, когда вы можете создать [i]свою[/i] игру.\n" +"\n" +"Это единственный курс который действительно научит вас [i]как стать " +"разработчиком игр[/i] в Godot." + +#: ui/screens/end_screen/EndScreen.tscn:308 +#: ui/screens/lesson/UIContentBlock.gd:70 +#: ui/screens/lesson/UIContentBlock.gd:134 +msgid "Learn More" +msgstr "Узнать больше" + +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:203 +msgid "" +"You completed Learn GDScript From Zero. You now have the basics you need to " +"make games with the Godot game engine.\n" +"\n" +"You can keep learning with the free series [url=https://docs.godotengine.org/" +"en/stable/getting_started/step_by_step/index.html]Getting Started with " +"Godot[/url]." +msgstr "" +"Вы завершили курс Learn GDScript From Zero. Теперь у вас есть необходимые " +"базовые знания, чтобы с головой погрузиться в разработку игр с помощью " +"игрового движка Godot.\n" +"\n" +"Если вы ищите бесплатные уроки чтобы продолжить получать знания, вы можете " +"перейти на [url=https://docs.godotengine.org/ru/stable/getting_started/" +"step_by_step/index.html]Введение в Godot[/url]." + +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:216 +msgid "This is an Open-Source project!" +msgstr "Это проект с открытым исходным кодом!" + +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:223 +msgid "" +"Like Godot, this app and course is free and open-source. \n" +"\n" +"You can find the app's source code and contribute translations here: " +"[url=\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " +"(Github repository)[/url]." +msgstr "" +"Как и Godot, это приложение и курс бесплатны и имеют открытый исходный код.\n" +"\n" +"Вы можете найти исходный код приложения и улучшить перевод здесь: [url=" +"\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero (" +"репозиторий Github)[/url]." + +#: ui/screens/lesson/UIBaseQuiz.tscn:56 +msgid "[b]Question[/b]" +msgstr "[b]Вопрос[/b]" + +#: ui/screens/lesson/UIBaseQuiz.tscn:80 ui/screens/lesson/UIBaseQuiz.tscn:169 +msgid "Explanation" +msgstr "Объяснение" + +#: ui/screens/lesson/UIBaseQuiz.tscn:107 +msgid "Skip" +msgstr "Пропустить" + +#: ui/screens/lesson/UIBaseQuiz.tscn:119 +msgid "Submit" +msgstr "Принять" + +#: ui/screens/lesson/UIBaseQuiz.tscn:150 +msgid "You're right!" +msgstr "Все верно!" + +#: ui/screens/lesson/UIBaseQuiz.tscn:160 +msgid "Answers here" +msgstr "Ответы здесь" + +#: ui/screens/lesson/UIContentBlock.tscn:47 +msgid "Placeholder heading" +msgstr "Заполнитель заголовка" + +#: ui/screens/lesson/UIPracticeButton.tscn:52 +msgid "Practice title" +msgstr "Название упражнения" + +#: ui/screens/lesson/UIPracticeButton.tscn:77 +msgid "next" +msgstr "далее" + +#: ui/screens/lesson/UIPracticeButton.tscn:100 +msgid "Practice" +msgstr "Упражнение" + +#: ui/screens/lesson/UIPracticeButton.tscn:110 +msgid "You are here" +msgstr "Вы здесь" + +#: ui/screens/lesson/quizzes/QuizAnswerButton.tscn:40 +msgid "Answer label" +msgstr "Поле ответа" + +#: ui/screens/lesson/quizzes/UIQuizChoice.gd:26 +msgid "(select all that apply)" +msgstr "(выберите все правильные ответы)" + +#: ui/screens/practice/PracticeHint.tscn:8 +msgid "Show Hint" +msgstr "Показать подсказку" + +#: ui/screens/practice/PracticeInfoPanel.gd:144 +msgid "Method descriptions" +msgstr "Описания методов" + +#: ui/screens/practice/PracticeInfoPanel.gd:160 +msgid "Property descriptions" +msgstr "Описания свойств" + +#: ui/screens/practice/PracticeInfoPanel.tscn:63 +msgid "Summary - Lesson Name" +msgstr "Краткий обзор - Название урока" + +#: ui/screens/practice/PracticeInfoPanel.tscn:106 +msgid "Goals" +msgstr "Цели" + +#: ui/screens/practice/PracticeInfoPanel.tscn:119 +msgid "Hints" +msgstr "Подсказки" + +#: ui/screens/practice/PracticeInfoPanel.tscn:126 +msgid "Checks" +msgstr "Проверки" + +#: ui/screens/practice/PracticeInfoPanel.tscn:134 +msgid "Documentation" +msgstr "Документация" + +#: ui/screens/practice/PracticeInfoPanel.tscn:175 +msgid "Open Practice List" +msgstr "Открыть список упражнений" + +#: ui/screens/practice/PracticeTestDisplay.tscn:40 +msgid "Test text" +msgstr "Тестовый текст" + +#: ui/screens/welcome_screen/WelcomeScreen.gd:42 +msgid "CONTINUE" +msgstr "ПРОДОЛЖИТЬ" + +#: ui/screens/welcome_screen/WelcomeScreen.gd:44 +#: ui/screens/welcome_screen/WelcomeScreen.tscn:627 +msgid "START" +msgstr "НАЧАТЬ" + +#: ui/screens/welcome_screen/WelcomeScreen.tscn:645 +msgid "SELECT LESSON" +msgstr "ВЫБРАТЬ УРОК" + +#: ui/screens/welcome_screen/WelcomeScreen.tscn:659 +msgid "OPTIONS" +msgstr "ОПЦИИ" + +#: ui/screens/welcome_screen/WelcomeScreen.tscn:693 +msgid "QUIT" +msgstr "ВЫХОД" + +#~ msgid "Connected to the server." +#~ msgstr "Подключен к серверу." + +#~ msgid "" +#~ "Can't reach the server. The server might be down, or your internet may be " +#~ "down." +#~ msgstr "" +#~ "Невозможно связаться с сервером. Возможно сервер выключен, либо ваше " +#~ "интернет-соединение недоступно." + +#~ msgid "Can't reach the server. The tests will be less precise." +#~ msgstr "Невозможно связаться с сервером. Тесты будут менее точными." + +#~ msgid "That's it... for now!" +#~ msgstr "Вот и все... пока!" + +#~ msgid "" +#~ "Thanks for participating in the beta test.\n" +#~ "\n" +#~ "We hope you enjoyed what's available so far.\n" +#~ "\n" +#~ "We wish we had a lot more to give you already, but creating this app took " +#~ "time. A [i]lot[/i] of time.\n" +#~ "\n" +#~ "The good news is: now we figured out many of the more challenging parts, " +#~ "moving forward, we can shift our focus onto new lessons and practices." +#~ msgstr "" +#~ "Спасибо за участие в бета-тестировании!\n" +#~ "\n" +#~ "Мы надеемся, что вам понравилось то, что доступно на данный момент.\n" +#~ "\n" +#~ "Мы бы хотели, чтобы у нас было больше того, что мы могли бы вам показать, " +#~ "но создание этого приложения занимает время. [i]Много[/i] времени.\n" +#~ "\n" +#~ "Хорошая новость: теперь мы разобрались со многими наиболее сложными " +#~ "частями, и двигаясь дальше, мы можем переключить внимание на новые уроки " +#~ "и упражнения." + +#~ msgid "" +#~ "[font=res://ui/theme/fonts/font_title.tres]What's coming next[/font]\n" +#~ "\n" +#~ "We have plans for many more lessons and improvements.\n" +#~ "\n" +#~ "You can find our plan for future releases on our [url=https://github.com/" +#~ "GDQuest/learn-gdscript#roadmap]roadmap[/url]." +#~ msgstr "" +#~ "[font=res://ui/theme/fonts/font_title.tres]Что будет дальше[/font]\n" +#~ "\n" +#~ "У нас есть планы на множество новых уроков и улучшений.\n" +#~ "\n" +#~ "Вы можете найти наш план будущих выпусков на нашей [url=https://github." +#~ "com/GDQuest/learn-gdscript#roadmap]дорожной карте[/url]." + +#~ msgid "Learn GDScript From Zero" +#~ msgstr "Изучите GDScript с нуля" + +#~ msgid "" +#~ "GDScript Learn is a Free and Open-Source app and series to help you learn " +#~ "to code, [b]from zero[/b], with Godot's GDScript programming language.\n" +#~ "\n" +#~ "Whether you want to learn game development or just learn to code with " +#~ "exciting interactive projects, this app is for you.\n" +#~ "\n" +#~ "[font=res://ui/theme/fonts/font_title.tres]Programming is a skill[/font]\n" +#~ "\n" +#~ "Programming is a skill, so to get good at it, you need to [i]practice[/" +#~ "i]. You need to see the code in action and to [i]experiment[/i].\n" +#~ "\n" +#~ "That's why we created this app: it makes it easy for you to learn, with " +#~ "interactive demos." +#~ msgstr "" +#~ "GDScript Learn — это бесплатное приложение с открытым исходным кодом и " +#~ "система, которая поможет вам научиться программировать [b]с нуля[/b] на " +#~ "языке программирования Godot GDScript.\n" +#~ "\n" +#~ "Если вы хотите научиться разрабатывать игры или просто научиться " +#~ "программировать с помощью увлекательных интерактивных проектов, это " +#~ "приложение для вас.\n" +#~ "\n" +#~ "[font=res://ui/theme/fonts/font_title.tres]Программирование — это навык[/" +#~ "font]\n" +#~ "\n" +#~ "Программирование — это навык, поэтому, чтобы добиться в нем успеха, вам " +#~ "нужно [i]практиковаться[/i]. Вам нужно увидеть код в действии и " +#~ "[i]поэкспериментировать[/i].\n" +#~ "\n" +#~ "Вот почему мы создали это приложение: оно облегчает вам обучение " +#~ "благодаря интерактивным демонстрациям." + +#~ msgid "" +#~ "Mini quizzes in the lessons will help you test and remember what you " +#~ "learned." +#~ msgstr "" +#~ "Мини-викторины в уроках помогут вам проверить и запомнить то, что вы " +#~ "узнали." + +#~ msgid "" +#~ "[b]Every lesson[/b] ends with one or more [i]practices[/i].\n" +#~ "\n" +#~ "You'll discover the practice screen at the end of the first lesson.\n" +#~ "\n" +#~ "[img=800]res://ui/screens/welcome_screen/ui-screen.png[/img]\n" +#~ "\n" +#~ "[font=res://ui/theme/fonts/font_title.tres]There are no hidden fees[/" +#~ "font]\n" +#~ "\n" +#~ "1600 backers who pre-ordered our course [url=https://kickstarter.com/" +#~ "projects/gdquest/learn-to-code-from-zero-with-godot-the-free-game-" +#~ "engine/]on Kickstarter[/url] funded this app.\n" +#~ "\n" +#~ "As a result, we could make everything in here [b]free for everyone[/b].\n" +#~ "\n" +#~ "This free app is the complete course to get you up to speed with Godot's " +#~ "GDScript programming language.\n" +#~ "\n" +#~ "It complements the [url=https://docs.godotengine.org/en/3.4/" +#~ "getting_started/introduction/index.html]free course[/url] you will find " +#~ "in the Godot documentation (we worked a lot on it too).\n" +#~ "\n" +#~ "If you then want to go further and support our work, you can buy (or " +#~ "gift) one of our [url=https://gdquest.mavenseed.com/courses]Godot " +#~ "courses[/url]." +#~ msgstr "" +#~ "[b]Каждый урок[/b] заканчивается одним или несколькими [i]упражнениями[/" +#~ "i].\n" +#~ "\n" +#~ "Экран практики вы увидите в конце первого урока.\n" +#~ "\n" +#~ "[img=800]res://ui/screens/welcome_screen/ui-screen.png[/img]\n" +#~ "\n" +#~ "[font=res://ui/theme/fonts/font_title.tres]Скрытых платежей нет[/font]\n" +#~ "\n" +#~ "1600 спонсоров, оформивших предварительный заказ на наш курс [url=https://" +#~ "kickstarter.com/projects/gdquest/learn-to-code-from-zero-with-godot-the-" +#~ "free-game-engine/]на Kickstarter[/ url] финансировали это приложение.\n" +#~ "\n" +#~ "В результате мы смогли сделать здесь все [b]бесплатным для всех[/b].\n" +#~ "\n" +#~ "Это бесплатное приложение представляет собой полный курс, который поможет " +#~ "вам быстро освоить язык программирования Godot GDScript.\n" +#~ "\n" +#~ "Он дополняет [url=https://docs.godotengine.org/en/3.4/getting_started/" +#~ "introduction/index.html]бесплатный курс[/url], который вы найдете в " +#~ "документации Godot (мы также много над ней работали) .\n" +#~ "\n" +#~ "Если вы хотите двигаться дальше и поддержать нашу работу, вы можете " +#~ "купить (или подарить) один из наших [url=https://gdquest.mavenseed.com/" +#~ "courses]курсов Godot[/url]." + +#~ msgid "" +#~ "[font=res://ui/theme/fonts/font_title.tres]Get started now[/font]\n" +#~ "\n" +#~ "To get started, click the [i]Start Course[/i] button to the right." +#~ msgstr "" +#~ "[font=res://ui/theme/fonts/font_title.tres]Начните прямо сейчас[/font]\n" +#~ "\n" +#~ "Чтобы начать, нажмите кнопку [i]Начать курс[/i] справа." + +#~ msgid "Early beta release" +#~ msgstr "Ранний бета-релиз" + +#~ msgid "" +#~ "The app is in [b]beta[/b].\n" +#~ "\n" +#~ "You may encounter bugs and typos. We have many improvements and lessons " +#~ "planned.\n" +#~ "\n" +#~ "If you face any problem, please use the button in the top-right to report " +#~ "it to us.\n" +#~ "\n" +#~ "[b]It is crucial[/b]: we'll use your reports and feedback to improve the " +#~ "app, both for you and everyone else." +#~ msgstr "" +#~ "Приложение находится в [b]бета-версии[/b].\n" +#~ "\n" +#~ "Вы можете столкнуться с ошибками и опечатками. У нас запланировано много " +#~ "улучшений и уроков.\n" +#~ "\n" +#~ "Если вы столкнулись с какой-либо проблемой, пожалуйста, используйте " +#~ "кнопку в правом верхнем углу, чтобы сообщить нам о ней.\n" +#~ "\n" +#~ "[b]Очень важно[/b]: мы будем использовать ваши отчеты и отзывы, чтобы " +#~ "улучшить приложение как для вас, так и для всех остальных." + +#~ msgid "Open Course Index" +#~ msgstr "Открыть содержание курса" + +#~ msgid "Quit" +#~ msgstr "Выход" diff --git a/i18n/ru/classref_database.po b/i18n/ru/classref_database.po new file mode 100644 index 00000000..c10b7cac --- /dev/null +++ b/i18n/ru/classref_database.po @@ -0,0 +1,185 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#. Reference: show +#: course/documentation.csv:2 +msgid "shows the current scene" +msgstr "показывает текущую сцену" + +#. Reference: hide +#: course/documentation.csv:3 +msgid "hides the current scene" +msgstr "скрывает текущую сцену" + +#. Reference: rotate +#: course/documentation.csv:4 +msgid "" +"Applies a rotation to the node, in radians, starting from its current " +"rotation." +msgstr "Поворачивает узел на указанное количество радианов." + +#. Reference: move_forward +#: course/documentation.csv:5 +msgid "Moves the turtle in the direction it's facing by some pixels." +msgstr "" +"Перемещает черепашку на несколько пикселей вперёд (туда, куда она смотрит)." + +#. Reference: turn_right +#: course/documentation.csv:6 +msgid "Rotates the turtle to the right by some degrees." +msgstr "Поворачивает черепашку вправо на несколько градусов." + +#. Reference: turn_left +#: course/documentation.csv:7 +msgid "Rotates the turtle to the left by some degrees." +msgstr "Поворачивает черепашку влево на несколько градусов." + +#. Reference: jump +#: course/documentation.csv:8 +msgid "Offsets the turtle's position by the given x and y amounts of pixels." +msgstr "Смещает положение черепашки на заданное x и y количество пикселей." + +#. Reference: draw_rectangle +#: course/documentation.csv:9 +msgid "Makes the turtle draw a rectangle starting at its current position." +msgstr "" +"Заставляет черепашку рисовать прямоугольник, начиная с текущей позиции." + +#. Reference: position.x +#: course/documentation.csv:10 +msgid "The position of the entity on the horizontal axis." +msgstr "Положение объекта на горизонтальной оси." + +#. Reference: position.y +#: course/documentation.csv:11 +msgid "The position of the entity on the vertical axis." +msgstr "Положение объекта на вертикальной оси." + +#. Reference: move_local_x +#: course/documentation.csv:12 +msgid "" +"Applies a local translation on the node's X axis based on the [code]Node." +"_process[/code]'s [code]delta[/code]. If [code]scaled[/code] is false, " +"normalizes the movement." +msgstr "" +"Перемещает узел по оси X с учётом значения [code]delta[/code] в [code]Node." +"_process[/code]. Если [code]scaled[/code] имеет значение false, нормализует " +"движение." + +#. Reference: board_size +#: course/documentation.csv:13 +msgid "" +"Stores how many cells make up the width ([code]board_size.x[/code]) and " +"height ([code]board_size.y[/code]) of the board." +msgstr "" +"Хранит размер доски в ячейках по ширине ([code]board_size.x[/code]) и высоте " +"([code]board_size.y[/code])." + +#. Reference: cell +#: course/documentation.csv:14 +msgid "" +"The cell position of the robot on the board. [code]Vector2(0, 0)[/code] is " +"the square cell in the top left of the board." +msgstr "" +"Положение ячейки с роботом на доске. [code]Vector2(0, 0)[/code] — это " +"квадратная ячейка в левом верхнем углу доски." + +#. Reference: range +#: course/documentation.csv:15 +msgid "" +"Creates a list of numbers from [code]0[/code] to [code]length - 1[/code]." +msgstr "Создает список чисел от [code]0[/code] до [code]length - 1[/code]." + +#. Reference: play_animation +#: course/documentation.csv:16 +msgid "Orders the robot to play an animation." +msgstr "Приказывает роботу воспроизвести анимацию." + +#. Reference: select_units +#: course/documentation.csv:17 +msgid "" +"Selects units in the cell coordinates passed as the function's argument." +msgstr "" +"Выбирает юнитов в ячейке, координаты которой равны координатам принятым в " +"аргументах функции." + +#. Reference: robot.move_to +#: course/documentation.csv:18 +msgid "Queues a move animation towards the target cell." +msgstr "Ставит в очередь анимацию движения к целевой ячейке." + +#. Reference: array.append +#: course/documentation.csv:19 +msgid "Adds the value passed as an argument at the back of the array." +msgstr "Добавляет значение, переданное в качестве аргумента, в конец массива." + +#. Reference: array.pop_front +#: course/documentation.csv:20 +msgid "Removes the first value from the array and returns it." +msgstr "Удаляет первое значение из массива и возвращает его." + +#. Reference: array.pop_back +#: course/documentation.csv:21 +msgid "Removes the last value from the array and returns it." +msgstr "Удаляет последнее значение из массива и возвращает его." + +#. Reference: str +#: course/documentation.csv:22 +msgid "" +"Returns the argument converted into a [code]String[/code]. Works with the " +"majority of value types." +msgstr "" +"Возвращает аргумент, преобразованный в строку [code]String[/code]. Работает " +"с большинством типов значений." + +#. Reference: int +#: course/documentation.csv:23 +msgid "" +"Returns the argument converted into an [code]int[/code] (whole number) [i]if " +"possible[/i]. Supports converting decimal numbers, strings, and booleans. " +"Useful to convert player text input into numbers." +msgstr "" +"Возвращает аргумент, преобразованный в [code]int[/code] (целое число) " +"[i]если такое преобразование возможно[/i]. Поддерживает преобразование " +"десятичных дробей, строк и логических значений. Полезно для преобразования " +"вводимого игроком текста в числа." + +#. Reference: place_unit +#: course/documentation.csv:24 +msgid "" +"Creates a new unit matching the type parameter and places it at the desired " +"cell position on the game grid." +msgstr "" +"Создает новый юнит, соответствующий параметру типа, и помещает его в нужную " +"ячейку игровой сетки." + +#. Reference: display_item +#: course/documentation.csv:25 +msgid "Creates a new item and displays it in the inventory." +msgstr "Создает новый предмет и отображает его в инвентаре." + +#. Reference: add_item +#: course/documentation.csv:26 +msgid "Increases the item count by amount." +msgstr "Увеличивает количество предметов на amount." diff --git a/i18n/ru/error_database.po b/i18n/ru/error_database.po new file mode 100644 index 00000000..ce7755ac --- /dev/null +++ b/i18n/ru/error_database.po @@ -0,0 +1,881 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#. Reference: IN_EXPECTED_AFTER_IDENTIFIER +#: script_checking/error_database.csv:40 +msgid "" +"You get this error when the name between the [code]for[/code] and [code]in[/" +"code] is not a valid variable name, or you are missing the [code]in[/code] " +"keyword.\n" +"\n" +"In a [code]for[/code] loop, the [code]in[/code] keyword only accepts a valid " +"temporary variable name to assign values in each loop iteration. The loop " +"creates a new variable with the desired name and assigns each element of the " +"array to it." +msgstr "" +"Эта ошибка возникает, когда имя между [code]for[/code] и [code]in[/code] не " +"является допустимым именем переменной или отсутствует ключевое слово " +"[code]in[/code].\n" +"\n" +"В цикле [code]for[/code] ключевое слово [code]in[/code] принимает только " +"допустимое имя временной переменной для присвоения значений на каждой " +"итерации цикла. Цикл создаёт новую переменную с выбранным именем и " +"присваивает ей каждый элемент массива." + +#. Reference: IN_EXPECTED_AFTER_IDENTIFIER +#: script_checking/error_database.csv:40 +msgid "" +"To fix this error, you need to ensure that the name between the [code]for[/" +"code] and [code]in[/code] keywords is a valid variable name with no " +"punctuation or spaces.\n" +"\n" +"For example, this code is invalid: [code]for cell_position.x in " +"cell_positions_array:[/code] because [code]cell_position.x[/code] isn't a " +"valid variable name.\n" +"\n" +"To access the [code]x[/code] sub-component of the variable, you need to do " +"that inside of the loop's body:\n" +"\n" +"[code]for cell_position in cell_positions_array:\n" +" cell_position.x += 1.0[/code]" +msgstr "" +"Чтобы исправить эту ошибку, вам необходимо убедиться, что имя между " +"ключевыми словами [code]for[/code] и [code]in[/code] является допустимым " +"именем переменной без знаков препинания и пробелов.\n" +"\n" +"Например, этот код недействителен: [code]for cell_position.x in " +"cell_positions_array:[/code], поскольку [code]cell_position.x[/code] не " +"является допустимым именем переменной.\n" +"\n" +"Чтобы получить доступ к подкомпоненту [code]x[/code] переменной, вам нужно " +"сделать это внутри тела цикла:\n" +"\n" +"[code]for cell_position in cell_positions_array:\n" +" cell_position.x += 1.0[/code]" + +#. Reference: ASSIGNING_TO_EXPRESSION +#: script_checking/error_database.csv:47 +msgid "" +"If you get this error, you are most likely trying to assign a value to " +"something other than a variable, which is impossible. You can only assign " +"values to variables.\n" +"\n" +"Another possibility is that you want to check for equality in a condition " +"but wrote a single = instead of ==." +msgstr "" +"Если вы получаете эту ошибку, вы, скорее всего, пытаетесь присвоить значение " +"чему-то другому, кроме переменной, что невозможно. Вы можете присваивать " +"значения только переменным.\n" +"\n" +"Другой случай заключается в том, что вы хотите проверить равенство условия, " +"но написали один символ = вместо ==." + +#. Reference: ASSIGNING_TO_EXPRESSION +#: script_checking/error_database.csv:47 +msgid "" +"If you want to assign a value to a variable, double-check that what you have " +"on the left side of the = sign is a variable and not a function.\n" +"\n" +"You also need to ensure the syntax is correct. For example, there shouldn't " +"be parentheses on the left side of the equal sign.\n" +"\n" +"In the case of a condition, ensure that you are using two equal signs to " +"check for equality (==)." +msgstr "" +"Если вы хотите присвоить значение переменной, дважды проверьте, что слева от " +"знака = находится переменная, а не функция.\n" +"\n" +"Вам также необходимо убедиться в правильности синтаксиса. Например, слева от " +"знака равенства не должно быть круглых скобок.\n" +"\n" +"В случае условия убедитесь, что вы используете два знака равенства для " +"проверки равенства (==)." + +#. Reference: CYCLIC_REFERENCE +#: script_checking/error_database.csv:57 +msgid "" +"A cyclic reference is when a class references itself, directly or " +"indirectly.\n" +"\n" +"It has two possible causes:\n" +"\n" +"1. You used the class name in the class itself.\n" +"2. Your code refers to another class that refers to this class, causing an " +"endless reference cycle.\n" +"\n" +"Either way, due to how GDScript works in Godot 3, unfortunately,you cannot " +"do this. Godot 4 should solve this problem, but you need to work around it " +"in the meantime." +msgstr "" +"Циклическая ссылка — это когда класс прямо или косвенно ссылается сам на " +"себя.\n" +"\n" +"У циклической ссылки есть две возможные причины:\n" +"\n" +"1. Вы использовали имя класса в самом классе.\n" +"2. Ваш код ссылается на другой класс, который ссылается на этот класс, " +"вызывая бесконечный цикл ссылок.\n" +"\n" +"В любом случае, по внутренним правилам GDScript в Godot 3, использовать " +"циклические ссылки нельзя. Godot 4 должен решить эту проблему, но пока вам " +"нужно её обойти." + +#. Reference: CYCLIC_REFERENCE +#: script_checking/error_database.csv:57 +msgid "" +"Erase the type hint in the error line, and the problem should disappear. \n" +"\n" +"At GDQuest, when we face this error, we remove the type hints on lines " +"causing cyclic references. It solves the problem in the vast majority of " +"cases." +msgstr "" +"Сотрите обозначение типа переменной в строке с ошибкой, и проблема должна " +"исчезнуть. \n" +"\n" +"В GDQuest, когда мы сталкиваемся с этой ошибкой, мы удаляем обозначения " +"типов переменных в строках, вызывающих циклические ссылки. Это решает " +"проблему в подавляющем большинстве случаев." + +#. Reference: INVALID_INDENTATION +#: script_checking/error_database.csv:64 +msgid "" +"The indentation of your code (the number of tab characters at the start of " +"the line) is incorrect.\n" +"\n" +"You are missing one or more tabs, or you inserted too many.\n" +"\n" +"The computer uses those leading tab characters on code lines to know which " +"lines of code are part of a code block, like a function." +msgstr "" +"Отступы в вашем коде (количество символов табуляции в начале строки) " +"неверны.\n" +"\n" +"Вам не хватает одной или нескольких табуляций, или вы вставили их слишком " +"много.\n" +"\n" +"Компьютер использует эти символы, чтобы распознать, к какому блоку, например " +"функции, относятся строки кода." + +#. Reference: INVALID_INDENTATION +#: script_checking/error_database.csv:64 +msgid "" +"If the line of code with the error is right after a line ending with a " +"colon, like a function definition, you need one extra indent level compared " +"to the previous line.\n" +"\n" +"In other words, your line should have one more leading tab character than " +"the function definition." +msgstr "" +"Если строка кода с ошибкой находится сразу после строки, заканчивающейся " +"двоеточием, как в определении функции, вам нужно поставить код в строке на " +"следующий уровень отступа по сравнению с предыдущей строкой.\n" +"\n" +"Другими словами, в начале вашей строки должно быть на один символ табуляции " +"больше, чем в определении функции." + +#. Reference: UNEXPECTED_CHARACTER +#: script_checking/error_database.csv:73 +msgid "" +"You get this error when you wrote something that is syntactically invalid, " +"or you are missing something to complete this line or previous lines of " +"code.\n" +"\n" +"You need to be extremely precise when you write code for the computer. This " +"kind of error is easy to get as all it takes is one wrong character.\n" +"\n" +"Note that this error can appear [b]after[/b] the line causing it due to how " +"the computer reads and analyzes your code." +msgstr "" +"Вы получаете эту ошибку, когда написали что-то синтаксически недопустимое " +"или вам чего-то не хватает для завершения этой строки или предыдущих строк " +"кода.\n" +"\n" +"Вам нужно быть предельно точным, когда вы пишете код для компьютера. Такую " +"ошибку легко получить, так как для к ней приводит всего один неправильный " +"символ.\n" +"\n" +"Обратите внимание, что данная ошибка может появиться [b]после[/b] строки, " +"вызывающей ее, из-за особенностей того, как компьютер считывает и " +"анализирует ваш код." + +#. Reference: UNEXPECTED_CHARACTER +#: script_checking/error_database.csv:73 +msgid "" +"The way to solve this kind of error is highly contextual. The error message " +"should tell you which character or element it's missing.\n" +"\n" +"If the error says \"expected,\" then you're likely missing something in one " +"of the [b]previous[/b] code lines. It could be a punctuation mark, a " +"parenthesis, or something else.\n" +"\n" +"If it says \"unterminated,\" you are missing some character at the end of an " +"expression, like a closing bracket. In this case, it most likely comes from " +"the line with the error." +msgstr "" +"Способ устранения такого рода ошибок в значительной степени зависит от " +"контекста. В сообщении об ошибке должно быть указано, какой символ или " +"элемент отсутствует.\n" +"\n" +"Если в сообщении об ошибке написано «ожидается» (\"expected\"), скорее " +"всего, вы что-то упустили в одной из [b]предыдущих[/b] строк кода. Это может " +"быть знак препинания, скобка или что-то еще.\n" +"\n" +"Если в сообщении написано «незавершенный» (\"unterminated\"), значит вам не " +"хватает какого-то символа в конце выражения, например, закрывающей скобки. В " +"данном случае проблема скорее всего исходит из строки с ошибкой." + +#. Reference: UNEXPECTED_CHARACTER_IN_KEYWORD +#: script_checking/error_database.csv:76 +msgid "" +"This error tells you that you are missing a parenthesis (or sometimes a " +"comma or a path).\n" +"\n" +"Three keywords in GDScript work like function calls and require parentheses: " +"[code]yield()[/code], [code]preload()[/code], and [code]assert()[/code]." +msgstr "" +"Данная ошибка говорит вам о том, что у вас отсутствует скобка (иногда — " +"запятая или путь).\n" +"\n" +"Три ключевых слова в GDScript работают как вызовы функций и требуют круглых " +"скобок: [code]yield()[/code], [code]preload()[/code] и [code]assert()[/code]." + +#. Reference: UNEXPECTED_CHARACTER_IN_KEYWORD +#: script_checking/error_database.csv:76 +msgid "" +"To address the error, you want to add the missing opening parenthesis, the " +"closing parenthesis, or the comma." +msgstr "" +"Чтобы устранить ошибку, вам необходимо добавить отсутствующую открывающую " +"круглую скобку, закрывающую круглую скобку или запятую." + +#. Reference: UNEXPECTED_CHARACTER_IN_EXPORT_HINT +#: script_checking/error_database.csv:77 +msgid "" +"This error tells you you are missing some parenthesis, a comma, or some " +"value in your export hint." +msgstr "" +"Данная ошибка говорит вам о том, что в вашем описании параметров экспорта " +"переменной отсутствуют какие-то круглые скобки, запятая или какое-то " +"значение." + +#. Reference: UNEXPECTED_CHARACTER_IN_EXPORT_HINT +#: script_checking/error_database.csv:77 +msgid "" +"You need to read the error message and add the missing character or value it " +"requests." +msgstr "" +"Вам нужно прочитать сообщение об ошибке и добавить отсутствующий символ или " +"значение, которое оно запрашивает." + +#. Reference: MISPLACED_IDENTIFIER +#: script_checking/error_database.csv:86 +msgid "" +"This error happens in several cases:\n" +"\n" +"1. You wrote an identifier (variable or function name) in the wrong place.\n" +"2. You wrote a keyword like [code]var[/code], [code]func[/code], [code]for[/" +"code], or [code]signal[/code], and you did not follow it by a name.\n" +"3. You wrote a function definition but forgot the parentheses before the " +"colon." +msgstr "" +"Эта ошибка возникает в нескольких случаях:\n" +"\n" +"1. Вы написали идентификатор (имя переменной или функции) в неправильном " +"месте.\n" +"2. Вы написали ключевое слово типа [code]var[/code], [code]func[/code], " +"[code]for[/code] или [code]signal[/code], но не написали имя после него.\n" +"3. Вы написали определение функции, но забыли поставить круглые скобки перед " +"двоеточием." + +#. Reference: MISPLACED_IDENTIFIER +#: script_checking/error_database.csv:86 +msgid "" +"If the error tells you it expected something, you likely forgot to write a " +"name after a keyword like [code]var[/code], [code]func[/code], [code]for[/" +"code], or [code]signal[/code], making your code invalid. Or you forgot " +"parentheses in a function definition. You can address the error by adding " +"the missing name or parentheses.\n" +"\n" +"If the error says you have something unexpected, you are likely missing a " +"keyword like [code]var[/code], [code]func[/code], [code]for[/code], etc.\n" +"\n" +"Another possibility is that you need to write a colon at the end of a " +"function definition, [code]for[/code] loop, or a line starting with " +"[code]if[/code], [code]elif[/code], or [code]else[/code]." +msgstr "" +"Если если в тексте ошибки сказано, что что-то ожидалось (expected), то вы, " +"скорее всего, забыли написать имя после ключевого слова, такого как " +"[code]var[/code], [code]func[/code], [code]for[/code] или [code]signal[/" +"code], что делает ваш код нерабочим, либо вы забыли круглые скобки в " +"определении функции. Вы можете устранить ошибку, добавив отсутствующее имя " +"или круглые скобки.\n" +"\n" +"Если в ошибке сказано, что в коде есть что-то неожиданное (unexpected), " +"вероятно, где-то не хватает ключевого слова, такого как [code]var[/code], " +"[code]func[/code], [code]for[/code] и т.п.\n" +"\n" +"Другая причина может быть в том, что вам нужно написать двоеточие в конце " +"определения функции, цикла [code]for[/code] или строки, начинающейся с " +"[code]if[/code], [code]elif[/code] или [code]else[/code]." + +#. Reference: MISPLACED_TYPE_IDENTIFIER +#: script_checking/error_database.csv:91 +msgid "" +"This error tells you that you are missing a type somewhere. A type can be " +"[code]int[/code], [code]float[/code], [code]String[/code], [code]Array[/" +"code], [code]Vector2[/code], and many identifiers representing a data " +"structure.\n" +"\n" +"Most of the time, this error occurs when you wrote a colon after a variable " +"name but did not follow it with a type name.\n" +"\n" +"It also occurs when you write an arrow ([code]->[/code]) after the " +"parentheses of a function definition but do not follow it with a type name." +msgstr "" +"Эта ошибка говорит о том, что где-то вы упустили определение типа. Тип может " +"быть представлен [code]int[/code], [code]float[/code], [code]String[/code], " +"[code]Array[/code], [code]Vector2[/code] и другими идентификаторами, " +"представляющими структуру данных.\n" +"\n" +"В большинстве случаев данная ошибка возникает, когда вы написали двоеточие " +"после имени переменной, но не указали за ним имя типа.\n" +"\n" +"Также, такое происходит, когда вы пишете стрелку ([code]->[/code]) после " +"круглых скобок определения функции, но не указываете имя типа после неё." + +#. Reference: MISPLACED_TYPE_IDENTIFIER +#: script_checking/error_database.csv:91 +msgid "" +"To solve this, you need to write the name of the type after the colon, arrow " +"(in the case of function return types), inside parentheses (for export " +"types), or after the [code]as[/code] keyword." +msgstr "" +"Чтобы решить эту проблему, вам нужно написать имя типа после двоеточия, " +"стрелки (в случае типов, возвращаемых функцией), внутри круглых скобок (для " +"типов экспорта) или после ключевого слова [code]as[/code]." + +#. Reference: NONEXISTENT_IDENTIFIER +#: script_checking/error_database.csv:100 +msgid "" +"The variable, function name, or class name you are trying to use does not " +"exist.\n" +"\n" +"You most often get this error when you make typos. Maybe you swapped two " +"letters, forgot a letter... sometimes, it's hard to spot.\n" +"\n" +"The other cause for this error is that you didn't define the variable, " +"function, or class you're trying to access." +msgstr "" +"Переменная, имя функции или имя класса, которое вы пытаетесь использовать — " +"не существует.\n" +"\n" +"Чаще всего вы получаете эту ошибку, когда делаете опечатки. Может быть, вы " +"поменяли местами две буквы, забыли букву... иногда это трудно заметить.\n" +"\n" +"Другая причина этой ошибки в том, что вы не определили переменную, функцию " +"или класс, к которым пытаетесь получить доступ." + +#. Reference: NONEXISTENT_IDENTIFIER +#: script_checking/error_database.csv:100 +msgid "" +"To solve this error, triple-check that there is no typo in the line.\n" +"\n" +"If you can, try to go to the variable or function definition, double-click " +"the name, copy it, and paste it where you see the error.\n" +"\n" +"If you don't see any typo, then you need to ensure that you defined the " +"variable, function, or class you are referring to." +msgstr "" +"Чтобы устранить эту ошибку, внимательно проверьте, нет ли в строке " +"опечатки.\n" +"\n" +"Если можете, попробуйте перейти к определению переменной или функции, дважды " +"щелкните по имени, скопируйте его и вставьте туда, где вы видите ошибку.\n" +"\n" +"Если вы не видите никаких опечаток, то вам необходимо убедиться, что вы " +"определили переменную, функцию или класс, на который ссылаетесь." + +#. Reference: MISPLACED_KEYWORD +#: script_checking/error_database.csv:105 +msgid "" +"You can only use keywords like [code]break[/code] or [code]continue[/code] " +"in a loop. Outside a loop, they are invalid.\n" +"\n" +"The [code]continue[/code] keyword means \"jump to the next iteration of the " +"loop.\" And the [code]break[/code] keyword means \"end the loop right now " +"and jump to the first line of code after the loop block." +msgstr "" +"Такие ключевые слова как [code]break[/code] или [code]continue[/code] можно " +"использовать только в цикле. Вне цикла они недопустимы.\n" +"\n" +"Ключевое слово [code]continue[/code] означает «перейти к следующей итерации " +"цикла». А ключевое слово [code]break[/code] означает «закончить цикл прямо " +"сейчас и перейти к первой строке кода после блока цикла»." + +#. Reference: MISPLACED_KEYWORD +#: script_checking/error_database.csv:105 +msgid "" +"If you wrote one of these keywords outside a loop, you need to remove it.\n" +"\n" +"If you are trying to use it inside a loop, your indentation is most likely " +"at fault. You may need to insert one or more leading tab characters to the " +"keyword." +msgstr "" +"Если вы написали одно из этих ключевых слов вне цикла, вам нужно удалить это " +"слово.\n" +"\n" +"Если вы пытаетесь использовать ключевое слово внутри цикла, скорее всего, " +"строка имеет неправильный отступ. Возможно, вам нужно вставить один или " +"несколько символов табуляции перед ключевым словом." + +#. Reference: EXPECTED_CONSTANT_EXPRESSION +#: script_checking/error_database.csv:110 +msgid "" +"When the computer talks about a constant expression, it expects a fixed " +"value, a fixed calculation, or the name of an existing constant.\n" +"\n" +"In other words, it wants something that can never change. This is why the " +"computer will reject function calls and variables where it needs a constant " +"expression." +msgstr "" +"Когда компьютер говорит о постоянном выражении (constant expression), он " +"ожидает фиксированное значение, фиксированное вычисление или имя " +"существующей константы.\n" +"\n" +"Другими словами, он хочет чего-то, что никогда изменится. Вот почему " +"компьютер будет отклонять вызовы функций и переменных там, где ему требуется " +"постоянное выражение." + +#. Reference: EXPECTED_CONSTANT_EXPRESSION +#: script_checking/error_database.csv:110 +msgid "" +"You need to replace function calls or variables with a constant value like a " +"whole number, decimal number, string, vector, a predefined array, etc.\n" +"\n" +"You can also use arithmetic operators like multiplications (*), additions " +"(+), and so on." +msgstr "" +"Вам нужно заменить вызовы функций или переменные константным значением, " +"например целым числом, десятичной дробью, строкой, вектором, " +"предопределенным массивом и т.д.\n" +"\n" +"Вы также можете использовать арифметические операторы, такие как умножение " +"(*), сложение (+) и так далее." + +#. Reference: INVALID_CLASS_DECLARATION +#: script_checking/error_database.csv:115 +msgid "" +"When defining a new class, you need to follow a specific pattern. You must " +"write the name in plain text, starting with a letter.\n" +"\n" +"We typically write class names in PascalCase: with a capital letter at the " +"start of every word that composes the class name." +msgstr "" +"При определении нового класса вам необходимо следовать определенному " +"шаблону. Вы должны написать имя обычным текстом, начиная с буквы.\n" +"\n" +"Обычно мы пишем имена классов в стиле PascalCase: с заглавной буквы в начале " +"каждого слова, составляющего имя класса." + +#. Reference: INVALID_CLASS_DECLARATION +#: script_checking/error_database.csv:115 +msgid "" +"To fix this error, replace whatever you put after the 'extends' or " +"'class_name' keyword by a name without spaces and starting with a capital " +"letter.\n" +"\n" +"You can optionally use numbers in the name, but not in the first position." +msgstr "" +"Чтобы исправить эту ошибку, замените всё, что вы поместили после ключевых " +"слов «extends» или «class_name» именем без пробелов, начинающимся с " +"заглавной буквы.\n" +"\n" +"По желанию вы можете использовать цифры в имени, но не в качестве первого " +"символа." + +#. Reference: DUPLICATE_DECLARATION +#: script_checking/error_database.csv:120 +msgid "" +"You are trying to define a function or variable that already exists; You " +"can't do that.\n" +"\n" +"Perhaps the function or variable already exists in the current code file, " +"but it may also be in a parent class that this GDScript code extends." +msgstr "" +"Вы пытаетесь определить функцию или переменную, которая уже существует. " +"Этого делать нельзя.\n" +"\n" +"Возможно, функция или переменная уже существует в текущем файле кода, либо в " +"родительском классе, от которого унаследован текущий файл." + +#. Reference: DUPLICATE_DECLARATION +#: script_checking/error_database.csv:120 +msgid "" +"In the app, your code extends some built-in Godot code that's not visible to " +"you.\n" +"\n" +"When that happens, you need to either rename your function or variable to " +"one that will not collide with an existing one or remove this line of code." +msgstr "" +"В приложении ваш код наследует некоторый встроенный код Godot, который вам " +"не виден.\n" +"\n" +"Для исправления ошибки вам нужно либо переименовать свою функцию или " +"переменную так, чтобы она не конфликтовала с уже существующей, либо удалить " +"эту строку кода." + +#. Reference: DUPLICATE_SIGNAL_DECLARATION +#: script_checking/error_database.csv:125 +msgid "" +"You are trying to define a signal that already exists; You can't do that.\n" +"\n" +"Perhaps the signal already exists in the current code file, but it may also " +"be in a parent class that this GDScript code extends." +msgstr "" +"Вы пытаетесь определить сигнал, который уже существует; Этого делать " +"нельзя.\n" +"\n" +"Возможно, сигнал уже существует в текущем файле кода, либо в родительском " +"классе, от которого унаследован текущий файл." + +#. Reference: DUPLICATE_SIGNAL_DECLARATION +#: script_checking/error_database.csv:125 +msgid "" +"In the app, your code extends some built-in Godot code that's not visible to " +"you.\n" +"\n" +"When that happens, you need to either rename your signal to one that will " +"not collide with an existing one or remove this line of code." +msgstr "" +"В приложении ваш код расширяет некоторый встроенный код Godot, который вам " +"не виден.\n" +"\n" +"Для исправления ошибки вам нужно либо переименовать свой сигнал так, чтобы " +"он не конфликтовал с уже существующим, либо удалить эту строку кода." + +#. Reference: SIGNATURE_MISMATCH +#: script_checking/error_database.csv:130 +msgid "" +"The function you're trying to define exists in a parent class, so your " +"definition overrides the parent class's function.\n" +"\n" +"When you override a parent class's function, the new function must match the " +"parent. The new function should have the same number and type of parameters " +"as the parent class.\n" +"\n" +"For example, if the parent has two arguments, you need your new function " +"also to have two arguments. If you use type hints in your function " +"definitions, the argument types must match the parent class." +msgstr "" +"Функция, которую вы пытаетесь определить, существует в родительском классе, " +"поэтому ваше определение переопределяет функцию родительского класса.\n" +"\n" +"Когда вы переопределяете функцию родительского класса, сигнатура новой " +"функции должна соответствовать сигнатуре родительской. Это значит что " +"количество и типы параметров, в ней должны быть такими же, как и в функции " +"родительского класса.\n" +"\n" +"Например, если родительский элемент имеет два аргумента, вам нужно, чтобы " +"ваша новая функция также имела два аргумента. Если вы используете " +"обозначения типов переменных в определениях функций, типы аргументов должны " +"соответствовать типам в родительском классе." + +#. Reference: SIGNATURE_MISMATCH +#: script_checking/error_database.csv:130 +msgid "" +"You need to check the parent class's function and its definition in the code " +"reference. Then, you need to edit your function definition to have the same " +"number and type of parameters as the parent class." +msgstr "" +"Вам необходимо ознакомиться с функцией родительского класса и её " +"определением в справочнике по коду. Затем вам нужно отредактировать " +"определение вашей функции, чтобы количество и типы параметров были такими же " +"как в родительском классе." + +#. Reference: INVALID_ARGUMENTS +#: script_checking/error_database.csv:131 +msgid "" +"This whole class of errors has to do with calling functions with either the " +"wrong number of arguments or the wrong kind of argument. You will need to " +"use the error message to see what is going wrong." +msgstr "" +"Ошибки этого класса возникают при вызове функций с неправильным количеством " +"аргументов, либо с аргументами неправильных типов. Вам нужно будет " +"воспользоваться сообщением об ошибке, чтобы понять, что пошло не так." + +#. Reference: INVALID_ARGUMENTS +#: script_checking/error_database.csv:131 +msgid "" +"You need to either remove, add, or change the values you're trying to pass " +"to the function to solve this issue. To know exactly how many arguments you " +"need, you need to check the code reference. It will show you the function " +"definition and the mandatory arguments." +msgstr "" +"Чтобы решить эту проблему вам нужно удалить, добавить, либо изменить " +"значения, которые вы пытаетесь передать функции. Информацию о том, какие " +"аргументы принимает функция, можно найти в справочнике по коду. В нём вы " +"увидите определение функции и обязательные аргументы." + +#. Reference: TYPE_MISMATCH +#: script_checking/error_database.csv:142 +msgid "" +"All the values in your code have a specific type. That type can be a whole " +"number (int), a decimal number (float), text (String), and so on. There are " +"tons of possible types, and you can even define your own!\n" +"\n" +"When you make any operation, the computer compares the types you are using.\n" +"\n" +"Some types are compatible, and some are not. For example, you cannot " +"directly add a whole number to a text string. You first need to convert the " +"number into text.\n" +"\n" +"You'll need to read the error message to see what is not matching because " +"there are many possible cases." +msgstr "" +"Все значения в вашем коде имеют определенный тип. Этот тип может быть целым " +"числом (int), десятичной дробью (float), текстом (String) и так далее. " +"Существует множество возможных типов, и вы даже можете определить свой " +"собственный!\n" +"\n" +"Когда вы выполняете какую-либо операцию, компьютер сравнивает используемые " +"вами типы.\n" +"\n" +"Некоторые типы совместимы, а некоторые — нет. Например, вы не можете " +"напрямую добавить целое число в текстовую строку. Сначала вам нужно " +"преобразовать число в текст.\n" +"\n" +"Текст сообщения об ошибке точно покажет вам, какие именно типы не " +"соответствует друг другу, так как ошибка может возникнуть во многих случаях." + +#. Reference: TYPE_MISMATCH +#: script_checking/error_database.csv:142 +msgid "" +"If the error mentions the assigned value type not matching the variable, the " +"problem is on the right side of the equal sign (=).\n" +"\n" +"If the error talks about the return type not matching the function, then it " +"is the value after the return keyword that is problematic.\n" +"\n" +"If the computer talks about an invalid operand, then the issue is that the " +"operation does not exist for the type you're trying to use. For example, " +"while you can add two 2D vectors, you can't add a whole number or text to a " +"2D vector." +msgstr "" +"Если в ошибке говорится о том, что тип присваиваемого значения не " +"соответствует типу переменной, проблема находится справа от знака равенства " +"(=).\n" +"\n" +"Если ошибка говорит о том, что тип возвращаемого значения не соответствует " +"возвращаемому типу функции — проблема в значении после ключевого слова " +"return.\n" +"\n" +"Если компьютер говорит о недопустимом операнде — проблема в том, что " +"операция неприменима для типа, который вы пытаетесь использовать. Например, " +"хотя вы и можете сложить два 2D-вектора, вы не можете прибавить целое число " +"или текст к 2D-вектору." + +#. Reference: TYPE_CANNOT_BE_INFERRED +#: script_checking/error_database.csv:147 +msgid "" +"GDScript supports type inference. The computer will automatically recognize " +"the type of value you are working with. In some cases, though, it can't " +"figure it out.\n" +"\n" +"When that happens, you need to specify the type yourself or remove type " +"inference altogether for this variable." +msgstr "" +"GDScript поддерживает автоматическое определение типа. Компьютер " +"автоматически распознает тип значения, с которым вы работаете, однако в " +"некоторых случаях он не может этого сделать.\n" +"\n" +"В таких ситуациях, вам нужно указать тип самостоятельно или вообще убрать " +"автоопределение типа для этой переменной." + +#. Reference: TYPE_CANNOT_BE_INFERRED +#: script_checking/error_database.csv:147 +msgid "" +"The simplest way to solve this error is to remove types for this variable or " +"this function's arguments. Otherwise, you can manually specify the value " +"type after the colon.\n" +"\n" +"We recommend specifying the type whenever possible to reap the typing " +"system's benefits." +msgstr "" +"Самый простой способ устранить эту ошибку — удалить типы для этой переменной " +"или аргументов этой функции. Также вы можете вручную указать тип значения " +"после двоеточия.\n" +"\n" +"Мы рекомендуем указывать тип всякий раз, когда это возможно, чтобы получить " +"возможность использовать преимущества системы типизации." + +#. Reference: RETURN_VALUE_MISMATCH +#: script_checking/error_database.csv:153 +msgid "" +"There is an issue with the return value of your function. There are two main " +"cases here:\n" +"\n" +"1. Your function is a void function, thus it should not return a value. This " +"includes functions with the '-> void' syntax and class constructors " +"('_init()').\n" +"2. You specified a return type for your function, but you are not returning " +"a value in all possible branches (if, elif, and else blocks) or at the end." +msgstr "" +"Возникла проблема с возвращаемым значением вашей функции. Она возникает в " +"двух случаях:\n" +"\n" +"1. Тип возвращаемого значения вашей функции — void, поэтому она не может " +"возвращать значение. Сюда входят функции с синтаксисом «-> void» и " +"конструкторы классов («_init()»).\n" +"2. Вы указали тип возвращаемого значения для своей функции, но возвращаете " +"значение не во всех возможных ветвях (блоки if, elif и else, или конец " +"функции)." + +#. Reference: RETURN_VALUE_MISMATCH +#: script_checking/error_database.csv:153 +msgid "" +"When your function is 'void', you should never return a value. You can use " +"the 'return' keyword to end the function early, but you should never write " +"anything after that.\n" +"\n" +"When you use a return type, you must always return something at the end of " +"the function or in every branch (if, elif, and else block) of the function." +msgstr "" +"Когда тип возвращаемого значения вашей функции — «void», вы не должны " +"возвращать значение. Вы можете использовать ключевое слово «return», для " +"досрочного завершения функции, но писать что-либо после этого ключевого " +"слова не следует.\n" +"\n" +"Когда вы используете возвращаемый тип, вы всегда должны возвращать что-то в " +"конце функции или в каждой ветви (блоки if, elif и else) функции." + +#. Reference: INVALID_NO_CATCH +#: script_checking/error_database.csv:154 +msgid "" +"Godot was unable to load your script, yet the language checker found nothing " +"wrong." +msgstr "" +"Godot не удалось загрузить ваш скрипт, однако инструмент проверки кода " +"проблем не обнаружил." + +#. Reference: INVALID_NO_CATCH +#: script_checking/error_database.csv:154 +msgid "" +"Please click on the \"report\" button at the top and please let us know." +msgstr "" +"Пожалуйста, нажмите на кнопку «сообщить об ошибке» вверху, чтобы оповестить " +"нас о наличии проблемы." + +#. Reference: RECURSIVE_FUNCTION +#: script_checking/error_database.csv:155 +msgid "You called a function inside itself. This will loop forever." +msgstr "" +"Вы вызвали функцию внутри самой себя. Вызов зациклится и будет повторяться " +"вечно." + +#. Reference: RECURSIVE_FUNCTION +#: script_checking/error_database.csv:155 +msgid "" +"There are valid reasons for using recursive functions, but none of them are " +"part of this course, so this cannot be a valid solution." +msgstr "" +"Существуют веские причины для использования рекурсивных функций, но ни одна " +"из них не является частью этого курса, поэтому использование рекурсии не " +"может быть правильным решением." + +#. Reference: UNEXPECTED_EOL +#: script_checking/error_database.csv:157 +msgid "" +"The computer reached the end of the line of code, but the line had a syntax " +"error.\n" +"The most common case is when you forget to close a string: you have opening " +"quotes, but you forget to add a matching closing quote." +msgstr "" +"Компьютер достиг конца строки кода, но в этой строке была синтаксическая " +"ошибка.\n" +"Наиболее распространенный случай — когда вы забыли закрыть строку: у вас " +"есть открывающие кавычки, но вы забыли добавить соответствующую закрывающую " +"кавычку." + +#. Reference: UNEXPECTED_EOL +#: script_checking/error_database.csv:157 +msgid "" +"Double-check that you are not missing a quote character or that the quote " +"character you used to start the string is the same as the one you used to " +"close the string." +msgstr "" +"Дважды проверьте, не пропущен ли символ кавычки или что символ кавычки, " +"который вы использовали для начала строки, совпадает с тем, который вы " +"использовали для закрытия строки." + +#. Reference: CANT_GET_INDEX +#: script_checking/error_database.csv:160 +msgid "The sub-variable you are trying to access does not exist." +msgstr "Подпеременная, к которой вы пытаетесь получить доступ, не существует." + +#. Reference: CANT_GET_INDEX +#: script_checking/error_database.csv:160 +msgid "" +"You probably have a typo in the name of the sub-variable that you are trying " +"to access.\n" +"\n" +"Ensure that you don't have a capital letter where you should have a " +"lowercase letter and vice versa." +msgstr "" +"Вероятно, у вас опечатка в названии подпеременной, к которой вы пытаетесь " +"получить доступ.\n" +"\n" +"Убедитесь, что у вас нет заглавной буквы там, где должна быть строчная, и " +"наоборот." + +#~ msgid "" +#~ "The server or your computer may currently be disconnected. Also, an app " +#~ "or browser add-on may be blocking the connection. If you use an ad " +#~ "blocker or script blocker, please disable it for this website." +#~ msgstr "" +#~ "Наш сервер или ваш компьютер в данный момент, возможно, отключены от " +#~ "сети. Так же, приложение или надстройка браузера могут блокировать " +#~ "соединение. Если вы используете блокировщик рекламы или блокировщик " +#~ "скриптов, пожалуйста, отключите его для этого веб-сайта." + +#~ msgid "" +#~ "Please make sure you're connected to the internet. If you use an ad " +#~ "blocker or script blocker, please ensure it is turned off on this page." +#~ msgstr "" +#~ "Пожалуйста, убедитесь, что вы подключены к Интернету. Если вы используете " +#~ "блокировщик рекламы или блокировщик скриптов, пожалуйста, убедитесь, что " +#~ "он отключен на этой странице." + +#~ msgid "" +#~ "Either your connection is very slow, or the Language Verifier server is " +#~ "under load" +#~ msgstr "" +#~ "Либо ваше соединение очень медленное, либо сервер проверки языка " +#~ "перегружен запросами." + +#~ msgid "" +#~ "Please try again, and if it happens again, warn us with the \"report\" " +#~ "button at the top. Thank you!" +#~ msgstr "" +#~ "Пожалуйста, попробуйте еще раз, и если проблема повторится, предупредите " +#~ "нас с помощью кнопки «сообщить» вверху. Спасибо!" diff --git a/i18n/ru/glossary_database.po b/i18n/ru/glossary_database.po new file mode 100644 index 00000000..71b03310 --- /dev/null +++ b/i18n/ru/glossary_database.po @@ -0,0 +1,644 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2022-10-20 21:32+0700\n" +"Last-Translator: degradka \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Poedit 3.1.1\n" +"Generated-By: Babel 2.9.1\n" + +#. Reference: member function +#: course/glossary.csv:6 +msgid "member function" +msgstr "функция-член" + +#. Reference: member function +#: course/glossary.csv:6 +msgid "member functions" +msgstr "функции-члены" + +#. Reference: member function +#: course/glossary.csv:6 +msgid "" +"Member functions are functions attached to a specific value type, like " +"arrays, strings, or dictionaries. We also call them methods.\n" +"\n" +"For example, arrays have member functions like [code]array.append()[/code].\n" +"\n" +"You can only call the function on an array, using the access operator " +"([code].[/code]) to access it, as shown above." +msgstr "" +"Функции-члены — это функции, привязанные к определенному типу значений, " +"например массивам, строкам или словарям. Мы также называем их методами.\n" +"\n" +"Например, у массивов есть функция-член [code]array.append()[/code].\n" +"\n" +"Вы можете вызвать функцию только для массива, используя оператор доступа к " +"членам ([code].[/code]), как показано выше." + +#. Reference: member variable +#: course/glossary.csv:9 +msgid "member variable" +msgstr "переменная-член" + +#. Reference: member variable +#: course/glossary.csv:9 +msgid "member variables" +msgstr "переменные-члены" + +#. Reference: member variable +#: course/glossary.csv:9 +msgid "" +"Member variables are variables attached to a specific value type, like a " +"vector's [code]x[/code] and [code]y[/code] sub-variables. We also call them " +"[i]properties[/i] or [i]fields[/i] of the vector.\n" +"\n" +"To access a member variable, you must first write the value's name followed " +"by the access operator ([code].[/code]). For example, [code]position.x[/" +"code]." +msgstr "" +"Переменные-члены — это переменные, привязанные к определенному типу " +"значения, например, у вектора есть вложенные переменные [code]x[/code] и " +"[code]y[/code]. Мы также называем их [i]свойствами[/i] или [i]полями[/i] " +"вектора.\n" +"\n" +"Чтобы получить доступ к переменной-члену, вы должны записать имя значения, а " +"затем оператор доступа ([code].[/code]). Например, [code]position.x[/code]." + +#. Reference: parameter +#: course/glossary.csv:12 +msgid "parameter" +msgstr "параметр" + +#. Reference: parameter +#: course/glossary.csv:12 +msgid "parameters" +msgstr "параметры" + +#. Reference: parameter +#: course/glossary.csv:12 +msgid "" +"A parameter is a variable you create as part of a function definition.\n" +"\n" +"It allows you to reuse the function more by having values that vary in the " +"function's body." +msgstr "" +"Параметр — это переменная, которую вы создаете как часть определения " +"функции.\n" +"\n" +"Он позволяет вам повторно использовать функцию, подставляя в её тело " +"различные значения." + +#. Reference: radian +#: course/glossary.csv:17 +msgid "radian" +msgstr "радиан" + +#. Reference: radian +#: course/glossary.csv:17 +msgid "radians" +msgstr "радианы" + +#. Reference: radian +#: course/glossary.csv:17 +msgid "" +"A radian is a unit of measurement of angles based on the circle's " +"circumference.\n" +"\n" +"We tend to use degrees more in our daily lives, but in computer programming, " +"and especially in games, radians are common.\n" +"\n" +"An angle of [code]2 * PI[/code] radians corresponds to 360 degrees. And an " +"angle of [code]PI[/code] radians corresponds to 180 degrees." +msgstr "" +"Радиан — это единица измерения углов, основанная на длине окружности.\n" +"\n" +"В повседневной жизни мы чаще используем градусы, но в компьютерном " +"программировании, особенно в играх, обычно используются радианы.\n" +"\n" +"Угол [code]2 * PI[/code] радиан соответствует 360 градусам. А угол [code]PI[/" +"code] радиан соответствует 180 градусам." + +#. Reference: type +#: course/glossary.csv:20 +msgid "type" +msgstr "тип" + +#. Reference: type +#: course/glossary.csv:20 +msgid "types" +msgstr "типы" + +#. Reference: type +#: course/glossary.csv:20 +msgid "" +"In computer programming, a type is the class of a value. For example, whole " +"numbers like [code]3[/code], [code]11[/code], and [code]255462[/code] are " +"all of type [code]int[/code] (short for integer).\n" +"\n" +"The computer uses types to determine which operations are valid between two " +"values and when they're undefined." +msgstr "" +"В компьютерном программировании тип — это класс значения. Например, целые " +"числа [code]3[/code], [code]11[/code] и [code]255462[/code] — имеют тип " +"[code]int[/code] (сокращение от integer).\n" +"\n" +"Компьютер использует типы, чтобы определить, какие операции допустимы между " +"двумя значениями и когда значения не определены." + +#. Reference: iteration +#: course/glossary.csv:23 +msgid "iteration" +msgstr "итерация" + +#. Reference: iteration +#: course/glossary.csv:23 +msgid "iterations" +msgstr "итерации" + +#. Reference: iteration +#: course/glossary.csv:23 +msgid "" +"In computer code, an iteration is one repetition of some process or code. We " +"typically use the term with loops, where one iteration is one run of the " +"loop's code.\n" +"\n" +"When talking of algorithms, an iteration can mean a full pass of the " +"algorithm on a data set." +msgstr "" +"В компьютерном коде итерация — это одно повторение некоторого процесса или " +"кода. Обычно мы используем термин итерация с циклами, где одна итерация — " +"это один запуск кода цикла.\n" +"\n" +"Когда речь идет об алгоритмах, итерация может означать полный проход " +"алгоритма по набору данных." + +#. Reference: vector +#: course/glossary.csv:28 +msgid "vector" +msgstr "вектор" + +#. Reference: vector +#: course/glossary.csv:28 +msgid "vectors" +msgstr "векторы" + +#. Reference: vector +#: course/glossary.csv:28 +msgid "" +"In math, a vector is a list of numbers. In games, we often use 2D and 3D " +"vectors: respectively, lists of two and three numbers.\n" +"\n" +"We use that to represent a direction and magnitude or intensity in space. " +"For example, you can use a vector to represent the direction and speed at " +"which a character or a vehicle moves.\n" +"\n" +"Vectors can seem daunting at first because they are pretty abstract, but as " +"you will see, they'll simplify code tremendously." +msgstr "" +"В математике вектор — это набор чисел. В играх мы часто используем 2D и 3D " +"векторы: соответственно, наборы из двух и трех чисел.\n" +"\n" +"Мы используем векторы для представления направления и величины или " +"интенсивности в пространстве. Например, вы можете использовать вектор для " +"представления направления и скорости, с которой движется персонаж или " +"транспортное средство.\n" +"\n" +"Поначалу векторы могут показаться сложными, потому что они довольно " +"абстрактны, но в дальнейшем вы увидите, что они значительно упрощают код." + +#. Reference: argument +#: course/glossary.csv:37 +msgid "argument" +msgstr "аргумент" + +#. Reference: argument +#: course/glossary.csv:37 +msgid "arguments" +msgstr "аргументы" + +#. Reference: argument +#: course/glossary.csv:37 +msgid "" +"An argument is a value that you pass to a function when calling the " +"function. For example, in the call [code]rotate(0.5)[/code], the value " +"[code]0.5[/code] in the parentheses is an argument.\n" +"\n" +"A function can receive no arguments, one argument, or multiple arguments. " +"Arguments can be mandatory or optional.\n" +"\n" +"When a function takes multiple arguments, you separate the values with " +"commas, like in this function call: [code]jump(50, 100)[/code]\n" +"\n" +"When [i]calling[/i] a function, we name the values passed in parentheses " +"[i]arguments[/i].\n" +"\n" +"When writing a function definition, however, we talk about function " +"[i]parameters[/i]. In the following example, the names [code]x[/code] and " +"[code]y[/code] are [i]parameters[/i]." +msgstr "" +"Аргумент — это значение, которое вы передаете в функцию при её вызове. " +"Например, в вызове [code]rotate(0.5)[/code] значение [code]0.5[/code] в " +"круглых скобках является аргументом.\n" +"\n" +"Функция может не принимать никаких аргументов, принимать один аргумент или " +"несколько аргументов. Аргументы могут быть обязательными или " +"необязательными.\n" +"\n" +"Когда функция принимает несколько аргументов, вы разделяете значения " +"запятыми, как в этом примере: jump(50, 100)\n" +"\n" +"При [i]вызове[/i] функции мы называем значения, передаваемые в круглых " +"скобках, [i]аргументами[/i].\n" +"\n" +"Однако при написании определения функции мы говорим о [i]параметрах[/i] " +"функции. В следующем примере имена [code]x[/code] и [code]y[/code] являются " +"[i]параметрами[/i]." + +#. Reference: array +#: course/glossary.csv:44 +msgid "array" +msgstr "массив" + +#. Reference: array +#: course/glossary.csv:44 +msgid "arrays" +msgstr "массивы" + +#. Reference: array +#: course/glossary.csv:44 +msgid "" +"An array is a list of values. In GDScript, arrays can contain [i]any[/i] " +"types of value.\n" +"\n" +"To create an array, you write comma-separated values in square brackets: " +"[code]var three_numbers = [1, 2, 3][/code]\n" +"\n" +"In games, we use arrays all the time to store lists of characters in a " +"party, lists of items in inventory, lists of spells the player unlocked, and " +"so on. They're everywhere.\n" +"\n" +"Arrays are a fundamental value type in computer programming. You'll find " +"arrays in pretty much any programming language." +msgstr "" +"Массив — это набор значений. В GDScript массивы могут содержать [i]любые[/i] " +"типы значений.\n" +"\n" +"Чтобы создать массив, нужно записать значения через запятую в квадратные " +"скобки: [code]var three_numbers = [1, 2, 3][/code]\n" +"\n" +"В играх мы постоянно используем массивы для хранения списков персонажей в " +"группе, списка предметов в инвентаре, списков заклинаний, разблокированных " +"игроком, и так далее. Они повсюду.\n" +"\n" +"Массивы — это фундаментальный тип значений в компьютерном программировании. " +"Вы встретите массивы практически в любом языке программирования." + +#. Reference: assign +#: course/glossary.csv:45 +msgid "assign" +msgstr "присваивание" + +#. Reference: assign +#: course/glossary.csv:45 +msgid "" +"Assigning a value to a variable means that you store a value inside the " +"variable. You do this with the equal sign ([code]=[/code])." +msgstr "" +"Присваивание значения переменной означает, что вы сохраняете значение внутри " +"переменной. Чтобы выполнить эту операцию вы можете использовать знака " +"равенства ([code]=[/code])." + +#. Reference: dictionary +#: course/glossary.csv:52 +msgid "dictionary" +msgstr "словарь" + +#. Reference: dictionary +#: course/glossary.csv:52 +msgid "dictionaries" +msgstr "словари" + +#. Reference: dictionary +#: course/glossary.csv:52 +msgid "" +"A dictionary is a data structure that maps values with key-value pairs. When " +"you give the dictionary a key, it finds and gives you back the corresponding " +"value.\n" +"\n" +"In GDScript, keys can be many things. We often use text strings or numbers, " +"but you're not limited to that. A [code]Vector2[/code] can also be a valid " +"key, which is handy to map a grid cell to a unit or an item in a grid-based " +"game.\n" +"\n" +"You will often use dictionaries to associate bits of data in your games. For " +"example, we could use them to associate an equipment's name with its weapon " +"stats in a database.\n" +"\n" +"Like arrays, they are a fundamental data type that you will see in many " +"programming languages and use a lot." +msgstr "" +"Словарь — это структура данных, которая сопоставляет значения с помощью пар " +"ключ-значение. Когда вы даете словарю ключ, он находит и возвращает вам " +"соответствующее значение.\n" +"\n" +"В GDScript ключи могут быть разными. Мы часто используем текстовые строки " +"или цифры, но вы не ограничены только строками и цифрами. [code]Vector2[/" +"code], например, может быть допустимым ключом, который удобен для " +"сопоставления ячейки сетки с юнитом или элементом в игре (если сетка в игре " +"используется).\n" +"\n" +"Вы часто будете использовать словари для сопоставления фрагментов данных в " +"своих играх. Например, вы можете использовать словарь, чтобы связать " +"название снаряжения с его характеристиками в базе данных.\n" +"\n" +"Как и массивы, словари являются фундаментальным типом данных, который вы " +"встретите во многих языках программирования и будете часто использовать." + +#. Reference: for loop +#: course/glossary.csv:59 +msgid "for loop" +msgstr "цикл for" + +#. Reference: for loop +#: course/glossary.csv:59 +msgid "for loops" +msgstr "циклы for" + +#. Reference: for loop +#: course/glossary.csv:59 +msgid "" +"A for loop instructs the computer to repeat a set of instructions once for " +"each value in an array.\n" +"\n" +"In each loop iteration, the compiler extracts one value from the array and " +"gives you access to it in the loop's body.\n" +"\n" +"For loops run code a limited amount of times: one per value in the array. It " +"is different from while loops that keep repeating code until a condition is " +"met.\n" +"\n" +"We recommend favoring for loops when you can. They're safer and easier to " +"use than while loops." +msgstr "" +"Цикл for указывает компьютеру повторить набор инструкций один раз для " +"каждого значения в массиве.\n" +"\n" +"На каждой итерации цикла компилятор извлекает одно значение из массива и " +"предоставляет вам доступ к нему в теле цикла.\n" +"\n" +"Циклы for запускают код ограниченное количество раз: по одному на каждое " +"значение в массиве. Этим циклы for отличаются от циклов while, которые " +"продолжают повторять код до тех пор, пока не будет выполнено условие.\n" +"\n" +"Мы рекомендуем отдавать предпочтение циклам for всегда, когда это возможно. " +"Циклы for безопаснее и проще в использовании, чем циклы while." + +#. Reference: function +#: course/glossary.csv:64 +msgid "function" +msgstr "функция" + +#. Reference: function +#: course/glossary.csv:64 +msgid "functions" +msgstr "функции" + +#. Reference: function +#: course/glossary.csv:64 +msgid "" +"A function is a group of code instructions you give a name. When you define " +"a function, you can call it any time to run all the instructions it " +"contains.\n" +"\n" +"You can modify a function's behavior with parameters. Parameters are " +"variable names that you write in the function definition. You can then use " +"them in the function's body to make your code adapt to different cases.\n" +"\n" +"Also, functions can optionally return a value to the code calling it." +msgstr "" +"Функция — это группа инструкций кода, которой вы даете имя. Когда вы " +"определяете функцию, вы можете вызвать ее в любое время, чтобы выполнить все " +"содержащиеся в ней инструкции.\n" +"\n" +"Вы можете изменять поведение функции с помощью параметров. Параметры — это " +"имена переменных, которые вы пишете в определение функции. Вы можете " +"использовать их в теле функции, чтобы адаптировать код к различным случаям.\n" +"\n" +"Кроме того, при необходимости функции могут возвращать значение коду, " +"который их вызвал." + +#. Reference: increment +#: course/glossary.csv:65 +msgid "increment" +msgstr "инкремент" + +#. Reference: increment +#: course/glossary.csv:65 +msgid "increments" +msgstr "инкременты" + +#. Reference: increment +#: course/glossary.csv:65 +msgid "An increment is the amount by which a value changes in your code." +msgstr "Инкремент — это величина, на которую изменяется значение в вашем коде." + +#. Reference: instruction +#: course/glossary.csv:68 +msgid "instruction" +msgstr "инструкция" + +#. Reference: instruction +#: course/glossary.csv:68 +msgid "instructions" +msgstr "инструкции" + +#. Reference: instruction +#: course/glossary.csv:68 +msgid "" +"In computer programming, instructions are a single operation the computer " +"recognizes and can execute.\n" +"\n" +"For example, a function call, an addition, or assigning a value to a " +"variable." +msgstr "" +"В компьютерном программировании инструкции представляют собой одну операцию, " +"которую компьютер распознает и может выполнить.\n" +"\n" +"Например, вызов функции, добавление или присваивание значения переменной." + +#. Reference: variable +#: course/glossary.csv:77 +msgid "variable" +msgstr "переменная" + +#. Reference: variable +#: course/glossary.csv:77 +msgid "variables" +msgstr "переменные" + +#. Reference: variable +#: course/glossary.csv:77 +msgid "" +"Variables are a tool to give a name to values you want to store in your code " +"and change over time.\n" +"\n" +"For example, a character's health: when the character takes a hit, you want " +"it to go down. When healing, you want the health to go back up.\n" +"\n" +"You can create a variable named [code]health[/code] to represent the " +"health.\n" +"\n" +"Then, every time you write the keyword [code]health[/code] in your code, the " +"computer will fetch the corresponding value in its memory for you.\n" +"\n" +"Variables work a bit like product labels in a supermarket. They are names " +"that you attach to some value. Any time, you can take the label and stick it " +"onto a new product or, in that case, a new value." +msgstr "" +"Переменные — это инструмент для присваивания имен значениям, которые вы " +"хотите содержать в своем коде и изменять с течением времени.\n" +"\n" +"Например, подумайте о здоровье персонажа: когда персонаж получает удар, вы " +"хотите, чтобы здоровье снизилось. Когда вы лечитесь, вы хотите, чтобы " +"здоровье восстановилось.\n" +"\n" +"Вы можете создать переменную с именем [code]health[/code] для представления " +"состояния здоровья.\n" +"\n" +"Затем каждый раз, когда вы пишите ключевое слово [code]health[/code] в своем " +"коде, компьютер будет извлекать для вас соответствующее значение из своей " +"памяти.\n" +"\n" +"Переменные работают подобно этикеткам товаров в супермаркете. Это имена, " +"которыми вы помечаете какое-то значение. В любой момент вы можете взять " +"этикетку и наклеить ее на новый товар или, в данном случае, на новое " +"значение в коде." + +#. Reference: while loop +#: course/glossary.csv:84 +msgid "while loop" +msgstr "цикл while" + +#. Reference: while loop +#: course/glossary.csv:84 +msgid "while loops" +msgstr "циклы while" + +#. Reference: while loop +#: course/glossary.csv:84 +msgid "" +"A while loop instructs the computer to keep running code based on a " +"condition. While the condition is true, the loop keeps running.\n" +"\n" +"When coding while loops, you must be careful: they will keep running " +"infinitely and freeze your game if you get the condition wrong.\n" +"\n" +"That's why we recommend using the safer for loop whenever you can.\n" +"\n" +"However, there are still essential cases in which we use while loops, like " +"processing files, processing computer code, or for powerful algorithms." +msgstr "" +"Цикл while указывает компьютеру продолжать выполнение кода, основываясь на " +"условии. Пока условие истинно, цикл продолжает выполняться.\n" +"\n" +"При написании циклов while вы должны быть осторожны: они будут выполняться " +"бесконечно и приведут к бесконечному зависанию, если вы неправильно выберете " +"условие.\n" +"\n" +"Вот почему мы рекомендуем использовать более безопасный цикл for всегда, " +"когда это возможно.\n" +"\n" +"Однако все еще существуют особые случаи, когда мы используем циклы while, " +"например, при обработке файлов, обработке компьютерного кода или для мощных " +"алгоритмов." + +#. Reference: body +#: course/glossary.csv:85 +msgid "body" +msgstr "тело" + +#. Reference: body +#: course/glossary.csv:85 +msgid "" +"We talk about a loop or a function's body to refer to the lines of code that " +"are part of the loop or function." +msgstr "" +"Мы говорим о теле цикла или функции, чтобы сослаться на строки кода, которые " +"являются частью цикла или функции." + +#. Reference: return +#: course/glossary.csv:88 +msgid "return" +msgstr "возврат" + +#. Reference: return +#: course/glossary.csv:88 +msgid "" +"Returning a value is the process of sending a value to the place where you " +"call a function.\n" +"\n" +"It happens when a function uses the [code]return[/code] keyword followed by " +"a value, for example: [code]return -1[/code]." +msgstr "" +"Возврат значения — это процесс отправки значения в то место, откуда вы " +"вызвали функцию.\n" +"\n" +"Возврат происходит, когда функция использует ключевое слово [code]return[/" +"code], с указанным после него значением, например: [code]return -1[/code]." + +#. Reference: library +#: course/glossary.csv:89 +msgid "library" +msgstr "библиотека" + +#. Reference: library +#: course/glossary.csv:89 +msgid "libraries" +msgstr "библиотеки" + +#. Reference: library +#: course/glossary.csv:89 +msgid "" +"A collection of valuable and reusable code bundled together by other " +"programmers to save you time. All programmers use code libraries." +msgstr "" +"Библиотека — это коллекция ценного и многоразового кода, сложенного вместе " +"другими программистами, желающими сэкономить ваше время. Все программисты " +"используют библиотеки кода." + +#. Reference: sprite +#: course/glossary.csv:90 +msgid "sprite" +msgstr "спрайт" + +#. Reference: sprite +#: course/glossary.csv:90 +msgid "sprites" +msgstr "спрайты" + +#. Reference: sprite +#: course/glossary.csv:90 +msgid "" +"In computer graphics, a sprite is an image you display on the screen. We " +"generally use this word to talk about moving images, like a character, a " +"monster, or an item falling on the ground." +msgstr "" +"В компьютерной графике спрайт — это изображение, отображаемое на экране. " +"Обычно мы используем слово спрайт, когда говорим о движущихся изображениях, " +"таких как персонаж, монстр или предмет, падающий на землю." diff --git a/i18n/ru/lesson-1-what-code-is-like.po b/i18n/ru/lesson-1-what-code-is-like.po new file mode 100644 index 00000000..f350045f --- /dev/null +++ b/i18n/ru/lesson-1-what-code-is-like.po @@ -0,0 +1,447 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-1-what-code-is-like/lesson.tres:14 +msgid "" +"Learning to program can be daunting.\n" +"\n" +"Yet, you want to make video games, so [b]there is no way around learning to " +"program[/b]. [i]Every[/i] video game is a computer program." +msgstr "" +"Обучение программированию может быть сложной задачей.\n" +"\n" +"Но если вы все-таки хотите создавать видеоигры, то [b]без умения " +"программировать вам не обойтись[/b]. [i]Каждая[/i] видеоигра — это " +"компьютерная программа." + +#: course/lesson-1-what-code-is-like/lesson.tres:24 +msgid "Telling the computer what to do" +msgstr "Объясняем компьютеру, что мы от него хотим" + +#: course/lesson-1-what-code-is-like/lesson.tres:26 +msgid "" +"Programming is the process of writing precise instructions that tell a " +"computer how to perform a task.\n" +"\n" +"A game's instructions are, for example: moving a character, drawing a life " +"bar, or playing a sound." +msgstr "" +"Программирование — это процесс написания точных инструкций, которые " +"объясняют компьютеру, как выполнить поставленную задачу.\n" +"\n" +"Вот несколько примеров таких инструкций: перемещение персонажа, рисование " +"полоски жизни или воспроизведение звука." + +#: course/lesson-1-what-code-is-like/lesson.tres:38 +msgid "" +"To do any of that, you need to learn a [b]programming language[/b]: a " +"specialized language to tell the computer what to do." +msgstr "" +"Чтобы написать какую-нибудь из этих инструкций, вам нужно научиться " +"использовать [b]язык программирования[/b] — специализированный язык, " +"позволяющий указать компьютеру, что ему делать." + +#: course/lesson-1-what-code-is-like/lesson.tres:58 +msgid "" +"Programming languages are different from natural ones like English or " +"Spanish. The computer does not think. Unlike us, it can't [i]interpret[/i] " +"what you tell it.\n" +"\n" +"You can't tell it something vague like \"draw a circle.\"\n" +"\n" +"Which circle? Where? Which color should it be? How big should it be?" +msgstr "" +"Языки программирования отличаются от естественных языков, таких как русский " +"или английский. Компьютер не думает. В отличие от нас, он не может [i]понять " +"суть[/i] того, что вы ему говорите.\n" +"\n" +"Вы не можете сказать ему что-то неопределенное вроде «нарисуй круг».\n" +"\n" +"Какой круг? Нарисовать где? Какого цвета он должен быть? Насколько большим " +"он должен быть?" + +#: course/lesson-1-what-code-is-like/lesson.tres:70 +msgid "The computer needs exact instructions" +msgstr "Компьютеру нужны точные инструкции" + +#: course/lesson-1-what-code-is-like/lesson.tres:72 +msgid "" +"To draw a filled circle, the computer needs to know exact drawing " +"coordinates, the radius, the thickness, and color you want.\n" +"\n" +"The code to do so [i]may[/i] look like this.\n" +"\n" +"[i]Click the button to run the code example and see the result.[/i]" +msgstr "" +"Чтобы нарисовать закрашенный круг, компьютеру необходимо знать точные " +"координаты рисования, радиус, толщину и нужный цвет.\n" +"\n" +"Код для рисования круга [i]может[/i] выглядеть следующим образом.\n" +"\n" +"[i]Нажмите кнопку, чтобы запустить пример кода и увидеть результат.[/i]" + +#: course/lesson-1-what-code-is-like/lesson.tres:96 +msgid "" +"In the following lessons, you'll learn how this code works.\n" +"\n" +"For now, we want to give you a sense of what computer code looks like. In " +"this example, everything matters: each parenthesis, capital letter, period, " +"and comma.\n" +"\n" +"The computer always does [b]exactly[/b] what you tell it to. No more, no " +"less. It [i]blindly[/i] follows every instruction.\n" +"\n" +"[b]When you program, you're the one in charge, and you're free to do " +"[i]anything[/i] you want.[/b]" +msgstr "" +"В следующих уроках вы узнаете, как работает этот код.\n" +"\n" +"А пока мы хотим дать вам представление о том, как он выглядит. В этом " +"примере важно все: каждая скобка, заглавная буква, точка и запятая.\n" +"\n" +"Компьютер всегда делает [b]в точности[/b] то, что вы ему говорите. Ни " +"больше, ни меньше. Он [i]слепо[/i] следует каждой инструкции.\n" +"\n" +"[b]Когда вы программируете, вы отвечаете за все, и вольны делать [i]все[/i], " +"что захотите.[/b]" + +#: course/lesson-1-what-code-is-like/lesson.tres:110 +msgid "How do you give instructions to a computer?" +msgstr "Как объяснить компьютеру что делать?" + +#: course/lesson-1-what-code-is-like/lesson.tres:113 +msgid "" +"Computers don't understand natural languages like English. To make them do " +"anything, you need to give them precise instructions they understand, using " +"a programming language." +msgstr "" +"Компьютеры не понимают естественных языков, таких как английский. Чтобы " +"заставить их что-то делать, вам нужно дать им точные инструкции на языке " +"программирования, которые будут для них понятны." + +#: course/lesson-1-what-code-is-like/lesson.tres:114 +#: course/lesson-1-what-code-is-like/lesson.tres:115 +msgid "Using a programming language and precise instructions" +msgstr "Использовать язык программирования и точные инструкции" + +#: course/lesson-1-what-code-is-like/lesson.tres:114 +msgid "Using prose in plain English" +msgstr "Использовать прозу на простом английском языке" + +#: course/lesson-1-what-code-is-like/lesson.tres:122 +msgid "You'll learn to code with GDScript" +msgstr "Вы научитесь программировать с помощью GDScript" + +#: course/lesson-1-what-code-is-like/lesson.tres:124 +#, fuzzy +msgid "" +"In this course, you'll learn the GDScript programming language (the name " +"stands for \"Godot script\").\n" +"\n" +"This is a language by game developers for game developers. You can use it " +"within the Godot game engine to create games and applications.\n" +"\n" +"It's the language used by games like [ignore][url=https://store.steampowered." +"com/app/1637320/Dome_Keeper/]Dome Keeper[/url] and [ignore][url=https://" +"store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" +"Engineers at Tesla also used it for their cars' dashboards." +msgstr "" +"В этом курсе вы изучите язык программирования GDScript (название означает " +"\"Godot script\" — \"скриптовый язык Godot\").\n" +"\n" +"GDScript — это язык от разработчиков игр для разработчиков игр. Вы можете " +"использовать его в игровом движке Godot для создания игр и приложений.\n" +"\n" +"SEGA использовала движок Godot для создания ремейка Sonic Colors Ultimate. " +"Инженеры Tesla используют его для приборных панелей своих автомобилей." + +#: course/lesson-1-what-code-is-like/lesson.tres:150 +msgid "" +"GDScript is an excellent language to get started with programming because " +"it's specialized. Unlike some other languages, it doesn't have an " +"[i]overwhelming[/i] amount of features for you to learn." +msgstr "" +"GDScript — отличный язык для знакомства с программированием, благодаря своей " +"специализации. В отличие от некоторых других языков, в нем нет " +"[i]ошеломляюще огромного[/i] количества особенностей, требующих изучения." + +#: course/lesson-1-what-code-is-like/lesson.tres:158 +msgid "Most programming languages are similar" +msgstr "Большинство языков программирования похожи" + +#: course/lesson-1-what-code-is-like/lesson.tres:160 +msgid "" +"Don't be afraid of being locked in. The concepts you learn in your first " +"programming language will apply to all the others.\n" +"\n" +"Most languages have more similarities than differences. Once you learn one, " +"it takes much less time to become productive with the next one.\n" +"\n" +"Here's an example of the same code in three languages: GDScript, JavaScript, " +"and Python.\n" +"\n" +"Try to spot the similarities and differences." +msgstr "" +"Не бойтесь попасть в заложники одного языка. Концепции, которые вы изучите в " +"своем первом языке программирования, будут применимы и ко всем остальным.\n" +"\n" +"Большинство языков имеют больше сходств, чем различий. Как только вы изучите " +"один из них, вам потребуется гораздо меньше времени, чтобы начать " +"продуктивно работать со следующим.\n" +"\n" +"Вот пример одного и того же кода на трех языках: GDScript, JavaScript и " +"Python.\n" +"\n" +"Попытайтесь найти сходства и различия." + +#: course/lesson-1-what-code-is-like/lesson.tres:186 +msgid "It doesn't look [i]that[/i] different, does it?" +msgstr "Код не выглядит [i]таким уж[/i] разным, не так ли?" + +#: course/lesson-1-what-code-is-like/lesson.tres:194 +msgid "Are programming languages all completely different?" +msgstr "Все языки программирования совершенно разные?" + +#: course/lesson-1-what-code-is-like/lesson.tres:195 +msgid "" +"If you learn one language and then want to learn another, will you have to " +"start from scratch?" +msgstr "" +"Если при изучении одного языка, вы захотите выучить другой, придется ли вам " +"начинать с нуля?" + +#: course/lesson-1-what-code-is-like/lesson.tres:197 +msgid "" +"Most programming languages build upon the same ideas of how to program. As a " +"result, they're mostly similar.\n" +"\n" +"It's not to say all languages are the same, though. Some offer a really " +"unique syntax and require a completely different mindset compared to " +"GDScript.\n" +"\n" +"However, languages like GDScript, Python, JavaScript, C++, C#, and many " +"others build upon a similar programming philosophy." +msgstr "" +"Большинство языков программирования основаны на одних и тех же идеях о том, " +"как программировать. В результате они в основном похожи.\n" +"\n" +"Однако это не значит, что все языки одинаковы. Некоторые предлагают " +"действительно уникальный синтаксис и требуют совершенно другого образа " +"мышления по сравнению с GDScript.\n" +"\n" +"Однако такие языки, как GDScript, Python, JavaScript, C++, C# и многие " +"другие, основаны на аналогичной философии программирования." + +#: course/lesson-1-what-code-is-like/lesson.tres:202 +#: course/lesson-1-what-code-is-like/lesson.tres:203 +msgid "No, they have many similarities" +msgstr "Нет, у них много общего" + +#: course/lesson-1-what-code-is-like/lesson.tres:202 +msgid "Yes, they are completely different" +msgstr "Да, они совершенно разные" + +#: course/lesson-1-what-code-is-like/lesson.tres:210 +msgid "This is a course for beginners" +msgstr "Этот курс для начинающих" + +#: course/lesson-1-what-code-is-like/lesson.tres:212 +msgid "" +"If you want to learn to make games or code but don't know where to start, " +"this course should be perfect." +msgstr "" +"Если вы хотите научиться создавать игры или программировать, но не знаете, с " +"чего начать — этот курс идеально вам подойдёт." + +#: course/lesson-1-what-code-is-like/lesson.tres:232 +msgid "" +"We designed it for [i]absolute beginners[/i], but if you already know " +"another language, it can be a fun way to get started with Godot.\n" +"\n" +"We will give you the coding foundations you need to start making games and " +"applications with Godot.\n" +"\n" +"Please be patient. It will take time before you can make your first complete " +"game alone." +msgstr "" +"Мы разработали его для [i]абсолютных новичков[/i], но если вы уже знаете " +"другой язык, данный курс может быть интересным способом начать работу с " +"Godot.\n" +"\n" +"Мы дадим вам основы программирования, необходимые для того, чтобы начать " +"создавать игры и приложения с помощью Godot.\n" +"\n" +"Пожалуйста, наберитесь терпения. Потребуется время, прежде чем вы сможете " +"сделать свою первую полноценную игру в одиночку." + +#: course/lesson-1-what-code-is-like/lesson.tres:244 +msgid "Learning to make games takes practice" +msgstr "Обучение созданию игр требует практики" + +#: course/lesson-1-what-code-is-like/lesson.tres:246 +msgid "" +"Creating games is more accessible than ever, but it still takes a lot of " +"work and practice.\n" +"\n" +"Do not expect any single course or book to turn you into a professional. " +"[b]Programming is something you learn through practice.[/b]\n" +"\n" +"If something doesn't make immediate sense, don't stress it too much! Keep " +"learning and come back to it later.\n" +"\n" +"Enjoy the process and celebrate every little success. You will never stop " +"learning as a game developer." +msgstr "" +"Создание игр стало более доступным, чем когда-либо, но оно по-прежнему " +"требует много работы и практики.\n" +"\n" +"Не ждите, что какой-то один курс или книга сделают из вас профессионала. " +"[b]Программирование — это то, чему вы учитесь на практике.[/b]\n" +"\n" +"Если что-то не получается понять сразу, не переживайте слишком сильно! " +"Продолжайте учиться и возвращайтесь к этому позже.\n" +"\n" +"Наслаждайтесь процессом и радуйтесь каждому маленькому успеху. Как " +"разработчик игр, вы никогда не перестанете учиться." + +#: course/lesson-1-what-code-is-like/lesson.tres:260 +msgid "What and how you'll learn" +msgstr "Чему и как вы научитесь" + +#: course/lesson-1-what-code-is-like/lesson.tres:262 +msgid "" +"In this free course, you will learn the foundations you need to start coding " +"things like these:" +msgstr "" +"В этом бесплатном курсе вы изучите основы, необходимые для того, чтобы " +"начать программировать такие вещи как:" + +#: course/lesson-1-what-code-is-like/lesson.tres:292 +msgid "" +"Along the way, we'll teach you:\n" +"\n" +"- Some of the mindset you need as a developer. Too many programming courses " +"skip that essential part.\n" +"- How to write GDScript code.\n" +"- Essential programming foundations to get you started.\n" +"\n" +"As you go through the course, you will have many questions. We will answer " +"them the best we can as we go.\n" +"\n" +"But there is so much to cover that we have to take a few shortcuts. We don't " +"want to [i]overwhelm[/i] you with information. We also want to respect the " +"pace at which our brains memorize things.\n" +"\n" +"We broke down the course into short lessons and practices. If we put too " +"much into each part, you'd learn slower.\n" +"\n" +"If at any time you're left with burning questions, you're more than welcome " +"to join [url=https://discord.gg/87NNb3Z]our Discord community[/url]." +msgstr "" +"Попутно мы научим вас:\n" +"\n" +"- Некоторым особенностям мышления, необходимым вам как разработчику. Слишком " +"многие курсы программирования пропускают эту категорически важную часть.\n" +"- Как писать код на языке GDScript.\n" +"- Ключевым основам программирования, которые помогут вам начать работу.\n" +"\n" +"По мере прохождения курса у вас возникнет много вопросов. Мы ответим на них " +"как можно лучше по ходу дела.\n" +"\n" +"Но в курсе так много всего нужно охватить, что нам пришлось сделать " +"несколько сокращений. Мы не хотим [i]перегружать[/i] вас информацией. Также " +"мы попытаемся придерживаться темпа, при котором ваш мозг лучше всего " +"запомнит пройденный материал.\n" +"\n" +"Для этого мы специально разбили курс на короткие уроки и практические " +"задания. Если мы будем вкладывать слишком много информации в каждую часть, " +"вы будете учиться медленнее.\n" +"\n" +"Если в любой момент прохождения курса у вас возникнут горящие вопросы, мы с " +"большой радостью на них ответим [url=https://discord.gg/87NNb3Z]в нашем " +"сообществе Discord[/url]." + +#: course/lesson-1-what-code-is-like/lesson.tres:312 +msgid "Is this for Godot 4?" +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:314 +msgid "" +"What you'll learn in this free course is fully compatible with Godot 4. " +"While we initially designed this series for Godot 3, the foundations of " +"GDScript are still the same in Godot 4." +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:322 +msgid "Programming is a skill" +msgstr "Программирование — это навык" + +#: course/lesson-1-what-code-is-like/lesson.tres:324 +msgid "" +"Programming is a skill, so to get good at it, you must practice. It is why " +"we built this app.\n" +"\n" +"Each lesson is followed by an interactive practice to use what you learned.\n" +"\n" +"Speaking of which, it's time to look at the practice screen!\n" +"\n" +"To continue, click the [i]Practice[/i] button below. It will give you a " +"short run through how practices work." +msgstr "" +"Программирование — это навык, поэтому, чтобы овладеть им, вы должны " +"практиковаться. Именно поэтому мы создали это приложение.\n" +"\n" +"За каждым уроком следует интерактивная практика, позволяющая закрепить то, " +"что вы выучили.\n" +"\n" +"Пришло время взглянуть на экран практики!\n" +"\n" +"Чтобы продолжить, нажмите кнопку [i]Практика[/i] ниже. После нажатия вы " +"получите краткое представление о том, как работают упражнения." + +#: course/lesson-1-what-code-is-like/lesson.tres:338 +msgid "Try Your First Code" +msgstr "Первое знакомство с кодом" + +#: course/lesson-1-what-code-is-like/lesson.tres:339 +msgid "" +"We prepared a code sample for you. For this practice, you don't need to " +"change anything.\n" +"\n" +"To test the code, click the [i]Run[/i] button below the code editor." +msgstr "" +"Мы подготовили для вас образец кода. В этом практическом упражнении вам не " +"нужно ничего менять.\n" +"\n" +"Чтобы протестировать код, нажмите кнопку [i]Выполнить[/i] под редактором " +"кода." + +#: course/lesson-1-what-code-is-like/lesson.tres:351 +msgid "Run your first bit of code and see the result." +msgstr "Запустите свой первый кусочек кода и посмотрите на результат." + +#: course/lesson-1-what-code-is-like/lesson.tres:355 +msgid "What Code is Like" +msgstr "Как выглядит код" diff --git a/i18n/ru/lesson-10-the-game-loop.po b/i18n/ru/lesson-10-the-game-loop.po new file mode 100644 index 00000000..43bf44a6 --- /dev/null +++ b/i18n/ru/lesson-10-the-game-loop.po @@ -0,0 +1,261 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-10-the-game-loop/lesson.tres:14 +msgid "" +"As we've seen, Godot has functions that do certain actions. For example, the " +"[code]show()[/code] and [code]hide()[/code] functions change the visibility " +"of things.\n" +"\n" +"We can also create our own functions to make custom effects like adding or " +"removing health to a character.\n" +"\n" +"Godot also has special functions we can customize or add to.\n" +"\n" +"Take the [code]_process()[/code] function." +msgstr "" +"Как мы уже видели, в Godot есть функции, которые выполняют определенные " +"действия. Например, [code]show()[/code] и [code]hide()[/code] изменяют " +"видимость объектов.\n" +"\n" +"Также мы можем создавать собственные функции, оказывающие нужные нам " +"эффекты, например, снижающие или восстанавливающие здоровье персонажа.\n" +"\n" +"В Godot также есть специальные функции, которые мы можем настраивать и " +"использовать в наших скриптах.\n" +"\n" +"Рассмотрим функцию [code]_process()[/code]." + +#: course/lesson-10-the-game-loop/lesson.tres:40 +msgid "" +"The [code]_process()[/code] function gets its name because it does " +"calculations or continuous actions.\n" +"\n" +"It's like a juice factory that [b]processes[/b] juice bottles: the bottles " +"are always moving along a conveyor belt, while different machines operate on " +"them." +msgstr "" +"Функция [code]_process()[/code] получила свое название потому, что она " +"выполняет вычисления или непрерывные действия.\n" +"\n" +"Она похожа на фабрику сока, выполняющую [b]процесс обработки[/b] бутылок " +"сока: бутылки постоянно движутся по конвейеру, а различные машины совершают " +"операции над ними." + +#: course/lesson-10-the-game-loop/lesson.tres:52 +msgid "" +"It's similar in Godot, but this function can run [b]hundreds of times a " +"second[/b]." +msgstr "" +"В Godot происходит нечто похожее, но эта функция может выполняться [b]сотни " +"раз в секунду[/b]." + +#: course/lesson-10-the-game-loop/lesson.tres:60 +msgid "How many parameters does this function take?" +msgstr "Сколько параметров принимает эта функция?" + +#: course/lesson-10-the-game-loop/lesson.tres:61 +msgid "" +"[code]\n" +"func _process(delta):\n" +"[/code]" +msgstr "" +"[code]\n" +"func _process(delta):\n" +"[/code]" + +#: course/lesson-10-the-game-loop/lesson.tres:65 +msgid "" +"The [code]_process()[/code] function takes one parameter: [code]delta[/" +"code].\n" +"\n" +"We'll look at what [code]delta[/code] is in the next lesson, as well as show " +"how to use it." +msgstr "" +"Функция [code]_process()[/code] принимает один параметр: [code]delta[/" +"code].\n" +"\n" +"Мы рассмотрим, что такое [code]delta[/code] в следующем уроке, а также " +"покажем, как этот параметр использовать." + +#: course/lesson-10-the-game-loop/lesson.tres:68 +#: course/lesson-10-the-game-loop/lesson.tres:69 +msgid "1" +msgstr "1" + +#: course/lesson-10-the-game-loop/lesson.tres:68 +msgid "2" +msgstr "2" + +#: course/lesson-10-the-game-loop/lesson.tres:78 +msgid "" +"The [code]_process()[/code] function won't do anything until we add " +"something to it.\n" +"\n" +"You might notice the underscore [code]_[/code] in front of the function " +"name. This is a convention programmers use to coordinate work, and it'll " +"only make sense once you have experience coding in Godot.\n" +"\n" +"For now, all you need to know is that if the function exists in your code, " +"and it is called precisely [code]_process[/code], then Godot will " +"automatically run it every [i]frame[/i].\n" +"\n" +"When Godot draws on the screen, we call that a frame." +msgstr "" +"Функция [code]_process()[/code] не будет ничего делать, пока мы не добавим в " +"неё что-нибудь.\n" +"\n" +"Вы можете заметить подчеркивание [code]_[/code] перед именем функции. Этот " +"символ является частью соглашения принятого разработчиками для координации " +"работ, он станет значим для вас после того, как вы наберётесь опыта в " +"программировании в Godot.\n" +"\n" +"Всё что вам нужно знать сейчас — если в вашем в коде существует функция " +"[code]_process[/code], то Godot будет автоматически запускать её каждый " +"[i]кадр[/i]. \n" +"\n" +"Когда Godot рисует на экране, мы называем это рамкой." + +#: course/lesson-10-the-game-loop/lesson.tres:92 +msgid "Is this the same for other engines?" +msgstr "На других движках то же самое?" + +#: course/lesson-10-the-game-loop/lesson.tres:94 +msgid "" +"Other game engines might use different names like [code]_update()[/code]." +msgstr "" +"Другие игровые движки для тех же целей могут использовать функции с другими " +"названиями, например [code]_update()[/code]." + +#: course/lesson-10-the-game-loop/lesson.tres:102 +msgid "Why is the _process() function useful?" +msgstr "Чем полезна функция _process()?" + +#: course/lesson-10-the-game-loop/lesson.tres:104 +msgid "" +"It's perhaps better to see the [code]_process()[/code] function in action.\n" +"\n" +"Take the following example." +msgstr "" +"Чтобы ответить на этот вопрос, давайте посмотрим на функцию [code]_process()" +"[/code] в действии.\n" +"\n" +"Рассмотрим следующий пример." + +#: course/lesson-10-the-game-loop/lesson.tres:126 +msgid "" +"When you click the button [code]set_process(true)[/code], you activate " +"processing on the robot.\n" +"\n" +"From there, every frame, Godot runs the [code]_process()[/code] function.\n" +"\n" +"Since we wrote a [code]rotate()[/code] instruction, Godot is rotating the " +"character by [code]0.05[/code] radians [b]many[/b] times a second." +msgstr "" +"Нажатием кнопки [code]set_process(true)[/code] вы активируете дальнейшее " +"выполнение процесса на роботе.\n" +"\n" +"После этого каждый кадр Godot запускает функцию [code]_process()[/code].\n" +"\n" +"Поскольку мы написали инструкцию [code]rotate()[/code], Godot поворачивает " +"персонажа на [code]0.05[/code] радиан [b]много[/b] раз в секунду." + +#: course/lesson-10-the-game-loop/lesson.tres:138 +msgid "How often does the _process() function run?" +msgstr "Как часто выполняется функция _process()?" + +#: course/lesson-10-the-game-loop/lesson.tres:141 +msgid "" +"The faster your computer, the more times [code]_process()[/code] will run.\n" +"\n" +"Godot will try and run [code]_process()[/code] as quickly as it can. This " +"makes sure any movement or animations look smooth and fluid." +msgstr "" +"Чем быстрее ваш компьютер, тем чаще будет выполняться [code]_process()[/" +"code].\n" +"\n" +"Godot постарается выполнить [code]_process()[/code] так быстро, как только " +"сможет. Благодаря этому любое движение или анимация выглядят плавными и " +"текучими." + +#: course/lesson-10-the-game-loop/lesson.tres:144 +msgid "Once a second." +msgstr "Раз в секунду." + +#: course/lesson-10-the-game-loop/lesson.tres:144 +#: course/lesson-10-the-game-loop/lesson.tres:145 +msgid "Multiple times a second." +msgstr "Несколько раз в секунду." + +#: course/lesson-10-the-game-loop/lesson.tres:154 +msgid "" +"In the practice, you'll learn how to use the process function to rotate and " +"move a character yourself." +msgstr "" +"В упражнении вы самостоятельно научитесь использовать функцию process для " +"вращения и перемещения персонажа." + +#: course/lesson-10-the-game-loop/lesson.tres:162 +msgid "Rotating a Character Continuously" +msgstr "Непрерывное вращение персонажа" + +#: course/lesson-10-the-game-loop/lesson.tres:163 +msgid "" +"Make the robot rotate slowly by adding to the [code]_process()[/code] " +"function.\n" +"\n" +"A rotation speed of about [code]0.05[/code] each frame should do." +msgstr "" +"Заставьте робота медленно вращаться, изменив функцию [code]_process()[/" +"code].\n" +"\n" +"Скорости вращения в [code]0.05[/code] радиан за кадр будет достаточно." + +#: course/lesson-10-the-game-loop/lesson.tres:180 +msgid "Creating Circular Movement" +msgstr "Создание кругового движения" + +#: course/lesson-10-the-game-loop/lesson.tres:181 +msgid "" +"Make the robot move in a large circle slowly by rotating it and " +"simultaneously moving it along its x direction.\n" +"\n" +"To do this, add the [code]rotate()[/code] and [code]move_local_x()[/code] " +"functions to [code]_process()[/code].\n" +"\n" +"Use a rotation speed of [code]0.05[/code] radians per frame, and move the " +"robot [code]5[/code] pixels per frame." +msgstr "" +"Заставьте робота медленно двигаться по большому кругу, вращая его и " +"одновременно перемещая вдоль направления x.\n" +"\n" +"Для этого добавьте функции [code]rotate()[/code] и [code]move_local_x()[/" +"code] в [code]_process()[/code].\n" +"\n" +"Используйте скорость вращения [code]0.05[/code] радиан за кадр и перемещайте " +"робота на [code]5[/code] пикселей каждый кадр." + +#: course/lesson-10-the-game-loop/lesson.tres:199 +msgid "The Game Loop" +msgstr "Игровой цикл" diff --git a/i18n/ru/lesson-11-time-delta.po b/i18n/ru/lesson-11-time-delta.po new file mode 100644 index 00000000..931a5f29 --- /dev/null +++ b/i18n/ru/lesson-11-time-delta.po @@ -0,0 +1,457 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-11-time-delta/lesson.tres:14 +msgid "" +"We've seen how we can use our character's [code]_process()[/code] function " +"to make it move continuously." +msgstr "" +"Мы видели, как можно использовать функцию [code]_process()[/code] нашего " +"персонажа, чтобы заставить его двигаться непрерывно." + +#: course/lesson-11-time-delta/lesson.tres:34 +msgid "" +"But it's not just our character that has a [code]_process()[/code] function; " +"Almost everything in the game has a [code]_process()[/code] function!\n" +"\n" +"Dozens of times per second, Godot runs every [code]_process()[/code] " +"function in the game to update the game world.\n" +"\n" +"After that, it displays an image of the game world on the screen. We call " +"that image a [b]frame[/b].\n" +"\n" +"Godot then moves on to calculating the next frame.\n" +"\n" +"As this happens dozens of times per second, you get the illusion of " +"movement. This is similar to how traditional animation works." +msgstr "" +"Но не только наш персонаж имеет функцию [code]_process()[/code]; почти всё в " +"игре имеет функцию [code]_process()[/code]!\n" +"\n" +"Десятки раз в секунду Godot запускает каждую функцию [code]_process()[/code] " +"в игре, чтобы обновить игровой мир.\n" +"\n" +"После этого он выводит изображение игрового мира на экран. Мы называем это " +"изображение [b]кадром[/b].\n" +"\n" +"Затем Godot переходит к вычислению следующего кадра.\n" +"\n" +"Поскольку обновление кадра происходит десятки раз в секунду, создается " +"иллюзия движения. Это похоже на то, как работает традиционная анимация." + +#: course/lesson-11-time-delta/lesson.tres:50 +msgid "This sounds like Frames Per Second..." +msgstr "Это похоже на количество кадров в секунду..." + +#: course/lesson-11-time-delta/lesson.tres:52 +msgid "" +"You may have heard of frames per second, or FPS for short. Games often run " +"at 60 frames per second. \n" +"\n" +"It means that everything in the game updates 60 times each second.\n" +"\n" +"The number varies while playing, depending on the game and the device it " +"runs on.\n" +"\n" +"On powerful computers, you may get frame rates in the hundreds or thousands " +"of frames per second." +msgstr "" +"Возможно, вы слышали о частоте кадров в секунду, или FPS, если сокращённо. " +"Часто игры работают со скоростью 60 кадров в секунду.\n" +"\n" +"Это означает, что всё в игре обновляется 60 раз каждую секунду.\n" +"\n" +"Во время игры это число меняется в зависимости от характеристик игры и " +"устройства, на котором она запущена.\n" +"\n" +"На мощных компьютерах частота кадров может составлять сотни или тысячи " +"кадров в секунду." + +#: course/lesson-11-time-delta/lesson.tres:68 +msgid "Let's look at the [code]_process()[/code] function in more detail." +msgstr "Давайте рассмотрим функцию [code]_process()[/code] более детально." + +#: course/lesson-11-time-delta/lesson.tres:76 +msgid "What parameter does the _process() function take?" +msgstr "Какой параметр принимает функция _process()?" + +#: course/lesson-11-time-delta/lesson.tres:77 +msgid "" +"[code]\n" +"func _process(delta):\n" +"\trotate(0.05)\n" +"[/code]" +msgstr "" +"[code]\n" +"func _process(delta):\n" +"\trotate(0.05)\n" +"[/code]" + +#: course/lesson-11-time-delta/lesson.tres:82 +msgid "" +"The [code]_process()[/code] function has one parameter named [code]delta[/" +"code]." +msgstr "" +"Функция [code]_process()[/code] принимает один параметр, называемый " +"[code]delta[/code]." + +#: course/lesson-11-time-delta/lesson.tres:83 +msgid "rotate" +msgstr "rotate" + +#: course/lesson-11-time-delta/lesson.tres:83 +msgid "0.05" +msgstr "0.05" + +#: course/lesson-11-time-delta/lesson.tres:83 +#: course/lesson-11-time-delta/lesson.tres:84 +msgid "delta" +msgstr "delta" + +#: course/lesson-11-time-delta/lesson.tres:91 +msgid "Frames take varying amounts of time to calculate" +msgstr "Кадры требуют различного количества времени на вычисление" + +#: course/lesson-11-time-delta/lesson.tres:93 +msgid "" +"Depending on the game, the computer, and what the game engine needs to " +"calculate, frames take more or less time to display.\n" +"\n" +"There will always be milliseconds variations from frame to frame.\n" +"\n" +"That is why the [code]_process()[/code] function receives a [code]delta[/" +"code] parameter.\n" +"\n" +"Delta represents a time difference. It's the time passed since the previous " +"frame, in seconds.\n" +"\n" +"The [code]delta[/code] parameter tells us how long it took for Godot to " +"complete the [b]previous frame[/b].\n" +"\n" +"We can use it to ensure that the changes between frames don't make the " +"game's behavior unreliable.\n" +"\n" +"This is because different computers run differently, so a fast computer will " +"have more frames per second than a slow computer.\n" +"\n" +"If we ignore [code]delta[/code], the game experience will vary, depending on " +"the computer. Delta helps to make the game experience consistent for " +"everyone." +msgstr "" +"В зависимости от игры, компьютера и объёма вычислений, которые должен " +"сделать игровой движок, приготовление кадра к отображению может занять " +"больше или меньше времени.\n" +"\n" +"Эта процедура всегда будет выполняться с разницей в несколько миллисекунд от " +"кадра к кадру.\n" +"\n" +"Именно поэтому функция [code]_process()[/code] принимает параметр " +"[code]delta[/code].\n" +"\n" +"Словом «дельта» (delta) обозначается разница, в нашем случае — разница во " +"времени. Это количество времени, прошедшее с момента начала обработки " +"предыдущего кадра, в секундах.\n" +"\n" +"Параметр [code]delta[/code] сообщает нам, сколько времени затратил Godot на " +"отрисовку [b]предыдущего кадра[/b].\n" +"\n" +"Мы можем использовать его, чтобы гарантировать, что различия между кадрами " +"не испортят симуляцию игры.\n" +"\n" +"Это связано с тем, что разные компьютеры работают по-разному, поэтому на " +"быстром компьютере будет больше кадров в секунду, чем на медленном.\n" +"\n" +"Если мы проигнорируем [code]delta[/code], впечатления от игры будут " +"различаться в зависимости от компьютера. Delta помогает сделать игровой " +"процесс одинаковым для всех." + +#: course/lesson-11-time-delta/lesson.tres:115 +msgid "What do we know about delta?" +msgstr "Что мы знаем о параметре delta?" + +#: course/lesson-11-time-delta/lesson.tres:118 +msgid "" +"[code]delta[/code] is the time it took Godot to complete the previous frame " +"in seconds.\n" +"\n" +"It's very small because frames happen many times a second.\n" +"\n" +"It varies each frame because Godot needs to process more or less each frame." +msgstr "" +"[code]delta[/code] — это время, которое потребовалось Godot для завершения " +"предыдущего кадра в секундах.\n" +"\n" +"Это значение очень мало, так как за одну секунду обрабатывается множество " +"кадров.\n" +"\n" +"Значение delta отличается от кадра к кадру, так как обработку каждого из них " +"Godot выполняет за различное количество времени." + +#: course/lesson-11-time-delta/lesson.tres:123 +#: course/lesson-11-time-delta/lesson.tres:124 +msgid "It's a value in seconds." +msgstr "Это значение в секундах." + +#: course/lesson-11-time-delta/lesson.tres:123 +#: course/lesson-11-time-delta/lesson.tres:124 +msgid "It varies each frame." +msgstr "Он имеет различное значение каждый кадр." + +#: course/lesson-11-time-delta/lesson.tres:123 +#: course/lesson-11-time-delta/lesson.tres:124 +msgid "It's the time it took Godot to complete the previous frame." +msgstr "Это время, которое затрачивает Godot для завершения предыдущего кадра." + +#: course/lesson-11-time-delta/lesson.tres:131 +msgid "Multiplying by delta" +msgstr "Умножение на дельту" + +#: course/lesson-11-time-delta/lesson.tres:133 +msgid "" +"The [code]delta[/code] you get in [code]_process()[/code] is a time " +"difference in seconds. It will generally be a tiny decimal number.\n" +"\n" +"To apply [code]delta[/code], you need to [i]multiply[/i] your speed values " +"by it." +msgstr "" +"[code]Delta[/code], которую вы получаете в функции [code]_process()[/code] — " +"это разница во времени в секундах. Обычно она представлена очень маленькой " +"десятичной дробью.\n" +"\n" +"Чтобы применить параметр [code]delta[/code], вам нужно [i]умножить[/i] все " +"значения скорости на него." + +#: course/lesson-11-time-delta/lesson.tres:155 +msgid "" +"When multiplying by [code]delta[/code], you make motion [i]time-dependent[/" +"i] rather than [i]frame-dependent[/i].\n" +"\n" +"That's essential to make your game consistent and fair." +msgstr "" +"Умножением на [code]delta[/code] вы делаете движение [i]зависящим от " +"времени[/i] (time-dependent), и стираете его [i]зависимость от кадра[/i] " +"(frame-dependent).\n" +"\n" +"Это важно для того, чтобы ваша игра была последовательной и справедливой." + +#: course/lesson-11-time-delta/lesson.tres:165 +msgid "Why do we use the number 3.0 in this example?" +msgstr "Почему мы используем число 3.0 в этом примере?" + +#: course/lesson-11-time-delta/lesson.tres:167 +msgid "" +"At the top of the lesson, we made the robot rotate a fixed amount every " +"frame: [code]0.05[/code] radians.\n" +"\n" +"In the example above, we now [i]multiply[/i] the argument by the very small " +"[code]delta[/code] value, a value way below [code]1.0[/code]. It makes the " +"robot turn at a constant speed over time.\n" +"\n" +"However, multiplying by a number below [code]1.0[/code] like [code]delta[/" +"code] makes the result smaller.\n" +"\n" +"To compensate for that and make the robot turn fast enough, we use a larger " +"number than before, [code]3.0[/code] instead of [code]0.05[/code].\n" +"\n" +"Those numbers have two different [i]units[/i]: [code]0.05[/code] is an " +"[i]angle[/i] in radians, while [code]3.0[/code] is an [i]angular speed[/i] " +"in radians per second.\n" +"\n" +"When you multiply a speed by a time delta, it gives you an angle.\n" +"\n" +"Don't worry if it's a little confusing for now. It'll eventually click as " +"you deal with speed, acceleration, and motion in your game projects." +msgstr "" +"Перед этим уроком мы сделали так, чтобы робот вращался на фиксированное " +"значение ([code]0.05[/code] радиан) каждый кадр.\n" +"\n" +"В примере выше мы [i]умножили[/i] аргумент на очень маленькое значение " +"[code]delta[/code], значение, существенно меньшее чем [code]1.0[/code]. " +"Благодаря этому робот поворачивается со скоростью, фиксированной во времени." +"\n" +"\n" +"Однако умножение на число ниже [code]1.0[/code], такое как [code]delta[/code]" +", делает результат меньше.\n" +"\n" +"Чтобы компенсировать это и сделать вращение робота достаточно быстрым, мы " +"должны использовать числа, которые больше тех, что мы использовали раньше, " +"[code]3.0[/code] вместо [code]0.05[/code].\n" +"\n" +"Эти числа имеют две разные [i]единицы измерения[/i]: [code]0,05[/code] — это " +"[i]угол[/i] в радианах, а [code]3.0[/code] — это [i]угловая скорость[/i] в " +"радианах в секунду.\n" +"\n" +"Когда вы умножаете скорость на дельту времени, в результате вы получаете " +"угол.\n" +"\n" +"Не волнуйтесь, если сейчас это несколько обескураживает. В конечном итоге " +"понимание к вам придёт после того, как вы разберётесь со скоростью, " +"ускорением и движением в ваших игровых проектах." + +#: course/lesson-11-time-delta/lesson.tres:187 +msgid "Why the time between frames matters" +msgstr "Почему разница во времени между кадрами важна" + +#: course/lesson-11-time-delta/lesson.tres:189 +msgid "" +"The time it takes to display a new frame varies.\n" +"\n" +"If you don't take that time into account in your code, your game will have " +"gameplay issues and bugs. Godot provides that time to the [code]_process()[/" +"code] function through the [code]delta[/code] parameter.\n" +"\n" +"In the example below, the top robot moves using [code]delta[/code]. As a " +"result, it moves at a fixed speed.\n" +"\n" +"The bottom robot moves over a constant distance every frame, [i]without[/i] " +"taking [code]delta[/code] into account. It will move faster or slower than " +"the top robot on [i]your[/i] computer.\n" +"\n" +"The bottom robot will move [i]differently for everyone[/i]!" +msgstr "" +"Время, которое требуется для отображения нового кадра варьируется.\n" +"\n" +"Если вы не учтёте это в коде, ваша игра будет иметь геймплейные проблемы и " +"баги. Godot предоставляет это время в функции [code]_process()[/code] через " +"параметр [code]delta[/code].\n" +"\n" +"В примере ниже верхний робот двигается с применением [code]delta[/code]. В " +"результате он двигается с фиксированной скоростью.\n" +"\n" +"Нижний робот двигается на фиксированную дистанцию каждый кадр, [i]без[/i] " +"применения [code]delta[/code] в вычислениях. По этой причине он будет " +"двигаться быстрее или медленнее чем верхний робот, в зависимости от " +"характеристик [i]вашего[/i] компьютера.\n" +"\n" +"Нижний робот будет двигаться [i]у всех по-разному[/i]!" + +#: course/lesson-11-time-delta/lesson.tres:217 +msgid "" +"Multiplying time-sensitive values by [code]delta[/code] makes them [b]time-" +"dependent[/b] rather than [b]frame-dependent[/b].\n" +"\n" +"Thanks to that, we get reliable movement over time.\n" +"\n" +"Without [code]delta[/code], frame times vary from computer to computer and " +"during gameplay. Because of that, the movement will differ for every player, " +"making the game inconsistent and messy." +msgstr "" +"Умножение чувствительных ко времени значений на [code]delta[/code] сделает " +"их [b]зависимыми от времени[/b] в противовес их изначальной [b]зависимости " +"от кадров[/b].\n" +"\n" +"Это позволит нам получить достоверное движение на протяжении всего времени.\n" +"\n" +"Без [code]delta[/code], время которое игрок проводит в кадре отличалось бы " +"от компьютера к компьютеру и на протяжении игры. По этой причине скорость " +"передвижения была бы разной для каждого из игроков, что сделало бы игру " +"непредсказуемой и беспорядочной." + +#: course/lesson-11-time-delta/lesson.tres:229 +msgid "What does this mean?" +msgstr "Что это значит?" + +#: course/lesson-11-time-delta/lesson.tres:230 +msgid "[code]rotation_speed * delta[/code]" +msgstr "[code]rotation_speed * delta[/code]" + +#: course/lesson-11-time-delta/lesson.tres:232 +msgid "" +"The [code]*[/code] symbol means we're multiplying [code]rotation_speed[/" +"code] by [code]delta[/code] time." +msgstr "" +"Символ [code]*[/code] обозначает умножение [code]rotation_speed[/code] на " +"[code]delta[/code] времени." + +#: course/lesson-11-time-delta/lesson.tres:233 +#: course/lesson-11-time-delta/lesson.tres:234 +msgid "We're multiplying rotation_speed by delta." +msgstr "Мы умножаем rotation_speed на delta." + +#: course/lesson-11-time-delta/lesson.tres:233 +msgid "We're dividing delta by rotation_speed." +msgstr "Мы делим delta на rotation_speed." + +#: course/lesson-11-time-delta/lesson.tres:233 +msgid "We're adding rotation_speed to delta." +msgstr "Мы прибавляем rotation_speed к delta." + +#: course/lesson-11-time-delta/lesson.tres:233 +msgid "We're subtracting delta from rotation_speed." +msgstr "Мы вычитаем delta из rotation_speed." + +#: course/lesson-11-time-delta/lesson.tres:243 +msgid "In the next practice, we'll use delta to make rotating time-dependent." +msgstr "" +"В следующем упражнении мы будем использовать delta чтобы сделать вращение " +"зависимым от времени." + +#: course/lesson-11-time-delta/lesson.tres:251 +msgid "Rotating Using Delta" +msgstr "Вращение с использованием дельты" + +#: course/lesson-11-time-delta/lesson.tres:252 +msgid "" +"At the moment, the rotation of the robot is frame-dependent.\n" +"\n" +"Add [code]delta[/code] to make the rotational speed time-dependent.\n" +"\n" +"The robot should rotate [code]2[/code] radians per second." +msgstr "" +"В текущий момент скорость вращения робота зависит от скорости расчёта " +"кадров.\n" +"\n" +"Добавьте [code]delta[/code] чтобы сделать скорость вращения зависимой от " +"времени.\n" +"\n" +"Робот должен вращаться на [code]2[/code] радиана в секунду." + +#: course/lesson-11-time-delta/lesson.tres:271 +msgid "Moving in a Circle Using Delta" +msgstr "Перемещение по кругу с использованием дельты" + +#: course/lesson-11-time-delta/lesson.tres:272 +msgid "" +"In this practice, make the robot move in a smooth circle using delta.\n" +"\n" +"To get this movement, the robot should rotate [code]2[/code] radians per " +"second and move [code]100[/code] pixels per second towards clockwise.\n" +"\n" +"[b]Note:[/b] Please write the values in the parentheses when calling the " +"functions. If you define extra variables, we will not be able to check your " +"practice." +msgstr "" +"В этом упражнении вам нужно заставить робота двигаться плавно по окружности, " +"при помощи delta.\n" +"\n" +"Робот должен вращаться на [code]2[/code] радиана в секунду и двигаться на " +"[code]100[/code] пикселей в секунду по часовой стрелке.\n" +"\n" +"[b]Примечание:[/b] Пожалуйста, при вызове функций пишите значения в круглых " +"скобках. Если вы определите дополнительные переменные, мы не сможем " +"проверить правильность вашего решения." + +#: course/lesson-11-time-delta/lesson.tres:290 +msgid "Time Delta" +msgstr "Дельта времени" diff --git a/i18n/ru/lesson-12-using-variables.po b/i18n/ru/lesson-12-using-variables.po new file mode 100644 index 00000000..b7a88bee --- /dev/null +++ b/i18n/ru/lesson-12-using-variables.po @@ -0,0 +1,299 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-12-using-variables/lesson.tres:14 +msgid "" +"In this lesson, we'll make our code easier to follow and understand at a " +"glance.\n" +"\n" +"Take a look at this example." +msgstr "" +"В этом уроке мы сделаем наш код более простым и понятным с первого взгляда.\n" +"\n" +"Взгляните на этот пример." + +#: course/lesson-12-using-variables/lesson.tres:34 +msgid "In the above example, what does the number 4 mean?" +msgstr "Что в приведённом выше примере означает число 4?" + +#: course/lesson-12-using-variables/lesson.tres:37 +msgid "The code above rotates the character [code]4[/code] radians per second." +msgstr "" +"Код приведённый выше вращает персонажа со скоростью [code]4[/code] радиана в " +"секунду." + +#: course/lesson-12-using-variables/lesson.tres:38 +#: course/lesson-12-using-variables/lesson.tres:39 +msgid "It's how fast the character rotates." +msgstr "Это насколько быстро вращается персонаж." + +#: course/lesson-12-using-variables/lesson.tres:38 +msgid "It's how far the character moves in pixels." +msgstr "Это расстояние, на которое перемещается персонаж в пикселях." + +#: course/lesson-12-using-variables/lesson.tres:38 +msgid "It's how long the rotation takes." +msgstr "Это время, которое занимает вращение." + +#: course/lesson-12-using-variables/lesson.tres:48 +msgid "" +"We can guess what a number represents by looking at the function names, but " +"it's harder to recall what this number does by quickly looking at the code.\n" +"\n" +"We've seen how different functions have their own names. Using these names " +"communicates to developers what the functions do." +msgstr "" +"Мы можем догадаться, что представляет собой число, по названию функций, но " +"при беглом осмотре кода понять его назначение будет сложно.\n" +"\n" +"Мы уже видели названия различных функций. Правильно подобранное название " +"даёт разработчикам информацию о том, что именно делает функция." + +#: course/lesson-12-using-variables/lesson.tres:70 +msgid "" +"As we learned in lesson 8, we can also assign labels to numbers to help us " +"remember what they do.\n" +"\n" +"We call these labels [i]variables[/i].\n" +"\n" +"[b]A variable is a label for a value we can save, change, and read later.[/" +"b]\n" +"\n" +"Let's recap how to define a variable." +msgstr "" +"В уроке 8 мы узнали, что мы также можем присвоить метки числам, чтобы " +"запомнить, для чего они нужны.\n" +"\n" +"Мы называем эти метки [i]переменными[/i].\n" +"\n" +"[b]Переменная — это метка для значения, дающая возможность сохранить, " +"изменить и прочитать его позже.[/b]\n" +"\n" +"Давайте вспомним как определить переменную." + +#: course/lesson-12-using-variables/lesson.tres:96 +msgid "" +"We improve the first example to make it clear what the number [code]4[/code] " +"does." +msgstr "" +"Мы улучшим первый пример, чтобы предназначение числа [code]4[/code] стало " +"более очевидным." + +#: course/lesson-12-using-variables/lesson.tres:116 +msgid "" +"Labeling a value makes the code easier for us to read now [i]and[/i] in the " +"future." +msgstr "" +"Маркировка значения делает код более лёгким для чтения сейчас [i]и[/i] в " +"будущем." + +#: course/lesson-12-using-variables/lesson.tres:124 +msgid "In the above example, which line defines the angular speed variable?" +msgstr "" +"Какая строка определяет переменную угловой скорости в приведённом выше " +"примере?" + +#: course/lesson-12-using-variables/lesson.tres:127 +msgid "" +"We create the [code]angular_speed[/code] variable, then assign it the value " +"of [code]4[/code]." +msgstr "" +"Мы создаём переменную [code]angular_speed[/code], а затем присваиваем ей " +"значение [code]4[/code]." + +#: course/lesson-12-using-variables/lesson.tres:128 +#: course/lesson-12-using-variables/lesson.tres:129 +msgid "var angular_speed = 4" +msgstr "var angular_speed = 4" + +#: course/lesson-12-using-variables/lesson.tres:128 +msgid "func _process(delta):" +msgstr "func _process(delta):" + +#: course/lesson-12-using-variables/lesson.tres:128 +msgid "rotate(angular_speed * delta)" +msgstr "rotate(angular_speed * delta)" + +#: course/lesson-12-using-variables/lesson.tres:138 +msgid "" +"If we define variables outside of functions, we can re-use them in different " +"functions.\n" +"\n" +"Because any function can use variables we define outside of them, we call " +"these variables [b]script-wide[/b].\n" +"\n" +"Here we use the [code]angular_speed[/code] script-wide variable in both the " +"[code]_process()[/code] function and the [code]set_angular_speed()[/code] " +"function." +msgstr "" +"Определение переменных снаружи функций позволяет нам использовать их в " +"разных функциях.\n" +"\n" +"Поскольку любая функция может использовать переменные определённые снаружи, " +"мы называем эти переменные [b]переменными скрипта[/b].\n" +"\n" +"Здесь мы используем переменную скрипта [code]angular_speed[/code] в обеих " +"функциях: функции [code]_process()[/code] и функции [code]set_angular_speed()" +"[/code]." + +#: course/lesson-12-using-variables/lesson.tres:162 +msgid "" +"We can also define variables inside of functions.\n" +"\n" +"We align the variable assignment by indenting to make it part of the " +"function body. Make sure to create the variable before using it!\n" +"\n" +"If we define a variable inside of a function, only that function can use it." +msgstr "" +"Также мы может определять переменные внутри функций.\n" +"\n" +"При помощи отступов мы помечаем, что место использования переменной является " +"частью тела функции. Убедитесь что создали переменную перед её " +"использованием!\n" +"\n" +"Если мы определим переменную внутри функции, только эта функция сможет её " +"использовать." + +#: course/lesson-12-using-variables/lesson.tres:186 +msgid "" +"The [code]angular_speed[/code] variable only exists inside [code]_process()[/" +"code], because we defined it there. The [code]set_angular_speed()[/code] " +"function can't use it.\n" +"\n" +"Trying to use it there will result in an error.\n" +"\n" +"Here's what this error might look like." +msgstr "" +"Переменная [code]angular_speed[/code] существует только внутри " +"[code]_process()[/code], потому что она определена внутри этой функции. " +"Функция [code]set_angular_speed()[/code] не может её использовать.\n" +"\n" +"Попытка использовать переменную в ней приведёт к ошибке.\n" +"\n" +"Вот как может выглядеть эта ошибка." + +#: course/lesson-12-using-variables/lesson.tres:208 +msgid "Where can we define variables?" +msgstr "Где мы можем определять переменные?" + +#: course/lesson-12-using-variables/lesson.tres:211 +msgid "" +"Functions can use any variables defined outside of functions. These " +"variables are [b]script-wide[/b].\n" +"\n" +"If we define a variable inside of a function, only that function can use it." +msgstr "" +"Функции могут использовать любые переменные определённые снаружи функций. " +"Эти переменные называются [b]переменными скрипта[/b].\n" +"\n" +"Если мы определим переменную внутри функции, только эта функция сможет её " +"использовать." + +#: course/lesson-12-using-variables/lesson.tres:214 +#: course/lesson-12-using-variables/lesson.tres:215 +msgid "Outside of functions." +msgstr "За пределами функций." + +#: course/lesson-12-using-variables/lesson.tres:214 +#: course/lesson-12-using-variables/lesson.tres:215 +msgid "Inside of functions." +msgstr "Внутри функций." + +#: course/lesson-12-using-variables/lesson.tres:224 +msgid "" +"Variables are also great at grouping values that control how a character " +"behaves.\n" +"\n" +"Grouping them in this way allows us to easily change them." +msgstr "" +"Также переменные отлично подходят для группировки значений, управляющих " +"поведением персонажа.\n" +"\n" +"Такая группировка позволит нам легко изменять их." + +#: course/lesson-12-using-variables/lesson.tres:246 +msgid "" +"In the following practices, we'll define variables and use them with some " +"familiar functions to make our code more readable." +msgstr "" +"В последующих упражнениях мы будем определять переменные и использовать их в " +"некоторых знакомых функциях, чтобы сделать наш код более читабельным." + +#: course/lesson-12-using-variables/lesson.tres:254 +msgid "Clarifying Code Using Variables" +msgstr "Улучшаем читабельность кода с помощью переменных" + +#: course/lesson-12-using-variables/lesson.tres:255 +msgid "" +"Let's give the [code]4[/code] here a label so we know what it does.\n" +"\n" +"Create a variable called [code]angular_speed[/code] outside of the " +"[code]_process()[/code] function to make it script-wide. This allows us to " +"use it in other functions too.\n" +"\n" +"Then, replace the [code]4[/code] with [code]angular_speed[/code]." +msgstr "" +"Давайте дадим значению [code]4[/code] метку, чтобы мы знали что оно " +"обозначает.\n" +"\n" +"Создайте переменную [code]angular_speed[/code] снаружи функции " +"[code]_process()[/code] чтобы сделать её переменной скрипта. Это позволит " +"нам использовать её в других функциях тоже.\n" +"\n" +"После, замените цифру [code]4[/code] именем переменной [code]angular_speed[/" +"code]." + +#: course/lesson-12-using-variables/lesson.tres:269 +msgid "" +"Using variables to store number values makes code easier to read. Tidy up " +"this function by storing a value in a variable." +msgstr "" +"Использование переменных для хранения чисел делает код более читабельным. " +"Приведите функцию в порядок при помощи сохранения значений в переменные." + +#: course/lesson-12-using-variables/lesson.tres:274 +msgid "Fixing an Out of Scope Error" +msgstr "Исправьте ошибку «Out of Scope»" + +#: course/lesson-12-using-variables/lesson.tres:275 +msgid "" +"There's something wrong with the code here. Can you see what it is?\n" +"\n" +"Run the code and read the error.\n" +"\n" +"Correct the code so it works as intended." +msgstr "" +"В этом коде что-то не так. Видите ли вы, что именно?\n" +"\n" +"Запустите код и прочитайте текст ошибки.\n" +"\n" +"Скорректируйте код, чтобы он стал работать, как задумано." + +#: course/lesson-12-using-variables/lesson.tres:293 +msgid "Uh oh! There's something wrong here. Can you fix it?" +msgstr "Ой-ёй! Здесь что-то не так. Можете это исправить?" + +#: course/lesson-12-using-variables/lesson.tres:297 +msgid "Using Variables to Make Code Easier to Read" +msgstr "Использование переменных для улучшения читабельности кода" diff --git a/i18n/ru/lesson-13-conditions.po b/i18n/ru/lesson-13-conditions.po new file mode 100644 index 00000000..59636620 --- /dev/null +++ b/i18n/ru/lesson-13-conditions.po @@ -0,0 +1,435 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-13-conditions/lesson.tres:14 +msgid "" +"In previous lessons, we decreased and increased a character's health, but " +"there was no limit to how much health they could have." +msgstr "" +"В предыдущих уроках мы уменьшали и увеличивали здоровье персонажа, но " +"никакого предела того, сколько здоровья может быть у персонажа, не было." + +#: course/lesson-13-conditions/lesson.tres:34 +msgid "" +"As a result, the player could increase their character's health " +"indefinitely, which we do not want." +msgstr "" +"В результате игрок мог бесконечно увеличивать уровень здоровья своего " +"персонажа, чего мы не хотим." + +#: course/lesson-13-conditions/lesson.tres:52 +msgid "What happens to health when we damage our character?" +msgstr "Что происходит со здоровьем, когда мы наносим урон нашему персонажу?" + +#: course/lesson-13-conditions/lesson.tres:53 +msgid "" +"Suppose our character has [code]100[/code] health.\n" +"\n" +"What would the value of health be if we called [code]take_damage(25)[/code] " +"[b]five times[/b]?" +msgstr "" +"Предположим, наш персонаж имеет [code]100[/code] здоровья.\n" +"\n" +"Сколько здоровья будет у персонажа, если мы вызовем " +"[code]take_damage(25)[/code] [b]пять раз[/b]?" + +#: course/lesson-13-conditions/lesson.tres:57 +msgid "" +"Calling [code]take_damage(25)[/code] five times would subtract a total of " +"[code]125[/code] from [code]100[/code].\n" +"\n" +"100\n" +"75\n" +"50\n" +"25\n" +"0\n" +"-25" +msgstr "" +"Пятикратный вызов [code]take_damage(25)[/code] суммарно вычтет [code]125[/" +"code] из [code]100[/code].\n" +"\n" +"100\n" +"75\n" +"50\n" +"25\n" +"0\n" +"-25" + +#: course/lesson-13-conditions/lesson.tres:65 +#: course/lesson-13-conditions/lesson.tres:66 +msgid "-25" +msgstr "-25" + +#: course/lesson-13-conditions/lesson.tres:65 +msgid "25" +msgstr "25" + +#: course/lesson-13-conditions/lesson.tres:65 +msgid "0" +msgstr "0" + +#: course/lesson-13-conditions/lesson.tres:75 +msgid "" +"We can use conditions to run actions [b]selectively[/b].\n" +"\n" +"Conditions make your code branch into two paths: if the condition is met, " +"the computer will run the corresponding instructions. Otherwise, those " +"instructions will not run at all." +msgstr "" +"Мы можем использовать условия для выполнения действий [b]выборочно[/b].\n" +"\n" +"Условия создадут в вашем коде разветвление на два пути: если условие " +"выполнено, компьютер выполнит соответствующие ему инструкции. Иначе, эти " +"инструкции не выполнятся." + +#: course/lesson-13-conditions/lesson.tres:87 +msgid "" +"Video games and other computer programs are full of conditions. For example, " +"game input largely relies on conditions: [i]if[/i] the player presses the " +"button on a gamepad, the character jumps." +msgstr "" +"Видеоигры и другие компьютерные программы полны условий. Например, " +"пользовательский ввод в игре очень сильно зависит от условий: [i]если[/i] " +"игрок нажал кнопку на геймпаде — персонаж подпрыгивает." + +#: course/lesson-13-conditions/lesson.tres:107 +msgid "" +"When the computer checks a condition, this is called [b]to evaluate[/b] a " +"condition. All conditions [b]evaluate[/b] to either [code]true[/code] or " +"[code]false[/code].\n" +"\n" +"Either the player is pressing the button, or not. Either the character is " +"touching an enemy, or not.\n" +"\n" +"In our case, [i]if[/i] the health goes over a maximum value, we want to " +"reset it to the maximum.\n" +"\n" +"To define a condition, we use the [code]if[/code] keyword. We write a line " +"starting with [code]if[/code], [ignore]type the condition to evaluate, and " +"end the line with a colon." +msgstr "" +"Процесс проверки условий компьютером называется [b]оценкой[/b] условий. Все " +"условия [b]оцениваются[/b] как истинные ([code]true[/code]) либо как ложные " +"([code]false[/code]).\n" +"\n" +"Нажал ли игрок на кнопку или нет. Соприкасается ли игрок с противником или " +"нет.\n" +"\n" +"В нашем случае, [i]если[/i] здоровье превышает максимальное значение, мы " +"хотим сбросить его до максимального.\n" +"\n" +"Чтобы определить условие мы используем ключевое слово [code]if[/code]. Мы " +"начинаем строку с [code]if[/code], затем пишем условие для оценки и " +"заканчиваем строку двоеточием." + +#: course/lesson-13-conditions/lesson.tres:133 +msgid "" +"Notice the [code]>[/code] comparison sign. We read this symbol as \"greater " +"than\".\n" +"\n" +"We've seen how function definitions use a colon at the end of the first line " +"and nest content inside.\n" +"\n" +"In GDScript, this syntax is a recurring pattern for all code blocks.\n" +"\n" +"The computer knows which instructions belong to the condition because they " +"are indented." +msgstr "" +"Обратите внимание на знак сравнения [code]>[/code]. Мы читаем этот символ " +"как «больше чем».\n" +"\n" +"Мы видели, как определения функций используют двоеточие в конце первой " +"строки и вкладывают содержимое внутрь.\n" +"\n" +"В GDScript этот синтаксис является повторяющимся шаблоном для всех блоков " +"кода.\n" +"\n" +"Компьютер понимает, какие инструкции относятся к условию, потому что они " +"помечены отступом." + +#: course/lesson-13-conditions/lesson.tres:157 +msgid "Comparisons" +msgstr "Сравнения" + +#: course/lesson-13-conditions/lesson.tres:159 +msgid "" +"In the above example, we used the [code]>[/code] syntax to mean \"greater " +"than\".\n" +"\n" +"We can compare numbers in other ways too.\n" +"\n" +"[code]>[/code] means \"greater than\"\n" +"[code]<[/code] means \"less than\"\n" +"[code]==[/code] means \"equal to\"\n" +"[code]!=[/code] means \"not equal to\"\n" +"\n" +"Here's how we might use these in [code]if[/code] statements.\n" +msgstr "" +"В примере выше мы использовали символ [code]>[/code] означающий «больше чем»." +"\n" +"\n" +"Мы можем сравнить числа и другими способами.\n" +"\n" +"[code]>[/code] означает «больше чем»\n" +"[code]<[/code] означает «меньше чем»\n" +"[code]==[/code] означает «равно»\n" +"[code]!=[/code] означает «не равно»\n" +"\n" +"Вот примеры того, как мы можем использовать эти способы в условии " +"[code]if[/code].\n" + +#: course/lesson-13-conditions/lesson.tres:187 +msgid "What does \"pass\" do in the code?" +msgstr "Что означает \"pass\" в коде?" + +#: course/lesson-13-conditions/lesson.tres:189 +msgid "" +"The [code]pass[/code] keyword prevents errors in our code when a line cannot " +"be empty.\n" +"\n" +"For example, we must have a line of code after a function definition or an " +"[code]if[/code] block. When you don't know what to write yet, you can use " +"the [code]pass[/code] keyword as a placeholder, and Godot won't give any " +"errors.\n" +"\n" +"In the previous example, if there was nothing below the [code]if[/code] " +"lines, Godot would give us an \"Expected an indented block after 'if' \" " +"error." +msgstr "" +"Ключевое слово [code]pass[/code] предотвращает ошибки в нашем коде, когда " +"строка не может быть пустой.\n" +"\n" +"Например, после определения функции или блока [code]if[/code] должна быть " +"строка кода. Если вы еще не знаете, что писать, вы можете использовать " +"ключевое слово [code]pass[/code] в качестве заглушки, и Godot не выдаст " +"никаких ошибок.\n" +"\n" +"В предыдущем примере, если бы под строками [code]if[/code] ничего не было, " +"Godot выдал бы нам ошибку «Ожидается блок с отступом после 'if'»." + +#: course/lesson-13-conditions/lesson.tres:201 +msgid "Which of these statements are true?" +msgstr "Какое из этих условий истинно?" + +#: course/lesson-13-conditions/lesson.tres:204 +msgid "" +"The comparison [code]3 > 1[/code] means \"three is greater than one\" which " +"is [b]true[/b].\n" +"The comparison [code]2 < 3[/code] means \"two is less than three\" which is " +"[b]true[/b].\n" +"The comparison [code]1 != 3[/code] means \"one is not equal to three\" which " +"is [b]true[/b].\n" +"\n" +"The comparison [code]2 == 1[/code] means \"two is equal to one\" which is " +"[b]false[/b].\n" +"The comparison [code]3 < 1[/code] means \"three is less than one\" which is " +"[b]false[/b]." +msgstr "" +"Сравнение [code]3 > 1[/code] означает «три больше чем один», что " +"[b]истинно[/b].\n" +"Сравнение [code]2 < 3[/code] означает «два меньше чем три», что " +"[b]истинно[/b].\n" +"Сравнение [code]1 != 3[/code] означает «один не равно трём», что " +"[b]истинно[/b].\n" +"\n" +"Сравнение [code]2 == 1[/code] означает «два равно одному», что [b]ложно[/b]." +"\n" +"Сравнение [code]3 < 1[/code] означает «три меньше чем один», что " +"[b]ложно[/b]." + +#: course/lesson-13-conditions/lesson.tres:210 +#: course/lesson-13-conditions/lesson.tres:211 +msgid "3 > 1" +msgstr "3 > 1" + +#: course/lesson-13-conditions/lesson.tres:210 +msgid "2 == 1" +msgstr "2 == 1" + +#: course/lesson-13-conditions/lesson.tres:210 +#: course/lesson-13-conditions/lesson.tres:211 +msgid "2 < 3" +msgstr "2 < 3" + +#: course/lesson-13-conditions/lesson.tres:210 +#: course/lesson-13-conditions/lesson.tres:211 +msgid "1 != 3" +msgstr "1 != 3" + +#: course/lesson-13-conditions/lesson.tres:210 +msgid "3 < 1" +msgstr "3 < 1" + +#: course/lesson-13-conditions/lesson.tres:218 +msgid "Or else..." +msgstr "Иначе..." + +#: course/lesson-13-conditions/lesson.tres:220 +msgid "" +"The [code]if[/code] keyword comes with a complementary [code]else[/code] " +"keyword.\n" +"\n" +"You can write an [code]else[/code] block after an [code]if[/code] block, " +"like so." +msgstr "" +"Ключевое слово [code]if[/code] имеет вспомогательное ключевое слово " +"[code]else[/code].\n" +"\n" +"Вы можете написать блок [code]else[/code] после блока [code]if[/code] вот " +"так." + +#: course/lesson-13-conditions/lesson.tres:242 +msgid "" +"The [code]else[/code] block will run whenever the condition above it isn't " +"met." +msgstr "" +"Блок [code]else[/code] выполнится в том случае, если условие над ним ложно." + +#: course/lesson-13-conditions/lesson.tres:252 +msgid "" +"In the following practices, we'll use conditions and improve the way our " +"character's health changes so it has limits." +msgstr "" +"В следующих упражнениях мы используем условия для улучшения способа " +"изменения здоровья персонажа, чтобы оно имело ограничения." + +#: course/lesson-13-conditions/lesson.tres:260 +msgid "Using Comparisons" +msgstr "Использование условий" + +#: course/lesson-13-conditions/lesson.tres:261 +msgid "" +"This series of [code]if[/code] statements is all wrong. Change the " +"comparisons so each comparison matches the instruction below it.\n" +"\n" +"Keep the values and statements as they are; only change the comparison " +"signs.\n" +"\n" +"As a reminder, the comparison signs are:\n" +"[code]\n" +"> greater than\n" +"< less than\n" +"== equal to\n" +"!= not equal to\n" +"[/code]\n" +"\n" +"The line [code]health < 5:[/code] means \"health is less than 5\".\n" +"\n" +"Because [code]health = 100[/code], this is false so [code]print(\"health is " +"greater than five.\")[/code] won't run." +msgstr "" +"Вся последовательность условий [code]if[/code] сломана. Измените знаки " +"сравнения, чтобы каждое условие удовлетворяло инструкции под ним.\n" +"\n" +"Значения выражений менять не нужно, меняйте только знаки сравнения.\n" +"\n" +"Напоминаем, знаками сравнения являются:\n" +"[code]\n" +"> больше чем\n" +"< меньше чем\n" +"== равно\n" +"!= не равно\n" +"[/code]\n" +"\n" +"Строка [code]health < 5:[/code] означает «здоровье меньше пяти».\n" +"\n" +"Так как [code]health = 100[/code], это условие ложно и инструкция " +"[code]print(\"health is greater than five.\")[/code] не выполнится." + +#: course/lesson-13-conditions/lesson.tres:297 +msgid "" +"Comparing values allows us to make decisions in code. But there's something " +"wrong with these statements.." +msgstr "" +"Сравнение значений позволяет нам принимать решения в коде. Но тут с " +"условиями что-то не так.." + +#: course/lesson-13-conditions/lesson.tres:302 +msgid "Limiting Healing" +msgstr "Ограничиваем исцеление" + +#: course/lesson-13-conditions/lesson.tres:303 +msgid "" +"We have a heal function that adds an amount to the character's health.\n" +"\n" +"Add to the function so the character's health is never greater than " +"[code]80[/code]." +msgstr "" +"У нас есть функция heal, которая добавляет amount к здоровью персонажа.\n" +"\n" +"Доработайте функцию, чтобы здоровье персонажа никогда не поднималось выше " +"[code]80[/code]." + +#: course/lesson-13-conditions/lesson.tres:315 +msgid "" +"As much as we might like, we don't want our robot to have too much health. " +"Limit how much healing the robot can take." +msgstr "" +"Как бы нам ни хотелось, наш робот не должен иметь слишком много здоровья. " +"Ограничьте количество здоровья, которое может иметь робот." + +#: course/lesson-13-conditions/lesson.tres:320 +msgid "Preventing Health from Going Below Zero" +msgstr "Запрещаем здоровью опускаться ниже нуля" + +#: course/lesson-13-conditions/lesson.tres:321 +msgid "" +"When the robot takes damage, its health can be negative.\n" +"\n" +"We might want to display the health number on screen, like in Japanese " +"RPGs.\n" +"\n" +"We don't want negative numbers. We want to stop at zero instead.\n" +"\n" +"Calling the function should reduce [code]health[/code] by [code]amount[/" +"code].\n" +"\n" +"If [code]health[/code] goes below [code]0[/code], set it to [code]0[/code] " +"again." +msgstr "" +"В результате получения урона, количество здоровья робота может стать " +"отрицательным.\n" +"\n" +"Возможно, мы захотим отображать количество здоровья на экране, как в " +"японских RPG.\n" +"\n" +"Мы не хотим чтобы наши характеристики стали отрицательными, их значения " +"должны остановиться на нуле.\n" +"\n" +"Вызов функции должен уменьшать [code]health[/code] на [code]amount[/code].\n" +"\n" +"При уменьшении значения [code]health[/code] ниже [code]0[/code], установите " +"его в [code]0[/code] снова." + +#: course/lesson-13-conditions/lesson.tres:339 +msgid "" +"Having a negative health value doesn't make a lot of sense. Make sure the " +"robot's health can't go below zero." +msgstr "" +"Наличие отрицательного значения здоровья не имеет особого смысла. Убедитесь, " +"что здоровье робота не может опуститься ниже нуля." + +#: course/lesson-13-conditions/lesson.tres:343 +msgid "Conditions" +msgstr "Условия" diff --git a/i18n/ru/lesson-14-multiplying.po b/i18n/ru/lesson-14-multiplying.po new file mode 100644 index 00000000..f0caa777 --- /dev/null +++ b/i18n/ru/lesson-14-multiplying.po @@ -0,0 +1,322 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-14-multiplying/lesson.tres:14 +msgid "" +"Our robot's health is always between [code]0[/code] and [code]100[/code].\n" +"\n" +"But as our robot fights, we want to increase its strength and toughness.\n" +"\n" +"When a character levels up, it might deal more damage to enemies, gain new " +"abilities or, in our case, gain more health." +msgstr "" +"Здоровье нашего робота всегда находится между [code]0[/code] и [code]100[/" +"code].\n" +"\n" +"Но после сражений, мы хотим увеличивать его силу и прочность.\n" +"\n" +"После прокачки до нового уровня персонаж должен наносить больше урона " +"противникам, получать новые способности или, в нашем случае, иметь больше " +"здоровья." + +#: course/lesson-14-multiplying/lesson.tres:28 +msgid "" +"We define a [code]level[/code] variable to keep track of the level of the " +"robot. It starts at level one.\n" +"\n" +"When the robot has defeated enough enemies, we call the [code]level_up()[/" +"code] function to increment the robot's level." +msgstr "" +"Мы определяем переменную [code]level[/code] для отслеживания уровня прокачки " +"робота. На старте робот имеет первый уровень.\n" +"\n" +"Когда робот побеждает достаточное количество противников, мы вызываем " +"функцию [code]level_up()[/code], чтобы повысить его уровень." + +#: course/lesson-14-multiplying/lesson.tres:50 +msgid "" +"As we briefly saw in the last lesson, our robot could have a range of " +"variables that could increase when it levels up." +msgstr "" +"Как мы кратко упомянули в последнем уроке, наш робот мог бы иметь большое " +"количество переменных, способных увеличиваться при повышении уровня." + +#: course/lesson-14-multiplying/lesson.tres:70 +msgid "" +"In this lesson, we'll just focus on increasing the robot's [code]max_health[/" +"code].\n" +"\n" +"The variable [code]max_health[/code] is the maximum amount the robot's " +"[code]health[/code] can be. We change our [code]heal()[/code] function to " +"use this variable." +msgstr "" +"В этом уроке мы сфокусируемся на повышении [code]max_health[/code] робота.\n" +"\n" +"Переменная [code]max_health[/code] — это максимальное значение, которое " +"[code]health[/code] робота может иметь. Мы изменим нашу функцию " +"[code]heal()[/code] и используем эту переменную в ней." + +#: course/lesson-14-multiplying/lesson.tres:92 +msgid "" +"We could add [code]5[/code] to the [code]max_health[/code] every time the " +"robot levels up." +msgstr "" +"Мы можем добавлять [code]5[/code] к [code]max_health[/code] каждый раз, " +"когда робот повышает уровень." + +#: course/lesson-14-multiplying/lesson.tres:112 +msgid "" +"This would increase [code]max_health[/code] the same amount every time.\n" +"\n" +"If we graphed [code]max_health[/code], it'd look something like this." +msgstr "" +"Это увеличит [code]max_health[/code] на одну и ту же величину при каждом " +"повышении уровня.\n" +"\n" +"Если мы построим график [code]max_health[/code], он будет выглядеть примерно " +"так." + +#: course/lesson-14-multiplying/lesson.tres:134 +msgid "" +"This growth is [b]linear[/b].\n" +"\n" +"In our case, we want a feeling of more and more power as the robot levels " +"up.\n" +"\n" +"We want a graph like this." +msgstr "" +"Этот рост является [b]линейным[/b].\n" +"\n" +"В нашем случае мы хотим, чтобы по мере роста уровня робота создавалось " +"ощущение всё большей и большей мощи.\n" +"\n" +"Мы хотим получить график, подобный этому." + +#: course/lesson-14-multiplying/lesson.tres:158 +msgid "" +"This growth is [b]exponential[/b].\n" +"\n" +"With each level, more [code]max_health[/code] is added than the previous " +"level up.\n" +"\n" +"To get the exponential growth, we multiply the [code]max_health[/code] by an " +"amount greater than [code]1[/code] each time the robot levels up.\n" +"\n" +"To multiply values together, we use [code]*[/code]." +msgstr "" +"Этот рост является [b]экспоненциальным[/b].\n" +"\n" +"С каждым уровнем добавляется больше [code]max_health[/code], чем на " +"предыдущем уровне.\n" +"\n" +"Для получения экспоненциального роста, мы умножаем [code]max_health[/code] " +"на величину больше [code]1[/code] каждый раз, когда робот повышает уровень.\n" +"\n" +"Чтобы перемножить значения, мы используем [code]*[/code]." + +#: course/lesson-14-multiplying/lesson.tres:172 +msgid "What is the value of damage?" +msgstr "Какое значение имеет damage?" + +#: course/lesson-14-multiplying/lesson.tres:173 +msgid "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"[/code]" +msgstr "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"[/code]" + +#: course/lesson-14-multiplying/lesson.tres:181 +msgid "" +"We multiply [code]power[/code] by [code]level[/code] using [code]*[/code] to " +"get the result of [code]15[/code]." +msgstr "" +"Мы умножили [code]power[/code] на [code]level[/code], при помощи [code]*[/" +"code], и получили [code]15[/code] в результате." + +#: course/lesson-14-multiplying/lesson.tres:182 +#: course/lesson-14-multiplying/lesson.tres:183 +msgid "15" +msgstr "15" + +#: course/lesson-14-multiplying/lesson.tres:182 +msgid "9" +msgstr "9" + +#: course/lesson-14-multiplying/lesson.tres:182 +msgid "10" +msgstr "10" + +#: course/lesson-14-multiplying/lesson.tres:192 +msgid "" +"We can use [code]*=[/code] in the same way as [code]-=[/code] and [code]+=[/" +"code]." +msgstr "" +"Мы можем использовать [code]*=[/code] так же, как [code]-=[/code] и " +"[code]+=[/code]." + +#: course/lesson-14-multiplying/lesson.tres:200 +msgid "What is the value of damage now?" +msgstr "Какое значение имеет damage теперь?" + +#: course/lesson-14-multiplying/lesson.tres:201 +msgid "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"\tdamage *= 2\n" +"[/code]" +msgstr "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"\tdamage *= 2\n" +"[/code]" + +#: course/lesson-14-multiplying/lesson.tres:210 +msgid "" +"The value of [code]damage[/code] starts as [code]15[/code].\n" +"\n" +"Then, [code]damage *= 2[/code] multiplies it by [code]2[/code] to get " +"[code]30[/code]." +msgstr "" +"Вначале значение [code]damage[/code] равно [code]15[/code].\n" +"\n" +"Затем [code]damage *= 2[/code] умножает его на [code]2[/code], в результате " +"получается [code]30[/code]." + +#: course/lesson-14-multiplying/lesson.tres:213 +#: course/lesson-14-multiplying/lesson.tres:214 +msgid "30" +msgstr "30" + +#: course/lesson-14-multiplying/lesson.tres:213 +msgid "13" +msgstr "13" + +#: course/lesson-14-multiplying/lesson.tres:213 +msgid "25" +msgstr "25" + +#: course/lesson-14-multiplying/lesson.tres:223 +msgid "" +"Let's level up our robot and add exponential growth to [code]max_health[/" +"code]." +msgstr "" +"Давайте повысим уровень нашего робота и сделаем так, чтобы [code]max_health[/" +"code] увеличилось экспоненциально." + +#: course/lesson-14-multiplying/lesson.tres:243 +msgid "" +"In the practices, you'll increase the robot's [code]max_health[/code] and " +"add a special ability to our robot to make it extra tough at high levels." +msgstr "" +"В упражнении вы будете увеличивать [code]max_health[/code] робота и добавите " +"ему специальную способность, делающую его особенно крепким на высоких " +"уровнях." + +#: course/lesson-14-multiplying/lesson.tres:251 +msgid "Increasing maximum health exponentially" +msgstr "Экспоненциальное увеличение максимума здоровья" + +#: course/lesson-14-multiplying/lesson.tres:252 +msgid "" +"Let's make the robot stronger when it levels up.\n" +"\n" +"Add to the [code]level_up()[/code] function so it does the following:\n" +"\n" +"- Increases [code]level[/code] by one.\n" +"- Increases [code]max_health[/code] by 10%." +msgstr "" +"Давайте сделаем так, чтобы робот усиливался при повышении уровня.\n" +"\n" +"Доработайте функцию [code]level_up()[/code], чтобы она:\n" +"\n" +"- Увеличивала [code]level[/code] на единицу.\n" +"- Увеличивала [code]max_health[/code] на 10%." + +#: course/lesson-14-multiplying/lesson.tres:270 +msgid "" +"We want our robot to increase in strength as it levels up. Let's increase " +"its health exponentially!" +msgstr "" +"Мы хотим, чтобы наш робот становился сильнее при повышении уровня. Давайте " +"увеличивать его здоровье экспоненциально!" + +#: course/lesson-14-multiplying/lesson.tres:275 +msgid "Reducing damage at higher levels" +msgstr "Уменьшение принимаемого урона на высоких уровнях" + +#: course/lesson-14-multiplying/lesson.tres:276 +msgid "" +"When our robot's [code]level[/code] is [code]3[/code] or more, we want it to " +"take a lot less damage.\n" +"\n" +"Add to the [code]take_damage()[/code] function so the following happens:\n" +"\n" +"- [code]if[/code] the robot's [code]level[/code] is greater than [code]2[/" +"code], reduce the damage [code]amount[/code] by 50%\n" +"\n" +"The robot is level 3. An enemy is going to attack for 10 damage. This damage " +"should reduce to 5." +msgstr "" +"Мы хотим, чтобы наш робот получал гораздо меньше урона, когда его " +"[code]level[/code] равен [code]3[/code] или больше.\n" +"\n" +"Доработайте функцию [code]take_damage()[/code], чтобы при её вызове " +"случалось это:\n" +"\n" +"- [code]если[/code] [code]level[/code] робота больше чем [code]2[/code], " +"уменьшить [code]amount[/code] принимаемого им урона на 50%\n" +"\n" +"У Робота 3 уровень. Враг собирается нанести 10 урона своей атакой. Этот урон " +"должен уменьшиться до 5." + +#: course/lesson-14-multiplying/lesson.tres:299 +msgid "" +"At higher levels, we want our robot to be super tough and take even less " +"damage!" +msgstr "" +"Мы хотим, чтобы на высоких уровнях наш робот становился сверхпрочным и " +"получал ещё меньше повреждений!" + +#: course/lesson-14-multiplying/lesson.tres:303 +msgid "Multiplying" +msgstr "Умножение" diff --git a/i18n/ru/lesson-15-modulo.po b/i18n/ru/lesson-15-modulo.po new file mode 100644 index 00000000..e05c4831 --- /dev/null +++ b/i18n/ru/lesson-15-modulo.po @@ -0,0 +1,352 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-15-modulo/lesson.tres:14 +msgid "" +"The modulo operation ([code]%[/code]) calculates the remainder of a whole " +"number division.\n" +"\n" +"For example, the modulo of [code]5[/code] by [code]3[/code] ([code]5 % 3[/" +"code]) is [code]2[/code].\n" +"\n" +"We typically use this operation to tell if a number is odd or even or to " +"produce a random number within a particular range (like a dice roll).\n" +"\n" +"Play around with the modulo widget on the right to see how modulo works " +"visually." +msgstr "" +"Оператор [code]%[/code] рассчитывает остаток от деления целых чисел.\n" +"\n" +"Например, остаток от деления [code]5[/code] на [code]3[/code] ([code]5 % 3[/" +"code]) — это [code]2[/code].\n" +"\n" +"Обычно мы используем этот оператор, чтобы проверить чётность числа, либо " +"сгенерировать случайное число в конкретном диапазоне (как при бросании " +"игральной кости).\n" +"\n" +"Поэкспериментируйте с виджетом, приложенным справа, чтобы наглядно увидеть, " +"как работает операция получения остатка от деления." + +#: course/lesson-15-modulo/lesson.tres:28 +msgid "What's the result of this modulo operation?" +msgstr "Какой результат выполнения у этой операции?" + +#: course/lesson-15-modulo/lesson.tres:29 +msgid "[code]11 % 4[/code]" +msgstr "[code]11 % 4[/code]" + +#: course/lesson-15-modulo/lesson.tres:31 +msgid "" +"[code]11[/code] divided by [code]4[/code] is [code]2[/code], and the " +"[b]remainder[/b] of the division is [code]3[/code].\n" +"\n" +"So [code]11 % 4[/code] is [code]3[/code]." +msgstr "" +"Деление [code]11[/code] на [code]4[/code] даёт результат [code]2[/code], и " +"[code]3[/code] в [b]остатке[/b].\n" +"\n" +"Соответственно, [code]11 % 4[/code] равно [code]3[/code]." + +#: course/lesson-15-modulo/lesson.tres:34 +#: course/lesson-15-modulo/lesson.tres:35 +msgid "3" +msgstr "3" + +#: course/lesson-15-modulo/lesson.tres:34 +msgid "2" +msgstr "2" + +#: course/lesson-15-modulo/lesson.tres:34 +msgid "7" +msgstr "7" + +#: course/lesson-15-modulo/lesson.tres:44 +msgid "" +"The modulo operation only works on [b]whole numbers[/b]; Not decimal " +"numbers.\n" +"\n" +"Also, just like in regular divisions, the divisor can't be zero.\n" +"\n" +"All three examples below will cause an error in your code." +msgstr "" +"Операция получения остатка от деления работает только с [b]целыми числами[/" +"b]; Не с десятичными дробями.\n" +"\n" +"Также как и при обычном делении, в качестве делителя нельзя использовать " +"ноль.\n" +"\n" +"Все три примера, показанные ниже, вызовут ошибку в вашем коде." + +#: course/lesson-15-modulo/lesson.tres:66 +msgid "Three ways we use the modulo operation" +msgstr "Три способа использовать остаток от деления" + +#: course/lesson-15-modulo/lesson.tres:68 +msgid "" +"The modulo operation has important uses in programming, like making a number " +"cycle.\n" +"\n" +"Take a traffic light, for example." +msgstr "" +"Есть несколько важных способов применения этой операции в программировании, " +"например, создание числового цикла.\n" +"\n" +"Для примера возьмём светофор." + +#: course/lesson-15-modulo/lesson.tres:90 +msgid "" +"We use the number [code]light_index[/code] to represent the traffic light's " +"current state.\n" +"\n" +"The lights always cycle in the same way: first, we have the red light, then " +"the yellow, then the green.\n" +"\n" +"To represent that cycle, you can periodically add one to the number and use " +"the modulo operator to wrap back to [code]0[/code].\n" +"\n" +"Instead, you could use a condition; In this case, we use the modulo as a " +"shortcut." +msgstr "" +"Мы используем число [code]light_index[/code] для представления текущего " +"состояния светофора.\n" +"\n" +"Цвета всегда сменяют друг-друга в одном порядке: красный, жёлтый, зелёный.\n" +"\n" +"Для представления этого цикла вы можете периодически добавлять единицу к " +"числу и использовать оператор получения остатка от деления, чтобы вернуться " +"к [code]0[/code].\n" +"\n" +"Вместо этого вы можете использовать условие; В этом случае остаток от " +"деления можно использовать для сокращения." + +#: course/lesson-15-modulo/lesson.tres:114 +msgid "Why do we start from zero?" +msgstr "Почему мы начинаем с нуля?" + +#: course/lesson-15-modulo/lesson.tres:116 +msgid "" +"In computer code, we very often count from [code]0[/code].\n" +"\n" +"Every number translates to a precise combination of bits in the machine, " +"starting from [code]0[/code].\n" +"\n" +"We don't want to waste any number, and as the first number the computer " +"knows about is [code]0[/code], we start counting from [code]0[/code]." +msgstr "" +"В компьютерном коде мы очень часто начинаем отсчёт с [code]0[/code].\n" +"\n" +"Каждое число, начиная с [code]0[/code], преобразуется в точную комбинацию " +"бит в машине.\n" +"\n" +"Мы не хотим тратить числа зря, поэтому мы начинаем считать с [code]0[/code], " +"поскольку [code]0[/code] — это первое число, известное компьютеру." + +#: course/lesson-15-modulo/lesson.tres:128 +msgid "Using modulo to find even and odd numbers" +msgstr "Использование остатка от деления для поиска чётных и нечётных чисел" + +#: course/lesson-15-modulo/lesson.tres:130 +msgid "" +"We can also use a modulo to check if a number is even or odd. If we divide a " +"number by [code]2[/code] and there's no remainder, then the number is " +"[b]even[/b]." +msgstr "" +"Также мы можем использовать остаток от деления для проверки чётности чисел. " +"Если при делении числа на [code]2[/code] остатка нет — то число [b]чётное[/" +"b]." + +#: course/lesson-15-modulo/lesson.tres:150 +msgid "" +"Notice how the modulo can be larger than the number it affects. For example, " +"[code]1 % 2[/code] gives you [code]1[/code]. That's because [code]1[/code] " +"divided by [code]2[/code] equals [code]0[/code], and the remainder is " +"[code]1[/code].\n" +"\n" +"Like with divisions, the only case you can't use modulo is with a divisor of " +"[code]0[/code]." +msgstr "" +"Обратите внимание, что делитель при определении остатка от деления может " +"быть больше, чем делимое. Например, [code]1 % 2[/code] даёт вам [code]1[/" +"code]. Всё потому что деление [code]1[/code] на [code]2[/code] даёт нам " +"[code]0[/code] в результате и [code]1[/code] в остатке.\n" +"\n" +"Как и при обычном делении, единственное число, которое вы не можете " +"использовать в качестве делителя — это [code]0[/code]." + +#: course/lesson-15-modulo/lesson.tres:170 +msgid "Calculating a random number within a range" +msgstr "Получение случайного числа в конкретном диапазоне" + +#: course/lesson-15-modulo/lesson.tres:172 +msgid "" +"We can use the modulo to simulate dice rolls. To do so, we generate a large " +"random number and use the modulo operator to limit the number's range.\n" +"\n" +"To generate a random whole number, you can call the [code]randi()[/code] " +"function. The name stands for random integer.\n" +"\n" +"The number the function generates can be huge: roughly up to 2 billion on an " +"Android device and around 10^18 on a 64-bit computer.\n" +"\n" +"You can use the modulo operation to limit the random number's range." +msgstr "" +"Мы можем использовать остаток от деления для симуляции бросков игральной " +"кости. Для этого мы генерируем большое случайное число и применяем к нему " +"оператор %, чтобы ограничить диапазон чисел.\n" +"\n" +"Для генерации случайного целого числа вы можете использовать функцию " +"[code]randi()[/code]. Имя образовано от «random integer» (случайное целое " +"число).\n" +"\n" +"Число, которое генерирует эта функция, очень велико: максимальное его " +"значение может быть равно приблизительно 2-м миллиардам на устройствах " +"Android и около 10^18 на 64-битных компьютерах.\n" +"\n" +"Вы можете использовать операцию получения остатка от деления, чтобы " +"ограничить диапазон этого случайного числа." + +#: course/lesson-15-modulo/lesson.tres:198 +msgid "" +"The result is also random because we use the modulo operation on a random " +"number.\n" +"\n" +"In the following practices, you'll use a modulo to advance traffic lights, " +"add maximum health to the robot on every odd level, and learn how to code " +"dice rolls." +msgstr "" +"Результат также будет случайным, ведь мы применяем операцию получения " +"остатка от деления к случайному числу.\n" +"\n" +"В последующих упражнениях вы будете использовать остаток от деления для " +"переключения цветов светофора, добавления бонуса к максимуму здоровья " +"робота, при каждом получении им чётного уровня прокачки, и научитесь " +"программировать броски игральной кости." + +#: course/lesson-15-modulo/lesson.tres:208 +msgid "Advancing Traffic Lights" +msgstr "Переключение цветов светофора" + +#: course/lesson-15-modulo/lesson.tres:209 +msgid "" +"Add to the [code]advance_traffic_light()[/code] function so the " +"[code]light_index[/code] variable increments by one, then wraps back to " +"[code]0[/code] if it gets too high.\n" +"\n" +"Use the modulo operator [code]%[/code] to make sure the value of " +"[code]light_index[/code] wraps back to [code]0[/code].\n" +"\n" +"The value of [code]light_index[/code] should only ever be [code]0[/code], " +"[code]1[/code], or [code]2[/code]." +msgstr "" +"Доработайте функцию [code]advance_traffic_light()[/code], чтобы при её " +"выполнении переменная [code]light_index[/code] увеличивалась на единицу, а " +"затем возвращалась назад к [code]0[/code], если увеличилась слишком сильно.\n" +"\n" +"Используйте оператор [code]%[/code], чтобы убедиться, что значение " +"[code]light_index[/code] возвращается обратно к [code]0[/code].\n" +"\n" +"Значение [code]light_index[/code] всегда должно быть равно [code]0[/code], " +"[code]1[/code], или [code]2[/code]." + +#: course/lesson-15-modulo/lesson.tres:223 +msgid "" +"Learn how to use modulo to wrap a number back to zero using traffic lights." +msgstr "" +"Научитесь использовать остаток от деления для возвращения числа к нулю при " +"помощи светофора." + +#: course/lesson-15-modulo/lesson.tres:228 +msgid "Rolling Dice" +msgstr "Бросание игральной кости" + +#: course/lesson-15-modulo/lesson.tres:229 +msgid "" +"Our dice rolling function doesn't work! Right now, it always gives the " +"result of how many sides the dice has: 20.\n" +"\n" +"Use [code]randi()[/code] to generate a random number and the modulo " +"operation [code]%[/code]. \n" +"\n" +"Using the [code]return[/code] keyword inside the function, return a random " +"number between [code]1[/code] and [code]sides[/code]." +msgstr "" +"Наша функция бросания кости не работает! Сейчас она всегда возвращает " +"количество граней кости: 20.\n" +"\n" +"Используйте функцию [code]randi()[/code] для генерации случайного числа и " +"оператор получения остатка от деления — [code]%[/code].\n" +"\n" +"При помощи ключевого слова [code]return[/code] внутри функции, верните " +"случайное число, находящееся в диапазоне между [code]1[/code] и [code]sides[/" +"code]." + +#: course/lesson-15-modulo/lesson.tres:243 +msgid "" +"Whether in a board game or video game, getting a random number is always " +"useful. Here, we create a function that simulates a dice roll." +msgstr "" +"Вне зависимости от того, настольная игра или компьютерная, получать " +"случайные числа в ней может быть очень полезно. Здесь мы создадим функцию, " +"симулирующую бросок игральной кости." + +#: course/lesson-15-modulo/lesson.tres:248 +msgid "Bonus Health Every Other Level" +msgstr "Бонусное здоровье каждый чётный уровень" + +#: course/lesson-15-modulo/lesson.tres:249 +msgid "" +"Change the [code]level_up()[/code] function so it does the following:\n" +"\n" +"1) Increment [code]level[/code] by [code]1[/code]\n" +"2) Increase [code]max_health[/code] by [code]5[/code]\n" +"3) If [code]level[/code] is [b]even[/b], increase [code]max_health[/code] by " +"an additional [code]5[/code]\n" +"\n" +"The robot starts with [code]100[/code] maximum health. It will gain three " +"levels when you run the code. At level 4, the robot should have [code]125[/" +"code] maximum health." +msgstr "" +"Измените функцию [code]level_up()[/code], чтобы она:\n" +"\n" +"1) Увеличивала [code]level[/code] на [code]1[/code]\n" +"2) Увеличивала [code]max_health[/code] на [code]5[/code]\n" +"3) Увеличивала [code]max_health[/code] ещё на [code]5[/code], если " +"[code]level[/code] [b]чётный[/b]\n" +"\n" +"Робот начинает с максимальным здоровьем [code]100[/code]. Он получит три " +"уровня когда вы запустите код. На уровне 4 максимальное здоровье робота " +"должно быть равно [code]125[/code]." + +#: course/lesson-15-modulo/lesson.tres:265 +msgid "" +"There are other ways to increase maximum health. You could use a modulo to " +"give a bonus every even level. Learn how here!" +msgstr "" +"Есть и другие способы увеличить максимум здоровья. Вы можете использовать " +"остаток от деления для добавления бонуса к максимуму здоровья каждый чётный " +"уровень. Научитесь этому здесь!" + +#: course/lesson-15-modulo/lesson.tres:269 +msgid "Modulo" +msgstr "Остаток от деления" diff --git a/i18n/ru/lesson-16-2d-vectors.po b/i18n/ru/lesson-16-2d-vectors.po new file mode 100644 index 00000000..4922fb10 --- /dev/null +++ b/i18n/ru/lesson-16-2d-vectors.po @@ -0,0 +1,305 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-16-2d-vectors/lesson.tres:14 +msgid "" +"Suppose we want to increase the size of the robot when it levels up.\n" +"\n" +"As you may recall, we do this by using the following code." +msgstr "" +"Допустим, мы хотим, чтобы при получении нового уровня робот увеличивался в " +"размерах.\n" +"\n" +"Как вы помните, мы можем достичь этого следующим кодом." + +#: course/lesson-16-2d-vectors/lesson.tres:36 +msgid "" +"As we talked about in lesson 7, the [code]scale[/code] variable has two sub-" +"variables to it: [code]x[/code] and [code]y[/code].\n" +"\n" +"This is because [code]scale[/code] is a [code]Vector2[/code], which stands " +"for two-dimensional vector. A [code]Vector2[/code] represents 2D coordinates." +msgstr "" +"Как мы сказали в уроке 7, переменная [code]scale[/code] имеет две вложенные " +"переменные: [code]x[/code] и [code]y[/code].\n" +"\n" +"Всё потому что [code]scale[/code] — это двумерный вектор ([code]Vector2[/" +"code]). [code]Vector2[/code] представляет двумерные координаты." + +#: course/lesson-16-2d-vectors/lesson.tres:46 +msgid "What are vectors?" +msgstr "Что такое векторы?" + +#: course/lesson-16-2d-vectors/lesson.tres:48 +msgid "" +"A vector, in physics, is a quantity with a magnitude and a direction. For " +"example, a force applied to some object, the velocity (speed and direction) " +"of a character, and so on.\n" +"\n" +"We often represent this quantity with an arrow.\n" +"\n" +"In Godot, 2D vectors are a common value type named [code]Vector2[/code],\n" +"\n" +"Unlike plain numbers, they store [i]two[/i] decimal numbers: one for the X " +"coordinate and one for the Y coordinate." +msgstr "" +"Вектор, в физике, — это величина, имеющая размер и направление. Например, " +"сила, приложенная к какому-либо объекту, скорость и направление персонажа и " +"так далее.\n" +"\n" +"Мы часто изображаем эту величину стрелкой.\n" +"\n" +"В Godot 2D векторы представлены базовым типом [code]Vector2[/code].\n" +"\n" +"В отличие от обычных чисел, они хранят [i]две[/i] десятичных дроби: одну для " +"координаты X, другую для координаты Y." + +#: course/lesson-16-2d-vectors/lesson.tres:72 +msgid "" +"So far, you've come across two variables in the course which are vectors. " +"Which are they?" +msgstr "" +"На протяжении курса вы уже сталкивались с некоторыми переменными. Какие из " +"них являются векторами?" + +#: course/lesson-16-2d-vectors/lesson.tres:75 +msgid "" +"Both [code]scale[/code] and [code]position[/code] have [code]x[/code] and " +"[code]y[/code] sub-variables, so Godot uses a [code]Vector2[/code] to store " +"their values." +msgstr "" +"И [code]scale[/code], и [code]position[/code] имеют вложенные переменные " +"[code]x[/code] и [code]y[/code], поэтому Godot использует [code]Vector2[/" +"code] для хранения их значений." + +#: course/lesson-16-2d-vectors/lesson.tres:76 +#: course/lesson-16-2d-vectors/lesson.tres:77 +msgid "scale" +msgstr "scale" + +#: course/lesson-16-2d-vectors/lesson.tres:76 +#: course/lesson-16-2d-vectors/lesson.tres:77 +msgid "position" +msgstr "position" + +#: course/lesson-16-2d-vectors/lesson.tres:76 +msgid "health" +msgstr "health" + +#: course/lesson-16-2d-vectors/lesson.tres:76 +msgid "speed" +msgstr "speed" + +#: course/lesson-16-2d-vectors/lesson.tres:84 +msgid "Vectors are great for games" +msgstr "Векторы отлично подходят для игр" + +#: course/lesson-16-2d-vectors/lesson.tres:86 +msgid "" +"Vectors are [i]essential[/i] in video games.\n" +"\n" +"They allow you to represent a character's movement speed and direction, " +"calculate the distance to a target, and more, with little code.\n" +"\n" +"Take this turtle AI below. You've probably seen games where enemies move " +"like this.\n" +"\n" +"This is done with just seven lines of pure vector calculation code.\n" +"\n" +"The code is a bit too difficult for now, so we'll spare you the details, but " +"this turtle gives you a glimpse of what 2D vectors can do for you and your " +"game projects." +msgstr "" +"Векторы [i]необходимы[/i] в видеоиграх.\n" +"\n" +"Они позволяют отображать скорость и направление движения персонажа, " +"вычислять расстояние до цели и многое другое с помощью небольшого количества " +"кода.\n" +"\n" +"Возьмем, к примеру, ИИ черепахи. Вы наверняка видели игры, в которых враги " +"двигаются подобным образом.\n" +"\n" +"Это сделано с помощью всего семи строк кода чистых векторных вычислений.\n" +"\n" +"Этот код немного сложен для вас сейчас, поэтому мы не будем описывать его " +"подробно, но при помощи этого примера мы хотим дать вам представление о том, " +"что 2D-векторы могут дать вам и вашим игровым проектам." + +#: course/lesson-16-2d-vectors/lesson.tres:114 +msgid "" +"We scale the robot again, this time by adding to it directly using a " +"[code]Vector2[/code]. The following code has the same effect as the previous " +"example." +msgstr "" +"Мы снова масштабируем робота, на этот раз напрямую используя [code]Vector2[/" +"code]. Следующий код окажет тот же эффект, как и предыдущий пример." + +#: course/lesson-16-2d-vectors/lesson.tres:134 +msgid "" +"Notice how we use parentheses and two arguments inside parentheses, just " +"like other function calls.\n" +"\n" +"We call this a [i]constructor function call[/i]. You can think of it as a " +"special kind of function that creates a particular type of value.\n" +"\n" +"The code [code]Vector2(0.2, 0.2)[/code] constructs a new [code]Vector2[/" +"code] value with its [code]x[/code] set to [code]0.2[/code] and its [code]y[/" +"code] set to [code]0.2[/code], respectively." +msgstr "" +"Обратите внимание, что мы используем два аргумента внутри круглых скобок, " +"точно так же, как при вызове других функций.\n" +"\n" +"Мы называем это [i]вызовом функции-конструктора[/i]. Вы можете думать о ней, " +"как о специальной разновидности функции, создающей значение определённого " +"типа.\n" +"\n" +"Инструкция [code]Vector2(0.2, 0.2)[/code] создаёт новый [code]Vector2[/" +"code], имеющий [code]x[/code], установленный в [code]0.2[/code] и [code]y[/" +"code], установленный в [code]0.2[/code], соответственно." + +#: course/lesson-16-2d-vectors/lesson.tres:146 +msgid "Using vectors to change the position" +msgstr "Использование векторов для изменения позиции" + +#: course/lesson-16-2d-vectors/lesson.tres:148 +msgid "" +"We can add and subtract vectors to [code]position[/code] because it's a " +"vector. If we wanted to move our robot to a new relative position, we would " +"add a [code]Vector2[/code] to its [code]position[/code]." +msgstr "" +"Мы можем прибавлять и вычитать векторы из [code]position[/code], потому что " +"позиция — это вектор. Если бы мы захотели передвинуть нашего робота в новую " +"позицию относительно текущей, мы могли бы прибавить [code]Vector2[/code] к " +"его [code]position[/code]." + +#: course/lesson-16-2d-vectors/lesson.tres:166 +msgid "How would you move the robot 50 pixels to the left?" +msgstr "Как бы вы передвинули робота на 50 пикселей влево?" + +#: course/lesson-16-2d-vectors/lesson.tres:169 +msgid "" +"[code]position -= Vector2(50, 0)[/code] subtracts [code]50[/code] to the sub-" +"variable [code]x[/code], and [code]0[/code] to [code]y[/code].\n" +"\n" +"[code]position.x -= Vector2(50, 0)[/code] tries to subtract a 2D vector to " +"the sub-variable [code]x[/code], which is a decimal number. The value types " +"are incompatible. If you try to do this, you will get an error." +msgstr "" +"[code]position -= Vector2(50, 0)[/code] вычитает [code]50[/code] из " +"внутренней переменной [code]x[/code] и [code]0[/code] из [code]y[/code].\n" +"\n" +"[code]position.x -= Vector(50, 0)[/code] пытается вычесть 2D вектор из " +"внутренней переменной [code]x[/code], являющейся целым числом. Типы значений " +"несовместимы. Если вы попытаетесь сделать так, то получите сообщение об " +"ошибке." + +#: course/lesson-16-2d-vectors/lesson.tres:172 +#: course/lesson-16-2d-vectors/lesson.tres:173 +msgid "position -= Vector2(50, 0)" +msgstr "position -= Vector2(50, 0)" + +#: course/lesson-16-2d-vectors/lesson.tres:172 +msgid "position.x -= Vector2(50, 0)" +msgstr "position.x -= Vector2(50, 0)" + +#: course/lesson-16-2d-vectors/lesson.tres:182 +msgid "" +"In the next few practices, you'll use vectors to change scale and position " +"values." +msgstr "" +"В следующих упражнениях мы будем использовать векторы для изменения размера " +"и позиции робота." + +#: course/lesson-16-2d-vectors/lesson.tres:190 +msgid "Increasing scale using vectors" +msgstr "Увеличение размера при помощи векторов" + +#: course/lesson-16-2d-vectors/lesson.tres:191 +msgid "" +"Add a line of code to the [code]level_up()[/code] function to increase the " +"[code]scale[/code] of the robot by [code]Vector2(0.2, 0.2)[/code] every time " +"it levels up." +msgstr "" +"Добавьте строку кода в функцию [code]level_up()[/code], чтобы [code]scale[/" +"code] робота увеличивался на [code]Vector2(0.2, 0.2)[/code], при каждом " +"получении им нового уровня." + +#: course/lesson-16-2d-vectors/lesson.tres:202 +msgid "" +"To visually show our robot has gained in strength, let's increase its size " +"every time it levels up. Nothing could go wrong!" +msgstr "" +"Чтобы визуально показать что наш робот стал сильнее, давайте увеличивать его " +"размер при каждом повышении уровня. Что тут может пойти не так!" + +#: course/lesson-16-2d-vectors/lesson.tres:207 +msgid "Resetting size and position using vectors" +msgstr "Сбросьте размер и позицию при помощи векторов" + +#: course/lesson-16-2d-vectors/lesson.tres:208 +msgid "" +"The robot's level has increased a lot, and so has its size!\n" +"\n" +"Let's fix this by resetting the robot's [code]scale[/code] and " +"[code]position[/code] values.\n" +"\n" +"Create a function named [code]reset_robot()[/code] that sets the " +"[code]scale[/code] and [code]position[/code] of the robot.\n" +"\n" +"The [code]x[/code] and [code]y[/code] sub-variables of the robot's " +"[code]scale[/code] need to be [code]1.0[/code].\n" +"\n" +"The robot's [code]position[/code] needs to be [code]Vector2(0, 0)[/code].\n" +"\n" +"As in the previous practice, make sure to use vectors when dealing with " +"scale and position." +msgstr "" +"Уровень робота очень сильно увеличился, как и его размер!\n" +"\n" +"Давайте исправим это сбросом значений [code]scale[/code] и [code]position[/" +"code] робота.\n" +"\n" +"Создайте функцию [code]reset_robot()[/code], сбрасывающую [code]scale[/code] " +"и [code]position[/code] робота.\n" +"\n" +"Вложенные значения [code]x[/code] и [code]y[/code] переменной [code]scale[/" +"code] робота должны быть установлены в [code]1.0[/code].\n" +"\n" +"[code]position[/code] робота должна быть установлена в [code]Vector2(0, 0)[/" +"code].\n" +"\n" +"Как и в предыдущем упражнении, убедитесь что вы используете векторы при " +"изменении размера и позиции." + +#: course/lesson-16-2d-vectors/lesson.tres:227 +msgid "" +"Perhaps increasing the scale every level was a bad idea! Let's restore the " +"robot to the correct size." +msgstr "" +"Кажется, увеличение размера при каждом повышении уровня было плохой идеей! " +"Давайте вернём роботу правильный размер." + +#: course/lesson-16-2d-vectors/lesson.tres:231 +msgid "2D Vectors" +msgstr "2D векторы" diff --git a/i18n/ru/lesson-17-while-loops.po b/i18n/ru/lesson-17-while-loops.po new file mode 100644 index 00000000..7bf14592 --- /dev/null +++ b/i18n/ru/lesson-17-while-loops.po @@ -0,0 +1,334 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-17-while-loops/lesson.tres:14 +msgid "" +"You've seen that you can use functions to [i]reuse[/i] code. In this lesson, " +"you'll learn about [b]loops[/b]. Loops help you [i]repeat[/i] code.\n" +"\n" +"To illustrate how loops work, let's take a game board split into a grid.\n" +"\n" +"Our robot can move to neighboring cells by changing a [code]Vector2[/code] " +"variable named [code]cell[/code]. It represents the current cell the robot " +"is in.\n" +"\n" +"When we increase [code]cell.x[/code], the robot moves to the right.\n" +"\n" +"Note that we delay the robot's movement in the app to help you visualize how " +"it moves. The following code would normally move the robot instantly." +msgstr "" +"Вы видели, что функции можно использовать для [i]повторного использования[/i]" +" кода. В этом уроке вы узнаете о [b]циклах[/b]. Циклы помогают вам " +"[i]повторять[/i] выполнение кода.\n" +"\n" +"Чтобы проиллюстрировать работу циклов, рассмотрим игровую доску, разбитую на " +"сетку.\n" +"\n" +"При изменении переменной [code]Vector2[/code] с именем [code]cell[/code], " +"наш робот перемещается на соседние клетки. Переменная представляет текущую " +"ячейку, в которой находится робот.\n" +"\n" +"Когда мы увеличиваем [code]cell.x[/code], робот перемещается вправо.\n" +"\n" +"Обратите внимание, что мы задерживаем движение робота в приложении, чтобы " +"помочь вам наглядно увидеть, как он движется. Приведённый ниже код обычно " +"перемещает робота мгновенно." + +#: course/lesson-17-while-loops/lesson.tres:42 +msgid "We can move diagonally by adding a [code]Vector2[/code] directly." +msgstr "" +"Мы можем перемещаться по диагонали, прибавлением [code]Vector2[/code] " +"напрямую." + +#: course/lesson-17-while-loops/lesson.tres:62 +msgid "" +"The above code works for a pre-defined board with a size of [code]Vector2(3, " +"3)[/code], but the [code]move_to_end()[/code] function wouldn't work if the " +"size of the board was different. \n" +"\n" +"The robot would either stop before the end or go too far.\n" +"\n" +"To implement a general solution for all board sizes, we can repeat the " +"robot's movement until it gets to the end.\n" +"\n" +"For code that repeats, we can use [i]loops[/i]." +msgstr "" +"Приведённый выше код работает исправно для предварительно созданной доски " +"размером [code]Vector2(3, 3)[/code], но функция [code]move_to_end()[/code] " +"не будет работать, если размер доски будет другим.\n" +"\n" +"Робот будет либо останавливаться перед концом, либо проходить слишком " +"далеко.\n" +"\n" +"Чтобы реализовать общее решение для досок любого размера, мы можем повторять " +"движение робота вправо, пока он не дойдёт до конца.\n" +"\n" +"Для повторяющегося кода мы используем [i]циклы[/i]." + +#: course/lesson-17-while-loops/lesson.tres:76 +msgid "Using while loops to repeat code" +msgstr "Использование циклов while для повторения кода" + +#: course/lesson-17-while-loops/lesson.tres:78 +msgid "" +"You can use a [code]while[/code] loop to make the computer repeat a block of " +"code until you meet a specific condition or decide to break from the loop.\n" +"\n" +"Here's how we use a [code]while[/code] loop." +msgstr "" +"Вы можете использовать цикл [code]while[/code], чтобы заставить компьютер " +"повторять блок кода, пока определённое условие не будет выполнено или пока " +"вы не решите выйти из цикла.\n" +"\n" +"Вот как мы используем цикл [code]while[/code]." + +#: course/lesson-17-while-loops/lesson.tres:100 +msgid "" +"We use the variable [code]number[/code] to keep track of how many loops the " +"[code]while[/code] loop completes.\n" +"\n" +"Each time we go through the [code]while[/code] loop, we add [code]1[/code] " +"to [code]number[/code].\n" +"\n" +"The [code]while[/code] loop keeps running for as long as the condition is " +"true. In this case, it keeps running while [code]number[/code] is less than " +"[code]4[/code].\n" +"\n" +"You can see that the following code is executed four times in the console." +msgstr "" +"Мы используем переменную [code]number[/code] для того, чтобы отследить " +"количество итераций, совершённых циклом [code]while[/code].\n" +"\n" +"Каждый раз, когда мы проходим итерацию цикла [code]while[/code], к " +"переменной [code]number[/code] прибавляется [code]1[/code].\n" +"\n" +"Цикл [code]while[/code] работает до тех пор, пока условие истинно. В примере " +"он будет работать пока [code]number[/code] меньше чем [code]4[/code].\n" +"\n" +"В консоли вы можете увидеть, что приведённый ниже код выполнился четыре раза." + +#: course/lesson-17-while-loops/lesson.tres:126 +msgid "" +"Let's apply this to our [code]move_to_end()[/code] function.\n" +"\n" +"This time, we compare the number of loops to the board's width. We go " +"through the loop until we reach the width of the board.\n" +"\n" +"Note that we move the robot until its position is one less than the board's " +"width because we are counting tiles from [code]0[/code].\n" +"\n" +"A board of [code]3[/code] by [code]3[/code] cells would have cell " +"coordinates going from [code]0[/code] to [code]2[/code] on both the X and Y " +"axes." +msgstr "" +"Давайте применим это к нашей функции [code]move_to_end()[/code].\n" +"\n" +"В этот раз мы сравним порядковый номер итерации с шириной доски. Мы будем " +"проходить через цикл до тех пор, пока не достигнем ширины доски.\n" +"\n" +"Обратите внимание, что мы выполняем на одну итерацию цикла меньше, чем " +"ширина доски, так как робот уже находится в первой ячейке и отсчёт тайлов " +"начинается с [code]0[/code].\n" +"\n" +"Доска, с ячейками [code]3[/code] на [code]3[/code], будет иметь координаты " +"ячеек от [code]0[/code] до [code]2[/code] как по оси X, так и по оси Y." + +#: course/lesson-17-while-loops/lesson.tres:160 +msgid "While loops can cause issues" +msgstr "Циклы while могут приводить к проблемам" + +#: course/lesson-17-while-loops/lesson.tres:162 +msgid "" +"If you're not careful, your [code]while[/code] loop can run infinitely. In " +"that case, the application will freeze.\n" +"\n" +"Take a look at this code example." +msgstr "" +"Если вы будете пользоваться циклами [code]while[/code] неосторожно, то " +"сможете застрять в бесконечном цикле. В этом случае приложение зависнет.\n" +"\n" +"Взгляните на этот пример." + +#: course/lesson-17-while-loops/lesson.tres:182 +msgid "What would happen if the computer tried to run the code above?" +msgstr "" +"Что произойдет, если компьютер попытается выполнить приведённый выше код?" + +#: course/lesson-17-while-loops/lesson.tres:185 +msgid "" +"Because we don't increment [code]number[/code] within the [code]while[/code] " +"loop, it always stays at [code]0[/code].\n" +"\n" +"As a result, the number is always lower than [code]10[/code], so we never " +"break out of the loop.\n" +"\n" +"Since there's no way to exit the [code]while[/code] loop, the computer will " +"attempt to draw squares infinitely, which will freeze the program.\n" +"\n" +"When programs stop responding on your computer, it's often due to an " +"infinite loop!" +msgstr "" +"Из-за того, что мы не увеличиваем [code]number[/code] внутри цикла " +"[code]while[/code], он всегда будет равен [code]0[/code].\n" +"\n" +"В результате, number всегда будет меньше [code]10[/code] и мы никогда не " +"выйдем из цикла.\n" +"\n" +"По причине того, что из цикла [code]while[/code] будет невозможно выбраться, " +"компьютер попытается рисовать квадраты бесконечно, что приведёт к полному " +"зависанию программы.\n" +"\n" +"Когда программы перестают отвечать на вашем компьютере, они, как правило, " +"находятся в бесконечном цикле!" + +#: course/lesson-17-while-loops/lesson.tres:192 +#: course/lesson-17-while-loops/lesson.tres:193 +msgid "It would draw squares infinitely until the program is terminated" +msgstr "" +"Он будет рисовать квадраты бесконечно, пока выполнение программы не " +"прекратится" + +#: course/lesson-17-while-loops/lesson.tres:192 +msgid "It would draw 10 squares" +msgstr "Он нарисует 10 квадратов" + +#: course/lesson-17-while-loops/lesson.tres:192 +msgid "It would draw 20 squares" +msgstr "Он нарисует 20 квадратов" + +#: course/lesson-17-while-loops/lesson.tres:200 +msgid "When to use while loops" +msgstr "Где использовать циклы while" + +#: course/lesson-17-while-loops/lesson.tres:202 +msgid "" +"At first, you will not need [code]while[/code] loops often. Even the code we " +"show here has more efficient alternatives.\n" +"\n" +"Also, there's a safer kind of loop, [code]for[/code] loops, which we'll look " +"at in the next lesson.\n" +"\n" +"Yet, [code]while[/code] loops have important intermediate to advanced-level " +"uses, so you at least need to know they exist and how to use them.\n" +"\n" +"We use [code]while[/code] loops every time we need to loop an unknown number " +"of times.\n" +"\n" +"For example, games run in a loop that typically generates sixty images per " +"second until the user closes the game. This is possible thanks to " +"[code]while[/code] loops.\n" +"\n" +"There are other good uses for [code]while[/code] loops:\n" +"\n" +"- Reading and processing a file, like a text document, line by line.\n" +"- Processing a constant stream of data, like someone recording audio with a " +"microphone.\n" +"- Reading code and converting it into instructions the computer " +"understands.\n" +"- Various intermediate to advanced-level algorithms, like finding paths " +"around a map for AI." +msgstr "" +"Сперва циклы [code]while[/code] вам не понадобятся. Даже код, который мы " +"здесь показываем, имеет более эффективные альтернативы.\n" +"\n" +"Кроме того, существует более безопасный вид цикла — цикл [code]for[/code], " +"который мы рассмотрим в следующем уроке.\n" +"\n" +"Тем не менее, циклы [code]while[/code] имеют важное значение для среднего и " +"продвинутого уровней, поэтому вам, по крайней мере, нужно знать, что они " +"существуют и как их использовать.\n" +"\n" +"Мы используем циклы [code]while[/code] каждый раз, когда нам требуется " +"выполнить цикл неизвестное количество раз.\n" +"\n" +"Например, игры запускаются в цикле, который обычно генерирует шестьдесят " +"изображений в секунду, пока пользователь не закроет игру. Это возможно " +"благодаря циклам [code]while[/code].\n" +"\n" +"Есть и другие полезные способы применения циклов [code]while[/code]:\n" +"\n" +"- Чтение и обработка файла, например, текстового документа, построчно.\n" +"- Обработка постоянного потока данных, например, при записи звука с помощью " +"микрофона.\n" +"- Чтение кода и преобразование его в инструкции, понятные компьютеру.\n" +"- Различные алгоритмы среднего и продвинутого уровней, такие как поиск пути " +"на карте для ИИ." + +#: course/lesson-17-while-loops/lesson.tres:227 +msgid "" +"Let's practice some [code]while[/code] loops, as they're useful to know. " +"It's also an excellent opportunity to practice 2D vectors.\n" +"\n" +"Then, we'll move on to the safer [code]for[/code] loops in the following " +"lesson." +msgstr "" +"Давайте поупражняемся в использовании циклов [code]while[/code], так как их " +"полезно знать. Также это отличная возможность попрактиковаться в работе с 2D-" +"векторами.\n" +"\n" +"В следующем уроке мы перейдём к более безопасным циклам [code]for[/code]." + +#: course/lesson-17-while-loops/lesson.tres:237 +msgid "Moving to the end of a board" +msgstr "Движение до конца доски" + +#: course/lesson-17-while-loops/lesson.tres:238 +msgid "" +"Our robot has decided to stand at the top of the board.\n" +"\n" +"Complete the [code]move_to_bottom()[/code] function so the robot moves to " +"the bottom of the board.\n" +"\n" +"The board size is determined by the [code]Vector2[/code] [code]board_size[/" +"code].\n" +"\n" +"The robot's current cell is [code]Vector2(2, 0)[/code]. \n" +"\n" +"Make sure to use a [code]while[/code] loop so the function works for any " +"board size." +msgstr "" +"Наш робот решил остановиться в верхней части доски.\n" +"\n" +"Доработайте функцию [code]move_to_bottom()[/code], чтобы робот перешёл в " +"нижнюю часть доски.\n" +"\n" +"Размер доски определяется переменной типа [code]Vector2[/code] — " +"[code]board_size[/code].\n" +"\n" +"Сейчас робот находится в ячейке [code]Vector2(2, 0)[/code].\n" +"\n" +"Убедитесь, что используете цикл [code]while[/code], чтобы функция работала " +"для досок любого размера." + +#: course/lesson-17-while-loops/lesson.tres:256 +msgid "" +"Use a while loop to have our robot move from the top of the board to the " +"bottom." +msgstr "" +"Используйте цикл while для перемещения робота из верхней части доски в " +"нижнюю." + +#: course/lesson-17-while-loops/lesson.tres:260 +msgid "Introduction to While Loops" +msgstr "Введение в циклы while" diff --git a/i18n/ru/lesson-18-for-loops.po b/i18n/ru/lesson-18-for-loops.po new file mode 100644 index 00000000..a048cd6b --- /dev/null +++ b/i18n/ru/lesson-18-for-loops.po @@ -0,0 +1,319 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-18-for-loops/lesson.tres:14 +msgid "" +"In the last lesson, we looked at [code]while[/code] loops. We found they " +"were useful if we don't know how many times we should repeat code. \n" +"\n" +"However, they could result in infinite loops if we're not careful.\n" +"\n" +"The loop below never ends because we never increment [code]number[/code]." +msgstr "" +"В последнем уроке мы рассмотрели циклы [code]while[/code]. Мы обнаружили, " +"что они полезны в случаях, когда нам не известно заранее, сколько раз " +"следует повторить код.\n" +"\n" +"Однако, из-за них программа может застрять в бесконечном цикле, если мы не " +"будем соблюдать осторожность.\n" +"\n" +"Приведённый ниже цикл никогда не закончится, потому что мы никогда не " +"увеличиваем [code]number[/code]." + +#: course/lesson-18-for-loops/lesson.tres:38 +msgid "" +"There's a safer and often easier kind of loop: the [code]for[/code] loop.\n" +"\n" +"We'll look at it in this lesson.\n" +"\n" +"Unlike [code]while[/code] loops, [code]for[/code] loops don't run " +"infinitely, so it's much less likely that you'll get bugs in your game. " +"[b]We recommend favoring for loops over while loops because of this[/b].\n" +"\n" +"Let's change the code above to use a [code]for[/code] loop instead.\n" +"\n" +"The loop below will change the [code]cell[/code] three times." +msgstr "" +"Существует более безопасный и, в большинстве случаев, более простой вид " +"цикла: цикл [code]for[/code].\n" +"\n" +"Мы рассмотрим его в этом уроке.\n" +"\n" +"В отличие от циклов [code]while[/code], циклы [code]for[/code] не могут " +"выполняться бесконечно, поэтому, вероятность того, что их использование " +"приведёт к ошибкам в вашей игре, гораздо меньше. [b]По этой причине мы " +"рекомендуем использовать циклы for вместо циклов while везде, где это " +"возможно[/b].\n" +"\n" +"Давайте изменим приведённый выше код с использованием цикла [code]for[/" +"code].\n" +"\n" +"Цикл в примере ниже изменит [code]cell[/code] три раза." + +#: course/lesson-18-for-loops/lesson.tres:66 +msgid "Let's explain what's going on here." +msgstr "Давайте рассмотрим, что здесь происходит." + +#: course/lesson-18-for-loops/lesson.tres:74 +msgid "The range() function" +msgstr "Функция range()" + +#: course/lesson-18-for-loops/lesson.tres:76 +msgid "" +"Godot has the helper function [code]range()[/code]. Calling [code]range(n)[/" +"code] creates a list of numbers from [code]0[/code] to [code]n - 1[/code]. \n" +"\n" +"So calling [code]range(3)[/code] outputs the list of numbers [code][0, 1, 2]" +"[/code], and [code]range(5)[/code] outputs [code][0, 1, 2, 3, 4][/code]." +msgstr "" +"В Godot есть вспомогательная функция [code]range()[/code]. Вызов " +"[code]range(n)[/code] создаёт список чисел от [code]0[/code] до [code]n - " +"1[/code].\n" +"\n" +"Таким образом, вызов [code]range(3)[/code] создаст список чисел [code][0, 1, " +"2][/code], а [code]range(5)[/code] создаст список [code][0, 1, 2, 3, " +"4][/code]." + +#: course/lesson-18-for-loops/lesson.tres:86 +msgid "What list of numbers would range(6) create?" +msgstr "Какой список чисел создаст вызов range(6)?" + +#: course/lesson-18-for-loops/lesson.tres:87 +msgid "What would [code]print(range(6))[/code] print to the console?" +msgstr "Что [code]print(range(6))[/code] выведет в консоль?" + +#: course/lesson-18-for-loops/lesson.tres:89 +msgid "" +"The function [code]range(n)[/code] creates a list of numbers from [code]0[/" +"code] to [code]n - 1[/code]. The output list will start with [code]0[/code] " +"and end with [code]5[/code].\n" +"\n" +"So calling [code]range(6)[/code] will output a list of six numbers which are " +"[code][0, 1, 2, 3, 4, 5][/code].\n" +msgstr "" +"Функция [code]range(n)[/code] создаёт список чисел от [code]0[/code] до " +"[code]n - 1[/code]. Выходной список будет начинаться с [code]0[/code] и " +"заканчиваться на [code]5[/code].\n" +"\n" +"Поэтому вызов [code]range(6)[/code] выведет список из шести чисел: [code][0, " +"1, 2, 3, 4, 5][/code].\n" + +#: course/lesson-18-for-loops/lesson.tres:93 +#: course/lesson-18-for-loops/lesson.tres:94 +msgid "[0, 1, 2, 3, 4, 5]" +msgstr "[0, 1, 2, 3, 4, 5]" + +#: course/lesson-18-for-loops/lesson.tres:93 +msgid "[1, 2, 3, 4, 5, 6]" +msgstr "[1, 2, 3, 4, 5, 6]" + +#: course/lesson-18-for-loops/lesson.tres:93 +msgid "[0, 1, 2, 3, 4, 5, 6]" +msgstr "[0, 1, 2, 3, 4, 5, 6]" + +#: course/lesson-18-for-loops/lesson.tres:101 +msgid "How for loops work" +msgstr "Как работают циклы for" + +#: course/lesson-18-for-loops/lesson.tres:103 +msgid "" +"In a [code]for[/code] loop, the computer takes each value inside a list, " +"stores it in a temporary variable, and executes the code in the loop once " +"per value." +msgstr "" +"При выполнении цикла [code]for[/code] компьютер берёт значение из списка, " +"сохраняет его во временной переменной и выполняет код тела цикла по одному " +"разу для каждого значения." + +#: course/lesson-18-for-loops/lesson.tres:123 +msgid "" +"In the above example, for each item in the list [code][0, 1, 2][/code], " +"Godot sets [code]number[/code] to the item, then executes the code in the " +"[code]for[/code] loop.\n" +"\n" +"We'll explain arrays more throughly in the next lesson, but notice that " +"[code]number[/code] is just a temporary variable. You create it when " +"defining the loop, and the loop takes care of changing its value. Also, you " +"can name this variable anything you want.\n" +"\n" +"This code behaves the same as the previous example:" +msgstr "" +"В примере ниже, для каждого элемента в списке [code][0, 1, 2][/code] Godot " +"присваивает [code]number[/code] значение числа, а затем выполняет код тела " +"цикла [code]for[/code].\n" +"\n" +"В этом примере мы выводим значение [code]number[/code] в процессе " +"продвижения Godot через цикл. Вы создаете его при определении цикла, и цикл " +"сам заботится об изменении своего значения. Кроме того, вы можете назвать " +"эту переменную как угодно.\n" +"\n" +"Этот код ведёт себя похожим образом с кодом из предыдущего примера:" + +#: course/lesson-18-for-loops/lesson.tres:147 +msgid "" +"In both examples, we print the value of the temporary variable we created: " +"[code]number[/code] in the first example and [code]element[/code] in the " +"second.\n" +"\n" +"As Godot moves through the loop, it assigns each value of the array to that " +"variable. First, it sets the variable to [code]0[/code], then to [code]1[/" +"code], and finally, to [code]2[/code].\n" +"\n" +"We can break down the instructions the loop runs. You can see how a loop is " +"a shortcut to code that otherwise gets very long." +msgstr "" +"В обоих примерах мы печатаем значение созданной нами временной переменной: " +"[code]number[/code] в первом примере и [code]element[/code] во втором.\n" +"\n" +"По мере прохождения цикла Godot присваивает каждое значение массива этой " +"переменной. Сначала он присваивает переменной значение [code]0[/code], затем " +"значение [code]1[/code] и, наконец, значение [code]2[/code].\n" +"\n" +"Мы можем остановить инструкции, которые выполняет цикл. Вы можете видеть, " +"что цикл — это специальный приём упрощения кода, который другим способом " +"становится очень длинным." + +#: course/lesson-18-for-loops/lesson.tres:171 +msgid "" +"We can put whatever code we like in the loop's code block, including other " +"function calls like [code]draw_rectangle()[/code]." +msgstr "" +"Мы можем поместить в блок кода цикла любой код, который нам нравится, " +"включая вызовы других функций, таких как [code]draw_rectangle()[/code]." + +#: course/lesson-18-for-loops/lesson.tres:179 +msgid "Using a for loop instead of a while loop" +msgstr "Использование цикла for внутри цикла while" + +#: course/lesson-18-for-loops/lesson.tres:181 +msgid "" +"Here's our old [code]move_to_end()[/code] function which used a [code]while[/" +"code] loop." +msgstr "" +"Вот наш старая функция [code]move_to_end()[/code], которая использует цикл " +"[code]while[/code]." + +#: course/lesson-18-for-loops/lesson.tres:201 +msgid "" +"If we use a [code]for[/code] loop instead, the code becomes a little simpler." +msgstr "" +"Если мы используем цикл [code]for[/code] вместо него, код станет немного " +"проще." + +#: course/lesson-18-for-loops/lesson.tres:221 +msgid "" +"Rather than constantly checking if the robot reached the end of the board, " +"with the [code]for[/code] loop, we take the board's width beforehand, then " +"move the robot a set amount of times.\n" +"\n" +"The function still works the same. You can execute it below." +msgstr "" +"Вместо того, чтобы каждый раз проверять, достиг ли робот конца доски, в " +"цикле [code]for[/code] мы можем взять ширину доски перед выполнением " +"итераций, а после — передвинуть робота требуемое количество раз.\n" +"\n" +"Функция всё ещё работает точно так же. Вы можете выполнить её ниже." + +#: course/lesson-18-for-loops/lesson.tres:243 +msgid "" +"In the practices, we'll use [code]for[/code] loops in different ways to get " +"you used to using them." +msgstr "" +"В упражнениях мы будем использовать цикл [code]for[/code] различными " +"способами для того, чтобы вы привыкли их использовать." + +#: course/lesson-18-for-loops/lesson.tres:251 +msgid "Using a for loop to move to the end of the board" +msgstr "Использование цикла for для перемещения к концу доски" + +#: course/lesson-18-for-loops/lesson.tres:252 +msgid "" +"Once again, the robot has decided to stand at the top of the board.\n" +"\n" +"This time, use a [code]for[/code] loop in the [code]move_to_bottom()[/code] " +"function to have it move to the bottom of the board.\n" +"\n" +"The board size is determined by the [code]Vector2[/code] variable " +"[code]board_size[/code].\n" +"\n" +"The robot's starting cell is [code]Vector2(2, 0)[/code]." +msgstr "" +"Робот снова решил остановиться в верхней части доски.\n" +"\n" +"В этот раз используйте цикл [code]for[/code] в функции [code]move_to_bottom()" +"[/code], чтобы переместить робота в нижнюю часть доски.\n" +"\n" +"Размер доски определяется переменной типа [code]Vector2[/code] — " +"[code]board_size[/code].\n" +"\n" +"Стартовая ячейка робота — [code]Vector2(2, 0)[/code]." + +#: course/lesson-18-for-loops/lesson.tres:268 +msgid "" +"Use a for loop to have our robot move from the top of the board to the " +"bottom." +msgstr "" +"Используйте цикл for для перемещения нашего робота из верхней части доски в " +"нижнюю." + +#: course/lesson-18-for-loops/lesson.tres:273 +msgid "Improving code with a for loop" +msgstr "Улучшение кода при помощи цикла for" + +#: course/lesson-18-for-loops/lesson.tres:274 +msgid "" +"Use a [code]for[/code] loop to remove the duplicate code in the [code]run()[/" +"code] function.\n" +"\n" +"In this practice, we revisit the turtle and drawing rectangles.\n" +"\n" +"With our new knowledge of [code]for[/code] loops, we can condense this code " +"to take up less space and make it easier to modify.\n" +"\n" +"The turtle should draw three squares in a horizontal line. The squares " +"should be 100 pixels apart." +msgstr "" +"Используйте цикл [code]for[/code] для удаления дубликатов кода в функции " +"[code]run()[/code].\n" +"\n" +"В этом упражнении мы вернёмся к черепахе и рисованию прямоугольников.\n" +"\n" +"Наши новые знания циклов [code]for[/code] позволяют нам сократить этот код, " +"чтобы он занимал меньше места и его было проще модифицировать.\n" +"\n" +"Черепаха должна нарисовать три квадрата горизонтально, друг за другом. " +"Сторона квадрата должна быть равна 100 пикселям." + +#: course/lesson-18-for-loops/lesson.tres:297 +msgid "" +"In the past we had to copy and paste code to draw multiple rectangles. Let's " +"revisit previous code and improve it with a for loop." +msgstr "" +"В прошлом нам пришлось копировать код, чтобы нарисовать несколько " +"прямоугольников. Давайте вернёмся к старому коду и улучшим его при помощи " +"цикла for." + +#: course/lesson-18-for-loops/lesson.tres:301 +msgid "Introduction to For Loops" +msgstr "Введение в циклы for" diff --git a/i18n/ru/lesson-19-creating-arrays.po b/i18n/ru/lesson-19-creating-arrays.po new file mode 100644 index 00000000..e5754ea4 --- /dev/null +++ b/i18n/ru/lesson-19-creating-arrays.po @@ -0,0 +1,310 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-19-creating-arrays/lesson.tres:13 +msgid "" +"The [code]range()[/code] function we saw in the previous lesson outputs a " +"list of numbers. For example, calling [code]range(3)[/code] produces the " +"list of numbers [code][0, 1, 2][/code]." +msgstr "" +"Функция [code]range()[/code], которую мы рассматривали в предыдущем уроке, " +"создаёт список чисел. Например, вызов [code]range(3)[/code] производит " +"список [code][0, 1, 2][/code]." + +#: course/lesson-19-creating-arrays/lesson.tres:33 +msgid "" +"A list of values, numbers or otherwise, has a precise name in code: we call " +"it an [i]array[/i]. So we can say calling the [code]range()[/code] function " +"produces an [i]array[/i] of numbers.\n" +"\n" +"We could directly write and use that array inside our [code]for[/code] loop " +"instead of the [code]range()[/code] function. You can run the next function " +"step-by-step to see how it works." +msgstr "" +"Списки значений, чисел и т.п., имеют точное название в коде: мы называем их " +"[i]массивами[/i]. Соответственно, мы можем сказать, что вызов функции " +"[code]range()[/code] создаёт [i]массив[/i] чисел.\n" +"\n" +"Мы можем создать массив напрямую и использовать его в нашем цикле " +"[code]for[/code] вместо функции [code]range()[/code]. Вы можете запустить " +"следующую функцию шаг за шагом, чтобы увидеть, как она работает." + +#: course/lesson-19-creating-arrays/lesson.tres:55 +msgid "" +"As you can see, the code still works the same. Notice that when we create a " +"[code]for[/code] loop, we also create a local variable to which the loop " +"assigns one value per iteration. Above, we named it [code]number[/code] " +"because the array we loop over contains three numbers (0, 1, and 2).\n" +"\n" +"But we could name it anything we'd like!" +msgstr "" +"Как видите, код по-прежнему работает так же. Обратите внимание: когда мы " +"создаем цикл [code]for[/code], мы также создаем локальную переменную, " +"которой цикл присваивает одно значение за итерацию. Выше мы назвали её " +"[code]number[/code], потому что массив, по которому мы проходим цикл, " +"содержит три числа (0, 1 и 2).\n" +"\n" +"Но мы можем назвать её как угодно!" + +#: course/lesson-19-creating-arrays/lesson.tres:77 +msgid "" +"If we \"unwrap\" the [code]for[/code] loop above, we'd get the following " +"code with the exact same behaviour:" +msgstr "" +"Если мы «развернем» приведённый выше цикл [code]for[/code], мы получим " +"следующий код с точно таким же поведением:" + +#: course/lesson-19-creating-arrays/lesson.tres:95 +msgid "The syntax of arrays" +msgstr "Синтаксис массивов" + +#: course/lesson-19-creating-arrays/lesson.tres:97 +msgid "We write arrays this way in GDScript." +msgstr "В GDScript мы создаём массивы таким образом." + +#: course/lesson-19-creating-arrays/lesson.tres:117 +msgid "" +"You start with an opening square bracket. Then, you write comma-separated " +"values that compose the array. Finally, you need a closing square bracket to " +"complete the array.\n" +"\n" +"Here are a couple of valid arrays. Notice how you can mix values, and how " +"they don't need to follow one another." +msgstr "" +"Вы начинаете с открывающей квадратной скобки. После неё пишете значения, " +"составляющие массив, через запятую. В конце необходимо поставить закрывающую " +"квадратную скобку для завершения массива.\n" +"\n" +"Вот несколько правильных примеров объявления массивов. Обратите внимание, " +"что вы можете смешивать значения, и что им необязательно следовать друг за " +"другом." + +#: course/lesson-19-creating-arrays/lesson.tres:139 +msgid "" +"Because arrays themselves are a value type, just like numbers or " +"[code]Vector2[/code], we can assign arrays to variables to reaccess them " +"later.\n" +"\n" +"That'll come in handy in the next lesson, where we'll use those variables in " +"loops." +msgstr "" +"Поскольку массивы сами по себе являются типом значений, как числа или " +"[code]Vector2[/code], мы можем присваивать массивы переменным чтобы иметь " +"доступ к ним в будущем.\n" +"\n" +"Это пригодится в следующем уроке, где мы будем использовать такие переменные " +"в циклах." + +#: course/lesson-19-creating-arrays/lesson.tres:161 +msgid "But first, let's see [i]when[/i] you'd use an array." +msgstr "" +"Но сначала давайте посмотрим [i]где[/i] вы будете использовать массивы." + +#: course/lesson-19-creating-arrays/lesson.tres:169 +msgid "When you use arrays" +msgstr "Где использовать массивы" + +#: course/lesson-19-creating-arrays/lesson.tres:171 +msgid "" +"In computer programming, we use arrays [i]all the time[/i].\n" +"\n" +"Precisely, you'll use them whenever you need to store a [i]list of things[/" +"i].\n" +"\n" +"You always need lists of things in games:\n" +"\n" +"- The player's party in an RPG.\n" +"- The items in the player's inventory.\n" +"- The high scores in an arcade game.\n" +"- The objects in the game world.\n" +"\n" +"All of those and many more rely on arrays." +msgstr "" +"В программировании мы используем массивы [i]постоянно[/i].\n" +"\n" +"Точнее, вы будете использовать их всякий раз, когда вам понадобится хранить " +"[i]список вещей[/i].\n" +"\n" +"В играх всегда нужны списки вещей:\n" +"\n" +"- Партия игрока в RPG.\n" +"- Предметы в инвентаре игрока.\n" +"- Список рекордов в аркадной игре.\n" +"- Объекты в игровом мире.\n" +"\n" +"Всё это и многое другое реализуется при помощи массивов." + +#: course/lesson-19-creating-arrays/lesson.tres:190 +msgid "Using arrays to follow a path" +msgstr "Использование массивов для перемещения по пути" + +#: course/lesson-19-creating-arrays/lesson.tres:192 +msgid "" +"Let's look at a widespread use of arrays in games: finding and following a " +"path.\n" +"\n" +"In games, you need allies or monsters to find their way to their target, " +"whether it's the player or some point of interest.\n" +"\n" +"To achieve that, we use [i]pathfinding algorithms[/i]. As the name suggests, " +"those algorithms find the path between two points and allow AIs to traverse " +"the game." +msgstr "" +"Давайте посмотрим шире на использование массивов в играх: поиск и следование " +"пути.\n" +"\n" +"В играх вам нужно, чтобы союзники и монстры находили пути к своим целям, вне " +"зависимости от того, где находится игрок или какая-либо интересующая точка.\n" +"\n" +"Для достижения этого, мы используем [i]алгоритмы поиска пути[/i]. Как " +"следует из названия, эти алгоритмы используются для поиска пути между двумя " +"точками и позволяют персонажу с искусственным интеллектом перемещаться по " +"миру игры." + +#: course/lesson-19-creating-arrays/lesson.tres:216 +msgid "" +"Many of those algorithms use arrays of [code]Vector2[/code] coordinates to " +"represent the path.\n" +"\n" +"Take this turtle pet. It wants to follow the robot, but there are rocks in " +"the way.\n" +"\n" +"How can we tell it where to walk to reach the robot? With an array!" +msgstr "" +"Многие из этих алгоритмов используют массивы координат, записанных в виде " +"[code]Vector2[/code], представляющие путь.\n" +"\n" +"Посмотрите на эту черепаху. Она хочет следовать за роботом, но её путь " +"преграждают камни.\n" +"\n" +"Как мы можем объяснить ей, куда нужно идти, чтобы прийти к роботу? При " +"помощи массивов!" + +#: course/lesson-19-creating-arrays/lesson.tres:250 +msgid "" +"Every value in the array is a [code]Vector2[/code] and represents a cell the " +"turtle needs to walk through.\n" +"\n" +"Together, all the values in the array represent a path we can draw." +msgstr "" +"Каждое значение массива — это [code]Vector2[/code], представляющий ячейку, " +"через которую черепаха должна пройти.\n" +"\n" +"Вместе все значения в массиве представляют путь, который мы можем нарисовать." + +#: course/lesson-19-creating-arrays/lesson.tres:272 +msgid "" +"In upcoming lessons, you will see how we can use arrays to store player " +"inventories or design attack combos.\n" +"\n" +"For now, let's practice creating arrays." +msgstr "" +"В будущих уроках вы увидите как можно использовать массивы для хранения " +"предметов в инвентаре игрока или определения комбинации атак.\n" +"\n" +"А сейчас давайте поупражняемся в создании массивов." + +#: course/lesson-19-creating-arrays/lesson.tres:282 +msgid "Walking to the robot" +msgstr "Перемещение к роботу" + +#: course/lesson-19-creating-arrays/lesson.tres:283 +msgid "" +"The turtle wants to meet the robot! But it cannot find it on its own.\n" +"\n" +"Fill the [code]turtle_path[/code] array with [code]Vector2[/code] " +"coordinates indicating where the turtle should move to avoid the obstacles " +"and arrive safely to the robot.\n" +"\n" +"The turtle can move up, down, left, or right. It cannot move diagonally.\n" +"\n" +"We recommend copying and pasting to fill the array with comma-separated " +"[code]Vector2[/code] values quickly." +msgstr "" +"Черепаха хочет встретиться с роботом! Но она не может найти его " +"самостоятельно.\n" +"\n" +"Заполните массив [code]turtle_path[/code] координатами [code]Vector2[/code], " +"сообщающими, куда черепаха должна двигаться чтобы обойти препятствия и " +"безопасно добраться до робота.\n" +"\n" +"Черепаха может двигаться вверх, вниз, влево и вправо. Она не может двигаться " +"по диагонали.\n" +"\n" +"Мы рекомендуем использовать копирование и вставку для быстрого заполнения " +"массива значениями [code]Vector2[/code]." + +#: course/lesson-19-creating-arrays/lesson.tres:298 +msgid "" +"Help the turtle find its way to the robot! Give it a path to follow to reach " +"the robot." +msgstr "" +"Помогите черепахе найти путь к роботу! Укажите ей дорогу, которой она сможет " +"до него добраться." + +#: course/lesson-19-creating-arrays/lesson.tres:303 +msgid "Selecting units" +msgstr "Выбор юнитов" + +#: course/lesson-19-creating-arrays/lesson.tres:304 +msgid "" +"In this tactical game, the player and computer can select multiple units at " +"once. You need to call the [code]select_units()[/code] function and pass it " +"an array of [code]Vector2[/code] coordinates to know which units to select.\n" +"\n" +"Each [code]Vector2[/code] in the array represents a cell with a unit.\n" +"\n" +"You can pass arrays in function calls as arguments. As an array is a value " +"type the computer recognizes, you can pass the whole array as a single " +"function argument.\n" +"\n" +"Select all units on the board by passing the correct array to the " +"[code]select_units()[/code] function." +msgstr "" +"В этой тактической игре игрок и компьютер могут выбирать несколько юнитов " +"одновременно. Вам нужно вызвать функцию [code]select_units()[/code] с " +"массивом координат типа [code]Vector2[/code], чтобы она знала, каких юнитов " +"выбирать.\n" +"\n" +"Каждый [code]Vector2[/code] в массиве представляет ячейку с юнитом.\n" +"\n" +"Вы можете передать массив при вызове функции в качестве аргумента. Так как " +"массив является типом значений, компьютер поймёт, что вы передали целый " +"массив одним аргументом функции.\n" +"\n" +"Выберите всех юнитов на доске передачей правильного массива в функцию " +"[code]select_units()[/code]." + +#: course/lesson-19-creating-arrays/lesson.tres:320 +msgid "Write an array to select all units on the board in this strategy game." +msgstr "" +"Напишите массив, чтобы выбрать всех юнитов на доске в этой стратегической " +"игре." + +#: course/lesson-19-creating-arrays/lesson.tres:324 +msgid "Creating arrays" +msgstr "Создание массивов" + +#~ msgid "As you can see, the code still works the same." +#~ msgstr "Как вы можете видеть, код работает по-прежнему." diff --git a/i18n/ru/lesson-2-your-first-error.po b/i18n/ru/lesson-2-your-first-error.po new file mode 100644 index 00000000..9a5efef5 --- /dev/null +++ b/i18n/ru/lesson-2-your-first-error.po @@ -0,0 +1,186 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-2-your-first-error/lesson.tres:14 +msgid "" +"When you program, you are bound to run into errors. Tons of them.\n" +"\n" +"But you shouldn't worry! On the computer, [b]errors are a good thing[/b].\n" +"\n" +"You will encounter errors, and [i]that's okay[/i]: every programmer does. " +"Especially professionals.\n" +"\n" +"At school, maybe you learned that mistakes are a bad thing. When you code " +"something, it's not the case: [b]errors help you write correct programs[/b] " +"because they show you what is wrong in your programs." +msgstr "" +"В процессе программирования, вы обязательно столкнетесь с ошибками. С " +"тоннами ошибок.\n" +"\n" +"Но не стоит беспокоиться! Ошибки в компьютере — [b]это хорошо и полезно[/b]." +"\n" +"\n" +"Вы будете сталкиваться с ошибками, и [i]это нормально[/i]: каждый " +"программист с ними сталкивается. Особенно профессионалы.\n" +"\n" +"В школе, возможно, вас научили тому, что ошибки — это плохо. Когда вы что-то " +"программируете, это не так: [b]ошибки помогают вам писать правильные " +"программы[/b], показывая что именно не так в ваших программах." + +#: course/lesson-2-your-first-error/lesson.tres:30 +msgid "" +"A code error looks like this. It's a message that tells you some bit of your " +"code doesn't work." +msgstr "" +"Ошибка в коде выглядит следующим образом. Это сообщение, которое говорит " +"вам, что какой-то фрагмент вашего кода не работает." + +#: course/lesson-2-your-first-error/lesson.tres:48 +msgid "Making errors friendlier" +msgstr "Дружим вас с ошибками" + +#: course/lesson-2-your-first-error/lesson.tres:50 +msgid "" +"Error messages can look a bit cryptic. This is because they're designed by " +"programmers, for trained programmers.\n" +"\n" +"We added an error translator in this app that will help you get started.\n" +"\n" +"It shows you why an error happens and what the message means. It also gives " +"you some tips on how to fix it." +msgstr "" +"Сообщения об ошибках могут выглядеть немного загадочно. Это потому, что они " +"разработаны программистами, для подготовленных программистов.\n" +"\n" +"Мы добавили в это приложение переводчик ошибок, который поможет вам начать " +"работу.\n" +"\n" +"Он показывает, почему возникает ошибка и что означает данное сообщение. " +"Переводчик также дает вам несколько советов о том, как исправить ошибку." + +#: course/lesson-2-your-first-error/lesson.tres:74 +msgid "" +"Error messages are designed on purpose by fellow programmers who came before " +"you. They anticipated you might have specific issues and wanted to help you " +"fix them.\n" +"\n" +"You shouldn't think of errors as failures. They are like mentors helping you " +"from the past. Importantly, errors won't break your computer. At least not " +"with GDScript because it's a pretty safe language.\n" +"\n" +"Ultimately, you want to fix all the errors in your program. Understanding " +"what is causing the errors, with the help of error messages, is key to " +"fixing them." +msgstr "" +"Ошибки — это сообщения, специально созданные другими программистами, " +"работавшими до вас. Они предполагали, что у вас могут возникнуть " +"определенные проблемы.\n" +"\n" +"Вы не должны думать об ошибках как о неудачах. Они подобны наставникам, " +"помогающим вам из прошлого. Важно отметить, что ошибки не сломают ваш " +"компьютер. По крайней мере, не ошибки в GDScript, потому что этот язык " +"довольно безопасен.\n" +"\n" +"В конечном итоге вы хотите исправить все ошибки в вашей программе. Понимание " +"причин ошибок с помощью сообщений об ошибках является ключом к их " +"исправлению." + +#: course/lesson-2-your-first-error/lesson.tres:86 +msgid "Are error messages a good or a bad thing in code?" +msgstr "Ошибки в коде — это хорошо или плохо?" + +#: course/lesson-2-your-first-error/lesson.tres:89 +msgid "" +"Yes, error messages are here to help you!\n" +"\n" +"Pay attention to them, and do your best to read and understand them. With " +"experience, you'll learn to make your code work more reliably thanks to " +"error messages." +msgstr "" +"Да, ошибки здесь, чтобы помочь вам!\n" +"\n" +"Обращайте на них внимание и делайте всё возможное, чтобы прочитать и понять " +"их. С опытом вы научитесь делать так, чтобы ваш код работал более надёжно " +"благодаря сообщениям об ошибках." + +#: course/lesson-2-your-first-error/lesson.tres:92 +msgid "They're bad: error messages are always bad." +msgstr "Они плохие: ошибки — это всегда плохо." + +#: course/lesson-2-your-first-error/lesson.tres:92 +#: course/lesson-2-your-first-error/lesson.tres:93 +msgid "They're good: they're here to help." +msgstr "Они хорошие: они здесь, чтобы помочь." + +#: course/lesson-2-your-first-error/lesson.tres:102 +msgid "" +"Okay, let's see an error in action. Once again, click the [i]Practice[/i] " +"button below to face your first real error." +msgstr "" +"Итак, давайте посмотрим на ошибку в действии. Еще раз нажмите кнопку " +"[i]Практика[/i] ниже, чтобы увидеть свою первую реальную ошибку." + +#: course/lesson-2-your-first-error/lesson.tres:110 +msgid "Fix Your First Error" +msgstr "Исправьте свою первую ошибку" + +#: course/lesson-2-your-first-error/lesson.tres:111 +msgid "" +"This code is incorrect and will cause an error when you try to run it.\n" +"\n" +"The code defines an empty function named [code]this_code_is_wrong[/code].\n" +"\n" +"To work, the function should use the [code]return[/code] keyword. But this " +"keyword is currently inside a comment, which the computer ignores.\n" +"\n" +"Test the current code by pressing the [i]Run[/i] button.\n" +"\n" +"Then, remove the comment sign (#) to make the code valid.\n" +"\n" +"Be careful not to remove the spacing before [code]return[/code]! Otherwise, " +"that'll cause another error. You may try that too, if you feel like it." +msgstr "" +"Этот код неверен и вызовет ошибку когда вы попытаетесь его выполнить.\n" +"\n" +"Код определяет пустую функцию с именем [code]this_code_is_wrong[/code].\n" +"\n" +"Для правильной работы эта функция должна использовать ключевое слово " +"[code]return[/code]. Но оно в настоящее время находится внутри комментария, " +"который компьютер игнорирует.\n" +"\n" +"Протестируйте текущий код, нажав кнопку [i]Запустить[/i].\n" +"\n" +"Затем удалите знак комментария (#), чтобы сделать код правильным.\n" +"\n" +"Будьте осторожны, чтобы не удалить пробел перед [code]return[/code]! В " +"противном случае это вызовет еще одну ошибку. Вы можете попробовать вызвать " +"её, если вам этого хочется." + +#: course/lesson-2-your-first-error/lesson.tres:131 +msgid "There's an error in this code. We need you to fix it!" +msgstr "В этом коде есть ошибка. Нам нужно, чтобы вы ее исправили!" + +#: course/lesson-2-your-first-error/lesson.tres:135 +msgid "Your First Error" +msgstr "Ваша первая ошибка" diff --git a/i18n/ru/lesson-20-looping-over-arrays.po b/i18n/ru/lesson-20-looping-over-arrays.po new file mode 100644 index 00000000..f7cb3cd1 --- /dev/null +++ b/i18n/ru/lesson-20-looping-over-arrays.po @@ -0,0 +1,312 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-20-looping-over-arrays/lesson.tres:14 +msgid "" +"We used the [code]range()[/code] function in combination with [code]for[/" +"code] loops." +msgstr "" +"Мы использовали функцию [code]range()[/code] в сочетании с циклами " +"[code]for[/code]." + +#: course/lesson-20-looping-over-arrays/lesson.tres:34 +msgid "" +"The [code]range()[/code] function produced an array that the [code]for[/" +"code] keyword could loop over.\n" +"\n" +"We can give [code]for[/code] loops [i]any[/i] array, and they will loop " +"over them just the same.\n" +"\n" +"Instead of using the [code]range()[/code] function, we could manually " +"write the numbers and get the same result." +msgstr "" +"Функция [code]range()[/code] создавала массив, элементы которого мы " +"могли перебрать по очереди при помощи ключевого слова [code]for[/code].\n" +"\n" +"Мы можем дать циклам [code]for[/code] [i]любой[/i] массив, и они точно " +"так же будут его перебирать.\n" +"\n" +"Вместо того чтобы использовать функцию [code]range()[/code], мы можем " +"вручную создать массив чисел и получить тот же результат." + +#: course/lesson-20-looping-over-arrays/lesson.tres:58 +msgid "" +"For each element inside the array, the [code]for[/code] loop extracts " +"it, stores it in the temporary variable named [code]number[/code], and " +"executes the loop's code once.\n" +"\n" +"Inside the loop, you can access the [code]number[/code] variable, which " +"changes on each [i]iteration[/i].\n" +"\n" +"The code works regardless of the array or where you store it. Often, you " +"will store arrays in variables for easy access." +msgstr "" +"Для каждого элемента в массиве, цикл [code]for[/code] извлечёт его, сохранит " +"во временной переменной [code]number[/code] и выполнит код цикла один раз.\n" +"\n" +"Внутри цикла вы имеете доступ к переменной [code]number[/code], значение " +"которой меняется каждую [i]итерацию[/i].\n" +"\n" +"Код работает независимо от состава массива или места его хранения. Часто вы " +"будете хранить массивы в переменных для упрощения их использования." + +#: course/lesson-20-looping-over-arrays/lesson.tres:80 +msgid "What will this code print?" +msgstr "Что выведет этот код?" + +#: course/lesson-20-looping-over-arrays/lesson.tres:81 +msgid "" +"[code]var numbers = [0, 1, 2]\n" +"for number in numbers:\n" +" print(number)\n" +"[/code]" +msgstr "" +"[code]var numbers = [0, 1, 2]\n" +"for number in numbers:\n" +" print(number)\n" +"[/code]" + +#: course/lesson-20-looping-over-arrays/lesson.tres:86 +msgid "" +"Compared to previous examples, we store the array in the [code]numbers[/" +"code] variable. Using the [code]numbers[/code] variable in our " +"[code]for[/code] loop allows the computer to access the array of numbers " +"like before.\n" +"\n" +"We have three numbers in the array: [code]0[/code], [code]1[/code], and " +"[code]2[/code].\n" +"\n" +"The loop extracts each of them sequentially and assigns it to the " +"[code]number[/code] temporary variable. As the loop processes each " +"number, the output will print [code]0[/code], then [code]1[/code], then " +"[code]2[/code], each on a separate line." +msgstr "" +"По сравнению с предыдущими примерами, мы храним массив в переменной " +"[code]numbers[/code]. Использование переменной [code]numbers[/code] в " +"цикле [code]for[/code] позволяет компьютеру обращаться к массиву чисел, " +"как и раньше.\n" +"\n" +"В нашем массиве есть три числа: [code]0[/code], [code]1[/code], и " +"[code]2[/code].\n" +"\n" +"Цикл последовательно извлекает каждое из них и присваивает его временной " +"переменной [code]number[/code]. По мере обработки каждого числа, в окне " +"вывода появляются [code]0[/code], затем [code]1[/code], затем [code]2[/" +"code], каждое на отдельной линии." + +#: course/lesson-20-looping-over-arrays/lesson.tres:91 +#: course/lesson-20-looping-over-arrays/lesson.tres:92 +msgid "0, 1, and 2" +msgstr "0, 1, и 2" + +#: course/lesson-20-looping-over-arrays/lesson.tres:91 +msgid "1, 2, and 3" +msgstr "1, 2, и 3" + +#: course/lesson-20-looping-over-arrays/lesson.tres:91 +msgid "0, 0, and 0" +msgstr "0, 0, и 0" + +#: course/lesson-20-looping-over-arrays/lesson.tres:99 +msgid "Making the turtle walk, with a loop" +msgstr "Заставляем черепаху ходить, при помощи цикла" + +#: course/lesson-20-looping-over-arrays/lesson.tres:101 +msgid "" +"In the previous lesson, you made a turtle walk along a path by writing " +"[code]Vector2[/code] coordinates in an array." +msgstr "" +"В предыдущем уроке вы заставили черепаху двигаться по пути, при помощи " +"написания массива координат типа [code]Vector2[/code]." + +#: course/lesson-20-looping-over-arrays/lesson.tres:121 +msgid "" +"It's a [code]for[/code] loop that makes the turtle walk along the path.\n" +"\n" +"The loop works like this: for each coordinate in the array, it moves the " +"turtle once to that cell." +msgstr "" +"Именно цикл [code]for[/code] позволяет черепахе двигаться по пути.\n" +"\n" +"Цикл работает так: для каждой координаты в массиве он передвигает " +"черепаху в ячейку, соответствующую этой координате." + +#: course/lesson-20-looping-over-arrays/lesson.tres:143 +msgid "It's the same principle with unit selection." +msgstr "Тот же принцип использовался при выборе юнитов." + +#: course/lesson-20-looping-over-arrays/lesson.tres:163 +msgid "" +"For each coordinate in an array named [code]selected_units[/code], we " +"check if there is a unit in that cell. If so, we select it. \n" +"\n" +"In that case, we use an array, a loop, and a condition together." +msgstr "" +"Для каждой координаты в массиве [code]cells[/code], мы проверяем, есть " +"ли в этой ячейке юнит, если да — мы выбираем его.\n" +"\n" +"В этом случае мы используем массив, цикл и условие вместе." + +#: course/lesson-20-looping-over-arrays/lesson.tres:185 +msgid "" +"The code above uses several features you haven't learned yet:\n" +"\n" +"- In a condition, the [code]in[/code] keyword allows you to check if a " +"value exists [i]in[/i] an array.\n" +"- The array's [code]append()[/code] function appends a new value at the " +"end of the array.\n" +"\n" +"Notice the use of a period after the [code]selected_units[/code] " +"variable, to call the [code]append()[/code] function. It's because this " +"function exists only on arrays.\n" +"\n" +"When functions exist only on a specific value type, you write a dot " +"after the value to call the function on it.\n" +"\n" +"We'll revisit those two features again in the following lessons." +msgstr "" +"В приведённом выше коде есть несколько особенностей, с которыми вы ещё " +"не знакомы:\n" +"\n" +"- В условии, ключевое слово [code]in[/code] (в) позволяет вам проверить, " +"существует ли конкретное значение [i]в[/i] массиве.\n" +"- Функция массива [code]append()[/code] добавляет новое значение в конец " +"массива.\n" +"\n" +"Обратите внимание на использование точки после имени переменной " +"[code]selected_units[/code] для вызова функции [code]append()[/code]. " +"Точка необходима, так как эта функция существует только в массивах.\n" +"\n" +"Когда функция существует только в определённом типе значений, вы должны " +"использовать точку после значения для вызова функции для него\n" +"\n" +"Мы ещё встретимся с этими особенностями в последующих уроках." + +#: course/lesson-20-looping-over-arrays/lesson.tres:204 +msgid "" +"The beauty of loops is that they work regardless of the size of your " +"arrays. \n" +"\n" +"The code just works whether you have one or ten thousand units to " +"select. It is all accomplished with only a couple lines of code.\n" +"\n" +"That's the power of computer programming.\n" +"\n" +"In the following practices, you will use arrays combined with [code]for[/" +"code] loops to achieve similar results." +msgstr "" +"Циклы прекрасны тем, что они работают независимо от размера ваших " +"массивов.\n" +"\n" +"Код будет работать одинаково при выборе одного или десяти тысяч юнитов. " +"Всё это делается в несколько строчек кода.\n" +"\n" +"В этом и заключается сила компьютерного программирования.\n" +"\n" +"В следующих упражнениях вы будете использовать массивы в сочетании с " +"циклами [code]for[/code] для достижения подобных результатов." + +#: course/lesson-20-looping-over-arrays/lesson.tres:218 +msgid "Move the robot along the path" +msgstr "Перемещаем робота по пути" + +#: course/lesson-20-looping-over-arrays/lesson.tres:219 +msgid "" +"Our AI pathfinding algorithm provided a path for the robot to move to " +"the right edge of the grid. Your task is to use a [code]for[/code] loop " +"to make the robot move.\n" +"\n" +"To move the robot, call [i]its[/i] [code]move_to()[/code] function, like " +"so: [code]robot.move_to()[/code].\n" +"\n" +"The [code]move_to()[/code] function only exists on the robot, which is " +"why you need to access it this way." +msgstr "" +"Алгоритм поиска пути нашего ИИ предоставил путь, по которому робот может " +"переместиться в правый угол сетки. Ваша задача — использовать цикл " +"[code]for[/code], чтобы заставить робота двигаться.\n" +"\n" +"Для перемещения робота, вызовите [i]его[/i] функцию [code]move_to()[/" +"code], как в этом примере: [code]robot.move_to()[/code].\n" +"\n" +"Функция [code]move_to()[/code] существует только в роботе, поэтому " +"получить к ней доступ вы можете только таким образом." + +#: course/lesson-20-looping-over-arrays/lesson.tres:235 +msgid "" +"Our AI pathfinding algorithm is giving us a path to move the robot. Now, " +"you need to make the turtle move along the path." +msgstr "" +"Алгоритм поиска пути нашего ИИ предоставил нам путь по которому должен " +"двигаться робот. Теперь вам нужно заставить робота двигаться по нему." + +#: course/lesson-20-looping-over-arrays/lesson.tres:240 +msgid "Back to the drawing board" +msgstr "Возвращаемся к доске для рисования" + +#: course/lesson-20-looping-over-arrays/lesson.tres:241 +msgid "" +"We want to draw many rectangles, something surprisingly common in " +"games.\n" +"\n" +"However, writing this code by hand can get tedious. Instead, you could " +"store the size of your shapes in arrays and use a loop to draw them all " +"in batches.\n" +"\n" +"That's what you'll do in this practice.\n" +"\n" +"Use a [code]for[/code] loop to draw every rectangle in the " +"[code]rectangle_sizes[/code] array with the [code]draw_rectangle()[/" +"code] function.\n" +"\n" +"The rectangles shouldn't overlap or cross each other. To avoid that, " +"you'll need to call the [code]jump()[/code] function." +msgstr "" +"Мы хотим нарисовать много прямоугольников, что на удивление часто " +"встречается в играх.\n" +"\n" +"Однако, писать код вручную было бы утомительно. Вместо этого вы можете " +"записать размер всех фигур в массив и использовать цикл для рисования " +"всех их разом.\n" +"\n" +"Это именно то, что вы будете делать в этом упражнении.\n" +"\n" +"Используйте цикл [code]for[/code] для рисования каждого прямоугольника " +"из массива [code]rectangle_sizes[/code] при помощи функции " +"[code]draw_rectangle()[/code].\n" +"\n" +"Прямоугольники не должны перекрывать или пересекать друг друга. Чтобы " +"избежать этого, вам нужно использовать функцию [code]jump()[/code]." + +#: course/lesson-20-looping-over-arrays/lesson.tres:261 +msgid "" +"The drawing turtle makes its comeback. Fear not! Armed with loops, " +"you'll make it draw faster than ever before." +msgstr "" +"Рисующая черепаха возвращается. Не бойтесь! Вооружённые циклами, вы " +"сделаете процесс рисования быстрым, как никогда." + +#: course/lesson-20-looping-over-arrays/lesson.tres:265 +msgid "Looping over arrays" +msgstr "Обход массивов в цикле" diff --git a/i18n/ru/lesson-21-strings.po b/i18n/ru/lesson-21-strings.po new file mode 100644 index 00000000..e5bf8fad --- /dev/null +++ b/i18n/ru/lesson-21-strings.po @@ -0,0 +1,213 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-21-strings/lesson.tres:14 +msgid "" +"Throughout this course, we've mostly stored numbers in variables. But what " +"if we wanted to store a player's name?\n" +"\n" +"This is where strings help us.\n" +"\n" +"Strings are instrumental in games and applications. We use them to display " +"information such as the description of a spell or the name of a character." +msgstr "" +"На протяжении курса мы в хранили множество чисел в переменных. Но что если " +"мы захотим хранить имя игрока?\n" +"\n" +"Здесь нам помогут строки.\n" +"\n" +"Строки играют важную роль в играх приложениях. Мы используем их для " +"отображения такой информации, как описание заклинания или имя персонажа." + +#: course/lesson-21-strings/lesson.tres:36 +msgid "What are strings" +msgstr "Что такое строки" + +#: course/lesson-21-strings/lesson.tres:38 +msgid "" +"A [code]String[/code] is a value type which holds text. To create a " +"[code]String[/code], you write text wrapped in quotation marks ([code]\"\"[/" +"code]). For example: [code]\"This is a text string.\"[/code]\n" +"\n" +"The quotation marks differentiate strings from other value types and " +"function names.\n" +"\n" +"You may remember we've used strings before in previous lessons." +msgstr "" +"[code]String[/code] (строка) — это тип значения для хранения текста. Чтобы " +"создать [code]String[/code], вам нужно написать текст, заключённый в кавычки " +"([code]\"\"[/code]). Например: [code]\"Это строка текста.\"[/code]\n" +"\n" +"Кавычки отличают строки от других типов значений и имён функций.\n" +"\n" +"Возможно, вы помните, что мы уже использовали строки в предыдущих уроках." + +#: course/lesson-21-strings/lesson.tres:62 +msgid "" +"Under the hood, strings are arrays of characters. In fact, we can use a " +"[code]for[/code] loop to loop through the characters of a [code]String[/" +"code] as we would with any other array." +msgstr "" +"Под капотом, строки — это массивы символов. Фактически, мы можем " +"использовать цикл [code]for[/code] для перебора символов значения " +"[code]String[/code], как и элементов любого другого массива." + +#: course/lesson-21-strings/lesson.tres:80 +msgid "Which of these are strings?" +msgstr "Какие значения являются строками?" + +#: course/lesson-21-strings/lesson.tres:83 +msgid "" +"[code]\"1\"[/code] and [code]\"name\"[/code] are strings.\n" +"\n" +"[code]\"1\"[/code] only contains a character and [i]doesn't[/i] represent " +"the number [code]1[/code].\n" +"\n" +"[code]\"name\"[/code] is made up of four different characters." +msgstr "" +"[code]\"1\"[/code] и [code]\"name\"[/code] — это строки.\n" +"\n" +"[code]\"1\"[/code] содержит один символ и [i]не[/i] представляет число " +"[code]1[/code].\n" +"\n" +"[code]\"name\"[/code] — строка из четырёх разных символов." + +#: course/lesson-21-strings/lesson.tres:88 +msgid "1" +msgstr "1" + +#: course/lesson-21-strings/lesson.tres:88 +#: course/lesson-21-strings/lesson.tres:89 +msgid "\"1\"" +msgstr "\"1\"" + +#: course/lesson-21-strings/lesson.tres:88 +#: course/lesson-21-strings/lesson.tres:89 +msgid "\"name\"" +msgstr "\"name\"" + +#: course/lesson-21-strings/lesson.tres:96 +msgid "Why we use strings" +msgstr "Почему мы используем строки" + +#: course/lesson-21-strings/lesson.tres:118 +msgid "" +"Every piece of text you see in this app is a string that Godot is displaying " +"for us.\n" +"\n" +"Much like how [code]Vector2[/code] variables make calculations easier, " +"[code]string[/code] variables come with many helper functions and tricks we " +"can use.\n" +"\n" +"We can use arrays to store strings too. This is useful for chaining " +"animations. In this example, the [code]play_animation()[/code] plays a " +"specific animation." +msgstr "" +"Каждый фрагмент текста, который вы видите в этом приложении, — это строка, " +"которую Godot отображает для нас.\n" +"\n" +"Подобно тому, как переменные [code]Vector2[/code] облегчают вычисления, " +"переменные типа [code]String[/code] имеют множество вспомогательных функций " +"и особенностей, которые мы можем использовать.\n" +"\n" +"Мы также можем использовать массивы для хранения строк. Это полезно для " +"создания цепочки анимаций. В этом примере [code]play_animation()[/code] " +"воспроизводит определённую анимацию." + +#: course/lesson-21-strings/lesson.tres:142 +msgid "" +"In the next few practices, we'll use strings in combination with different " +"concepts from earlier lessons." +msgstr "" +"В следующих упражнениях мы будем использовать строки в комбинации с разными " +"концепциями из прошлых уроков." + +#: course/lesson-21-strings/lesson.tres:150 +msgid "Creating string variables" +msgstr "Создание строковых переменных" + +#: course/lesson-21-strings/lesson.tres:151 +msgid "" +"Currently, the robot has a number stored in the [code]robot_name[/code] " +"variable. \n" +"\n" +"Change the [code]robot_name[/code] variable so that it's a string instead. " +"You can give it any name you'd like." +msgstr "" +"Сейчас имя робота представлено числом, хранящимся в переменной " +"[code]robot_name[/code].\n" +"\n" +"Измените значение переменной [code]robot_name[/code] на строковое. Вы можете " +"дать роботу любое имя, которое вам нравится." + +#: course/lesson-21-strings/lesson.tres:163 +msgid "Give the robot a readable name using a string stored in a variable." +msgstr "" +"Дайте роботу читабельное имя используя строку, сохранённую в переменной." + +#: course/lesson-21-strings/lesson.tres:168 +msgid "Using an array of strings to play a combo" +msgstr "Использование массива строк для выполнения комбо" + +#: course/lesson-21-strings/lesson.tres:169 +msgid "" +"In this practice, we'll chain together animations using an array of strings. " +"You might find such combinations in fighting games.\n" +"\n" +"The robot has the following animation names:\n" +"\n" +"- [code]jab[/code] (makes the robot perform a quick punch)\n" +"- [code]uppercut[/code] (the robot uses a powerful jumping punch)\n" +"\n" +"Populate the combo array with animation names as strings.\n" +"\n" +"Then, for each action in the array, call the [code]play_animation()[/code] " +"function to play them.\n" +"\n" +"The array should contain three values, so the robot makes these three " +"attacks: two jabs followed by one uppercut." +msgstr "" +"В этом упражнении мы объединим анимации вместе, при помощи массива строк. Вы " +"можете встретить такие комбинации в играх — файтингах.\n" +"\n" +"Робот имеет несколько именованных анимаций:\n" +"\n" +"- [code]jab[/code] (робот делает быстрый удар рукой)\n" +"- [code]uppercut[/code] (робот использует мощный удар рукой в прыжке)\n" +"\n" +"Заполните массив комбинации строковыми именами анимаций.\n" +"\n" +"Затем, для каждого действия в массиве, вызовите функцию " +"[code]play_animation()[/code] для их запуска.\n" +"\n" +"Массив должен содержать три значения, так робот совершает три атаки: два " +"удара (jab), за которыми следует один апперкот (uppercut)." + +#: course/lesson-21-strings/lesson.tres:190 +msgid "Define an array of strings to unleash a powerful combo." +msgstr "Определите массив строк для выполнения мощного комбо." + +#: course/lesson-21-strings/lesson.tres:194 +msgid "Strings" +msgstr "Строки" diff --git a/i18n/ru/lesson-22-functions-return-values.po b/i18n/ru/lesson-22-functions-return-values.po new file mode 100644 index 00000000..d1b15c43 --- /dev/null +++ b/i18n/ru/lesson-22-functions-return-values.po @@ -0,0 +1,258 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-22-functions-return-values/lesson.tres:13 +msgid "" +"Until now, you learned that functions are sequences of instructions you give " +"a name and you can call any time.\n" +"\n" +"On top of that, functions can make calculations and [i]return[/i] new " +"values.\n" +"\n" +"Let's look at some examples to see why it's useful." +msgstr "" +"До этого момента вы выучили, что функции — это именованные " +"последовательности инструкций, которые можно вызвать в любое время.\n" +"\n" +"Помимо этого, функции могут производить вычисления и [i]возвращать[/i] новые " +"значения.\n" +"\n" +"Давайте взглянем на несколько примеров, чтобы увидеть, чем это полезно." + +#: course/lesson-22-functions-return-values/lesson.tres:25 +msgid "Built-in functions that return a value" +msgstr "Встроенные функции, возвращающие значение" + +#: course/lesson-22-functions-return-values/lesson.tres:27 +msgid "" +"Many functions built into GDScript make calculations and return a new " +"value.\n" +"\n" +"For example, the [code]round()[/code] function takes a decimal number as an " +"argument and gives you back a new number rounded to the nearest digit." +msgstr "" +"Многие функции, встроенные в GDScript, производят вычисления и возвращают " +"новые значения.\n" +"\n" +"Напрмер, функция [code]round()[/code] принимает двоичную дробь в качестве " +"аргумента и возвращает вам новое число — результат округления аргумента до " +"ближайшего целого числа." + +#: course/lesson-22-functions-return-values/lesson.tres:49 +msgid "" +"Imagine you have a game where you track the player's health as a percentage, " +"a decimal number going from [code]0.0[/code] to [code]100.0[/code].\n" +"\n" +"When displaying the health on the interface, you don't want to show the " +"decimal part. In that case, you may use the [code]round()[/code] function, " +"like so." +msgstr "" +"Представьте, что у вас есть игра, в которой вы отслеживаете здоровье игрока " +"в процентах — десятичной дроби от [code]0.0[/code] до [code]100.0[/code].\n" +"\n" +"При отображении здоровья в интерфейсе вы не хотите показывать дробную часть. " +"В этом случае, вы можете использовать функцию [code]round()[/code], " +"например, так." + +#: course/lesson-22-functions-return-values/lesson.tres:71 +msgid "" +"Notice how we assign the result of the function call to a variable. Because " +"the [code]round()[/code] function returns a [i]new[/i] value, we need to " +"either store the result or use the value immediately.\n" +"\n" +"Above, we assigned it to a variable, but you could also do the following." +msgstr "" +"Обратите внимание, как мы присваиваем результат выполнения функции " +"переменной. Поскольку функция [code]round()[/code] возвращает [i]новое[/i] " +"значение, нам нужно либо сохранить результат, либо сразу использовать его.\n" +"\n" +"Выше мы присвоили его переменной, но можно поступить и следующим образом." + +#: course/lesson-22-functions-return-values/lesson.tres:93 +msgid "" +"You can assign the return value of a function call if you plan on using it " +"more than once." +msgstr "" +"Вы можете присвоить значение, возвращённое функцией, в переменную, если " +"хотите использовать его более одного раза." + +#: course/lesson-22-functions-return-values/lesson.tres:101 +msgid "A cooler example: lerp()" +msgstr "Пример покруче: lerp()" + +#: course/lesson-22-functions-return-values/lesson.tres:103 +msgid "" +"The [code]lerp()[/code] function, short for [i]linear interpolate[/i], " +"calculates and returns a weighted average between two values.\n" +"\n" +"It takes three arguments: the two values to average and a value between " +"[code]0.0[/code] and [code]1.0[/code] to skew the result.\n" +"\n" +"In game programming, it's used to animate things moving towards a target " +"with a single line of code." +msgstr "" +"Функция [code]lerp()[/code] (сокращение от [i]линейная интерполяция[/i]) " +"вычисляет и возвращает средневзвешенное значение между двумя величинами.\n" +"\n" +"Она принимает три аргумента: два значения для усреднения и значение между " +"[code]0.0[/code] и [code]1.0[/code] в качестве смещения результата.\n" +"\n" +"В программировании игр эта функция используется чтобы анимировать движущиеся " +"к цели объекты в одну строчку кода." + +#: course/lesson-22-functions-return-values/lesson.tres:137 +msgid "" +"Every frame, the code calculates a position somewhere between the turtle and " +"the mouse cursor. The [code]lerp()[/code] function takes care of " +"everything.\n" +"\n" +"It's not the most robust approach for smooth movement, as you'll learn in " +"the future, but it's a helpful function nonetheless." +msgstr "" +"Каждый кадр код вычисляет позицию между черепахой и курсором мыши. Функция " +"[code]lerp()[/code] здесь берёт всю работу на себя.\n" +"\n" +"Это не самый надёжный способ реализации плавного перемещения, как вы " +"убедитесь в будущем, тем не менее, это не делает функцию менее полезной." + +#: course/lesson-22-functions-return-values/lesson.tres:147 +msgid "Writing a function that returns a value" +msgstr "Написание функции, возвращающей значение" + +#: course/lesson-22-functions-return-values/lesson.tres:149 +msgid "" +"You can make [i]your[/i] functions return values.\n" +"\n" +"To make a function return a value, you use the [code]return[/code] keyword " +"followed by the value in question.\n" +"\n" +"In previous lessons, we had characters walking on grids.\n" +"\n" +"And for those practices, you were working directly with cell coordinates.\n" +"\n" +"Well, cell coordinates don't correspond to positions on the screen. To find " +"the center of any cell on the screen, we need to convert the cell's " +"coordinates to a position on the screen, in pixels." +msgstr "" +"Вы можете создать [i]свои[/i] функции, возвращающие значения.\n" +"\n" +"Чтобы заставить функцию вернуть значение, используйте ключевое слово " +"[code]return[/code], а затем укажите желаемое значение.\n" +"\n" +"В предыдущих уроках мы работали с персонажами, перемещающимися по сеткам.\n" +"\n" +"В тех упражнениях вы работали напрямую с координатами ячеек.\n" +"\n" +"Так вот координаты ячейки отличаются от позиций на экране, поэтому нам нужно " +"конвертировать позиции ячеек в позиции на экране." + +#: course/lesson-22-functions-return-values/lesson.tres:177 +msgid "" +"To do so, we use a function. The function does two things:\n" +"\n" +"1. First, it multiplies the cell coordinates by the cell size, which gives " +"us the position of the cell's top-left corner on the screen, in pixels.\n" +"2. Then, we add half of the cell size to get the center of the cell.\n" +"\n" +"The function returns the result, allowing us to store it in a variable." +msgstr "" +"Для этого мы используем функцию. Функция делает две вещи:\n" +"\n" +"1. Сначала координаты ячейки умножаются на размер ячейки, что даёт нам " +"положение верхнего левого угла ячейки на экране в пикселях.\n" +"2. Затем мы добавляем половину размера ячейки, чтобы получить центр ячейки.\n" +"\n" +"Функция возвращает результат, что позволяет нам сохранить его в переменной." + +#: course/lesson-22-functions-return-values/lesson.tres:202 +msgid "" +"The [code]return[/code] keyword returns the value to the code calling the " +"function. You'll receive the result where you call the function." +msgstr "" +"Ключевое слово [code]return[/code] возвращает значение в то место в коде, " +"где была вызвана функция. Вы получите результат после того, как вызовете " +"функцию." + +#: course/lesson-22-functions-return-values/lesson.tres:222 +msgid "" +"Some functions return values, and some do not. During practices, you can " +"learn which functions return a value using the documentation panel. It will " +"display if the practice requires using specific functions or variables.\n" +"\n" +"There, functions that start with the term [code]void[/code] do not return a " +"value. Any other term means the function does return a value. You'll learn " +"more about what other terms mean in a couple of lessons when we explore " +"value [i]types[/i].\n" +"\n" +"For now, let's practice returning values from functions!" +msgstr "" +"Некоторые функции возвращают значения, а некоторые — нет. Вы можете узнать, " +"какие функции возвращают значение при помощи панели документации на экране " +"упражнения.\n" +"\n" +"Здесь, функции, начинающиеся с термина [code]void[/code] не возвращают " +"значение. В остальных случаях функция возвращает значение. Вы узнаете больше " +"о том что значат другие термины через несколько уроков, когда мы рассмотрим " +"[i]типы[/i] значений.\n" +"\n" +"А пока что давайте поупражняемся в возвращении значений из функций!" + +#: course/lesson-22-functions-return-values/lesson.tres:234 +msgid "Converting coordinates from the grid to the screen" +msgstr "Конвертация координат сетки в координаты экрана" + +#: course/lesson-22-functions-return-values/lesson.tres:235 +msgid "" +"Define a function that converts a position on a grid to the screen.\n" +"\n" +"The function takes a [code]Vector2[/code] cell coordinate as an argument. It " +"should return the corresponding [code]Vector2[/code] screen coordinates at " +"the center of the cell." +msgstr "" +"Определите функцию для конвертации позиции на сетке в позицию на экране.\n" +"\n" +"Эта функция принимает [code]Vector2[/code] — координату ячейки, в качестве " +"аргумента. Она должна возвращать [code]Vector2[/code] — позицию центра " +"ячейки на экране." + +#: course/lesson-22-functions-return-values/lesson.tres:249 +msgid "" +"We lost the function to convert grid coordinates, but we desperately need it " +"for our game! Make the turtle move again by coding it." +msgstr "" +"Мы потеряли функцию для конвертации координат сетки, но она черезвычайно " +"важна для нашей игры! Заставьте черепаху двигаться при помощи " +"программирования снова." + +#: course/lesson-22-functions-return-values/lesson.tres:253 +msgid "Functions that return a value" +msgstr "Функции, возвращающие значения" + +#~ msgid "" +#~ "To do so, we use a function. It multiplies the cell coordinate by the " +#~ "cell size, adds half the cell size to the product, and returns the result." +#~ msgstr "" +#~ "Для этого мы используем функцию. Она умножает координату ячейки на размер " +#~ "ячейки, добавляет половину размера ячейки к результату произведения и " +#~ "возвращает полученное число." diff --git a/i18n/ru/lesson-23-append-to-arrays.po b/i18n/ru/lesson-23-append-to-arrays.po new file mode 100644 index 00000000..40cd24ac --- /dev/null +++ b/i18n/ru/lesson-23-append-to-arrays.po @@ -0,0 +1,310 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-23-append-to-arrays/lesson.tres:13 +msgid "" +"In previous lessons, you learned how to create arrays to store lists of " +"values and how to loop over them. It's nice, but you won't go far with only " +"that.\n" +"\n" +"The real strength of arrays is that you can add and remove values from them " +"at any time. It allows you to [i]queue[/i] or [i]stack[/i] data." +msgstr "" +"В предыдущих уроках вы научились создавать массивы для хранения списка " +"значений и перебирать их элементы в цикле. Это здорово, но на этих " +"возможностях вы далеко не уедете.\n" +"\n" +"Настоящая сила массивов в том, что вы можете добавлять и удалять элементы из " +"них в любое время. Это позволяет вам [i]ставить в очередь[/i] или " +"[i]складывать данные в стек[/i]." + +#: course/lesson-23-append-to-arrays/lesson.tres:25 +msgid "For now, let's take another example." +msgstr "Давайте рассмотрим пример." + +#: course/lesson-23-append-to-arrays/lesson.tres:33 +msgid "Tracking orders in a restaurant management game" +msgstr "Отслеживание заказов в игре по управлению рестораном" + +#: course/lesson-23-append-to-arrays/lesson.tres:35 +msgid "" +"You're making a restaurant management game where customers place orders, and " +"you need to handle them as they come.\n" +"\n" +"In this game, customers order meals that end up in a queue. You need to " +"prepare them in the kitchen.\n" +"\n" +"In this example, we simulate orders arriving and getting completed over time." +msgstr "" +"Вы создаёте игру про управление рестораном, где клиенты делают заказы, а вам " +"нужно обрабатывать их по мере поступления.\n" +"\n" +"В этой игре заказы клиентов попадают в очередь. Вам нужно готовить их на " +"кухне.\n" +"\n" +"В этом примере мы имитируем поступление заказов и их выполнение за " +"определённое время." + +#: course/lesson-23-append-to-arrays/lesson.tres:59 +msgid "" +"How do you keep track of pending and completed orders? With an array!\n" +"\n" +"When a customer purchases a meal, you want to [i]append[/i] it to the array. " +"Then, as you complete a meal in the kitchen and serve it, you want to remove " +"it from the array.\n" +"\n" +"You can do that with the [code]append()[/code] and the [code]pop_front()[/" +"code] functions of the array, respectively.\n" +"\n" +"Try to read the code below before moving on. Don't worry if not everything " +"makes sense, as we'll break it all down." +msgstr "" +"Как отследить выполненные и невыполненные заказы? С помощью массива!\n" +"\n" +"Когда посетитель покупает блюдо, вы [i]добавляете[/i] его в массив. Затем, " +"когда блюдо готово и подано посетителю, вы удаляете его из массива.\n" +"\n" +"Этого можно достичь при помощи [code]append()[/code] и [code]pop_front()[/" +"code] — функций массива.\n" +"\n" +"Попробуйте прочитать код, приведённый ниже, прежде чем продвинетесь дальше. " +"Не беспокойтесь, если не всё понятно, дальше мы детально его разберём." + +#: course/lesson-23-append-to-arrays/lesson.tres:85 +msgid "" +"Notice how we call some functions by writing a dot after a variable name. " +"Like a given value type can have sub-variables, it can also have its own " +"functions.\n" +"\n" +"Functions like [code]append()[/code] and [code]pop_front()[/code] only exist " +"on arrays. That's why to call them, we need to access it from the array " +"using the dot: [code]array.append()[/code]." +msgstr "" +"Обратите внимание, что некоторые функции мы вызываем при помощи точки после " +"имени переменной. Значение некоторого типа может иметь как внутренние " +"переменные, так и внутренние функции.\n" +"\n" +"Такие функции, как [code]append()[/code] и [code]pop_front()[/code], " +"существуют только внутри массивов. Поэтому для их вызова нам необходимо " +"ставить точку: [code]array.append()[/code]." + +#: course/lesson-23-append-to-arrays/lesson.tres:97 +msgid "" +"Let's break down the code.\n" +"\n" +"We queue orders in the [code]waiting_orders[/code] array by appending them " +"to the array." +msgstr "" +"Давайте разберём код.\n" +"\n" +"Мы добавляем заказы в порядке очереди в массив [code]waiting_orders[/code]." + +#: course/lesson-23-append-to-arrays/lesson.tres:119 +msgid "" +"We can use a string to represent a meal when calling the [code]add_order()[/" +"code] function." +msgstr "" +"Можно использовать строку для представления блюда при вызове функции " +"[code]add_order()[/code]." + +#: course/lesson-23-append-to-arrays/lesson.tres:139 +msgid "" +"When completing an order, we remove it from the [code]waiting_orders[/code] " +"array by calling its [code]pop_front()[/code] function. This function gives " +"us the order back, which allows us to assign it to a temporary variable." +msgstr "" +"При завершении заказа мы удаляем его из массива [code]waiting_orders[/code] " +"при помощи вызова его функции [code]pop_front()[/code]. После выполнения эта " +"функция возвращает нам удалённый элемент массива, что позволяет записать его " +"во временную переменную." + +#: course/lesson-23-append-to-arrays/lesson.tres:159 +msgid "" +"We can then append the order to our [code]completed_orders[/code] array." +msgstr "Мы можем добавлять заказы в наш массив [code]completed_orders[/code]." + +#: course/lesson-23-append-to-arrays/lesson.tres:179 +msgid "" +"We call arrays like [code]waiting_orders[/code] a [i]queue[/i]: the first " +"element we append to the array is the first one we remove." +msgstr "" +"Массивы, подобные [code]waiting_orders[/code], называются [i]очередями[/i]: " +"первый добавленный элемент будет удалён первым." + +#: course/lesson-23-append-to-arrays/lesson.tres:187 +msgid "What does #... mean?" +msgstr "Что значит #..?" + +#: course/lesson-23-append-to-arrays/lesson.tres:189 +msgid "" +"We write [code]#...[/code] to represent ellipses in the code. It means " +"\"we're completing the function's code.\" We use that to break down code " +"examples and make them easier to learn from.\n" +"\n" +"The hash sign itself marks the start of a code comment. It's a line the " +"computer will ignore, which is why it typically appears in grey." +msgstr "" +"Мы используем [code]#...[/code] для сокращения. Это значит «тут может быть " +"какой-то код функции». Такой подход помогает нам разбивать примеры кода на " +"кусочки, удобные для усвоения при обучении.\n" +"\n" +"Сам по себе значок хеша помечает начало комментария в коде. Эта строка будет " +"проигнорирована компьютером, именно поэтому обычно она помечается серым " +"цветом." + +#: course/lesson-23-append-to-arrays/lesson.tres:199 +msgid "Using arrays as stacks" +msgstr "Использование массивов в качестве стека" + +#: course/lesson-23-append-to-arrays/lesson.tres:201 +msgid "" +"Another common use of arrays is [i]stacks[/i] of data.\n" +"\n" +"Take a factory management game where you need to retrieve materials from " +"stacks of crates. They arrive at the factory piled up vertically, and you " +"need to take them from top to bottom." +msgstr "" +"Другой типичный пример использования массивов — [i]стеки[/i] данных.\n" +"\n" +"Рассмотрим игру про управление заводом, где вам нужно использовать " +"материалы, сложенные в сундуки. Материалы складываются в сундук сверху и " +"брать их из сундука вы можете только сверху." + +#: course/lesson-23-append-to-arrays/lesson.tres:223 +msgid "" +"To take a crate from the back of the array, this time, we use the " +"[code]pop_back()[/code] array function.\n" +"\n" +"This function removes (pops) the last value from the array and returns it to " +"you.\n" +"\n" +"Here we pop the last value of the array and print what's left of the array " +"to demonstrate how the array gets smaller." +msgstr "" +"Для создания сундука из массива, в этот раз мы будем использовать функцию " +"массива [code]pop_back()[/code].\n" +"\n" +"Эта функция удаляет последний элемент из массива и возвращает его вам.\n" +"\n" +"Здесь мы удаляем последнее значение из массива и выводим количество " +"оставшихся элементов для демонстрации того, как он уменьшается." + +#: course/lesson-23-append-to-arrays/lesson.tres:247 +msgid "" +"Like [code]pop_front()[/code], the function returns the value removed from " +"the array. You will often store that value in a variable.\n" +"\n" +"The value in question could be the crate's content, which you can then use " +"to give resources to the player.\n" +"\n" +"In the following practices, you will use the [code]append()[/code], " +"[code]pop_front()[/code], and [code]pop_back()[/code] array functions." +msgstr "" +"Подобно [code]pop_front()[/code], функция возвращает значение, удалённое из " +"массива. Вы часто будете сохранять это значение в переменную.\n" +"\n" +"Такое значение может быть содержимым ящика, которое затем вы сможете " +"передать игроку.\n" +"\n" +"В следующих упражнениях вы будете использовать функции массива: " +"[code]append()[/code], [code]pop_front()[/code] и [code]pop_back()[/code]." + +#: course/lesson-23-append-to-arrays/lesson.tres:259 +msgid "Completing orders" +msgstr "Выполнение заказов" + +#: course/lesson-23-append-to-arrays/lesson.tres:260 +msgid "" +"The [code]waiting_orders[/code] array will be filled over time.\n" +"\n" +"Your job is to move orders from the waiting list to the " +"[code]completed_orders[/code] list using the array's [code]append()[/code] " +"and [code]pop_front()[/code] functions.\n" +"\n" +"Remember that the array's [code]pop_front()[/code] function returns the " +"popped value, which allows you to store it in a variable and then pass it to " +"another function." +msgstr "" +"Массив [code]waiting_orders[/code] будет заполняться постепенно.\n" +"\n" +"Ваша задача — перемещать заказы из списка ожидания в список " +"[code]completed_orders[/code] при помощи функций массива [code]append()[/" +"code] и [code]pop_front()[/code].\n" +"\n" +"Помните, что функция [code]pop_front()[/code] возвращает удалённое из " +"массива значение, что позволяет вам сохранить его в переменную и передать в " +"другую функцию." + +#: course/lesson-23-append-to-arrays/lesson.tres:277 +msgid "" +"Orders are piling up in the kitchen, and we need to clear them fast using " +"the array's [code]pop_front()[/code] function." +msgstr "" +"Заказы накапливаются на кухне и нам нужно быстро выполнять их с помощью " +"функции массива [code]pop_front()[/code]." + +#: course/lesson-23-append-to-arrays/lesson.tres:282 +msgid "Clearing up the crates" +msgstr "Очистка ящиков" + +#: course/lesson-23-append-to-arrays/lesson.tres:283 +msgid "" +"Crates are piling up on the platform. Move them out of the way by popping " +"them from the [code]crates[/code] array.\n" +"\n" +"You need to remove them from top to bottom using the array's [code]pop_back()" +"[/code] function.\n" +"\n" +"Your code should remove all the crates in the array using a while loop.\n" +"\n" +"[b]Careful![/b] if you run a while loop carelessly, you can lock the " +"software.\n" +"\n" +"You can check if the [code]crates[/code] array still contains values by " +"writing [code]while crates:[/code]" +msgstr "" +"На платформе скопились ящики. Уберите ящики с дороги, удалив их из массива " +"[code]crates[/code].\n" +"\n" +"Убирать ящики нужно сверху вниз, при помощи функции [code]pop_back()[/" +"code].\n" +"\n" +"Для удаления ящиков обязательно используйте цикл while.\n" +"\n" +"[b]Осторожно![/b] Если вы запустите цикл бездумно, программа может " +"зависнуть.\n" +"\n" +"Проверить, содержит ли массив [code]crates[/code] значения, можно вот так: " +"[code]while crates:[/code]" + +#: course/lesson-23-append-to-arrays/lesson.tres:303 +msgid "" +"Crates are piling up on the platform. Move them out of the way by popping " +"them from their array." +msgstr "" +"На платформе скапливаются ящики. Уберите их с дороги, удалив из массива." + +#: course/lesson-23-append-to-arrays/lesson.tres:307 +msgid "Appending and popping values from arrays" +msgstr "Добавление и удаление значений из массивов" diff --git a/i18n/ru/lesson-24-access-array-indices.po b/i18n/ru/lesson-24-access-array-indices.po new file mode 100644 index 00000000..d698b7a5 --- /dev/null +++ b/i18n/ru/lesson-24-access-array-indices.po @@ -0,0 +1,272 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-24-access-array-indices/lesson.tres:14 +msgid "" +"You learned to loop over all the values in an array using the [code]for[/" +"code] keyword." +msgstr "" +"Вы научились перебирать значения массива циклом при помощи ключевого слова " +"[code]for[/code]." + +#: course/lesson-24-access-array-indices/lesson.tres:34 +msgid "" +"But what if you need to access the third item in the player's inventory? The " +"tenth item?\n" +"\n" +"There's a dedicated notation to access one element in an array by index.\n" +"\n" +"To do so, you use square brackets with a number inside the brackets." +msgstr "" +"Но что, если вам нужно получить доступ к третьему предмету в инвентаре " +"игрока? А к десятому предмету?\n" +"\n" +"Для этого существует специальная нотация получения конкретного элемента " +"массива по индексу.\n" +"\n" +"Для получения элемента используйте квадратные скобки с числом — индексом " +"внутри." + +#: course/lesson-24-access-array-indices/lesson.tres:58 +msgid "Index zero is the [i]first[/i] element in the array." +msgstr "Элемент под индексом ноль — это [i]первый[/i] элемент массива." + +#: course/lesson-24-access-array-indices/lesson.tres:78 +msgid "" +"Index one is the [i]second[/i] element in the array, and so on.\n" +"\n" +"You would access the [i]fourth[/i] element in the [code]inventory[/code] " +"array like so." +msgstr "" +"Элемент под индексом один — это [i]второй[/i] элемент массива, и так далее.\n" +"\n" +"Получить [i]четвёртый[/i] элемент массива [code]inventory[/code] можно таким " +"образом." + +#: course/lesson-24-access-array-indices/lesson.tres:98 +msgid "" +"How would you access the [i]third[/i] item in the [code]inventory[/code] " +"array?" +msgstr "Как получить [i]третий[/i] элемент массива [code]inventory[/code]?" + +#: course/lesson-24-access-array-indices/lesson.tres:101 +msgid "" +"Indices start at zero, so the index of the [i]third[/i] item is [code]2[/" +"code]. That's why you need to write [code]inventory[2][/code]." +msgstr "" +"Индексы начинаются с нуля, поэтому индекс [i]третьего[/i] предмета — это " +"[code]2[/code]. Для получения элемента вам нужно написать [code]inventory[2]" +"[/code]." + +#: course/lesson-24-access-array-indices/lesson.tres:102 +#: course/lesson-24-access-array-indices/lesson.tres:103 +msgid "inventory[2]" +msgstr "inventory[2]" + +#: course/lesson-24-access-array-indices/lesson.tres:102 +msgid "inventory[3]" +msgstr "inventory[3]" + +#: course/lesson-24-access-array-indices/lesson.tres:110 +msgid "Accessing the last values with negative indices" +msgstr "Получение последних значений при помощи отрицательных индексов" + +#: course/lesson-24-access-array-indices/lesson.tres:112 +msgid "" +"What if you want to access the last or second-before-last item in the " +"[code]inventory[/code]?\n" +"\n" +"In that case, you can use negative indices. If you write [code]-1[/code] in " +"the brackets, you will get the last item in the array. You will get the " +"second-to-last item if you write [code]-2[/code]." +msgstr "" +"Что если вы хотите получить последний или предпоследний элемент из " +"[code]inventory[/code]?\n" +"\n" +"В этом случае вы можете использовать отрицательные индексы. Если указать в " +"скобках [code]-1[/code], то вы получите последний элемент массива. Для " +"получения предпоследнего элемента, можно использовать [code]-2[/code]." + +#: course/lesson-24-access-array-indices/lesson.tres:134 +msgid "" +"That's very convenient when you need to quickly access elements from the end " +"of the list." +msgstr "" +"Это очень удобно, в случаях, когда вам нужно быстро получить последний " +"элемент списка." + +#: course/lesson-24-access-array-indices/lesson.tres:142 +msgid "How would you access the third-to-last item in the inventory array?" +msgstr "Как получить перед-предпоследний элемент из массива inventory?" + +#: course/lesson-24-access-array-indices/lesson.tres:145 +msgid "" +"When using negative indices, [code]-1[/code] means the [i]last[/i] element " +"in the array. Index [code]-2[/code] will be the second-to-last, thus " +"[code]-3[/code] will be the third-to-last.\n" +"\n" +"It can be little confusing as it seems to work differently from positive " +"indices. However, it's because there's no difference between index [code]0[/" +"code] and [code]-0[/code]: they both point to the first item in the array." +msgstr "" +"При использовании отрицательных индексов, [code]-1[/code] означает " +"[i]последний[/i] элемент массива. Индекс [code]-2[/code] — второй с конца, " +"[code]-3[/code] третий с конца и так далее.\n" +"\n" +"Это может немного запутать, ведь всё выглядит так, будто отрицательные и " +"положительные индексы работают по-разному. На самом же деле, они работают " +"одинаково, просто между индексами [code]0[/code] и [code]-0[/code] нет " +"разницы: они оба указывают на первый элемент массива." + +#: course/lesson-24-access-array-indices/lesson.tres:148 +#: course/lesson-24-access-array-indices/lesson.tres:149 +msgid "inventory[-3]" +msgstr "inventory[-3]" + +#: course/lesson-24-access-array-indices/lesson.tres:148 +msgid "inventory[-2]" +msgstr "inventory[-2]" + +#: course/lesson-24-access-array-indices/lesson.tres:156 +msgid "You can't access non-existent indices" +msgstr "Нельзя получить отсутствующий элемент по индексу" + +#: course/lesson-24-access-array-indices/lesson.tres:158 +msgid "" +"There's a catch with this syntax: if you try to access an index that does " +"not exist, you will get an error. You have to be careful always to access " +"existing elements in the array.\n" +"\n" +"There are a couple of ways you can check for valid indices. One of them is " +"checking the array's size." +msgstr "" +"В этом синтаксисе есть небольшая ловушка: если вы попытаетесь получить по " +"индексу элемент, которого не существует, вы получите ошибку. Всегда " +"соблюдайте осторожность при получении элемента массива по индексу.\n" +"\n" +"Есть несколько способов, которыми можно проверить, присутствует ли элемент " +"под индексом в массиве. Один из них — посмотреть на размер массива." + +#: course/lesson-24-access-array-indices/lesson.tres:170 +msgid "" +"[b]Checking the size of the array[/b]\n" +"\n" +"Arrays come with a member function named [code]size()[/code]. You can call " +"it on the array anytime to know its [i]current[/i] size." +msgstr "" +"[b]Проверка количества элементов в массиве[/b]\n" +"\n" +"Массивы имеют внутреннюю функцию [code]size()[/code]. Вы можете вызвать её в " +"любое время, чтобы узнать [i]текущий[/i] размер массива." + +#: course/lesson-24-access-array-indices/lesson.tres:192 +msgid "" +"The maximum index you can access in an array is [code]array.size() - 1[/" +"code]: it's the last item in the array." +msgstr "" +"Максимальный индекс, он же индекс последнего элемента в массиве, всегда " +"равен [code]array.size() - 1[/code]." + +#: course/lesson-24-access-array-indices/lesson.tres:212 +msgid "" +"In the following practices, you will use array indices to realign train " +"tracks and grab the correct item in an inventory." +msgstr "" +"В последующих упражнениях вы будете получать элементы из массивов по " +"индексам для починки железной дороги и вытаскивания правильных предметов из " +"инвентаря." + +#: course/lesson-24-access-array-indices/lesson.tres:220 +msgid "Using the right items" +msgstr "Использование правильных предметов" + +#: course/lesson-24-access-array-indices/lesson.tres:221 +msgid "" +"In our game, the player has an inventory that works as an array under the " +"hood.\n" +"\n" +"They want to equip a sword and a shield to buff their characters. Like " +"before, we need you to find them in the array.\n" +"\n" +"You need to access elements in the [code]inventory[/code] array by index to " +"do so.\n" +"\n" +"Call the [code]use_item()[/code] function with the item as an argument to " +"use an item. For example, you can use the first item by calling " +"[code]use_item(inventory[0])[/code]." +msgstr "" +"В нашей игре у игрока есть инвентарь, который под капотом представляет из " +"себя массив.\n" +"\n" +"Игрок хочет экипировать меч и щит для того, чтобы усилить своего персонажа. " +"Вам нужно найти правильные элементы в массиве, как вы делали это раньше.\n" +"\n" +"Возьмите правильные элементы из массива [code]inventory[/code] по индексам.\n" +"\n" +"Вызовите фунцию [code]use_item()[/code] с предметом в качестве аргумента, " +"чтобы использовать предмет. Например, вы можете использовать первый предмет " +"при помощи вызова [code]use_item(inventory[0])[/code]." + +#: course/lesson-24-access-array-indices/lesson.tres:239 +msgid "Find the right items to use in the player's inventory." +msgstr "Найдите правильные предметы в инвентаре игрока, чтобы их использовать." + +#: course/lesson-24-access-array-indices/lesson.tres:244 +msgid "Realigning the train tracks" +msgstr "Починка железной дороги" + +#: course/lesson-24-access-array-indices/lesson.tres:245 +msgid "" +"We have train tracks broken down into little chunks in our game. We use them " +"to make modular tracks and draw circuits of all shapes and sizes.\n" +"\n" +"However, several chunks are misaligned. You need to find them in the " +"[code]tracks[/code] array and pass them to the [code]align()[/code] " +"function.\n" +"\n" +"To do so, you need to access the array by index.\n" +"\n" +"This time, though, you need to access them with [i]negative indices[/i]." +msgstr "" +"В нашей игре есть рельсовые пути, разбитые на маленькие части. Мы используем " +"их для составления маршрутов любых форм и размеров.\n" +"\n" +"Но сейчас несколько частей расположены неправильно. Вам нужно достать их из " +"массива [code]tracks[/code] и передать в функцию [code]align()[/code].\n" +"\n" +"Для этого вам нужно получить элементы массива по индексам.\n" +"\n" +"В этот раз используйте [i]отрицательные индексы[/i]." + +#: course/lesson-24-access-array-indices/lesson.tres:263 +msgid "" +"Some chunks of our train tracks are misaligned, and the train can't pass. " +"Find the faulty pieces and realign them." +msgstr "" +"Несколько частей железной дороги расположены неправильно, это мешает поезду " +"проехать. Найдите проблемные части и исправьте их." + +#: course/lesson-24-access-array-indices/lesson.tres:267 +msgid "Accessing values in arrays" +msgstr "Получение значений из массивов" diff --git a/i18n/ru/lesson-25-creating-dictionaries.po b/i18n/ru/lesson-25-creating-dictionaries.po new file mode 100644 index 00000000..819f03cc --- /dev/null +++ b/i18n/ru/lesson-25-creating-dictionaries.po @@ -0,0 +1,325 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-25-creating-dictionaries/lesson.tres:14 +msgid "" +"In the last lesson, we used an array to represent a player's inventory.\n" +"\n" +"With just an array of item names, though, we can't easily keep track of " +"the amount of each item.\n" +"\n" +"Instead, we can bundle the item names and amounts into a single " +"[i]dictionary[/i].\n" +"\n" +"A dictionary is a data structure that allows you to map pairs of values. " +"In the pair, we call the first value a [i]key[/i] as we use it to access " +"the second.\n" +"\n" +"In other words, a dictionary has a list of [i]keys[/i], and each key " +"points to a [i]value[/i].\n" +"\n" +"To define a dictionary, we use curly brackets. A colon separates each key " +"and its value. A comma separates each key and value pair." +msgstr "" +"В последнем уроке мы использовали массив для представления инвентаря " +"игрока.\n" +"\n" +"Однако, в массиве, содержащем только названия предметов, отслеживать " +"количество предметов каждого типа очень непросто.\n" +"\n" +"Вместо этого мы можем объединить названия предметов и их количество в " +"один [i]словарь[/i].\n" +"\n" +"Словарь (dictionary) — это структура данных, которая позволяет вам " +"сопоставлять пары значений. Первое значение в паре мы называем [i]ключом[/" +"i], оно используется для получения второго значения пары.\n" +"\n" +"Другими словами, словарь содержит в себе список [i]ключей[/i], а каждый " +"ключ указывает на какое-то [i]значение[/i].\n" +"\n" +"Для определения словаря используются фигурные скобки. Ключ и его значение " +"отделяются друг от друга двоеточием. Пары ключ-значение отделяются друг " +"от друга запятыми." + +#: course/lesson-25-creating-dictionaries/lesson.tres:42 +msgid "Dictionaries can hold any values" +msgstr "Словари могут содержать любые значения" + +#: course/lesson-25-creating-dictionaries/lesson.tres:44 +msgid "" +"Dictionaries can map about any value to any other value.\n" +"\n" +"For example, we can use the name of an item as a key and the amount as " +"the corresponding value. This makes dictionaries excellent for keeping " +"track of a player's inventory." +msgstr "" +"Словари могут сопоставлять любое значение с любым другим значением.\n" +"\n" +"Например, мы можем использовать название предмета в качестве ключа и " +"количество таких объектов в качестве значения в паре. Это делает словари " +"отличным инструментом для создания инвентаря игрока." + +#: course/lesson-25-creating-dictionaries/lesson.tres:66 +msgid "" +"Here we matched the name (a string) to the amount (a number). But a key " +"could be a string, a number, or even a vector! \n" +"\n" +"Although we can have all of these different keys, keep in mind that every " +"key has to be [i]unique[/i]. That means we [i]couldn't[/i] have a " +"dictionary like the following." +msgstr "" +"Здесь мы сопоставили имя (строку) и количество (число). Но вместо строки " +"ключ может быть и числом, и даже вектором!\n" +"\n" +"Хоть мы и можем использовать разные ключи, всегда держите в голове, что " +"каждый ключ должен быть [i]уникальным[/i]. Это значит, что мы [i]не " +"должны[/i] использовать словари, как в примере ниже." + +#: course/lesson-25-creating-dictionaries/lesson.tres:88 +msgid "We would get the following error." +msgstr "Это приведёт к следующей ошибке." + +#: course/lesson-25-creating-dictionaries/lesson.tres:106 +msgid "In the above example, which key would cause an error?" +msgstr "Использование какого ключа приводит к ошибке в предыдущем примере?" + +#: course/lesson-25-creating-dictionaries/lesson.tres:109 +msgid "" +"The key [code]\"healing heart\"[/code] appears [b]twice[/b] in the " +"dictionary.\n" +"\n" +"In the above example, Godot wouldn't know whether to return [code]3[/" +"code] or [code]8[/code] when using [code]inventory[\"healing heart\"][/" +"code]. This is why keys need to be unique." +msgstr "" +"Ключ [code]\"healing heart\"[/code] используется в словаре [b]дважды[/" +"b].\n" +"\n" +"При выполнении кода из примера выше, Godot не поймёт, что он должен " +"возвращать, [code]3[/code] или [code]8[/code], при попытке получить " +"значение по ключу [code]\"healing heart\"[/code] из [code]inventory[/" +"code]. Поэтому ключи должны быть уникальными." + +#: course/lesson-25-creating-dictionaries/lesson.tres:112 +#: course/lesson-25-creating-dictionaries/lesson.tres:113 +msgid "\"healing heart\"" +msgstr "\"healing heart\"" + +#: course/lesson-25-creating-dictionaries/lesson.tres:112 +msgid "\"shield\"" +msgstr "\"shield\"" + +#: course/lesson-25-creating-dictionaries/lesson.tres:112 +msgid "\"sword\"" +msgstr "\"sword\"" + +#: course/lesson-25-creating-dictionaries/lesson.tres:120 +msgid "How dictionaries work under the hood" +msgstr "Как словари работают под капотоп" + +#: course/lesson-25-creating-dictionaries/lesson.tres:122 +msgid "" +"Dictionaries are also called mappings or [i]associative arrays[/i]. Under " +"the hood, they use arrays and several functions to efficiently store and " +"retrieve values across arrays.\n" +"\n" +"Precisely, dictionaries use a [i]hashing algorithm[/i]. Hashing " +"algorithms convert one value into another.\n" +"\n" +"In this case, hashing consists of converting a given key into a unique " +"whole number. The dictionary then uses that number as an array's index!\n" +"\n" +"That's how a dictionary works: when you give it a key, it converts it " +"into a unique index and uses that index to retrieve the corresponding " +"value in the computer's memory.\n" +"\n" +"That's also why you can't have the same key twice: it would map to the " +"same array index, causing you to overwrite an existing value." +msgstr "" +"Словари также называют маппингами [i]ассоциативными массивами[/i]. Под " +"капотом, они используют массивы и несколько функций для эффективного " +"хранения и извлечения значений этих массивов.\n" +"\n" +"Для этого словари используют [i]алгоритм хеширования[/i]. Алгоритмы " +"хеширования преобразуют одно значение в другое.\n" +"\n" +"В нашем случае, хеширование состоит в конвертации переданного значения в " +"уникальное целое число. Затем словари используют это число для получения " +"значения по индексу из массива!\n" +"\n" +"Вот как работают словари: когда вы передаёте ему ключ, он преобразует его " +"в уникальный индекс и использует этот индекс для извлечения " +"сопоставленного значения из памяти компьютера.\n" +"\n" +"Так же это объясняет, почему вы не можете использовать один ключ дважды: " +"он будет преобразовываться к такому же индексу массива, что приведёт к " +"перезаписи существующего значения." + +#: course/lesson-25-creating-dictionaries/lesson.tres:138 +msgid "Accessing values" +msgstr "Получение значений" + +#: course/lesson-25-creating-dictionaries/lesson.tres:140 +msgid "" +"We access the value of keys by writing the dictionary name, with the key " +"in between square brackets." +msgstr "" +"Чтобы получить значение по ключу нужно написать имя словаря, а после " +"указать ключ в квадратных скобках." + +#: course/lesson-25-creating-dictionaries/lesson.tres:168 +msgid "How would you access how many gems the player has?" +msgstr "Как узнать, сколько драгоценных камней (gem) есть у игрока?" + +#: course/lesson-25-creating-dictionaries/lesson.tres:171 +msgid "" +"We need to make sure the key is the same as we defined in the " +"dictionary.\n" +"\n" +"In our case, [code]var item_count = inventory[\"gems\"][/code] is correct." +msgstr "" +"Мы должны быть уверены, что получаем значение именно по тому ключу, который " +"использовали при определении массива.\n" +"\n" +"В нашем случае, правильным является [code]var item_count = inventory[\"gems\"" +"][/code]." + +#: course/lesson-25-creating-dictionaries/lesson.tres:174 +msgid "var item_count = inventory[\"gem\"]" +msgstr "var item_count = inventory[\"gem\"]" + +#: course/lesson-25-creating-dictionaries/lesson.tres:174 +#: course/lesson-25-creating-dictionaries/lesson.tres:175 +msgid "var item_count = inventory[\"gems\"]" +msgstr "var item_count = inventory[\"gems\"]" + +#: course/lesson-25-creating-dictionaries/lesson.tres:174 +msgid "var item_count = inventory[\"sword\"]" +msgstr "var item_count = inventory[\"sword\"]" + +#: course/lesson-25-creating-dictionaries/lesson.tres:182 +msgid "Changing values" +msgstr "Изменение значений" + +#: course/lesson-25-creating-dictionaries/lesson.tres:184 +msgid "" +"We can also change values directly, which is useful in our case for " +"adding or removing items from the player's inventory." +msgstr "" +"Также, мы можем изменять значения напрямую, что, в нашем случае, полезно " +"для добавления или удаления предметов из инвентаря игрока." + +#: course/lesson-25-creating-dictionaries/lesson.tres:214 +msgid "" +"In the following practices, we'll use a dictionary to create a player " +"inventory and create a function to change the value of items." +msgstr "" +"В следующих упражнениях мы создадим инвентарь игрока при помощи словаря, " +"а также напишем функцию для изменения количества предметов в инвентаре." + +#: course/lesson-25-creating-dictionaries/lesson.tres:222 +msgid "Creating an inventory using a dictionary" +msgstr "Создание инвентаря при помощи словаря" + +#: course/lesson-25-creating-dictionaries/lesson.tres:223 +msgid "" +"Let's give some items to the player.\n" +"\n" +"We use a dictionary for the player's inventory. We defined the " +"[code]inventory[/code] variable for you, but it contains no items yet.\n" +"\n" +"Give the player the following items by adding the correct keys and values " +"to the dictionary:\n" +"\n" +"- Three \"healing heart\".\n" +"- Nine \"gems\".\n" +"- One \"sword\".\n" +"\n" +"The keys should be text strings, and the values whole numbers." +msgstr "" +"Давайте дадим несколько предметов игроку.\n" +"\n" +"Мы используем словарь в качестве инвентаря игрока. Переменная " +"[code]inventory[/code] уже определена, но в ней нет значений.\n" +"\n" +"Дайте игроку перечисленные предметы, при помощи добавления правильных " +"ключей и значений в словарь:\n" +"\n" +"- Три \"healing heart\".\n" +"- Девять \"gems\".\n" +"- Один \"sword\".\n" +"\n" +"В качестве ключей должны использоваться строки, а в качестве значений — " +"целые числа." + +#: course/lesson-25-creating-dictionaries/lesson.tres:244 +msgid "" +"Collecting items is fun, but we need a good way to store them. Write a " +"dictionary to display the player's items." +msgstr "" +"Собирать предметы весело, но нам нужен хороший способ их хранения. " +"Напишите словарь для отображения предметов игрока." + +#: course/lesson-25-creating-dictionaries/lesson.tres:249 +msgid "Increasing item counts" +msgstr "Увеличиваем количество предметов" + +#: course/lesson-25-creating-dictionaries/lesson.tres:250 +msgid "" +"We want to change the item counts in the player's inventory whenever the " +"player picks up or uses an item.\n" +"\n" +"We've started the [code]add_item()[/code] function for you.\n" +"\n" +"The [code]inventory[/code] dictionary should use the [code]item_name[/" +"code] parameter as the key to access its values, and we should increase " +"the value by [code]amount[/code].\n" +"\n" +"To test this practice, we'll use your [code]add_item()[/code] function to " +"increase the item count of Healing Heart, Gems, and Sword." +msgstr "" +"Мы хотим изменять количество предметов в инвентаре игрока каждый раз, " +"когда он подбирает или использует предмет.\n" +"\n" +"Мы уже начали функцию [code]add_item()[/code] за вас.\n" +"\n" +"Словарь [code]inventory[/code] должен использовать параметр " +"[code]item_name[/code] в качестве ключа для получения количества " +"предметов, а количество должно увеличиваться на [code]amount[/code].\n" +"\n" +"Для проверки этого упражнения мы будем использовать вашу функцию " +"[code]add_item()[/code] для увеличения количества Healing Heart, Gems и " +"Sword." + +#: course/lesson-25-creating-dictionaries/lesson.tres:266 +msgid "" +"The player might walk over a pick-up or find something in a chest, so we " +"need a way to change the item counts in our inventory." +msgstr "" +"Игрок может поднять предмет с пола или найти что-то в сундуке, поэтому " +"нам нужен способ изменить количество предметов в инвентаре." + +#: course/lesson-25-creating-dictionaries/lesson.tres:270 +msgid "Creating Dictionaries" +msgstr "Создание словарей" diff --git a/i18n/ru/lesson-26-looping-over-dictionaries.po b/i18n/ru/lesson-26-looping-over-dictionaries.po new file mode 100644 index 00000000..b8df715e --- /dev/null +++ b/i18n/ru/lesson-26-looping-over-dictionaries.po @@ -0,0 +1,204 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2022-12-03 20:27+0700\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.1\n" +"X-Generator: Poedit 3.2\n" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:13 +msgid "" +"Like with arrays, you can loop over dictionaries. You can loop over both " +"their keys and values.\n" +"\n" +"Let's see how it works with two examples." +msgstr "" +"Вы можете перебирать элементы словарей в цикле так же, как элементы " +"массивов. Перебрать циклом можно как ключи, так и значения.\n" +"\n" +"Давайте посмотрим на несколько примеров того, как это работает." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:23 +msgid "Displaying an inventory's content" +msgstr "Отображение содержимого инвентаря" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:25 +msgid "" +"To display the player's inventory, you need to know what it contains. You " +"need the name and amount of each object.\n" +"\n" +"And from code, you can only achieve that by looping over the whole " +"dictionary and processing key-value pairs one by one.\n" +"\n" +"To get the list of keys in the dictionary, you can call its [code]keys()[/" +"code] member function." +msgstr "" +"Для отображения инвентаря игрока вам нужно знать, что он содержит. Вам нужно " +"имя и количество каждого объекта.\n" +"\n" +"Единственный способ сделать это в коде — пройтись циклом по всему словарю и " +"обработать пары ключ-значение одну за одной.\n" +"\n" +"Для получения списка ключей словаря вы можете вызвать его внутреннюю функцию " +"[code]keys()[/code]." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:49 +#, fuzzy +msgid "" +"But it's something we do so much that you don't need to call the function.\n" +"\n" +"Instead, you can directly [ignore]type the variable name in a [code]for[/" +"code] loop after the [code]in[/code] keyword. The language understands that " +"you implicitly want to loop over the dictionary's keys." +msgstr "" +"Но это используется нами настолько часто, что для этого предусмотрен более " +"лёгкий способ.\n" +"\n" +"Вместо этого вы можете напрямую ввести имя переменной в цикл [code]for[/" +"code] после ключевого слова [code]in[/code]. Godot поймёт, что вы хотите " +"перебрать ключи словаря в цикле." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:71 +msgid "" +"You can get the values with the syntax [code]dictionary[key][/code] as you " +"learned in the previous lesson.\n" +"\n" +"We can loop over the inventory keys, get the corresponding values, and " +"display all that information in the user interface." +msgstr "" +"В прошлых уроках вы научились получать значения при помощи конструкции " +"[code]dictionary[key][/code].\n" +"\n" +"Мы можем перебирать ключи в инвентаре, получать значения по этим ключам и " +"отображать всю эту информацию в интерфейсе пользователя." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:103 +msgid "" +"Instead of printing the key-value pairs to the output console, we can code " +"and call a dedicated function that displays items in the user interface." +msgstr "" +"Вместо того, чтобы выводить пары ключ-значение в консоль, мы можем написать " +"и вызвать специальную функцию для отображения предметов в пользовательском " +"интерфейсе." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:131 +msgid "Mapping grid cells to units" +msgstr "Сопоставление ячейки сетки с юнитами" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:133 +msgid "" +"We can also use a dictionary to map units to their position on a game " +"board.\n" +"\n" +"That's how you'd typically code a board game, a grid-based RPG, or a " +"tactical RPG.\n" +"\n" +"While we focused on [code]String[/code] keys so far, GDScript dictionaries " +"accept any value type as a key, allowing you to map anything to anything.\n" +"\n" +"The only limitation is that every key must be unique." +msgstr "" +"Использовать словари, также, можно для сопоставления юнитов с их позицией на " +"игровой доске.\n" +"\n" +"Именно так обычно и создаются настольные игры, grid-based RPG и тактические " +"RPG.\n" +"\n" +"Хотя до сих пор мы фокусировались на ключах [code]String[/code], словари в " +"GDScript позволяют использовать ключи любого типа, что позволяет " +"сопоставлять что угодно с чем угодно.\n" +"\n" +"Единственное ограничение — ключи должны быть уникальными." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:159 +msgid "" +"Using a [code]for[/code] loop, you can use the key-value pairs to place " +"units on the board at the start of a game." +msgstr "" +"При помощи цикла [code]for[/code] вы можете использовать пары ключ-значение " +"для размещения юнитов на игровой доске при начале игры." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:189 +msgid "" +"In the following practices, you will loop over dictionaries and process " +"their content." +msgstr "" +"В следующих упражнениях вы будете перебирать содержимое словарей циклами и " +"обрабатывать его." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:197 +msgid "Displaying the inventory" +msgstr "Отображение инвентаря" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:198 +msgid "" +"We use a dictionary to represent the player's inventory in this game. The " +"dictionary keys are the name of items, and they map to the number of items " +"that the player owns.\n" +"\n" +"You need to loop over the dictionary and display the name and amount of " +"every item in the inventory.\n" +"\n" +"To do so, call the [code]display_item()[/code] function. It takes two " +"arguments: the item name and the amount." +msgstr "" +"Мы используем словарь для представления инвентаря игрока в этой игре. Ключи " +"словаря — это названия предметов, они сопоставляются с количеством таких " +"предметов, которые есть у игрока.\n" +"\n" +"Вам нужно перебрать словарь циклом и отобразить название и количество " +"каждого предмета в инвентаре.\n" +"\n" +"Для отображения вызовите функцию [code]display_item()[/code]. Она принимает " +"два аргумента: название предмета и количество." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:218 +msgid "" +"We need to display the player's inventory on the screen but lack the code to " +"do so. Use a loop to display every item." +msgstr "" +"Нам нужно отобразить содержимое инвентаря игрока на экране, но у нас нет " +"кода для этого. Используйте цикл для отображения каждого предмета." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:223 +msgid "Placing units on the board" +msgstr "Размещение юнитов на доске" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:224 +msgid "" +"We have a dictionary named [code]units[/code] that maps a cell position on " +"the grid to a unit to put there.\n" +"\n" +"Using a for loop and the [code]place_unit()[/code] function, place every " +"unit in the units dictionary at the desired position on the game board." +msgstr "" +"У нас есть словарь, имеющий имя [code]units[/code], который сопоставляет " +"позицию на сетке с юнитом, которого нужно туда поставить.\n" +"\n" +"Используйте цикл for и функцию [code]place_unit()[/code] для размещения " +"каждого юнита из словаря в необходимую позицию на игровой доске." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:242 +msgid "" +"We want to populate our game board with units at the start of every battle. " +"Loop over the dictionary to place units on the board." +msgstr "" +"Мы хотим заполнять нашу игровую доску юнитами при начале каждого сражения. " +"Переберите элементы словаря в цикле для размещения юнитов на доске." + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:246 +msgid "Looping over dictionaries" +msgstr "Обход словарей в цикле" diff --git a/i18n/ru/lesson-27-value-types.po b/i18n/ru/lesson-27-value-types.po new file mode 100644 index 00000000..e7e36bc3 --- /dev/null +++ b/i18n/ru/lesson-27-value-types.po @@ -0,0 +1,337 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"PO-Revision-Date: 2022-12-04 11:53+0700\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.9.1\n" +"X-Generator: Poedit 3.2\n" + +#: course/lesson-27-value-types/lesson.tres:13 +msgid "" +"In your code, values have a particular [i]type[/i]. You have already learned " +"about several: whole numbers, decimal numbers, strings, 2D vectors, arrays, " +"and dictionaries.\n" +"\n" +"The computer uses the type of a value to know which operations and functions " +"you can use with them.\n" +"\n" +"As a result, it's essential to understand types: they are not fully " +"compatible with one another, and misusing them will cause errors." +msgstr "" +"Каждое значение в коде имеет определённый [i]тип[/i]. С несколькими типами " +"вы уже знакомы: целое число, десятичная дробь, строка, 2D вектор, массив, " +"словарь.\n" +"\n" +"Компьютер использует тип значения для того, чтобы понять, какие операции вы " +"можете над ним осуществлять.\n" +"\n" +"Поэтому крайне важно понимать типы: они не взаимозаменяемы и неправильное их " +"использование приведёт к ошибкам." + +#: course/lesson-27-value-types/lesson.tres:25 +msgid "A prime example" +msgstr "Наглядный пример" + +#: course/lesson-27-value-types/lesson.tres:27 +msgid "" +"You want to display the player's health in the interface. Your code tracks " +"health as a whole number, a value of type [code]int[/code] (short for " +"integer)." +msgstr "" +"Вы хотите отобразить здоровье игрока в интерфейсе. В вашем коде здоровье " +"представлено целым числом, значением типа [code]int[/code] (сокращение от " +"integer)." + +#: course/lesson-27-value-types/lesson.tres:47 +msgid "" +"However, to display it on the player's screen, the computer wants text: it " +"needs a value of type [code]String[/code].\n" +"\n" +"You can concatenate two strings with the [code]+[/code] operator." +msgstr "" +"Однако, для отображения его на экране игрока, компьютеру нужен текст — " +"значение типа [code]String[/code].\n" +"\n" +"Вы можете объединить две строки с помощью оператора [code]+[/code]." + +#: course/lesson-27-value-types/lesson.tres:69 +msgid "So the following code looks like it could work at first glance." +msgstr "Поэтому следующий код на первый взгляд выглядит рабочим.." + +#: course/lesson-27-value-types/lesson.tres:89 +msgid "But when running the code, we get this strange error." +msgstr "Но при его выполнении мы получим эту странную ошибку." + +#: course/lesson-27-value-types/lesson.tres:109 +msgid "" +"It tells you you can't add values of type [code]String[/code] and [code]int[/" +"code]: they're incompatible.\n" +"\n" +"In that case, you need to convert the [code]health[/code] number into a " +"[code]String[/code]." +msgstr "" +"Она говорит вам о том, что вы не можете складывать значения типов " +"[code]String[/code] и [code]int[/code]: они несовместимы.\n" +"\n" +"В этом случае вам нужно преобразовать число [code]health[/code] в строку " +"([code]String[/code])." + +#: course/lesson-27-value-types/lesson.tres:119 +msgid "Converting values into strings" +msgstr "Преобразование значений в строки" + +#: course/lesson-27-value-types/lesson.tres:121 +msgid "" +"You can get the text representation of a value by calling the [code]str()[/" +"code] function (short for \"string\"). The function returns its argument as " +"a new [code]String[/code].\n" +"\n" +"You can use this function whenever you want to turn some number or vector " +"into text." +msgstr "" +"Вы можете получить текстовую репрезентацию значения при помощи вызова " +"функции [code]str()[/code] (сокращение от \"string\"). Эта функция " +"возвращает аргумент, преобразованный в значение типа [code]String[/code].\n" +"\n" +"Использовать эту функцию для превращения чисел или векторов в текст вы " +"можете где угодно." + +#: course/lesson-27-value-types/lesson.tres:143 +msgid "" +"In this case, it turns the number [code]100[/code] into the string " +"[code]\"100\"[/code]. Or whatever number [code]health[/code] is currently." +msgstr "" +"В нашем случае, он превращает число [code]100[/code] в строку [code]\"100\"[/" +"code]. Или любое другое число, которому равно [code]health[/code] в текущий " +"момент." + +#: course/lesson-27-value-types/lesson.tres:151 +msgid "Converting strings into numbers" +msgstr "Преобразование строк в числа" + +#: course/lesson-27-value-types/lesson.tres:153 +msgid "" +"You can also convert strings into whole numbers or decimal numbers using " +"respectively the [code]int()[/code] and [code]float()[/code] functions.\n" +"\n" +"Those functions can convert what the player writes in a text field into a " +"number. For example, the number of potions to sell at once in a shop." +msgstr "" +"Также вы можете преобразовывать строки в целые числа или десятичные дроби, " +"при помощи функций [code]int()[/code] и [code]float()[/code] " +"соответственно.\n" +"\n" +"Эти функции могут преобразовать текст, написанный игроком в текстовом поле. " +"Например, число зелий для продажи за раз в магазине." + +#: course/lesson-27-value-types/lesson.tres:173 +msgid "Some types are partially compatible" +msgstr "Некоторые типы частично совместимы" + +#: course/lesson-27-value-types/lesson.tres:175 +msgid "" +"Most types are incompatible. For example, you can't directly add or multiply " +"an array with a number.\n" +"\n" +"However, some types are [i]partially[/i] compatible. For example, you can " +"multiply or divide a vector by a number. " +msgstr "" +"Большинство типов несовместимы. Например, вы не можете прямо добавить или " +"умножить массив на число.\n" +"\n" +"При этом, некоторые типы [i]частично[/i] совместимы. Например, вы можете " +"умножить или разделить вектор на число. " + +#: course/lesson-27-value-types/lesson.tres:197 +msgid "" +"It is possible because other developers defined that operation for you under " +"the hood.\n" +"\n" +"However, you cannot directly add or subtract a number to a vector. You'll " +"get an error. That's why, in earlier lessons, you had to access the sub-" +"variables of [code]position[/code] to add numbers to them." +msgstr "" +"Это возможно благодаря тому, что другие разработчики определили эту операцию " +"для вас под капотом.\n" +"\n" +"В любом случае, вы не можете напрямую вычитать число из вектора. При попытке " +"вы получите ошибку. Именно поэтому в предыдущих уроках вы сначала получали " +"внутренние переменные из [code]position[/code], а потом уже добавляли числа " +"к ним." + +#: course/lesson-27-value-types/lesson.tres:207 +msgid "A surprising result" +msgstr "Неожиданный результат" + +#: course/lesson-27-value-types/lesson.tres:209 +msgid "" +"Take the following division: [code]3/2[/code]. What result would you expect " +"to get? [code]1.5[/code]?" +msgstr "" +"Попробуйте выполнить деление [code]3/2[/code]. Какой результат вы ожидаете " +"получить? [code]1.5[/code]?" + +#: course/lesson-27-value-types/lesson.tres:229 +msgid "" +"Well, for the computer, the result of [code]3/2[/code] is [code]1[/code].\n" +"\n" +"Wait, what?!\n" +"\n" +"That's because, for the computer, the division of two whole numbers should " +"always result in a whole number.\n" +"\n" +"When you divide decimal numbers instead, you will get a decimal number as a " +"result." +msgstr "" +"А для компьютера, результатом деления [code]3/2[/code] будет [code]1[/" +"code].\n" +"\n" +"Подождите, что?!\n" +"\n" +"Всё потому, что для компьютера, результатом деления двух целых чисел будет " +"являться целое число.\n" +"\n" +"А при делении десятичных дробей, в результате вы получите десятичную дробь." + +#: course/lesson-27-value-types/lesson.tres:255 +msgid "" +"Even if it's just a [code]0[/code], adding a decimal place tells the " +"computer we want decimal numbers.\n" +"\n" +"This shows you how mindful you need to be with types. Otherwise, you will " +"get unexpected results. It can get pretty serious: number errors can lead to " +"bugs like controls not working as intended or charging the wrong price to " +"players. " +msgstr "" +"Даже при использовании числа [code]0[/code], добавление десятичной части " +"сообщит компьютеру, что мы хотим использовать десятичные дроби.\n" +"\n" +"Поэтому работать с типами нужно очень внимательно. В противном случае " +"результаты будут неожиданными. Последствия могут быть довольно серьёзными: " +"ошибки в числах могут привести к ошибочному поведению программы, например, " +"неправильной работе управления или неправильной цене для игроков. " + +#: course/lesson-27-value-types/lesson.tres:265 +msgid "Understanding and mastering types is a key skill for developers" +msgstr "Понимание и освоение типов — ключевой навык для разработчиков" + +#: course/lesson-27-value-types/lesson.tres:267 +msgid "" +"Programming beginners often struggle due to the lack of understanding of " +"types.\n" +"\n" +"Languages like GDScript hide the types from you by default. As a result, if " +"you don't understand that some are incompatible, you can get stuck when " +"facing type-related errors.\n" +"\n" +"You'll want to keep that in mind in your learning journey. When writing " +"code, you will need to understand everything that's happening.\n" +"\n" +"That said, let's practice some type conversions." +msgstr "" +"Начинающие программисты часто испытывают трудности из-за недостаточного " +"понимания типов.\n" +"\n" +"Языки, такие как GDScript, по умолчанию скрывают от вас типы. В результате, " +"непонимание того, что некоторые из них несовместимы, может привести вас в " +"тупик, при столкновении с ошибками, связанными с неправильным их " +"использованием.\n" +"\n" +"Вам следует помнить об этом в процессе обучения. При написании кода " +"необходимо чётко понимать всё, что происходит.\n" +"\n" +"Поэтому, давайте поупражняемся в преобразовании типов." + +#: course/lesson-27-value-types/lesson.tres:281 +msgid "Displaying the player's health and energy" +msgstr "Отображение энергии игрока" + +#: course/lesson-27-value-types/lesson.tres:282 +msgid "" +"We want to display the player's energy in the user interface.\n" +"\n" +"Currently, our code has a type error. We're trying to display a whole number " +"while the [code]display_energy()[/code] function expects a string.\n" +"\n" +"Using the [code]str()[/code] function, clear the type error and make the " +"energy amount display on the interface.\n" +"\n" +"You can't change the [code]energy[/code] variable definition: setting it to " +"[code]\"80\"[/code] would break the rest of the game's code. You must " +"convert the value when calling [code]display_energy()[/code]." +msgstr "" +"Мы хотим отобразить энергию игрока в интерфейсе пользователя.\n" +"\n" +"Сейчас наш код содержит ошибки типов. Мы пытаемся отобразить целое число, а " +"функция [code]display_energy()[/code] ожидает строку в качестве аргумента.\n" +"\n" +"Избавьтесь от ошибки и отобразите количество энергии в интерфейсе при помощи " +"функции [code]str()[/code].\n" +"\n" +"Изменять значение переменной [code]energy[/code] на [code]\"80\"[/code] " +"нельзя, это приведёт к неисправностям в других частях игрового кода. Вы " +"должны преобразовать значение при передаче его в функцию " +"[code]display_energy()[/code]." + +#: course/lesson-27-value-types/lesson.tres:300 +msgid "" +"We want to display the player's energy in the interface but face a type " +"error. Use your new knowledge to fix it." +msgstr "" +"Мы хотим отобразить энергию игрока в интерфейсе, но ошибка мешает нам это " +"сделать. Используйте свои знания, чтобы её исправить." + +#: course/lesson-27-value-types/lesson.tres:305 +msgid "Letting the player type numbers" +msgstr "Позволяем игроку писать числа" + +#: course/lesson-27-value-types/lesson.tres:306 +msgid "" +"In our game's shops, we want to let the player type numbers to select the " +"number of items they want to buy or sell.\n" +"\n" +"We need to know the number of items as an [code]int[/code], but the computer " +"reads the player's input as a [code]String[/code].\n" +"\n" +"Your task is to convert the player's input into numbers for the shop's code " +"to work.\n" +"\n" +"Using the [code]int()[/code] function, convert the player's input into a " +"whole number and store the result in the [code]item_count[/code] variable." +msgstr "" +"В магазинах нашей игры мы хотим позволить игроку печатать числа для выбора " +"количества предметов для продажи или покупки.\n" +"\n" +"Нам нужно знать число предметов в виде [code]int[/code], но компьютер " +"считывает пользовательский ввод, как [code]String[/code].\n" +"\n" +"Ваша задача — преобразовать пользовательский ввод в числа, для того, чтобы " +"код магазина мог работать правильно.\n" +"\n" +"При помощи функции [code]int()[/code], преобразуйте пользовательский ввод в " +"целое число и сохраните результат в переменной [code]item_count[/code]." + +#: course/lesson-27-value-types/lesson.tres:326 +msgid "" +"We want the player to choose the number of items they buy or sell in our " +"game's shops. But right now, all we get are type errors." +msgstr "" +"Мы хотим позволить игроку выбирать количество предметов для продажи или " +"покупки в нашем игровом магазине. Но сейчас это приводит к ошибкам типов." + +#: course/lesson-27-value-types/lesson.tres:330 +msgid "Value types" +msgstr "Типы значений" diff --git a/i18n/ru/lesson-28-specifying-types.po b/i18n/ru/lesson-28-specifying-types.po new file mode 100644 index 00000000..8b0291da --- /dev/null +++ b/i18n/ru/lesson-28-specifying-types.po @@ -0,0 +1,298 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-28-specifying-types/lesson.tres:13 +msgid "" +"By default, GDScript is what we call a dynamically-typed language. That " +"means that you can just write variables, assign them a value with a number, " +"and assign them another value with a different type.\n" +"\n" +"Unlike in some other languages, in GDScript, the following code is valid." +msgstr "" +"По умолчанию, GDScript — динамически типизированный язык. Это значит, что вы " +"можете просто создать переменную, присвоить ей числовое значение, а затем " +"присвоить ей же значение другого типа.\n" +"\n" +"В отличии от некоторых других языков, в GDScript следующий код является " +"допустимым." + +#: course/lesson-28-specifying-types/lesson.tres:35 +msgid "" +"But this feature often causes problems down the line. Let's take one example." +msgstr "" +"Но эта особенность часто приводит к проблемам в дальнейшем. Давайте " +"рассмотрим другой пример." + +#: course/lesson-28-specifying-types/lesson.tres:43 +msgid "Cell size: decimal number, or 2D vector?" +msgstr "Размер ячейки — это десятичная дробь или 2D вектор?" + +#: course/lesson-28-specifying-types/lesson.tres:45 +msgid "" +"Games use grids all the time, be it for grid-based gameplay or to make " +"algorithms faster.\n" +"\n" +"When working with grids, you need to convert grid coordinates into positions " +"in the game world all the time. To do so, you give each cell a size in " +"pixels.\n" +"\n" +"You'll likely pick one of two types for that: [code]float[/code] or " +"[code]Vector2[/code], because pixel positions on the screen use " +"[code]Vector2[/code] coordinates.\n" +"\n" +"Either of those two values would be fine:" +msgstr "" +"В играх постоянно используются сетки, например, для геймплея с привязкой к " +"сетке или для увеличения скорости выполнения алгоритмов.\n" +"\n" +"При работе с сетками вам постоянно приходится конвертировать координаты " +"сетки в позиции игрового мира. Для этого вы передаёте каждой ячейке размер в " +"пикселях.\n" +"\n" +"Вероятнее всего, для этого вы будете использовать один из двух типов: " +"[code]float[/code] или [code]Vector2[/code], потому что позиции пикселей на " +"экране используют координаты [code]Vector2[/code].\n" +"\n" +"Любое из этих двух значений подойдёт:" + +#: course/lesson-28-specifying-types/lesson.tres:71 +msgid "" +"Using a [code]Vector2[/code] could simplify some calculations. For example, " +"when converting grid coordinates to game world coordinates." +msgstr "" +"Использование [code]Vector2[/code] может упростить некоторые вычисления. " +"Например, при конвертации координат сетки в координаты игрового мира." + +#: course/lesson-28-specifying-types/lesson.tres:91 +msgid "" +"In this example, because both [code]cell[/code] and [code]cell_size[/code] " +"are [code]Vector2[/code] values, we can add them.\n" +"\n" +"However, if [code]cell_size[/code] is a [code]float[/code], we will get a " +"type error." +msgstr "" +"В этом примере и [code]cell[/code] и [code]cell_size[/code] являются " +"значениями типа [code]Vector2[/code], поэтому мы можем их сложить.\n" +"\n" +"Однако, если бы [code]cell_size[/code] имел тип [code]float[/code], мы " +"получили бы ошибку." + +#: course/lesson-28-specifying-types/lesson.tres:123 +msgid "" +"Worse: due to dynamic typing, we won't get an error [i]right away[/i]. We " +"will only get the error when calling [code]grid_to_world(Vector2(1, 1))[/" +"code].\n" +"\n" +"And that's a big problem." +msgstr "" +"А хуже всего то, что из-за динамической типизации эту ошибку мы получили бы " +"[i]не при написании кода[/i], а в момент вызова " +"[code]grid_to_world(Vector2(1, 1))[/code].\n" +"\n" +"Это большая проблема." + +#: course/lesson-28-specifying-types/lesson.tres:135 +msgid "" +"Because we're learning, we only have small code examples in this course. But " +"your games' code will get long and split into many files. When coding, you " +"often forget about the code you wrote several weeks ago.\n" +"\n" +"And with a lot of code, it could take [i]hours[/i] of play before players " +"trigger a type error in your code." +msgstr "" +"Весь код этого курса представлен небольшими примерами, чтобы вам было легче " +"учиться. В ваших играх кода будет намного больше и он будет разбит на " +"множество файлов. Часто, при программировании, код, написанный несколько " +"недель назад, забывается.\n" +"\n" +"А при большой кодовой базе, ошибка может возникать спустя несколько " +"[i]часов[/i] игры." + +#: course/lesson-28-specifying-types/lesson.tres:145 +msgid "Using type hints" +msgstr "Использование строгой типизации" + +#: course/lesson-28-specifying-types/lesson.tres:147 +msgid "" +"Fortunately, GDScript has optional [i]type hints[/i].\n" +"\n" +"Type hints let the computer know the value type you want for variables and " +"report errors before running the code.\n" +"\n" +"To specify the type a variable can accept, you can write a colon and a type " +"after the name when defining a new variable." +msgstr "" +"К счастью, GDScript имеет опциональные средства [i]строгого обозначения " +"типов[/i] (строгой типизации).\n" +"\n" +"Обозначение типа позволяет компьютеру понять, какого типа значения вы хотите " +"хранить в переменных, и оповестить вас об ошибках до выполнения кода.\n" +"\n" +"Для обозначения типа переменной вы можете написать двоеточие и тип после " +"имени, при определении новой переменной." + +#: course/lesson-28-specifying-types/lesson.tres:171 +msgid "" +"You could tell the computer you want [code]cell_size[/code] only to accept " +"[code]Vector2[/code] values like so." +msgstr "" +"Вы можете сказать компьютеру, что хотите хранить в переменной " +"[code]cell_size[/code] только значения типа [code]Vector2[/code]." + +#: course/lesson-28-specifying-types/lesson.tres:191 +msgid "" +"If you try to replace the [code]cell_size[/code] with a value of another " +"type later, the computer will not let you." +msgstr "" +"Если после этого вы попробуете поместить в [code]cell_size[/code] значение " +"другого типа, компьютер не позволит вам это сделать." + +#: course/lesson-28-specifying-types/lesson.tres:219 +msgid "Letting the computer figure it out" +msgstr "Позволяем компьютеру обозначить тип самостоятельно" + +#: course/lesson-28-specifying-types/lesson.tres:221 +msgid "" +"GDScript comes with a feature called [i]type inference[/i]. In many cases, " +"but not all, the computer can figure out the type of a variable for you.\n" +"\n" +"To do so, you write [code]:=[/code], without the type. The computer will set " +"the type using the value after the equal sign. We could make " +"[code]cell_size[/code] a variable of type [code]Vector2[/code] like so:" +msgstr "" +"GDScript имеет особенность, называемую [i]вывод типов[/i]. Благодаря ей, во " +"многих случаях, но не во всех, компьютер сможет самостоятельно обозначить " +"тип переменной за вас.\n" +"\n" +"Для того, чтобы ею воспользоваться, напишите [code]:=[/code] без типа. " +"Компьютер установит переменной тот тип, который имеет значение после знака " +"равенства. Мы можем сделать [code]cell_size[/code] переменной типа " +"[code]Vector2[/code] вот так:" + +#: course/lesson-28-specifying-types/lesson.tres:243 +msgid "" +"This takes little typing, yet you get the benefits of using type hints, like " +"the computer reporting errors better and faster." +msgstr "" +"Это почти не требует дополнительных усилий, но позволяет вам получить " +"преимущества использования строгой типизации, с которой компьютер будет " +"находить ошибки лучше и быстрее." + +#: course/lesson-28-specifying-types/lesson.tres:251 +msgid "Why bother to add hints?" +msgstr "Чем полезно обозначение типов?" + +#: course/lesson-28-specifying-types/lesson.tres:253 +msgid "" +"When you give the language hints like that, it will [i]prevent[/i] major " +"type errors. When you work in Godot, you will see that the computer can " +"report issues as you write the code. It makes the benefit even greater.\n" +"\n" +"Type hints can also help improve the readability of your code. It can help " +"to put more information directly in the code. As we saw, types are essential " +"when coding, and when using type hints, the computer will add them to the " +"engine's built-in code documentation system.\n" +"\n" +"There's an incredible third benefit for you: by using type hints, you will " +"learn types much faster. It's excellent for learning.\n" +"\n" +"In the following practices, you will write the correct type hints to make " +"the code error-free." +msgstr "" +"Когда вы даёте языку подобные подсказки, это [i]предотвращает[/i] большую " +"часть ошибок, связанных с неправильным использованием типов. При работе в " +"Godot вы увидите, что компьютер будет оповещать вас об ошибках сразу же " +"после написания кода. В дальнейшем это даст свои плоды.\n" +"\n" +"Обозначение типов также помогает улучшить читабельность вашего кода. Оно " +"помогает поместить больше информации напрямую в код. Как мы сказали, типы — " +"существенная часть программирования, строгое указание типов позволит " +"компьютеру добавить их во встроенную в движок систему документации кода.\n" +"\n" +"Ещё одно мощное дополнительное преимущество: осмысленное использование типов " +"позволит вам освоить их гораздо быстрее. Это великолепно для обучения.\n" +"\n" +"В следующих упражнениях вы будете обозначать правильные типы для уменьшения " +"количества ошибок в коде." + +#: course/lesson-28-specifying-types/lesson.tres:267 +msgid "Add the correct type hints to variables" +msgstr "Строгая типизация переменных" + +#: course/lesson-28-specifying-types/lesson.tres:268 +msgid "" +"Our variables get the correct values but not the right hints. Using your " +"type-fu, add the correct type names in the variable definitions.\n" +"\n" +"You need to write the type name between the colon and the equal sign.\n" +"\n" +"Note: You cannot use type inference in this practice. You need to write the " +"type name in full." +msgstr "" +"Наши переменные получают правильные значения, но имеют неправильные типы. " +"Используйте ваши знания и добавьте правильные имена типов в определения " +"переменных.\n" +"\n" +"Вам нужно написать имя типа между двоеточием и знаком равенства.\n" +"\n" +"Замечание: использовать механизм вывода типов в этом упражнении нельзя. Вы " +"должны написать имена типов целиком." + +#: course/lesson-28-specifying-types/lesson.tres:284 +msgid "" +"Our variables have the wrong type hints, causing errors. Correct them to " +"make the code run." +msgstr "" +"Наши переменные имеют неправильные типы, что приводит к ошибкам. Исправьте " +"их, чтобы починить код." + +#: course/lesson-28-specifying-types/lesson.tres:289 +msgid "Fix the values to match the type hints" +msgstr "Исправьте значения" + +#: course/lesson-28-specifying-types/lesson.tres:290 +msgid "" +"It is the other way around in this practice: the type hints are fine, but " +"the values are not.\n" +"\n" +"Your task is to fix the values after the equal sign, so they match the type " +"hint of each variable." +msgstr "" +"В коде этого упражнения типы переменных обозначены правильно, а вот их " +"значения — неверны.\n" +"\n" +"Ваша задача — заменить значения после знаков равенства на значения " +"правильных типов." + +#: course/lesson-28-specifying-types/lesson.tres:304 +msgid "" +"This time, it's the other way around: variables have the correct type hints " +"but the wrong values. Change the values to make the code run." +msgstr "" +"В этот раз типы переменных обозначены корректно, но их значения — ошибочны. " +"Исправьте их, чтобы починить код." + +#: course/lesson-28-specifying-types/lesson.tres:308 +msgid "Specifying types with type hints" +msgstr "Обозначение типов" diff --git a/i18n/ru/lesson-3-standing-on-shoulders-of-giants.po b/i18n/ru/lesson-3-standing-on-shoulders-of-giants.po new file mode 100644 index 00000000..e86a2dc4 --- /dev/null +++ b/i18n/ru/lesson-3-standing-on-shoulders-of-giants.po @@ -0,0 +1,481 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:14 +msgid "" +"As programmers, we rely on a lot of code created by others before us.\n" +"\n" +"Every programming language comes with a wealth of features created by other " +"programmers to save you time.\n" +"\n" +"We call a bundle of code created by fellow developers a [i]library[/i].\n" +"\n" +"It's a bunch of code sitting there, waiting for you to use it.\n" +"\n" +"Game engines like Godot bundle many libraries together. They provide a " +"massive toolset to save you time when making games." +msgstr "" +"Как программисты, мы полагаемся на большое количество кода, созданного " +"другими программистами до нас.\n" +"\n" +"Каждый язык программирования поставляется со множеством полезностей " +"созданных другими программистами, для экономии вашего времени.\n" +"\n" +"Мы называем пакет кода, написанный другими разработчиками, [i]библиотекой[/" +"i].\n" +"\n" +"Это куча кода, ожидающего, когда вы его используете.\n" +"\n" +"Игровые движки, такие как Godot, содержат в себе множество таких библиотек. " +"Они предоставляют огромный набор инструментов, чтобы сэкономить ваше время " +"при создании игр." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:30 +msgid "You'll always use a lot of existing code" +msgstr "Вы всегда будете использовать больше количество существующего кода" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:32 +msgid "" +"When coding, you always use a lot of code from developers who came before " +"you.\n" +"\n" +"In a moment, you'll write your first code. You'll use [i]functions[/i] " +"created by the Godot developers.\n" +"\n" +"A function is a list of instructions with an exact name. We can tell the " +"computer to execute all the instructions in sequence with that name." +msgstr "" +"При написании кода вы всегда используете много кода от разработчиков, " +"которые писали код до вас.\n" +"\n" +"Очень скоро вы напишите свой первый кусочек кода. При этом вы будете " +"использовать [i]функции[/i], созданные разработчиками Godot.\n" +"\n" +"Функция — это именованный список инструкций. Мы можем приказать компьютеру " +"последовательно выполнить все инструкции содержащиеся в функции." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:44 +msgid "Calling functions" +msgstr "Вызов функций" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:46 +msgid "" +"When you tell the computer to execute a function, we say you [i]call[/i] the " +"function.\n" +"\n" +"To call a function, you write its [i]exact[/i] name followed by an open and " +"closed parenthesis. To call the function named \"show\", you would write " +"[code]show()[/code]." +msgstr "" +"Когда вы указываете компьютеру выполнить функцию, мы говорим, что вы " +"[i]вызываете[/i] функцию.\n" +"\n" +"Чтобы вызвать функцию, вам нужно написать её [i]точное[/i] имя, а следом за " +"ним поставить открывающую и закрывающую скобки. Чтобы вызвать функцию с " +"именем «show», вы должны написать [code]show()[/code]." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:58 +msgid "" +"In Godot, calling [code]show()[/code] makes something visible, like a " +"character or item. The complementary [code]hide()[/code] function hides the " +"entity.\n" +"\n" +"Once an entity is visible, calling [code]show()[/code] again doesn't have " +"any effect.\n" +"\n" +"Similarly, once you hide something, calling [code]hide()[/code] again " +"doesn't change anything.\n" +"\n" +"[i]Click the Run button on any example below to execute the code listing.[/i]" +msgstr "" +"В Godot вызов [code]show()[/code] делает что-то видимым, например персонажа " +"или предмет. Дополнительная функция [code]hide()[/code] скрывает объект.\n" +"\n" +"Если объект уже видимый, вызов [code]show()[/code] не окажет никакого " +"эффекта\n" +"\n" +"Аналогично, если вы уже скрыли объект, повторный вызов [code]hide()[/code] " +"ничего не поменяет.\n" +"\n" +"[i]Нажмите кнопку «Run» в любом примере ниже, чтобы выполнить листинг кода.[/" +"i]" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:84 +msgid "" +"In the code listing above, we write the function call [code]hide()[/code] in " +"a new function named [code]run()[/code] to execute the code. Creating a new " +"function is necessary to execute instructions in GDScript." +msgstr "" +"В приведённом выше листинге мы записали вызов функции [code]hide()[/code] в " +"новую функцию с именем [code]run()[/code] для того чтоб код выполнился. " +"Создание новой функции необходимо для выполнения инструкций в GDScript." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:92 +msgid "Can you tell me more about that \"run()\" function?" +msgstr "Можете рассказать мне больше о функции «run()»?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:94 +msgid "" +"In GDScript, unlike in some other languages, we must write our code inside " +"of custom functions.\n" +"\n" +"You'll learn what functions are and how they work in great detail in the " +"course, but here's a quick look at them if you're curious.\n" +"\n" +"A function is a bundle of code you can execute anytime. It's a named list of " +"instructions.\n" +"\n" +"To define a function, you need to write the [code]func[/code] keyword, the " +"function's name, parentheses, and a colon: [code]func run():[/code] defines " +"a function named [code]run()[/code].\n" +"\n" +"You then go to the next line to write the function's body. That's the " +"instructions of the function.\n" +"\n" +"Notice how each instruction starts with a leading [code]Tab[/code] " +"character. The computer uses that to know which lines are part of the " +"function.\n" +"\n" +"Throughout the course, you'll see many functions called [code]run()[/code].\n" +"\n" +"Those are functions we created to give you interactive examples." +msgstr "" +"В GDScript, в отличие от некоторых других языков, мы обязаны помещать весь " +"наш код внутрь функций\n" +"\n" +"В ходе курса вы подробно узнаете, что такое функции и как они работают, но " +"вот их краткий обзор, если вам любопытно.\n" +"\n" +"Функция — это кусочек кода, который вы можете выполнить в любое время. Это " +"именованный список инструкций.\n" +"\n" +"Чтобы определить функцию, вам нужно написать ключевое слово [code]func[/" +"code], имя функции, круглые скобки и двоеточие: [code]func run():[/code] " +"определяет функцию с именем [code]run()[/code].\n" +"\n" +"Затем вам нужно перейти к следующей строке, чтобы написать тело функции, то " +"есть список инструкций из которых она состоит.\n" +"\n" +"Обратите внимание, что каждая инструкция начинается с символа [code]Tab[/" +"code] (табуляции). Компьютер использует символы табуляции, чтобы узнать, " +"какие строки являются частью функции.\n" +"\n" +"На протяжении всего курса вы увидите множество функций, названных [code]run()" +"[/code].\n" +"\n" +"Это функции, которые мы создали, чтобы предоставить вам интерактивные " +"примеры." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:116 +msgid "Function arguments" +msgstr "Аргументы функции" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:118 +msgid "" +"We use parentheses to call functions because you can give the function " +"[i]arguments[/i] inside the parentheses when calling it.\n" +"\n" +"Here's a [i]sprite[/i] standing straight. If we call the [code]rotate(0.3)[/" +"code] function, the character [i]sprite[/i] turns by 0.3 radians." +msgstr "" +"Мы используем круглые скобки для вызова функций, потому что в них можно " +"поместить [i]аргументы[/i] функции при её вызове.\n" +"\n" +"Вот [i]спрайт[/i], стоящий прямо. Если мы вызовем функцию [code]rotate(0.3)[/" +"code], [i]спрайт[/i] персонажа повернётся на 0.3 радиан." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:140 +msgid "" +"The [code]0.3[/code] part between the parentheses is the function's " +"[i]argument[/i].\n" +"\n" +"Arguments are values (numbers, bits of text, and more) that change how the " +"function behaves.\n" +"\n" +"Arguments let you fine-tune the effect of the function call. They can be " +"optional at times, but functions often require arguments in order to work.\n" +"\n" +"For example, calling [code]rotate()[/code] without any argument would result " +"in an error. Without an argument, Godot doesn't know by [i]how much[/i] you " +"intend to rotate the [i]sprite[/i].\n" +"\n" +"Don't worry about memorizing what arguments each function requires or " +"accepts! As a programmer, the documentation will always be close by for you " +"to refer to.\n" +"\n" +"Finally, notice how we use a dot in the number [code]0.3[/code] above: you " +"need to use a dot like this to represent decimal numbers. You can't use " +"commas as they have a different purpose in code." +msgstr "" +"Запись [code]0.3[/code] в круглых скобках — это [i]аргумент[/i] функции.\n" +"\n" +"Аргументы — это значения (числа, фрагменты текста и многое другое), которые " +"изменяют поведение функции.\n" +"\n" +"Аргументы позволяют вам точно настроить эффект который произведёт функция " +"при вызове. Иногда аргументы могут быть необязательными, но часто функции " +"требуют их для работы.\n" +"\n" +"Например, вызов [code]rotate()[/code] без какого-либо аргумента приведет к " +"ошибке. Без аргументов Godot не знает [i]как сильно[/i] вы собираетесь " +"повернуть [i]спрайт[/i].\n" +"\n" +"Не беспокойтесь о том, что вам нужно запомнить, какие аргументы требует или " +"принимает каждая функция! Документация всегда будет у вас под рукой, чтобы " +"вы могли обратиться к ней, как программист.\n" +"\n" +"Наконец, обратите внимание, как мы используем точку в числе [code]0.3[/code] " +"выше: вам нужно использовать такую точку для представления десятичных " +"дробей. Вы не можете использовать запятые, так как они имеют другое " +"предназначение в коде." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:158 +msgid "What are radians?" +msgstr "Что такое радианы?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:160 +msgid "" +"The value of [code]0.3[/code] is an angle in [i]radians[/i]. In daily life, " +"we're used to measuring angles in degrees. The radian is another scale " +"commonly used in video games and math.\n" +"\n" +"You can convert radians into degrees by multiplying them by 180 and dividing " +"them by PI:\n" +"\n" +"[code]degrees = radians * 180 / PI[/code]\n" +"\n" +"An angle of [code]PI[/code] radians corresponds to [code]180[/code] degrees. " +"And [code]2 * PI[/code] is a full turn: [code]360[/code] degrees.\n" +"\n" +"[b]How do radians work exactly?[/b]\n" +"\n" +"Radians are a way to measure angles based on the radius of a circle.\n" +"\n" +"To get the angle in radians, you take the circle's radius and wrap it around " +"the circle. That angle is [code]1[/code] radian because you are wrapping the " +"radius [code]1[/code] time around the circle.\n" +"\n" +"Because the perimeter of a circle is [code]2 * PI * radius[/code], a full " +"turn (360°) corresponds to [code]2 * PI[/code] radians: you need to wrap the " +"radius of a circle [code]2 * PI[/code] times around the circle to make a " +"full circle." +msgstr "" +"Значение [code]0.3[/code] представляет собой угол в [i]радианах[/i]. В " +"повседневной жизни мы привыкли измерять углы в градусах. Радиан — это ещё " +"одна шкала, обычно используемая в видеоиграх и математике.\n" +"\n" +"Вы можете преобразовать радианы в градусы, умножив их на 180 и разделив " +"результат на число Пи:\n" +"\n" +"[code]degrees = radians * 180 / PI[/code]\n" +"\n" +"Угол [code]PI[/code] радиан соответствует [code]180[/code] градусам. А " +"[code]2 * PI[/code] — это полный оборот: [code]360[/code] градусов.\n" +"\n" +"[b]Как именно работают радианы?[/b]\n" +"\n" +"Радианы — это способ измерения углов на основе радиуса окружности.\n" +"\n" +"Чтобы получить угол в радианах, вы берёте длину радиуса окружности и " +"отмеряете на окружности дугу, равную этой длине. Угол этой дуги составит " +"[code]1[/code] радиан, потому что вы отмерили длину радиуса на окружности " +"[code]1[/code] раз.\n" +"\n" +"Поскольку периметр окружности равен [code]2 * PI * radius[/code], полный " +"оборот (360°) соответствует [code]2 * PI[/code] радианам: вам нужно отмерить " +"на окружности дугу равную [code]2 * PI[/code] радиусам, чтобы сделать полный " +"круг." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:182 +msgid "What does the code below do?" +msgstr "Что делает код приведенный ниже?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:183 +msgid "[code]show()[/code]" +msgstr "[code]show()[/code]" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:185 +msgid "" +"Both answers were right! Technically, the code calls the [code]show()[/code] " +"function. And doing so makes the game entity visible." +msgstr "" +"Оба ответа были правильными! Технически код вызывает функцию [code]show()[/" +"code], а эта функция, в свою очередь, делает игровой объект видимым." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 +#, fuzzy +msgid "It calls the function named \"show\"." +msgstr "Он вызывает функцию с именем «show»." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 +msgid "It makes the entity (like a game character or a sprite) visible." +msgstr "Он делает игровой объект (к примеру, персонажа или спрайт) видимым." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:196 +msgid "" +"Another example: With the [code]move_local_x()[/code] function, you can move " +"the character to its left and right. The function takes one argument: a " +"number of pixels to offset the entity.\n" +"\n" +"The complementary function [code]move_local_y()[/code] makes the character " +"move up and down.\n" +"\n" +"This is one way to move a character in a game, although we'll see more " +"powerful ways to do this later." +msgstr "" +"Другой пример: с помощью функции [code]move_local_x()[/code] вы можете " +"перемещать персонажа влево и вправо. Функция принимает один аргумент: " +"количество пикселей для смещения объекта.\n" +"\n" +"Похожая функция [code]move_local_y()[/code] заставляет персонажа " +"перемещаться вверх и вниз.\n" +"\n" +"Мы показали один из способов перемещения персонажа в игре, хотя позже мы " +"рассмотрим более эффективные способы." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:218 +msgid "Why move_local_y(20) moves the character down" +msgstr "Почему move_local_y(20) перемещает персонажа вниз" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:220 +msgid "" +"With positive values ([code]20[/code]), the code above moves the robot to " +"the right and down.\n" +"\n" +"This is probably different than what you studied at school: in math classes, " +"the horizontal axis points to the right, like here, but the vertical axis " +"points up.\n" +"\n" +"In video games, and generally in 2D computer graphics, the vertical axis " +"points down instead. So whenever you move something on the Y-axis with a " +"positive value, it'll move [i]down[/i]." +msgstr "" +"При положительных значениях ([code]20[/code]) приведенный выше код " +"перемещает робота вправо и вниз.\n" +"\n" +"Вероятно, это отличается от того, что вы изучали в школе: на уроках " +"математики горизонтальная ось направлена вправо, как и здесь, но " +"вертикальная ось направлена вверх.\n" +"\n" +"В видеоиграх и, как правило, в компьютерной 2D-графике вертикальная ось " +"направлена вниз. Поэтому всякий раз, когда вы перемещаете что-то по оси Y с " +"положительным значением, оно перемещается [i]вниз[/i]." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:232 +msgid "How do you call a function?" +msgstr "Как вызвать функцию?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:233 +msgid "What is the syntax you use to call a function in general?" +msgstr "Какой синтаксис можно использовать для вызова функции?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:235 +msgid "" +"To call a function, you need to write its exact name followed by an opening " +"and a closing parenthesis.\n" +"\n" +"If the function requires one or more [i]arguments[/i], you add them inside " +"the parentheses. Whether you need to do that or not depends on the function." +msgstr "" +"Чтобы вызвать функцию, нужно написать ее точное имя, а затем поставить " +"открывающую и закрывающую круглые скобки.\n" +"\n" +"Если функция принимает один или несколько [i]аргументов[/i], можно добавить " +"их в круглые скобки. Нужно добавлять аргументы или нет, зависит от " +"конкретной функции." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:238 +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:239 +msgid "You write its name followed by an opening and a closing parenthesis." +msgstr "" +"Написать имя функции, затем поставить открывающую и закрывающую круглые " +"скобки." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:238 +msgid "You write its name followed by a colon." +msgstr "Написать имя функции, затем двоеточие." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:238 +msgid "" +"You write a value, like a number, followed by an opening and a closing " +"parenthesis." +msgstr "" +"Написать значение, например число, затем поставить открывающую и закрывающую " +"круглые скобки." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:246 +msgid "Make The Character Visible" +msgstr "Сделайте персонажа видимым" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:247 +msgid "" +"Our robot character's invisible! Call the [code]show()[/code] function to " +"make it appear.\n" +"\n" +"Please call [code]show()[/code] inside the [code]run()[/code] function, on " +"line [code]2[/code], and keep the [code]Tab[/code] character at the start of " +"the line. The computer needs that to understand your code." +msgstr "" +"Наш персонаж-робот невидим! Вызовите функцию [code]show()[/code], чтобы " +"заставить его появиться.\n" +"\n" +"Пожалуйста, вызовите [code]show()[/code] внутри функции [code]run()[/code] в " +"строке [code]2[/code], обязательно сохранив символ [code]Tab[/code] " +"(табуляцию) в начале строки. Компьютеру это нужно, чтобы понять ваш код." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:259 +msgid "The robot's invisible! Call a function to bring it back." +msgstr "Робот невидим! Вызовите функцию, чтобы вернуть его обратно." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:264 +msgid "Make the Robot Upright" +msgstr "Поставьте робота в вертикальное положение" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:265 +msgid "" +"The robot was turned by [code]-0.5[/code] radians. You need to make it " +"upright by calling the [code]rotate()[/code] function.\n" +"\n" +"Please call [code]rotate()[/code] inside the [code]run()[/code] function, on " +"line [code]2[/code], and keep the [code]Tab[/code] character at the start of " +"the line. The computer needs that to understand your code." +msgstr "" +"Робот повёрнут на [code]-0.5[/code] радиан. Вам нужно поставить его в " +"вертикальное положение, вызвав функцию [code]rotate()[/code].\n" +"\n" +"Пожалуйста, вызовите [code]rotate()[/code] внутри функции [code]run()[/code] " +"в строке [code]2[/code], обязательно сохранив символ [code]Tab[/code] " +"(табуляцию) в начале строки. Компьютеру это нужно, чтобы понять ваш код." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:277 +msgid "" +"The robot is turned sideways. Help it straighten up with a function call." +msgstr "" +"Робот повернут боком. Помогите ему выпрямиться с помощью вызова функции." + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:281 +msgid "We Stand on the Shoulders of Giants" +msgstr "Мы стоим на плечах гигантов" diff --git a/i18n/ru/lesson-4-drawing-a-rectangle.po b/i18n/ru/lesson-4-drawing-a-rectangle.po new file mode 100644 index 00000000..44aea757 --- /dev/null +++ b/i18n/ru/lesson-4-drawing-a-rectangle.po @@ -0,0 +1,320 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:14 +msgid "" +"We'll use code created by others like we did in the previous lesson. This " +"time, we'll solve a more complicated problem: drawing shapes." +msgstr "" +"Как и в предыдущем уроке, мы будем использовать код, созданный другими " +"программистами. На этот раз мы будем решать более сложную задачу: рисовать " +"фигуры." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:22 +msgid "Meet the turtle" +msgstr "Познакомьтесь с черепахой" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:24 +msgid "" +"We present you: the turtle! We created the turtle to teach you how to call " +"functions." +msgstr "" +"Представляем вам черепаху! Мы создали черепаху, чтобы научить вас вызывать " +"функции." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:44 +msgid "" +"The turtle is a little machine that moves forward, turns, and draws lines " +"along its path.\n" +"\n" +"To make it draw, you give it a list of instructions: on each code line, you " +"call one specific function.\n" +"\n" +"We prepared several functions for you:\n" +"\n" +"- [code]move_forward(pixels)[/code] makes the turtle move forward over a " +"given distance in [i]pixels[/i]. \n" +"- [code]turn_right(degrees)[/code] makes the turtle turn clockwise by a " +"precise amount of [i]degrees[/i].\n" +"- [code]turn_left(degrees)[/code] works the same as [code]turn_right(degrees)" +"[/code], except the turtle turns counter-clockwise.\n" +"\n" +"You'll use these functions the same way you used [code]rotate()[/code] " +"before.\n" +"\n" +"The turtle draws a white line as it moves. We'll use this line to draw " +"shapes.\n" +"\n" +"For example, to move the turtle 200 pixels, you would write " +"[code]move_forward(200)[/code]." +msgstr "" +"Черепашка - это маленькая машинка, которая движется вперед, поворачивает и " +"рисует линии на своем пути.\n" +"\n" +"Чтобы заставить её рисовать, вам нужно дать ей список инструкций: по одной " +"функции в каждой строчке кода.\n" +"\n" +"Мы подготовили несколько функций для вас:\n" +"\n" +"- [code]move_forward(pixels)[/code] заставляет черепашку двигаться вперёд на " +"заданное расстояние в [i]пикселях[/i]. \n" +"- [code]turn_right(degrees)[/code] заставляет черепашку повернуться вправо " +"на заданное количество [i]градусов[/i].\n" +"- [code]turn_left(degrees)[/code] работает так же, как " +"[code]turn_right(degrees)[/code], но поворачивает черепашку влево.\n" +"\n" +"Вы будете использовать эти функции так же, как использовали [code]rotate()[/" +"code] в прошлом уроке.\n" +"\n" +"При движении черепашка рисует белую линию. Мы будем использовать эту линию " +"для рисования фигур.\n" +"\n" +"Например, чтобы переместить черепашку на 200 пикселей, нужно написать " +"[code]move_forward(200)[/code]." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:76 +msgid "Turning left and right" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:78 +msgid "" +"The functions [code]turn_left()[/code] and [code]turn_right()[/code] work " +"the same.\n" +"\n" +"To turn 45 degrees to the right, you would write [code]turn_right(45)[/" +"code].\n" +"\n" +"If we call [code]turn_right(45)[/code], the turtle turns 45 degrees to the " +"right before moving on to the next instruction." +msgstr "" +"Функции [code]turn_left()[/code] и [code]turn_right()[/code] работают " +"одинаково.\n" +"\n" +"Чтобы повернуть черепаху на 45 градусов вправо, нужно написать " +"[code]turn_right(45)[/code].\n" +"\n" +"При вызове [code]turn_right(45)[/code], черепаха поворачивается на 45 " +"градусов вправо, прежде чем перейти к следующей инструкции." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:102 +msgid "" +"Using these instructions, we can make any two-dimensional shape we like!\n" +"\n" +"Try to understand the example below. \n" +"\n" +"In the next practice, you'll use the functions we saw above to first draw a " +"corner, then a rectangle like this one." +msgstr "" +"Используя эти инструкции, мы можем нарисовать любую двухмерную фигуру, какую " +"хотим!\n" +"\n" +"Попробуйте понять приведённый ниже пример.\n" +"\n" +"В следующем практическом упражнении вы будете использовать функции, которые " +"мы видели выше, сначала, чтобы нарисовать угол, а затем — прямоугольник, " +"подобный этому." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:124 +msgid "In the function call below, which part is the argument?" +msgstr "Какая часть приведённой ниже функции является аргументом?" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:125 +msgid "[code]move_forward(30)[/code]" +msgstr "[code]move_forward(30)[/code]" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:127 +msgid "" +"A function's arguments are all the values inside the parentheses. In this " +"case, there's only one, but there can be multiple separated by commas.\n" +"\n" +"In this case, [code]move_forward[/code] is the function's name and [code]30[/" +"code] is the argument.\n" +"\n" +"This function call will make the turtle move forward by [code]30[/code] " +"pixels." +msgstr "" +"Аргументы функции — это значения внутри круглых скобок. В примере функция " +"имеет только один аргумент, но она могла содержать и несколько, разделённых " +"запятыми.\n" +"\n" +"В приведённом случае, [code]move_forward[/code] — это имя функции, а " +"[code]30[/code] — это аргумент.\n" +"\n" +"Вызов этой функции заставит черепаху передвинуться вперёд на [code]30[/code] " +"пикселей." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:132 +msgid "move_forward" +msgstr "move_forward" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:132 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:133 +msgid "30" +msgstr "30" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:140 +msgid "The turtle uses code made specifically for this app!" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:142 +msgid "" +"The turtle is a little learning tool custom-made for this course, based on a " +"proven code learning methodology. It's designed to teach you how to use and " +"create functions.\n" +"\n" +"So please don't be surprised if writing code like [code]turn_left()[/code] " +"inside of the Godot editor doesn't work! And don't worry, once you've " +"learned the foundations, you'll see they make it faster and easier to learn " +"Godot functions." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:154 +msgid "" +"Let's move on to practice! You'll get to play with the turtle functions to " +"draw shapes." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:162 +msgid "Drawing a Corner" +msgstr "Рисуем угол" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:163 +msgid "" +"In this practice, we'll tell the turtle to draw a corner.\n" +"\n" +"The corner is made up of two lines that are [code]200[/code] pixels long. " +"The lines are connected at each end by [code]90[/code] degrees, or right-" +"angle.\n" +"\n" +"The [code]move_forward()[/code] and [code]turn_right()[/code] functions to " +"the right draw a corner, but they're missing some arguments.\n" +"\n" +"Add the missing arguments so the turtle moves forward [code]200[/code] " +"pixels, turns right [code]90[/code] degrees, then moves forward again " +"[code]200[/code] pixels.\n" +"\n" +"We added the first argument for you so the turtle moves forward [code]200[/" +"code] pixels.\n" +"\n" +"In the following practices, we'll draw multiple corners to create " +"rectangles.\n" +"\n" +msgstr "" +"В этом упражнении мы прикажем черепахе нарисовать угол.\n" +"\n" +"Угол составляется из двух линий длиной в [code]200[/code] пикселей. Эти " +"линии соединены концами под углом в [code]90[/code] градусов, другими " +"словами, под прямым углом.\n" +"\n" +"Функции [code]move_forward()[/code] и [code]turn_right()[/code] справа " +"рисуют угол, но в них отсутствуют какие-то параметры.\n" +"\n" +"Добавьте недостающие параметры чтобы черепаха продвинулась на [code]200[/" +"code] пикселей вперёд, повернулась вправо на [code]90[/code] градусов, а " +"затем продвинулась вперёд ещё раз на [code]200[/code] пикселей.\n" +"\n" +"Мы добавили для вас первый аргумент, чтобы черепаха двигалась вперёд на " +"[code]200[/code] пикселей.\n" +"\n" +"В дальнейших упражнениях мы будем рисовать углы, чтобы создать из них " +"прямоугольники.\n" +"\n" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:187 +msgid "" +"Use the turtle to draw a square's corner. You'll then build upon it to draw " +"a rectangle." +msgstr "" +"Используйте черепашку, чтобы нарисовать прямой угол. В дальнейшем это " +"поможет вам нарисовать прямоугольник." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:192 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:240 +msgid "Drawing a Rectangle" +msgstr "Рисуем прямоугольник" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:193 +msgid "" +"Add the correct arguments to the functions [code]move_forward()[/code] and " +"[code]turn_right()[/code] to draw a rectangle with a width of [code]200[/" +"code] pixels, and a height of [code]120[/code] pixels.\n" +"\n" +"We wrote the first argument for you.\n" +"\n" +"In the next practice, you'll use the same functions to draw a bigger " +"rectangle." +msgstr "" +"Дополните функции [code]move_forward()[/code] и [code]turn_right()[/code] " +"такими параметрами, чтобы в результате их работы получился прямоугольник " +"шириной в [code]200[/code] и высотой в [code]120[/code] пикселей.\n" +"\n" +"Первый параметр мы написали за вас.\n" +"\n" +"В следующем практическом упражнении вы будете использовать те же функции, " +"чтобы нарисовать более крупный прямоугольник." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:213 +msgid "" +"Based on your rectangle corner, you now need to draw a complete rectangle." +msgstr "" +"Теперь, основываясь на созданном вами прямом угле, попробуйте нарисовать " +"полноценный прямоугольник." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 +msgid "Drawing a Bigger Rectangle" +msgstr "Рисуем большой прямоугольник" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:219 +msgid "" +"Write out calls to the functions [code]move_forward()[/code] and " +"[code]turn_right()[/code] to draw a rectangle with a width of 220 pixels, " +"and a height of 260 pixels.\n" +"\n" +"We wrote the first two lines for you.\n" +"\n" +"Be sure to write each instruction on a separate line.\n" +"\n" +"Every line should start with one [code]Tab[/code] character so the computer " +"understands it's part of the [code]draw_rectangle()[/code] function." +msgstr "" +"Допишите вызовы функций [code]move_forward()[/code] и [code]turn_right()[/" +"code], чтобы получить прямоугольник шириной в 220 пикселей и высотой в 260 " +"пикселей.\n" +"\n" +"Мы написали две первых строки за вас.\n" +"\n" +"Обязательно удостоверьтесь, что каждая инструкция написана в отдельной " +"строке.\n" +"\n" +"Каждая строка должна начинаться с символа [code]Tab[/code], чтобы компьютер " +"понял, что содержимое строки является частью функции [code]draw_rectangle()[/" +"code]." + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:236 +msgid "" +"At this point, you're ready to code entirely on your own. Call functions by " +"yourself to draw a complete rectangle." +msgstr "" +"С этого момента вы готовы программировать самостоятельно. Вызывайте функции " +"чтобы нарисовать полноценный прямоугольник." diff --git a/i18n/ru/lesson-5-your-first-function.po b/i18n/ru/lesson-5-your-first-function.po new file mode 100644 index 00000000..0dba35ce --- /dev/null +++ b/i18n/ru/lesson-5-your-first-function.po @@ -0,0 +1,418 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: Gevorg Kuzbashian \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-5-your-first-function/lesson.tres:14 +msgid "" +"So far, we have called existing functions that other developers wrote.\n" +"\n" +"In this lesson, we'll talk more about what functions are and see some " +"examples. Then, you will learn how to define your own functions." +msgstr "" +"До сих пор, мы лишь вызывали существующие функции, написанные другими " +"разработчиками.\n" +"\n" +"В этом уроке мы подробнее разберём что такое функции и посмотрим на " +"некоторые примеры. В результате, вы научитесь объявлять собственные функции." + +#: course/lesson-5-your-first-function/lesson.tres:24 +msgid "Functions are named sequences of instructions" +msgstr "Функции — это именованные последовательности инструкций" + +#: course/lesson-5-your-first-function/lesson.tres:26 +msgid "" +"Functions are [i]sequences of instructions[/i] we give a name. We call that " +"name an [i]identifier[/i].\n" +"\n" +"Using the identifier, we can get the computer to execute all the " +"instructions inside the function as many times as we need. This is what a " +"[i]function call[/i] does." +msgstr "" +"Функция — это [i]последовательность инструкций[/i], которой мы дали имя. Мы " +"называем это имя [i]идентификатором[/i].\n" +"\n" +"Используя этот идентификатор, мы можем приказать компьютеру выполнить " +"инструкции внутри функции столько раз, сколько нам нужно. Вот что делает " +"[i]вызов функции[/i]." + +#: course/lesson-5-your-first-function/lesson.tres:36 +msgid "Learn more about identifiers" +msgstr "Подробнее об идентификаторах" + +#: course/lesson-5-your-first-function/lesson.tres:38 +msgid "" +"In computer programming, we talk about [i]identifiers[/i] rather than " +"\"names\".\n" +"\n" +"It is because a function name is a label the computer uses to precisely " +"[i]identify[/i] and refer to a function or other code elements.\n" +"\n" +"Identifiers are unique: you cannot reuse the same name in a given [i]space[/" +"i] in your code.\n" +"\n" +"If you try to name two functions the same, the computer will raise an error." +msgstr "" +"В программировании, мы называем «имена» [i]идентификаторами[/i].\n" +"\n" +"Так принято, потому что имена используются компьютером, чтобы однозначно " +"[i]идентифицировать[/i] функции или другие элементы кода.\n" +"\n" +"Идентификаторы уникальны: вы не можете использовать одно и то же имя для " +"определения разных элементов в одной [i]области[/i] вашего кода.\n" +"\n" +"Если вы попытаетесь назвать две функции одинаково, компьютер покажет ошибку." + +#: course/lesson-5-your-first-function/lesson.tres:54 +msgid "" +"If there is any code that you need to run multiple times, you can put it " +"inside a function and give it a name.\n" +"\n" +"The instructions inside a function can be any code you want, and they will " +"all run every time you call the function.\n" +"\n" +"Here's the example of a [code]move_and_rotate()[/code] function that moves " +"the turtle forward and then turns it 90°." +msgstr "" +"Если вы хотите исполнить какой-то код несколько раз, вы можете поместить его " +"в функцию и дать ей имя.\n" +"\n" +"Функция может содержать любые инструкции в виде кода, все эти инструкции " +"будут выполнены при каждом вызове функции вами.\n" +"\n" +"Например, функция [code]move_and_rotate()[/code] при вызове переместит " +"черепашку вперёд и повернёт её на 90°." + +#: course/lesson-5-your-first-function/lesson.tres:78 +msgid "" +"The [code]move_and_rotate()[/code] function consists of two instructions, " +"each on a separate line. Both of those instructions call another familiar " +"function.\n" +"\n" +"You could write another function that calls [code]move_and_rotate()[/code] " +"four times to draw a square of length 200 pixels." +msgstr "" +"Функция [code]move_and_rotate()[/code] состоит из двух инструкций, каждая из " +"которых расположена на отдельной строке. Обе инструкции вызывают другие, " +"знакомые вам функции.\n" +"\n" +"Вы можете написать другую функцию вызывающую [code]move_and_rotate()[/code] " +"четыре раза, чтобы нарисовать квадрат длиной в 200 пикселей." + +#: course/lesson-5-your-first-function/lesson.tres:100 +msgid "" +"Every time we call [code]move_and_rotate()[/code], the two functions " +"[code]move_forward(200)[/code] and [code]turn_right(90)[/code] are called in " +"sequence.\n" +"\n" +"In this simple example, it may not feel super useful. Here's a more useful " +"and realistic one: a function to draw any square.\n" +"\n" +"The following function uses [i]parameters[/i], which we will explore in the " +"next lesson.\n" +"\n" +"[i]Drag the slider to change the square's size.[/i]" +msgstr "" +"Каждый раз, когда мы вызываем [code]move_and_rotate()[/code], две функции " +"[code]move_forward(200)[/code] и [code]turn_right(90)[/code] вызываются " +"последовательно.\n" +"\n" +"В этом простом примере может показаться, что это не слишком полезно. Вот " +"более полезный и реалистичный пример: функция, рисующая любой прямоугольник." +"\n" +"\n" +"Эта функция использует [i]параметры[/i], которые мы изучим в следующем уроке." +"\n" +"\n" +"[i]Используйте ползунок чтобы изменить размер квадрата.[/i]" + +#: course/lesson-5-your-first-function/lesson.tres:124 +msgid "How to define your own functions" +msgstr "Как объявить ваши собственные функции" + +#: course/lesson-5-your-first-function/lesson.tres:126 +msgid "" +"Let's break down how you define a function.\n" +"\n" +"A function definition starts with the [code]func[/code] keyword followed by " +"a space, the function's name, parentheses, and a colon." +msgstr "" +"Давайте разберём, как же всё-таки объявить функцию.\n" +"\n" +"Объявление функции начинается с ключевого слова [code]func[/code], с " +"последующим пробелом, именем функции, круглыми скобками и двоеточием." + +#: course/lesson-5-your-first-function/lesson.tres:148 +msgid "" +"The instructions inside the function [b]must[/b] all start with a leading " +"tab character. You can insert that tab character by pressing the [b]Tab[/b] " +"key.\n" +"\n" +"We call those leading tabs [i]indents[/i]. They're important: the computer " +"uses them to know which instructions are part of the same code block." +msgstr "" +"Все инструкции внутри функции [b]должны[/b] начинаться с ведущего символа " +"табуляции. Вы можете вставить его с помощью кнопки [b]Tab[/b] на " +"клавиатуре.\n" +"\n" +"Ведущие символы табуляции так же называют [i]отступами[/i]. Отступы важны: " +"компьютер использует их чтобы узнать, какие инструкции являются частью " +"одного и того же блока кода." + +#: course/lesson-5-your-first-function/lesson.tres:158 +msgid "Why do we use functions?" +msgstr "Почему мы используем функции?" + +#: course/lesson-5-your-first-function/lesson.tres:161 +msgid "" +"Functions are groups of instructions we reuse every time we call the " +"function.\n" +"\n" +"Because we give functions a name, they also allow us to name a set of " +"instructions, which is handy!" +msgstr "" +"Функции это группы инструкций, которые мы переиспользуем каждый раз, когда " +"вызываем функцию.\n" +"\n" +"Поскольку мы даём функциям имена, они позволяют нам объединить множество " +"инструкций, что очень удобно!" + +#: course/lesson-5-your-first-function/lesson.tres:164 +#: course/lesson-5-your-first-function/lesson.tres:165 +msgid "To reuse code multiple times. " +msgstr "Чтобы переиспользовать код несколько раз. " + +#: course/lesson-5-your-first-function/lesson.tres:164 +#: course/lesson-5-your-first-function/lesson.tres:165 +msgid "To run multiple instructions in one go." +msgstr "Чтобы исполнить несколько инструкций одним вызовом." + +#: course/lesson-5-your-first-function/lesson.tres:164 +#: course/lesson-5-your-first-function/lesson.tres:165 +msgid "To put a name on multiple lines of code." +msgstr "Чтобы дать имя нескольким строчкам кода." + +#: course/lesson-5-your-first-function/lesson.tres:172 +msgid "Names in code have rules" +msgstr "Правила имён в коде" + +#: course/lesson-5-your-first-function/lesson.tres:174 +msgid "" +"Function identifiers cannot contain spaces. In general, names in programming " +"languages cannot contain spaces.\n" +"\n" +"The computer uses spaces to detect the separation between different keywords " +"and identifiers.\n" +"\n" +"Instead of spaces, in GDScript, we use underscores (\"_\"). You saw this " +"already with functions like [code]move_forward()[/code] or " +"[code]move_local_x()[/code]. This is the convention we follow in GDScript.\n" +"\n" +"There's another convention programmers use in some other programming " +"languages.\n" +"\n" +"Instead of using underscores, they start words with capital letters except " +"for the first one. With that convention, you'd write function names like " +"[code]moveForward()[/code] or [code]moveLocalX()[/code]\n" +"\n" +"Identifiers also [i]have[/i] to start with a letter or an underscore; You " +"[i]can't[/i] begin with a number, but you can use numbers after the first " +"character." +msgstr "" +"Идентификаторы функций не могут содержать пробелы. В целом, имена в языках " +"программирования не могут содержать пробелы.\n" +"\n" +"Компьютер использует пробелы для распознавания разделений между разными " +"ключевыми словами и идентификаторами.\n" +"\n" +"Вместо пробелов в GDScript мы используем нижнее подчёркивание («_»). Вы уже " +"видели его в названиях функций [code]move_forward()[/code] и " +"[code]move_local_x()[/code]. Это соглашение, которому мы следуем в " +"GDScript.\n" +"\n" +"Существуют и другие соглашения которым следуют программисты в других языках " +"программирования.\n" +"\n" +"Вместо использования нижнего подчеркивания, они начинают все слова в " +"идентификаторах, кроме первого, с заглавных букв. Если бы мы придерживались " +"этого соглашения, то имена функций выглядели бы так: [code]moveForward()[/" +"code] или [code]moveLocalX()[/code]\n" +"\n" +"Идентификаторы также [i]должны[/i] начинаться с буквы или нижнего " +"подчеркивания; Вы [i]не можете[/i] начать идентификатор с числа, но числа " +"могут использоваться после первого символа." + +#: course/lesson-5-your-first-function/lesson.tres:192 +msgid "Which of the following names are valid function names?" +msgstr "" +"Какие из перечисленных имён являются корректными идентификаторами функций?" + +#: course/lesson-5-your-first-function/lesson.tres:193 +msgid "Note that it's fine to use capital letters." +msgstr "Обратите внимание, что использование заглавных букв разрешено." + +#: course/lesson-5-your-first-function/lesson.tres:195 +msgid "" +"You can't name a function [code]move forward[/code] because it contains a " +"space. Names in code cannot contain spaces.\n" +"\n" +"They can't start with numbers either, which is why [code]45_degree_turn[/" +"code] is also invalid. \n" +"\n" +"However, having numbers elsewhere in a function name is fine. That's why " +"[code]make3NewCharacters[/code] works." +msgstr "" +"Вы не можете назвать функцию [code]move forward[/code] потому что это " +"название содержит пробел. Имена в коде не могут содержать пробелы.\n" +"\n" +"Так же, они не могут начинаться с чисел, поэтому название " +"[code]45_degree_turn[/code] является некорректным.\n" +"\n" +"Однако иметь числа в другом месте имени функции — это нормально. Вот почему " +"[code]make3NewCharacters[/code] является корректным именем." + +#: course/lesson-5-your-first-function/lesson.tres:200 +msgid "move forward" +msgstr "идти вперёд" + +#: course/lesson-5-your-first-function/lesson.tres:200 +#: course/lesson-5-your-first-function/lesson.tres:201 +msgid "jump" +msgstr "jump" + +#: course/lesson-5-your-first-function/lesson.tres:200 +#: course/lesson-5-your-first-function/lesson.tres:201 +msgid "make3NewCharacters" +msgstr "make3NewCharacters" + +#: course/lesson-5-your-first-function/lesson.tres:200 +#: course/lesson-5-your-first-function/lesson.tres:201 +msgid "move_forward" +msgstr "move_forward" + +#: course/lesson-5-your-first-function/lesson.tres:200 +msgid "45_degree_turn" +msgstr "45_degree_turn" + +#: course/lesson-5-your-first-function/lesson.tres:208 +msgid "Instantly moving the turtle to a different position" +msgstr "Мгновенно перемещаем черепашку в другое место" + +#: course/lesson-5-your-first-function/lesson.tres:210 +msgid "" +"In order to draw multiple squares in different positions, we introduce a new " +"function for our turtle to use.\n" +"\n" +"The [code]jump()[/code] function picks up the turtle and places it relative " +"to where it is.\n" +"\n" +"So calling [code]jump(-100, 50)[/code] moves the turtle by 100 pixels to the " +"[b]left[/b] and 50 pixels [b]down[/b] without drawing any lines." +msgstr "" +"Для того, чтобы нарисовать несколько квадратов в разных местах, представляем " +"вам новую функцию для управления нашей черепашкой.\n" +"\n" +"Функция [code]jump()[/code] поднимает черепашку и располагает её куда-то " +"относительно места, где она находится на данный момент.\n" +"\n" +"Вызов [code]jump(-100, 50)[/code] перемещает черепашку на 100 пикселей " +"[b]влево[/b] и 50 пикселей [b]вниз[/b] без отрисовки новых линий." + +#: course/lesson-5-your-first-function/lesson.tres:232 +msgid "A function to draw squares" +msgstr "Функция для отрисовки квадратов" + +#: course/lesson-5-your-first-function/lesson.tres:233 +msgid "" +"Code a function named [code]draw_square()[/code] to draw one square of " +"length 200 pixels. The function should take no parameters.\n" +"\n" +"Use the [code]move_forward()[/code] and [code]turn_right()[/code] functions " +"to instruct the turtle.\n" +"\n" +"In the following practice, you'll use the [code]draw_square()[/code] " +"function to draw multiple squares by calling your own function." +msgstr "" +"Напишите функцию с именем [code]draw_square()[/code] чтобы нарисовать один " +"квадрат длинной в 200 пикселей. Функция не должна принимать никаких " +"параметров.\n" +"\n" +"Используйте функции [code]move_forward()[/code] и [code]turn_right()[/code] " +"для управления черепашкой.\n" +"\n" +"В следующем практическом упражнении, вы будете использовать свою собственную " +"функцию [code]draw_square()[/code] для создания нескольких квадратов." + +#: course/lesson-5-your-first-function/lesson.tres:246 +msgid "" +"Until now, you've had to write code by hand, and it's boring. It's time to " +"code a reusable function. You'll use it to draw multiple squares." +msgstr "" +"До сих пор, вам приходилось писать код от руки, и это скучно. Настало время " +"создать переиспользуемые функции. Они пригодятся вам для того, чтобы " +"нарисовать несколько квадратов." + +#: course/lesson-5-your-first-function/lesson.tres:251 +msgid "Drawing multiple squares" +msgstr "Рисуем несколько квадратов" + +#: course/lesson-5-your-first-function/lesson.tres:252 +msgid "" +"You have a function to draw one square: [code]draw_square()[/code]. Use it " +"to draw three squares.\n" +"\n" +"We already created [code]draw_square()[/code] for you. Create a function " +"named [code]draw_three_squares[/code] that calls [code]draw_square()[/code] " +"three times.\n" +"\n" +"If you just call the function, all three squares will overlap. To stack them " +"diagonally, call [code]jump(300, 300)[/code] between two calls to " +"[code]draw_square()[/code].\n" +"\n" +"Calling [code]jump(300, 300)[/code] makes the turtle jump by 300 pixels to " +"the right and 300 pixels down without drawing any lines." +msgstr "" +"У вас есть функция для того чтобы нарисовать один квадрат: " +"[code]draw_square()[/code]. Используйте её, чтобы нарисовать три квадрата.\n" +"\n" +"Мы уже создали [code]draw_square()[/code] для вас. Создайте функцию с именем " +"[code]draw_three_squares[/code] которая сможет вызвать [code]draw_square()[/" +"code] три раза.\n" +"\n" +"Если вы просто вызовете функцию, все три квадрата нарисуются друг поверх " +"друга. Чтобы разместить их по диагонали, вызовите [code]jump(300, 300)[/" +"code] между вызовами [code]draw_square()[/code].\n" +"\n" +"Вызов [code]jump(300,300)[/code] заставляет черепашку прыгнуть на 300 " +"пикселей вправо и 300 пикселей вниз, без отрисовки новых линий." + +#: course/lesson-5-your-first-function/lesson.tres:275 +msgid "" +"Now you created a function to draw squares, you can reuse it by calling it " +"multiple times." +msgstr "" +"Теперь, когда вы создали функцию рисующую квадраты, её можно " +"переиспользовать — вызвать несколько раз." + +#: course/lesson-5-your-first-function/lesson.tres:279 +msgid "Coding Your First Function" +msgstr "Создание вашей первой функции" diff --git a/i18n/ru/lesson-6-multiple-function-parameters.po b/i18n/ru/lesson-6-multiple-function-parameters.po new file mode 100644 index 00000000..00df13a9 --- /dev/null +++ b/i18n/ru/lesson-6-multiple-function-parameters.po @@ -0,0 +1,541 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:14 +msgid "" +"In the previous part, you created a function to draw a square of a fixed " +"size.\n" +"\n" +"This function is a bit limiting. Instead, it would be much better if we had " +"a function to draw a square of [i]any[/i] size. Or better: any kind of " +"rectangle (a square is a specific kind of rectangle).\n" +"\n" +"In previous lessons, you used the [code]rotate()[/code] function and gave it " +"an [i]argument[/i]." +msgstr "" +"В предыдущей части вы создали функцию для рисования квадрата фиксированного " +"размера.\n" +"\n" +"Эта функция немного ограничена. Было бы гораздо полезнее иметь функцию для " +"рисования квадрата [i]любого[/i] размера. Или лучше: любого вида " +"прямоугольника (квадрат - это частный случай прямоугольника).\n" +"\n" +"В предыдущих уроках при вызове функции [code]rotate()[/code] вы передавали " +"ей [i]параметр[/i]." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:38 +msgid "" +"Just like [code]rotate()[/code], we can also give our function " +"[i]parameters[/i]. Parameters are labels you give to values passed to the " +"function." +msgstr "" +"Мы можем передать [i]параметры[/i] и нашей функции, подобно тому, как делали " +"это в [code]rotate()[/code]. Параметры — это метки, которые вы даете " +"значениям, передаваемым в функцию." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:46 +msgid "Can I rotate in both directions?" +msgstr "Могу ли я вращать в обоих направлениях?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:48 +msgid "" +"The [code]radians[/code] can be a positive or negative number, which allows " +"you to rotate both clockwise and counter-clockwise." +msgstr "" +"Значение [code]radians[/code] может быть положительным или отрицательным " +"числом, что позволяет вам использовать функцию для вращения объекта как по, " +"так и против часовой стрелки." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:58 +msgid "" +"For now, please focus on the first line: [code]func rotate(radians)[/code].\n" +"\n" +"When you call [code]rotate(0.5)[/code], the computer binds the value " +"[code]0.5[/code] to the label [code]radians[/code].\n" +"\n" +"Wherever the computer sees the identifier [code]radians[/code] inside the " +"function, it replaces it with the [code]0.5[/code] value.\n" +"\n" +"The parameter name is always a label you use to refer to a [i]value[/i]. The " +"value in question can be a number, text, or anything else.\n" +"\n" +"For now, we'll stick to numbers as we have yet to see other value types." +msgstr "" +"А сейчас сосредоточьтесь на этой строке: [code]func rotate(radians)[/code].\n" +"\n" +"Когда вы вызываете [code]rotate(0.5)[/code], компьютер привязывает значение " +"[code]0.5[/code] к метке [code]radians[/code].\n" +"\n" +"Везде, где компьютер видит идентификатор [code]radians[/code] внутри " +"функции, он заменяет его значением [code]0.5[/code].\n" +"\n" +"Имя параметра - это метка, которую вы используете для ссылки на [i]значение[/" +"i]. Это значение может быть числом, текстом или чем-либо ещё.\n" +"\n" +"Пока что мы будем придерживаться числовых значений, так как нам ещё " +"предстоит познакомиться с другими типами значений." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:74 +msgid "What is a function parameter?" +msgstr "Что такое параметр функции?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:77 +msgid "" +"A parameter is a label that represents a value.\n" +"\n" +"The value in question can change: it depends on what you put in parentheses " +"when calling a function." +msgstr "" +"Параметр — это метка, которая представляет собой значение.\n" +"\n" +"Значение может меняться: оно зависит от того, что вы помещаете в круглые " +"скобки при вызове функции." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:80 +#: course/lesson-6-multiple-function-parameters/lesson.tres:81 +msgid "A label you give to a value the function receives." +msgstr "Метка, которой вы помечаете значение, принимаемое функцией." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:80 +msgid "A number you use to make calculations." +msgstr "Число, которое вы используете для вычислений." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:80 +msgid "The name of a function." +msgstr "Имя функции." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:88 +msgid "How to create functions with parameters" +msgstr "Как создавать функции с параметрами" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:90 +msgid "" +"You can give your function parameters when writing its [i]definition[/i] " +"(the line starting with the [code]func[/code] keyword).\n" +"\n" +"To do so, you add a name inside of the parentheses." +msgstr "" +"Вы можете задать параметры вашей функции при написании её [i]определения[/i] " +"(строки, начинающейся с ключевого слова [code]func[/code]).\n" +"\n" +"Для этого нужно добавить имя внутрь круглых скобок." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:112 +msgid "" +"You can give parameters any name. How you name functions and parameters is " +"up to you. \n" +"\n" +"Just remember that names cannot contain spaces. To write parameter names " +"with multiple words, you need to use underscores.\n" +"\n" +"The following function definition is exactly equivalent to the previous one." +msgstr "" +"Вы можете дать параметрам любое имя. Как назвать функции и параметры — " +"решаете вы. \n" +"\n" +"Просто помните, что имена не могут содержать пробелов. Для записи имен " +"параметров, состоящих из нескольких слов, необходимо использовать символы " +"подчёркивания.\n" +"\n" +"Следующее определение функции в точности эквивалентно предыдущему." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:136 +msgid "" +"Parameters make your code easier to reuse.\n" +"\n" +"Here's an example with a function to draw any square. Use the slider to " +"change the value passed to the function and draw squares of different sizes." +msgstr "" +"Параметры облегчают повторное использование кода.\n" +"\n" +"Вот пример с функцией для рисования любого квадрата. Используйте ползунок, " +"чтобы изменить значение параметра, передаваемого в функцию, и нарисовать " +"квадраты разных размеров." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:156 +msgid "Which is the correct syntax for a function definition?" +msgstr "Какой синтаксис является правильным для определения функции?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:159 +msgid "" +"To define a function, you need to start with the [code]func[/code] keyword " +"followed by a space, the [code]function_name[/code], and optional parameters " +"inside parentheses.\n" +"\n" +"You must end the line with a colon, which defines a new code block. We'll " +"see moving forward that keywords other than [code]func[/code] require a " +"colon at the end of the line." +msgstr "" +"Чтобы определить функцию, нужно начать с ключевого слова [code]func[/code], " +"за ним поставить пробел, [code]имя_функции[/code] и, при необходимости, " +"указать параметры в круглых скобках.\n" +"\n" +"Вы должны закончить строку двоеточием, определяющим новый блок кода. В " +"дальнейшем мы увидим, что ключевые слова, отличные от [code]func[/code], " +"тоже требуют двоеточие в конце строки." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +#: course/lesson-6-multiple-function-parameters/lesson.tres:163 +msgid "func function_name(parameter_name):" +msgstr "func function_name(parameter_name):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +msgid "func (function_name): parameter_name" +msgstr "func (function_name): parameter_name" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +msgid "func function_name(parameter_name)" +msgstr "func function_name(parameter_name)" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +msgid "function_name(parameter_name):" +msgstr "function_name(parameter_name):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:170 +msgid "Functions can have multiple parameters" +msgstr "Функции могут иметь несколько параметров" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:172 +msgid "" +"You can use multiple parameters in a function. In fact, you can use as many " +"as you [i]need[/i].\n" +"\n" +"To separate the function parameters, you need to write a comma between them." +msgstr "" +"В функции можно использовать несколько параметров. По сути, вы можете " +"использовать столько параметров, сколько вам [i]нужно[/i].\n" +"\n" +"Чтобы разделить параметры функции, между ними нужно поставить запятую." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:192 +msgid "Must I write spaces between function parameters?" +msgstr "Обязательно ли писать пробелы между параметрами функции?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:194 +msgid "" +"In a function definition, you must have a space between the [code]func[/" +"code] keyword and the function name.\n" +"\n" +"However, because we use the comma to separate parameters, it doesn't matter " +"if you use spaces between parameters. As long as you have the comma, either " +"syntax is correct.\n" +"\n" +"We often use spaces after the comma for readability." +msgstr "" +"В определении функции между ключевым словом [code]func[/code] и именем " +"функции должен быть пробел.\n" +"\n" +"Однако, поскольку мы используем запятую для разделения параметров, " +"использовать пробелы между параметрами не обязательно. При наличии запятой " +"любой синтаксис будет правильным.\n" +"\n" +"Мы часто используем пробелы после запятой для удобства чтения." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:208 +msgid "" +"The following example defines a function that uses two parameters to move an " +"entity on both the X and Y axes." +msgstr "" +"В следующем примере определена функция, которая использует два параметра для " +"перемещения объекта по осям X и Y." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:226 +msgid "How should I name my functions and parameters?" +msgstr "Как правильно назвать свои функции и параметры?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:228 +msgid "" +"The names of functions, parameters, or other things in your code are " +"entirely up to you.\n" +"\n" +"They are written by us programmers for other programmers. You want to use " +"the names that make the most sense to you and fellow programmers.\n" +"\n" +"You could absolutely write single-letter names like in maths classes: " +"[code]a[/code], [code]b[/code], [code]f[/code].\n" +"\n" +"You can also write abbreviated names like [code]pos[/code] for position, " +"[code]bg[/code] for background, and so on.\n" +"\n" +"Many programmers do either or both of the above.\n" +"\n" +"At GDQuest, we favor complete and explicit names.\n" +"\n" +"We generally try to write code that is explicit and relatively easy to " +"read.\n" +"\n" +"Right now, you have to enter every letter when you code, so long names may " +"feel inconvenient.\n" +"\n" +"However, this is good for learning: it trains your fingers to [ignore]type " +"precisely.\n" +"\n" +"Then, after you finish this course, you will see that the computer assists " +"you a lot when you code real games with a feature called auto-completion.\n" +"\n" +"Based on a few characters you [ignore]type, it will offer you to complete " +"long names." +msgstr "" +"Имена функций, параметров и других вещей в вашем коде зависят только от " +"вас.\n" +"\n" +"Они написаны нами, программистами, для других программистов. Правильнее " +"использовать имена, которые имеют наибольший смысл для вас и других " +"программистов.\n" +"\n" +"Вы можете писать однобуквенные имена, как на уроках математики: [code]a[/" +"code], [code]b[/code], [code]f[/code].\n" +"\n" +"Также вы можете писать сокращенные имена, например [code]pos[/code] для " +"позиции, [code]bg[/code] для фона и так далее.\n" +"\n" +"Многие программисты выбирают один или оба из вышеперечисленных вариантов.\n" +"\n" +"В GDQuest мы предпочитаем полные и ясные имена.\n" +"\n" +"Обычно мы стараемся писать понятный и относительно легко читаемый код.\n" +"\n" +"Сейчас при написании кода вам приходится вводить каждую букву, поэтому " +"длинные имена могут показаться неудобными.\n" +"\n" +"Однако это полезно для обучения: это тренирует ваши пальцы [ignore]печатать " +"более точно.\n" +"\n" +"Позже, после окончания этого курса, вы увидите, что компьютер сильно " +"помогает вам при программировании реальных игр с помощью функции, называемой " +"автодополнением.\n" +"\n" +"Основываясь на нескольких [ignore]напечатанных вами символах, он будет " +"предлагать вам варианты для завершения длинных имён." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:256 +msgid "When defining a function, parameters are..." +msgstr "При определении функции параметраметры..." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:259 +msgid "" +"You can define functions with or without parameters, depending on your needs." +msgstr "" +"Вы можете определять функции с параметрами или без них, в зависимости от " +"ваших потребностей." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:260 +#: course/lesson-6-multiple-function-parameters/lesson.tres:261 +msgid "Optional" +msgstr "Необязательны" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:260 +msgid "Mandatory" +msgstr "Обязательны" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:268 +msgid "" +"What's the correct syntax to define a function with multiple parameters?" +msgstr "" +"Какой синтаксис используется для определения функции с несколькими " +"параметрами?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:271 +msgid "" +"You always write the function parameters inside of the parentheses. To " +"define multiple parameters, you separate them with a comma." +msgstr "" +"Параметры функции всегда пишутся внутри круглых скобок. Чтобы задать " +"несколько параметров, разделяйте их запятой." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:272 +#: course/lesson-6-multiple-function-parameters/lesson.tres:273 +msgid "func function_name(parameter_1, parameter_2, ...):" +msgstr "func function_name(parameter_1, parameter_2, ...):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:272 +msgid "func function_name(parameter_1 parameter_2 ...):" +msgstr "func function_name(parameter_1 parameter_2 ...):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:272 +msgid "func function_name(): parameter_1, parameter_2, ..." +msgstr "func function_name(): parameter_1, parameter_2, ..." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:282 +msgid "" +"Now it's your turn to create a function with multiple parameters: a function " +"to draw rectangles of any size." +msgstr "" +"Теперь ваша очередь создать функцию с несколькими параметрами: функцию для " +"рисования прямоугольников любого размера." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:290 +msgid "Drawing corners of different sizes" +msgstr "Рисование углов с линиями разных размеров" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:291 +msgid "" +"Before we create a rectangle of any size, let's first see how we can use " +"parameters to draw simpler shapes.\n" +"\n" +"Here we have an incomplete function that will draw corners with lines of any " +"length, but it's missing its [code]length[/code] parameter.\n" +"\n" +"The function will move the turtle forward an amount defined by the parameter " +"[code]length[/code], turn [code]90[/code] degrees, then move forward " +"[code]length[/code] pixels.\n" +"\n" +"Complete the [code]draw_corner()[/code] function so it uses the " +"[code]length[/code] parameter to draw corners." +msgstr "" +"Прежде чем мы создадим прямоугольник произвольного размера, давайте " +"посмотрим, как можно использовать параметры для рисования более простых " +"фигур.\n" +"\n" +"Здесь у нас есть недоработанная функция, которая должна рисовать углы с " +"линиями любой длины, но ей не хватает параметра [code]length[/code].\n" +"\n" +"Эта функция должна заставить черепашку переместиться вперед на величину, " +"определяемую параметром [code]length[/code], повернуть на [code]90[/code] " +"градусов, затем переместиться вперед на [code]length[/code] пикселей.\n" +"\n" +"Доработайте функцию [code]draw_corner()[/code] так, чтобы она использовала " +"параметр [code]length[/code] для рисования углов." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:309 +msgid "" +"Using function parameters, code a function you can reuse to draw corners " +"with lines of varying sizes." +msgstr "" +"Используя параметры функции, создайте функцию, которую можно использовать " +"повторно для рисования углов с линиями разных размеров." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:314 +msgid "Using multiple parameters" +msgstr "Использование нескольких параметров" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:315 +msgid "" +"In this practice, we'll improve our [code]draw_corner()[/code] function so " +"the angle can also vary.\n" +"\n" +"Add the [code]angle[/code] parameter after the [code]length[/code] parameter " +"in the [code]draw_corner()[/code] function and use it to draw corners of " +"varying angles." +msgstr "" +"В этом упражнении мы усовершенствуем нашу функцию [code]draw_corner()[/" +"code], чтобы угол пересечения линий также мог меняться.\n" +"\n" +"Добавьте параметр [code]angle[/code] после параметра [code]length[/code] в " +"функцию [code]draw_corner()[/code] и используйте ее для рисования углов " +"разного размера." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:329 +msgid "With two parameters, code a function to draw corners with any angle." +msgstr "" +"Напишите функцию для рисования углов любого размера при помощи двух " +"параметров." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:334 +msgid "Drawing squares of any size" +msgstr "Рисование квадратов любого размера" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:335 +msgid "" +"We want a function to draw squares of any size.\n" +"\n" +"We could use these squares as outlines when selecting units in a tactical " +"game, as a frame for items in an inventory, and more.\n" +"\n" +"Create a function named [code]draw_square()[/code] that takes one parameter: " +"the [code]length[/code] of the square's sides.\n" +"\n" +"[b]The turtle should face towards the right when starting or completing a " +"square.[/b]\n" +"\n" +"Be sure to call [b]turn_right(90)[/b] enough times in your function to do " +"so." +msgstr "" +"Нам нужна функция для рисования квадратов любого размера.\n" +"\n" +"Мы можем использовать эти квадраты как контуры при выборе юнитов в " +"тактической игре, как рамку для предметов в инвентаре и т.д.\n" +"\n" +"Создай функцию [code]draw_square()[/code], принимающую один параметр: " +"[code]length[/code] — длину стороны квадрата.\n" +"\n" +"[b]Черепаха должна быть повёрнута вправо перед началом и после завершения " +"рисования квадрата.[/b]\n" +"\n" +"Убедитесь что [b]turn_right(90)[/b] вызывается достаточное количество раз в " +"вашей функции, выполнить это условие." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:352 +msgid "" +"In the previous lesson, your function would draw squares of a fixed size. " +"Using a parameter, code a function to draw squares of any size." +msgstr "" +"В предыдущем уроке ваша функция рисовала квадраты фиксированного размера. " +"Используя параметр, напишите функцию для рисования квадратов любого размера." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:357 +msgid "Drawing rectangles of any size" +msgstr "Рисование прямоугольников любого размера" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:358 +msgid "" +"Let's make our square drawing function more flexible to include rectangles " +"of varying sizes.\n" +"\n" +"Your job is to code a function named [code]draw_rectangle()[/code] that " +"takes two parameters: the [code]length[/code] and the [code]height[/code] of " +"the rectangle.\n" +"\n" +"[b]The turtle should face towards the right when starting or completing a " +"rectangle.[/b]\n" +"\n" +"Note that we could still draw a square with [code]draw_rectangle()[/code] by " +"having the [code]length[/code] and [code]height[/code] equal the same value." +msgstr "" +"Давайте сделаем нашу функцию рисования квадрата более гибкой, чтобы с её " +"помощью можно было рисовать прямоугольники разного размера.\n" +"\n" +"Ваша задача - написать функцию [code]draw_rectangle()[/code], принимающую " +"два параметра: длину [code]length[/code] и высоту [code]height[/code] " +"прямоугольника.\n" +"\n" +"[b]Черепаха должна быть повёрнута вправо перед началом и после завершения " +"рисования квадрата.[/b]\n" +"\n" +"Обратите внимание, что мы всё еще можем нарисовать квадрат с помощью " +"[code]draw_rectangle()[/code], если передадим в неё [code]length[/code] и " +"[code]height[/code] равные одному и тому же значению." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:381 +msgid "" +"With one parameter, you can make squares of any size. With two, you can draw " +"any rectangle! You'll do so in this practice." +msgstr "" +"Один параметр позволит вам рисовать квадраты любого размера. Два параметра " +"позволят нарисовать любой прямоугольник! Это то, чем вы займётесь в данном " +"упражнении." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:385 +msgid "Your First Function Parameter" +msgstr "Ваш первый параметр функции" diff --git a/i18n/ru/lesson-7-member-variables.po b/i18n/ru/lesson-7-member-variables.po new file mode 100644 index 00000000..556f165c --- /dev/null +++ b/i18n/ru/lesson-7-member-variables.po @@ -0,0 +1,434 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-7-member-variables/lesson.tres:14 +msgid "" +"In this lesson, we take a first look at variables.\n" +"\n" +"In games, you need to keep track of many values that change over time:\n" +"\n" +"- The player's score.\n" +"- Every character or enemy's health.\n" +"- The last checkpoint.\n" +"\n" +"And so much more. You need to store, retrieve, and update those values.\n" +"\n" +"We call those values [i]variables[/i]. Variables are labels you use to keep " +"track of values that vary over time. Here's an example of a variable " +"tracking a character or monster's health." +msgstr "" +"В этом уроке мы впервые рассмотрим переменные.\n" +"\n" +"В играх вам нужно отслеживать множество значений, которые меняются с " +"течением времени:\n" +"\n" +"- Счет игрока.\n" +"- Здоровье каждого персонажа или врага.\n" +"- Последнюю контрольную точку.\n" +"\n" +"И многие другие. Вам нужно хранить, извлекать и обновлять эти значения.\n" +"\n" +"Мы называем эти значения [i]переменными[/i]. Переменные — это метки, которые " +"вы используете для отслеживания значений, изменяющихся во времени. Вот " +"пример переменной, отслеживающей здоровье персонажа или монстра." + +#: course/lesson-7-member-variables/lesson.tres:44 +msgid "" +"The line above defines a new variable named [code]health[/code] and assigns " +"it a starting value of [code]100[/code] (that's what the equal sign does, " +"more on that below).\n" +"\n" +"Function parameters, which you saw in the previous lesson, are another " +"example of variables." +msgstr "" +"Строка выше определяет новую переменную с именем [code]health[/code] и " +"присваивает ей начальное значение [code]100[/code] (подробнее о том, что " +"делает знак равно, будет ниже).\n" +"\n" +"Параметры функции, которые вы видели в предыдущем уроке, являются ещё одним " +"примером переменных." + +#: course/lesson-7-member-variables/lesson.tres:56 +msgid "" +"In this lesson, we start using variables built into Godot. They're a " +"particular kind called [i]member variables[/i].\n" +"\n" +"Member variables are values attached to a game entity. They're useful " +"properties like the [code]position[/code], [code]rotation[/code], and " +"[code]scale[/code] of a character.\n" +"\n" +"In a previous lesson, we saw how we could use the [code]rotate()[/code] " +"function to rotate our character." +msgstr "" +"В этом уроке мы начнем использовать переменные, встроенные в Godot. Они " +"являются особым видом переменных и называются [i]свойствами[/i].\n" +"\n" +"Свойства — это значения, привязанные к игровому объекту, например ими " +"являются: положение [code]position[/code], вращение [code]rotation[/code], и " +"масштаб [code]scale[/code] персонажа.\n" +"\n" +"В предыдущем уроке мы видели, как можно использовать функцию [code]rotate()[/" +"code] для поворота персонажа." + +#: course/lesson-7-member-variables/lesson.tres:80 +msgid "" +"This function increases or decreases the value of the entity's " +"[code]rotation[/code] member variable.\n" +"\n" +"Say we want to reset the rotation to [code]0[/code] and make the character " +"upright. Using the [code]rotate()[/code] function can prove difficult: you " +"need to know the character's exact current angle to cancel it out.\n" +"\n" +"It's much easier to use the member variable rather than the function.\n" +"\n" +"The following code assigns the value [code]0[/code] to the character's " +"rotation, resetting its angle and making it upright." +msgstr "" +"Эта функция увеличивает или уменьшает значение свойства [code]rotation[/" +"code] объекта.\n" +"\n" +"Допустим, мы хотим сбросить угол наклона на [code]0[/code] и вернуть " +"персонажа в вертикальное положение. Использование функции [code]rotate()[/" +"code] может оказаться сложным: для отмены поворота необходимо точно знать " +"текущий угол наклона персонажа.\n" +"\n" +"Гораздо проще использовать свойство, а не функцию.\n" +"\n" +"Следующий код присваивает значение [code]0[/code] свойству персонажа, " +"сбрасывая его угол наклона." + +#: course/lesson-7-member-variables/lesson.tres:106 +msgid "" +"Notice how we use the equal sign ([code]=[/code]) to change the value of a " +"variable." +msgstr "" +"Обратите внимание как мы используем знак равенства ([code]=[/code]) для " +"изменения значения переменной." + +#: course/lesson-7-member-variables/lesson.tres:114 +msgid "What's a variable?" +msgstr "Что такое переменная?" + +#: course/lesson-7-member-variables/lesson.tres:117 +msgid "" +"Variables are labels you use to access values that change over time.\n" +"\n" +"You can also use them to put a name on a value you want to reuse throughout " +"your code. It makes your code easier to read and to change." +msgstr "" +"Переменные - это метки, которые вы используете для доступа к значениям, " +"изменяющимся со временем.\n" +"\n" +"Вы также можете использовать их, чтобы дать имя значению, которое вы хотите " +"повторно использовать во всем коде. Это облегчает чтение и изменение кода." + +#: course/lesson-7-member-variables/lesson.tres:120 +#: course/lesson-7-member-variables/lesson.tres:121 +msgid "A label you use to keep track of a value that can change." +msgstr "Метка для отслеживания значения, которое может меняться." + +#: course/lesson-7-member-variables/lesson.tres:120 +msgid "A function that varies over time." +msgstr "Функция, которая изменяется с течением времени." + +#: course/lesson-7-member-variables/lesson.tres:120 +msgid "A decimal number." +msgstr "Десятичная дробь." + +#: course/lesson-7-member-variables/lesson.tres:128 +msgid "Accessing sub-variables with the dot" +msgstr "Использование точки для получения доступа ко вложенным переменным" + +#: course/lesson-7-member-variables/lesson.tres:130 +msgid "" +"In video games, you will see many member variables that have sub-values.\n" +"\n" +"For example, the [code]position[/code] we mentioned has two coordinates: " +"[code]x[/code] and [code]y[/code].\n" +"\n" +"It's the same for the [code]scale[/code]: it has [code]x[/code] and [code]y[/" +"code] sub-variables. They respectively control the horizontal and vertical " +"size of the game entity.\n" +"\n" +"To access those X and Y sub-components, you add a dot (\".\") after the " +"variable name.\n" +"\n" +"The code below places the entity at [code]200[/code] pixels on the x-axis " +"and [code]250[/code] pixels on the y-axis." +msgstr "" +"В видеоиграх вы увидите множество свойств, которые имеют вложенные значения." +"\n" +"\n" +"Например, упомянутая нами позиция [code]position[/code] имеет две координаты:" +" [code]x[/code] и [code]y[/code].\n" +"\n" +"То же самое касается масштаба [code]scale[/code]: у него есть вложенные " +"переменные [code]x[/code] и [code]y[/code]. Они управляют горизонтальным и " +"вертикальным размером игрового объекта соответственно.\n" +"\n" +"Чтобы получить доступ к этим вложенным компонентам X и Y, добавьте точку (\"." +"\") после имени переменной.\n" +"\n" +"Приведенный ниже код размещает объект в координаты [code]180[/code] пикселей " +"по оси x и [code]120[/code] пикселей по оси y." + +#: course/lesson-7-member-variables/lesson.tres:158 +msgid "" +"Notice how we use the equal sign (\"=\") to assign the numbers on the right " +"to the sub-variables on the left.\n" +"\n" +"Unlike in maths, in computer programming, the equal sign (\"=\") does not " +"mean \"is equal to.\"\n" +"\n" +"Instead, it means \"assign the result of the expression on the right to the " +"variable on the left\". We assign values so often in code that we prefer to " +"reserve the equal sign for that." +msgstr "" +"Обратите внимание как мы используем знак равенства (\"=\"), чтобы присвоить " +"числа справа вложенным переменным слева.\n" +"\n" +"В отличие от математики, в компьютерном программировании знак равенства " +"(\"=\") не означает \"равно\".\n" +"\n" +"Вместо этого он означает \"присвоить результат выражения справа переменной " +"слева\". Мы настолько часто присваиваем значения в коде, что предпочли " +"зарезервировать знак равенства для этого." + +#: course/lesson-7-member-variables/lesson.tres:170 +msgid "In games, the Y-axis is positive going down" +msgstr "В играх ось Y направлена вниз" + +#: course/lesson-7-member-variables/lesson.tres:172 +msgid "" +"Note that in games, assuming your character's position starts at (0, 0), the " +"code above moves the entity [code]180[/code] pixels to the right and " +"[code]120[/code] pixels down.\n" +"\n" +"In math, the y-axis is generally positive going up by convention.\n" +"\n" +"The convention is the [i]opposite[/i] in video games and many computer " +"applications: the y-axis is positive going down." +msgstr "" +"Обратите внимание, что в играх, если ваш персонаж находится в позиции (0, " +"0), приведенный выше код переместит его на [code]180[/code] пикселей вправо " +"и на [code]120[/code] пикселей вниз.\n" +"\n" +"В математике, как правило, ось Y направлена вверх, потому что так принято.\n" +"\n" +"В видеоиграх и многих компьютерных приложениях принято [i]обратное[/i]: " +"положительные значения оси Y направлены вниз." + +#: course/lesson-7-member-variables/lesson.tres:194 +msgid "Why does the Y-axis point downwards?" +msgstr "Почему ось Y направлена вниз?" + +#: course/lesson-7-member-variables/lesson.tres:196 +msgid "" +"This may be confusing if you only saw the y-axis pointing up in math " +"classes. However, in math, axes go in any direction. They don't even have to " +"be perpendicular.\n" +"\n" +"On the computer, the position (0, 0) happens to correspond to the top-left " +"of your computer screen. It then makes sense for coordinates to be positive " +"when going towards the bottom-right corner.\n" +"\n" +"This leads to another question: why is position zero the top left of the " +"screen? This is due to computer and TV displays history: they would " +"calculate and display pixels starting from the top left corner and moving " +"towards the bottom right corner." +msgstr "" +"Это может сбивать с толку, если вы видели только ось Y, указывающую вверх, " +"на уроках математики. Однако в математике оси могут идти в любом " +"направлении. Они даже не должны быть перпендикулярны.\n" +"\n" +"На компьютере позиция (0, 0) соответствует верхнему левому углу экрана " +"вашего компьютера. Поэтому, становление координат положительными при " +"движении к правому нижнему углу имеет смысл.\n" +"\n" +"Это приводит к другому вопросу: почему нулевая позиция находится в верхнем " +"левом углу экрана? Так сложилось в ходе истории компьютерных и телевизионных " +"дисплеев: они вычисляли и отображали пиксели, начиная с верхнего левого " +"угла, двигаясь к нижнему правому." + +#: course/lesson-7-member-variables/lesson.tres:210 +msgid "" +"Let's look at one last example before moving on to the practice. The " +"following code makes the character 1.5 times its starting size." +msgstr "" +"Прежде чем перейти к упражнениям, давайте рассмотрим последний пример. " +"Следующий код делает персонажа в 1.5 раза больше его изначального размера." + +#: course/lesson-7-member-variables/lesson.tres:228 +msgid "How do you access sub-variables?" +msgstr "Как получить доступ ко вложенным переменным?" + +#: course/lesson-7-member-variables/lesson.tres:229 +msgid "" +"Variables often hold sub-values, like the [code]position[/code] has two sub-" +"variables: [code]x[/code] and [code]y[/code]. How would you access the " +"[code]x[/code], for example?" +msgstr "" +"Переменные часто содержат вложенные значения, например позиция " +"[code]position[/code] имеет две вложенные переменные: [code]x[/code] и " +"[code]y[/code]. Как получить доступ к [code]x[/code], например?" + +#: course/lesson-7-member-variables/lesson.tres:231 +msgid "" +"To access a sub-variable, you need to write a dot between the parent " +"variable name and the sub-variable name.\n" +"\n" +"For example, to access the [code]x[/code] sub-variable of the " +"[code]position[/code] variable, you'll write [code]position.x[/code]." +msgstr "" +"Чтобы получить доступ ко вложенной переменной, необходимо написать точку " +"между именем родительской переменной и именем вложенной переменной.\n" +"\n" +"Например, чтобы получить доступ ко вложенному значению [code]x[/code] " +"переменной [code]position[/code], необходимо написать [code]position.x[/" +"code]." + +#: course/lesson-7-member-variables/lesson.tres:234 +#: course/lesson-7-member-variables/lesson.tres:235 +msgid "You write a dot (\".\") between the variable and the sub-variable name." +msgstr "Написать точку (\".\") между переменной и именем вложенной переменной." + +#: course/lesson-7-member-variables/lesson.tres:234 +msgid "" +"You write an arrow (\"->\") between the variable and the sub-variable name." +msgstr "" +"Написать стрелку (\"->\") между переменной и именем вложенной переменной." + +#: course/lesson-7-member-variables/lesson.tres:234 +msgid "" +"You write a slash (\"/\") between the variable and the sub-variable name." +msgstr "" +"Написать косую черту (\"/\") между переменной и именем вложенной переменной." + +#: course/lesson-7-member-variables/lesson.tres:244 +msgid "" +"In a future lesson, we'll explain why and how those variables have sub-" +"variables.\n" +"\n" +"For now, just know you can use the dot to access them.\n" +"\n" +"We'll tell you which variables have sub-components and what their names " +"are.\n" +"\n" +"In the next lessons, you'll create your own variables and do operations on " +"them to add or remove [code]score[/code], [code]health[/code], you name it.\n" +"\n" +"For now, let's practice accessing variables." +msgstr "" +"В следующем уроке мы объясним, почему и зачем в этих переменных есть " +"вложенные переменные.\n" +"\n" +"Пока что просто знайте, что вы можете использовать точку для доступа к ним.\n" +"\n" +"Мы расскажем вам, какие переменные имеют вложенные компоненты и как они " +"называются.\n" +"\n" +"В следующих уроках вы создадите свои собственные переменные и будете " +"использовать их в операциях по добавлению или вычитанию [code]score[/code] " +"(очков) и [code]health[/code] (здоровья).\n" +"\n" +"А пока давайте потренируемся получать доступ к переменным." + +#: course/lesson-7-member-variables/lesson.tres:260 +msgid "Draw a rectangle at a precise position" +msgstr "Нарисуйте прямоугольник в точной позиции" + +#: course/lesson-7-member-variables/lesson.tres:261 +msgid "" +"Draw a rectangle of 200 by 120 pixels at the X position of 120 pixels and Y " +"position of 100 pixels.\n" +"\n" +"You need to replace the numbers in the code editor to draw the correct " +"rectangle." +msgstr "" +"Нарисуйте прямоугольник размером 200 на 120 пикселей в позиции X — 120 и Y — " +"100 пикселей.\n" +"\n" +"Вам нужно заменить числа в редакторе кода, чтобы нарисовать правильный " +"прямоугольник." + +#: course/lesson-7-member-variables/lesson.tres:275 +msgid "" +"Use the position member variable and its sub-variables to change the " +"rectangle's position." +msgstr "" +"Используйте свойство position и его внутренние переменные для изменения " +"положения прямоугольника." + +#: course/lesson-7-member-variables/lesson.tres:280 +msgid "Draw squares at different positions" +msgstr "Нарисуйте квадраты в разных позициях" + +#: course/lesson-7-member-variables/lesson.tres:281 +msgid "" +"Draw three squares of size 100 by 100 that are 100 pixels apart on the " +"horizontal axis. In other words, there should be a 100-pixel gap between two " +"squares.\n" +"\n" +"You should draw the squares starting at the position (100, 100). This means " +"you should position the first square at 100 on the X axis and 100 on the Y " +"axis.\n" +"\n" +"Remember you need to use the equal sign ([code]=[/code]) to change the value " +"of a variable, like the turtle's position.\n" +"\n" +"Write your code inside the [code]run()[/code] function so the computer can " +"recognize it.\n" +"\n" +"Use the provided [code]draw_rectangle()[/code] function to draw each square." +msgstr "" +"Нарисуйте три квадрата размером 100 на 100, расположив их на расстоянии 100 " +"пикселей друг от друга по горизонтальной оси. Другими словами, между двумя " +"квадратами должен быть промежуток в 100 пикселей.\n" +"\n" +"Вы должны нарисовать квадраты, начиная с позиции (100, 100). Это означает, " +"что первый квадрат должен располагаться в координатах 100 по оси X и 100 по " +"оси Y.\n" +"\n" +"Помните, что для изменения значения переменной, например положения черепахи, " +"нужно использовать знак равенства ([code]=[/code]).\n" +"\n" +"Напишите свой код внутри функции [code]run()[/code], чтобы компьютер мог его " +"распознать.\n" +"\n" +"Используйте предоставленную функцию [code]draw_rectangle()[/code] для " +"рисования каждого квадрата." + +#: course/lesson-7-member-variables/lesson.tres:299 +msgid "" +"Now you can place and draw one shape, but how about drawing several? In this " +"practice, you'll place three squares side by side to really get the hang of " +"properties." +msgstr "" +"Теперь вы можете разместить и нарисовать одну фигуру, но как насчет " +"рисования нескольких? В этом упражнении вы разместите три квадрата рядом " +"друг с другом, чтобы действительно научиться пользоваться свойствами." + +#: course/lesson-7-member-variables/lesson.tres:303 +msgid "Introduction to Member Variables" +msgstr "Введение в свойства" diff --git a/i18n/ru/lesson-8-defining-variables.po b/i18n/ru/lesson-8-defining-variables.po new file mode 100644 index 00000000..67aa9559 --- /dev/null +++ b/i18n/ru/lesson-8-defining-variables.po @@ -0,0 +1,324 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-8-defining-variables/lesson.tres:13 +msgid "" +"In the previous lesson, you used a predefined member variable named " +"[code]position[/code].\n" +"\n" +"In your projects, you will need to define your own variables.\n" +"\n" +"Imagine that you need to track the player's health in your game.\n" +"\n" +"They may start with [code]5[/code] health points. When taking a hit, the " +"health should go down to [code]4[/code]. After another hit, it should be " +"[code]3[/code]. And so on.\n" +"\n" +"To keep track of that, you can create a variable named [code]health[/code] " +"to which you add and subtract points.\n" +"\n" +"The example below introduces the [code]print()[/code] function, which " +"outputs its argument to the output box on the left.\n" +"\n" +"Click the [i]run()[/i] button to instantly run the entire function, and " +"click the [i]step[/i] button to execute lines of code one by one.\n" +"\n" +"The [i]Debugger[/i] panel at the bottom shows the current value of the " +"[code]health[/code] variable." +msgstr "" +"В предыдущем уроке вы использовали предопределенное свойство с именем " +"[code]position[/code].\n" +"\n" +"В своих проектах вам придётся определять собственные переменные.\n" +"\n" +"Представьте, что вам нужно отслеживать здоровье игрока в вашей игре.\n" +"\n" +"Он может начать с [code]5[/code] очками здоровья. При получении удара " +"здоровье должно уменьшиться до [code]4[/code]. После ещё одного удара оно " +"должно стать равно [code]3[/code]. И так далее.\n" +"\n" +"Чтобы следить за этим, можно создать переменную с именем [code]health[/code]" +", к которой можно прибавлять и отнимать очки.\n" +"\n" +"В примере ниже представлена функция [code]print()[/code], которая выводит " +"значение параметра в поле вывода слева.\n" +"\n" +"Нажмите кнопку [i]run()[/i], чтобы мгновенно запустить всю функцию, и " +"нажмите кнопку [i]step[/i], чтобы выполнить строки кода одну за другой.\n" +"\n" +"Панель [i]Отладчик[/i] внизу показывает текущее значение переменной " +"[code]health[/code]." + +#: course/lesson-8-defining-variables/lesson.tres:47 +msgid "" +"After executing the first two lines of code, you will have a health variable " +"storing a value of [code]4[/code].\n" +"\n" +"Below, we'll break down how you define new variables and explain the " +"[code]print()[/code] function." +msgstr "" +"После выполнения первых двух строк тела функции вы получите переменную " +"health, хранящую значение [code]4[/code].\n" +"\n" +"Ниже мы разберем, как определять новые переменные, и объясним функцию " +"[code]print()[/code]." + +#: course/lesson-8-defining-variables/lesson.tres:57 +msgid "Defining a variable" +msgstr "Определение переменной" + +#: course/lesson-8-defining-variables/lesson.tres:59 +msgid "" +"To use a variable, you must first define it so the computer registers its " +"name.\n" +"\n" +"To do so, you start a line of code with the [code]var[/code] keyword " +"followed by your desired variable name. Like [code]func[/code] stands for " +"[i]function[/i], [code]var[/code] stands for [i]variable[/i].\n" +"\n" +"Variables are case-sensitive, which means [code]health[/code] and " +"[code]Health[/code] are technically different variables. Be careful to use " +"the same capitalization wherever you refer to the same variable, or you " +"could be reading or writing to a different variable.\n" +"\n" +"The following line defines a [code]health[/code] variable pointing to no " +"value. You can think of it as creating a product label you have yet to stick " +"onto something." +msgstr "" +"Чтобы использовать переменную, вы должны сначала определить её, чтобы " +"компьютер зарегистрировал её имя.\n" +"\n" +"Для этого нужно начать строку кода с ключевого слова [code]var[/code], и " +"продолжить её подходящим именем переменной. Так же, как [code]func[/code] " +"обозначает [i]функцию[/i], [code]var[/code] обозначает [i]переменную[/i].\n" +"\n" +"Переменные чувствительны к регистру, что означает, что [code]health[/code] и " +"[code]Health[/code] технически разные переменные. Будьте осторожны и " +"используйте одну и ту же заглавную букву везде, где вы ссылаетесь на одну и " +"ту же переменную, иначе вы можете читать или писать в другую переменную.\n" +"\n" +"Следующая строка определяет переменную [code]health[/code], не указывающую " +"ни на какое значение. Вы можете думать об этом как о создании этикетки " +"продукта, которую вам еще предстоит наклеить на что-то." + +#: course/lesson-8-defining-variables/lesson.tres:85 +msgid "" +"Like with functions, a member variable's name must be unique inside a given " +"code file. Creating two variables next to each other with the same name will " +"cause an error." +msgstr "" +"Как и в случае с функциями, имя свойства должно быть уникальным в пределах " +"данного файла кода. Создание двух переменных рядом друг с другом с " +"одинаковым именем приведёт к ошибке." + +#: course/lesson-8-defining-variables/lesson.tres:105 +msgid "" +"To use a variable, you want to assign it a starting value. You can do so " +"using the equal sign (=).\n" +"\n" +"This code assigns the value [code]100[/code] to a new variable named " +"[code]health[/code]." +msgstr "" +"Чтобы использовать переменную, необходимо присвоить ей начальное значение. " +"Это можно сделать с помощью знака равенства (=).\n" +"\n" +"Этот код присваивает значение [code]100[/code] новой переменной с именем " +"[code]health[/code]." + +#: course/lesson-8-defining-variables/lesson.tres:127 +msgid "" +"After defining your variable, you can access its value by writing the " +"variable's name." +msgstr "" +"После определения переменной вы можете получить доступ к её значению, для " +"этого просто напишите имя переменной." + +#: course/lesson-8-defining-variables/lesson.tres:147 +msgid "" +"The code above will display the number [code]100[/code] to some output " +"window.\n" +"\n" +"Notice we don't use the [code]var[/code] keyword anymore as we only need it " +"to [i]define[/i] a variable.\n" +"\n" +"Also, once you define a variable, you can change its value anytime with the " +"equal sign." +msgstr "" +"Приведенный выше код выведет число [code]100[/code] в окно вывода.\n" +"\n" +"Обратите внимание, что мы больше не используем ключевое слово [code]var[/" +"code], поскольку оно нужно только для того, чтобы [i]определить[/i] " +"переменную.\n" +"\n" +"Кроме того, определив переменную, вы можете в любой момент изменить её " +"значение с помощью знака равенства." + +#: course/lesson-8-defining-variables/lesson.tres:169 +msgid "About the print function" +msgstr "О функции print" + +#: course/lesson-8-defining-variables/lesson.tres:171 +msgid "" +"The [code]print()[/code] function is generally the first function you learn " +"in academic programming courses.\n" +"\n" +"It sends (\"prints\") the message or value you give it to some output " +"window, often a black window with plain white text." +msgstr "" +"Функция [code]print()[/code] обычно является первой функцией, которую вы " +"изучаете на академических курсах программирования.\n" +"\n" +"Она отправляет (\"печатает\") сообщение или значение, которое вы ей " +"передаете, в некоторое окно вывода, часто представленное в виде чёрного окна " +"с белым текстом." + +#: course/lesson-8-defining-variables/lesson.tres:183 +msgid "" +"Programmers often use [code]print()[/code] to quickly check the value of " +"their variables when their game runs.\n" +"\n" +"In the app, we made a special output window that captures calls to " +"[code]print()[/code] and displays a card to make it friendlier for you." +msgstr "" +"Программисты часто используют [code]print()[/code] для быстрой проверки " +"значения переменных при запуске игры.\n" +"\n" +"В приложении мы сделали специальное окно вывода, которое перехватывает " +"вызовы [code]print()[/code] и отображает результат выполнения на карточке, " +"чтобы сделать его более дружелюбным для вас." + +#: course/lesson-8-defining-variables/lesson.tres:205 +msgid "" +"Here, the verb [i]print[/i] means \"to send information to display on the " +"screen.\"\n" +"\n" +"The function \"prints\" things on your computer display; It does not relate " +"to printers." +msgstr "" +"Здесь глагол [i]print[/i] означает \"отправить информацию для отображения на " +"экране\".\n" +"\n" +"Функция \"печатает\" вещи на дисплее компьютера; она не относится к " +"принтерам." + +#: course/lesson-8-defining-variables/lesson.tres:215 +msgid "Variables are like labels" +msgstr "Переменные похожи на метки" + +#: course/lesson-8-defining-variables/lesson.tres:217 +msgid "" +"As we hinted above, in GDScript, variables work a bit like labels.\n" +"\n" +"Assigning a value to a variable is like taking your label (the variable) and " +"sticking it onto some item (the value)." +msgstr "" +"Как мы обозначили выше, по принципу работы переменные в GDScript немного " +"похожи на метки.\n" +"\n" +"Присвоить значение переменной — это все равно что взять ярлык (переменную) и " +"наклеить его на какой-либо предмет (значение)." + +#: course/lesson-8-defining-variables/lesson.tres:229 +msgid "" +"Like a supermarket has a database of product labels, the computer keeps a " +"list of all variables in your code.\n" +"\n" +"Given the variable name, the computer can look up the attached value.\n" +"\n" +"It has an important consequence. In GDScript, you can stick that label to " +"any other value." +msgstr "" +"Как в супермаркете есть база данных этикеток товаров, так и компьютер хранит " +"список всех переменных в вашем коде.\n" +"\n" +"Используя заданное имя переменной, компьютер может найти прикреплённое к ней " +"значение.\n" +"\n" +"Из этого вытекает важное следствие — в GDScript вы можете приклеить эту " +"метку к любому другому значению." + +#: course/lesson-8-defining-variables/lesson.tres:253 +msgid "" +"The above code is like taking a label from the appropriate item and sticking " +"it to the wrong thing:\n" +"\n" +"- At line 2, the [code]health[/code] variable holds a number.\n" +"- From line 3, [code]health[/code] holds text.\n" +"\n" +"The computer will let you do that! The code's syntax and \"grammar\" are " +"correct, but it's not good.\n" +"\n" +"Variable names should describe the value they contain, so a [code]health[/" +"code] variable with a text value will confuse your future self and other " +"coders. It can also cause errors in your game.\n" +"\n" +"Later on, we'll see how to avoid this issue with [i]variable types[/i]. For " +"now, let's practice creating variables!" +msgstr "" +"Приведенный выше код похож на то, как если бы вы взяли ярлык с подходящего " +"элемента и приклеили его к неправильному:\n" +"\n" +"- В строке 2 переменная [code]health[/code] содержит число.\n" +"- После выполнения строки 3, переменная [code]health[/code] будет содержать " +"текст.\n" +"\n" +"Компьютер позволит вам так сделать! Синтаксис и \"грамматика\" кода " +"правильные, но делать так — плохо.\n" +"\n" +"Имена переменных должны описывать содержащееся в них значение, поэтому " +"переменная [code]health[/code] с текстовым значением запутает вас и других " +"программистов в будущем. Это также может вызвать ошибки в вашей игре.\n" +"\n" +"Позже мы увидим, как избежать этой проблемы с помощью [i]типов переменных[/i]" +". А пока давайте попрактикуемся в создании переменных!" + +#: course/lesson-8-defining-variables/lesson.tres:270 +msgid "Define a health variable" +msgstr "Определите переменную здоровья" + +#: course/lesson-8-defining-variables/lesson.tres:271 +msgid "" +"Define a variable named [code]health[/code] with a starting value of " +"[code]100[/code].\n" +"\n" +"You can define variables inside or outside functions. In this practice, you " +"shouldn't create a function." +msgstr "" +"Определите переменную здоровья с именем [code]health[/code] и начальным " +"значением [code]100[/code].\n" +"\n" +"Вы можете определять переменные внутри или снаружи функций. В данном " +"упражнении функцию создавать не нужно." + +#: course/lesson-8-defining-variables/lesson.tres:282 +msgid "" +"In this practice, you'll define your first variable and give it a specific " +"starting value." +msgstr "" +"В этом упражнении вы определите свою первую переменную и зададите ей " +"конкретное начальное значение." + +#: course/lesson-8-defining-variables/lesson.tres:286 +msgid "Defining Your Own Variables" +msgstr "Определение собственных переменных" diff --git a/i18n/ru/lesson-9-adding-and-subtracting.po b/i18n/ru/lesson-9-adding-and-subtracting.po new file mode 100644 index 00000000..598e3f57 --- /dev/null +++ b/i18n/ru/lesson-9-adding-and-subtracting.po @@ -0,0 +1,222 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-01 23:07+0000\n" +"Last-Translator: gsomgsom \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:14 +#, fuzzy +msgid "" +"Our character in our game will have health by defining the [code]health[/" +"code] variable. The higher the character's health, the further away the " +"player is from losing the game.\n" +"\n" +"Health that changes adds tension to the game, especially if the player is " +"fighting with low health! It's a resource that the player should manage " +"carefully.\n" +"\n" +"The character's health might get low if an enemy attacks them or they fall " +"into a hole.\n" +"\n" +"We can create a function to represent damage in these cases." +msgstr "" +"Здоровье главного героя нашей игры будет определено переменной [code]health[/" +"code]. Чем выше здоровье персонажа, тем дальше игрок от поражения.\n" +"\n" +"Здоровье добавляет игре напряжения, особенно если игрок сражается на низком " +"его уровне! Здоровье — это ресурс, которым игрок должен распоряжаться " +"осторожно.\n" +"\n" +"Здоровье персонажа уменьшается, если он падает в пропасть или его атакует " +"противник.\n" +"\n" +"Мы можем создать функцию, наносящую повреждения, в этих случаях." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:40 +#, fuzzy +msgid "" +"We pass the amount of damage the robot should take as a parameter.\n" +"\n" +"Line 2 subtracts [code]amount[/code] from [code]health[/code].\n" +"\n" +"Note the [code]-=[/code] syntax which achieves this. It's a shorthand we " +"often use.\n" +"\n" +"You can also use a longer form. Both of these lines have the same effect. " +"They both subtract the value of [code]amount[/code] from the [code]health[/" +"code] variable:\n" +"\n" +"[code]health -= amount[/code]\n" +"[code]health = health - amount[/code]\n" +"\n" +"You may notice that the health of the robot can go below [code]0[/code]. " +"We'll see how to manage this in a future lesson using [i]conditions[/i]." +msgstr "" +"Мы передаём количество урона, которое робот должен получить, в виде " +"параметра.\n" +"\n" +"Строка 2 вычитает [code]amount[/code] из [code]health[/code].\n" +"\n" +"Обратите внимание, что вычитание производится при помощи синтаксиса [code]-" +"=[/code]. Это сокращение, которое мы часто используем.\n" +"\n" +"Также вы можете использовать более длинную форму. Обе строки, приведённые " +"ниже, окажут одинаковый эффект. Они обе вычитают [code]amount[/code] из " +"переменной [code]health[/code]:\n" +"\n" +"[code]health -= amount[/code]\n" +"[code]health = health - amount[/code]\n" +"\n" +"Вы можете заметить, что здоровье робота может упасть ниже [code]0[/code]. В " +"следующих уроках мы разберём, как исправить это с помощью [i]условий[/i]." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:61 +msgid "" +"The robot's health could increase instead if the player picks up an item " +"that heals them, or if they use a healing item." +msgstr "" +"Здоровье робота может увеличиться, если игрок подберёт или использует " +"исцеляющий предмет." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:81 +msgid "" +"Here again, the health can go beyond [code]100[/code].\n" +"\n" +"Also, once more, the short line [code]health += amount[/code] is equivalent " +"to the longer form [code]health = health + amount[/code]." +msgstr "" +"Также, здоровье может превысить [code]100[/code].\n" +"\n" +"Здесь, как и в предыдущем примере, мы используем сокращение [code]health += " +"amount[/code] эквивалентное длинной форме [code]health = health + amount[/" +"code]." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:91 +msgid "Which of these would increase the health of the robot?" +msgstr "Какое из этих выражений увеличит здоровье робота?" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:94 +msgid "" +"Both of these lines increase the [code]health[/code] of the robot by " +"[code]amount[/code].\n" +"[code]\n" +"health += amount\n" +"health = health + amount\n" +"[/code]" +msgstr "" +"Оба выражения увеличат [code]health[/code] робота на [code]amount[/code].\n" +"[code]\n" +"health += amount\n" +"health = health + amount\n" +"[/code]" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +msgid "health -= amount" +msgstr "health -= amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +#: course/lesson-9-adding-and-subtracting/lesson.tres:100 +msgid "health += amount" +msgstr "health += amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +#: course/lesson-9-adding-and-subtracting/lesson.tres:100 +msgid "health = health + amount" +msgstr "health = health + amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +msgid "health = health - amount" +msgstr "health = health - amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:109 +msgid "" +"In the following practices, you'll code the [code]take_damage()[/code] and " +"[code]heal()[/code] functions so the robot's health can decrease and " +"increase." +msgstr "" +"В следующих упражнениях вы создадите функции [code]take_damage()[/code] и " +"[code]heal()[/code], позволяющие уменьшать и увеличивать здоровье робота." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:117 +msgid "Damaging the Robot" +msgstr "Нанесение урона роботу" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:118 +msgid "" +"In our game, the main character has a certain amount of [code]health[/code]. " +"When it gets hit, the health should go down by a varying [code]amount[/code] " +"of damage.\n" +"\n" +"Add to the [code]take_damage()[/code] function so it subtracts the " +"[code]amount[/code] to the predefined [code]health[/code] variable.\n" +"\n" +"The robot starts with 100 health and will take 50 damage." +msgstr "" +"В нашей игре у главного героя есть определённое количество здоровья " +"([code]health[/code]). Когда персонаж получает удар, его здоровье должно " +"уменьшиться на определённое количество ([code]amount[/code]) очков.\n" +"\n" +"Доработайте функцию [code]take_damage()[/code] таким образом, чтобы при её " +"вызове, значение заранее объявленной переменной [code]health[/code] " +"уменьшалось на [code]amount[/code].\n" +"\n" +"Робот должен начать со 100 очками здоровья и получить 50 единиц урона." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:134 +msgid "Learn how to deal damage to entities like our robot." +msgstr "Научитесь наносить урон объектам вроде робота." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:139 +msgid "Healing the Robot" +msgstr "Исцеление робота" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:140 +msgid "" +"It's time to heal the robot up to full health!\n" +"\n" +"Write a function called [code]heal()[/code] that takes [code]amount[/code] " +"as a parameter.\n" +"\n" +"The function should add [code]amount[/code] to [code]health[/code].\n" +"\n" +"The robot starts with 50 health and will heal 50 to get it up to 100." +msgstr "" +"Настало время исцелить нашего робота\n" +"\n" +"Напишите функцию [code]heal()[/code], принимающую [code]amount[/code] в виде " +"параметра.\n" +"\n" +"Функция должна добавлять [code]amount[/code] к [code]health[/code].\n" +"\n" +"Робот должен начать с 50 очками здоровья и исцелиться на 50 в результате " +"выполнения функции, чтобы полностью восстановиться до 100." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:157 +msgid "" +"Our robot needs healing after that practice! Create a function to heal it " +"back to full health." +msgstr "" +"После предыдущего упражнения наш робот нуждается в лечении! Создайте " +"функцию, чтобы восстановить его здоровье до максимума." + +#: course/lesson-9-adding-and-subtracting/lesson.tres:161 +msgid "Adding and Subtracting" +msgstr "Сложение и вычитание" diff --git a/i18n/tr/application.po b/i18n/tr/application.po index a4732b28..1e920f33 100644 --- a/i18n/tr/application.po +++ b/i18n/tr/application.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-07-10 17:11+0000\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-01 16:59+0000\n" "Last-Translator: Yılmaz Durmaz \n" "Language-Team: Turkish \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0-dev\n" +"X-Generator: Weblate 5.1-dev\n" "Generated-By: Babel 2.9.1\n" #: resources/QuizInputField.gd:17 @@ -41,11 +41,11 @@ msgstr "Başlık" msgid "Practices" msgstr "Alıştırmalar" -#: ui/UINavigator.gd:365 ui/UINavigator.gd:350 +#: ui/UINavigator.gd:365 msgid "Go back in your navigation history" msgstr "Gezinme geçmişinde geri git" -#: ui/UINavigator.gd:368 ui/UINavigator.gd:353 +#: ui/UINavigator.gd:368 msgid "(no previous history)" msgstr "(geçmiş kayıt bulunamadı)" @@ -57,13 +57,12 @@ msgstr "YENİ YIL SATIŞI - 50% İNDİRİM" msgid "CHRISTMAS SALE" msgstr "YENİ YIL SATIŞI" -#: ui/UIPractice.gd:154 ui/UIPractice.gd:220 ui/UIPractice.gd:144 -#: ui/UIPractice.gd:202 +#: ui/UIPractice.gd:154 ui/UIPractice.gd:220 #, python-format msgid "Hint %s" msgstr "İpucu %s" -#: ui/UIPractice.gd:248 ui/UIPractice.gd:230 +#: ui/UIPractice.gd:248 msgid "Validating Your Code..." msgstr "Kodun Doğrulanıyor..." @@ -72,7 +71,7 @@ msgstr "Kodun Doğrulanıyor..." msgid "The function `%s` calls itself, this creates an infinite loop" msgstr "`%s` fonksiyonu kendini çağırıyor, bu da sonsuz döngü oluşturuyor" -#: ui/UIPractice.gd:301 ui/UIPractice.gd:286 +#: ui/UIPractice.gd:301 msgid "Running Your Code..." msgstr "Kodun Çalıştırılıyor..." @@ -89,7 +88,7 @@ msgid "" "Oh no! The script has an error, but the Script Verifier did not catch it" msgstr "Hadi be! Betikte bir hata var, ama Betik Doğrulayıcı bunu yakalayamadı" -#: ui/UIPractice.gd:369 ui/UIPractice.gd:337 +#: ui/UIPractice.gd:369 msgid "Running Tests..." msgstr "Testler Çalıştırılıyor..." @@ -118,7 +117,6 @@ msgid "Pause" msgstr "Duraklat" #: ui/components/CodeEditor.tscn:173 ui/components/RunnableCodeExample.tscn:87 -#: ui/components/RunnableCodeExample.tscn:78 msgid "Reset" msgstr "Sıfırla" @@ -194,7 +192,6 @@ msgid "Expand" msgstr "Genişlet" #: ui/components/RunnableCodeExample.tscn:105 -#: ui/components/RunnableCodeExample.tscn:96 msgid "run()" msgstr "run()" @@ -360,7 +357,6 @@ msgstr "Alıştırma Listesi" #: ui/components/popups/PracticeListPopup.tscn:115 #: ui/components/popups/SettingsPopup.tscn:244 -#: ui/components/popups/SettingsPopup.tscn:227 msgid "Close" msgstr "Kapat" @@ -455,32 +451,26 @@ msgid "OK" msgstr "TAMAM" #: ui/components/popups/SettingsPopup.tscn:76 -#: ui/components/popups/SettingsPopup.tscn:79 msgid "Configure the App" msgstr "Uygulamayı Yapılandır" #: ui/components/popups/SettingsPopup.tscn:103 -#: ui/components/popups/SettingsPopup.tscn:106 msgid "Language" msgstr "Dil" #: ui/components/popups/SettingsPopup.tscn:123 -#: ui/components/popups/SettingsPopup.tscn:126 msgid "Text Size" msgstr "Metin Boyutu" #: ui/components/popups/SettingsPopup.tscn:151 -#: ui/components/popups/SettingsPopup.tscn:154 msgid "Sample text" msgstr "Örnek metin" #: ui/components/popups/SettingsPopup.tscn:164 -#: ui/components/popups/SettingsPopup.tscn:167 msgid "Scroll sensitivity" msgstr "Kaydırma hassasiyeti" #: ui/components/popups/SettingsPopup.tscn:190 -#: ui/components/popups/SettingsPopup.tscn:193 msgid "Framerate cap" msgstr "Kare hızı sınırı" @@ -489,7 +479,6 @@ msgid "Lower contrast" msgstr "Düşük zıtlık" #: ui/components/popups/SettingsPopup.tscn:259 -#: ui/components/popups/SettingsPopup.tscn:242 msgid "Apply" msgstr "Uygula" @@ -555,6 +544,7 @@ msgid "Confirm Resetting Progress" msgstr "Sıfırlama İşlemini Onayla" #: ui/screens/end_screen/EndScreen.tscn:229 +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:196 msgid "Congratulations!" msgstr "Tebrikler!" @@ -662,14 +652,14 @@ msgstr "Bu bir Açık-Kaynak projedir!" msgid "" "Like Godot, this app and course is free and open-source. \n" "\n" -"You can find the app's source code and contribute translations here: [url=" -"\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " +"You can find the app's source code and contribute translations here: " +"[url=\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " "(Github repository)[/url]." msgstr "" "Godot gibi, bu uygulama ve kurs ücretsiz ve açık-kaynak'tır.\n" "\n" -"Uygulamanın kaynak koduna erişmek ve çevirilere katkıda bulunmak için: [url=" -"\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " +"Uygulamanın kaynak koduna erişmek ve çevirilere katkıda bulunmak için: " +"[url=\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " "(Github repository)[/url]." #: ui/screens/lesson/UIBaseQuiz.tscn:56 @@ -729,12 +719,10 @@ msgid "Show Hint" msgstr "İpucu Göster" #: ui/screens/practice/PracticeInfoPanel.gd:144 -#: ui/screens/practice/PracticeInfoPanel.gd:143 msgid "Method descriptions" msgstr "Yöntem açıklamaları" #: ui/screens/practice/PracticeInfoPanel.gd:160 -#: ui/screens/practice/PracticeInfoPanel.gd:159 msgid "Property descriptions" msgstr "Özellik açıklamaları" @@ -763,7 +751,6 @@ msgid "Open Practice List" msgstr "Alıştırma Listesini Aç" #: ui/screens/practice/PracticeTestDisplay.tscn:40 -#: ui/screens/practice/PracticeTestDisplay.tscn:42 msgid "Test text" msgstr "Test metni" @@ -788,35 +775,34 @@ msgstr "SEÇENEKLER" msgid "QUIT" msgstr "ÇIKIŞ" -#: ui/components/popups/ExternalErrorPopup.tscn:83 -msgid "" -"Lessons in this course are constructed in such a way that you only need to " -"edit the [b]important bits[/b]. But there is much more code outside of what " -"you see that makes the project run.\n" -"\n" -"This means that sometimes changes that you make can affect code that you " -"have no control over. But don't worry, you can still fix all the issues " -"yourself with the code you [b]can[/b] edit!\n" -"\n" -"[i]This is kind of like game engines work too.[/i] There is a lot of hidden " -"code that they execute to make sure your projects runs smoothly. And yet, an " -"error in your scripts can break them. We'll try to explain how to address " -"each individual error that you face. Quick, click the [b]Explain[/b] button " -"next to the error message!" -msgstr "" -"Bu kurstaki dersler, yalnızca [b]önemli kısımları[/b] düzenlemen gerekecek " -"şekilde oluşturulmuştur. Ancak gördüğünün dışında projenin çalışmasını " -"sağlayan çok daha fazla kod var.\n" -"\n" -"Bu, bazen yaptığın değişikliklerin, üzerinde kontrolün olmayan kodları " -"etkileyebileceği anlamına gelir. Ancak endişelenme, [b]düzenleyebileceğin[/" -"b] kod ile tüm sorunları kendin düzeltebilirsin!\n" -"\n" -"[i]Bu, oyun motorlarının da çalışması gibidir.[/i] Projelerinin sorunsuz " -"çalıştığından emin olmak için yürüttükleri çok sayıda gizli kod vardır. Yine " -"de, komut dosyalarındaki bir hata onları bozabilir. Karşılaştığın her bir " -"hatayı nasıl ele alacağını açıklamaya çalışacağız. Çabuk, hata mesajının " -"yanındaki [b]Açıkla[/b] düğmesine tıkla!" +#~ msgid "" +#~ "Lessons in this course are constructed in such a way that you only need " +#~ "to edit the [b]important bits[/b]. But there is much more code outside of " +#~ "what you see that makes the project run.\n" +#~ "\n" +#~ "This means that sometimes changes that you make can affect code that you " +#~ "have no control over. But don't worry, you can still fix all the issues " +#~ "yourself with the code you [b]can[/b] edit!\n" +#~ "\n" +#~ "[i]This is kind of like game engines work too.[/i] There is a lot of " +#~ "hidden code that they execute to make sure your projects runs smoothly. " +#~ "And yet, an error in your scripts can break them. We'll try to explain " +#~ "how to address each individual error that you face. Quick, click the " +#~ "[b]Explain[/b] button next to the error message!" +#~ msgstr "" +#~ "Bu kurstaki dersler, yalnızca [b]önemli kısımları[/b] düzenlemen " +#~ "gerekecek şekilde oluşturulmuştur. Ancak gördüğünün dışında projenin " +#~ "çalışmasını sağlayan çok daha fazla kod var.\n" +#~ "\n" +#~ "Bu, bazen yaptığın değişikliklerin, üzerinde kontrolün olmayan kodları " +#~ "etkileyebileceği anlamına gelir. Ancak endişelenme, " +#~ "[b]düzenleyebileceğin[/b] kod ile tüm sorunları kendin düzeltebilirsin!\n" +#~ "\n" +#~ "[i]Bu, oyun motorlarının da çalışması gibidir.[/i] Projelerinin sorunsuz " +#~ "çalıştığından emin olmak için yürüttükleri çok sayıda gizli kod vardır. " +#~ "Yine de, komut dosyalarındaki bir hata onları bozabilir. Karşılaştığın " +#~ "her bir hatayı nasıl ele alacağını açıklamaya çalışacağız. Çabuk, hata " +#~ "mesajının yanındaki [b]Açıkla[/b] düğmesine tıkla!" #~ msgid "Connected to the server." #~ msgstr "Sunucuya bağlanıldı." diff --git a/i18n/tr/classref_database.po b/i18n/tr/classref_database.po index afc833f2..50f0ffd2 100644 --- a/i18n/tr/classref_database.po +++ b/i18n/tr/classref_database.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2022-03-26 17:50+0100\n" -"PO-Revision-Date: 2023-07-10 17:11+0000\n" +"PO-Revision-Date: 2023-10-05 11:11+0000\n" "Last-Translator: Yılmaz Durmaz \n" "Language-Team: Turkish \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0-dev\n" +"X-Generator: Weblate 5.1-dev\n" "Generated-By: Babel 2.9.1\n" #. Reference: show @@ -37,34 +37,36 @@ msgid "" "Applies a rotation to the node, in radians, starting from its current " "rotation." msgstr "" -"Düğüme, geçerli dönüşünden başlayarak radyan cinsinden bir dönüş uygular." +"Düğüme, geçerli dönüşünden başlayarak, radyan cinsinden bir dönüş uygular." #. Reference: move_forward #: ./course/documentation.csv:5 msgid "Moves the turtle in the direction it's facing by some pixels." -msgstr "Kaplumbağayı baktığı yönde birkaç piksel hareket ettirir." +msgstr "" +"Kaplumbağayı, verilen sayıda piksel kadar, baktığı yönde hareket ettirir." #. Reference: turn_right #: ./course/documentation.csv:6 msgid "Rotates the turtle to the right by some degrees." -msgstr "Kaplumbağayı birkaç derece sağa döndürür." +msgstr "Kaplumbağayı, verilen sayı kadar derece sağa döndürür." #. Reference: turn_left #: ./course/documentation.csv:7 msgid "Rotates the turtle to the left by some degrees." -msgstr "Kaplumbağayı birkaç derece sola döndürür." +msgstr "Kaplumbağayı, verilen sayı kadar derece sola döndürür." #. Reference: jump #: ./course/documentation.csv:8 msgid "Offsets the turtle's position by the given x and y amounts of pixels." msgstr "" -"Kaplumbağanın konumunu verilen x ve y piksel miktarları kadar değiştirir." +"Kaplumbağanın konumunu, verilen x ve y piksel miktarları kadar değiştirir." #. Reference: draw_rectangle #: ./course/documentation.csv:9 msgid "Makes the turtle draw a rectangle starting at its current position." msgstr "" -"Kaplumbağanın geçerli konumundan başlayarak bir dikdörtgen çizmesini sağlar." +"Kaplumbağanın, geçerli konumundan başlayarak, bir dikdörtgen çizmesini " +"sağlar." #. Reference: position.x #: ./course/documentation.csv:10 @@ -83,9 +85,9 @@ msgid "" "[code]Node._process[/code]'s [code]delta[/code]. If [code]scaled[/code] " "is false, normalizes the movement." msgstr "" -"[code]Node._process[/code]'in [code]delta[/code]'sını temel alarak düğümün X " -"eksenine yerel bir yer değiştirme uygular. [code]scaled[/code] değeri false " -"ise, hareketi normalize eder." +"[code]Node._process[/code]'in [code]delta[/code]'sını temel alarak, düğümün " +"X eksenine yerel bir yer değiştirme uygular. [code]scaled[/code] (ölçekli) " +"değeri false ise, hareketi normalize eder." #. Reference: board_size #: ./course/documentation.csv:13 @@ -93,8 +95,8 @@ msgid "" "Stores how many cells make up the width ([code]board_size.x[/code]) and " "height ([code]board_size.y[/code]) of the board." msgstr "" -"Panonun genişliğini ([code]board_size.x[/code]) ve yüksekliğini " -"([code]board_size.y[/code]) kaç hücrenin oluşturduğunu depolar." +"Tahtanın genişliğini ([code]board_size.x[/code]) ve yüksekliğini " +"([code]board_size.y[/code]) oluşturan hücrelerin kaç tane olduğunu depolar." #. Reference: cell #: ./course/documentation.csv:14 @@ -102,14 +104,14 @@ msgid "" "The cell position of the robot on the board. [code]Vector2(0, 0)[/code] " "is the square cell in the top left of the board." msgstr "" -"Robotun tahta üzerindeki hücre konumu. [code]Vector2(0, 0)[/code] tahtanın " +"Robotun tahta üzerindeki hücre konumu. [code]Vector2(0, 0)[/code], tahtanın " "sol üst köşesindeki kare hücredir." #. Reference: range #: ./course/documentation.csv:15 msgid "Creates a list of numbers from [code]0[/code] to [code]length - 1[/code]." msgstr "" -"[code]0[/code] ile [code]length- 1[/code] (uzunuk -1) arasında bir sayı " +"[code]0[/code] ile [code]length- 1[/code] (uzunluk - 1) arasında bir sayı " "listesi oluşturur." #. Reference: play_animation @@ -121,8 +123,8 @@ msgstr "Robota bir animasyon oynatmasını emreder." #: ./course/documentation.csv:17 msgid "Selects units in the cell coordinates passed as the function's argument." msgstr "" -"Fonksiyonun değişkeni olarak gönderilen hücre koordinatlarındaki birimleri " -"seçer." +"Fonksiyona girdi değişkeni olarak gönderilen hücre koordinatlarındaki " +"birimleri seçer." #. Reference: robot.move_to #: ./course/documentation.csv:18 @@ -132,17 +134,17 @@ msgstr "Hedef hücreye doğru bir hareket animasyonunu sıraya ekler." #. Reference: array.append #: ./course/documentation.csv:19 msgid "Adds the value passed as an argument at the back of the array." -msgstr "Değişken olarak gönderilen değeri, dizinin (array) sonuna ekler." +msgstr "Girdi değişkeni olarak gönderilen değeri, dizinin (array) sonuna ekler." #. Reference: array.pop_front #: ./course/documentation.csv:20 msgid "Removes the first value from the array and returns it." -msgstr "Dizideki (array) ilk değeri çıkarır ve geri döndürür." +msgstr "Dizideki ilk değeri diziden çıkarır ve bu değeri geri döndürür." #. Reference: array.pop_back #: ./course/documentation.csv:21 msgid "Removes the last value from the array and returns it." -msgstr "Dizideki (array) son değeri çıkarır ve geri döndürür." +msgstr "Dizideki son değeri diziden çıkarır ve bu değeri geri döndürür." #. Reference: str #: ./course/documentation.csv:22 @@ -150,8 +152,8 @@ msgid "" "Returns the argument converted into a [code]String[/code]. Works with the" " majority of value types." msgstr "" -"Verilen değeri [code]String[/code] (dize) haline dönüştürüp geri döndürür. " -"Değer tiplerinin çoğunluğunda işe yarar." +"Girdi değişkenini [code]String[/code] (dize) haline dönüştürüp geri " +"döndürür. Değer tiplerinin çoğunluğunda işe yarar." #. Reference: int #: ./course/documentation.csv:23 @@ -160,7 +162,7 @@ msgid "" "[i]if possible[/i]. Supports converting decimal numbers, strings, and " "booleans. Useful to convert player text input into numbers." msgstr "" -"Verilen değeri, [i] eğer mümkünse[/i], bir [code]int[/code] (tam sayı) " +"Girdi değişkenini, [i]eğer mümkünse[/i], bir [code]int[/code] (tam sayı) " "olarak dönüştürüp geri döndürür. Ondalık sayıları, dizeleri, ve " "mantıksalları dönüştürmeyi destekler. Oyuncudan gelen yazı girdilerini " "sayılara dönüştürmek için kullanışlıdır." @@ -171,15 +173,13 @@ msgid "" "Creates a new unit matching the type parameter and places it at the " "desired cell position on the game grid." msgstr "" -"Tip değişkenlerine uygun yeni bir birim oluşturur ve bunu oyun ızgarası " +"Girilen birim tipine uygun yeni bir birim oluşturur ve bunu oyun ızgarası " "(grid) üzerinde istenilen hücre konumuna yerleştirir." #. Reference: display_item #: ./course/documentation.csv:25 msgid "Creates a new item and displays it in the inventory." -msgstr "" -"Yeni bir öğe yaratır ve bunu envanter içinde (inventory, demirbaş listesi) " -"gösterir." +msgstr "Yeni bir öğe oluşturur ve bunu envanter içinde gösterir." #. Reference: add_item #: ./course/documentation.csv:26 diff --git a/i18n/tr/error_database.po b/i18n/tr/error_database.po index 15e2256f..c6a6070d 100644 --- a/i18n/tr/error_database.po +++ b/i18n/tr/error_database.po @@ -8,17 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-07-10 17:11+0000\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-05 11:11+0000\n" "Last-Translator: Yılmaz Durmaz \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0-dev\n" +"X-Generator: Weblate 5.1-dev\n" "Generated-By: Babel 2.9.1\n" #. Reference: IN_EXPECTED_AFTER_IDENTIFIER @@ -33,9 +33,9 @@ msgid "" "creates a new variable with the desired name and assigns each element of the " "array to it." msgstr "" -"Bu hatayı alıyorsan, [code]for[/code] ve [code]in[/code] arasındaki isim " +"Bu hatayı alıyorsanız, [code]for[/code] ve [code]in[/code] arasındaki isim " "geçerli bir değişken ismi değildir, yada [code]in[/code] kelimesini " -"unutmuşsundur.\n" +"unutmuşsunuzdur.\n" "\n" "Bir [code]for[/code] döngüsünde, döngünün her bir yinelemesinde kullanmak " "için, [code]in[/code] kelimesi sadece geçici değişken isimlerini kabul eder. " @@ -59,18 +59,18 @@ msgid "" "[code]for cell_position in cell_positions_array:\n" " cell_position.x += 1.0[/code]" msgstr "" -"Bu hatayı düeltmek için, [code]for[/code] ve [code]in[/code] kelimeleri " -"arasına, içinde noktalama işareti yada boşluk bulunmayan, geçerli bir " -"değişken ismi girdiğinden emin olmalısın.\n" +"Bu hatayı düzeltmek için, [code]for[/code] ve [code]in[/code] kelimeleri " +"arasına, içinde noktalama işareti ya da boşluk bulunmayan geçerli bir " +"değişken ismi girdiğinizden emin olmalısınız.\n" "\n" -"Örneğin, bu kod hatalıdır: [code]for cell_position.x in " -"cell_positions_array:[/code]. Çünkü [code]cell_position.x[/code] geçerli bir " -"değişken ismi değildir.\n" +"Örneğin, bu kod hatalıdır: [code]for cell_position.x in cell_positions_array:" +"[/code]. Çünkü [code]cell_position.x[/code] geçerli bir değişken ismi " +"değildir.\n" "\n" -"Bir dğeişkenin [code]x[/code] alt-elemanına erişmek için, döngünün " -"içerisinde aşağıdaki gibi kullanmalısın.\n" +"Bir değişkenin [code]x[/code] alt-elemanına erişmek için, bunu döngünün " +"içerisinde aşağıdaki gibi kullanmalısınız.\n" "\n" -"[code]for cell_position in cell_positions_array: # \"for hücre_konumu in " +"[code]for cell_position in cell_positions_array: # \"for hücre_konumu in " "hücre_konumları_disizi\" anlamında\n" " cell_position.x += 1.0[/code]" @@ -84,12 +84,12 @@ msgid "" "Another possibility is that you want to check for equality in a condition " "but wrote a single = instead of ==." msgstr "" -"Bu hatayı alırsan, büyük ihtimalle değişken olmayan bir şeylere bir değer " -"atamaya çalışıyorsun demektir, ve bu mümkün değildir. Sadece değişkenlere " -"değere atayabilirsin.\n" +"Bu hatayı alırsanız, büyük ihtimalle değişken olmayan bir şeylere bir değer " +"atamaya çalışıyorsunuz demektir ve bu mümkün değildir. Sadece değişkenlere " +"değere atayabilirsiniz.\n" "\n" "Bir diğer olasılık ise, bir koşul işleminde eşitliği test etmek istemiş, ama " -"\"==\" yerine \"=\" yazmışsındır." +"\"==\" yerine \"=\" yazmışsınızdır." #. Reference: ASSIGNING_TO_EXPRESSION #: script_checking/error_database.csv:47 @@ -103,15 +103,15 @@ msgid "" "In the case of a condition, ensure that you are using two equal signs to " "check for equality (==)." msgstr "" -"Eğer bir değişkene değer atamak istiyorsan, \"=\" işaretinin sol tarafına " -"bir fonksiyon (yada değer) yazmak yerine bir değişken ismi yazdığını iki " -"kere kontrol etmelisin.\n" +"Eğer bir değişkene değer atamak istiyorsanız, \"=\" işaretinin sol tarafına " +"bir fonksiyon (ya da değer) yazmak yerine bir değişken ismi yazdığınızı iki " +"kere kontrol etmelisiniz.\n" "\n" -"Ayrıca doğru şekilde yazdığından da emin olmalısın. Örneğin, eşitliğin sol " -"tarafında parantezler olmamalıdır.\n" +"Ayrıca doğru şekilde yazdığınızdan da emin olmalısınız. Örneğin, eşitliğin " +"sol tarafında parantezler olmamalıdır.\n" "\n" -"Bir koşul yazıyorsan, iki tane eşittir işareti (==) kullandığından emin " -"olmalısın." +"Bir koşul yazıyorsanız, iki tane eşittir işareti (==) kullandığınızdan emin " +"olmalısınız." #. Reference: CYCLIC_REFERENCE #: script_checking/error_database.csv:57 @@ -129,18 +129,18 @@ msgid "" "do this. Godot 4 should solve this problem, but you need to work around it " "in the meantime." msgstr "" -"Dönüşsel bir başvuru, bir sınıfın doğrudan yada dolaylı bir şekilde " +"Dönüşsel bir başvuru, bir sınıfın doğrudan ya da dolaylı bir şekilde " "kendisine başvuru yapmasıdır.\n" "\n" "İki olası sebebi vardır:\n" "\n" -"1. Sınıfın ismini, sınıfın kendi içinde kullanmışsındır.\n" -"2. Sınıfın içinde kullandığın başka bir sınıf, tekrardan bu sınıfa başvuru " +"1. Sınıfın ismini, sınıfın kendi içinde kullanmışsınızdır.\n" +"2. Sınıfın içinde kullandığınız başka bir sınıf, tekrardan bu sınıfa başvuru " "yapıyordur, bu şekilde sonu olmayan bir başvuru döngüsüne sebep oluyordur.\n" "\n" -"Her iki durumda da, GDScript'in Godot 3 içinde çalışma şeklinden dolayı, " -"bunu yapamazsın. Godot 4 bunu belk çözecektir, ama şimdilik sorunu başka " -"şekilde çözmeye çalışmalısın." +"Her iki durumda da GDScript'in Godot 3 içinde çalışma şeklinden dolayı, bunu " +"yapamazsınız. Godot 4 bunu belki çözecektir, ama şimdilik sorunu başka " +"şekilde çözmeye çalışmalısınız." #. Reference: CYCLIC_REFERENCE #: script_checking/error_database.csv:57 @@ -151,9 +151,9 @@ msgid "" "causing cyclic references. It solves the problem in the vast majority of " "cases." msgstr "" -"Hatada belirtilen satırdaki tipi silersen, sorunun düzelmesi gerek.\n" +"Hatada belirtilen satırdaki tipi silerseniz, sorunun düzelmesi gerekir.\n" "\n" -"GDQuest'te, bir sorunla karşılaşınca, dönüşsel başvuruya sebep olan tip " +"GDQuest'te, bir sorunla karşılaştığımızda, dönüşsel başvuruya sebep olan tip " "tanımlarını sileriz. Sorunlarımızın büyük çoğunluğu bu şekilde çözülüyor." #. Reference: INVALID_INDENTATION @@ -170,11 +170,11 @@ msgstr "" "Kodunun girinti miktarı yanlış. (satır başındaki sekme karakterlerinin " "sayısı)\n" "\n" -"Bir yada daha fazla sekme karakteri eksik, ya da çok fazla kullandın.\n" +"Bir ya da daha fazla sekme karakteri eksik, ya da çok fazla kullandınız.\n" "\n" -"Bilgisayar, kod satırlarının başındaki o sekme karakterlerini kullanarak, " -"hangi satırların yazdığın kodun (mesela fonksiyonun) gövdesine ait olduğunu " -"almaya çalışır." +"Bilgisayar, kod satırlarının başındaki bu sekme karakterlerini kullanarak, " +"hangi satırların yazdığınız kodun (mesela fonksiyonun) gövdesine ait " +"olduğunu anlamaya çalışır." #. Reference: INVALID_INDENTATION #: script_checking/error_database.csv:64 @@ -186,12 +186,12 @@ msgid "" "In other words, your line should have one more leading tab character than " "the function definition." msgstr "" -"Eğer hata kodunun gösterdiği satır, iki nokta üstüste ile biten bir satırdan " -"sonra ise (mesela bir fonksiyon tanımı gibi), önceki satırdan bir seviye " -"içeriye girinti yapman gerekir.\n" +"Eğer hata kodunun gösterdiği satır, iki nokta üst üste ile biten bir " +"satırdan sonra ise (mesela bir fonksiyon tanımı gibi), önceki satırdan bir " +"seviye içeriye girinti yapmanız gerekir.\n" "\n" -"Başka bir deyişle, kodu yazdığın satıra, fonksiyon tanımından bir tane daha " -"fazla sekme karakteri koymalısın." +"Başka bir deyişle, kodu yazdığınız satıra, fonksiyon tanımı satırından bir " +"tane daha fazla sekme karakteri koymalısınız." #. Reference: UNEXPECTED_CHARACTER #: script_checking/error_database.csv:73 @@ -206,15 +206,15 @@ msgid "" "Note that this error can appear [b]after[/b] the line causing it due to how " "the computer reads and analyzes your code." msgstr "" -"Bu hatayı alıyorsan, yazım kurallarına uymayan bir şey yazmışsındır, ya da " -"bu satırdaki veya önceki satırdan devam eden kodu tamamlamak için gereken " +"Bu hatayı alıyorsanız, yazım kurallarına uymayan bir şey yazmışsınızdır, ya " +"da bu satırdaki veya önceki satırdan devam eden kodu tamamlamak için gereken " "bir şey eksiktir.\n" "\n" -"Bilgisayar için bir kod yazarken son derece kesin olmalısın. Bu tarz bir " +"Bilgisayar için bir kod yazarken son derece kesin olmalısınız. Bu tarz bir " "hatayı almak çok kolaydır, çünkü tek gereken bir tane hatalı karakterdir.\n" "\n" -"Ayrıca şuna dikkat et: bu hata, sebebi olan kod satırından [b]sonra[/b] " -"geliyormuş gibi görünebilir, çünkü bilgisayar yazdığın kodu bu şekilde " +"Ayrıca şuna dikkat edin: bu hata, sebebi olan kod satırından [b]sonra[/b] " +"geliyormuş gibi görünebilir, çünkü bilgisayar yazdığınız kodu bu şekilde " "okuyup analiz eder." #. Reference: UNEXPECTED_CHARACTER @@ -231,15 +231,15 @@ msgid "" "expression, like a closing bracket. In this case, it most likely comes from " "the line with the error." msgstr "" -"Böyle bir hatanın çözümü büyük oranda içeriğe bağlıdır. Hata mesajı sana, " -"hangi karakter yada öğenin eksik olduğunu söylüyor olmalıdır.\n" +"Böyle bir hatanın çözümü büyük oranda içeriğe bağlıdır. Hata mesajı size, " +"hangi karakter ya da öğenin eksik olduğunu söylüyor olmalıdır.\n" "\n" "Eğer hata \"expected\" (beklenen) diyorsa, [b]önceki[/b] satırların birinde " -"bir şeyleri atlamış olmalısın. Bir noktalama işareti, bir parantez, ya da " -"bşka bir şey.\n" +"bir şeyleri atlamış olmalısınız. Bir noktalama işareti, bir parantez, ya da " +"başka bir şey.\n" "\n" "Eğer \"unterminated\" (sonlandırılmadı) diyorsa, bir ifadenin sonunda olması " -"gereken bir karakteri unutmuşsundur (mesela kapalı parantez) Bu durumda, " +"gereken bir karakteri unutmuşsunuzdur (mesela kapalı parantez). Bu durumda, " "sorun genelde hata mesajında verilen satırdadır." #. Reference: UNEXPECTED_CHARACTER_IN_KEYWORD @@ -251,9 +251,10 @@ msgid "" "Three keywords in GDScript work like function calls and require parentheses: " "[code]yield()[/code], [code]preload()[/code], and [code]assert()[/code]." msgstr "" -"Bu hata, bir parantez (ya da virgül veya bir yol) eksik yazdığını söyler.\n" +"Bu hata, bir parantezi (ya da virgülü veya bir yolu) eksik yazdığınızı " +"söyler.\n" "\n" -"GDScript'te üç tane kelime fonksiyon çağırısı gibi çalışır ve paranteze " +"GDScript'te üç tane kelime fonksiyon çağrısı gibi çalışır ve paranteze " "ihtiyaç duyar: [code]yield()[/code], [code]preload()[/code], ve " "[code]assert()[/code]." @@ -263,8 +264,8 @@ msgid "" "To address the error, you want to add the missing opening parenthesis, the " "closing parenthesis, or the comma." msgstr "" -"Bu hatayı gidermek için, eksik olan açık parantez, kapalı parantez, ya da " -"virgülü eklemek isteyebilirsin." +"Bu hatayı gidermek için, eksik olan açık parantezi, kapalı parantezi, ya da " +"virgülü eklemek isteyebilirsiniz." #. Reference: UNEXPECTED_CHARACTER_IN_EXPORT_HINT #: script_checking/error_database.csv:77 @@ -272,8 +273,8 @@ msgid "" "This error tells you you are missing some parenthesis, a comma, or some " "value in your export hint." msgstr "" -"Bu hata, bir kaç parantezi, bir virgülü, ye da dışa aktarım (export) " -"ipucundaki bi değeri unuttuğunu söyler." +"Bu hata, birkaç parantezi, bir virgülü, ya da dışa aktarım (export) " +"ipucundaki bir değeri unuttuğunuzu söyler." #. Reference: UNEXPECTED_CHARACTER_IN_EXPORT_HINT #: script_checking/error_database.csv:77 @@ -281,8 +282,8 @@ msgid "" "You need to read the error message and add the missing character or value it " "requests." msgstr "" -"Hata mesajını okumalı ve sana söylediği eksik olan karakteri ya da değeri " -"eklemelisin." +"Hata mesajını okumalı ve size söylediği eksik olan karakteri ya da değeri " +"eklemelisiniz." #. Reference: MISPLACED_IDENTIFIER #: script_checking/error_database.csv:86 @@ -295,14 +296,15 @@ msgid "" "3. You wrote a function definition but forgot the parentheses before the " "colon." msgstr "" -"Bu hata bir kaç farklı durumda oluşabilir:\n" +"Bu hata birkaç farklı durumda oluşabilir:\n" "\n" -"1. Bir tanımlayıcıyı (değişken yada fonksiyon ismi) yanlış yerde kullandın.\n" +"1. Bir tanımlayıcıyı (değişken ya da fonksiyon ismi) yanlış yerde " +"kullandınız.\n" "2. [code]var[/code], [code]func[/code], [code]for[/code], ya da " -"[code]signal[/code] gibi bir anahtar kelime yazdın, ama bunun devamına bir " -"isim eklemedin.\n" -"3. Bir fonksiyon tanımı yazdın ama iki nokta üstüste'den önce parantezleri " -"eklemedin." +"[code]signal[/code] gibi bir anahtar kelime yazdınız, ama bunun devamına bir " +"isim eklemediniz.\n" +"3. Bir fonksiyon tanımı yazdınız ama iki nokta üst üste 'den önceki " +"parantezleri eklemediniz." #. Reference: MISPLACED_IDENTIFIER #: script_checking/error_database.csv:86 @@ -320,21 +322,20 @@ msgid "" "function definition, [code]for[/code] loop, or a line starting with " "[code]if[/code], [code]elif[/code], or [code]else[/code]." msgstr "" -"Eğer bir hata sana bir şey beklediğini (expected) söylüyorsa, " -"[code]var[/code], [code]func[/code], [code]for[/code], ya da " -"[code]signal[/code] gibi bir anahtar kelimeden sonra bir isim yazmayı " -"unuttuğun için kod geçersiz hale gelmiştir. Ya da fonksiyon tanımlarken " -"parantezleri unutmuşsundur. Eksik olan ismi yada parantezleri ekleyerek " -"hatayı giderebilirsin.\n" +"Eğer bir hata size bir şey beklediğini (expected) söylüyorsa, [code]var[/" +"code], [code]func[/code], [code]for[/code], ya da [code]signal[/code] gibi " +"bir anahtar kelimeden sonra bir isim yazmayı unuttuğunuz için kod geçersiz " +"hale gelmiştir. Ya da fonksiyon tanımlarken parantezleri unutmuşsunuzdur. " +"Eksik olan ismi ya da parantezleri ekleyerek hatayı giderebilirsiniz.\n" "\n" -"Eğer hata sana beklenmedik bir şey yaptığını söylerse (unexpected), " -"[code]var[/code], [code]func[/code], [code]for[/code] vb. anahtar bir " -"kelimeyi unutmuşsundur.\n" +"Eğer hata size beklenmedik bir şey yaptığınızı söylerse (unexpected), " +"[code]var[/code], [code]func[/code], [code]for[/code] gibi bir anahtar bir " +"kelimeyi unutmuşsunuzdur.\n" "\n" -"Bir diğer olasılık ise, şunları yazarken en sonda iki nokta üstüste'yi " -"eklemen gerekmesidir: fonksiyon tanımlarken, ya da [code]for[/code] döngüsü, " -"[code]if[/code], [code]elif[/code], ve ya [code]else[/code] ile başlayan " -"satırlarda." +"Bir diğer olasılık ise, şunları yazarken en sonda iki nokta üst üste " +"eklemenizin gerekmesidir: fonksiyon tanımlarken, ya da [code]for[/code] " +"döngüsü, [code]if[/code], [code]elif[/code], veya [code]else[/code] ile " +"başlayan satırlarda." #. Reference: MISPLACED_TYPE_IDENTIFIER #: script_checking/error_database.csv:91 @@ -350,17 +351,17 @@ msgid "" "It also occurs when you write an arrow ([code]->[/code]) after the " "parentheses of a function definition but do not follow it with a type name." msgstr "" -"Bu hata, bir yerlerde bir tip tanımını unuttuğunu söyler. Bir tip, " -"[code]int[/code], [code]float[/code], [code]String[/code], [code]Array[/code]" -", [code]Vector2[/code], ve bunlar gibi veri yapılarını temsil eden daha pek " -"çok tanımlayıcı olabilir.\n" +"Bu hata, bir yerlerde bir tip tanımını unuttuğunuzu söyler. Bir tip, " +"[code]int[/code], [code]float[/code], [code]String[/code], [code]Array[/" +"code], [code]Vector2[/code], ve bunlar gibi veri yapılarını temsil eden daha " +"pek çok tanımlayıcı olabilir.\n" "\n" -"Çoğunlukla, bu hatayı aldığında, bir değişken isminden sonra iki nokta " -"üstüste yazmış, ama bunun devamında bir tip ismi belirtmemişsindir.\n" +"Çoğunlukla, bu hatayı aldığınızda, bir değişken isminden sonra iki nokta üst " +"üste yazmış, ama bunun devamında bir tip ismi belirtmemişsinizdir.\n" "\n" -"Bu durum ayrıca, fonksiyon tanımlerken parantezden sonra bir ok " -"([code]->[/code]) yazmış ama bunu bir tip ismi ile bitirmemişsindir (" -"fonksiyonun dönüş tipi)." +"Bu durum ayrıca, fonksiyon tanımlarken parantezden sonra bir ok ([code]->[/" +"code]) yazmış ama bunu bir tip ismi ile bitirmemiş olduğunuzda ortaya çıkar " +"(fonksiyonun dönüş tipi)." #. Reference: MISPLACED_TYPE_IDENTIFIER #: script_checking/error_database.csv:91 @@ -369,10 +370,10 @@ msgid "" "(in the case of function return types), inside parentheses (for export " "types), or after the [code]as[/code] keyword." msgstr "" -"Bunu çözmek için, iki nokta üstüste ve ok'tan (fonksiyon bir dönüş tipine " -"sahipse) sonra, parantezlerin içinde (dışa aktarım, export, tipleri için), " -"ve ya [code]as[/code] anahtar kelimesinden sonra, ilgili tip ismini " -"yazmalısın." +"Bunu çözmek için, iki nokta üst üste ve ok 'tan (fonksiyon bir dönüş tipine " +"sahipse) sonra, parantezlerin içinde (dışa aktarım -export- tipleri için), " +"veya [code]as[/code] anahtar kelimesinden sonra, ilgili tip ismini " +"yazmalısınız." #. Reference: NONEXISTENT_IDENTIFIER #: script_checking/error_database.csv:100 @@ -386,14 +387,15 @@ msgid "" "The other cause for this error is that you didn't define the variable, " "function, or class you're trying to access." msgstr "" -"Kullanmaya çalıştığın değişken, fonksiyon ismi, ve ya sınıf ismi tanımlı " -"değil.\n" +"Kullanmaya çalıştığınız değişken ismi, fonksiyon ismi veya sınıf ismi " +"tanımlı değil.\n" "\n" -"Bu hatayı aldığında genellikle yazım hatası yapmışsındır. Belki iki harfin " -"yeri değişti, yada bir harfi unuttun... bunu farketmek çoğunlukla zordur.\n" +"Bu hatayı aldığınızda genellikle yazım hatası yapmışsınızdır. Belki iki " +"harfin yerini karıştırdınız, ya da bir harfi unuttunuz... bunu fark etmek " +"çoğunlukla zordur.\n" "\n" -"Bu hatanın bir diğer sebebi de, erişmeye çalıştığın değişkeni, fonksiyonu, " -"ya da sınıfı tanımlamamış olmandır." +"Bu hatanın bir diğer sebebi de erişmeye çalıştığınız değişkeni, fonksiyonu, " +"ya da sınıfı tanımlamamış olmanızdır." #. Reference: NONEXISTENT_IDENTIFIER #: script_checking/error_database.csv:100 @@ -407,13 +409,14 @@ msgid "" "variable, function, or class you are referring to." msgstr "" "Bu hatayı çözmek için, tüm satırları yazım hataları için üç kere kontrol " -"etmelisin.\n" +"etmelisiniz.\n" "\n" -"Münkünse, ilgili değişken yada fonksiyon tanımına git, ismine çift tıkla, " -"kopyala, ve hatayı daha iyi görebileceğin boş bir alana yapıştır.\n" +"Mümkünse, ilgili değişken ya da fonksiyon tanımına gidin, ismine çift " +"tıklayın, kopyalayın ve hatayı daha iyi görebileceğiniz boş bir alana " +"yapıştırın.\n" "\n" -"Eğer bir yazım hatası göremiyorsan, ilgili değişkeni, fonksiyonu, ya da " -"sınıfı tanımladığından emin olmalısın." +"Eğer bir yazım hatası göremiyorsanız, ilgili değişkeni, fonksiyonu, ya da " +"sınıfı tanımladığınızdan emin olmalısınız." #. Reference: MISPLACED_KEYWORD #: script_checking/error_database.csv:105 @@ -425,8 +428,9 @@ msgid "" "loop.\" And the [code]break[/code] keyword means \"end the loop right now " "and jump to the first line of code after the loop block." msgstr "" -"[code]break[/code] ve ya [code]continue[/code] gibi bazı anahtar kelimeleri " -"sadece bir döngünün içinde kulanabilirsin. Bunlar döngü dıında geçersizdir.\n" +"[code]break[/code] veya [code]continue[/code] gibi bazı anahtar kelimeleri " +"sadece bir döngünün içinde kullanabilirsiniz. Bunlar döngü dışında " +"geçersizdir.\n" "\n" "[code]continue[/code] anahtar kelimesi \"döngünün sonraki yinelemesine " "sıçra\" anlamına gelir. Ve [code]break[/code] anahtar kelimesi \"döngüyü " @@ -442,12 +446,12 @@ msgid "" "at fault. You may need to insert one or more leading tab characters to the " "keyword." msgstr "" -"Eğer bu anahtar kelimelerden birini döngü dışında yazmışsan, hemen kaldırman " -"gerekir.\n" +"Eğer bu anahtar kelimelerden birini döngü dışında yazmışsanız, hemen " +"kaldırmanız gerekiyor.\n" "\n" -"Eğer zaten döngü içinde kullandıysan, bu durumda kodun girinti miktarı " -"hatalıdır. Kelimenin olduğu satır başına bir yada iki tane daha sekme " -"karakteri eklemelisin." +"Eğer zaten döngü içinde kullandıysanız, bu durumda kodun girinti miktarı " +"hatalıdır. Kelimenin olduğu satırın başına bir ya da iki tane daha sekme " +"karakteri eklemelisiniz." #. Reference: EXPECTED_CONSTANT_EXPRESSION #: script_checking/error_database.csv:110 @@ -459,12 +463,12 @@ msgid "" "computer will reject function calls and variables where it needs a constant " "expression." msgstr "" -"Bilgisayar sana sabit bir ifadeden bahsediyorsa (constant), senden " -"sabitlenmiş bir değer, sabit bir hesaplama, ya da ar olan bir sabitin ismini " -"istiyor demektir.\n" +"Bilgisayar size sabit bir ifadeden bahsediyorsa (constant), sizden " +"sabitlenmiş bir değer, sabit bir hesaplama, ya da var olan bir sabitin " +"ismini istiyor demektir.\n" "\n" "Diğer bir deyişle, hiç değişmeyecek bir şey istiyor demektir. Bilgisayarın, " -"sabit ifadeler beklediği fonksiyon çağrıları yada değişkenleri geri çevirme " +"sabit ifadeler beklediği fonksiyon çağrıları ya da değişkenleri geri çevirme " "sebebi bundandır." #. Reference: EXPECTED_CONSTANT_EXPRESSION @@ -476,12 +480,12 @@ msgid "" "You can also use arithmetic operators like multiplications (*), additions " "(+), and so on." msgstr "" -"Fonksiyon çağrısı ya da değişkenleri şunlar gibi sabit değerlerle " -"değiştirmelisin: bir tam sayı, ondalıklı sayı, dize, vektör, ön tanımlı " +"Fonksiyon çağrısını ya da değişkenlerini şunlar gibi sabit değerlerle " +"değiştirmelisiniz: bir tam sayı, ondalıklı sayı, dize, vektör, ön tanımlı " "dizi, vb.\n" "\n" -"Bunlarla çarpma(*), toplama(+) ve benzeri aritmetik işlemleri de " -"kullanabilirsin." +"Bunlarla çarpma (*), toplama (+) ve benzeri aritmetik işlemleri de " +"kullanabilirsiniz." #. Reference: INVALID_CLASS_DECLARATION #: script_checking/error_database.csv:115 @@ -492,8 +496,8 @@ msgid "" "We typically write class names in PascalCase: with a capital letter at the " "start of every word that composes the class name." msgstr "" -"Yeni bir sınıf tanımlarken, belirli bir kalıbı takip etmelisin. Bir harf ile " -"başlayan düz metin bir isim yazmalısın (ingilizce harflerle)\n" +"Yeni bir sınıf tanımlarken, belirli bir kalıbı takip etmelisiniz. Bir harf " +"ile başlayan düz yazı bir isim yazmalısınız (genelde İngilizce harflerle)\n" "\n" "Sınıf isimlerinde, özgün olarak PascalCase kullanırız: sınıf ismini " "oluşturan her kelime, ilk harfi büyük olacak şekilde birleşir." @@ -508,10 +512,10 @@ msgid "" "You can optionally use numbers in the name, but not in the first position." msgstr "" "Bu hatayı düzeltmek için, 'extends' ya da 'class_name' anahtar " -"kelimelerinden sonra her ne yazdıysan, ilk harfi büyük olan ve boşluk " -"içermeyen bir isimle değiştirmelisin.\n" +"kelimelerinden sonra her ne yazdıysanız, ilk harfi büyük olan ve boşluk " +"içermeyen bir isimle değiştirmelisiniz.\n" "\n" -"İsteğe bağlı olarak ismin içinde numralar kullanabilirsin, ama kesinlikle " +"İsteğe bağlı olarak ismin içinde numaralar kullanabilirsiniz, ama kesinlikle " "ilk başta olmasınlar (bir harf ile başlamalı)." #. Reference: DUPLICATE_DECLARATION @@ -523,12 +527,12 @@ msgid "" "Perhaps the function or variable already exists in the current code file, " "but it may also be in a parent class that this GDScript code extends." msgstr "" -"Zaten var olan bir fonksiyon yada değişkeni tanımlamaya çalışıyorsun. Bunu " -"yapamazsın.\n" +"Zaten var olan bir fonksiyon ya da değişkeni tanımlamaya çalışıyorsunuz. " +"Bunu yapamazsınız.\n" "\n" -"Bu kod dosyasında bulunan fonksiyon ya da değişken, belki de bu GDScript " -"kodunun içe aktarıp genişlettiği (extends) ana sınıfın içerisinde de " -"tanımlanmıştır." +"Bu aktif kod dosyasında bulunan bir fonksiyon ya da değişken, belki de bu " +"GDScript kodunun içe aktarıp genişlettiği (extends) ana sınıfın içerisinde " +"de tanımlanmıştır." #. Reference: DUPLICATE_DECLARATION #: script_checking/error_database.csv:120 @@ -539,11 +543,11 @@ msgid "" "When that happens, you need to either rename your function or variable to " "one that will not collide with an existing one or remove this line of code." msgstr "" -"Uygulama içinde, senin yazdığın kod, senin göremediğin ama Godot içinde " -"gömülü gelen kodları içe aktarıp genişletir (extends).\n" +"Uygulama içinde yazdığınız kodlar, sizin göremediğiniz ama Godot içinde " +"gömülü gelen bazı kodları içe aktarıp genişletir (extends).\n" "\n" -"Bu olduğunda, yazdığın fonksiyon yada değişken ismini, var olanlarla " -"çakışmayacak şekilde değiştirmeli, veya bu kod satırını tamamen silmelisin." +"Bu olduğunda, yazdığınız fonksiyon ya da değişken ismini, var olanlarla " +"çakışmayacak şekilde değiştirmeli veya bu kod satırını tamamen silmelisiniz." #. Reference: DUPLICATE_SIGNAL_DECLARATION #: script_checking/error_database.csv:125 @@ -553,10 +557,10 @@ msgid "" "Perhaps the signal already exists in the current code file, but it may also " "be in a parent class that this GDScript code extends." msgstr "" -"Zaten var olan bir sinyali (signal) yeniden tanımlamaya çalışıyorsun. Bunu " -"yapamazsın.\n" +"Zaten var olan bir sinyali (signal) yeniden tanımlamaya çalışıyorsunuz. Bunu " +"yapamazsınız.\n" "\n" -"Yazdığın kod dosyasındaki bu sinyal, belki de bu GDScript kodunun içe " +"Yazdığınız kod dosyasındaki bu sinyal, belki de bu GDScript kodunun içe " "aktarıp genişlettiği (extends) ana sınıfta da vardır." #. Reference: DUPLICATE_SIGNAL_DECLARATION @@ -568,11 +572,11 @@ msgid "" "When that happens, you need to either rename your signal to one that will " "not collide with an existing one or remove this line of code." msgstr "" -"Uygulama içinde, senin yazdığın kod, senin göremediğin ama Godot içinde " -"gömülü gelen kodları içe aktarıp genişletir (extends).\n" +"Uygulama içinde yazdığınız kodlar, sizin göremediğiniz ama Godot içinde " +"gömülü gelen bazı kodları içe aktarıp genişletir (extends).\n" "\n" -"Bu olduğunda, yazdığın fonksiyon yada değişken ismini, var olanlarla " -"çakışmayacak şekilde değiştirmeli, ya da bu kod satırını tamamen silmelisin." +"Bu olduğunda, yazdığınız fonksiyon ya da değişken ismini, var olanlarla " +"çakışmayacak şekilde değiştirmeli ya da bu kod satırını tamamen silmelisiniz." #. Reference: SIGNATURE_MISMATCH #: script_checking/error_database.csv:130 @@ -588,16 +592,16 @@ msgid "" "also to have two arguments. If you use type hints in your function " "definitions, the argument types must match the parent class." msgstr "" -"Tanımlayama çalıştığın fonksiyon, ana sınıf içinde zaten tanımlı durumda, " -"yani senin tanımlaman, ana sınıftaki fonksiyonun üzerine yazıyor.\n" +"Tanımlamaya çalıştığınız fonksiyon, ana sınıfın içinde zaten tanımlı " +"durumda, yani sizin tanımlamanız ana sınıftaki fonksiyonun üzerine yazıyor.\n" "\n" -"Ana sınıfın bir fonksiyonunun üzerine yazacaksan, yeni fonksiyonu ana " -"sınıftaki ile eşdeğer olmalıdır. Yeni fonksiyonun paramatrelerinin sayısı ve " +"Ana sınıfın bir fonksiyonunun üzerine yazacaksanız, yeni fonksiyon ana " +"sınıftaki ile eşdeğer olmalıdır. Yeni fonksiyonun parametrelerinin sayısı ve " "tipleri, ana sınıfın fonksiyonu ile aynı olmalıdır.\n" "\n" -"Örneğin, ana sınıfta iki tane girilen değer varsa, senin fonksiyonun da iki " -"girilen değişken kullanmalıdır. Fonksiyon tanımında tip belirteçleri " -"kullanıyorsan, girdi değişkenleri ana sınıftakilerle aynı tipte olmalıdır." +"Örneğin, ana sınıfta iki tane girilen değer varsa, sizin fonksiyonunuz da " +"iki girilen değişken kullanmalıdır. Fonksiyon tanımında tip belirteçleri " +"kullanıyorsanız, girdi değişkenleri ana sınıftakilerle aynı tipte olmalıdır." #. Reference: SIGNATURE_MISMATCH #: script_checking/error_database.csv:130 @@ -607,8 +611,9 @@ msgid "" "number and type of parameters as the parent class." msgstr "" "Ana sınıfın fonksiyonunu ve nasıl tanımlandığını, kod başvuru kaynaklarından " -"kontrol etmelisin. Sonra, fonksiyon tanımını, girdi değişkenlerinin sayıları " -"ve tipleri ana sınıftaki ile aynı olacak şekilde yeniden düzenlemelisin." +"kontrol etmelisiniz. Sonra, fonksiyon tanımını, girdi değişkenlerinin " +"sayılarını ve tiplerini ana sınıftaki ile aynı olacak şekilde yeniden " +"düzenlemelisiniz." #. Reference: INVALID_ARGUMENTS #: script_checking/error_database.csv:131 @@ -619,7 +624,7 @@ msgid "" msgstr "" "Bu hata sınıfı, fonksiyonları, ya yanlış sayıda girdi değişkeni ile " "çağırmak, ya da yanlış girdi değişkeni tipi kullanmak ile ilgilidir. Hata " -"mesajının kendisini okuyup neyin yanlış olduğunu görmen gerekiyor." +"mesajının kendisini okuyup neyin yanlış olduğunu görmeniz gerekiyor." #. Reference: INVALID_ARGUMENTS #: script_checking/error_database.csv:131 @@ -629,11 +634,11 @@ msgid "" "need, you need to check the code reference. It will show you the function " "definition and the mandatory arguments." msgstr "" -"Bunu çözmek için, ya fonksiyona gönderdiğin değişkenlere ekleme yapmalı, ya " -"bunlardan bir kaçını çıkarmalı, ya da bunların değerlerini değiştirmelisin. " -"Tam olarak kaç tane girdi değişkeni gerektiğini görmek için kod başvuru " -"kaynaklarına bakmak gerekiyor. Bunlar sana fonksiyonun nasıl tanımlandığını " -"ve gerekli olan girdi değşkenlerini gösterecektir." +"Bunu çözmek için, ya fonksiyona gönderdiğiniz değişkenlere ekleme yapmalı, " +"ya bunlardan birkaçını çıkarmalı, ya da bunların değerlerini " +"değiştirmelisiniz. Tam olarak kaç tane girdi değişkeni gerektiğini görmek " +"için kod başvuru kaynaklarına bakmanız gerekiyor. Bunlar size fonksiyonun " +"nasıl tanımlandığını ve gerekli olan girdi değişkenlerini gösterecektir." #. Reference: TYPE_MISMATCH #: script_checking/error_database.csv:142 @@ -651,18 +656,19 @@ msgid "" "You'll need to read the error message to see what is not matching because " "there are many possible cases." msgstr "" -"Kodundaki bütün değerler, belirli bir tipe sahiptir. Bunlar bir tam sayı " +"Kodunuzdaki bütün değerler, belirli bir tipe sahiptir. Bunlar bir tam sayı " "(int), bir ondalık sayı (float), bir dize (String), ve benzeri olabilirler. " -"Mümkün olan tonlarca farklı tip var, ve hatta kendine ait bir tip " -"tanımlayabilirsin.\n" +"Mümkün olan tonlarca farklı tip var ve hatta kendinize ait bir tip " +"tanımlayabilirsiniz.\n" "\n" -"Bir işlem yaptığında, bilgisayar kullandığın bu tipleri karşılaştırır.\n" +"Bir işlem yaptığınızda, bilgisayar kullandığınız bu tipleri karşılaştırır.\n" "\n" "Bazı tipler uyumludur, bazıları uyumsuz. Örnek olarak, bir tam sayı ile bir " -"dizeyi doğrudan toplayamazsın. İlk önce sayıyı bir dizeye çevirmen gerekir.\n" +"dizeyi doğrudan toplayamazsınız. İlk önce sayıyı bir dizeye çevirmeniz " +"gerekir.\n" "\n" "Bu konuda o kadar çok olasılık var ki, nelerin uyuşmadığını görmek için hata " -"mesajını okuman gerekiyor." +"mesajını okumanız gerekiyor." #. Reference: TYPE_MISMATCH #: script_checking/error_database.csv:142 @@ -678,16 +684,17 @@ msgid "" "while you can add two 2D vectors, you can't add a whole number or text to a " "2D vector." msgstr "" -"Eğer hata, atamaya çalıştığın değerin, değişken ile uyuşmadığını söylüyorsa, " -"sorun eşitlik (=) işaretinin sağ tarafındadır.\n" +"Eğer hata, atamaya çalıştığınız değerin, değişken ile uyuşmadığını " +"söylüyorsa (value type), sorun eşitlik (=) işaretinin sağ tarafındadır.\n" "\n" -"Eğer hata, geri dönüş tipinin fonksiyon ile uyuşmadığını söylerse, bu " -"durumda sorun \"return\" anahtar kelimesinden sonra yazılan değerdedir.\n" +"Eğer hata, geri dönüş tipinin fonksiyon ile uyuşmadığını söylerse (return " +"type), bu durumda sorun \"return\" anahtar kelimesinden sonra yazılan " +"değerdedir.\n" "\n" "Eğer bilgisayar, geçersiz bir işlenen (operand) var diyorsa, böyle bir " -"işlemin kullanmaya çalıştığın tip için tanımlı olmadığı anlamındadır. " +"işlemin kullanmaya çalıştığınız tip için tanımlı olmadığı anlamındadır. " "Örneğin, iki tane 2D vektörü birbirine ekleyebilirken, bir 2D vektörü ile " -"bir sayı ya da yazıyı toplayamazsın." +"bir sayıyı ya da yazıyı toplayamazsınız." #. Reference: TYPE_CANNOT_BE_INFERRED #: script_checking/error_database.csv:147 @@ -699,11 +706,11 @@ msgid "" "When that happens, you need to specify the type yourself or remove type " "inference altogether for this variable." msgstr "" -"GDScript, tip çıkarımı yapabilir. Bilgisayar, üzerinde çalıştığın değer " +"GDScript, tip çıkarımı yapabilir. Bilgisayar, üzerinde çalıştığınız değer " "tipini kendiliğinden tanıyabilir. Yine de bazı durumlarda bunu başaramaz.\n" "\n" -"Bu olduğunda, ilgili tip tanımını kendin yapabilir veya bu değişken için tip " -"çıkarımını tümüyle kaldırabilirsin." +"Bu olduğunda, ilgili tip tanımını kendiniz yapabilir veya bu değişken için " +"tip çıkarımını tümüyle kaldırabilirsiniz." #. Reference: TYPE_CANNOT_BE_INFERRED #: script_checking/error_database.csv:147 @@ -716,11 +723,11 @@ msgid "" "system's benefits." msgstr "" "Bu hatayı çözmenin en kolay yolu, bu değişkenden ya da fonksiyonun girdi " -"değişkenlerinden tipleri kaldırmak. Aksi durumda, iki nokta üstüsteden sonra " -"tip değerini elle girerek tanımlamalısın.\n" +"değişkenlerinden tipleri kaldırmak. Aksi durumda, iki nokta üst üsteden " +"sonra tip değerini elle girerek tanımlamalısınız.\n" "\n" "Tip sisteminin nimetlerinden yararlanmak için, mümkün olduğu kadar tipleri " -"belirtmeni tavsiye ediyoruz." +"belirtmenizi tavsiye ediyoruz." #. Reference: RETURN_VALUE_MISMATCH #: script_checking/error_database.csv:153 @@ -734,13 +741,14 @@ msgid "" "2. You specified a return type for your function, but you are not returning " "a value in all possible branches (if, elif, and else blocks) or at the end." msgstr "" -"Fonksiyonunun dönüş değerinde bir sorun var. Burada iki durum söz konusu:\n" +"Fonksiyonunuzun dönüş değerinde bir sorun var. Burada iki durum söz konusu:\n" "\n" -"1. Fonksiyonun bir boş (void) fonksiyondur, ve herhangi bir değer " -"döndürmemelidir. Bu tip fonksiyonlar, '-> void' söz yazımı ile tanımlanan " -"fonksiyonlar ile sınıf yapıcılardır ('_init()').\n" -"2. Fonksiyonun için bir dönüş tipi tanımladın, ama gerekli tüm kollardan (" -"if, elif, ve else kalıpları) yada en sonda bir değer geri döndürmüyorsun." +"1. Fonksiyonunuz bir boş (void) fonksiyondur ve herhangi bir değer " +"döndürmemelidir. Bu tip fonksiyonlar, '-> void' söz dizimiyle tanımlanan " +"fonksiyonlar ve sınıf yapıcılarıdır ('_init()').\n" +"2. Fonksiyonunuz için bir dönüş tipi tanımladınız, ama gerekli tüm kollardan " +"(if, elif ve else kalıpları) ya da en son satırdan bir değer geri " +"döndürmüyorsunuz." #. Reference: RETURN_VALUE_MISMATCH #: script_checking/error_database.csv:153 @@ -752,12 +760,12 @@ msgid "" "When you use a return type, you must always return something at the end of " "the function or in every branch (if, elif, and else block) of the function." msgstr "" -"fonksiyonun 'void' ise, geriye bir değer döndürmemelisin. 'return' anahtar " -"kelimesini, fonksiyonu erken sonlandırmak için kullanabilirsin, ama bunun " -"arkasına hiç bir şey yazmamalısın.\n" +"Fonksiyonunuz 'void' ise (boş), geriye bir değer döndürmemelisiniz. 'return' " +"anahtar kelimesini, fonksiyonu erken sonlandırmak için kullanabilirsiniz, " +"ama bunun arkasına hiçbir şey yazmamalısınız.\n" "\n" -"Bir dönüş tipi kullanıyorsan, ya fonksiyon bitiminde ya da fonksiyonun her " -"bir kolunda (if, elif, and else) aynı şekilde dönüş yapmalısın." +"Bir dönüş tipi kullanıyorsanız, ya fonksiyon bitiminde ya da fonksiyonun her " +"bir kolunda (if, elif, and else) aynı şekilde dönüş yapmalısınız." #. Reference: INVALID_NO_CATCH #: script_checking/error_database.csv:154 @@ -765,20 +773,22 @@ msgid "" "Godot was unable to load your script, yet the language checker found nothing " "wrong." msgstr "" -"Godot, betik dosyanı yüklemeyi başaramadı, ama yine de dil kontrolcüsü " +"Godot, betik dosyanızı yüklemeyi başaramadı, ama yine de dil kontrolcüsü " "herhangi bir sorun tespit edemedi." #. Reference: INVALID_NO_CATCH #: script_checking/error_database.csv:154 msgid "" "Please click on the \"report\" button at the top and please let us know." -msgstr "Lütfen yukarıdaki \"bildir\" düğmesine tıkla ve bize haber ver." +msgstr "" +"Lütfen yukarıdaki \"bildir\" düğmesine tıklayın ve bunu bize haber verin." #. Reference: RECURSIVE_FUNCTION #: script_checking/error_database.csv:155 msgid "You called a function inside itself. This will loop forever." msgstr "" -"Bir fonksiyonu kendi içerisinde çağırdın. Bu sonsuz döngüye sebep olacak." +"Bir fonksiyonu kendi içerisinde çağırdınız. Bu sonsuz döngüye sebep " +"olacaktır." #. Reference: RECURSIVE_FUNCTION #: script_checking/error_database.csv:155 @@ -786,9 +796,9 @@ msgid "" "There are valid reasons for using recursive functions, but none of them are " "part of this course, so this cannot be a valid solution." msgstr "" -"Özçağrılı (recursive) fonksiyonlar kullanmak için geçerli pek çok sebep var, " -"ama bunların hiç biri bu kursun parçası değil, bu nedenle çözümün geçerli " -"bir çözüm değil." +"Öz çağrılı (recursive) fonksiyonlar kullanmak için geçerli pek çok sebep " +"var, ama bunların hiçbiri bu kursun parçası değil, bu nedenle çözümünüz " +"geçerli bir çözüm değildir." #. Reference: UNEXPECTED_EOL #: script_checking/error_database.csv:157 @@ -798,10 +808,10 @@ msgid "" "The most common case is when you forget to close a string: you have opening " "quotes, but you forget to add a matching closing quote." msgstr "" -"Bilgisayar, kodun son satırına ulaştı, ama bu satırda yazım hatası var.\n" -"En yaygın durum, yukarıda bir yerlerde bir dizeyi kapatmayı unutmandır: " -"başlangıç tırnak işaretini koyarsın, ama karşılık gelen kapanış tırnağını " -"unutursun." +"Bilgisayar, kodun son satırına ulaştı, ama bu satırda bir yazım hatası var.\n" +"En yaygın durum, yukarıda bir yerlerde bir dizeyi kapatmayı unutmanızdır: " +"başlangıç tırnak işaretini koyarsınız, ama karşılık gelen kapanış tırnağını " +"unutursunuz." #. Reference: UNEXPECTED_EOL #: script_checking/error_database.csv:157 @@ -810,13 +820,14 @@ msgid "" "character you used to start the string is the same as the one you used to " "close the string." msgstr "" -"Tırnak işareti karakterini unutmadığını, ya da başlayan ve kapatanın aynı " -"olduğunu iki defa kontrol et. (tek, çift ve ters tırnak işaretleri)." +"Tırnak işareti karakterini unutmadığınızı, ya da başlayan ve kapatanın " +"tırnakların aynı olduğunu iki defa kontrol edin. (tek, çift ve ters tırnak " +"işaretleri)." #. Reference: CANT_GET_INDEX #: script_checking/error_database.csv:160 msgid "The sub-variable you are trying to access does not exist." -msgstr "Kullanmaya çalıştığın alt-değişken tanımlı değil." +msgstr "Kullanmaya çalıştığınız alt-değişken tanımlı değil." #. Reference: CANT_GET_INDEX #: script_checking/error_database.csv:160 @@ -827,8 +838,8 @@ msgid "" "Ensure that you don't have a capital letter where you should have a " "lowercase letter and vice versa." msgstr "" -"Muhtemelen, kullanmaya çalıştığın alt-değişkenin isminde bir yazım hatası " -"yaptın.\n" +"Muhtemelen, kullanmaya çalıştığınız alt-değişkenin isminde bir yazım hatası " +"yaptınız.\n" "\n" -"Küçük harf kullanman gereken yerde büyük harf kullanmadığına, ya da tam " -"tersi, emin ol." +"Küçük harf kullanmanız gereken yerde büyük harf kullanmadığınıza emin olun, " +"ya da tam tersi." diff --git a/i18n/tr/glossary_database.po b/i18n/tr/glossary_database.po index 39983bef..bb44b1bf 100644 --- a/i18n/tr/glossary_database.po +++ b/i18n/tr/glossary_database.po @@ -8,17 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-07-10 17:11+0000\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-10-05 11:11+0000\n" "Last-Translator: Yılmaz Durmaz \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0-dev\n" +"X-Generator: Weblate 5.1-dev\n" "Generated-By: Babel 2.9.1\n" #. Reference: member function @@ -44,14 +44,14 @@ msgid "" msgstr "" "Üye fonksiyonlar, diziler (array), dizeler (string), ve sözlükler " "(dictionary) gibi belirli bir değer tipine bağlanmış fonksiyonlardır. " -"Bunlara ayrıca metodlar da denilir.\n" +"Bunlara ayrıca metotlar da denilir.\n" "\n" -"Örneğin, dizilerin [code]array.append()[/code] (ekleme yapma) gibi üye " +"Örneğin, dizilerin [code]array.append()[/code] (arkaya ekleme) gibi üye " "fonksiyonları vardır.\n" "\n" "Böyle bir fonksiyonu çalıştırmak için, mesela bir dizi üzerinden erişirken, " -"yukarıda görüldüğü gibi bir erişim işleci kullanılır ([code].[/code], nokta " -"işareti)." +"yukarıda görüldüğü gibi bir erişim işleci kullanmalısınız ([code].[/code], " +"nokta işareti)." #. Reference: member variable #: course/glossary.csv:9 @@ -77,7 +77,7 @@ msgstr "" "Üye değişkenler, belirli bir değer tipine bağlanmış değişkenlerdir; örneğin " "bir vektörün (vector) [code]x[/code] ve [code]y[/code] alt-değişkenleri " "gibi. Bunları ayrıca değer tipinin, mesela vektörün, [i]özellikleri[/i] veya " -"[i]alanları[/i] olarakta isimlendiririz.\n" +"[i]alanları[/i] olarak da isimlendiririz.\n" "\n" "Bir üye değişkene erişmek için, önce ana değişken ismini ve ardından erişim " "işlecini ([code].[/code], nokta işareti) yazmanız gerekir. Örneğin " @@ -91,7 +91,7 @@ msgstr "alınan değişken, parametre" #. Reference: parameter #: course/glossary.csv:12 msgid "parameters" -msgstr "Alınan değişkenler, Parametreler" +msgstr "alınan değişkenler, parametreler" #. Reference: parameter #: course/glossary.csv:12 @@ -105,7 +105,7 @@ msgstr "" "oluşturulan bir değişkendir.\n" "\n" "Bu bize, fonksiyon içinde değişebilen farklı değerler ile fonksiyonu farklı " -"şekillerde yeniden kullanmayı sağlar." +"şekillerde yeniden kullanmamızı sağlar." #. Reference: radian #: course/glossary.csv:17 @@ -132,7 +132,7 @@ msgstr "" "Bir radyan, bir dairenin çevresini temel alan bir açı ölçme birimidir.\n" "\n" "Günlük hayatımızda daha çok \"derece\" kullanmaya meyilliyiz, ama bilgisayar " -"programcılığında, ve özellikle oyunlarda, radyan daha yaygındır.\n" +"programcılığında ve özellikle oyunlarda, radyan daha yaygındır.\n" "\n" "[code]2 * PI[/code] radyanlık bir açı 360 dereceye karşılık gelir. Ve " "[code]PI[/code] radyanlık açı da 180 derecedir." @@ -157,12 +157,12 @@ msgid "" "The computer uses types to determine which operations are valid between two " "values and when they're undefined." msgstr "" -"Bilgisayar programcılığında, bir tip, bir değerin sınıfıdır. Mesela, " -"[code]3[/code], [code]11[/code], ve [code]255462[/code] gibi tam sayıların " -"hepsi [code]int[/code] (integer'ın kısaltması) tipindedir.\n" +"Bilgisayar programcılığında bir tip, bir değerin sınıfıdır. Mesela, [code]3[/" +"code], [code]11[/code], ve [code]255462[/code] gibi tam sayıların hepsi " +"[code]int[/code] (integer'ın kısaltması) tipindedir.\n" "\n" -"Bilgisayarlar, iki değer arasında hangi işlemlerin geçerli olduğunu, ve " -"bunların ne zaman tanımsız olduğunu belirlerlerken tipleri kullanır." +"Bilgisayarlar, iki değer arasında hangi işlemlerin geçerli olduğun ve " +"bunların ne zaman tanımsız olduğunu belirlerken tipleri kullanır." #. Reference: iteration #: course/glossary.csv:23 @@ -184,11 +184,11 @@ msgid "" "When talking of algorithms, an iteration can mean a full pass of the " "algorithm on a data set." msgstr "" -"Bilgisayar kodunda, bir yineleme, bir işlem yada kodun bir kere " +"Bilgisayar kodunda bir yineleme, bir işlem ya da kodun bir kere " "tekrarlamasıdır. Bu terimi genellikle döngülerde kullanırız; bir yineleme " "döngüdeki kodun bir kere çalışmasıdır.\n" "\n" -"Algoritmalardan bahsederken, bir yineleme, bir veri kümesi üzerinde " +"Algoritmalardan bahsederken ise, bir yineleme, bir veri kümesi üzerinde " "algoritmanın bir tam geçiş yapması anlamını taşıyabilir." #. Reference: vector @@ -215,11 +215,11 @@ msgid "" "you will see, they'll simplify code tremendously." msgstr "" "Matematikte, bir vektör (vector) bir numara listesidir. Oyunlarda, " -"genellikle 2D ve 3D vektörleri kullanırız; yani iki ve üç numaralık listeler." -"\n" +"genellikle 2B ve 3B vektörleri kullanırız; yani iki ve üç numaradan oluşan " +"listeler.\n" "\n" "Bunları, yön ve büyüklüğü ya da uzaysal yoğunluğu betimlemek için " -"kullanırız. Örneğin, bir karakter yada aracın hareket yönünü ve hızını " +"kullanırız. Örneğin, bir karakter ya da aracın hareket yönünü ve hızını " "betimlerken bir vektör kullanırız.\n" "\n" "Vektörler, oldukça soyut olduklarından, ilk başta biraz caydırıcı " @@ -229,12 +229,12 @@ msgstr "" #. Reference: argument #: course/glossary.csv:37 msgid "argument" -msgstr "girilen değişken, argüman" +msgstr "girilen değişken, girdi değişkeni, argüman" #. Reference: argument #: course/glossary.csv:37 msgid "arguments" -msgstr "girilen değişkenlerler, argümanlar" +msgstr "girilen değişkenler, girdi değişkenleri, argümanlar" #. Reference: argument #: course/glossary.csv:37 @@ -267,12 +267,12 @@ msgstr "" "Bir fonksiyon çoklu değerler bekliyorsa, değerleri virgül ile ayırmalısınız; " "mesela bu çağrıda olduğu gibi [code]jump(50, 100)[/code]\n" "\n" -"Bir fonksiyonu [i]çağırırken[/i], parantez içine girdiğimiz değerlere [i]" -"girilen değişken (argüman)[/i] ismini veriyoruz.\n" +"Bir fonksiyonu [i]çağırırken[/i], parantez içine girdiğimiz değerlere " +"[i]girilen değişken (argüman)[/i] ismini veriyoruz.\n" "\n" "Buna karşılık, bir fonksiyon tanımı yazarken, fonksiyonun [i]alınan " -"değişkenleri (parameterler)[/i]'nden bahsederiz. Sıradaki örnekte, " -"[code]x[/code] ve [code]y[/code] [i]alınan değişken (parametre)[/i]'lerdir." +"değişkenleri (parameterler)[/i]'nden bahsederiz. Sıradaki örnekte, [code]x[/" +"code] ve [code]y[/code] [i]alınan değişken (parametre)[/i]'lerdir." #. Reference: array #: course/glossary.csv:44 @@ -519,8 +519,8 @@ msgstr "" "isim vermeye yarayan araçlardır.\n" "\n" "Örneğin, bir karakterin sağlığı: karakter hasar aldığında, sağlığın " -"azalmasını istersin. İyileşme durumunda, sağlığın tekrar artmasını istersin." -"\n" +"azalmasını istersin. İyileşme durumunda, sağlığın tekrar artmasını " +"istersin.\n" "\n" "Sağlığı temsil etmesi için [code]health[/code](sağlık) isminde bir değişken " "oluşturabilirsin.\n" diff --git a/i18n/tr/lesson-1-what-code-is-like.po b/i18n/tr/lesson-1-what-code-is-like.po index 21fcf039..a27da3e8 100644 --- a/i18n/tr/lesson-1-what-code-is-like.po +++ b/i18n/tr/lesson-1-what-code-is-like.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-07-10 17:52+0000\n" "Last-Translator: Yılmaz Durmaz \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -152,6 +152,7 @@ msgid "You'll learn to code with GDScript" msgstr "GDScript ile kodlamayı öğreneceksin" #: course/lesson-1-what-code-is-like/lesson.tres:124 +#, fuzzy msgid "" "In this course, you'll learn the GDScript programming language (the name " "stands for \"Godot script\").\n" @@ -159,8 +160,11 @@ msgid "" "This is a language by game developers for game developers. You can use it " "within the Godot game engine to create games and applications.\n" "\n" -"SEGA used the Godot engine to create the remake of Sonic Colors Ultimate. " -"Engineers at Tesla use it for their cars' dashboards." +"It's the language used by games like [ignore][url=https://store.steampowered." +"com/app/1637320/Dome_Keeper/]Dome Keeper[/url] and [ignore][url=https://" +"store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" +"Engineers at Tesla also used it for their cars' dashboards." msgstr "" "Bu kursta GDScript programlama dilini öğreneceksin (\"Godot script\"in " "kısaltması).\n" @@ -173,7 +177,7 @@ msgstr "" "kullandı. Tesla'daki mühendisler onu, arabalarının gösterge panelleri için " "kullanıyor." -#: course/lesson-1-what-code-is-like/lesson.tres:148 +#: course/lesson-1-what-code-is-like/lesson.tres:150 msgid "" "GDScript is an excellent language to get started with programming because " "it's specialized. Unlike some other languages, it doesn't have an " @@ -183,11 +187,11 @@ msgstr "" "dildir. Bazı diğer dillerden farklı olarak, [i]bunaltıcı derecede[/i] çok " "öğrenilecek özelliğe sahip değildir." -#: course/lesson-1-what-code-is-like/lesson.tres:156 +#: course/lesson-1-what-code-is-like/lesson.tres:158 msgid "Most programming languages are similar" msgstr "Çoğu programlama dilleri birbirine benzer" -#: course/lesson-1-what-code-is-like/lesson.tres:158 +#: course/lesson-1-what-code-is-like/lesson.tres:160 msgid "" "Don't be afraid of being locked in. The concepts you learn in your first " "programming language will apply to all the others.\n" @@ -211,15 +215,15 @@ msgstr "" "\n" "Aralarındaki benzerlikleri ve farklılıkları yakalamayı dene." -#: course/lesson-1-what-code-is-like/lesson.tres:184 +#: course/lesson-1-what-code-is-like/lesson.tres:186 msgid "It doesn't look [i]that[/i] different, does it?" msgstr "[i]O kadar da[/i] farklı görünmüyor, değil mi?" -#: course/lesson-1-what-code-is-like/lesson.tres:192 +#: course/lesson-1-what-code-is-like/lesson.tres:194 msgid "Are programming languages all completely different?" msgstr "Programlama dillerinin tümü tamamen farklı mıdırlar?" -#: course/lesson-1-what-code-is-like/lesson.tres:193 +#: course/lesson-1-what-code-is-like/lesson.tres:195 msgid "" "If you learn one language and then want to learn another, will you have to " "start from scratch?" @@ -227,7 +231,7 @@ msgstr "" "Bir dili öğrenirsen ve ardından bir başkasını öğrenmek istersen, sıfırdan mı " "başlaman gerekir?" -#: course/lesson-1-what-code-is-like/lesson.tres:195 +#: course/lesson-1-what-code-is-like/lesson.tres:197 msgid "" "Most programming languages build upon the same ideas of how to program. As a " "result, they're mostly similar.\n" @@ -249,20 +253,20 @@ msgstr "" "Yine de; GDScript, Python, JavaScript, C++, C# gibi diller ve birçok diğeri " "benzer bir programlama felsefesini temel alırlar." -#: course/lesson-1-what-code-is-like/lesson.tres:200 -#: course/lesson-1-what-code-is-like/lesson.tres:201 +#: course/lesson-1-what-code-is-like/lesson.tres:202 +#: course/lesson-1-what-code-is-like/lesson.tres:203 msgid "No, they have many similarities" msgstr "Hayır, birçok benzerliğe sahiptirler" -#: course/lesson-1-what-code-is-like/lesson.tres:200 +#: course/lesson-1-what-code-is-like/lesson.tres:202 msgid "Yes, they are completely different" msgstr "Evet, bütünüyle farklıdırlar" -#: course/lesson-1-what-code-is-like/lesson.tres:208 +#: course/lesson-1-what-code-is-like/lesson.tres:210 msgid "This is a course for beginners" msgstr "Bu, yeni başlayanlar için bir kurstur" -#: course/lesson-1-what-code-is-like/lesson.tres:210 +#: course/lesson-1-what-code-is-like/lesson.tres:212 msgid "" "If you want to learn to make games or code but don't know where to start, " "this course should be perfect." @@ -270,7 +274,7 @@ msgstr "" "Eğer oyun yapmayı veya kodlamayı öğrenmek istiyor, ama nereden başlayacağını " "bilmiyorsan, bu kurs bunun için mükemmel diyebiliriz." -#: course/lesson-1-what-code-is-like/lesson.tres:230 +#: course/lesson-1-what-code-is-like/lesson.tres:232 msgid "" "We designed it for [i]absolute beginners[/i], but if you already know " "another language, it can be a fun way to get started with Godot.\n" @@ -290,11 +294,11 @@ msgstr "" "Ama lütfen sabırlı ol. Tek başını ilk bütün oyununu yapabilmen zaman " "alacaktır." -#: course/lesson-1-what-code-is-like/lesson.tres:242 +#: course/lesson-1-what-code-is-like/lesson.tres:244 msgid "Learning to make games takes practice" msgstr "Oyun yapmayı öğrenmek alıştırma gerektirir" -#: course/lesson-1-what-code-is-like/lesson.tres:244 +#: course/lesson-1-what-code-is-like/lesson.tres:246 msgid "" "Creating games is more accessible than ever, but it still takes a lot of " "work and practice.\n" @@ -320,11 +324,11 @@ msgstr "" "Sürecin keyfini çıkar ve her küçük başarıyı kutla. Bir oyun geliştiricisi " "olarak, öğrenimin hiç bitmeyecek." -#: course/lesson-1-what-code-is-like/lesson.tres:258 +#: course/lesson-1-what-code-is-like/lesson.tres:260 msgid "What and how you'll learn" msgstr "Neyi ve nasıl öğreneceksin" -#: course/lesson-1-what-code-is-like/lesson.tres:260 +#: course/lesson-1-what-code-is-like/lesson.tres:262 msgid "" "In this free course, you will learn the foundations you need to start coding " "things like these:" @@ -332,7 +336,7 @@ msgstr "" "Bu ücretiz kursta, kodlamaya başlamak için gereken, aşağıdakiler gibi " "temelleri öğreneceksin:" -#: course/lesson-1-what-code-is-like/lesson.tres:290 +#: course/lesson-1-what-code-is-like/lesson.tres:292 msgid "" "Along the way, we'll teach you:\n" "\n" @@ -373,14 +377,25 @@ msgstr "" "koysaydık, daha yavaş öğrenirdin.\n" "\n" "Eğer herhangi bir noktada cevabını öğrenmek zorunda hissettiğin soruların " -"olursa, [url=https://discord.gg/87NNb3Z]Discord topluluğumuza " -"(İngilizce)[/url] katılabilirsin." +"olursa, [url=https://discord.gg/87NNb3Z]Discord topluluğumuza (İngilizce)[/" +"url] katılabilirsin." -#: course/lesson-1-what-code-is-like/lesson.tres:310 +#: course/lesson-1-what-code-is-like/lesson.tres:312 +msgid "Is this for Godot 4?" +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:314 +msgid "" +"What you'll learn in this free course is fully compatible with Godot 4. " +"While we initially designed this series for Godot 3, the foundations of " +"GDScript are still the same in Godot 4." +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:322 msgid "Programming is a skill" msgstr "Programlama bir beceridir" -#: course/lesson-1-what-code-is-like/lesson.tres:312 +#: course/lesson-1-what-code-is-like/lesson.tres:324 msgid "" "Programming is a skill, so to get good at it, you must practice. It is why " "we built this app.\n" @@ -403,11 +418,11 @@ msgstr "" "Devam etmek için, aşağıdaki [i]Alıştırma[/i] düğmesine tıkla. Sana, " "alıştırmaların nasıl işlediğine dair kısa bir özet sunacak." -#: course/lesson-1-what-code-is-like/lesson.tres:326 +#: course/lesson-1-what-code-is-like/lesson.tres:338 msgid "Try Your First Code" msgstr "İlk Kodunu Dene" -#: course/lesson-1-what-code-is-like/lesson.tres:327 +#: course/lesson-1-what-code-is-like/lesson.tres:339 msgid "" "We prepared a code sample for you. For this practice, you don't need to " "change anything.\n" @@ -420,36 +435,34 @@ msgstr "" "Kodu denemek için, kod düzenleyicisinin altındaki [i]Çalıştır[/i] düğmesine " "tıkla." -#: course/lesson-1-what-code-is-like/lesson.tres:339 +#: course/lesson-1-what-code-is-like/lesson.tres:351 msgid "Run your first bit of code and see the result." msgstr "İlk kod parçanı çalıştır ve sonucu gör." -#: course/lesson-1-what-code-is-like/lesson.tres:343 +#: course/lesson-1-what-code-is-like/lesson.tres:355 msgid "What Code is Like" msgstr "Kod Neye Benzer" -#: course/lesson-1-what-code-is-like/lesson.tres:58 -msgid "" -"Programming languages are different from natural ones like English or " -"Spanish. The computer does not think. Unlike us,it can't [i]interpret[/i] " -"what you tell it.\n" -"\n" -"You can't tell it something vague like \"draw a circle.\"\n" -"\n" -"Which circle? Where? Which color should it be? How big should it be?" -msgstr "" -"Programlama dilleri, İngilizce veya Türkçe gibi doğal dillerden " -"farklıdırlar. Bilgisayar düşünmez. Bizden farklı olarak, ona söylediklerini " -"[i]yorumlayamaz[/i].\n" -"\n" -"Ona, \"bir daire çiz\" gibi belirsiz bir şey söyleyemezsin.\n" -"\n" -"Hangi daire? Nerede/Nereye? Hangi renk olmalı? Ne kadar büyük olmalı?" - -#: course/lesson-1-what-code-is-like/lesson.tres:260 -msgid "" -"In this free course, you will learn the foundations you need to start coding " -"things like those." -msgstr "" -"Bu ücretsiz kursta, şunlara benzer, kodlamaya başlamak için ihtiyaç " -"duyacağın temelleri öğreneceksin." +#~ msgid "" +#~ "Programming languages are different from natural ones like English or " +#~ "Spanish. The computer does not think. Unlike us,it can't [i]interpret[/i] " +#~ "what you tell it.\n" +#~ "\n" +#~ "You can't tell it something vague like \"draw a circle.\"\n" +#~ "\n" +#~ "Which circle? Where? Which color should it be? How big should it be?" +#~ msgstr "" +#~ "Programlama dilleri, İngilizce veya Türkçe gibi doğal dillerden " +#~ "farklıdırlar. Bilgisayar düşünmez. Bizden farklı olarak, ona " +#~ "söylediklerini [i]yorumlayamaz[/i].\n" +#~ "\n" +#~ "Ona, \"bir daire çiz\" gibi belirsiz bir şey söyleyemezsin.\n" +#~ "\n" +#~ "Hangi daire? Nerede/Nereye? Hangi renk olmalı? Ne kadar büyük olmalı?" + +#~ msgid "" +#~ "In this free course, you will learn the foundations you need to start " +#~ "coding things like those." +#~ msgstr "" +#~ "Bu ücretsiz kursta, şunlara benzer, kodlamaya başlamak için ihtiyaç " +#~ "duyacağın temelleri öğreneceksin." diff --git a/i18n/tr/lesson-19-creating-arrays.po b/i18n/tr/lesson-19-creating-arrays.po index 43825db2..248cb27b 100644 --- a/i18n/tr/lesson-19-creating-arrays.po +++ b/i18n/tr/lesson-19-creating-arrays.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-07-14 21:12+0000\n" +"PO-Revision-Date: 2023-10-01 16:59+0000\n" "Last-Translator: Yılmaz Durmaz \n" "Language-Team: Turkish \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0-dev\n" +"X-Generator: Weblate 5.1-dev\n" "Generated-By: Babel 2.9.1\n" #: course/lesson-19-creating-arrays/lesson.tres:13 @@ -290,9 +290,9 @@ msgstr "" "dizi, bilgisayarın tanıdığı bir değer tipi olduğundan, tüm diziyi tek bir " "girdi değişkeni olarak geçirebilirsin.\n" "\n" -"[code]select_units()[/code] fonksiyonuna doğru diziyi geçirerek panodaki tüm " -"birimleri seç. (birimlerin durduğu hücrelerin konum sayılarını, diğer " -"sayılara bakıp çıkarabilirsin)." +"[code]select_units()[/code] fonksiyonuna doğru diziyi geçirerek tahta " +"üstündeki tüm birimleri seç. (birimlerin durduğu hücrelerin konum " +"sayılarını, diğer sayılara bakıp çıkarabilirsin)." #: course/lesson-19-creating-arrays/lesson.tres:320 msgid "Write an array to select all units on the board in this strategy game." diff --git a/i18n/tr/lesson-26-looping-over-dictionaries.po b/i18n/tr/lesson-26-looping-over-dictionaries.po index d5491e72..59fce4b2 100644 --- a/i18n/tr/lesson-26-looping-over-dictionaries.po +++ b/i18n/tr/lesson-26-looping-over-dictionaries.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-07-14 21:12+0000\n" "Last-Translator: Yılmaz Durmaz \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -54,16 +54,17 @@ msgstr "" "Ve kodun içinde, bunu yalnızca sözlüğün tamamı üzerinde döngü oluşturarak, " "ve anahtar-değer çiftlerini tek tek işleyerek başarabilirsin.\n" "\n" -"Sözlükteki anahtarların listesini almak için [code]keys()[/code] (anahtarlar)" -" üye fonksiyonunu çağırabilirsin." +"Sözlükteki anahtarların listesini almak için [code]keys()[/code] " +"(anahtarlar) üye fonksiyonunu çağırabilirsin." #: course/lesson-26-looping-over-dictionaries/lesson.tres:49 +#, fuzzy msgid "" "But it's something we do so much that you don't need to call the function.\n" "\n" -"Instead, you can directly type the variable name in a [code]for[/code] loop " -"after the [code]in[/code] keyword. The language understands that you " -"implicitly want to loop over the dictionary's keys." +"Instead, you can directly [ignore]type the variable name in a [code]for[/" +"code] loop after the [code]in[/code] keyword. The language understands that " +"you implicitly want to loop over the dictionary's keys." msgstr "" "Ancak bu o kadar çok yaptığımız bir şey ki, bu fonksiyonu çağırmana gerek " "yok.\n" diff --git a/i18n/tr/lesson-3-standing-on-shoulders-of-giants.po b/i18n/tr/lesson-3-standing-on-shoulders-of-giants.po index 78163160..f569bcfb 100644 --- a/i18n/tr/lesson-3-standing-on-shoulders-of-giants.po +++ b/i18n/tr/lesson-3-standing-on-shoulders-of-giants.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-07-10 21:52+0000\n" "Last-Translator: Yılmaz Durmaz \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -173,9 +173,8 @@ msgstr "" "Talimat listelerinin isim verilmiş halidir.\n" "\n" "Bir fonksiyonu tanımlamak için, önce [code]func[/code] kelimesi, fonksiyonun " -"ismi, parantezler, ve iki nokta üstüste yazman gerekir: [code]func " -"run():[/code] kod parçası [code]run()[/code] isminde bir fonksiyonu tanımlar." -"\n" +"ismi, parantezler, ve iki nokta üstüste yazman gerekir: [code]func run():[/" +"code] kod parçası [code]run()[/code] isminde bir fonksiyonu tanımlar.\n" "\n" "Daha sonra, fonksiyonun gövdesini yazmak için sonraki satıra geçersin. Bu da " "fonksiyonun talimatlarıdır.\n" @@ -184,8 +183,8 @@ msgstr "" "girinti) karakteri görürsün. Bilgisayar bunu, hangi satırların fonksiyona " "ait olduğunu anlamak için kullanır.\n" "\n" -"Kurs boyunca, [code]run()[/code] çağrısı yapan pek çok fonksiyon göreceksin." -"\n" +"Kurs boyunca, [code]run()[/code] çağrısı yapan pek çok fonksiyon " +"göreceksin.\n" "\n" "Bunlar, sana etkileşimli örnekler sunmak için oluşturduğumuz fonksiyonlardır." @@ -204,8 +203,8 @@ msgstr "" "Fonksiyonları çağırırken parantezler kullanıyoruz, çünkü bu şekilde onları " "çağırırken parantez içinde [i]girdi değişkenleri[/i] verebiliriz.\n" "\n" -"Bu örnekte bir [i]grafik öğe[/i] dik şekilde duruyor. Eğer [code]rotate(0." -"3)[/code] fonksiyon çağrısı yaparsak, karakterimizin [i]grafik öğesi[/i] 0.3 " +"Bu örnekte bir [i]grafik öğe[/i] dik şekilde duruyor. Eğer [code]rotate(0.3)" +"[/code] fonksiyon çağrısı yaparsak, karakterimizin [i]grafik öğesi[/i] 0.3 " "radyan kadar dönecektir. (\"run()\" tuşuna bir çok kez basabilirsin)." #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:140 @@ -231,19 +230,19 @@ msgid "" "need to use a dot like this to represent decimal numbers. You can't use " "commas as they have a different purpose in code." msgstr "" -"Parantez içindeki [code]0.3[/code] kısmı fonksiyonun [i]girdi " -"değişkeni[/i]dir.\n" +"Parantez içindeki [code]0.3[/code] kısmı fonksiyonun [i]girdi değişkeni[/" +"i]dir.\n" "\n" -"Girdi değişkenleri, fonksiyonun nasıl çalışacağını değiştiren değerlerdir (" -"sayılar, bir parça yazı, ya da daha fazlası).\n" +"Girdi değişkenleri, fonksiyonun nasıl çalışacağını değiştiren değerlerdir " +"(sayılar, bir parça yazı, ya da daha fazlası).\n" "\n" "Girdi değişkenleri, fonksiyon çağırmanın yapacağı etkiyi ince ayarlamana " "yardımcı olur. Arada isteğe bağlı olurlar, ama genellikle fonksiyonların " "çalışması için gereklidirler.\n" "\n" "Örneğin, [code]rotate()[/code] çağrısını değişken girdisi olmadan yapmak " -"hata ile sonuçlanır. Girdi değişkeni olmadan Godot, [i]grafik öğe[/i]nin [i]" -"ne kadar[/i] dönmesini amaçladığını bilemez.\n" +"hata ile sonuçlanır. Girdi değişkeni olmadan Godot, [i]grafik öğe[/i]nin " +"[i]ne kadar[/i] dönmesini amaçladığını bilemez.\n" "\n" "Her fonksiyona ne gerektiği ya da ne kabul ettiğini hafızanda tutmaya " "çalışma. Bir programcı olarak, ihtiyaç duyunca bakacağın belgelendirmeler " @@ -329,7 +328,8 @@ msgstr "" #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 -msgid "It calls the function named \"show.\"" +#, fuzzy +msgid "It calls the function named \"show\"." msgstr "\"show\" isimli fonksiyonu çağırır" #: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 diff --git a/i18n/tr/lesson-4-drawing-a-rectangle.po b/i18n/tr/lesson-4-drawing-a-rectangle.po index 17d0328f..b792e160 100644 --- a/i18n/tr/lesson-4-drawing-a-rectangle.po +++ b/i18n/tr/lesson-4-drawing-a-rectangle.po @@ -8,11 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-07-10 21:52+0000\n" "Last-Translator: Yılmaz Durmaz \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -76,8 +76,8 @@ msgstr "" "\n" "Senin için bir sürü fonksiyon hazırladık.\n" "\n" -"- [code]move_forward(piksel_sayısı)[/code] kaplumbağayı verilen [i]piksel[/i]" -" miktarı kadar mesafede ileri hareket ettirir.\n" +"- [code]move_forward(piksel_sayısı)[/code] kaplumbağayı verilen [i]piksel[/" +"i] miktarı kadar mesafede ileri hareket ettirir.\n" "- [code]turn_right(derece)[/code] kaplumbağayı tam verilen [i]açı ölçüsü[/i] " "nde saat yönünde (sağa) çevirir.\n" "- [code]turn_left(derece)[/code] ise [code]turn_right(derece)[/code] gibi " @@ -92,6 +92,10 @@ msgstr "" "Kaplumbağa hareket ederken beyaz bir çizgi çiziyor. Bu çizgiyi, şekiller " "çizmek için kullanacağız." +#: course/lesson-4-drawing-a-rectangle/lesson.tres:76 +msgid "Turning left and right" +msgstr "" + #: course/lesson-4-drawing-a-rectangle/lesson.tres:78 msgid "" "The functions [code]turn_left()[/code] and [code]turn_right()[/code] work " @@ -168,10 +172,32 @@ msgid "30" msgstr "30" #: course/lesson-4-drawing-a-rectangle/lesson.tres:140 +msgid "The turtle uses code made specifically for this app!" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:142 +msgid "" +"The turtle is a little learning tool custom-made for this course, based on a " +"proven code learning methodology. It's designed to teach you how to use and " +"create functions.\n" +"\n" +"So please don't be surprised if writing code like [code]turn_left()[/code] " +"inside of the Godot editor doesn't work! And don't worry, once you've " +"learned the foundations, you'll see they make it faster and easier to learn " +"Godot functions." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:154 +msgid "" +"Let's move on to practice! You'll get to play with the turtle functions to " +"draw shapes." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:162 msgid "Drawing a Corner" msgstr "Bir Köşe Çizmek" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:141 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:163 msgid "" "In this practice, we'll tell the turtle to draw a corner.\n" "\n" @@ -196,8 +222,8 @@ msgstr "" "Bu alıştırmada, kaplumbağaya bir köşe çizmesini söyleyeceğiz.\n" "\n" "Bu köşe, [code]200[/code] piksel uzunluğundaki iki çizgiden oluşuyor. " -"Çizgiler birbirlerine birer uçlarından [code]90[/code] derecelik açı ile (" -"dik açı) ile bağlılar.\n" +"Çizgiler birbirlerine birer uçlarından [code]90[/code] derecelik açı ile " +"(dik açı) ile bağlılar.\n" "\n" "Sağdaki [code]move_forward()[/code] ve [code]turn_right()[/code] " "fonksiyonları bir köşe çizecekler, ama girdi değişkenleri eksik durumda.\n" @@ -212,7 +238,7 @@ msgstr "" "Sıradaki alıştırmalarda, dikdörtgenler çizmek için çoklu köşeler çizeceğiz.\n" "\n" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:165 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:187 msgid "" "Use the turtle to draw a square's corner. You'll then build upon it to draw " "a rectangle." @@ -220,12 +246,12 @@ msgstr "" "Kaplumbağayı kullanarak karenin bir köşesini çiz. Daha sonra, aynı şeklide " "devam edip bir dikdörtgen çizeceksin." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:170 -#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:192 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:240 msgid "Drawing a Rectangle" msgstr "Bir Dikdörtgen Çizmek" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:171 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:193 msgid "" "Add the correct arguments to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of [code]200[/" @@ -245,17 +271,17 @@ msgstr "" "Sıradaki alıştırmada, aynı fonksiyonları kullanarak daha büyük bir " "dikdörtgen çizeceksin." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:191 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:213 msgid "" "Based on your rectangle corner, you now need to draw a complete rectangle." msgstr "" "Dikdörtgenin köşesinden yola çıkarak, şimdi dikdörtgenin tamamını çizmelisin." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:196 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 msgid "Drawing a Bigger Rectangle" msgstr "Daha Büyük bir Dikdörtgen Çizmek" -#: course/lesson-4-drawing-a-rectangle/lesson.tres:197 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:219 msgid "" "Write out calls to the functions [code]move_forward()[/code] and " "[code]turn_right()[/code] to draw a rectangle with a width of 220 pixels, " @@ -281,7 +307,7 @@ msgstr "" "karakteri olmalı (genelde klavyenin en solunda üstünde iki yönlü ok olan " "tuş)." -#: course/lesson-4-drawing-a-rectangle/lesson.tres:214 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:236 msgid "" "At this point, you're ready to code entirely on your own. Call functions by " "yourself to draw a complete rectangle." diff --git a/i18n/tr/lesson-5-your-first-function.po b/i18n/tr/lesson-5-your-first-function.po index ceff6561..2744a791 100644 --- a/i18n/tr/lesson-5-your-first-function.po +++ b/i18n/tr/lesson-5-your-first-function.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" "POT-Creation-Date: 2023-05-16 09:25+0200\n" -"PO-Revision-Date: 2023-07-10 21:52+0000\n" +"PO-Revision-Date: 2023-10-01 16:59+0000\n" "Last-Translator: Yılmaz Durmaz \n" "Language-Team: Turkish \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0-dev\n" +"X-Generator: Weblate 5.1-dev\n" "Generated-By: Babel 2.9.1\n" #: course/lesson-5-your-first-function/lesson.tres:14 @@ -293,7 +293,7 @@ msgstr "" #: course/lesson-5-your-first-function/lesson.tres:200 msgid "move forward" -msgstr "move forward" +msgstr "ileri git" #: course/lesson-5-your-first-function/lesson.tres:200 #: course/lesson-5-your-first-function/lesson.tres:201 diff --git a/i18n/tr/lesson-9-adding-and-subtracting.po b/i18n/tr/lesson-9-adding-and-subtracting.po index 83c81f80..2c0c452d 100644 --- a/i18n/tr/lesson-9-adding-and-subtracting.po +++ b/i18n/tr/lesson-9-adding-and-subtracting.po @@ -8,31 +8,32 @@ msgid "" msgstr "" "Project-Id-Version: Learn GDScript From Zero\n" "Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" -"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" "PO-Revision-Date: 2023-07-11 00:13+0000\n" "Last-Translator: Yılmaz Durmaz \n" -"Language-Team: Turkish \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 5.0-dev\n" "Generated-By: Babel 2.9.1\n" #: course/lesson-9-adding-and-subtracting/lesson.tres:14 +#, fuzzy msgid "" -"Our character in our game will have health by defining the " -"[code]health[/code] variable. The higher the character's health, the " -"further away the player is from losing the game.\n" +"Our character in our game will have health by defining the [code]health[/" +"code] variable. The higher the character's health, the further away the " +"player is from losing the game.\n" "\n" -"Health that changes adds tension to the game, especially if the player is" -" fighting with low health! It's a resource that that player should manage" -" carefully.\n" +"Health that changes adds tension to the game, especially if the player is " +"fighting with low health! It's a resource that the player should manage " +"carefully.\n" "\n" -"The character's health might get low if an enemy attacks them or they " -"fall into a hole.\n" +"The character's health might get low if an enemy attacks them or they fall " +"into a hole.\n" "\n" "We can create a function to represent damage in these cases." msgstr "" @@ -49,6 +50,7 @@ msgstr "" "Bu durumlar için hasarı temsil edecek bir fonksiyon oluşturabiliriz." #: course/lesson-9-adding-and-subtracting/lesson.tres:40 +#, fuzzy msgid "" "We pass the amount of damage the robot should take as a parameter.\n" "\n" @@ -57,9 +59,9 @@ msgid "" "Note the [code]-=[/code] syntax which achieves this. It's a shorthand we " "often use.\n" "\n" -"You can also use a longer form. Both of these lines have the same effect." -" They both subtract the value of [code]amount[/code] to the " -"[code]health[/code] variable:\n" +"You can also use a longer form. Both of these lines have the same effect. " +"They both subtract the value of [code]amount[/code] from the [code]health[/" +"code] variable:\n" "\n" "[code]health -= amount[/code]\n" "[code]health = health - amount[/code]\n" @@ -99,13 +101,13 @@ msgstr "" msgid "" "Here again, the health can go beyond [code]100[/code].\n" "\n" -"Also, once more, the short line [code]health += amount[/code] is " -"equivalent to the longer form [code]health = health + amount[/code]." +"Also, once more, the short line [code]health += amount[/code] is equivalent " +"to the longer form [code]health = health + amount[/code]." msgstr "" "Benzer şekilde, sağlık [code]100[/code] değerinin ötesine geçebilir.\n" "\n" -"Ayrıca, bir kez daha, [code]health += amount[/code] kısa satırı, [code]" -"health = health + amount[/code] uzun yazım şekline eşdeğerdir." +"Ayrıca, bir kez daha, [code]health += amount[/code] kısa satırı, " +"[code]health = health + amount[/code] uzun yazım şekline eşdeğerdir." #: course/lesson-9-adding-and-subtracting/lesson.tres:91 msgid "Which of these would increase the health of the robot?" @@ -147,13 +149,13 @@ msgstr "health = health - amount" #: course/lesson-9-adding-and-subtracting/lesson.tres:109 msgid "" -"In the following practices, you'll code the [code]take_damage()[/code] " -"and [code]heal()[/code] functions so the robot's health can decrease and " +"In the following practices, you'll code the [code]take_damage()[/code] and " +"[code]heal()[/code] functions so the robot's health can decrease and " "increase." msgstr "" -"Sıradaki uygulamada, [code]take_damage()[/code] (al_hasar) ve " -"[code]heal()[/code] (iyileş) fonksiyonlarını kodlayacaksın, ve bu sayede " -"robotun sağlığı azalabilir ve artabilir." +"Sıradaki uygulamada, [code]take_damage()[/code] (al_hasar) ve [code]heal()[/" +"code] (iyileş) fonksiyonlarını kodlayacaksın, ve bu sayede robotun sağlığı " +"azalabilir ve artabilir." #: course/lesson-9-adding-and-subtracting/lesson.tres:117 msgid "Damaging the Robot" @@ -161,18 +163,18 @@ msgstr "Robota Hasar Vermek" #: course/lesson-9-adding-and-subtracting/lesson.tres:118 msgid "" -"In our game, the main character has a certain amount of " -"[code]health[/code]. When it gets hit, the health should go down by a " -"varying [code]amount[/code] of damage.\n" +"In our game, the main character has a certain amount of [code]health[/code]. " +"When it gets hit, the health should go down by a varying [code]amount[/code] " +"of damage.\n" "\n" "Add to the [code]take_damage()[/code] function so it subtracts the " "[code]amount[/code] to the predefined [code]health[/code] variable.\n" "\n" "The robot starts with 100 health and will take 50 damage." msgstr "" -"Oyunumuzda, ana karakterin belirli bir miktarda sağlığı var, " -"[code]health[/code]. Hasar alırsa sağlığı, hasara bağlı değişen bir " -"miktarda, [code]amount[/code], azalmalıdır.\n" +"Oyunumuzda, ana karakterin belirli bir miktarda sağlığı var, [code]health[/" +"code]. Hasar alırsa sağlığı, hasara bağlı değişen bir miktarda, " +"[code]amount[/code], azalmalıdır.\n" "\n" "[code]take_damage()[/code] fonksiyonuna ekleme yaparak, [code]amount[/code] " "miktarını, önceden tanımlı [code]health[/code] değişkeninden çıkarmasını " @@ -192,8 +194,8 @@ msgstr "Robotu İyileştirmek" msgid "" "It's time to heal the robot up to full health!\n" "\n" -"Write a function called [code]heal()[/code] that takes " -"[code]amount[/code] as a parameter.\n" +"Write a function called [code]heal()[/code] that takes [code]amount[/code] " +"as a parameter.\n" "\n" "The function should add [code]amount[/code] to [code]health[/code].\n" "\n" @@ -201,18 +203,18 @@ msgid "" msgstr "" "Şimdi de, robotu tam sağlığına kavuşturmanın zamanı!\n" "\n" -"Alınan değişken olarak [code]amount[/code] (miktar) kullanan, " -"[code]heal()[/code] (iyileştir) adında bir fonksiyon yaz.\n" +"Alınan değişken olarak [code]amount[/code] (miktar) kullanan, [code]heal()[/" +"code] (iyileştir) adında bir fonksiyon yaz.\n" "\n" -"Bu fonksiyon, [code]amount[/code] değerini alıp sağlığa, [code]health[/code]" -", eklemelidir.\n" +"Bu fonksiyon, [code]amount[/code] değerini alıp sağlığa, [code]health[/" +"code], eklemelidir.\n" "\n" "Robot, 50 sağlıkla başlayıp, 50 iyileşme alarak 100 sağlığa kavuşmalı." #: course/lesson-9-adding-and-subtracting/lesson.tres:157 msgid "" -"Our robot needs healing after that practice! Create a function to heal it" -" back to full health." +"Our robot needs healing after that practice! Create a function to heal it " +"back to full health." msgstr "" "Robotumuzun bu alıştırmadan sonra iyileşmeye ihtiyacı var! Onu tam sağlığına " "kavuşturmak için bir fonksiyon oluştur." diff --git a/i18n/zh_Hans/application.po b/i18n/zh_Hans/application.po new file mode 100644 index 00000000..7bd36240 --- /dev/null +++ b/i18n/zh_Hans/application.po @@ -0,0 +1,801 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: resources/QuizInputField.gd:17 +msgid "You need to type a whole number for this answer. Example: 42" +msgstr "回答中应输入整数。例如:42" + +#: resources/QuizInputField.gd:22 +msgid "" +"You need to type a decimal for this answer. Use a \".\" to separate the " +"decimal part. Example: 3.14" +msgstr "回答中应输入小数。请使用“.”分隔小数部分。例如:3.14" + +#: ui/UILesson.tscn:90 +msgid "Title" +msgstr "标题" + +#: ui/UILesson.tscn:125 +msgid "Practices" +msgstr "练习" + +#: ui/UINavigator.gd:365 +msgid "Go back in your navigation history" +msgstr "导航历史回退" + +#: ui/UINavigator.gd:368 +msgid "(no previous history)" +msgstr "(没有更早的历史)" + +#: ui/UINavigator.tscn:103 +msgid "CHRISTMAS SALE - 50% OFF" +msgstr "圣诞特惠 - 五折" + +#: ui/UINavigator.tscn:163 +msgid "CHRISTMAS SALE" +msgstr "圣诞特惠" + +#: ui/UIPractice.gd:154 ui/UIPractice.gd:220 +#, python-format +msgid "Hint %s" +msgstr "提示 %s" + +#: ui/UIPractice.gd:248 +msgid "Validating Your Code..." +msgstr "正在校验你的代码..." + +#: ui/UIPractice.gd:268 +#, python-format +msgid "The function `%s` calls itself, this creates an infinite loop" +msgstr "函数 `%s` 调用自身,这造成了一个无限循环" + +#: ui/UIPractice.gd:301 +msgid "Running Your Code..." +msgstr "正在运行你的代码..." + +#: ui/UIPractice.gd:328 +msgid "" +"There is a division by zero in your code. You cannot divide by zero in code. " +"Please ensure you have no \"/ 0\" or \"% 0\" in your code." +msgstr "你的代码中存在除以0的情况。你不能在代码中除以0。请确保你的代码中没有“/ 0”或“" +"% 0”。" + +#: ui/UIPractice.gd:343 +msgid "" +"Oh no! The script has an error, but the Script Verifier did not catch it" +msgstr "糟糕!脚本中有一个错误,但脚本验证器未捕获它" + +#: ui/UIPractice.gd:369 +msgid "Running Tests..." +msgstr "正在运行测试..." + +#: ui/UIPractice.tscn:138 +msgid "Suggested Solution" +msgstr "推荐解法" + +#: ui/UIPractice.tscn:189 +msgid "Use Solution" +msgstr "使用解法" + +#: ui/UIPractice.tscn:207 +msgid "Leave unfinished practice?" +msgstr "要离开未完成的练习吗?" + +#: ui/components/BigGreenButton.tscn:24 +msgid "Button" +msgstr "按钮" + +#: ui/components/CodeEditor.tscn:144 +msgid "Run" +msgstr "运行" + +#: ui/components/CodeEditor.tscn:158 +msgid "Pause" +msgstr "暂停" + +#: ui/components/CodeEditor.tscn:173 ui/components/RunnableCodeExample.tscn:87 +msgid "Reset" +msgstr "重置" + +#: ui/components/CodeEditor.tscn:195 +msgid "Solution" +msgstr "解答" + +#: ui/components/CodeEditor.tscn:209 ui/components/OutputConsole.tscn:43 +msgid "Output" +msgstr "输出" + +#: ui/components/CodeEditor.tscn:224 +#: ui/components/popups/LessonDonePopup.tscn:198 +#: ui/components/popups/PracticeDonePopup.tscn:165 +msgid "Continue" +msgstr "继续" + +#: ui/components/DebuggerConsoleMonitoredVariable.tscn:20 +#: ui/components/OutputConsolePrintMessage.tscn:23 +msgid "Value" +msgstr "值" + +#: ui/components/GameView.tscn:72 +msgid "Paused" +msgstr "已暂停" + +#: ui/components/GlossaryPopup.tscn:37 +msgid "Term" +msgstr "术语" + +#: ui/components/GlossaryPopup.tscn:53 +#: ui/components/popups/ErrorOverlayPopup.tscn:74 +msgid "Our error explanation." +msgstr "我们的错误说明。" + +#: ui/components/OutputConsoleErrorMessage.tscn:39 +msgid "ERROR:" +msgstr "错误:" + +#: ui/components/OutputConsoleErrorMessage.tscn:47 +#: ui/components/ScrollableTextBox.tscn:43 +#: ui/screens/lesson/UIContentBlock.tscn:68 +msgid "Placeholder text" +msgstr "占位文本" + +#: ui/components/OutputConsoleErrorMessage.tscn:62 +msgid "in" +msgstr "在" + +#: ui/components/OutputConsoleErrorMessage.tscn:68 +msgid "FileName" +msgstr "文件名" + +#: ui/components/OutputConsoleErrorMessage.tscn:75 +msgid "at" +msgstr "位于" + +#: ui/components/OutputConsoleErrorMessage.tscn:82 +msgid "0:0" +msgstr "0:0" + +#: ui/components/OutputConsoleErrorMessage.tscn:92 +msgid "" +"Sometimes errors are reported outside of your code. Why does that happen?" +msgstr "有时候会报告你的代码之外的错误。为什么会这样?" + +#: ui/components/OutputConsoleErrorMessage.tscn:101 +msgid "Explain" +msgstr "解释" + +#: ui/components/Revealer.tscn:74 +msgid "Expand" +msgstr "展开" + +#: ui/components/RunnableCodeExample.tscn:105 +msgid "run()" +msgstr "run()" + +#: ui/components/RunnableCodeExample.tscn:123 +msgid "step" +msgstr "步骤" + +#: ui/components/RunnableCodeExampleDebugger.tscn:44 +msgid "Debugger" +msgstr "调试" + +#: ui/components/SalePopup.tscn:121 +#, python-format +msgid "" +"[center]Get [b]50% off[/b] on all our Godot courses with the \n" +"coupon code [b]DISCOUNT50[/b][/center]" +msgstr "" +"[center]使用优惠券代码 [b]DISCOUNT50[/b] \n" +"可享受 Godot 课程[b]半价[/b]优惠[/center]" + +#: ui/components/SalePopup.tscn:132 +msgid "Only until " +msgstr "除非 " + +#: ui/components/SalePopup.tscn:155 +msgid "CHECK OUT OUR COURSES" +msgstr "查看我们的课程" + +#: ui/components/SalePopup.tscn:180 +msgid "X" +msgstr "X" + +#: ui/components/popups/ConfirmPopup.tscn:115 +#: ui/components/popups/PracticeLeaveUnfinishedPopup.tscn:119 +msgid "Confirm" +msgstr "确认" + +#: ui/components/popups/ConfirmPopup.tscn:127 +#: ui/components/popups/PracticeLeaveUnfinishedPopup.tscn:131 +msgid "Cancel" +msgstr "取消" + +#: ui/components/popups/ErrorOverlayPopup.tscn:46 +msgid "Original error message" +msgstr "原始错误消息" + +#: ui/components/popups/ErrorOverlayPopup.tscn:65 +msgid "Why this happens" +msgstr "为什么会这样" + +#: ui/components/popups/ErrorOverlayPopup.tscn:82 +msgid "How to fix this" +msgstr "如何修正" + +#: ui/components/popups/ErrorOverlayPopup.tscn:91 +msgid "Our suggestion on how to fix it." +msgstr "我们建议的修正方法。" + +#: ui/components/popups/ErrorOverlayPopup.tscn:102 +msgid "" +"Sorry, we don't have this particular error message covered yet!\n" +"\n" +"Please, use the [b]Report[/b] button in the top-right corner to tell us more " +"about how you've got it, and we will try to improve our knowledge base for " +"the next version of the application.\n" +"\n" +"[center]Thank you![/center]" +msgstr "" +"抱歉,我们还没有处理这条错误消息!\n" +"\n" +"请使用右上角的[b]报告[/b]按钮,告诉我们你是如何得到这个错误的,我们会尝试在下" +"个版本的应用程序中改善知识库。\n" +"\n" +"[center]谢谢![/center]" + +#: ui/components/popups/ErrorOverlayPopup.tscn:128 +msgid "Hide" +msgstr "隐藏" + +#: ui/components/popups/ExternalErrorPopup.tscn:66 +msgid "Where do external errors come from?" +msgstr "外部错误是从哪里来的?" + +#: ui/components/popups/ExternalErrorPopup.tscn:83 +msgid "" +"Lessons in this course are designed so you only need to edit the " +"[b]important bits[/b]. But there is much more code outside of what you see " +"that makes the project run.\n" +"\n" +"This means that sometimes changes you make can affect code you have no " +"control over. But don't worry, you can still fix all the issues yourself " +"with the code you [b]can[/b] edit!\n" +"\n" +"[i]This is like how game engines work too.[/i] There is a lot of hidden code " +"that they execute to ensure your project runs smoothly. And yet, an error in " +"your scripts can break them. We'll try to explain how to address each " +"individual error that you face. Quick, click the [b]Explain[/b] button next " +"to the error message!" +msgstr "" +"本教程的课程中,你都只需要编辑[b]重要的部分[/b]。但在你看到的代码之外,其实还" +"有非常多的代码,才使得项目能够运行起来。\n" +"\n" +"也就是说,有时候你所作出的修改可能会影响到你无法控制的代码。不过不用担心,你" +"还是可以通过修改你[b]能够[/b]编辑的代码来修复所有这些问题。\n" +"\n" +"[i]这也正类似于游戏引擎的工作原理。[/i]很多的代码是被隐藏的,有了这些代码,你" +"的项目才能够顺利运行。但同时,你的脚本中的错误就可能会让它们无法正常工作。我" +"们会尝试解释如何解决你所遇到的每一个问题。很简单,点击错误消息旁边的[b]解释[/" +"b]按钮就行了!" + +#: ui/components/popups/ExternalErrorPopup.tscn:119 +msgid "Got it!" +msgstr "了解!" + +#: ui/components/popups/LessonDonePopup.tscn:133 +msgid "Lesson complete!" +msgstr "课程完成!" + +#: ui/components/popups/LessonDonePopup.tscn:142 +msgid "" +"But there are still some practices\n" +"that you've skipped." +msgstr "" +"不过还有一些练习\n" +"你之前跳过了。" + +#: ui/components/popups/LessonDonePopup.tscn:155 +msgid "" +"[center][b]Stay[/b] and revisit the study material,\n" +"or [b]continue[/b] the course.[/center]" +msgstr "" +"[center][b]留下[/b]重温学习材料,\n" +"或者[b]继续[/b]教程。[/center]" + +#: ui/components/popups/LessonDonePopup.tscn:183 +#: ui/components/popups/PracticeDonePopup.tscn:144 +msgid "Stay" +msgstr "留下" + +#: ui/components/popups/PracticeDonePopup.tscn:89 +msgid "Well done!" +msgstr "干得漂亮!" + +#: ui/components/popups/PracticeDonePopup.tscn:98 +msgid "You completed the practice." +msgstr "你完成了练习。" + +#: ui/components/popups/PracticeDonePopup.tscn:110 +msgid "" +"[center][b]Stay[/b] and play around,\n" +"or [b]continue[/b] the course.[/center]" +msgstr "" +"[center][b]留下[/b]玩一玩,\n" +"或者[b]继续[/b]教程。[/center]" + +#: ui/components/popups/PracticeListPopup.tscn:67 +msgid "Practice List" +msgstr "练习列表" + +#: ui/components/popups/PracticeListPopup.tscn:115 +#: ui/components/popups/SettingsPopup.tscn:244 +msgid "Close" +msgstr "关闭" + +#: ui/components/popups/ReportFormPopup.tscn:66 +msgid "Report an issue" +msgstr "报告问题" + +#: ui/components/popups/ReportFormPopup.tscn:83 +msgid "" +"If you face an issue in the app, please click the link below to report it on " +"GitHub:\n" +"\n" +"[center][b][url=https://github.com/GDQuest/learn-gdscript/issues]GitHub.com " +"> GDQuest > learn-gdscript > Issues[/url][/b][/center]\n" +"\n" +"On that page, you can report any issues, whether something's not working or " +"there's an error in a lesson.\n" +"\n" +"You can generate a log to help us identify the problem. To do so, click " +"here: [b][url=download]generate error log[/url][/b].\n" +"\n" +"Please drag and drop the generated file onto your issue on GitHub to attach " +"it.\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]What's GitHub[/font]\n" +"\n" +"GitHub is an online platform to host and manage open-source projects like " +"the GDScript Learn app. It helps developers organize their work and " +"collaborate online.\n" +"\n" +"You can use GitHub to study the source code of many open projects, report " +"issues, or even contribute code yourself.\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]How to report an issue[/font]\n" +"\n" +"1. Click the link above to get to the [i]GitHub Issues[/i] page.\n" +"2. Click on the [i]New Issue[/i] button.\n" +"3. Fill out the form to tell us more about your problem.\n" +"\n" +"You will need a GitHub account to do so.\n" +"\n" +"Please add as much relevant information as possible, such as the kind of " +"device you're using to access the app, and maybe attach a screenshot or " +"video clip showcasing the issue.\n" +"\n" +"[center]Thank you for contributing to open source![/center]" +msgstr "" +"如果你在应用中遇到了问题,请点击下面的链接在 GitHub 上进行报告:\n" +"\n" +"[center][b][url=https://github.com/GDQuest/learn-gdscript/issues]GitHub.com " +"> GDQuest > learn-gdscript > Issues[/url][/b][/center]\n" +"\n" +"在该页面上,你可以报告任何问题,无论是应用无法正常工作,还是课程中的错误。\n" +"\n" +"你可以生成日志,帮助我们排查问题。请点击此处:[b][url=download]生成错误日志[/" +"url][/b]。\n" +"\n" +"请将生成的文件拖放附加到你在 GitHub 上的 Issue 中。\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]GitHub 是什么[/font]\n" +"\n" +"GitHub 是一个在线平台,用于托管和管理像 GDScript Learn 应用这样的开源项目,可" +"以帮助开发者组织他们的工作并进行在线协作。\n" +"\n" +"你可以使用 GitHub 来研究许多开放项目的源代码,报告问题,甚至自己贡献代码。\n" +"\n" +"[font=res://ui/theme/fonts/font_title.tres]如何报告问题[/font]\n" +"\n" +"1. 点击上面的链接进入 [i]GitHub Issues[/i] 页面。\n" +"2. 点击 [i]New Issue[/i] 按钮。\n" +"3. 填写表单,告诉我们更多关于你的问题的信息。\n" +"\n" +"这些操作需要注册 GitHub 账户。\n" +"\n" +"请尽可能多地添加相关信息,例如你使用哪种设备来访问该应用,并可能附上展示该问" +"题的屏幕截图或视频剪辑。\n" +"\n" +"[center]感谢为开源作出贡献![/center]" + +#: ui/components/popups/ReportFormPopup.tscn:158 +msgid "OK" +msgstr "确定" + +#: ui/components/popups/SettingsPopup.tscn:76 +msgid "Configure the App" +msgstr "配置应用" + +#: ui/components/popups/SettingsPopup.tscn:103 +msgid "Language" +msgstr "语言" + +#: ui/components/popups/SettingsPopup.tscn:123 +msgid "Text Size" +msgstr "文本大小" + +#: ui/components/popups/SettingsPopup.tscn:151 +msgid "Sample text" +msgstr "示例文本" + +#: ui/components/popups/SettingsPopup.tscn:164 +msgid "Scroll sensitivity" +msgstr "滚轮灵敏度" + +#: ui/components/popups/SettingsPopup.tscn:190 +msgid "Framerate cap" +msgstr "帧率上限" + +#: ui/components/popups/SettingsPopup.tscn:212 +msgid "Lower contrast" +msgstr "差别更小" + +#: ui/components/popups/SettingsPopup.tscn:259 +msgid "Apply" +msgstr "应用" + +#: ui/screens/course_outliner/CourseLessonDetails.gd:93 +msgid "Open Lesson" +msgstr "打开课程" + +#: ui/screens/course_outliner/CourseLessonDetails.gd:95 +msgid "Continue Lesson" +msgstr "继续课程" + +#: ui/screens/course_outliner/CourseLessonDetails.gd:97 +msgid "Start Lesson" +msgstr "开始课程" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:35 +msgid "Lesson Title Goes Here" +msgstr "此处为课程名称" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:48 +msgid "Lesson read" +msgstr "课程阅读" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:56 +msgid "0%" +msgstr "0%" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:79 +msgid "Quizzes completed" +msgstr "已完成问答" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:87 +#: ui/screens/course_outliner/CourseLessonDetails.tscn:108 +msgid "0 / 0" +msgstr "0 / 0" + +#: ui/screens/course_outliner/CourseLessonDetails.tscn:100 +msgid "Practices completed" +msgstr "已完成练习" + +#: ui/screens/course_outliner/CourseLessonItem.tscn:36 +msgid "Lesson 0" +msgstr "第 0 课" + +#: ui/screens/course_outliner/CourseLessonItem.tscn:44 +msgid "Lesson Title" +msgstr "课程标题" + +#: ui/screens/course_outliner/CourseOutliner.tscn:44 +msgid "Course Index - " +msgstr "教程目录 - " + +#: ui/screens/course_outliner/CourseOutliner.tscn:51 +msgid "Course Title Goes Here" +msgstr "此处为教程标题" + +#: ui/screens/course_outliner/CourseOutliner.tscn:83 +msgid "Reset Progress" +msgstr "重置进度" + +#: ui/screens/course_outliner/CourseOutliner.tscn:98 +msgid "Confirm Resetting Progress" +msgstr "确认重置进度" + +#: ui/screens/end_screen/EndScreen.tscn:229 +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:196 +msgid "Congratulations!" +msgstr "恭喜!" + +#: ui/screens/end_screen/EndScreen.tscn:236 +msgid "" +"You completed Learn GDScript From Zero. You now have the basics you need to " +"dive into game creation with the Godot game engine.\n" +"\n" +"If you're looking for a free series to keep learning the basics with us, you " +"can move on to [url=https://www.gdquest.com/tutorial/godot/learning-paths/" +"getting-started-in-2021/]Getting Started with Godot[/url]." +msgstr "" +"你已经完成了从零开始学 GDScript。你现在已经学习到了使用Godot游戏引擎钻研制作" +"游戏的基础。\n" +"\n" +"如果你正在寻找和我们一起免费学习基础的系列,你可以访问 [url=https://www." +"gdquest.com/tutorial/godot/learning-paths/getting-started-in-2021/]Getting " +"Started with Godot[/url]。" + +#: ui/screens/end_screen/EndScreen.tscn:249 +msgid "Or level up faster by taking this shortcut" +msgstr "或者点击这一快捷方式来快速提高" + +#: ui/screens/end_screen/EndScreen.tscn:256 +msgid "" +"There are loads of free game creation tutorials, but they don't form a clear " +"path.\n" +"\n" +"Worse, most of them are like step-by-step recipes. But as you learned, you " +"can't become a developer by just following recipes.\n" +"\n" +"Every project has unique challenges and requires [i]creative problem " +"solving[/i]. You need to [i]think like a programmer[/i].\n" +"\n" +"Learning that on your own can take years." +msgstr "" +"现在有很多免费游戏制作教程,但他们并没有一个清晰的学习路径。\n" +"\n" +"更糟的是,他们中的大多数只是手把手的流程。但在你学习之后,你是不能通过固定流" +"程来变成一个开发者的。\n" +"\n" +"每个项目都有独特的挑战和需要[i]创造式的问题解决方式[/i]。你需要[i]像一个程序" +"员一样思考[/i]。\n" +"\n" +"自学这一方式需要好几年。" + +#: ui/screens/end_screen/EndScreen.tscn:277 +msgid "Learn to Code From Zero, with Godot" +msgstr "和Godot一起从零开始学代码" + +#: ui/screens/end_screen/EndScreen.tscn:284 +msgid "" +"This app is the free part of our in-depth course, [url=https://gdquest." +"mavenseed.com/courses/learn-to-code-from-zero-with-godot][b]Learn to Code " +"From Zero, with Godot[/b][/url].\n" +"\n" +"The course picks up right where this app ends to take you to the point where " +"you can make [i]your[/i] game.\n" +"\n" +"It's the only course that'll truly teach you [i]how to become a game " +"developer[/i] with Godot." +msgstr "" +"这一应用是我们详细课程 [url=https://gdquest.mavenseed.com/courses/learn-to-" +"code-from-zero-with-godot][b]Learn to Code From Zero, with Godot[/b][/url] 的" +"免费部分。\n" +"\n" +"该课程可以衔接这一应用的结束来教你如何制作[i]你的[/i]游戏。\n" +"\n" +"这是唯一真正教你[i]如何成为游戏开发者[/i]的Godot课程。" + +#: ui/screens/end_screen/EndScreen.tscn:308 +#: ui/screens/lesson/UIContentBlock.gd:70 +#: ui/screens/lesson/UIContentBlock.gd:134 +msgid "Learn More" +msgstr "了解更多" + +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:203 +msgid "" +"You completed Learn GDScript From Zero. You now have the basics you need to " +"make games with the Godot game engine.\n" +"\n" +"You can keep learning with the free series [url=https://docs.godotengine.org/" +"en/stable/getting_started/step_by_step/index.html]Getting Started with " +"Godot[/url]." +msgstr "" +"你已经完成了从零开始学 " +"GDScript。你现在已经学习到了使用Godot游戏引擎钻研制作游戏的基础。\n" +"\n" +"如果你正在寻找和我们一起免费学习基础的系列,你可以访问 [url=https://www." +"gdquest.com/tutorial/godot/learning-paths/getting-started-in-2021/]Getting " +"Started with Godot[/url]。" + +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:216 +msgid "This is an Open-Source project!" +msgstr "这是一个开源项目!" + +#: ui/screens/end_screen/SponsorlessEndScreen.tscn:223 +msgid "" +"Like Godot, this app and course is free and open-source. \n" +"\n" +"You can find the app's source code and contribute translations here: " +"[url=\"https://github.com/GDQuest/learn-gdscript\"]Learn GDScript From Zero " +"(Github repository)[/url]." +msgstr "" +"像 Godot 一样,这个应用和课程是免费和开源的。 \n" +"\n" +"你可以在这里找到本应用的源代码并提供翻译: [url=\"https://github.com/GDQuest/" +"learn-gdscript\"]Learn GDScript From Zero (Github repository)[/url]." + +#: ui/screens/lesson/UIBaseQuiz.tscn:56 +msgid "[b]Question[/b]" +msgstr "[b]问题[/b]" + +#: ui/screens/lesson/UIBaseQuiz.tscn:80 ui/screens/lesson/UIBaseQuiz.tscn:169 +msgid "Explanation" +msgstr "说明" + +#: ui/screens/lesson/UIBaseQuiz.tscn:107 +msgid "Skip" +msgstr "跳过" + +#: ui/screens/lesson/UIBaseQuiz.tscn:119 +msgid "Submit" +msgstr "提交" + +#: ui/screens/lesson/UIBaseQuiz.tscn:150 +msgid "You're right!" +msgstr "答对了!" + +#: ui/screens/lesson/UIBaseQuiz.tscn:160 +msgid "Answers here" +msgstr "请在此处作答" + +#: ui/screens/lesson/UIContentBlock.tscn:47 +msgid "Placeholder heading" +msgstr "占位标题" + +#: ui/screens/lesson/UIPracticeButton.tscn:52 +msgid "Practice title" +msgstr "练习标题" + +#: ui/screens/lesson/UIPracticeButton.tscn:77 +msgid "next" +msgstr "下一个" + +#: ui/screens/lesson/UIPracticeButton.tscn:100 +msgid "Practice" +msgstr "练习" + +#: ui/screens/lesson/UIPracticeButton.tscn:110 +msgid "You are here" +msgstr "你在这里" + +#: ui/screens/lesson/quizzes/QuizAnswerButton.tscn:40 +msgid "Answer label" +msgstr "回答标签" + +#: ui/screens/lesson/quizzes/UIQuizChoice.gd:26 +msgid "(select all that apply)" +msgstr "(多选)" + +#: ui/screens/practice/PracticeHint.tscn:8 +msgid "Show Hint" +msgstr "显示提示" + +#: ui/screens/practice/PracticeInfoPanel.gd:144 +msgid "Method descriptions" +msgstr "方法说明" + +#: ui/screens/practice/PracticeInfoPanel.gd:160 +msgid "Property descriptions" +msgstr "属性说明" + +#: ui/screens/practice/PracticeInfoPanel.tscn:63 +msgid "Summary - Lesson Name" +msgstr "总结 - 课程名称" + +#: ui/screens/practice/PracticeInfoPanel.tscn:106 +msgid "Goals" +msgstr "目标" + +#: ui/screens/practice/PracticeInfoPanel.tscn:119 +msgid "Hints" +msgstr "提示" + +#: ui/screens/practice/PracticeInfoPanel.tscn:126 +msgid "Checks" +msgstr "检查" + +#: ui/screens/practice/PracticeInfoPanel.tscn:134 +msgid "Documentation" +msgstr "文档" + +#: ui/screens/practice/PracticeInfoPanel.tscn:175 +msgid "Open Practice List" +msgstr "打开练习列表" + +#: ui/screens/practice/PracticeTestDisplay.tscn:40 +msgid "Test text" +msgstr "测试文本" + +#: ui/screens/welcome_screen/WelcomeScreen.gd:42 +msgid "CONTINUE" +msgstr "继续" + +#: ui/screens/welcome_screen/WelcomeScreen.gd:44 +#: ui/screens/welcome_screen/WelcomeScreen.tscn:627 +msgid "START" +msgstr "开始" + +#: ui/screens/welcome_screen/WelcomeScreen.tscn:645 +msgid "SELECT LESSON" +msgstr "选择课程" + +#: ui/screens/welcome_screen/WelcomeScreen.tscn:659 +msgid "OPTIONS" +msgstr "选项" + +#: ui/screens/welcome_screen/WelcomeScreen.tscn:693 +msgid "QUIT" +msgstr "退出" + +#~ msgid "Connected to the server." +#~ msgstr "已连接至服务器。" + +#~ msgid "" +#~ "Can't reach the server. The server might be down, or your internet may be " +#~ "down." +#~ msgstr "无法连接服务器。服务器可能宕机,或者你的网络连接已断开。" + +#~ msgid "Can't reach the server. The tests will be less precise." +#~ msgstr "无法连接服务器。测试精度会降低。" + +#~ msgid "That's it... for now!" +#~ msgstr "目前就是这样了!" + +#~ msgid "" +#~ "Thanks for participating in the beta test.\n" +#~ "\n" +#~ "We hope you enjoyed what's available so far.\n" +#~ "\n" +#~ "We wish we had a lot more to give you already, but creating this app took " +#~ "time. A [i]lot[/i] of time.\n" +#~ "\n" +#~ "The good news is: now we figured out many of the more challenging parts, " +#~ "moving forward, we can shift our focus onto new lessons and practices." +#~ msgstr "" +#~ "感谢参加 Beta 测试。\n" +#~ "\n" +#~ "我们希望你喜欢目前的内容。\n" +#~ "\n" +#~ "我们希望能够为你提供更多内容,但创建这个应用需要时间。[i]非常多[/i]的时" +#~ "间。\n" +#~ "\n" +#~ "好消息是:我们已经解决了很多比较具有挑战性的部分,此后,我们可以将工作集中" +#~ "在新的课程和练习上。" + +#~ msgid "" +#~ "[font=res://ui/theme/fonts/font_title.tres]What's coming next[/font]\n" +#~ "\n" +#~ "We have plans for many more lessons and improvements.\n" +#~ "\n" +#~ "You can find our plan for future releases on our [url=https://github.com/" +#~ "GDQuest/learn-gdscript#roadmap]roadmap[/url]." +#~ msgstr "" +#~ "[font=res://ui/theme/fonts/font_title.tres]预告[/font]\n" +#~ "\n" +#~ "我们计划制作更多课程和改进。\n" +#~ "\n" +#~ "你可以在我们的[url=https://github.com/GDQuest/learn-gdscript#roadmap]路线" +#~ "图[/url]中查看未来版本的计划。" diff --git a/i18n/zh_Hans/classref_database.po b/i18n/zh_Hans/classref_database.po new file mode 100644 index 00000000..97d89b70 --- /dev/null +++ b/i18n/zh_Hans/classref_database.po @@ -0,0 +1,170 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"PO-Revision-Date: 2022-05-08 12:00+0000\n" +"Last-Translator: Haoyu Qiu \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#. Reference: show +#: ./course/documentation.csv:2 +msgid "shows the current scene" +msgstr "现实当前场景" + +#. Reference: hide +#: ./course/documentation.csv:3 +msgid "hides the current scene" +msgstr "隐藏当前场景" + +#. Reference: rotate +#: ./course/documentation.csv:4 +msgid "" +"Applies a rotation to the node, in radians, starting from its current " +"rotation." +msgstr "在该节点上应用旋转,单位为弧度,从当前角度开始旋转。" + +#. Reference: move_forward +#: ./course/documentation.csv:5 +msgid "Moves the turtle in the direction it's facing by some pixels." +msgstr "将海龟沿着它面朝的方向移动若干像素。" + +#. Reference: turn_right +#: ./course/documentation.csv:6 +msgid "Rotates the turtle to the right by some degrees." +msgstr "将海龟向右旋转若干角度。" + +#. Reference: turn_left +#: ./course/documentation.csv:7 +msgid "Rotates the turtle to the left by some degrees." +msgstr "将海龟向左旋转若干角度。" + +#. Reference: jump +#: ./course/documentation.csv:8 +msgid "Offsets the turtle's position by the given x and y amounts of pixels." +msgstr "将海龟的位置偏移给定的 X 和 Y 像素。" + +#. Reference: draw_rectangle +#: ./course/documentation.csv:9 +msgid "Makes the turtle draw a rectangle starting at its current position." +msgstr "让海龟以它的当前位置为起点绘制一个矩形。" + +#. Reference: position.x +#: ./course/documentation.csv:10 +msgid "The position of the entity on the horizontal axis." +msgstr "该实体在横轴上的位置。" + +#. Reference: position.y +#: ./course/documentation.csv:11 +msgid "The position of the entity on the vertical axis." +msgstr "该实体在纵轴上的位置。" + +#. Reference: move_local_x +#: ./course/documentation.csv:12 +msgid "" +"Applies a local translation on the node's X axis based on the " +"[code]Node._process[/code]'s [code]delta[/code]. If [code]scaled[/code] " +"is false, normalizes the movement." +msgstr "" +"根据 [code]Node._process[/code] 的 [code]delta[/code],在该节点的 X " +"轴上应用本地平移。如果 [code]scaled[/code] 为假,那么移动会进行归一化。" + +#. Reference: board_size +#: ./course/documentation.csv:13 +msgid "" +"Stores how many cells make up the width ([code]board_size.x[/code]) and " +"height ([code]board_size.y[/code]) of the board." +msgstr "" +"存储构成棋盘宽度([code]board_size.x[/code])和高度([code]board_size." +"y[/code])的单元格数量。" + +#. Reference: cell +#: ./course/documentation.csv:14 +msgid "" +"The cell position of the robot on the board. [code]Vector2(0, 0)[/code] " +"is the square cell in the top left of the board." +msgstr "机器人在棋盘上所在的单元格位置。[code]Vector2(0, 0)[/code] " +"为棋盘左上角的正方形单元格。" + +#. Reference: range +#: ./course/documentation.csv:15 +msgid "Creates a list of numbers from [code]0[/code] to [code]length - 1[/code]." +msgstr "创建从 [code]0[/code] 到 [code]length - 1[/code] 之间的数字列表。" + +#. Reference: play_animation +#: ./course/documentation.csv:16 +msgid "Orders the robot to play an animation." +msgstr "命令机器人播放动画。" + +#. Reference: select_units +#: ./course/documentation.csv:17 +msgid "Selects units in the cell coordinates passed as the function's argument." +msgstr "选择作为函数参数传入的单元格坐标上的单位。" + +#. Reference: robot.move_to +#: ./course/documentation.csv:18 +msgid "Queues a move animation towards the target cell." +msgstr "将移动到目标单元格的动画加入队列。" + +#. Reference: array.append +#: ./course/documentation.csv:19 +msgid "Adds the value passed as an argument at the back of the array." +msgstr "将作为参数传入的值添加到该数组的末尾。" + +#. Reference: array.pop_front +#: ./course/documentation.csv:20 +msgid "Removes the first value from the array and returns it." +msgstr "删除该数组中的第一个值,并将其返回。" + +#. Reference: array.pop_back +#: ./course/documentation.csv:21 +msgid "Removes the last value from the array and returns it." +msgstr "删除该数组中的最后一个值,并将其返回。" + +#. Reference: str +#: ./course/documentation.csv:22 +msgid "" +"Returns the argument converted into a [code]String[/code]. Works with the" +" majority of value types." +msgstr "返回转换为 [code]String[/code] 后的参数。支持大部分值类型。" + +#. Reference: int +#: ./course/documentation.csv:23 +msgid "" +"Returns the argument converted into an [code]int[/code] (whole number) " +"[i]if possible[/i]. Supports converting decimal numbers, strings, and " +"booleans. Useful to convert player text input into numbers." +msgstr "" +"[i]如果可能[/i],返回转换为 [code]int[/code](整数)后的参数。支持转换小数、" +"字符串、布尔值。可用于将玩家输入的文本转换为数字。" + +#. Reference: place_unit +#: ./course/documentation.csv:24 +msgid "" +"Creates a new unit matching the type parameter and places it at the " +"desired cell position on the game grid." +msgstr "新建一个单位,与类型参数相匹配,放置于游戏网格内所需的单元格位置上。" + +#. Reference: display_item +#: ./course/documentation.csv:25 +msgid "Creates a new item and displays it in the inventory." +msgstr "新建一个道具并在背包中显示。" + +#. Reference: add_item +#: ./course/documentation.csv:26 +msgid "Increases the item count by amount." +msgstr "增加指定数量的道具。" diff --git a/i18n/zh_Hans/error_database.po b/i18n/zh_Hans/error_database.po new file mode 100644 index 00000000..30887d23 --- /dev/null +++ b/i18n/zh_Hans/error_database.po @@ -0,0 +1,772 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#. Reference: IN_EXPECTED_AFTER_IDENTIFIER +#: script_checking/error_database.csv:40 +msgid "" +"You get this error when the name between the [code]for[/code] and [code]in[/" +"code] is not a valid variable name, or you are missing the [code]in[/code] " +"keyword.\n" +"\n" +"In a [code]for[/code] loop, the [code]in[/code] keyword only accepts a valid " +"temporary variable name to assign values in each loop iteration. The loop " +"creates a new variable with the desired name and assigns each element of the " +"array to it." +msgstr "" +"如果 [code]for[/code] 和 [code]in[/code] 之间的名称不是有效的变量名,或者缺" +"少 [code]in[/code] 关键字,则会出现此错误。\n" +"\n" +"在 [code]for[/code] 循环中,[code]in[/code] 关键字只接受有效的临时变量名,以" +"便在每次循环迭代中赋值。循环使用所需的名称创建一个新变量,并将数组的每个元素" +"赋值给它。" + +#. Reference: IN_EXPECTED_AFTER_IDENTIFIER +#: script_checking/error_database.csv:40 +msgid "" +"To fix this error, you need to ensure that the name between the [code]for[/" +"code] and [code]in[/code] keywords is a valid variable name with no " +"punctuation or spaces.\n" +"\n" +"For example, this code is invalid: [code]for cell_position.x in " +"cell_positions_array:[/code] because [code]cell_position.x[/code] isn't a " +"valid variable name.\n" +"\n" +"To access the [code]x[/code] sub-component of the variable, you need to do " +"that inside of the loop's body:\n" +"\n" +"[code]for cell_position in cell_positions_array:\n" +" cell_position.x += 1.0[/code]" +msgstr "" +"要解决此错误,您需要确保 [code]for[/code] 和 [code]in[/code] 关键字之间的名称" +"是一个有效的变量名,且没有标点符号或空格。\n" +"\n" +"例如,以下代码无效: [code]for cell_position.x in cell_positions_array:[/" +"code] 因为 [code]cell_position.x[/code] 不是一个有效的变量名。\n" +"\n" +"要访问变量的 [code]x[/code] 子组件,需要在循环的主体中进行:\n" +"\n" +"[code]for cell_position in cell_positions_array:\n" +" cell_position.x += 1.0[/code]" + +#. Reference: ASSIGNING_TO_EXPRESSION +#: script_checking/error_database.csv:47 +msgid "" +"If you get this error, you are most likely trying to assign a value to " +"something other than a variable, which is impossible. You can only assign " +"values to variables.\n" +"\n" +"Another possibility is that you want to check for equality in a condition " +"but wrote a single = instead of ==." +msgstr "" +"如果出现这个错误,很可能是你试图给变量以外的东西赋值,这是不可能的。你只能给" +"变量赋值。\n" +"\n" +"另一种可能是,你想在条件中检查相等性,但却写了一个 = 而不是 ==。" + +#. Reference: ASSIGNING_TO_EXPRESSION +#: script_checking/error_database.csv:47 +msgid "" +"If you want to assign a value to a variable, double-check that what you have " +"on the left side of the = sign is a variable and not a function.\n" +"\n" +"You also need to ensure the syntax is correct. For example, there shouldn't " +"be parentheses on the left side of the equal sign.\n" +"\n" +"In the case of a condition, ensure that you are using two equal signs to " +"check for equality (==)." +msgstr "" +"如果要给变量赋值,请仔细检查 = 符号左边的是变量而不是函数。\n" +"\n" +"您还需要确保语法正确。例如,等号左侧不应有括号。\n" +"\n" +"如果是条件,请确保使用两个等号来检查是否相等(==)。" + +#. Reference: CYCLIC_REFERENCE +#: script_checking/error_database.csv:57 +msgid "" +"A cyclic reference is when a class references itself, directly or " +"indirectly.\n" +"\n" +"It has two possible causes:\n" +"\n" +"1. You used the class name in the class itself.\n" +"2. Your code refers to another class that refers to this class, causing an " +"endless reference cycle.\n" +"\n" +"Either way, due to how GDScript works in Godot 3, unfortunately,you cannot " +"do this. Godot 4 should solve this problem, but you need to work around it " +"in the meantime." +msgstr "" +"循环引用指的是某个类引用自己,无论是直接引用还是间接引用。\n" +"\n" +"有两种可能的原因:\n" +"\n" +"1. 你在类里面用了自己的类名。\n" +"2. 你的代码引用了另一个类,而该类又引用了这个类,造成了无限循环引用。\n" +"\n" +"无论是哪一种原因,由于 Godot 3 中 GDScript 的内部原因,很遗憾,你都是不能这么" +"做的。Godot 4 应该会解决这个问题,但你目前需要寻找替代方案。" + +#. Reference: CYCLIC_REFERENCE +#: script_checking/error_database.csv:57 +msgid "" +"Erase the type hint in the error line, and the problem should disappear. \n" +"\n" +"At GDQuest, when we face this error, we remove the type hints on lines " +"causing cyclic references. It solves the problem in the vast majority of " +"cases." +msgstr "" +"将报错行的类型提示清除,问题应该就会消失。\n" +"\n" +"在 GDQuest,我们遇到这个错误时,就会将造成循环引用的行上的类型提示移除。在绝" +"大多数情况下都能解决问题。" + +#. Reference: INVALID_INDENTATION +#: script_checking/error_database.csv:64 +msgid "" +"The indentation of your code (the number of tab characters at the start of " +"the line) is incorrect.\n" +"\n" +"You are missing one or more tabs, or you inserted too many.\n" +"\n" +"The computer uses those leading tab characters on code lines to know which " +"lines of code are part of a code block, like a function." +msgstr "" +"代码的缩进(行首的制表符数量)不正确。\n" +"\n" +"您缺少一个或多个选项卡,或者您插入了太多选项卡。\n" +"\n" +"计算机使用代码行上的那些前导制表符来了解哪些代码行是代码块的一部分,例如函" +"数。" + +#. Reference: INVALID_INDENTATION +#: script_checking/error_database.csv:64 +msgid "" +"If the line of code with the error is right after a line ending with a " +"colon, like a function definition, you need one extra indent level compared " +"to the previous line.\n" +"\n" +"In other words, your line should have one more leading tab character than " +"the function definition." +msgstr "" +"如果出现错误的代码行紧跟在以冒号结尾的行之后,例如函数定义,则与前一行相比," +"您需要一个额外的缩进级别。\n" +"\n" +"换句话说,您的行应该比函数定义多一个前导制表符。" + +#. Reference: UNEXPECTED_CHARACTER +#: script_checking/error_database.csv:73 +msgid "" +"You get this error when you wrote something that is syntactically invalid, " +"or you are missing something to complete this line or previous lines of " +"code.\n" +"\n" +"You need to be extremely precise when you write code for the computer. This " +"kind of error is easy to get as all it takes is one wrong character.\n" +"\n" +"Note that this error can appear [b]after[/b] the line causing it due to how " +"the computer reads and analyzes your code." +msgstr "" +"当你写了一些语法上无效的东西,或者你缺少一些东西来完成这一行或前几行代码时," +"你会得到这个错误。\n" +"\n" +"为计算机编写代码时需要非常精确。 这种错误很容易得到,因为只需要一个错误的字" +"符。\n" +"\n" +"请注意,由于计算机如何读取和分析您的代码,此错误可能会出现在导致该错误的行之" +"后 [b][/b]。" + +#. Reference: UNEXPECTED_CHARACTER +#: script_checking/error_database.csv:73 +msgid "" +"The way to solve this kind of error is highly contextual. The error message " +"should tell you which character or element it's missing.\n" +"\n" +"If the error says \"expected,\" then you're likely missing something in one " +"of the [b]previous[/b] code lines. It could be a punctuation mark, a " +"parenthesis, or something else.\n" +"\n" +"If it says \"unterminated,\" you are missing some character at the end of an " +"expression, like a closing bracket. In this case, it most likely comes from " +"the line with the error." +msgstr "" +"解决这种错误的方法是高度上下文相关的。 错误消息应该告诉您它缺少哪个字符或元" +"素。\n" +"\n" +"如果错误显示“预期”,那么您可能在 [b]previous[/b] 代码行之一中遗漏了某些内" +"容。 它可以是标点符号、括号或其他东西。\n" +"\n" +"如果它显示“未终止”,则表示表达式末尾缺少某些字符,例如右括号。 在这种情况下," +"它很可能来自错误所在的行。" + +#. Reference: UNEXPECTED_CHARACTER_IN_KEYWORD +#: script_checking/error_database.csv:76 +msgid "" +"This error tells you that you are missing a parenthesis (or sometimes a " +"comma or a path).\n" +"\n" +"Three keywords in GDScript work like function calls and require parentheses: " +"[code]yield()[/code], [code]preload()[/code], and [code]assert()[/code]." +msgstr "" +"此错误告诉您缺少括号(有时是逗号或路径)。\n" +"\n" +"GDScript 中的三个关键字的作用类似于函数调用并需要括号:[code]yield()[/code]、" +"[code]preload()[/code] 和 [code]assert()[/code]。" + +#. Reference: UNEXPECTED_CHARACTER_IN_KEYWORD +#: script_checking/error_database.csv:76 +msgid "" +"To address the error, you want to add the missing opening parenthesis, the " +"closing parenthesis, or the comma." +msgstr "要解决该错误,您需要添加缺少的左括号、右括号或逗号。" + +#. Reference: UNEXPECTED_CHARACTER_IN_EXPORT_HINT +#: script_checking/error_database.csv:77 +msgid "" +"This error tells you you are missing some parenthesis, a comma, or some " +"value in your export hint." +msgstr "此错误告诉您在导出提示中缺少某些括号、逗号或某些值。" + +#. Reference: UNEXPECTED_CHARACTER_IN_EXPORT_HINT +#: script_checking/error_database.csv:77 +msgid "" +"You need to read the error message and add the missing character or value it " +"requests." +msgstr "您需要阅读错误消息并添加它请求的缺失字符或值。" + +#. Reference: MISPLACED_IDENTIFIER +#: script_checking/error_database.csv:86 +msgid "" +"This error happens in several cases:\n" +"\n" +"1. You wrote an identifier (variable or function name) in the wrong place.\n" +"2. You wrote a keyword like [code]var[/code], [code]func[/code], [code]for[/" +"code], or [code]signal[/code], and you did not follow it by a name.\n" +"3. You wrote a function definition but forgot the parentheses before the " +"colon." +msgstr "" +"在几种情况下会发生此错误:\n" +"\n" +"1. 你在错误的地方写了一个标识符(变量或函数名)。\n" +"2. 写了[code]var[/code]、[code]func[/code]、[code]for[/code]、[code]signal[/" +"code]这样的关键字,你没有按照 由一个名字。\n" +"3. 你写了一个函数定义,但忘记了冒号前的括号。" + +#. Reference: MISPLACED_IDENTIFIER +#: script_checking/error_database.csv:86 +msgid "" +"If the error tells you it expected something, you likely forgot to write a " +"name after a keyword like [code]var[/code], [code]func[/code], [code]for[/" +"code], or [code]signal[/code], making your code invalid. Or you forgot " +"parentheses in a function definition. You can address the error by adding " +"the missing name or parentheses.\n" +"\n" +"If the error says you have something unexpected, you are likely missing a " +"keyword like [code]var[/code], [code]func[/code], [code]for[/code], etc.\n" +"\n" +"Another possibility is that you need to write a colon at the end of a " +"function definition, [code]for[/code] loop, or a line starting with " +"[code]if[/code], [code]elif[/code], or [code]else[/code]." +msgstr "" +"如果错误告诉你它预期的东西,你可能忘记在关键字后写一个名称,如 [code]var[/" +"code]、[code]func[/code]、[code]for[/code] 或 [code] ]signal[/code],使您的代" +"码无效。 或者你忘记了函数定义中的括号。 您可以通过添加缺少的名称或括号来解决" +"错误。\n" +"\n" +"如果错误提示您有意外情况,您可能缺少 [code]var[/code]、[code]func[/code]、" +"[code]for[/code] 等关键字。\n" +"\n" +"另一种可能性是您需要在函数定义、[code]for[/code] 循环或以 [code]if[/code]、" +"[code]elif[/code] 开头的行的末尾写一个冒号 , 或 [code]else[/code]。" + +#. Reference: MISPLACED_TYPE_IDENTIFIER +#: script_checking/error_database.csv:91 +msgid "" +"This error tells you that you are missing a type somewhere. A type can be " +"[code]int[/code], [code]float[/code], [code]String[/code], [code]Array[/" +"code], [code]Vector2[/code], and many identifiers representing a data " +"structure.\n" +"\n" +"Most of the time, this error occurs when you wrote a colon after a variable " +"name but did not follow it with a type name.\n" +"\n" +"It also occurs when you write an arrow ([code]->[/code]) after the " +"parentheses of a function definition but do not follow it with a type name." +msgstr "" +"此错误告诉您在某处缺少类型。 类型可以是 [code]int[/code]、[code]float[/" +"code]、[code]String[/code]、[code]Array[/code]、[code]Vector2[/code] 和 许多" +"表示数据结构的标识符。\n" +"\n" +"大多数情况下,当您在变量名后写了一个冒号但后面没有跟类型名时,就会发生此错" +"误。\n" +"\n" +"当您在函数定义的括号后写一个箭头 ([code]->[/code]) 但后面没有跟类型名称时,也" +"会发生这种情况。" + +#. Reference: MISPLACED_TYPE_IDENTIFIER +#: script_checking/error_database.csv:91 +msgid "" +"To solve this, you need to write the name of the type after the colon, arrow " +"(in the case of function return types), inside parentheses (for export " +"types), or after the [code]as[/code] keyword." +msgstr "" +"为了解决这个问题,您需要在冒号、箭头(对于函数返回类型的情况下)、括号内(对" +"于导出类型)或 [code]as[/code] 关键字之后编写类型的名称。" + +#. Reference: NONEXISTENT_IDENTIFIER +#: script_checking/error_database.csv:100 +msgid "" +"The variable, function name, or class name you are trying to use does not " +"exist.\n" +"\n" +"You most often get this error when you make typos. Maybe you swapped two " +"letters, forgot a letter... sometimes, it's hard to spot.\n" +"\n" +"The other cause for this error is that you didn't define the variable, " +"function, or class you're trying to access." +msgstr "" +"您尝试使用的变量、函数名或类名不存在。\n" +"\n" +"当您打错字时,您最常遇到此错误。 也许你交换了两个字母,忘记了一个字母……有时," +"很难发现。\n" +"\n" +"此错误的另一个原因是您没有定义您尝试访问的变量、函数或类。" + +#. Reference: NONEXISTENT_IDENTIFIER +#: script_checking/error_database.csv:100 +msgid "" +"To solve this error, triple-check that there is no typo in the line.\n" +"\n" +"If you can, try to go to the variable or function definition, double-click " +"the name, copy it, and paste it where you see the error.\n" +"\n" +"If you don't see any typo, then you need to ensure that you defined the " +"variable, function, or class you are referring to." +msgstr "" +"要解决此错误,请仔细检查该行中是否存在拼写错误。\n" +"\n" +"如果可以,请尝试转到变量或函数定义,双击名称,复制它,然后将其粘贴到您看到错" +"误的位置。\n" +"\n" +"如果您没有看到任何拼写错误,那么您需要确保您定义了您所指的变量、函数或类。" + +#. Reference: MISPLACED_KEYWORD +#: script_checking/error_database.csv:105 +msgid "" +"You can only use keywords like [code]break[/code] or [code]continue[/code] " +"in a loop. Outside a loop, they are invalid.\n" +"\n" +"The [code]continue[/code] keyword means \"jump to the next iteration of the " +"loop.\" And the [code]break[/code] keyword means \"end the loop right now " +"and jump to the first line of code after the loop block." +msgstr "" +"您只能在循环中使用 [code]break[/code] 或 [code]continue[/code] 等关键字。 在" +"循环之外,它们是无效的。\n" +"\n" +"[code]continue[/code] 关键字的意思是“跳到循环的下一次迭代”。 而 [code]break[/" +"code] 关键字的意思是“立即结束循环并跳转到循环块之后的第一行代码。" + +#. Reference: MISPLACED_KEYWORD +#: script_checking/error_database.csv:105 +msgid "" +"If you wrote one of these keywords outside a loop, you need to remove it.\n" +"\n" +"If you are trying to use it inside a loop, your indentation is most likely " +"at fault. You may need to insert one or more leading tab characters to the " +"keyword." +msgstr "" +"如果您在循环之外编写了这些关键字之一,则需要将其删除。\n" +"\n" +"如果您尝试在循环中使用它,那么您的缩进很可能是错误的。 您可能需要在关键字中插" +"入一个或多个前导制表符。" + +#. Reference: EXPECTED_CONSTANT_EXPRESSION +#: script_checking/error_database.csv:110 +msgid "" +"When the computer talks about a constant expression, it expects a fixed " +"value, a fixed calculation, or the name of an existing constant.\n" +"\n" +"In other words, it wants something that can never change. This is why the " +"computer will reject function calls and variables where it needs a constant " +"expression." +msgstr "" +"当计算机谈论一个常量表达式时,它期望一个固定的值、一个固定的计算或一个现有常" +"量的名称。\n" +"\n" +"换句话说,它想要一些永远不会改变的东西。 这就是为什么计算机会拒绝需要常量表达" +"式的函数调用和变量。" + +#. Reference: EXPECTED_CONSTANT_EXPRESSION +#: script_checking/error_database.csv:110 +msgid "" +"You need to replace function calls or variables with a constant value like a " +"whole number, decimal number, string, vector, a predefined array, etc.\n" +"\n" +"You can also use arithmetic operators like multiplications (*), additions " +"(+), and so on." +msgstr "" +"您需要将函数调用或变量替换为常数值,例如整数、十进制数、字符串、向量、预定义" +"数组等。\n" +"\n" +"您还可以使用算术运算符,例如乘法 (*)、加法 (+) 等。" + +#. Reference: INVALID_CLASS_DECLARATION +#: script_checking/error_database.csv:115 +msgid "" +"When defining a new class, you need to follow a specific pattern. You must " +"write the name in plain text, starting with a letter.\n" +"\n" +"We typically write class names in PascalCase: with a capital letter at the " +"start of every word that composes the class name." +msgstr "" +"定义新类时,您需要遵循特定模式。 您必须以纯文本形式书写名称,以字母开头。\n" +"\n" +"我们通常用 PascalCase 写类名:在组成类名的每个单词的开头都有一个大写字母。" + +#. Reference: INVALID_CLASS_DECLARATION +#: script_checking/error_database.csv:115 +msgid "" +"To fix this error, replace whatever you put after the 'extends' or " +"'class_name' keyword by a name without spaces and starting with a capital " +"letter.\n" +"\n" +"You can optionally use numbers in the name, but not in the first position." +msgstr "" +"要修复此错误,请将您在 'extends' 或 'class_name' 关键字之后放置的任何内容替换" +"为不带空格且以大写字母开头的名称。\n" +"\n" +"您可以选择在名称中使用数字,但不能在第一个位置使用。" + +#. Reference: DUPLICATE_DECLARATION +#: script_checking/error_database.csv:120 +msgid "" +"You are trying to define a function or variable that already exists; You " +"can't do that.\n" +"\n" +"Perhaps the function or variable already exists in the current code file, " +"but it may also be in a parent class that this GDScript code extends." +msgstr "" +"您正在尝试定义一个已经存在的函数或变量; 你不能那样做。\n" +"\n" +"可能函数或变量已经存在于当前代码文件中,但它也可能位于此 GDScript 代码扩展的" +"父类中。" + +#. Reference: DUPLICATE_DECLARATION +#: script_checking/error_database.csv:120 +msgid "" +"In the app, your code extends some built-in Godot code that's not visible to " +"you.\n" +"\n" +"When that happens, you need to either rename your function or variable to " +"one that will not collide with an existing one or remove this line of code." +msgstr "" +"在应用程序中,您的代码扩展了一些您看不到的内置 Godot 代码。\n" +"\n" +"发生这种情况时,您需要将函数或变量重命名为不会与现有函数或变量发生冲突的函数" +"或变量,或者删除这行代码。" + +#. Reference: DUPLICATE_SIGNAL_DECLARATION +#: script_checking/error_database.csv:125 +msgid "" +"You are trying to define a signal that already exists; You can't do that.\n" +"\n" +"Perhaps the signal already exists in the current code file, but it may also " +"be in a parent class that this GDScript code extends." +msgstr "" +"您正在尝试定义一个已经存在的信号; 你不能那样做。\n" +"\n" +"可能信号已经存在于当前代码文件中,但它也可能位于此 GDScript 代码扩展的父类" +"中。" + +#. Reference: DUPLICATE_SIGNAL_DECLARATION +#: script_checking/error_database.csv:125 +msgid "" +"In the app, your code extends some built-in Godot code that's not visible to " +"you.\n" +"\n" +"When that happens, you need to either rename your signal to one that will " +"not collide with an existing one or remove this line of code." +msgstr "" +"在应用程序中,您的代码扩展了一些您看不到的内置 Godot 代码。\n" +"\n" +"发生这种情况时,您需要将信号重命名为不会与现有信号冲突的信号,或者删除这行代" +"码。" + +#. Reference: SIGNATURE_MISMATCH +#: script_checking/error_database.csv:130 +msgid "" +"The function you're trying to define exists in a parent class, so your " +"definition overrides the parent class's function.\n" +"\n" +"When you override a parent class's function, the new function must match the " +"parent. The new function should have the same number and type of parameters " +"as the parent class.\n" +"\n" +"For example, if the parent has two arguments, you need your new function " +"also to have two arguments. If you use type hints in your function " +"definitions, the argument types must match the parent class." +msgstr "" +"您尝试定义的函数存在于父类中,因此您的定义会覆盖父类的函数。\n" +"\n" +"当您覆盖父类的函数时,新函数必须与父类匹配。 新函数应具有与父类相同数量和类型" +"的参数。\n" +"\n" +"例如,如果父函数有两个参数,则您的新函数也需要有两个参数。 如果您在函数定义中" +"使用类型提示,则参数类型必须与父类匹配。" + +#. Reference: SIGNATURE_MISMATCH +#: script_checking/error_database.csv:130 +msgid "" +"You need to check the parent class's function and its definition in the code " +"reference. Then, you need to edit your function definition to have the same " +"number and type of parameters as the parent class." +msgstr "" +"您需要在代码参考中检查父类的函数及其定义。 然后,您需要编辑函数定义,使其具有" +"与父类相同数量和类型的参数。" + +#. Reference: INVALID_ARGUMENTS +#: script_checking/error_database.csv:131 +msgid "" +"This whole class of errors has to do with calling functions with either the " +"wrong number of arguments or the wrong kind of argument. You will need to " +"use the error message to see what is going wrong." +msgstr "" +"这类错误与使用错误数量的参数或错误类型的参数调用函数有关。 您将需要使用错误消" +"息来查看问题所在。" + +#. Reference: INVALID_ARGUMENTS +#: script_checking/error_database.csv:131 +msgid "" +"You need to either remove, add, or change the values you're trying to pass " +"to the function to solve this issue. To know exactly how many arguments you " +"need, you need to check the code reference. It will show you the function " +"definition and the mandatory arguments." +msgstr "" +"您需要删除、添加或更改您尝试传递给函数的值以解决此问题。 要确切知道您需要多少" +"个参数,您需要检查代码参考。 它将向您显示函数定义和强制参数。" + +#. Reference: TYPE_MISMATCH +#: script_checking/error_database.csv:142 +msgid "" +"All the values in your code have a specific type. That type can be a whole " +"number (int), a decimal number (float), text (String), and so on. There are " +"tons of possible types, and you can even define your own!\n" +"\n" +"When you make any operation, the computer compares the types you are using.\n" +"\n" +"Some types are compatible, and some are not. For example, you cannot " +"directly add a whole number to a text string. You first need to convert the " +"number into text.\n" +"\n" +"You'll need to read the error message to see what is not matching because " +"there are many possible cases." +msgstr "" +"代码中的所有值都具有特定类型。 该类型可以是整数 (int)、十进制数 (float)、文" +"本 (String) 等。 有很多可能的类型,您甚至可以定义自己的类型!\n" +"\n" +"当您进行任何操作时,计算机会比较您正在使用的类型。\n" +"\n" +"有些类型兼容,有些则不兼容。 例如,您不能直接将整数添加到文本字符串中。 您首" +"先需要将数字转换为文本。\n" +"\n" +"您需要阅读错误消息以查看不匹配的内容,因为有很多可能的情况。" + +#. Reference: TYPE_MISMATCH +#: script_checking/error_database.csv:142 +msgid "" +"If the error mentions the assigned value type not matching the variable, the " +"problem is on the right side of the equal sign (=).\n" +"\n" +"If the error talks about the return type not matching the function, then it " +"is the value after the return keyword that is problematic.\n" +"\n" +"If the computer talks about an invalid operand, then the issue is that the " +"operation does not exist for the type you're trying to use. For example, " +"while you can add two 2D vectors, you can't add a whole number or text to a " +"2D vector." +msgstr "" +"如果错误提到分配的值类型与变量不匹配,则问题出在等号 (=) 的右侧。\n" +"\n" +"如果错误是关于返回类型与函数不匹配,那么是 return 关键字后面的值有问题。\n" +"\n" +"如果计算机谈论无效的操作数,那么问题是您尝试使用的类型不存在该操作。 例如,虽" +"然您可以添加两个 2D 矢量,但不能将整数或文本添加到 2D 矢量。" + +#. Reference: TYPE_CANNOT_BE_INFERRED +#: script_checking/error_database.csv:147 +msgid "" +"GDScript supports type inference. The computer will automatically recognize " +"the type of value you are working with. In some cases, though, it can't " +"figure it out.\n" +"\n" +"When that happens, you need to specify the type yourself or remove type " +"inference altogether for this variable." +msgstr "" +"GDScript 支持类型推断。 计算机将自动识别您正在使用的值的类型。 但是,在某些情" +"况下,它无法弄清楚。\n" +"\n" +"发生这种情况时,您需要自己指定类型或完全删除此变量的类型推断。" + +#. Reference: TYPE_CANNOT_BE_INFERRED +#: script_checking/error_database.csv:147 +msgid "" +"The simplest way to solve this error is to remove types for this variable or " +"this function's arguments. Otherwise, you can manually specify the value " +"type after the colon.\n" +"\n" +"We recommend specifying the type whenever possible to reap the typing " +"system's benefits." +msgstr "" +"解决此错误的最简单方法是删除此变量或此函数参数的类型。 否则,您可以在冒号后手" +"动指定值类型。\n" +"\n" +"我们建议尽可能指定类型以获得打字系统的好处。" + +#. Reference: RETURN_VALUE_MISMATCH +#: script_checking/error_database.csv:153 +msgid "" +"There is an issue with the return value of your function. There are two main " +"cases here:\n" +"\n" +"1. Your function is a void function, thus it should not return a value. This " +"includes functions with the '-> void' syntax and class constructors " +"('_init()').\n" +"2. You specified a return type for your function, but you are not returning " +"a value in all possible branches (if, elif, and else blocks) or at the end." +msgstr "" +"您的函数的返回值存在问题。 这里主要有两种情况:\n" +"\n" +"1. 你的函数是一个 void 函数,因此它不应该返回一个值。 这包括具有'-> void' 语" +"法的函数和类构造函数('_init()')。\n" +"2. 你为你的函数指定了一个返回类型,但你没有在所有可能的分支(if、elif 和 " +"else 块)中或最后返回一个值。" + +#. Reference: RETURN_VALUE_MISMATCH +#: script_checking/error_database.csv:153 +msgid "" +"When your function is 'void', you should never return a value. You can use " +"the 'return' keyword to end the function early, but you should never write " +"anything after that.\n" +"\n" +"When you use a return type, you must always return something at the end of " +"the function or in every branch (if, elif, and else block) of the function." +msgstr "" +"当你的函数是'void'时,你永远不应该返回一个值。 你可以使用'return'关键字来提前" +"结束函数,但你不应该在那之后写任何东西。\n" +"\n" +"当您使用返回类型时,您必须始终在函数的末尾或函数的每个分支(if、elif 和 else " +"块)中返回一些内容。" + +#. Reference: INVALID_NO_CATCH +#: script_checking/error_database.csv:154 +msgid "" +"Godot was unable to load your script, yet the language checker found nothing " +"wrong." +msgstr "" +"Godot 无法加载您的脚本,但语言检查器服务器没有发现任何错误。 你可能不在线。" + +#. Reference: INVALID_NO_CATCH +#: script_checking/error_database.csv:154 +msgid "" +"Please click on the \"report\" button at the top and please let us know." +msgstr "" +"如果您处于离线状态,则会出现此错误。 否则,请点击顶部的“举报”按钮,并告知我" +"们。" + +#. Reference: RECURSIVE_FUNCTION +#: script_checking/error_database.csv:155 +msgid "You called a function inside itself. This will loop forever." +msgstr "您在其内部调用了一个函数。 这将永远循环。" + +#. Reference: RECURSIVE_FUNCTION +#: script_checking/error_database.csv:155 +msgid "" +"There are valid reasons for using recursive functions, but none of them are " +"part of this course, so this cannot be a valid solution." +msgstr "" +"使用递归函数有正当理由,但它们都不是本课程的一部分,因此这不是一个有效的解决" +"方案。" + +#. Reference: UNEXPECTED_EOL +#: script_checking/error_database.csv:157 +msgid "" +"The computer reached the end of the line of code, but the line had a syntax " +"error.\n" +"The most common case is when you forget to close a string: you have opening " +"quotes, but you forget to add a matching closing quote." +msgstr "" +"计算机运行到代码行的末尾,但该行出现了语法错误。\n" +"最常见的情况是忘记关闭字符串:有了开头引号,却忘记添加结尾引号。" + +#. Reference: UNEXPECTED_EOL +#: script_checking/error_database.csv:157 +msgid "" +"Double-check that you are not missing a quote character or that the quote " +"character you used to start the string is the same as the one you used to " +"close the string." +msgstr "" +"仔细检查是否缺少一个引号字符,或者用于开始字符串的引号字符与用于结束字符串的" +"引号字符是否相同(译者注:单双引号要匹配)。" + +#. Reference: CANT_GET_INDEX +#: script_checking/error_database.csv:160 +msgid "The sub-variable you are trying to access does not exist." +msgstr "您试图访问的子变量不存在。" + +#. Reference: CANT_GET_INDEX +#: script_checking/error_database.csv:160 +msgid "" +"You probably have a typo in the name of the sub-variable that you are trying " +"to access.\n" +"\n" +"Ensure that you don't have a capital letter where you should have a " +"lowercase letter and vice versa." +msgstr "" +"您尝试访问的子变量名可能有错别字。\n" +"\n" +"确保本应使用小写字母的地方没有大写字母,反之亦然。" + +#~ msgid "" +#~ "The server or your computer may currently be disconnected. Also, an app " +#~ "or browser add-on may be blocking the connection. If you use an ad " +#~ "blocker or script blocker, please disable it for this website." +#~ msgstr "" +#~ "服务器或您的计算机当前可能已断开连接。 此外,应用程序或浏览器插件可能会阻" +#~ "止连接。 如果您使用广告拦截器或脚本拦截器,请为本网站禁用它。" + +#~ msgid "" +#~ "Please make sure you're connected to the internet. If you use an ad " +#~ "blocker or script blocker, please ensure it is turned off on this page." +#~ msgstr "" +#~ "请确保您已连接到互联网。 如果您使用广告拦截器或脚本拦截器,请确保在此页面" +#~ "上将其关闭。" + +#~ msgid "" +#~ "Either your connection is very slow, or the Language Verifier server is " +#~ "under load" +#~ msgstr "您的连接速度很慢,或者语言验证器服务器负载不足" + +#~ msgid "" +#~ "Please try again, and if it happens again, warn us with the \"report\" " +#~ "button at the top. Thank you!" +#~ msgstr "请再试一次,如果再次发生,请使用顶部的“报告”按钮警告我们。 谢谢!" diff --git a/i18n/zh_Hans/glossary_database.po b/i18n/zh_Hans/glossary_database.po new file mode 100644 index 00000000..1847643d --- /dev/null +++ b/i18n/zh_Hans/glossary_database.po @@ -0,0 +1,598 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2022-06-12 09:33+0000\n" +"Last-Translator: Haoyu Qiu \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.13-dev\n" +"Generated-By: Babel 2.9.1\n" + +#. Reference: member function +#: course/glossary.csv:6 +msgid "member function" +msgstr "成员函数" + +#. Reference: member function +#: course/glossary.csv:6 +msgid "member functions" +msgstr "成员函数" + +#. Reference: member function +#: course/glossary.csv:6 +msgid "" +"Member functions are functions attached to a specific value type, like " +"arrays, strings, or dictionaries. We also call them methods.\n" +"\n" +"For example, arrays have member functions like [code]array.append()[/code].\n" +"\n" +"You can only call the function on an array, using the access operator " +"([code].[/code]) to access it, as shown above." +msgstr "" +"成员函数是附加在数组、字符串、字典等特定的值类型上的函数。我们也管它们叫方" +"法。\n" +"\n" +"例如,数组有 [code]array.append()[/code] 等成员函数。\n" +"\n" +"你只能在数组上调用该函数,和上面一样使用访问操作符([code].[/code])进行访" +"问。" + +#. Reference: member variable +#: course/glossary.csv:9 +msgid "member variable" +msgstr "成员变量" + +#. Reference: member variable +#: course/glossary.csv:9 +msgid "member variables" +msgstr "成员变量" + +#. Reference: member variable +#: course/glossary.csv:9 +msgid "" +"Member variables are variables attached to a specific value type, like a " +"vector's [code]x[/code] and [code]y[/code] sub-variables. We also call them " +"[i]properties[/i] or [i]fields[/i] of the vector.\n" +"\n" +"To access a member variable, you must first write the value's name followed " +"by the access operator ([code].[/code]). For example, [code]position.x[/" +"code]." +msgstr "" +"成员变量是附加在特定值类型上的变量,类似向量的 [code]x[/code] 和 [code]y[/" +"code] 子变量。我们也管它们叫[i]属性[/i],或者向量的[i]字段[/i]。\n" +"\n" +"要访问成员变量,你必须先写出这个值的名称,然后跟上访问操作符([code].[/" +"code])。例如,[code]position.x[/code]。" + +#. Reference: parameter +#: course/glossary.csv:12 +msgid "parameter" +msgstr "形式参数" + +#. Reference: parameter +#: course/glossary.csv:12 +msgid "parameters" +msgstr "形式参数" + +#. Reference: parameter +#: course/glossary.csv:12 +msgid "" +"A parameter is a variable you create as part of a function definition.\n" +"\n" +"It allows you to reuse the function more by having values that vary in the " +"function's body." +msgstr "" +"形式参数(形参)是你创建的一个变量,是函数定义的一部分。\n" +"\n" +"可以用来提高函数的可复用性,让函数体中的值能够变化。" + +#. Reference: radian +#: course/glossary.csv:17 +msgid "radian" +msgstr "弧度" + +#. Reference: radian +#: course/glossary.csv:17 +msgid "radians" +msgstr "弧度" + +#. Reference: radian +#: course/glossary.csv:17 +msgid "" +"A radian is a unit of measurement of angles based on the circle's " +"circumference.\n" +"\n" +"We tend to use degrees more in our daily lives, but in computer programming, " +"and especially in games, radians are common.\n" +"\n" +"An angle of [code]2 * PI[/code] radians corresponds to 360 degrees. And an " +"angle of [code]PI[/code] radians corresponds to 180 degrees." +msgstr "" +"弧度是角的度量单位,基于圆的周长。\n" +"\n" +"我们在日常生活中更倾向于使用“度”,但在计算机编程中,尤其是游戏中,更加常见的" +"是弧度。\n" +"\n" +"弧度为 [code]2 * PI[/code] 的角对应 360 度。弧度为 [code]PI[/code] 的角对应 " +"180 度。" + +#. Reference: type +#: course/glossary.csv:20 +msgid "type" +msgstr "类型" + +#. Reference: type +#: course/glossary.csv:20 +msgid "types" +msgstr "类型" + +#. Reference: type +#: course/glossary.csv:20 +msgid "" +"In computer programming, a type is the class of a value. For example, whole " +"numbers like [code]3[/code], [code]11[/code], and [code]255462[/code] are " +"all of type [code]int[/code] (short for integer).\n" +"\n" +"The computer uses types to determine which operations are valid between two " +"values and when they're undefined." +msgstr "" +"在计算机编程中,类型是值的分类。例如,[code]3[/code]、[code]11[/code]、" +"[code]255462[/code] 等整数都是 [code]int[/code] 类型的(int 是 integer 的缩" +"写,即整数)。\n" +"\n" +"计算机使用类型来确定两个值之间的有效操作,以及确定值是否未定义。" + +#. Reference: iteration +#: course/glossary.csv:23 +msgid "iteration" +msgstr "迭代" + +#. Reference: iteration +#: course/glossary.csv:23 +msgid "iterations" +msgstr "迭代" + +#. Reference: iteration +#: course/glossary.csv:23 +msgid "" +"In computer code, an iteration is one repetition of some process or code. We " +"typically use the term with loops, where one iteration is one run of the " +"loop's code.\n" +"\n" +"When talking of algorithms, an iteration can mean a full pass of the " +"algorithm on a data set." +msgstr "" +"在计算机代码中,迭代指的是某些过程及代码的一次重复。我们一般会在循环中使用这" +"个术语,一次迭代表示执行一次循环中的代码。\n" +"\n" +"对于算法而言,一次迭代也可以表示对某个数据集完整地应用一次该算法。" + +#. Reference: vector +#: course/glossary.csv:28 +msgid "vector" +msgstr "向量" + +#. Reference: vector +#: course/glossary.csv:28 +msgid "vectors" +msgstr "向量" + +#. Reference: vector +#: course/glossary.csv:28 +msgid "" +"In math, a vector is a list of numbers. In games, we often use 2D and 3D " +"vectors: respectively, lists of two and three numbers.\n" +"\n" +"We use that to represent a direction and magnitude or intensity in space. " +"For example, you can use a vector to represent the direction and speed at " +"which a character or a vehicle moves.\n" +"\n" +"Vectors can seem daunting at first because they are pretty abstract, but as " +"you will see, they'll simplify code tremendously." +msgstr "" +"在数学中,向量是一组数字。在游戏中,我们经常使用 2D 和 3D 向量:分别对应两个" +"数字以及三个数字。\n" +"\n" +"我们会用它来表示方向以及空间中的长度或强度。例如,你可以使用向量来表示角色或" +"载具移动的方向和速度。\n" +"\n" +"向量一开始可能看上去很吓人,因为非常抽象,不过你会发现,它们能够极大地简化代" +"码。" + +#. Reference: argument +#: course/glossary.csv:37 +msgid "argument" +msgstr "实际参数" + +#. Reference: argument +#: course/glossary.csv:37 +msgid "arguments" +msgstr "实际参数" + +#. Reference: argument +#: course/glossary.csv:37 +msgid "" +"An argument is a value that you pass to a function when calling the " +"function. For example, in the call [code]rotate(0.5)[/code], the value " +"[code]0.5[/code] in the parentheses is an argument.\n" +"\n" +"A function can receive no arguments, one argument, or multiple arguments. " +"Arguments can be mandatory or optional.\n" +"\n" +"When a function takes multiple arguments, you separate the values with " +"commas, like in this function call: [code]jump(50, 100)[/code]\n" +"\n" +"When [i]calling[/i] a function, we name the values passed in parentheses " +"[i]arguments[/i].\n" +"\n" +"When writing a function definition, however, we talk about function " +"[i]parameters[/i]. In the following example, the names [code]x[/code] and " +"[code]y[/code] are [i]parameters[/i]." +msgstr "" +"实际参数(实参)是调用函数时你传入函数的值。例如调用 [code]rotate(0.5)[/" +"code] 时,括号中的 [code]0.5[/code] 就是一个实参。\n" +"\n" +"函数可以不接受参数、接受一个参数、也可以接受多个参数。实参可能是必须的,也可" +"能是可选的。\n" +"\n" +"函数接受多个参数时,值与值之间用逗号分隔,例如这个函数调用:[code]jump(50, " +"100)[/code]\n" +"\n" +"[i]调用[/i]函数时,我们把括号中传入的值叫做[i]实际参数[/i]。\n" +"\n" +"编写函数定义时,我们把它们叫作[i]形式参数[/i]。在下面的例子中,[code]x[/" +"code] 和 [code]y[/code] 都是[i]形式参数[/i]。" + +#. Reference: array +#: course/glossary.csv:44 +msgid "array" +msgstr "数组" + +#. Reference: array +#: course/glossary.csv:44 +msgid "arrays" +msgstr "数组" + +#. Reference: array +#: course/glossary.csv:44 +msgid "" +"An array is a list of values. In GDScript, arrays can contain [i]any[/i] " +"types of value.\n" +"\n" +"To create an array, you write comma-separated values in square brackets: " +"[code]var three_numbers = [1, 2, 3][/code]\n" +"\n" +"In games, we use arrays all the time to store lists of characters in a " +"party, lists of items in inventory, lists of spells the player unlocked, and " +"so on. They're everywhere.\n" +"\n" +"Arrays are a fundamental value type in computer programming. You'll find " +"arrays in pretty much any programming language." +msgstr "" +"数组是一组值。在 GDScript 中,数组可以包含[i]任意[/i]类型的值。\n" +"\n" +"创建数组的方法是将值写在方括号中,值与值之间用逗号分隔:[code]var " +"three_numbers = [1, 2, 3][/code]\n" +"\n" +"在游戏中,我们会一直用到数组:保存组队的角色、背包中的道具、解锁的法术等等。" +"哪里都有数组的身影。\n" +"\n" +"数组是计算机编程中的一种基础值类型。几乎在任何编程语言中都能找到数组。" + +#. Reference: assign +#: course/glossary.csv:45 +msgid "assign" +msgstr "赋值" + +#. Reference: assign +#: course/glossary.csv:45 +msgid "" +"Assigning a value to a variable means that you store a value inside the " +"variable. You do this with the equal sign ([code]=[/code])." +msgstr "为变量赋值指的是将值存入变量。使用等号进行赋值([code]=[/code])。" + +#. Reference: dictionary +#: course/glossary.csv:52 +msgid "dictionary" +msgstr "字典" + +#. Reference: dictionary +#: course/glossary.csv:52 +msgid "dictionaries" +msgstr "字典" + +#. Reference: dictionary +#: course/glossary.csv:52 +msgid "" +"A dictionary is a data structure that maps values with key-value pairs. When " +"you give the dictionary a key, it finds and gives you back the corresponding " +"value.\n" +"\n" +"In GDScript, keys can be many things. We often use text strings or numbers, " +"but you're not limited to that. A [code]Vector2[/code] can also be a valid " +"key, which is handy to map a grid cell to a unit or an item in a grid-based " +"game.\n" +"\n" +"You will often use dictionaries to associate bits of data in your games. For " +"example, we could use them to associate an equipment's name with its weapon " +"stats in a database.\n" +"\n" +"Like arrays, they are a fundamental data type that you will see in many " +"programming languages and use a lot." +msgstr "" +"数组是一种使用键值对映射值的数据结构。你把键提供给字典,字典会进行查找并将其" +"对应的值返回给你。\n" +"\n" +"在 GDScript 中,很多东西都可以作为键使用。我们经常使用的是文本字符串或者数" +"字,不过实际并不仅限于此。[code]Vector2[/code] 也可以作为有效的键,可以在基于" +"网格的游戏中很方便地将格子映射到某个单位或者道具。\n" +"\n" +"在游戏中你会经常使用字典来关联各种数据。例如,我们可以使用字典在数据库中将装" +"备的名称与对应的武器数值关联起来。\n" +"\n" +"与数组类似,它们都是在很多编程语言里都会见到的基础数据类型,很常用。" + +#. Reference: for loop +#: course/glossary.csv:59 +msgid "for loop" +msgstr "for 循环" + +#. Reference: for loop +#: course/glossary.csv:59 +msgid "for loops" +msgstr "for 循环" + +#. Reference: for loop +#: course/glossary.csv:59 +msgid "" +"A for loop instructs the computer to repeat a set of instructions once for " +"each value in an array.\n" +"\n" +"In each loop iteration, the compiler extracts one value from the array and " +"gives you access to it in the loop's body.\n" +"\n" +"For loops run code a limited amount of times: one per value in the array. It " +"is different from while loops that keep repeating code until a condition is " +"met.\n" +"\n" +"We recommend favoring for loops when you can. They're safer and easier to " +"use than while loops." +msgstr "" +"for 循环会让计算机针对数组中的每一个值重复一组指令。\n" +"\n" +"在每一次循环迭代中,编译器都会提取数组中的一个值,让你能够在循环体中进行访" +"问。\n" +"\n" +"for 循环会把代码执行若干次:数组中的每个值都对应执行一次。while 循环则不同," +"只要条件没有达成,会一直重复执行代码。\n" +"\n" +"我们推荐尽可能使用 for 循环,比 while 循环更安全,也更容易使用。" + +#. Reference: function +#: course/glossary.csv:64 +msgid "function" +msgstr "函数" + +#. Reference: function +#: course/glossary.csv:64 +msgid "functions" +msgstr "函数" + +#. Reference: function +#: course/glossary.csv:64 +msgid "" +"A function is a group of code instructions you give a name. When you define " +"a function, you can call it any time to run all the instructions it " +"contains.\n" +"\n" +"You can modify a function's behavior with parameters. Parameters are " +"variable names that you write in the function definition. You can then use " +"them in the function's body to make your code adapt to different cases.\n" +"\n" +"Also, functions can optionally return a value to the code calling it." +msgstr "" +"函数一组代码指令,你为其指定了名称。定义函数之后,任何时候都可以对其进行调" +"用,执行它所包含的所有指令。\n" +"\n" +"你可以通过参数来修改函数的行为。参数是你写在函数定义中的变量名,可以在函数体" +"内使用,让你的代码适应不同的情况。\n" +"\n" +"另外,函数还可以向调用它的代码返回一个值。" + +#. Reference: increment +#: course/glossary.csv:65 +msgid "increment" +msgstr "增量" + +#. Reference: increment +#: course/glossary.csv:65 +msgid "increments" +msgstr "增量" + +#. Reference: increment +#: course/glossary.csv:65 +msgid "An increment is the amount by which a value changes in your code." +msgstr "增量是代码中值的变化量。" + +#. Reference: instruction +#: course/glossary.csv:68 +msgid "instruction" +msgstr "指令" + +#. Reference: instruction +#: course/glossary.csv:68 +msgid "instructions" +msgstr "指令" + +#. Reference: instruction +#: course/glossary.csv:68 +msgid "" +"In computer programming, instructions are a single operation the computer " +"recognizes and can execute.\n" +"\n" +"For example, a function call, an addition, or assigning a value to a " +"variable." +msgstr "" +"在计算机编程中,指令是计算机所能够识别并执行的单个操作。\n" +"\n" +"例如函数调用、加法、为变量赋值。" + +#. Reference: variable +#: course/glossary.csv:77 +msgid "variable" +msgstr "变量" + +#. Reference: variable +#: course/glossary.csv:77 +msgid "variables" +msgstr "变量" + +#. Reference: variable +#: course/glossary.csv:77 +msgid "" +"Variables are a tool to give a name to values you want to store in your code " +"and change over time.\n" +"\n" +"For example, a character's health: when the character takes a hit, you want " +"it to go down. When healing, you want the health to go back up.\n" +"\n" +"You can create a variable named [code]health[/code] to represent the " +"health.\n" +"\n" +"Then, every time you write the keyword [code]health[/code] in your code, the " +"computer will fetch the corresponding value in its memory for you.\n" +"\n" +"Variables work a bit like product labels in a supermarket. They are names " +"that you attach to some value. Any time, you can take the label and stick it " +"onto a new product or, in that case, a new value." +msgstr "" +"变量是一种工具,可以为你想要在代码中存储并修改的值起一个名字。\n" +"\n" +"例如,角色的血量:角色受到攻击时,你希望血量减少。受到治疗时,你希望血量增" +"加。\n" +"\n" +"你可以创建一个名叫 [code]health[/code] 的变量来代表血量。\n" +"\n" +"此后,你每次在代码中写下 [code]health[/code] 关键字,计算机都会为你从内存中获" +"取对应的值。\n" +"\n" +"变量的原理类似于超市里的货品标签。他们是你为某些值附加的名称。你随时都可以把" +"这个标签撕下来贴到其他新的货品,也就是新的值上。" + +#. Reference: while loop +#: course/glossary.csv:84 +msgid "while loop" +msgstr "while 循环" + +#. Reference: while loop +#: course/glossary.csv:84 +msgid "while loops" +msgstr "while 循环" + +#. Reference: while loop +#: course/glossary.csv:84 +msgid "" +"A while loop instructs the computer to keep running code based on a " +"condition. While the condition is true, the loop keeps running.\n" +"\n" +"When coding while loops, you must be careful: they will keep running " +"infinitely and freeze your game if you get the condition wrong.\n" +"\n" +"That's why we recommend using the safer for loop whenever you can.\n" +"\n" +"However, there are still essential cases in which we use while loops, like " +"processing files, processing computer code, or for powerful algorithms." +msgstr "" +"while 循环会让计算机根据某个条件来持续运行代码。只要条件成立,循环就保持运" +"行。\n" +"\n" +"编写 while 循环时,你必须小心:如果条件设得有问题,那么就会无限运行下去,让游" +"戏死机。\n" +"\n" +"这就是我们推荐尽可能使用更安全的 for 循环的原因。\n" +"\n" +"然而,我们还是会在一些重要的情况下使用 while 循环,例如处理文件、处理计算机代" +"码、或者强大的算法。" + +#. Reference: body +#: course/glossary.csv:85 +msgid "body" +msgstr "体" + +#. Reference: body +#: course/glossary.csv:85 +msgid "" +"We talk about a loop or a function's body to refer to the lines of code that " +"are part of the loop or function." +msgstr "我们使用“循环体”或者“函数体”来指代在循环或者函数内所执行的那些代码。" + +#. Reference: return +#: course/glossary.csv:88 +msgid "return" +msgstr "返回" + +#. Reference: return +#: course/glossary.csv:88 +msgid "" +"Returning a value is the process of sending a value to the place where you " +"call a function.\n" +"\n" +"It happens when a function uses the [code]return[/code] keyword followed by " +"a value, for example: [code]return -1[/code]." +msgstr "" +"返回一个值指的是向调用函数的地方发送一个值的过程。\n" +"\n" +"在函数中使用 [code]return[/code] 关键字,后面加上一个值,就会触发返回,例如:" +"[code]return -1[/code]。" + +#. Reference: library +#: course/glossary.csv:89 +msgid "library" +msgstr "库" + +#. Reference: library +#: course/glossary.csv:89 +msgid "libraries" +msgstr "库" + +#. Reference: library +#: course/glossary.csv:89 +msgid "" +"A collection of valuable and reusable code bundled together by other " +"programmers to save you time. All programmers use code libraries." +msgstr "" +"重要且可复用的代码合集,由其他程序员打包,可以为你节省时间。所有程序员都会用" +"到代码库。" + +#. Reference: sprite +#: course/glossary.csv:90 +msgid "sprite" +msgstr "精灵" + +#. Reference: sprite +#: course/glossary.csv:90 +msgid "sprites" +msgstr "精灵" + +#. Reference: sprite +#: course/glossary.csv:90 +msgid "" +"In computer graphics, a sprite is an image you display on the screen. We " +"generally use this word to talk about moving images, like a character, a " +"monster, or an item falling on the ground." +msgstr "" +"在计算机图形学中,精灵指的是你屏幕上所显示的一张图像。我们通常会使用这个词来" +"形容移动的图像,例如角色、怪物、掉到地上的道具。" diff --git a/i18n/zh_Hans/lesson-1-what-code-is-like.po b/i18n/zh_Hans/lesson-1-what-code-is-like.po new file mode 100644 index 00000000..cba90c60 --- /dev/null +++ b/i18n/zh_Hans/lesson-1-what-code-is-like.po @@ -0,0 +1,412 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2023-06-13 06:50+0000\n" +"Last-Translator: suplife <2634557184@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.18-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-1-what-code-is-like/lesson.tres:14 +msgid "" +"Learning to program can be daunting.\n" +"\n" +"Yet, you want to make video games, so [b]there is no way around learning to " +"program[/b]. [i]Every[/i] video game is a computer program." +msgstr "" +"学习编程可能令人生畏。\n" +"\n" +"然而,你想要制作游戏,那么[b]除了学习编程别无他法[/b]。[i]所有[/i]游戏都是计" +"算机程序。" + +#: course/lesson-1-what-code-is-like/lesson.tres:24 +msgid "Telling the computer what to do" +msgstr "告诉计算机要做什么" + +#: course/lesson-1-what-code-is-like/lesson.tres:26 +msgid "" +"Programming is the process of writing precise instructions that tell a " +"computer how to perform a task.\n" +"\n" +"A game's instructions are, for example: moving a character, drawing a life " +"bar, or playing a sound." +msgstr "" +"编程就是写出精确的指令的过程,告诉计算机如何执行某项任务。\n" +"\n" +"游戏的指令有:移动角色、绘制血条、播放声音等等。" + +#: course/lesson-1-what-code-is-like/lesson.tres:38 +msgid "" +"To do any of that, you need to learn a [b]programming language[/b]: a " +"specialized language to tell the computer what to do." +msgstr "" +"执行其中的任何操作,你都需要学习一门[b]编程语言[/b]:用来告诉计算机要做什么的" +"专门语言。" + +#: course/lesson-1-what-code-is-like/lesson.tres:58 +msgid "" +"Programming languages are different from natural ones like English or " +"Spanish. The computer does not think. Unlike us, it can't [i]interpret[/i] " +"what you tell it.\n" +"\n" +"You can't tell it something vague like \"draw a circle.\"\n" +"\n" +"Which circle? Where? Which color should it be? How big should it be?" +msgstr "" +"编程语言和英语、西班牙语之类的自然语言不同。计算机不会思考。与我们不同,它不" +"会 [i]解释[/i] 你告诉它的内容。\n" +"\n" +"你不能让它去做一些模糊的事情,比如“画一个圆”。\n" +"\n" +"哪个圆?画到哪里?该用什么颜色画?该画多大?" + +#: course/lesson-1-what-code-is-like/lesson.tres:70 +msgid "The computer needs exact instructions" +msgstr "计算机需要确切的指令" + +#: course/lesson-1-what-code-is-like/lesson.tres:72 +msgid "" +"To draw a filled circle, the computer needs to know exact drawing " +"coordinates, the radius, the thickness, and color you want.\n" +"\n" +"The code to do so [i]may[/i] look like this.\n" +"\n" +"[i]Click the button to run the code example and see the result.[/i]" +msgstr "" +"要绘制填充的圆形,计算机需要确切知道你想要的绘制坐标、半径、厚度、颜色。\n" +"\n" +"相应的代码[i]可能[/i]类似这样。\n" +"\n" +"[i]点击按钮运行示例代码,查看结果。[/i]" + +#: course/lesson-1-what-code-is-like/lesson.tres:96 +msgid "" +"In the following lessons, you'll learn how this code works.\n" +"\n" +"For now, we want to give you a sense of what computer code looks like. In " +"this example, everything matters: each parenthesis, capital letter, period, " +"and comma.\n" +"\n" +"The computer always does [b]exactly[/b] what you tell it to. No more, no " +"less. It [i]blindly[/i] follows every instruction.\n" +"\n" +"[b]When you program, you're the one in charge, and you're free to do " +"[i]anything[/i] you want.[/b]" +msgstr "" +"接下来的课程中,你会学到这段代码的工作原理。\n" +"\n" +"目前,我们只是想让你感受一下计算机代码是什么样子的。在这个例子中,一切都很重" +"要:每一个括号、大写字母、句点、逗号。\n" +"\n" +"计算机总是会[b]完全[/b]遵照你告诉他的内容行事,不多也不少,会[i]盲目地[/i]遵" +"循每一条指令。\n" +"\n" +"[b]编程时,掌控一切的是你,你可以做[i]任何[/i]你想做的事情。[/b]" + +#: course/lesson-1-what-code-is-like/lesson.tres:110 +msgid "How do you give instructions to a computer?" +msgstr "如何向计算机下达指令?" + +#: course/lesson-1-what-code-is-like/lesson.tres:113 +msgid "" +"Computers don't understand natural languages like English. To make them do " +"anything, you need to give them precise instructions they understand, using " +"a programming language." +msgstr "" +"计算机不懂英语之类的自然语言。要让它们做事,你需要使用编程语言,下达它们能够" +"理解的精确指令。" + +#: course/lesson-1-what-code-is-like/lesson.tres:114 +#: course/lesson-1-what-code-is-like/lesson.tres:115 +msgid "Using a programming language and precise instructions" +msgstr "使用编程语言和精确的指令" + +#: course/lesson-1-what-code-is-like/lesson.tres:114 +msgid "Using prose in plain English" +msgstr "使用简单的英语文章" + +#: course/lesson-1-what-code-is-like/lesson.tres:122 +msgid "You'll learn to code with GDScript" +msgstr "你会学习使用 GDScript 编程" + +#: course/lesson-1-what-code-is-like/lesson.tres:124 +#, fuzzy +msgid "" +"In this course, you'll learn the GDScript programming language (the name " +"stands for \"Godot script\").\n" +"\n" +"This is a language by game developers for game developers. You can use it " +"within the Godot game engine to create games and applications.\n" +"\n" +"It's the language used by games like [ignore][url=https://store.steampowered." +"com/app/1637320/Dome_Keeper/]Dome Keeper[/url] and [ignore][url=https://" +"store.steampowered.com/app/1942280/Brotato/]Brotato[/url].\n" +"\n" +"Engineers at Tesla also used it for their cars' dashboards." +msgstr "" +"本教程中,你会学习 GDScript 编程语言(名字表示“Godot script”,Godot 脚" +"本)。\n" +"\n" +"这是一门由游戏开发者开发、为游戏开发者而生的语言。你可以在 Godot 游戏引擎中用" +"它来制作游戏和应用程序。\n" +"\n" +"世嘉用 Godot 引擎制作了《索尼克缤纷色彩究极版》的重制版。特斯拉的工程师用它制" +"作了汽车的仪表盘。" + +#: course/lesson-1-what-code-is-like/lesson.tres:150 +msgid "" +"GDScript is an excellent language to get started with programming because " +"it's specialized. Unlike some other languages, it doesn't have an " +"[i]overwhelming[/i] amount of features for you to learn." +msgstr "" +"用 GDScript 来入门编程是很棒的,因为它专精于一个领域。与其他一些语言不同,它" +"没有[i]巨多的[/i]要学的功能特性。" + +#: course/lesson-1-what-code-is-like/lesson.tres:158 +msgid "Most programming languages are similar" +msgstr "大多数编程语言都很像" + +#: course/lesson-1-what-code-is-like/lesson.tres:160 +msgid "" +"Don't be afraid of being locked in. The concepts you learn in your first " +"programming language will apply to all the others.\n" +"\n" +"Most languages have more similarities than differences. Once you learn one, " +"it takes much less time to become productive with the next one.\n" +"\n" +"Here's an example of the same code in three languages: GDScript, JavaScript, " +"and Python.\n" +"\n" +"Try to spot the similarities and differences." +msgstr "" +"不要担心会被限制住。你在第一门编程语言中学到的概念也适用于其他语言。\n" +"\n" +"大多数语言之间相同点远比不同点要多。一旦你学会了一门语言,熟练掌握下一门所需" +"的时间就会少很多。\n" +"\n" +"以下是使用三种语言编写的相同代码:GDScript、JavaScript、Python。\n" +"\n" +"请找一找它们的相同点和不同点。" + +#: course/lesson-1-what-code-is-like/lesson.tres:186 +msgid "It doesn't look [i]that[/i] different, does it?" +msgstr "并没有[i]那么[/i]不一样,对吧?" + +#: course/lesson-1-what-code-is-like/lesson.tres:194 +msgid "Are programming languages all completely different?" +msgstr "编程语言都完全不同吗?" + +#: course/lesson-1-what-code-is-like/lesson.tres:195 +msgid "" +"If you learn one language and then want to learn another, will you have to " +"start from scratch?" +msgstr "如果你学会了一门语言,然后想学另一门,你得从头学起吗?" + +#: course/lesson-1-what-code-is-like/lesson.tres:197 +msgid "" +"Most programming languages build upon the same ideas of how to program. As a " +"result, they're mostly similar.\n" +"\n" +"It's not to say all languages are the same, though. Some offer a really " +"unique syntax and require a completely different mindset compared to " +"GDScript.\n" +"\n" +"However, languages like GDScript, Python, JavaScript, C++, C#, and many " +"others build upon a similar programming philosophy." +msgstr "" +"大多数编程语言都建立在相同的编程理念之上。因此,它们大多是相似的。\n" +"\n" +"不过,这并不是说所有语言都是一样的。有些还是会提供独特的语法,要求与 " +"GDScript 完全不同的思维方式的。\n" +"\n" +"然而,GDScript、Python、JavaScript、C++、C# 以及很多其他语言都是建立在类似的" +"编程思想之上的。" + +#: course/lesson-1-what-code-is-like/lesson.tres:202 +#: course/lesson-1-what-code-is-like/lesson.tres:203 +msgid "No, they have many similarities" +msgstr "不用,它们有很多相似点" + +#: course/lesson-1-what-code-is-like/lesson.tres:202 +msgid "Yes, they are completely different" +msgstr "是的,它们完全不同" + +#: course/lesson-1-what-code-is-like/lesson.tres:210 +msgid "This is a course for beginners" +msgstr "这是针对初学者的教程" + +#: course/lesson-1-what-code-is-like/lesson.tres:212 +msgid "" +"If you want to learn to make games or code but don't know where to start, " +"this course should be perfect." +msgstr "" +"如果你想要学习制作游戏或者编程,而又不知道从哪里入手,那么这个教程是绝佳的选" +"择。" + +#: course/lesson-1-what-code-is-like/lesson.tres:232 +msgid "" +"We designed it for [i]absolute beginners[/i], but if you already know " +"another language, it can be a fun way to get started with Godot.\n" +"\n" +"We will give you the coding foundations you need to start making games and " +"applications with Godot.\n" +"\n" +"Please be patient. It will take time before you can make your first complete " +"game alone." +msgstr "" +"我们针对的是[i]绝对的新手[/i],但如果你已经了解其他语言了,那么入手 Godot 也" +"会变得有意思起来。\n" +"\n" +"我们会为你打下代码的基础,这样你就能够开始使用 Godot 制作游戏和应用程序了。\n" +"\n" +"请持之以恒,你需要花费一些时间才能够独立完成第一个完整的游戏。" + +#: course/lesson-1-what-code-is-like/lesson.tres:244 +msgid "Learning to make games takes practice" +msgstr "学习游戏制作需要练习" + +#: course/lesson-1-what-code-is-like/lesson.tres:246 +msgid "" +"Creating games is more accessible than ever, but it still takes a lot of " +"work and practice.\n" +"\n" +"Do not expect any single course or book to turn you into a professional. " +"[b]Programming is something you learn through practice.[/b]\n" +"\n" +"If something doesn't make immediate sense, don't stress it too much! Keep " +"learning and come back to it later.\n" +"\n" +"Enjoy the process and celebrate every little success. You will never stop " +"learning as a game developer." +msgstr "" +"制作游戏现在是越来越容易了,但仍然需要花费很多心血和联系。\n" +"\n" +"请不要指望看完一个教程或者一本书就能够让你变成专业人士。[b]编程是通过实践来学" +"习的。[/b]\n" +"\n" +"如果有些东西无法立即理解,也请不要太紧张!请继续学习,以后再来研究。\n" +"\n" +"请享受这个过程,庆祝每一个小小的成功。作为一个游戏开发者,你永远不会停止学" +"习。" + +#: course/lesson-1-what-code-is-like/lesson.tres:260 +msgid "What and how you'll learn" +msgstr "你会学到什么以及如何学习" + +#: course/lesson-1-what-code-is-like/lesson.tres:262 +msgid "" +"In this free course, you will learn the foundations you need to start coding " +"things like these:" +msgstr "在这个免费教程中,你将开始学到编写此类内容所需的基础知识:" + +#: course/lesson-1-what-code-is-like/lesson.tres:292 +msgid "" +"Along the way, we'll teach you:\n" +"\n" +"- Some of the mindset you need as a developer. Too many programming courses " +"skip that essential part.\n" +"- How to write GDScript code.\n" +"- Essential programming foundations to get you started.\n" +"\n" +"As you go through the course, you will have many questions. We will answer " +"them the best we can as we go.\n" +"\n" +"But there is so much to cover that we have to take a few shortcuts. We don't " +"want to [i]overwhelm[/i] you with information. We also want to respect the " +"pace at which our brains memorize things.\n" +"\n" +"We broke down the course into short lessons and practices. If we put too " +"much into each part, you'd learn slower.\n" +"\n" +"If at any time you're left with burning questions, you're more than welcome " +"to join [url=https://discord.gg/87NNb3Z]our Discord community[/url]." +msgstr "" +"在此过程中,我们会教给你:\n" +"\n" +"- 成为开发者所需要的一些思维模式。有太多的编程教程跳过了这一极其重要的部" +"分。\n" +"- 如何编写 GDScript 代码。\n" +"- 入门所需要的必要编程基础。\n" +"\n" +"随着学习的深入,你会产生很多疑问。我们会尽量去进行解答。\n" +"\n" +"不过要涉及的内容太多了,我们不得不走一些捷径。我们不想让你被大量的信息[i]淹没" +"[/i]。我们也想遵循大脑进行记忆的节奏。\n" +"\n" +"我们将教程分解成了一系列较短的课程和练习。如果我们为每一部分都加入太多内容," +"你就会学得有点慢。\n" +"\n" +"如果你发现有亟待回答的疑问,欢迎加入[url=https://discord.gg/87NNb3Z]我们的 " +"Discord 社区[/url]。" + +#: course/lesson-1-what-code-is-like/lesson.tres:312 +msgid "Is this for Godot 4?" +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:314 +msgid "" +"What you'll learn in this free course is fully compatible with Godot 4. " +"While we initially designed this series for Godot 3, the foundations of " +"GDScript are still the same in Godot 4." +msgstr "" + +#: course/lesson-1-what-code-is-like/lesson.tres:322 +msgid "Programming is a skill" +msgstr "编程是一项技能" + +#: course/lesson-1-what-code-is-like/lesson.tres:324 +msgid "" +"Programming is a skill, so to get good at it, you must practice. It is why " +"we built this app.\n" +"\n" +"Each lesson is followed by an interactive practice to use what you learned.\n" +"\n" +"Speaking of which, it's time to look at the practice screen!\n" +"\n" +"To continue, click the [i]Practice[/i] button below. It will give you a " +"short run through how practices work." +msgstr "" +"编程是一项技能,要熟练掌握,你必须进行练习。这就是我们制作这个应用的原因。\n" +"\n" +"每节课程之后都会有一个交互式练习,使用你所学到的东西。\n" +"\n" +"说到这个,是时候看看练习界面了!\n" +"\n" +"如果想要继续,请点击下方的[i]练习[/i]按钮。它会简要地向你介绍练习的流程。" + +#: course/lesson-1-what-code-is-like/lesson.tres:338 +msgid "Try Your First Code" +msgstr "尝试你的第一段代码" + +#: course/lesson-1-what-code-is-like/lesson.tres:339 +msgid "" +"We prepared a code sample for you. For this practice, you don't need to " +"change anything.\n" +"\n" +"To test the code, click the [i]Run[/i] button below the code editor." +msgstr "" +"我们为你准备了一段示例代码。此次练习中,你无需修改任何内容。\n" +"\n" +"要测试代码,请点击代码编辑器下方的[i]运行[/i]按钮。" + +#: course/lesson-1-what-code-is-like/lesson.tres:351 +msgid "Run your first bit of code and see the result." +msgstr "请运行你的第一段代码并查看结果。" + +#: course/lesson-1-what-code-is-like/lesson.tres:355 +msgid "What Code is Like" +msgstr "代码是什么" diff --git a/i18n/zh_Hans/lesson-10-the-game-loop.po b/i18n/zh_Hans/lesson-10-the-game-loop.po new file mode 100644 index 00000000..64fe705c --- /dev/null +++ b/i18n/zh_Hans/lesson-10-the-game-loop.po @@ -0,0 +1,236 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-10-the-game-loop/lesson.tres:14 +msgid "" +"As we've seen, Godot has functions that do certain actions. For example, the " +"[code]show()[/code] and [code]hide()[/code] functions change the visibility " +"of things.\n" +"\n" +"We can also create our own functions to make custom effects like adding or " +"removing health to a character.\n" +"\n" +"Godot also has special functions we can customize or add to.\n" +"\n" +"Take the [code]_process()[/code] function." +msgstr "" +"正如我们所见,Godot 具有执行某些操作的功能。例如,[code]show()[/code] 和 " +"[code]hide()[/code] 函数会改变事物的可见性。\n" +"\n" +"我们还可以创建自己的函数来制作自定义效果,例如为角色添加或移除生命值。\n" +"\n" +"Godot 还具有我们可以自定义或添加的特殊功能。\n" +"\n" +"以 [code]_process()[/code] 函数为例。" + +#: course/lesson-10-the-game-loop/lesson.tres:40 +msgid "" +"The [code]_process()[/code] function gets its name because it does " +"calculations or continuous actions.\n" +"\n" +"It's like a juice factory that [b]processes[/b] juice bottles: the bottles " +"are always moving along a conveyor belt, while different machines operate on " +"them." +msgstr "" +"[code]_process()[/code] 函数之所以得名,是因为它进行计算或连续动作。\n" +"\n" +"这就像一个果汁厂[b]加工[/b]果汁瓶:瓶子总是沿着传送带移动,而不同的机器在它们" +"上面运行。" + +#: course/lesson-10-the-game-loop/lesson.tres:52 +msgid "" +"It's similar in Godot, but this function can run [b]hundreds of times a " +"second[/b]." +msgstr "在 Godot 中也是类似的,但是这个函数每秒可以运行 [b] 数百次 [/b]。" + +#: course/lesson-10-the-game-loop/lesson.tres:60 +msgid "How many parameters does this function take?" +msgstr "这个函数有多少个参数?" + +#: course/lesson-10-the-game-loop/lesson.tres:61 +msgid "" +"[code]\n" +"func _process(delta):\n" +"[/code]" +msgstr "" +"[code]\n" +"func _process(delta):\n" +"[/code]" + +#: course/lesson-10-the-game-loop/lesson.tres:65 +msgid "" +"The [code]_process()[/code] function takes one parameter: [code]delta[/" +"code].\n" +"\n" +"We'll look at what [code]delta[/code] is in the next lesson, as well as show " +"how to use it." +msgstr "" +"[code]_process()[/code] 函数采用一个参数:[code]delta[/code]。\n" +"\n" +"我们将在下一课中了解 [code]delta[/code] 是什么,并展示如何使用它。" + +#: course/lesson-10-the-game-loop/lesson.tres:68 +#: course/lesson-10-the-game-loop/lesson.tres:69 +msgid "1" +msgstr "1" + +#: course/lesson-10-the-game-loop/lesson.tres:68 +msgid "2" +msgstr "2" + +#: course/lesson-10-the-game-loop/lesson.tres:78 +#, fuzzy +msgid "" +"The [code]_process()[/code] function won't do anything until we add " +"something to it.\n" +"\n" +"You might notice the underscore [code]_[/code] in front of the function " +"name. This is a convention programmers use to coordinate work, and it'll " +"only make sense once you have experience coding in Godot.\n" +"\n" +"For now, all you need to know is that if the function exists in your code, " +"and it is called precisely [code]_process[/code], then Godot will " +"automatically run it every [i]frame[/i].\n" +"\n" +"When Godot draws on the screen, we call that a frame." +msgstr "" +"[code]_process()[/code] 函数在我们添加一些东西之前不会做任何事情。\n" +"\n" +"您可能会注意到函数名称前面的下划线 [code]_[/code]。这是一个约定。这意味着该函" +"数已经由 Godot 定义。\n" +"\n" +"如果该函数存在,并且被准确地调用为 [code]_process[/code],那么 Godot 将自动在" +"每一帧运行它。 " + +#: course/lesson-10-the-game-loop/lesson.tres:92 +msgid "Is this the same for other engines?" +msgstr "其他引擎也是这样吗?" + +#: course/lesson-10-the-game-loop/lesson.tres:94 +msgid "" +"Other game engines might use different names like [code]_update()[/code]." +msgstr "其他游戏引擎可能使用不同的名称,例如 [code]_update()[/code]。" + +#: course/lesson-10-the-game-loop/lesson.tres:102 +msgid "Why is the _process() function useful?" +msgstr "_process() 函数为什么起作用了?" + +#: course/lesson-10-the-game-loop/lesson.tres:104 +msgid "" +"It's perhaps better to see the [code]_process()[/code] function in action.\n" +"\n" +"Take the following example." +msgstr "" +"最好看看 [code]_process()[/code] 函数的实际作用。\n" +"\n" +"举个例子。" + +#: course/lesson-10-the-game-loop/lesson.tres:126 +msgid "" +"When you click the button [code]set_process(true)[/code], you activate " +"processing on the robot.\n" +"\n" +"From there, every frame, Godot runs the [code]_process()[/code] function.\n" +"\n" +"Since we wrote a [code]rotate()[/code] instruction, Godot is rotating the " +"character by [code]0.05[/code] radians [b]many[/b] times a second." +msgstr "" +"当您单击按钮 [code]set_process(true)[/code] 时,您将激活机器上的处理。\n" +"\n" +"从那里开始,每一帧,Godot 都会运行 [code]_process()[/code] 函数。\n" +"\n" +"由于我们编写了 [code]rotate()[/code] 指令,Godot 每秒将字符旋转 [code]0.05[/" +"code] 弧度 [b]很多[/b] 次。" + +#: course/lesson-10-the-game-loop/lesson.tres:138 +msgid "How often does the _process() function run?" +msgstr "_process() 函数多久运行一次?" + +#: course/lesson-10-the-game-loop/lesson.tres:141 +msgid "" +"The faster your computer, the more times [code]_process()[/code] will run.\n" +"\n" +"Godot will try and run [code]_process()[/code] as quickly as it can. This " +"makes sure any movement or animations look smooth and fluid." +msgstr "" +"您的计算机越快,[code]_process()[/code] 运行的次数就越多。\n" +"\n" +"Godot 将尽可能快地尝试运行 [code]_process()[/code]。这可以确保任何运动或动画" +"看起来流畅流畅。" + +#: course/lesson-10-the-game-loop/lesson.tres:144 +msgid "Once a second." +msgstr "一秒钟一次。" + +#: course/lesson-10-the-game-loop/lesson.tres:144 +#: course/lesson-10-the-game-loop/lesson.tres:145 +msgid "Multiple times a second." +msgstr "每秒多次。" + +#: course/lesson-10-the-game-loop/lesson.tres:154 +msgid "" +"In the practice, you'll learn how to use the process function to rotate and " +"move a character yourself." +msgstr "在练习中,您将学习如何使用process函数自己旋转和移动角色。" + +#: course/lesson-10-the-game-loop/lesson.tres:162 +msgid "Rotating a Character Continuously" +msgstr "连续旋转角色" + +#: course/lesson-10-the-game-loop/lesson.tres:163 +msgid "" +"Make the robot rotate slowly by adding to the [code]_process()[/code] " +"function.\n" +"\n" +"A rotation speed of about [code]0.05[/code] each frame should do." +msgstr "" +"通过添加[code]_process()[/code]函数使机器人缓慢旋转。\n" +"\n" +"每帧应该有大约 [code]0.05[/code] 的旋转速度。" + +#: course/lesson-10-the-game-loop/lesson.tres:180 +msgid "Creating Circular Movement" +msgstr "创建圆周运动" + +#: course/lesson-10-the-game-loop/lesson.tres:181 +msgid "" +"Make the robot move in a large circle slowly by rotating it and " +"simultaneously moving it along its x direction.\n" +"\n" +"To do this, add the [code]rotate()[/code] and [code]move_local_x()[/code] " +"functions to [code]_process()[/code].\n" +"\n" +"Use a rotation speed of [code]0.05[/code] radians per frame, and move the " +"robot [code]5[/code] pixels per frame." +msgstr "" +"通过旋转机器人并同时沿其 x 方向移动,使机器人在一个大圆圈中缓慢移动。\n" +"\n" +"为此,请将 [code]rotate()[/code] 和 [code]move_local_x()[/code] 函数添加到 " +"[code]_process()[/code]。\n" +"\n" +"使用每帧 [code]0.05[/code] 弧度的旋转速度,每帧移动机器人 [code]5[/code] 像" +"素。" + +#: course/lesson-10-the-game-loop/lesson.tres:199 +msgid "The Game Loop" +msgstr "游戏循环" diff --git a/i18n/zh_Hans/lesson-11-time-delta.po b/i18n/zh_Hans/lesson-11-time-delta.po new file mode 100644 index 00000000..0eed6304 --- /dev/null +++ b/i18n/zh_Hans/lesson-11-time-delta.po @@ -0,0 +1,412 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-11-time-delta/lesson.tres:14 +msgid "" +"We've seen how we can use our character's [code]_process()[/code] function " +"to make it move continuously." +msgstr "" +"我们已经看到了如何使用角色的 [code]_process()[/code] 函数使其连续移动。" + +#: course/lesson-11-time-delta/lesson.tres:34 +msgid "" +"But it's not just our character that has a [code]_process()[/code] function; " +"Almost everything in the game has a [code]_process()[/code] function!\n" +"\n" +"Dozens of times per second, Godot runs every [code]_process()[/code] " +"function in the game to update the game world.\n" +"\n" +"After that, it displays an image of the game world on the screen. We call " +"that image a [b]frame[/b].\n" +"\n" +"Godot then moves on to calculating the next frame.\n" +"\n" +"As this happens dozens of times per second, you get the illusion of " +"movement. This is similar to how traditional animation works." +msgstr "" +"但不仅仅是我们的角色有 [code]_process()[/code] 函数;游戏中几乎所有的东西都有" +"一个 [code]_process()[/code] 函数!\n" +"\n" +"每秒数十次,Godot 运行游戏中的每个 [code]_process()[/code] 函数来更新游戏世" +"界。\n" +"\n" +"之后,它会在屏幕上显示游戏世界的图像。我们称该图像为 [b] 帧 [/b]。\n" +"\n" +"Godot 然后继续计算下一帧。\n" +"\n" +"当这种情况每秒发生数十次时,您会产生运动的错觉。这类似于传统动画的工作方式。" + +#: course/lesson-11-time-delta/lesson.tres:50 +msgid "This sounds like Frames Per Second..." +msgstr "这听起来像每秒帧数(FPS)..." + +#: course/lesson-11-time-delta/lesson.tres:52 +msgid "" +"You may have heard of frames per second, or FPS for short. Games often run " +"at 60 frames per second. \n" +"\n" +"It means that everything in the game updates 60 times each second.\n" +"\n" +"The number varies while playing, depending on the game and the device it " +"runs on.\n" +"\n" +"On powerful computers, you may get frame rates in the hundreds or thousands " +"of frames per second." +msgstr "" +"您可能听说过每秒帧数(frames per second),简称 FPS。游戏通常以每秒 60 帧的速" +"度运行。\n" +"\n" +"这意味着游戏中的所有内容每秒更新 60 次。\n" +"\n" +"该数字在玩游戏时会有所不同,具体取决于游戏及其运行的设备。\n" +"\n" +"在功能强大的计算机上,您可能会获得每秒数百或数千帧的帧速率。" + +#: course/lesson-11-time-delta/lesson.tres:68 +msgid "Let's look at the [code]_process()[/code] function in more detail." +msgstr "让我们更详细地看一下 [code]_process()[/code] 函数。" + +#: course/lesson-11-time-delta/lesson.tres:76 +msgid "What parameter does the _process() function take?" +msgstr "_process() 函数采用什么参数?" + +#: course/lesson-11-time-delta/lesson.tres:77 +msgid "" +"[code]\n" +"func _process(delta):\n" +"\trotate(0.05)\n" +"[/code]" +msgstr "" +"[code]\n" +"func _process(delta):\n" +"\trotate(0.05)\n" +"[/code]" + +#: course/lesson-11-time-delta/lesson.tres:82 +msgid "" +"The [code]_process()[/code] function has one parameter named [code]delta[/" +"code]." +msgstr "[code]_process()[/code] 函数有一个名为 [code]delta[/code] 的参数。" + +#: course/lesson-11-time-delta/lesson.tres:83 +msgid "rotate" +msgstr "旋转" + +#: course/lesson-11-time-delta/lesson.tres:83 +msgid "0.05" +msgstr "0.05" + +#: course/lesson-11-time-delta/lesson.tres:83 +#: course/lesson-11-time-delta/lesson.tres:84 +msgid "delta" +msgstr "delta" + +#: course/lesson-11-time-delta/lesson.tres:91 +msgid "Frames take varying amounts of time to calculate" +msgstr "帧需要不同的时间来计算" + +#: course/lesson-11-time-delta/lesson.tres:93 +#, fuzzy +msgid "" +"Depending on the game, the computer, and what the game engine needs to " +"calculate, frames take more or less time to display.\n" +"\n" +"There will always be milliseconds variations from frame to frame.\n" +"\n" +"That is why the [code]_process()[/code] function receives a [code]delta[/" +"code] parameter.\n" +"\n" +"Delta represents a time difference. It's the time passed since the previous " +"frame, in seconds.\n" +"\n" +"The [code]delta[/code] parameter tells us how long it took for Godot to " +"complete the [b]previous frame[/b].\n" +"\n" +"We can use it to ensure that the changes between frames don't make the " +"game's behavior unreliable.\n" +"\n" +"This is because different computers run differently, so a fast computer will " +"have more frames per second than a slow computer.\n" +"\n" +"If we ignore [code]delta[/code], the game experience will vary, depending on " +"the computer. Delta helps to make the game experience consistent for " +"everyone." +msgstr "" +"根据游戏、计算机和游戏引擎需要计算的内容,显示帧需要或多或少的时间。\n" +"\n" +"从帧到帧总是会有毫秒的变化。\n" +"\n" +"这就是 [code]_process()[/code] 函数接收 [code]delta[/code] 参数的原因。\n" +"\n" +"单词“delta”代表时间差。这是自上一帧以来经过的时间,以秒为单位。\n" +"\n" +"[code]delta[/code] 参数告诉我们 Godot 完成 [b] 上一帧 [/b] 需要多长时间。\n" +"\n" +"我们可以使用它来确保帧之间的变化不会使游戏的模拟不可靠。" + +#: course/lesson-11-time-delta/lesson.tres:115 +msgid "What do we know about delta?" +msgstr "我们对delta了解多少?" + +#: course/lesson-11-time-delta/lesson.tres:118 +#, fuzzy +msgid "" +"[code]delta[/code] is the time it took Godot to complete the previous frame " +"in seconds.\n" +"\n" +"It's very small because frames happen many times a second.\n" +"\n" +"It varies each frame because Godot needs to process more or less each frame." +msgstr "" +"[code]delta[/code] 是 Godot 完成前一帧所需的时间,以秒为单位。\n" +"\n" +"它非常小,因为帧每秒发生很多次。\n" +"\n" +"它改变每一帧,因为 Godot 需要或多或少地处理每一帧。" + +#: course/lesson-11-time-delta/lesson.tres:123 +#: course/lesson-11-time-delta/lesson.tres:124 +msgid "It's a value in seconds." +msgstr "这是一个以秒为单位的值。" + +#: course/lesson-11-time-delta/lesson.tres:123 +#: course/lesson-11-time-delta/lesson.tres:124 +msgid "It varies each frame." +msgstr "它每帧都不同。" + +#: course/lesson-11-time-delta/lesson.tres:123 +#: course/lesson-11-time-delta/lesson.tres:124 +#, fuzzy +msgid "It's the time it took Godot to complete the previous frame." +msgstr "这是 Godot 完成前一帧所需的时间。" + +#: course/lesson-11-time-delta/lesson.tres:131 +msgid "Multiplying by delta" +msgstr "乘以 delta" + +#: course/lesson-11-time-delta/lesson.tres:133 +msgid "" +"The [code]delta[/code] you get in [code]_process()[/code] is a time " +"difference in seconds. It will generally be a tiny decimal number.\n" +"\n" +"To apply [code]delta[/code], you need to [i]multiply[/i] your speed values " +"by it." +msgstr "" +"您在 [code]_process()[/code] 中获得的 [code]delta[/code] 是以秒为单位的时间" +"差。它通常是一个很小的十进制数。\n" +"\n" +"要应用 [code]delta[/code],您需要 [i]乘以[/i] 你的速度值乘以它。" + +#: course/lesson-11-time-delta/lesson.tres:155 +msgid "" +"When multiplying by [code]delta[/code], you make motion [i]time-dependent[/" +"i] rather than [i]frame-dependent[/i].\n" +"\n" +"That's essential to make your game consistent and fair." +msgstr "" +"当乘以 [code]delta[/code] 时,您使运动 [i]基于时间(time-dependent)[/i] 而不" +"是 [i]基于帧(frame-dependent)[/i]。\n" +"\n" +"这对于使您的游戏保持一致和公平至关重要。" + +#: course/lesson-11-time-delta/lesson.tres:165 +msgid "Why do we use the number 3.0 in this example?" +msgstr "为什么我们在这个例子中使用数字 3.0?" + +#: course/lesson-11-time-delta/lesson.tres:167 +msgid "" +"At the top of the lesson, we made the robot rotate a fixed amount every " +"frame: [code]0.05[/code] radians.\n" +"\n" +"In the example above, we now [i]multiply[/i] the argument by the very small " +"[code]delta[/code] value, a value way below [code]1.0[/code]. It makes the " +"robot turn at a constant speed over time.\n" +"\n" +"However, multiplying by a number below [code]1.0[/code] like [code]delta[/" +"code] makes the result smaller.\n" +"\n" +"To compensate for that and make the robot turn fast enough, we use a larger " +"number than before, [code]3.0[/code] instead of [code]0.05[/code].\n" +"\n" +"Those numbers have two different [i]units[/i]: [code]0.05[/code] is an " +"[i]angle[/i] in radians, while [code]3.0[/code] is an [i]angular speed[/i] " +"in radians per second.\n" +"\n" +"When you multiply a speed by a time delta, it gives you an angle.\n" +"\n" +"Don't worry if it's a little confusing for now. It'll eventually click as " +"you deal with speed, acceleration, and motion in your game projects." +msgstr "" +"在课程的顶部,我们让机器人每帧旋转一个固定的量:[code]0.05[/code] 弧度。\n" +"\n" +"在上面的示例中,我们现在 [i] 将参数乘以 [/i] 非常小的 [code]delta[/code] 值," +"该值远低于 [code]1.0[/code]。它使机器人随着时间的推移以恒定的速度转动。\n" +"\n" +"但是,乘以低于 [code]1.0[/code] 的数字,如 [code]delta[/code] 会使结果更" +"小。\n" +"\n" +"为了弥补这一点并让机器人转动得足够快,我们使用了比以前更大的数字,[code]3.0[/" +"code] 而不是 [code]0.05[/code]。\n" +"\n" +"这些数字有两个不同的 [i]单位[/i]:[code]0.05[/code] 是以弧度表示的 [i]角度[/" +"i],而 [code]3.0[/code] 是 [i]角速度[/i] 以弧度每秒为单位。\n" +"\n" +"当您将速度乘以时间增量时,它会给您一个角度。\n" +"\n" +"如果现在有点混乱,请不要担心。当您在游戏项目中处理速度、加速度和运动时,它最" +"终会点击。" + +#: course/lesson-11-time-delta/lesson.tres:187 +msgid "Why the time between frames matters" +msgstr "为什么帧之间的时间很重要" + +#: course/lesson-11-time-delta/lesson.tres:189 +msgid "" +"The time it takes to display a new frame varies.\n" +"\n" +"If you don't take that time into account in your code, your game will have " +"gameplay issues and bugs. Godot provides that time to the [code]_process()[/" +"code] function through the [code]delta[/code] parameter.\n" +"\n" +"In the example below, the top robot moves using [code]delta[/code]. As a " +"result, it moves at a fixed speed.\n" +"\n" +"The bottom robot moves over a constant distance every frame, [i]without[/i] " +"taking [code]delta[/code] into account. It will move faster or slower than " +"the top robot on [i]your[/i] computer.\n" +"\n" +"The bottom robot will move [i]differently for everyone[/i]!" +msgstr "" +"显示新帧所需的时间会有所不同。\n" +"\n" +"如果您在代码中不考虑这段时间,您的游戏就会出现游戏性问题和错误。 Godot 通过 " +"[code]delta[/code] 参数向 [code]_process()[/code] 函数提供该时间。\n" +"\n" +"在下面的示例中,顶部机器人使用 [code]delta[/code] 移动。结果,它以固定的速度" +"移动。\n" +"\n" +"底部机器人每帧移动一个恒定的距离,[i]没有[/i]考虑[code]delta[/code]。它会比 " +"[i]your[/i] 计算机上的顶级机器人移动得更快或更慢。\n" +"\n" +"底部的机器人会为每个人[i]以不同的方式移动[/i]!" + +#: course/lesson-11-time-delta/lesson.tres:217 +msgid "" +"Multiplying time-sensitive values by [code]delta[/code] makes them [b]time-" +"dependent[/b] rather than [b]frame-dependent[/b].\n" +"\n" +"Thanks to that, we get reliable movement over time.\n" +"\n" +"Without [code]delta[/code], frame times vary from computer to computer and " +"during gameplay. Because of that, the movement will differ for every player, " +"making the game inconsistent and messy." +msgstr "" +"将时间敏感值乘以 [code]delta[/code] 使它们 [b]基于时间(time-dependent)[/b] " +"而不是 [b]基于帧(frame-dependent)[/b]。\n" +"\n" +"多亏了这一点,我们才能随着时间的推移获得可靠的运动。\n" +"\n" +"如果没有 [code]delta[/code],帧时间会因计算机和游戏过程而异。因此,每个玩家的" +"动作都会有所不同,从而使游戏变得不一致和混乱。" + +#: course/lesson-11-time-delta/lesson.tres:229 +msgid "What does this mean?" +msgstr "这是什么意思?" + +#: course/lesson-11-time-delta/lesson.tres:230 +msgid "[code]rotation_speed * delta[/code]" +msgstr "[code]rotation_speed * delta[/code]" + +#: course/lesson-11-time-delta/lesson.tres:232 +msgid "" +"The [code]*[/code] symbol means we're multiplying [code]rotation_speed[/" +"code] by [code]delta[/code] time." +msgstr "" +"[code]*[/code] 符号表示我们将 [code]rotation_speed[/code] 乘以 [code]delta[/" +"code] 时间。" + +#: course/lesson-11-time-delta/lesson.tres:233 +#: course/lesson-11-time-delta/lesson.tres:234 +msgid "We're multiplying rotation_speed by delta." +msgstr "我们将rotation_speed 乘以delta。" + +#: course/lesson-11-time-delta/lesson.tres:233 +msgid "We're dividing delta by rotation_speed." +msgstr "我们将delta除以rotation_speed。" + +#: course/lesson-11-time-delta/lesson.tres:233 +msgid "We're adding rotation_speed to delta." +msgstr "我们将rotation_speed 添加到delta。" + +#: course/lesson-11-time-delta/lesson.tres:233 +msgid "We're subtracting delta from rotation_speed." +msgstr "我们从rotation_speed 中减去delta。" + +#: course/lesson-11-time-delta/lesson.tres:243 +msgid "In the next practice, we'll use delta to make rotating time-dependent." +msgstr "在接下来的练习中,我们将使用 delta 来使旋转与时间相关。" + +#: course/lesson-11-time-delta/lesson.tres:251 +msgid "Rotating Using Delta" +msgstr "使用 Delta 旋转" + +#: course/lesson-11-time-delta/lesson.tres:252 +msgid "" +"At the moment, the rotation of the robot is frame-dependent.\n" +"\n" +"Add [code]delta[/code] to make the rotational speed time-dependent.\n" +"\n" +"The robot should rotate [code]2[/code] radians per second." +msgstr "" +"目前,机器人的旋转依赖于帧。\n" +"\n" +"添加 [code]delta[/code] 以使旋转速度与时间相关。\n" +"\n" +"机器人应该每秒旋转 [code]2[/code] 弧度。" + +#: course/lesson-11-time-delta/lesson.tres:271 +msgid "Moving in a Circle Using Delta" +msgstr "使用 Delta 绕圈移动" + +#: course/lesson-11-time-delta/lesson.tres:272 +msgid "" +"In this practice, make the robot move in a smooth circle using delta.\n" +"\n" +"To get this movement, the robot should rotate [code]2[/code] radians per " +"second and move [code]100[/code] pixels per second towards clockwise.\n" +"\n" +"[b]Note:[/b] Please write the values in the parentheses when calling the " +"functions. If you define extra variables, we will not be able to check your " +"practice." +msgstr "" +"在这个练习中,使用 delta 使机器人在一个平滑的圆周上移动。\n" +"\n" +"为了达到这种运动,机器人应该每秒旋转 [code]2[/code] 弧度,并以每秒 " +"[code]100[/code] 个像素向顺时针方向移动。\n" +"\n" +"[b]请注意:[/b]在调用函数时请将值写在小括号内。如果你定义了额外的变量,我们将" +"无法检查你的练习。" + +#: course/lesson-11-time-delta/lesson.tres:290 +msgid "Time Delta" +msgstr "时间增量" diff --git a/i18n/zh_Hans/lesson-12-using-variables.po b/i18n/zh_Hans/lesson-12-using-variables.po new file mode 100644 index 00000000..1d66d4c0 --- /dev/null +++ b/i18n/zh_Hans/lesson-12-using-variables.po @@ -0,0 +1,277 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"PO-Revision-Date: 2022-05-08 12:00+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-12-using-variables/lesson.tres:14 +msgid "" +"In this lesson, we'll make our code easier to follow and understand at a " +"glance.\n" +"\n" +"Take a look at this example." +msgstr "" +"在本课中,我们将使我们的代码一目了然地更容易理解和理解。\n" +"\n" +"看看这个例子。" + +#: course/lesson-12-using-variables/lesson.tres:34 +msgid "In the above example, what does the number 4 mean?" +msgstr "在上面的例子中,数字 4 是什么意思?" + +#: course/lesson-12-using-variables/lesson.tres:37 +msgid "The code above rotates the character [code]4[/code] radians per second." +msgstr "上面的代码每秒旋转角色[code]4[/code] 弧度。" + +#: course/lesson-12-using-variables/lesson.tres:38 +#: course/lesson-12-using-variables/lesson.tres:39 +msgid "It's how fast the character rotates." +msgstr "这是角色旋转的速度。" + +#: course/lesson-12-using-variables/lesson.tres:38 +msgid "It's how far the character moves in pixels." +msgstr "这是角色移动的距离,以像素为单位。" + +#: course/lesson-12-using-variables/lesson.tres:38 +msgid "It's how long the rotation takes." +msgstr "这是旋转需要多长时间。" + +#: course/lesson-12-using-variables/lesson.tres:48 +msgid "" +"We can guess what a number represents by looking at the function names, " +"but it's harder to recall what this number does by quickly looking at the" +" code.\n" +"\n" +"We've seen how different functions have their own names. Using these " +"names communicates to developers what the functions do." +msgstr "" +"我们可以通过查看函数名称来猜测一个数字代表什么,但通过快速查看代码很难回忆这" +"个数字的作用。\n" +"\n" +"我们已经看到不同的函数有自己的名字。使用这些名称可以向开发人员传达函数的作用" +"。" + +#: course/lesson-12-using-variables/lesson.tres:70 +msgid "" +"As we learned in lesson 8, we can also assign labels to numbers to help " +"us remember what they do.\n" +"\n" +"We call these labels [i]variables[/i].\n" +"\n" +"[b]A variable is a label for a value we can save, change, and read " +"later.[/b]\n" +"\n" +"Let's recap how to define a variable." +msgstr "" +"正如我们在第 8 " +"课中所学到的,我们还可以为数字分配标签以帮助我们记住它们的作用。\n" +"\n" +"我们称这些标签为[i]变量[/i]。\n" +"\n" +"[b]变量是我们可以保存、更改和稍后读取的值的标签。[/b]\n" +"\n" +"让我们回顾一下如何定义一个变量。" + +#: course/lesson-12-using-variables/lesson.tres:96 +msgid "" +"We improve the first example to make it clear what the number " +"[code]4[/code] does." +msgstr "我们改进了第一个示例,以明确数字 [code]4[/code] 的作用。" + +#: course/lesson-12-using-variables/lesson.tres:116 +msgid "" +"Labeling a value makes the code easier for us to read now [i]and[/i] in " +"the future." +msgstr "标记一个值使我们现在 [i] 和 [/i] 将来更容易阅读代码。" + +#: course/lesson-12-using-variables/lesson.tres:124 +msgid "In the above example, which line defines the angular speed variable?" +msgstr "在上面的例子中,哪一行定义了角速度变量?" + +#: course/lesson-12-using-variables/lesson.tres:127 +msgid "" +"We create the [code]angular_speed[/code] variable, then assign it the " +"value of [code]4[/code]." +msgstr "我们创建 [code]angular_speed[/code] 变量,然后为它分配 [code]4[/code] 的值。" + +#: course/lesson-12-using-variables/lesson.tres:128 +#: course/lesson-12-using-variables/lesson.tres:129 +msgid "var angular_speed = 4" +msgstr "var angular_speed = 4" + +#: course/lesson-12-using-variables/lesson.tres:128 +msgid "func _process(delta):" +msgstr "func _process(delta):" + +#: course/lesson-12-using-variables/lesson.tres:128 +msgid "rotate(angular_speed * delta)" +msgstr "rotate(angular_speed * delta)" + +#: course/lesson-12-using-variables/lesson.tres:138 +msgid "" +"If we define variables outside of functions, we can re-use them in " +"different functions.\n" +"\n" +"Because any function can use variables we define outside of them, we call" +" these variables [b]script-wide[/b].\n" +"\n" +"Here we use the [code]angular_speed[/code] script-wide variable in both " +"the [code]_process()[/code] function and the " +"[code]set_angular_speed()[/code] function." +msgstr "" +"如果我们在函数之外定义变量,我们可以在不同的函数中重用它们。\n" +"\n" +"因为任何函数都可以使用我们在它们之外定义的变量,所以我们称这些变量为 [b" +"]脚本范围script-wide)([/b]的。\n" +"\n" +"在这里,我们在 [code]_process()[/code] 函数和 " +"[code]set_angular_speed()[/code] 函数中都使用了 [code]angular_speed[/code] " +"脚本范围的变量。" + +#: course/lesson-12-using-variables/lesson.tres:162 +msgid "" +"We can also define variables inside of functions.\n" +"\n" +"We align the variable assignment by indenting to make it part of the " +"function body. Make sure to create the variable before using it!\n" +"\n" +"If we define a variable inside of a function, only that function can use " +"it." +msgstr "" +"我们还可以在函数内部定义变量。\n" +"\n" +"我们通过缩进对齐变量赋值,使其成为函数体的一部分。确保在使用之前创建变量!\n" +"\n" +"如果我们在函数内部定义一个变量,那么只有该函数可以使用它。" + +#: course/lesson-12-using-variables/lesson.tres:186 +msgid "" +"The [code]angular_speed[/code] variable only exists inside " +"[code]_process()[/code], because we defined it there. The " +"[code]set_angular_speed()[/code] function can't use it.\n" +"\n" +"Trying to use it there will result in an error.\n" +"\n" +"Here's what this error might look like." +msgstr "" +"[code]angular_speed[/code] 变量只存在于 [code]_process()[/code] " +"中,因为我们在那里定义了它。 [code]set_angular_speed()[/code] 函数不能使用。" +"\n" +"\n" +"尝试在那里使用它会导致错误。\n" +"\n" +"这是这个错误的样子。" + +#: course/lesson-12-using-variables/lesson.tres:208 +msgid "Where can we define variables?" +msgstr "我们在哪里可以定义变量?" + +#: course/lesson-12-using-variables/lesson.tres:211 +msgid "" +"Functions can use any variables defined outside of functions. These " +"variables are [b]script-wide[/b].\n" +"\n" +"If we define a variable inside of a function, only that function can use " +"it." +msgstr "" +"函数可以使用在函数之外定义的任何变量。这些变量是 [b] 脚本范围的 [/b]。\n" +"\n" +"如果我们在函数内部定义一个变量,那么只有该函数可以使用它。" + +#: course/lesson-12-using-variables/lesson.tres:214 +#: course/lesson-12-using-variables/lesson.tres:215 +msgid "Outside of functions." +msgstr "函数之外。" + +#: course/lesson-12-using-variables/lesson.tres:214 +#: course/lesson-12-using-variables/lesson.tres:215 +msgid "Inside of functions." +msgstr "函数内部。" + +#: course/lesson-12-using-variables/lesson.tres:224 +msgid "" +"Variables are also great at grouping values that control how a character " +"behaves.\n" +"\n" +"Grouping them in this way allows us to easily change them." +msgstr "" +"变量也很擅长对控制角色行为的值进行分组。\n" +"\n" +"以这种方式对它们进行分组使我们可以轻松地更改它们。" + +#: course/lesson-12-using-variables/lesson.tres:246 +msgid "" +"In the following practices, we'll define variables and use them with some" +" familiar functions to make our code more readable." +msgstr "在接下来的实践中,我们将定义变量并将它们与一些熟悉的函数一起使用,以使我们的" +"代码更具可读性。" + +#: course/lesson-12-using-variables/lesson.tres:254 +msgid "Clarifying Code Using Variables" +msgstr "用变量使代码清晰化" + +#: course/lesson-12-using-variables/lesson.tres:255 +msgid "" +"Let's give the [code]4[/code] here a label so we know what it does.\n" +"\n" +"Create a variable called [code]angular_speed[/code] outside of the " +"[code]_process()[/code] function to make it script-wide. This allows us " +"to use it in other functions too.\n" +"\n" +"Then, replace the [code]4[/code] with [code]angular_speed[/code]." +msgstr "" +"让我们在这里给 [code]4[/code] 一个标签,以便我们知道它的作用。\n" +"\n" +"在 [code]_process()[/code] 函数之外创建一个名为 [code]angular_speed[/code] " +"的变量,以使其在脚本范围内。这使我们也可以在其他函数中使用它。\n" +"\n" +"然后,将 [code]4[/code] 替换为 [code]angular_speed[/code]。" + +#: course/lesson-12-using-variables/lesson.tres:269 +msgid "" +"Using variables to store number values makes code easier to read. Tidy up" +" this function by storing a value in a variable." +msgstr "使用变量来存储数值使代码更易于阅读。通过将值存储在变量中来整理此函数。" + +#: course/lesson-12-using-variables/lesson.tres:274 +msgid "Fixing an Out of Scope Error" +msgstr "修复超出范围的错误" + +#: course/lesson-12-using-variables/lesson.tres:275 +msgid "" +"There's something wrong with the code here. Can you see what it is?\n" +"\n" +"Run the code and read the error.\n" +"\n" +"Correct the code so it works as intended." +msgstr "" +"这里的代码有问题。你能看出它是什么吗?\n" +"\n" +"运行代码并读取错误。\n" +"\n" +"更正代码,使其按预期工作。" + +#: course/lesson-12-using-variables/lesson.tres:293 +msgid "Uh oh! There's something wrong here. Can you fix it?" +msgstr "哦哦!这里有问题。你能修好它吗?" + +#: course/lesson-12-using-variables/lesson.tres:297 +msgid "Using Variables to Make Code Easier to Read" +msgstr "使用变量使代码更易于阅读" diff --git a/i18n/zh_Hans/lesson-13-conditions.po b/i18n/zh_Hans/lesson-13-conditions.po new file mode 100644 index 00000000..e4043794 --- /dev/null +++ b/i18n/zh_Hans/lesson-13-conditions.po @@ -0,0 +1,403 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-13-conditions/lesson.tres:14 +msgid "" +"In previous lessons, we decreased and increased a character's health, but " +"there was no limit to how much health they could have." +msgstr "" +"在之前的课程中,我们减少和增加了角色的生命值,但他们可以拥有的生命值没有限" +"制。" + +#: course/lesson-13-conditions/lesson.tres:34 +msgid "" +"As a result, the player could increase their character's health " +"indefinitely, which we do not want." +msgstr "结果,玩家可以无限期地增加角色的生命值,这是我们不希望的。" + +#: course/lesson-13-conditions/lesson.tres:52 +msgid "What happens to health when we damage our character?" +msgstr "当我们销毁我们的角色时,健康会发生什么?" + +#: course/lesson-13-conditions/lesson.tres:53 +msgid "" +"Suppose our character has [code]100[/code] health.\n" +"\n" +"What would the value of health be if we called [code]take_damage(25)[/code] " +"[b]five times[/b]?" +msgstr "" +"假设我们的角色有 [code]100[/code] 健康。\n" +"\n" +"如果我们调用 [code]take_damage(25)[/code] [b]五次[/b],health的值是多少?" + +#: course/lesson-13-conditions/lesson.tres:57 +msgid "" +"Calling [code]take_damage(25)[/code] five times would subtract a total of " +"[code]125[/code] from [code]100[/code].\n" +"\n" +"100\n" +"75\n" +"50\n" +"25\n" +"0\n" +"-25" +msgstr "" +"调用 [code]take_damage(25)[/code] 五次将从 [code]100[/code] 中减去总共 " +"[code]125[/code]。\n" +"\n" +"100\n" +"75\n" +"50\n" +"25\n" +"0\n" +"-25" + +#: course/lesson-13-conditions/lesson.tres:65 +#: course/lesson-13-conditions/lesson.tres:66 +msgid "-25" +msgstr "-25" + +#: course/lesson-13-conditions/lesson.tres:65 +msgid "25" +msgstr "25" + +#: course/lesson-13-conditions/lesson.tres:65 +msgid "0" +msgstr "0" + +#: course/lesson-13-conditions/lesson.tres:75 +msgid "" +"We can use conditions to run actions [b]selectively[/b].\n" +"\n" +"Conditions make your code branch into two paths: if the condition is met, " +"the computer will run the corresponding instructions. Otherwise, those " +"instructions will not run at all." +msgstr "" +"我们可以使用条件来[b]有选择地[/b]运行动作。\n" +"\n" +"条件使你的代码分支成两条路径:如果条件满足,计算机将运行相应的指令。否则,这" +"些指令将根本不会运行。" + +#: course/lesson-13-conditions/lesson.tres:87 +msgid "" +"Video games and other computer programs are full of conditions. For example, " +"game input largely relies on conditions: [i]if[/i] the player presses the " +"button on a gamepad, the character jumps." +msgstr "" +"视频游戏和其他计算机程序充满了条件。例如,游戏输入很大程度上依赖于条件:[i]如" +"果[/i]玩家按下游戏手柄上的按钮,角色就会跳跃。" + +#: course/lesson-13-conditions/lesson.tres:107 +#, fuzzy +msgid "" +"When the computer checks a condition, this is called [b]to evaluate[/b] a " +"condition. All conditions [b]evaluate[/b] to either [code]true[/code] or " +"[code]false[/code].\n" +"\n" +"Either the player is pressing the button, or not. Either the character is " +"touching an enemy, or not.\n" +"\n" +"In our case, [i]if[/i] the health goes over a maximum value, we want to " +"reset it to the maximum.\n" +"\n" +"To define a condition, we use the [code]if[/code] keyword. We write a line " +"starting with [code]if[/code], [ignore]type the condition to evaluate, and " +"end the line with a colon." +msgstr "" +"当计算机检查一个条件时,这称为 [b] 来评估 [/b] 一个条件。所有条件 [b]评估[/" +"b] 为 [code]true[/code] 或 [code]false[/code]。\n" +"\n" +"玩家正在按下按钮,或者没有。角色正在接触敌人,或者没有。\n" +"\n" +"在我们的例子中,[i]如果[/i] 生命值超过最大值,我们希望将其重置为最大值。\n" +"\n" +"要定义条件,我们使用 [code]if[/code] 关键字。我们写一行以 [code]if[/code] 开" +"头,键入要评估的条件,并以冒号结束该行。" + +#: course/lesson-13-conditions/lesson.tres:133 +#, fuzzy +msgid "" +"Notice the [code]>[/code] comparison sign. We read this symbol as \"greater " +"than\".\n" +"\n" +"We've seen how function definitions use a colon at the end of the first line " +"and nest content inside.\n" +"\n" +"In GDScript, this syntax is a recurring pattern for all code blocks.\n" +"\n" +"The computer knows which instructions belong to the condition because they " +"are indented." +msgstr "" +"注意 [code]>[/code] 比较符号。我们将此符号读作“大于”。\n" +"\n" +"我们已经看到函数定义如何在第一行末尾使用冒号并在其中嵌套内容。\n" +"\n" +"在 GDScript 中,这种语法是所有代码块的重复模式。\n" +"\n" +"计算机知道哪些指令属于该条件,因为它们是缩进的。" + +#: course/lesson-13-conditions/lesson.tres:157 +msgid "Comparisons" +msgstr "比较" + +#: course/lesson-13-conditions/lesson.tres:159 +msgid "" +"In the above example, we used the [code]>[/code] syntax to mean \"greater " +"than\".\n" +"\n" +"We can compare numbers in other ways too.\n" +"\n" +"[code]>[/code] means \"greater than\"\n" +"[code]<[/code] means \"less than\"\n" +"[code]==[/code] means \"equal to\"\n" +"[code]!=[/code] means \"not equal to\"\n" +"\n" +"Here's how we might use these in [code]if[/code] statements.\n" +msgstr "" +"在上面的示例中,我们使用 [code]>[/code] 语法来表示“大于”。\n" +"\n" +"我们也可以用其他方式比较数字。\n" +"\n" +"[code]>[/code] 意思是“大于”\n" +"[code]<[/code] 意思是“小于”\n" +"[code]==[/code] 意思是“等于”\n" +"[code]!=[/code] 表示“不等于”\n" +"\n" +"下面是我们如何在 [code]if[/code] 语句中使用它们。\n" + +#: course/lesson-13-conditions/lesson.tres:187 +msgid "What does \"pass\" do in the code?" +msgstr "在代码中,\"pass \"有什么作用?" + +#: course/lesson-13-conditions/lesson.tres:189 +msgid "" +"The [code]pass[/code] keyword prevents errors in our code when a line cannot " +"be empty.\n" +"\n" +"For example, we must have a line of code after a function definition or an " +"[code]if[/code] block. When you don't know what to write yet, you can use " +"the [code]pass[/code] keyword as a placeholder, and Godot won't give any " +"errors.\n" +"\n" +"In the previous example, if there was nothing below the [code]if[/code] " +"lines, Godot would give us an \"Expected an indented block after 'if' \" " +"error." +msgstr "" +"当一行代码不能为空时,[code]pass[/code] 关键字可以防止代码出错。\n" +"\n" +"例如,我们必须在函数定义或 [code]if[/code] " +"代码块之后写一行代码。当你还不知道要写什么时,可以使用 [code]pass[/code] " +"关键字作为占位符,这样 Godot 就不会报错了。\n" +"\n" +"在上一个示例中,如果 [code]if[/code] 行下面没有任何内容,Godot 就会抛出 " +"\"Expected an indented block after 'if' \" 的错误。" + +#: course/lesson-13-conditions/lesson.tres:201 +msgid "Which of these statements are true?" +msgstr "这些陈述中哪些是正确的?" + +#: course/lesson-13-conditions/lesson.tres:204 +msgid "" +"The comparison [code]3 > 1[/code] means \"three is greater than one\" which " +"is [b]true[/b].\n" +"The comparison [code]2 < 3[/code] means \"two is less than three\" which is " +"[b]true[/b].\n" +"The comparison [code]1 != 3[/code] means \"one is not equal to three\" which " +"is [b]true[/b].\n" +"\n" +"The comparison [code]2 == 1[/code] means \"two is equal to one\" which is " +"[b]false[/b].\n" +"The comparison [code]3 < 1[/code] means \"three is less than one\" which is " +"[b]false[/b]." +msgstr "" +"比较 [code]3 > 1[/code] 表示“三大于一”,为 [b]true[/b]。\n" +"比较 [code]2 < 3[/code] 表示“二小于三”,为 [b]true[/b]。\n" +"比较 [code]1 != 3[/code] 表示“一不等于三”,为 [b]true[/b]。\n" +"\n" +"比较 [code]2 == 1[/code] 表示“二等于一”,为 [b]false[/b]。\n" +"比较 [code]3 < 1[/code] 表示“三小于一”,为 [b]false[/b]。" + +#: course/lesson-13-conditions/lesson.tres:210 +#: course/lesson-13-conditions/lesson.tres:211 +msgid "3 > 1" +msgstr "3 > 1" + +#: course/lesson-13-conditions/lesson.tres:210 +msgid "2 == 1" +msgstr "2 == 1" + +#: course/lesson-13-conditions/lesson.tres:210 +#: course/lesson-13-conditions/lesson.tres:211 +msgid "2 < 3" +msgstr "2 < 3" + +#: course/lesson-13-conditions/lesson.tres:210 +#: course/lesson-13-conditions/lesson.tres:211 +msgid "1 != 3" +msgstr "1 != 3" + +#: course/lesson-13-conditions/lesson.tres:210 +msgid "3 < 1" +msgstr "3 < 1" + +#: course/lesson-13-conditions/lesson.tres:218 +msgid "Or else..." +msgstr "亦或..." + +#: course/lesson-13-conditions/lesson.tres:220 +msgid "" +"The [code]if[/code] keyword comes with a complementary [code]else[/code] " +"keyword.\n" +"\n" +"You can write an [code]else[/code] block after an [code]if[/code] block, " +"like so." +msgstr "" +"[code]if[/code] 关键字带有一个搭配的 [code]else[/code] 关键字。\n" +"\n" +"您可以在 [code]if[/code] 块之后编写 [code]else[/code] 块,就像这样。" + +#: course/lesson-13-conditions/lesson.tres:242 +msgid "" +"The [code]else[/code] block will run whenever the condition above it isn't " +"met." +msgstr "只要不满足上面的条件,[code]else[/code] 块就会运行。" + +#: course/lesson-13-conditions/lesson.tres:252 +msgid "" +"In the following practices, we'll use conditions and improve the way our " +"character's health changes so it has limits." +msgstr "" +"在接下来的实践中,我们将使用条件并改进角色血量变化的方式,使其具有限制。" + +#: course/lesson-13-conditions/lesson.tres:260 +msgid "Using Comparisons" +msgstr "使用比较" + +#: course/lesson-13-conditions/lesson.tres:261 +#, fuzzy +msgid "" +"This series of [code]if[/code] statements is all wrong. Change the " +"comparisons so each comparison matches the instruction below it.\n" +"\n" +"Keep the values and statements as they are; only change the comparison " +"signs.\n" +"\n" +"As a reminder, the comparison signs are:\n" +"[code]\n" +"> greater than\n" +"< less than\n" +"== equal to\n" +"!= not equal to\n" +"[/code]\n" +"\n" +"The line [code]health < 5:[/code] means \"health is less than 5\".\n" +"\n" +"Because [code]health = 100[/code], this is false so [code]print(\"health is " +"greater than five.\")[/code] won't run." +msgstr "" +"这一系列 [code]if[/code] 语句都是错误的。更改比较,使每个比较与下面的指令相匹" +"配。\n" +"\n" +"保持原样的价值观和陈述;只更改比较符号。\n" +"\n" +"提醒一下,比较符号是:\n" +"[code]\n" +"> 大于\n" +"< 小于\n" +"== 等于\n" +"!= 不等于\n" +"[/code]\n" +"\n" +"[code]health < 5:[/code] 行的意思是“健康小于 5”。\n" +"\n" +"因为 [code]health = 100[/code]是错误的,所以 [code]print(\"health is greater " +"than 5.\")[/code] 不会运行。" + +#: course/lesson-13-conditions/lesson.tres:297 +msgid "" +"Comparing values allows us to make decisions in code. But there's something " +"wrong with these statements.." +msgstr "比较值允许我们在代码中做出决定。但是这些说法有问题.." + +#: course/lesson-13-conditions/lesson.tres:302 +msgid "Limiting Healing" +msgstr "限制愈合" + +#: course/lesson-13-conditions/lesson.tres:303 +msgid "" +"We have a heal function that adds an amount to the character's health.\n" +"\n" +"Add to the function so the character's health is never greater than " +"[code]80[/code]." +msgstr "" +"我们有一个治疗功能,可以增加角色的生命值。\n" +"\n" +"添加到函数中,使角色的生命值永远不会超过 [code]80[/code]。" + +#: course/lesson-13-conditions/lesson.tres:315 +msgid "" +"As much as we might like, we don't want our robot to have too much health. " +"Limit how much healing the robot can take." +msgstr "" +"尽管我们可能喜欢,我们不希望我们的机器人有太多的血量。限制机器人可以进行多少" +"治疗。" + +#: course/lesson-13-conditions/lesson.tres:320 +msgid "Preventing Health from Going Below Zero" +msgstr "防止血量低于零" + +#: course/lesson-13-conditions/lesson.tres:321 +msgid "" +"When the robot takes damage, its health can be negative.\n" +"\n" +"We might want to display the health number on screen, like in Japanese " +"RPGs.\n" +"\n" +"We don't want negative numbers. We want to stop at zero instead.\n" +"\n" +"Calling the function should reduce [code]health[/code] by [code]amount[/" +"code].\n" +"\n" +"If [code]health[/code] goes below [code]0[/code], set it to [code]0[/code] " +"again." +msgstr "" +"当机器人受到伤害时,它的血量可能变成负的。\n" +"\n" +"我们可能想在屏幕上显示血量的数字,就像在日式RPG 中一样。\n" +"\n" +"我们不想要负数。相反,我们想停在零。\n" +"\n" +"调用这一函数会将 [code]health[/code] 减少 [code]amount[/code]大小 。\n" +"\n" +"如果 [code]health[/code] 低于 [code]0[/code],请再次将其设置为 [code]0[/" +"code]。" + +#: course/lesson-13-conditions/lesson.tres:339 +msgid "" +"Having a negative health value doesn't make a lot of sense. Make sure the " +"robot's health can't go below zero." +msgstr "具有负数的血量并没有多大意义。确保机器人的血量不能低于零。" + +#: course/lesson-13-conditions/lesson.tres:343 +msgid "Conditions" +msgstr "条件" diff --git a/i18n/zh_Hans/lesson-14-multiplying.po b/i18n/zh_Hans/lesson-14-multiplying.po new file mode 100644 index 00000000..ed535375 --- /dev/null +++ b/i18n/zh_Hans/lesson-14-multiplying.po @@ -0,0 +1,302 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2022-05-08 12:00+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-14-multiplying/lesson.tres:14 +msgid "" +"Our robot's health is always between [code]0[/code] and [code]100[/code].\n" +"\n" +"But as our robot fights, we want to increase its strength and toughness.\n" +"\n" +"When a character levels up, it might deal more damage to enemies, gain new " +"abilities or, in our case, gain more health." +msgstr "" +"我们机器人的血量状况始终介于 [code]0[/code] 和 [code]100[/code] 之间。\n" +"\n" +"但是当我们的机器人战斗时,我们想要增加它的力量和韧性。\n" +"\n" +"当一个角色升级时,它可能会对敌人造成更多伤害,获得新的能力,或者在我们的例子" +"中,获得更多的血量。" + +#: course/lesson-14-multiplying/lesson.tres:28 +msgid "" +"We define a [code]level[/code] variable to keep track of the level of the " +"robot. It starts at level one.\n" +"\n" +"When the robot has defeated enough enemies, we call the [code]level_up()[/" +"code] function to increment the robot's level." +msgstr "" +"我们定义了一个 [code]level[/code] 变量来跟踪机器人的等级。它从第一级开始。\n" +"\n" +"当机器人击败足够多的敌人时,我们调用 [code]level_up()[/code] 函数来增加机器人" +"的等级。" + +#: course/lesson-14-multiplying/lesson.tres:50 +msgid "" +"As we briefly saw in the last lesson, our robot could have a range of " +"variables that could increase when it levels up." +msgstr "" +"正如我们在上一课中简要介绍的那样,我们的机器人可能有一系列变量,当它升级时可" +"能会增加。" + +#: course/lesson-14-multiplying/lesson.tres:70 +#, fuzzy +msgid "" +"In this lesson, we'll just focus on increasing the robot's [code]max_health[/" +"code].\n" +"\n" +"The variable [code]max_health[/code] is the maximum amount the robot's " +"[code]health[/code] can be. We change our [code]heal()[/code] function to " +"use this variable." +msgstr "" +"在本课中,我们将只关注增加机器人的 [code]max_health[/code]。\n" +"\n" +"变量 [code]max_health[/code] 是机器人的 [code]血量[/code] 可以达到的最大值。" +"我们改变我们的 [code]take_damage()[/code] 函数来使用这个变量。" + +#: course/lesson-14-multiplying/lesson.tres:92 +msgid "" +"We could add [code]5[/code] to the [code]max_health[/code] every time the " +"robot levels up." +msgstr "" +"每次机器人升级时,我们可以将 [code]5[/code] 添加到 [code]max_health[/code]。" + +#: course/lesson-14-multiplying/lesson.tres:112 +msgid "" +"This would increase [code]max_health[/code] the same amount every time.\n" +"\n" +"If we graphed [code]max_health[/code], it'd look something like this." +msgstr "" +"这将每次增加 [code]max_health[/code] 相同的数量。\n" +"\n" +"如果我们绘制 [code]max_health[/code],它看起来像这样。" + +#: course/lesson-14-multiplying/lesson.tres:134 +msgid "" +"This growth is [b]linear[/b].\n" +"\n" +"In our case, we want a feeling of more and more power as the robot levels " +"up.\n" +"\n" +"We want a graph like this." +msgstr "" +"这种增长是[b]线性[/b]。\n" +"\n" +"在我们的例子中,我们希望随着机器人的升级而感受到越来越强大的力量。\n" +"\n" +"我们想要这样的图表。" + +#: course/lesson-14-multiplying/lesson.tres:158 +msgid "" +"This growth is [b]exponential[/b].\n" +"\n" +"With each level, more [code]max_health[/code] is added than the previous " +"level up.\n" +"\n" +"To get the exponential growth, we multiply the [code]max_health[/code] by an " +"amount greater than [code]1[/code] each time the robot levels up.\n" +"\n" +"To multiply values together, we use [code]*[/code]." +msgstr "" +"这种增长是[b]指数[/b]。\n" +"\n" +"每个级别都会添加比上一个级别更多的 [code]max_health[/code]。\n" +"\n" +"为了获得指数增长,每次机器人升级时,我们将 [code]max_health[/code] 乘以大于 " +"[code]1[/code] 的数量。\n" +"\n" +"要将值相乘,我们使用 [code]*[/code]。" + +#: course/lesson-14-multiplying/lesson.tres:172 +msgid "What is the value of damage?" +msgstr "伤害的值是多少?" + +#: course/lesson-14-multiplying/lesson.tres:173 +msgid "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"[/code]" +msgstr "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"[/code]" + +#: course/lesson-14-multiplying/lesson.tres:181 +msgid "" +"We multiply [code]power[/code] by [code]level[/code] using [code]*[/code] to " +"get the result of [code]15[/code]." +msgstr "" +"我们使用 [code]*[/code] 将 [code]power[/code] 乘以 [code]level[/code] 得到 " +"[code]15[/code] 的结果。" + +#: course/lesson-14-multiplying/lesson.tres:182 +#: course/lesson-14-multiplying/lesson.tres:183 +msgid "15" +msgstr "15" + +#: course/lesson-14-multiplying/lesson.tres:182 +msgid "9" +msgstr "9" + +#: course/lesson-14-multiplying/lesson.tres:182 +msgid "10" +msgstr "10" + +#: course/lesson-14-multiplying/lesson.tres:192 +msgid "" +"We can use [code]*=[/code] in the same way as [code]-=[/code] and [code]+=[/" +"code]." +msgstr "" +"我们可以像使用[code]-=[/code]和[code]+=[/code]一样使用[code]*=[/code]。" + +#: course/lesson-14-multiplying/lesson.tres:200 +msgid "What is the value of damage now?" +msgstr "现在伤害值是多少?" + +#: course/lesson-14-multiplying/lesson.tres:201 +msgid "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"\tdamage *= 2\n" +"[/code]" +msgstr "" +"[code]\n" +"var level = 5\n" +"var power = 3\n" +"\n" +"func calculate_damage():\n" +"\tvar damage = power * level\n" +"\tdamage *= 2\n" +"[/code]" + +#: course/lesson-14-multiplying/lesson.tres:210 +msgid "" +"The value of [code]damage[/code] starts as [code]15[/code].\n" +"\n" +"Then, [code]damage *= 2[/code] multiplies it by [code]2[/code] to get " +"[code]30[/code]." +msgstr "" +"[code]damage[/code] 的值以 [code]15[/code] 开头。\n" +"\n" +"然后,[code]damage *= 2[/code] 乘以 [code]2[/code] 得到 [code]30[/code]。" + +#: course/lesson-14-multiplying/lesson.tres:213 +#: course/lesson-14-multiplying/lesson.tres:214 +msgid "30" +msgstr "30" + +#: course/lesson-14-multiplying/lesson.tres:213 +msgid "13" +msgstr "13" + +#: course/lesson-14-multiplying/lesson.tres:213 +msgid "25" +msgstr "25" + +#: course/lesson-14-multiplying/lesson.tres:223 +msgid "" +"Let's level up our robot and add exponential growth to [code]max_health[/" +"code]." +msgstr "让我们升级我们的机器人并将指数增长添加到 [code]max_health[/code]。" + +#: course/lesson-14-multiplying/lesson.tres:243 +msgid "" +"In the practices, you'll increase the robot's [code]max_health[/code] and " +"add a special ability to our robot to make it extra tough at high levels." +msgstr "" +"在练习中,您将增加机器人的 [code]max_health[/code] 并为我们的机器人添加特殊能" +"力,使其在高水平时更加坚韧。" + +#: course/lesson-14-multiplying/lesson.tres:251 +msgid "Increasing maximum health exponentially" +msgstr "成倍增加最大生命值" + +#: course/lesson-14-multiplying/lesson.tres:252 +msgid "" +"Let's make the robot stronger when it levels up.\n" +"\n" +"Add to the [code]level_up()[/code] function so it does the following:\n" +"\n" +"- Increases [code]level[/code] by one.\n" +"- Increases [code]max_health[/code] by 10%." +msgstr "" +"让机器人在升级时变得更强大。\n" +"\n" +"添加到 [code]level_up()[/code] 函数,使其执行以下操作:\n" +"\n" +"- 将 [code]level[/code] 增加一。\n" +"- 将 [code]max_health[/code] 提高 10%。" + +#: course/lesson-14-multiplying/lesson.tres:270 +msgid "" +"We want our robot to increase in strength as it levels up. Let's increase " +"its health exponentially!" +msgstr "我们希望我们的机器人随着它的升级而增加强度。让我们成倍地增加它的健康!" + +#: course/lesson-14-multiplying/lesson.tres:275 +msgid "Reducing damage at higher levels" +msgstr "降低更高级别的伤害" + +#: course/lesson-14-multiplying/lesson.tres:276 +msgid "" +"When our robot's [code]level[/code] is [code]3[/code] or more, we want it to " +"take a lot less damage.\n" +"\n" +"Add to the [code]take_damage()[/code] function so the following happens:\n" +"\n" +"- [code]if[/code] the robot's [code]level[/code] is greater than [code]2[/" +"code], reduce the damage [code]amount[/code] by 50%\n" +"\n" +"The robot is level 3. An enemy is going to attack for 10 damage. This damage " +"should reduce to 5." +msgstr "" +"当我们的机器人的 [code]level[/code] 为 [code]3[/code] 或更高时,我们希望它受" +"到的伤害更少。\n" +"\n" +"添加到 [code]take_damage()[/code] 函数,这样会发生以下情况:\n" +"\n" +"- [code]if[/code]机器人的[code]level[/code]大于[code]2[/code],减少" +"[code]amount[/code]伤害50%\n" +"\n" +"机器人是 3 级。一个敌人会攻击 10 点伤害。这个伤害应该减少到5。" + +#: course/lesson-14-multiplying/lesson.tres:299 +msgid "" +"At higher levels, we want our robot to be super tough and take even less " +"damage!" +msgstr "在更高的等级上,我们希望我们的机器人超级强悍并且受到更少的伤害!" + +#: course/lesson-14-multiplying/lesson.tres:303 +msgid "Multiplying" +msgstr "乘法" diff --git a/i18n/zh_Hans/lesson-15-modulo.po b/i18n/zh_Hans/lesson-15-modulo.po new file mode 100644 index 00000000..04832d82 --- /dev/null +++ b/i18n/zh_Hans/lesson-15-modulo.po @@ -0,0 +1,321 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-15-modulo/lesson.tres:14 +msgid "" +"The modulo operation ([code]%[/code]) calculates the remainder of a whole " +"number division.\n" +"\n" +"For example, the modulo of [code]5[/code] by [code]3[/code] ([code]5 % 3[/" +"code]) is [code]2[/code].\n" +"\n" +"We typically use this operation to tell if a number is odd or even or to " +"produce a random number within a particular range (like a dice roll).\n" +"\n" +"Play around with the modulo widget on the right to see how modulo works " +"visually." +msgstr "" +"模运算 ([code]%[/code]) 计算整数除法的余数。\n" +"\n" +"例如,[code]5[/code] 与 [code]3[/code] ([code]5 % 3[/code]) 的模是 [code]2[/" +"code]。\n" +"\n" +"我们通常使用这个操作来判断一个数字是奇数还是偶数,或者产生一个特定范围内的随" +"机数(如掷骰子)。\n" +"\n" +"玩弄右边的模小部件,看看模是如何在视觉上工作的。" + +#: course/lesson-15-modulo/lesson.tres:28 +msgid "What's the result of this modulo operation?" +msgstr "这个模运算的结果是什么?" + +#: course/lesson-15-modulo/lesson.tres:29 +msgid "[code]11 % 4[/code]" +msgstr "[code]11 % 4[/code]" + +#: course/lesson-15-modulo/lesson.tres:31 +msgid "" +"[code]11[/code] divided by [code]4[/code] is [code]2[/code], and the " +"[b]remainder[/b] of the division is [code]3[/code].\n" +"\n" +"So [code]11 % 4[/code] is [code]3[/code]." +msgstr "" +"[code]11[/code]除以[code]4[/code]为[code]2[/code],除法的[b]余数[/b]为" +"[code]3[/code] .\n" +"\n" +"所以 [code]11 % 4[/code] 是 [code]3[/code]。" + +#: course/lesson-15-modulo/lesson.tres:34 +#: course/lesson-15-modulo/lesson.tres:35 +msgid "3" +msgstr "3" + +#: course/lesson-15-modulo/lesson.tres:34 +msgid "2" +msgstr "2" + +#: course/lesson-15-modulo/lesson.tres:34 +msgid "7" +msgstr "7" + +#: course/lesson-15-modulo/lesson.tres:44 +msgid "" +"The modulo operation only works on [b]whole numbers[/b]; Not decimal " +"numbers.\n" +"\n" +"Also, just like in regular divisions, the divisor can't be zero.\n" +"\n" +"All three examples below will cause an error in your code." +msgstr "" +"模运算仅适用于[b]整数[/b];不是十进制数。\n" +"\n" +"此外,就像在常规除法中一样,除数不能为零。\n" +"\n" +"以下所有三个示例都将导致您的代码出错。" + +#: course/lesson-15-modulo/lesson.tres:66 +msgid "Three ways we use the modulo operation" +msgstr "我们使用模运算的三种方式" + +#: course/lesson-15-modulo/lesson.tres:68 +msgid "" +"The modulo operation has important uses in programming, like making a number " +"cycle.\n" +"\n" +"Take a traffic light, for example." +msgstr "" +"模运算在编程中具有重要用途,例如制作数字循环。\n" +"\n" +"以交通灯为例。" + +#: course/lesson-15-modulo/lesson.tres:90 +msgid "" +"We use the number [code]light_index[/code] to represent the traffic light's " +"current state.\n" +"\n" +"The lights always cycle in the same way: first, we have the red light, then " +"the yellow, then the green.\n" +"\n" +"To represent that cycle, you can periodically add one to the number and use " +"the modulo operator to wrap back to [code]0[/code].\n" +"\n" +"Instead, you could use a condition; In this case, we use the modulo as a " +"shortcut." +msgstr "" +"我们使用数字 [code]light_index[/code] 来表示红绿灯的当前状态。\n" +"\n" +"灯总是以相同的方式循环:首先,我们有红灯,然后是黄色,然后是绿色。\n" +"\n" +"为了表示该循环,您可以定期将数字加一并使用模运算符返回到 [code]0[/code]。\n" +"\n" +"相反,您可以使用条件;在这种情况下,我们使用模数作为捷径。" + +#: course/lesson-15-modulo/lesson.tres:114 +msgid "Why do we start from zero?" +msgstr "为什么要从零开始?" + +#: course/lesson-15-modulo/lesson.tres:116 +msgid "" +"In computer code, we very often count from [code]0[/code].\n" +"\n" +"Every number translates to a precise combination of bits in the machine, " +"starting from [code]0[/code].\n" +"\n" +"We don't want to waste any number, and as the first number the computer " +"knows about is [code]0[/code], we start counting from [code]0[/code]." +msgstr "" +"在计算机代码中,我们经常从 [code]0[/code] 开始计数。\n" +"\n" +"每个数字都转换为机器中位的精确组合,从 [code]0[/code] 开始。\n" +"\n" +"我们不想浪费任何数字,因为计算机知道的第一个数字是 [code]0[/code],我们从 " +"[code]0[/code] 开始计数。" + +#: course/lesson-15-modulo/lesson.tres:128 +msgid "Using modulo to find even and odd numbers" +msgstr "使用模查找偶数和奇数" + +#: course/lesson-15-modulo/lesson.tres:130 +msgid "" +"We can also use a modulo to check if a number is even or odd. If we divide a " +"number by [code]2[/code] and there's no remainder, then the number is " +"[b]even[/b]." +msgstr "" +"我们还可以使用模来检查数字是偶数还是奇数。如果我们将一个数除以 [code]2[/" +"code] 并且没有余数,则该数是 [b]偶数[/b]。" + +#: course/lesson-15-modulo/lesson.tres:150 +msgid "" +"Notice how the modulo can be larger than the number it affects. For example, " +"[code]1 % 2[/code] gives you [code]1[/code]. That's because [code]1[/code] " +"divided by [code]2[/code] equals [code]0[/code], and the remainder is " +"[code]1[/code].\n" +"\n" +"Like with divisions, the only case you can't use modulo is with a divisor of " +"[code]0[/code]." +msgstr "" +"注意模数如何大于它影响的数字。例如,[code]1 % 2[/code] 为您提供 [code]1[/" +"code]。这是因为 [code]1[/code] 除以 [code]2[/code] 等于 [code]0[/code],余数" +"为 [code]1[/code]。\n" +"\n" +"与除法一样,唯一不能使用模数的情况是除数为 [code]0[/code]。" + +#: course/lesson-15-modulo/lesson.tres:170 +msgid "Calculating a random number within a range" +msgstr "计算范围内的随机数" + +#: course/lesson-15-modulo/lesson.tres:172 +msgid "" +"We can use the modulo to simulate dice rolls. To do so, we generate a large " +"random number and use the modulo operator to limit the number's range.\n" +"\n" +"To generate a random whole number, you can call the [code]randi()[/code] " +"function. The name stands for random integer.\n" +"\n" +"The number the function generates can be huge: roughly up to 2 billion on an " +"Android device and around 10^18 on a 64-bit computer.\n" +"\n" +"You can use the modulo operation to limit the random number's range." +msgstr "" +"我们可以使用模来模拟掷骰子。为此,我们生成一个大随机数并使用模运算符来限制数" +"字的范围。\n" +"\n" +"要生成随机整数,可以调用 [code]randi()[/code] 函数。该名称代表随机整数。\n" +"\n" +"该函数生成的数字可能很大:在 Android 设备上大约高达 20 亿,在 64 位计算机上大" +"约为 10^18。\n" +"\n" +"您可以使用模运算来限制随机数的范围。" + +#: course/lesson-15-modulo/lesson.tres:198 +msgid "" +"The result is also random because we use the modulo operation on a random " +"number.\n" +"\n" +"In the following practices, you'll use a modulo to advance traffic lights, " +"add maximum health to the robot on every odd level, and learn how to code " +"dice rolls." +msgstr "" +"结果也是随机的,因为我们对随机数使用模运算。\n" +"\n" +"在以下练习中,您将使用模数来推进红绿灯,在每个奇数级别为机器人添加最大生命" +"值,并学习如何编写掷骰子代码。" + +#: course/lesson-15-modulo/lesson.tres:208 +msgid "Advancing Traffic Lights" +msgstr "推进交通灯" + +#: course/lesson-15-modulo/lesson.tres:209 +msgid "" +"Add to the [code]advance_traffic_light()[/code] function so the " +"[code]light_index[/code] variable increments by one, then wraps back to " +"[code]0[/code] if it gets too high.\n" +"\n" +"Use the modulo operator [code]%[/code] to make sure the value of " +"[code]light_index[/code] wraps back to [code]0[/code].\n" +"\n" +"The value of [code]light_index[/code] should only ever be [code]0[/code], " +"[code]1[/code], or [code]2[/code]." +msgstr "" +"添加到 [code]advance_traffic_light()[/code] 函数,使 [code]light_index[/" +"code] 变量递增 1,如果它变得太高,则返回到 [code]0[/code]。\n" +"\n" +"使用模运算符 [code]%[/code] 确保 [code]light_index[/code] 的值回绕到 " +"[code]0[/code]。\n" +"\n" +"[code]light_index[/code] 的值只能是 [code]0[/code]、[code]1[/code] 或 " +"[code]2[/code]。" + +#: course/lesson-15-modulo/lesson.tres:223 +msgid "" +"Learn how to use modulo to wrap a number back to zero using traffic lights." +msgstr "了解如何使用红绿灯使用模数将数字回零。" + +#: course/lesson-15-modulo/lesson.tres:228 +msgid "Rolling Dice" +msgstr "掷骰子" + +#: course/lesson-15-modulo/lesson.tres:229 +msgid "" +"Our dice rolling function doesn't work! Right now, it always gives the " +"result of how many sides the dice has: 20.\n" +"\n" +"Use [code]randi()[/code] to generate a random number and the modulo " +"operation [code]%[/code]. \n" +"\n" +"Using the [code]return[/code] keyword inside the function, return a random " +"number between [code]1[/code] and [code]sides[/code]." +msgstr "" +"我们的掷骰子功能不起作用!现在,它总是给出骰子有多少面的结果:20。\n" +"\n" +"使用 [code]randi()[/code] 生成随机数和模运算 [code]%[/code]。\n" +"\n" +"使用函数内部的 [code]return[/code] 关键字,返回 [code]1[/code] 和 " +"[code]sides[/code] 之间的随机数。" + +#: course/lesson-15-modulo/lesson.tres:243 +msgid "" +"Whether in a board game or video game, getting a random number is always " +"useful. Here, we create a function that simulates a dice roll." +msgstr "" +"无论是在棋盘游戏还是视频游戏中,获取随机数总是有用的。在这里,我们创建了一个" +"模拟掷骰子的函数。" + +#: course/lesson-15-modulo/lesson.tres:248 +msgid "Bonus Health Every Other Level" +msgstr "其他级别的额外生命值" + +#: course/lesson-15-modulo/lesson.tres:249 +msgid "" +"Change the [code]level_up()[/code] function so it does the following:\n" +"\n" +"1) Increment [code]level[/code] by [code]1[/code]\n" +"2) Increase [code]max_health[/code] by [code]5[/code]\n" +"3) If [code]level[/code] is [b]even[/b], increase [code]max_health[/code] by " +"an additional [code]5[/code]\n" +"\n" +"The robot starts with [code]100[/code] maximum health. It will gain three " +"levels when you run the code. At level 4, the robot should have [code]125[/" +"code] maximum health." +msgstr "" +"更改 [code]level_up()[/code] 函数,使其执行以下操作:\n" +"\n" +"1) 将 [code]level[/code] 增加 [code]1[/code]\n" +"2) 将 [code]max_health[/code] 增加 [code]5[/code]\n" +"3) 如果 [code]level[/code] 为 [b]偶数[/b],则将 [code]max_health[/code] 增加" +"一个 [code]5[/code]\n" +"\n" +"机器人以 [code]100[/code] 最大生命值开始。运行代码时,它将获得三个级别。在第 " +"4 级,机器人应该有 [code]125[/code] 的最大生命值。" + +#: course/lesson-15-modulo/lesson.tres:265 +msgid "" +"There are other ways to increase maximum health. You could use a modulo to " +"give a bonus every even level. Learn how here!" +msgstr "" +"还有其他方法可以增加最大血量。您可以使用模数为每个偶数等级提供奖金。在这里学" +"习如何!" + +#: course/lesson-15-modulo/lesson.tres:269 +msgid "Modulo" +msgstr "模数" diff --git a/i18n/zh_Hans/lesson-16-2d-vectors.po b/i18n/zh_Hans/lesson-16-2d-vectors.po new file mode 100644 index 00000000..642d90a9 --- /dev/null +++ b/i18n/zh_Hans/lesson-16-2d-vectors.po @@ -0,0 +1,283 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-16-2d-vectors/lesson.tres:14 +msgid "" +"Suppose we want to increase the size of the robot when it levels up.\n" +"\n" +"As you may recall, we do this by using the following code." +msgstr "" +"假设我们想在机器人升级时增加它的大小。\n" +"\n" +"您可能还记得,我们使用以下代码来执行此操作。" + +#: course/lesson-16-2d-vectors/lesson.tres:36 +msgid "" +"As we talked about in lesson 7, the [code]scale[/code] variable has two sub-" +"variables to it: [code]x[/code] and [code]y[/code].\n" +"\n" +"This is because [code]scale[/code] is a [code]Vector2[/code], which stands " +"for two-dimensional vector. A [code]Vector2[/code] represents 2D coordinates." +msgstr "" +"正如我们在第 7 课中谈到的,[code]scale[/code] 变量有两个子变量:[code]x[/" +"code] 和 [code]y[/code]。\n" +"\n" +"这是因为[code]scale[/code]是一个[code]Vector2[/code],代表二维向量。 一个" +"[code]Vector2[/code] 表示二维坐标。" + +#: course/lesson-16-2d-vectors/lesson.tres:46 +msgid "What are vectors?" +msgstr "什么是向量?" + +#: course/lesson-16-2d-vectors/lesson.tres:48 +msgid "" +"A vector, in physics, is a quantity with a magnitude and a direction. For " +"example, a force applied to some object, the velocity (speed and direction) " +"of a character, and so on.\n" +"\n" +"We often represent this quantity with an arrow.\n" +"\n" +"In Godot, 2D vectors are a common value type named [code]Vector2[/code],\n" +"\n" +"Unlike plain numbers, they store [i]two[/i] decimal numbers: one for the X " +"coordinate and one for the Y coordinate." +msgstr "" +"在物理学中,向量是具有大小和方向的量。例如,施加到某个对象的力、角色的速度" +"(速度和方向)等等。\n" +"\n" +"我们经常用箭头表示这个数量。\n" +"\n" +"在 Godot 中,二维向量是一种常见的值类型,名为 [code]Vector2[/code],\n" +"\n" +"与普通数字不同,它们存储 [i] 两个 [/i] 十进制数字:一个用于 X 坐标,一个用于 " +"Y 坐标。" + +#: course/lesson-16-2d-vectors/lesson.tres:72 +msgid "" +"So far, you've come across two variables in the course which are vectors. " +"Which are they?" +msgstr "到目前为止,您在课程中遇到了两个变量,它们是向量。他们是谁?" + +#: course/lesson-16-2d-vectors/lesson.tres:75 +msgid "" +"Both [code]scale[/code] and [code]position[/code] have [code]x[/code] and " +"[code]y[/code] sub-variables, so Godot uses a [code]Vector2[/code] to store " +"their values." +msgstr "" +"[code]scale[/code] 和 [code]position[/code] 都有 [code]x[/code] 和 [code]y[/" +"code] 子变量,所以 Godot 使用了 [code]Vector2[/code] 来存储它们的值。" + +#: course/lesson-16-2d-vectors/lesson.tres:76 +#: course/lesson-16-2d-vectors/lesson.tres:77 +msgid "scale" +msgstr "缩放" + +#: course/lesson-16-2d-vectors/lesson.tres:76 +#: course/lesson-16-2d-vectors/lesson.tres:77 +msgid "position" +msgstr "位置" + +#: course/lesson-16-2d-vectors/lesson.tres:76 +msgid "health" +msgstr "健康" + +#: course/lesson-16-2d-vectors/lesson.tres:76 +msgid "speed" +msgstr "速度" + +#: course/lesson-16-2d-vectors/lesson.tres:84 +msgid "Vectors are great for games" +msgstr "矢量非常适合游戏" + +#: course/lesson-16-2d-vectors/lesson.tres:86 +msgid "" +"Vectors are [i]essential[/i] in video games.\n" +"\n" +"They allow you to represent a character's movement speed and direction, " +"calculate the distance to a target, and more, with little code.\n" +"\n" +"Take this turtle AI below. You've probably seen games where enemies move " +"like this.\n" +"\n" +"This is done with just seven lines of pure vector calculation code.\n" +"\n" +"The code is a bit too difficult for now, so we'll spare you the details, but " +"this turtle gives you a glimpse of what 2D vectors can do for you and your " +"game projects." +msgstr "" +"向量在电子游戏中是[i]必不可少的[/i]。\n" +"\n" +"它们允许您用很少的代码表示角色的移动速度和方向,计算到目标的距离等等。\n" +"\n" +"拿下面这个乌龟 AI。您可能已经看过敌人像这样移动的游戏。\n" +"\n" +"只需 7 行纯矢量计算代码即可完成此操作。\n" +"\n" +"代码现在有点太难了,所以我们不会详细说明,但这只海龟让您了解 2D 向量可以为您" +"和您的游戏项目做些什么。" + +#: course/lesson-16-2d-vectors/lesson.tres:114 +msgid "" +"We scale the robot again, this time by adding to it directly using a " +"[code]Vector2[/code]. The following code has the same effect as the previous " +"example." +msgstr "" +"我们再次缩放机器人,这次是通过使用 [code]Vector2[/code] 直接添加到它。下面的" +"代码和前面的例子效果一样。" + +#: course/lesson-16-2d-vectors/lesson.tres:134 +msgid "" +"Notice how we use parentheses and two arguments inside parentheses, just " +"like other function calls.\n" +"\n" +"We call this a [i]constructor function call[/i]. You can think of it as a " +"special kind of function that creates a particular type of value.\n" +"\n" +"The code [code]Vector2(0.2, 0.2)[/code] constructs a new [code]Vector2[/" +"code] value with its [code]x[/code] set to [code]0.2[/code] and its [code]y[/" +"code] set to [code]0.2[/code], respectively." +msgstr "" +"注意我们如何使用括号和括号内的两个参数,就像其他函数调用一样。\n" +"\n" +"我们称之为[i]构造函数调用[/i]。您可以将其视为一种创建特定类型值的特殊函数。\n" +"\n" +"代码 [code]Vector2(0.2, 0.2)[/code] 构造了一个新的 [code]Vector2[/code] 值," +"其 [code]x[/code] 设置为 [code]0.2[/code] 并且其 [code]y[/code] 分别设置为 " +"[code]0.2[/code]。" + +#: course/lesson-16-2d-vectors/lesson.tres:146 +msgid "Using vectors to change the position" +msgstr "使用向量改变位置" + +#: course/lesson-16-2d-vectors/lesson.tres:148 +msgid "" +"We can add and subtract vectors to [code]position[/code] because it's a " +"vector. If we wanted to move our robot to a new relative position, we would " +"add a [code]Vector2[/code] to its [code]position[/code]." +msgstr "" +"我们可以在 [code]position[/code] 中添加和减去向量,因为它是一个向量。如果我们" +"想将我们的机器人移动到一个新的相对位置,我们将添加一个 [code]Vector2[/code] " +"到它的 [code]position[/code]。" + +#: course/lesson-16-2d-vectors/lesson.tres:166 +msgid "How would you move the robot 50 pixels to the left?" +msgstr "如何将机器人向左移动 50 像素?" + +#: course/lesson-16-2d-vectors/lesson.tres:169 +#, fuzzy +msgid "" +"[code]position -= Vector2(50, 0)[/code] subtracts [code]50[/code] to the sub-" +"variable [code]x[/code], and [code]0[/code] to [code]y[/code].\n" +"\n" +"[code]position.x -= Vector2(50, 0)[/code] tries to subtract a 2D vector to " +"the sub-variable [code]x[/code], which is a decimal number. The value types " +"are incompatible. If you try to do this, you will get an error." +msgstr "" +"[code]position -= Vector2(50, 0)[/code] 减去 [code]50[/code] 到子变量 " +"[code]x[/code] 和 [code]0[/code] 到 [code]y[/code]。\n" +"\n" +"[code]position.x -= Vector(50, 0)[/code] 尝试将 2D 向量减去子变量 [code]x[/" +"code],它是一个十进制数。值类型不兼容。如果你尝试这样做,你会得到一个错误。" + +#: course/lesson-16-2d-vectors/lesson.tres:172 +#: course/lesson-16-2d-vectors/lesson.tres:173 +msgid "position -= Vector2(50, 0)" +msgstr "position -= Vector2(50, 0)" + +#: course/lesson-16-2d-vectors/lesson.tres:172 +msgid "position.x -= Vector2(50, 0)" +msgstr "position.x -= Vector2(50, 0)" + +#: course/lesson-16-2d-vectors/lesson.tres:182 +msgid "" +"In the next few practices, you'll use vectors to change scale and position " +"values." +msgstr "在接下来的几个练习中,您将使用向量来更改比例和位置值。" + +#: course/lesson-16-2d-vectors/lesson.tres:190 +msgid "Increasing scale using vectors" +msgstr "使用向量增加缩放" + +#: course/lesson-16-2d-vectors/lesson.tres:191 +msgid "" +"Add a line of code to the [code]level_up()[/code] function to increase the " +"[code]scale[/code] of the robot by [code]Vector2(0.2, 0.2)[/code] every time " +"it levels up." +msgstr "" +"在 [code]level_up()[/code] 函数中添加一行代码,使机器人的 [code]scale[/code] " +"每次水平增加 [code]Vector2(0.2, 0.2)[/code]向上。" + +#: course/lesson-16-2d-vectors/lesson.tres:202 +msgid "" +"To visually show our robot has gained in strength, let's increase its size " +"every time it levels up. Nothing could go wrong!" +msgstr "" +"为了直观地显示我们的机器人已经获得了力量,让我们在每次升级时增加它的大小。什" +"么都不会出错!" + +#: course/lesson-16-2d-vectors/lesson.tres:207 +msgid "Resetting size and position using vectors" +msgstr "使用向量重置大小和位置" + +#: course/lesson-16-2d-vectors/lesson.tres:208 +msgid "" +"The robot's level has increased a lot, and so has its size!\n" +"\n" +"Let's fix this by resetting the robot's [code]scale[/code] and " +"[code]position[/code] values.\n" +"\n" +"Create a function named [code]reset_robot()[/code] that sets the " +"[code]scale[/code] and [code]position[/code] of the robot.\n" +"\n" +"The [code]x[/code] and [code]y[/code] sub-variables of the robot's " +"[code]scale[/code] need to be [code]1.0[/code].\n" +"\n" +"The robot's [code]position[/code] needs to be [code]Vector2(0, 0)[/code].\n" +"\n" +"As in the previous practice, make sure to use vectors when dealing with " +"scale and position." +msgstr "" +"机器人的等级提升了很多,体型也提升了很多!\n" +"\n" +"让我们通过重置机器人的 [code]scale[/code] 和 [code]position[/code] 值来解决这" +"个问题。\n" +"\n" +"创建一个名为 [code]reset_robot()[/code] 的函数,用于设置机器人的 " +"[code]scale[/code] 和 [code]position[/code]。\n" +"\n" +"机器人[code]scale[/code]的[code]x[/code]和[code]y[/code]子变量需要为" +"[code]1.0[/code]。\n" +"\n" +"机器人的 [code]position[/code] 需要为 [code]Vector2(0, 0)[/code]。\n" +"\n" +"与之前的做法一样,在处理比例和位置时,请确保使用矢量。" + +#: course/lesson-16-2d-vectors/lesson.tres:227 +msgid "" +"Perhaps increasing the scale every level was a bad idea! Let's restore the " +"robot to the correct size." +msgstr "也许每个级别都增加规模是个坏主意!让我们将机器人恢复到正确的大小。" + +#: course/lesson-16-2d-vectors/lesson.tres:231 +msgid "2D Vectors" +msgstr "二维向量" diff --git a/i18n/zh_Hans/lesson-17-while-loops.po b/i18n/zh_Hans/lesson-17-while-loops.po new file mode 100644 index 00000000..e4d75d94 --- /dev/null +++ b/i18n/zh_Hans/lesson-17-while-loops.po @@ -0,0 +1,301 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-17-while-loops/lesson.tres:14 +msgid "" +"You've seen that you can use functions to [i]reuse[/i] code. In this lesson, " +"you'll learn about [b]loops[/b]. Loops help you [i]repeat[/i] code.\n" +"\n" +"To illustrate how loops work, let's take a game board split into a grid.\n" +"\n" +"Our robot can move to neighboring cells by changing a [code]Vector2[/code] " +"variable named [code]cell[/code]. It represents the current cell the robot " +"is in.\n" +"\n" +"When we increase [code]cell.x[/code], the robot moves to the right.\n" +"\n" +"Note that we delay the robot's movement in the app to help you visualize how " +"it moves. The following code would normally move the robot instantly." +msgstr "" +"您已经看到可以使用函数来[i]复用[/i]代码。在本课中,您将了解 " +"[b]循环[/b]。循环帮助你[i]迭代[/i]代码。\n" +"\n" +"为了说明循环是如何工作的,让我们将一个游戏板分成一个网格。\n" +"\n" +"我们的机器人可以通过更改名为 [code]cell[/code] 的 [code]Vector2[/code] " +"变量移动到相邻单元格。\n" +"\n" +"当我们增加 [code]cell.x[/code] 时,机器人向右移动。\n" +"\n" +"请注意,我们会在应用程序中延迟机器人的移动,以帮助您直观地了解它的移动方式。" +"以下代码通常会立即移动机器人。" + +#: course/lesson-17-while-loops/lesson.tres:42 +msgid "We can move diagonally by adding a [code]Vector2[/code] directly." +msgstr "我们可以通过直接添加 [code]Vector2[/code] 来沿对角线移动。" + +#: course/lesson-17-while-loops/lesson.tres:62 +msgid "" +"The above code works for a pre-defined board with a size of [code]Vector2(3, " +"3)[/code], but the [code]move_to_end()[/code] function wouldn't work if the " +"size of the board was different. \n" +"\n" +"The robot would either stop before the end or go too far.\n" +"\n" +"To implement a general solution for all board sizes, we can repeat the " +"robot's movement until it gets to the end.\n" +"\n" +"For code that repeats, we can use [i]loops[/i]." +msgstr "" +"上面的代码适用于大小为 [code]Vector2(3, 3)[/code] 的预定义板,但如果" +"[code]move_to_end()[/code]是不同的。\n" +"\n" +"机器人要么在结束前停止,要么走得太远。\n" +"\n" +"为了实现适用于所有板尺寸的通用解决方案,我们可以重复机器人的运动,直到它到达" +"终点。\n" +"\n" +"对于重复的代码,我们可以使用 [i]loops[/i]。" + +#: course/lesson-17-while-loops/lesson.tres:76 +msgid "Using while loops to repeat code" +msgstr "使用 while 循环重复代码" + +#: course/lesson-17-while-loops/lesson.tres:78 +msgid "" +"You can use a [code]while[/code] loop to make the computer repeat a block of " +"code until you meet a specific condition or decide to break from the loop.\n" +"\n" +"Here's how we use a [code]while[/code] loop." +msgstr "" +"您可以使用 [code]while[/code] 循环让计算机重复一段代码,直到您满足特定条件或" +"决定退出循环。\n" +"\n" +"下面是我们如何使用 [code]while[/code] 循环。" + +#: course/lesson-17-while-loops/lesson.tres:100 +msgid "" +"We use the variable [code]number[/code] to keep track of how many loops the " +"[code]while[/code] loop completes.\n" +"\n" +"Each time we go through the [code]while[/code] loop, we add [code]1[/code] " +"to [code]number[/code].\n" +"\n" +"The [code]while[/code] loop keeps running for as long as the condition is " +"true. In this case, it keeps running while [code]number[/code] is less than " +"[code]4[/code].\n" +"\n" +"You can see that the following code is executed four times in the console." +msgstr "" +"我们使用变量 [code]number[/code] 来跟踪 [code]while[/code] 循环完成了多少次循" +"环。\n" +"\n" +"每次我们通过 [code]while[/code] 循环时,我们将 [code]1[/code] 添加到 " +"[code]number[/code]。\n" +"\n" +"只要条件为真,[code]while[/code] 循环就会一直运行。在这种情况下,它会在 " +"[code]number[/code] 小于 [code]4[/code] 时继续运行。\n" +"\n" +"可以看到以下代码在控制台中执行了四次。" + +#: course/lesson-17-while-loops/lesson.tres:126 +#, fuzzy +msgid "" +"Let's apply this to our [code]move_to_end()[/code] function.\n" +"\n" +"This time, we compare the number of loops to the board's width. We go " +"through the loop until we reach the width of the board.\n" +"\n" +"Note that we move the robot until its position is one less than the board's " +"width because we are counting tiles from [code]0[/code].\n" +"\n" +"A board of [code]3[/code] by [code]3[/code] cells would have cell " +"coordinates going from [code]0[/code] to [code]2[/code] on both the X and Y " +"axes." +msgstr "" +"让我们将其应用于我们的 [code]move_to_end()[/code] 函数。\n" +"\n" +"这一次,我们将循环数与板的宽度进行比较。我们遍历循环,直到达到板的宽度。\n" +"\n" +"请注意,由于机器人已经在第一个单元格上,所以我们移动的距离比板的宽度小一个。" + +#: course/lesson-17-while-loops/lesson.tres:160 +msgid "While loops can cause issues" +msgstr "While循环可能会导致问题" + +#: course/lesson-17-while-loops/lesson.tres:162 +msgid "" +"If you're not careful, your [code]while[/code] loop can run infinitely. In " +"that case, the application will freeze.\n" +"\n" +"Take a look at this code example." +msgstr "" +"如果您不小心,您的 [code]while[/code] 循环可能会无限运行。在这种情况下,应用" +"程序将冻结。\n" +"\n" +"看看这个代码示例。" + +#: course/lesson-17-while-loops/lesson.tres:182 +msgid "What would happen if the computer tried to run the code above?" +msgstr "如果计算机试图运行上面的代码会发生什么?" + +#: course/lesson-17-while-loops/lesson.tres:185 +msgid "" +"Because we don't increment [code]number[/code] within the [code]while[/code] " +"loop, it always stays at [code]0[/code].\n" +"\n" +"As a result, the number is always lower than [code]10[/code], so we never " +"break out of the loop.\n" +"\n" +"Since there's no way to exit the [code]while[/code] loop, the computer will " +"attempt to draw squares infinitely, which will freeze the program.\n" +"\n" +"When programs stop responding on your computer, it's often due to an " +"infinite loop!" +msgstr "" +"因为我们没有在 [code]while[/code] 循环中增加 [code]number[/code],所以它始终" +"保持在 [code]0[/code]。\n" +"\n" +"结果,这个数字总是小于[code]10[/code],所以我们永远不会跳出循环。\n" +"\n" +"由于无法退出 [code]while[/code] 循环,计算机将尝试无限绘制正方形,这将冻结程" +"序。\n" +"\n" +"当程序在您的计算机上停止响应时,通常是由于无限循环!" + +#: course/lesson-17-while-loops/lesson.tres:192 +#: course/lesson-17-while-loops/lesson.tres:193 +msgid "It would draw squares infinitely until the program is terminated" +msgstr "它将无限绘制正方形,直到程序终止" + +#: course/lesson-17-while-loops/lesson.tres:192 +msgid "It would draw 10 squares" +msgstr "它会画10个正方形" + +#: course/lesson-17-while-loops/lesson.tres:192 +msgid "It would draw 20 squares" +msgstr "它会画20个正方形" + +#: course/lesson-17-while-loops/lesson.tres:200 +msgid "When to use while loops" +msgstr "何时使用 while 循环" + +#: course/lesson-17-while-loops/lesson.tres:202 +msgid "" +"At first, you will not need [code]while[/code] loops often. Even the code we " +"show here has more efficient alternatives.\n" +"\n" +"Also, there's a safer kind of loop, [code]for[/code] loops, which we'll look " +"at in the next lesson.\n" +"\n" +"Yet, [code]while[/code] loops have important intermediate to advanced-level " +"uses, so you at least need to know they exist and how to use them.\n" +"\n" +"We use [code]while[/code] loops every time we need to loop an unknown number " +"of times.\n" +"\n" +"For example, games run in a loop that typically generates sixty images per " +"second until the user closes the game. This is possible thanks to " +"[code]while[/code] loops.\n" +"\n" +"There are other good uses for [code]while[/code] loops:\n" +"\n" +"- Reading and processing a file, like a text document, line by line.\n" +"- Processing a constant stream of data, like someone recording audio with a " +"microphone.\n" +"- Reading code and converting it into instructions the computer " +"understands.\n" +"- Various intermediate to advanced-level algorithms, like finding paths " +"around a map for AI." +msgstr "" +"起初,您不需要经常使用 [code]while[/code] 循环。甚至我们在这里展示的代码也有" +"更有效的替代方案。\n" +"\n" +"此外,还有一种更安全的循环,[code]for[/code] 循环,我们将在下一课中介绍。\n" +"\n" +"然而,[code]while[/code] 循环具有重要的中级到高级用途,因此您至少需要知道它们" +"的存在以及如何使用它们。\n" +"\n" +"每次我们需要循环未知次数时,我们都会使用 [code]while[/code] 循环。\n" +"\n" +"例如,游戏循环运行,通常每秒生成 60 张图像,直到用户关闭游戏。这要归功于 " +"[code]while[/code] 循环。\n" +"\n" +"[code]while[/code] 循环还有其他很好的用途:\n" +"\n" +"- 逐行读取和处理文件,如文本文档。\n" +"- 处理源源不断的数据流,例如有人用麦克风录制音频。\n" +"- 阅读代码并将其转换为计算机可以理解的指令。\n" +"- 各种中级到高级算法,例如为 AI 寻找地图周围的路径。" + +#: course/lesson-17-while-loops/lesson.tres:227 +msgid "" +"Let's practice some [code]while[/code] loops, as they're useful to know. " +"It's also an excellent opportunity to practice 2D vectors.\n" +"\n" +"Then, we'll move on to the safer [code]for[/code] loops in the following " +"lesson." +msgstr "" +"让我们练习一些 [code]while[/code] 循环,因为了解它们很有用。这也是练习 2D 矢" +"量的绝佳机会。\n" +"\n" +"然后,我们将在下一课中继续学习更安全的 [code]for[/code] 循环。" + +#: course/lesson-17-while-loops/lesson.tres:237 +msgid "Moving to the end of a board" +msgstr "移动到棋盘的末尾" + +#: course/lesson-17-while-loops/lesson.tres:238 +msgid "" +"Our robot has decided to stand at the top of the board.\n" +"\n" +"Complete the [code]move_to_bottom()[/code] function so the robot moves to " +"the bottom of the board.\n" +"\n" +"The board size is determined by the [code]Vector2[/code] [code]board_size[/" +"code].\n" +"\n" +"The robot's current cell is [code]Vector2(2, 0)[/code]. \n" +"\n" +"Make sure to use a [code]while[/code] loop so the function works for any " +"board size." +msgstr "" +"我们的机器人决定站在棋盘的顶端。\n" +"\n" +"完成 [code]move_to_bottom()[/code] 函数,使机器人移动到板子底部。\n" +"\n" +"板子大小由 [code]Vector2[/code] [code]board_size[/code] 决定。\n" +"\n" +"机器人的当前单元格是 [code]Vector2(2, 0)[/code]。\n" +"\n" +"确保使用 [code]while[/code] 循环,以便该函数适用于任何板尺寸。" + +#: course/lesson-17-while-loops/lesson.tres:256 +msgid "" +"Use a while loop to have our robot move from the top of the board to the " +"bottom." +msgstr "使用 while 循环让我们的机器人从板的顶部移动到底部。" + +#: course/lesson-17-while-loops/lesson.tres:260 +msgid "Introduction to While Loops" +msgstr "While循环简介" diff --git a/i18n/zh_Hans/lesson-18-for-loops.po b/i18n/zh_Hans/lesson-18-for-loops.po new file mode 100644 index 00000000..d064f8c4 --- /dev/null +++ b/i18n/zh_Hans/lesson-18-for-loops.po @@ -0,0 +1,294 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-18-for-loops/lesson.tres:14 +msgid "" +"In the last lesson, we looked at [code]while[/code] loops. We found they " +"were useful if we don't know how many times we should repeat code. \n" +"\n" +"However, they could result in infinite loops if we're not careful.\n" +"\n" +"The loop below never ends because we never increment [code]number[/code]." +msgstr "" +"在上一课中,我们学习了 [code]while[/code] 循环。 如果我们不知道应该重复多少次" +"代码,我们发现它们很有用。\n" +"\n" +"但是,如果我们不小心,它们可能会导致无限循环。\n" +"\n" +"下面的循环永远不会结束,因为我们永远不会增加 [code]number[/code]。" + +#: course/lesson-18-for-loops/lesson.tres:38 +msgid "" +"There's a safer and often easier kind of loop: the [code]for[/code] loop.\n" +"\n" +"We'll look at it in this lesson.\n" +"\n" +"Unlike [code]while[/code] loops, [code]for[/code] loops don't run " +"infinitely, so it's much less likely that you'll get bugs in your game. " +"[b]We recommend favoring for loops over while loops because of this[/b].\n" +"\n" +"Let's change the code above to use a [code]for[/code] loop instead.\n" +"\n" +"The loop below will change the [code]cell[/code] three times." +msgstr "" +"有一种更安全且通常更简单的循环:[code]for[/code] 循环。\n" +"\n" +"我们将在本课中研究它。\n" +"\n" +"与 [code]while[/code] 循环不同,[code]for[/code] 循环不会无限运行,因此您在游" +"戏中出现错误的可能性要小得多。 [b]因为这个[/b],我们建议优先使用 for 循环而不" +"是 while 循环。\n" +"\n" +"让我们将上面的代码改为使用 [code]for[/code] 循环。\n" +"\n" +"下面的循环将更改 [code]cell[/code] 三次。" + +#: course/lesson-18-for-loops/lesson.tres:66 +msgid "Let's explain what's going on here." +msgstr "让我们解释一下这里发生了什么。" + +#: course/lesson-18-for-loops/lesson.tres:74 +msgid "The range() function" +msgstr "range()函数" + +#: course/lesson-18-for-loops/lesson.tres:76 +#, fuzzy +msgid "" +"Godot has the helper function [code]range()[/code]. Calling [code]range(n)[/" +"code] creates a list of numbers from [code]0[/code] to [code]n - 1[/code]. \n" +"\n" +"So calling [code]range(3)[/code] outputs the list of numbers [code][0, 1, 2]" +"[/code], and [code]range(5)[/code] outputs [code][0, 1, 2, 3, 4][/code]." +msgstr "" +"Godot 有辅助函数 [code]range()[/code]。 调用 [code]range(n)[/code] 创建一个" +"从 [code]0[/code] 到 [code]n - 1[/code] 的数字列表。\n" +"\n" +"所以调用[code]range(3)[/code]输出数字列表[code][0,1,2][/code],[code]range(5)" +"[/code]输出[code][ 0、1、2、3、4][/code]。" + +#: course/lesson-18-for-loops/lesson.tres:86 +msgid "What list of numbers would range(6) create?" +msgstr "range(6) 会创建什么数字列表?" + +#: course/lesson-18-for-loops/lesson.tres:87 +msgid "What would [code]print(range(6))[/code] print to the console?" +msgstr "[code]print(range(6))[/code] 会在控制台打印什么?" + +#: course/lesson-18-for-loops/lesson.tres:89 +msgid "" +"The function [code]range(n)[/code] creates a list of numbers from [code]0[/" +"code] to [code]n - 1[/code]. The output list will start with [code]0[/code] " +"and end with [code]5[/code].\n" +"\n" +"So calling [code]range(6)[/code] will output a list of six numbers which are " +"[code][0, 1, 2, 3, 4, 5][/code].\n" +msgstr "" +"函数 [code]range(n)[/code] 创建一个从 [code]0[/code] 到 [code]n - 1[/code] 的" +"数字列表。 输出列表将以 [code]0[/code] 开始,以 [code]5[/code] 结束。\n" +"\n" +"所以调用 [code]range(6)[/code] 将输出一个包含六个数字的列表,它们是 [code]" +"[0, 1, 2, 3, 4, 5][/code]。\n" + +#: course/lesson-18-for-loops/lesson.tres:93 +#: course/lesson-18-for-loops/lesson.tres:94 +msgid "[0, 1, 2, 3, 4, 5]" +msgstr "[0, 1, 2, 3, 4, 5]" + +#: course/lesson-18-for-loops/lesson.tres:93 +msgid "[1, 2, 3, 4, 5, 6]" +msgstr "[1, 2, 3, 4, 5, 6]" + +#: course/lesson-18-for-loops/lesson.tres:93 +msgid "[0, 1, 2, 3, 4, 5, 6]" +msgstr "[0, 1, 2, 3, 4, 5, 6]" + +#: course/lesson-18-for-loops/lesson.tres:101 +msgid "How for loops work" +msgstr "for 循环如何工作" + +#: course/lesson-18-for-loops/lesson.tres:103 +msgid "" +"In a [code]for[/code] loop, the computer takes each value inside a list, " +"stores it in a temporary variable, and executes the code in the loop once " +"per value." +msgstr "" +"在 [code]for[/code] 循环中,计算机获取列表中的每个值,将其存储在临时变量中," +"并对每个值执行一次循环中的代码。" + +#: course/lesson-18-for-loops/lesson.tres:123 +#, fuzzy +msgid "" +"In the above example, for each item in the list [code][0, 1, 2][/code], " +"Godot sets [code]number[/code] to the item, then executes the code in the " +"[code]for[/code] loop.\n" +"\n" +"We'll explain arrays more throughly in the next lesson, but notice that " +"[code]number[/code] is just a temporary variable. You create it when " +"defining the loop, and the loop takes care of changing its value. Also, you " +"can name this variable anything you want.\n" +"\n" +"This code behaves the same as the previous example:" +msgstr "" +"在上面的例子中,对于列表 [code][0, 1, 2][/code] 中的每一项,Godot 将 " +"[code]number[/code] 设置为该项,然后执行 [code]for 中的代码 [/code] 循环。\n" +"\n" +"在这个例子中,我们在 Godot 在循环中移动时打印 [code]number[/code] 的值。\n" +"\n" +"我们可以将任何我们喜欢的代码放入循环的代码块中,包括其他函数调用,如 " +"[code]draw_rectangle()[/code]。" + +#: course/lesson-18-for-loops/lesson.tres:147 +msgid "" +"In both examples, we print the value of the temporary variable we created: " +"[code]number[/code] in the first example and [code]element[/code] in the " +"second.\n" +"\n" +"As Godot moves through the loop, it assigns each value of the array to that " +"variable. First, it sets the variable to [code]0[/code], then to [code]1[/" +"code], and finally, to [code]2[/code].\n" +"\n" +"We can break down the instructions the loop runs. You can see how a loop is " +"a shortcut to code that otherwise gets very long." +msgstr "" +"在这两个示例中,我们都打印了创建的临时变量的值: 第一个示例中为 " +"[code]number[/code],第二个示例中为 [code]element[/code]。\n" +"\n" +"Godot 在循环中移动时,会将数组的每个值赋值给该变量。首先,它将变量设置为 " +"[code]0[/code],然后设置为 [code]1[/code],最后设置为 [code]2[/code]。\n" +"\n" +"我们可以对循环运行的指令进行细分。你可以看到,循环是代码的捷径,否则代码会变" +"得很长。" + +#: course/lesson-18-for-loops/lesson.tres:171 +msgid "" +"We can put whatever code we like in the loop's code block, including other " +"function calls like [code]draw_rectangle()[/code]." +msgstr "我们可以在循环代码块中添加任何代码,包括 [code]draw_rectangle()[/code] " +"等其他函数调用。" + +#: course/lesson-18-for-loops/lesson.tres:179 +msgid "Using a for loop instead of a while loop" +msgstr "使用 for 循环而不是 while 循环" + +#: course/lesson-18-for-loops/lesson.tres:181 +#, fuzzy +msgid "" +"Here's our old [code]move_to_end()[/code] function which used a [code]while[/" +"code] loop." +msgstr "" +"这是我们在 [code]while[/code] 循环中使用的旧 [code]move_to_end()[/code] 函" +"数。" + +#: course/lesson-18-for-loops/lesson.tres:201 +msgid "" +"If we use a [code]for[/code] loop instead, the code becomes a little simpler." +msgstr "如果我们改用 [code]for[/code] 循环,代码会变得更简单一些。" + +#: course/lesson-18-for-loops/lesson.tres:221 +msgid "" +"Rather than constantly checking if the robot reached the end of the board, " +"with the [code]for[/code] loop, we take the board's width beforehand, then " +"move the robot a set amount of times.\n" +"\n" +"The function still works the same. You can execute it below." +msgstr "" +"我们不是不断检查机器人是否到达棋盘末端,而是使用 [code]for[/code] 循环,预先" +"获取棋盘的宽度,然后移动机器人一定次数。\n" +"\n" +"该功能仍然有效。 您可以在下面执行它。" + +#: course/lesson-18-for-loops/lesson.tres:243 +msgid "" +"In the practices, we'll use [code]for[/code] loops in different ways to get " +"you used to using them." +msgstr "" +"在实践中,我们将以不同的方式使用 [code]for[/code] 循环来让您习惯使用它们。" + +#: course/lesson-18-for-loops/lesson.tres:251 +msgid "Using a for loop to move to the end of the board" +msgstr "使用 for 循环移动到板的末尾" + +#: course/lesson-18-for-loops/lesson.tres:252 +msgid "" +"Once again, the robot has decided to stand at the top of the board.\n" +"\n" +"This time, use a [code]for[/code] loop in the [code]move_to_bottom()[/code] " +"function to have it move to the bottom of the board.\n" +"\n" +"The board size is determined by the [code]Vector2[/code] variable " +"[code]board_size[/code].\n" +"\n" +"The robot's starting cell is [code]Vector2(2, 0)[/code]." +msgstr "" +"机器人再次决定站在棋盘的顶部。\n" +"\n" +"这一次,在 [code]move_to_bottom()[/code] 函数中使用 [code]for[/code] 循环让它" +"移动到板的底部。\n" +"\n" +"棋盘大小由 [code]Vector2[/code] 变量 [code]board_size[/code] 决定。\n" +"\n" +"机器人的起始单元是 [code]Vector2(2, 0)[/code]。" + +#: course/lesson-18-for-loops/lesson.tres:268 +msgid "" +"Use a for loop to have our robot move from the top of the board to the " +"bottom." +msgstr "使用 for 循环让我们的机器人从板的顶部移动到底部。" + +#: course/lesson-18-for-loops/lesson.tres:273 +msgid "Improving code with a for loop" +msgstr "使用 for 循环改进代码" + +#: course/lesson-18-for-loops/lesson.tres:274 +msgid "" +"Use a [code]for[/code] loop to remove the duplicate code in the [code]run()[/" +"code] function.\n" +"\n" +"In this practice, we revisit the turtle and drawing rectangles.\n" +"\n" +"With our new knowledge of [code]for[/code] loops, we can condense this code " +"to take up less space and make it easier to modify.\n" +"\n" +"The turtle should draw three squares in a horizontal line. The squares " +"should be 100 pixels apart." +msgstr "" +"使用 [code]for[/code] 循环删除 [code]run()[/code] 函数中的重复代码。\n" +"\n" +"在这个实践中,我们重新审视了海龟和绘制矩形。\n" +"\n" +"借助我们对 [code]for[/code] 循环的新知识,我们可以压缩此代码以占用更少的空间" +"并使其更易于修改。\n" +"\n" +"乌龟应该在一条水平线上画三个正方形。 正方形应相距 100 像素。" + +#: course/lesson-18-for-loops/lesson.tres:297 +msgid "" +"In the past we had to copy and paste code to draw multiple rectangles. Let's " +"revisit previous code and improve it with a for loop." +msgstr "" +"过去我们必须复制和粘贴代码来绘制多个矩形。 让我们重新审视以前的代码并使用 " +"for 循环对其进行改进。" + +#: course/lesson-18-for-loops/lesson.tres:301 +msgid "Introduction to For Loops" +msgstr "For循环简介" diff --git a/i18n/zh_Hans/lesson-19-creating-arrays.po b/i18n/zh_Hans/lesson-19-creating-arrays.po new file mode 100644 index 00000000..afdef99e --- /dev/null +++ b/i18n/zh_Hans/lesson-19-creating-arrays.po @@ -0,0 +1,281 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-19-creating-arrays/lesson.tres:13 +msgid "" +"The [code]range()[/code] function we saw in the previous lesson outputs a " +"list of numbers. For example, calling [code]range(3)[/code] produces the " +"list of numbers [code][0, 1, 2][/code]." +msgstr "" +"我们在上一课中看到的 [code]range()[/code] 函数输出一个数字列表。 例如,调用 " +"[code]range(3)[/code] 会生成数字列表 [code][0, 1, 2][/code]。" + +#: course/lesson-19-creating-arrays/lesson.tres:33 +#, fuzzy +msgid "" +"A list of values, numbers or otherwise, has a precise name in code: we call " +"it an [i]array[/i]. So we can say calling the [code]range()[/code] function " +"produces an [i]array[/i] of numbers.\n" +"\n" +"We could directly write and use that array inside our [code]for[/code] loop " +"instead of the [code]range()[/code] function. You can run the next function " +"step-by-step to see how it works." +msgstr "" +"数值或其他值的列表在代码中有一个准确的名称:我们称之为 " +"[i]数组(array)[/i]。因此,我们可以说调用 [code]range()[/code] 函数产生了一个 " +"数值型[i]数组[/i] 。\n" +"\n" +"我们可以直接在 [code]for[/code] 循环中编写并使用该数组,而不是 " +"[code]range()[/code] 函数。您可以逐步运行下一个函数,看看它是如何工作的。" + +#: course/lesson-19-creating-arrays/lesson.tres:55 +msgid "" +"As you can see, the code still works the same. Notice that when we create a " +"[code]for[/code] loop, we also create a local variable to which the loop " +"assigns one value per iteration. Above, we named it [code]number[/code] " +"because the array we loop over contains three numbers (0, 1, and 2).\n" +"\n" +"But we could name it anything we'd like!" +msgstr "" +"正如您所看到的,代码的工作原理仍然相同。请注意,当我们创建一个 " +"[code]for[/code] " +"循环时,我们还创建了一个局部变量,该循环每次迭代都会为其赋值。上面," +"我们将其命名为 [code]number[/code],因为我们循环的数组包含三个数字(0、1 和 " +"2)。\n" +"\n" +"不过,我们也可以给它取任何名字!" + +#: course/lesson-19-creating-arrays/lesson.tres:77 +msgid "" +"If we \"unwrap\" the [code]for[/code] loop above, we'd get the following " +"code with the exact same behaviour:" +msgstr "如果我们 \"展开 \"上面的 [code]for[/code] " +"循环,就会得到以下代码,其行为完全相同:" + +#: course/lesson-19-creating-arrays/lesson.tres:95 +msgid "The syntax of arrays" +msgstr "数组的语法" + +#: course/lesson-19-creating-arrays/lesson.tres:97 +msgid "We write arrays this way in GDScript." +msgstr "我们在 GDScript 中以这种方式编写数组。" + +#: course/lesson-19-creating-arrays/lesson.tres:117 +msgid "" +"You start with an opening square bracket. Then, you write comma-separated " +"values that compose the array. Finally, you need a closing square bracket to " +"complete the array.\n" +"\n" +"Here are a couple of valid arrays. Notice how you can mix values, and how " +"they don't need to follow one another." +msgstr "" +"你从一个方括号开始。 然后,编写组成数组的逗号分隔值。 最后,您需要一个右方括" +"号来完成数组。\n" +"\n" +"这是几个有效的数组。 注意你可以如何混合价值观,以及它们如何不需要相互跟随。" + +#: course/lesson-19-creating-arrays/lesson.tres:139 +msgid "" +"Because arrays themselves are a value type, just like numbers or " +"[code]Vector2[/code], we can assign arrays to variables to reaccess them " +"later.\n" +"\n" +"That'll come in handy in the next lesson, where we'll use those variables in " +"loops." +msgstr "" +"因为数组本身是一种值类型,就像数字或 [code]Vector2[/code] 一样,我们可以将数" +"组分配给变量以便以后重新访问它们。\n" +"\n" +"这将在下一课中派上用场,我们将在循环中使用这些变量。" + +#: course/lesson-19-creating-arrays/lesson.tres:161 +msgid "But first, let's see [i]when[/i] you'd use an array." +msgstr "但首先,让我们看看 [i]when[/i] 使用数组。" + +#: course/lesson-19-creating-arrays/lesson.tres:169 +msgid "When you use arrays" +msgstr "当你使用数组时" + +#: course/lesson-19-creating-arrays/lesson.tres:171 +msgid "" +"In computer programming, we use arrays [i]all the time[/i].\n" +"\n" +"Precisely, you'll use them whenever you need to store a [i]list of things[/" +"i].\n" +"\n" +"You always need lists of things in games:\n" +"\n" +"- The player's party in an RPG.\n" +"- The items in the player's inventory.\n" +"- The high scores in an arcade game.\n" +"- The objects in the game world.\n" +"\n" +"All of those and many more rely on arrays." +msgstr "" +"在计算机编程中,我们一直使用数组[i][/i]。\n" +"\n" +"准确地说,当您需要存储 [i] 事物列表[/i] 时,您将使用它们。\n" +"\n" +"您总是需要游戏中的事物列表:\n" +"\n" +"- 角色扮演游戏中的玩家派对。\n" +"- 玩家库存中的物品。\n" +"- 街机游戏中的高分。\n" +"- 游戏世界中的对象。\n" +"\n" +"所有这些以及更多都依赖于数组。" + +#: course/lesson-19-creating-arrays/lesson.tres:190 +msgid "Using arrays to follow a path" +msgstr "使用数组跟随路径" + +#: course/lesson-19-creating-arrays/lesson.tres:192 +#, fuzzy +msgid "" +"Let's look at a widespread use of arrays in games: finding and following a " +"path.\n" +"\n" +"In games, you need allies or monsters to find their way to their target, " +"whether it's the player or some point of interest.\n" +"\n" +"To achieve that, we use [i]pathfinding algorithms[/i]. As the name suggests, " +"those algorithms find the path between two points and allow AIs to traverse " +"the game." +msgstr "" +"让我们看一下数组在游戏中的广泛使用:查找和跟踪路径。\n" +"\n" +"在游戏中,你需要盟友或怪物找到通往目标的路,无论是玩家还是某个兴趣点。\n" +"\n" +"为此,我们使用[i]寻路算法[/i]。 顾名思义,这些算法会找到两点之间的路径并允许 " +"AI 遍历游戏。" + +#: course/lesson-19-creating-arrays/lesson.tres:216 +msgid "" +"Many of those algorithms use arrays of [code]Vector2[/code] coordinates to " +"represent the path.\n" +"\n" +"Take this turtle pet. It wants to follow the robot, but there are rocks in " +"the way.\n" +"\n" +"How can we tell it where to walk to reach the robot? With an array!" +msgstr "" +"其中许多算法使用 [code]Vector2[/code] 坐标数组来表示路径。\n" +"\n" +"带上这只乌龟宠物。 它想跟随机器人,但路上有石头。\n" +"\n" +"我们如何告诉它走到哪里才能到达机器人? 带数组!" + +#: course/lesson-19-creating-arrays/lesson.tres:250 +msgid "" +"Every value in the array is a [code]Vector2[/code] and represents a cell the " +"turtle needs to walk through.\n" +"\n" +"Together, all the values in the array represent a path we can draw." +msgstr "" +"数组中的每个值都是一个 [code]Vector2[/code],代表海龟需要经过的一个单元格。\n" +"\n" +"数组中的所有值一起代表我们可以绘制的路径。" + +#: course/lesson-19-creating-arrays/lesson.tres:272 +msgid "" +"In upcoming lessons, you will see how we can use arrays to store player " +"inventories or design attack combos.\n" +"\n" +"For now, let's practice creating arrays." +msgstr "" +"在接下来的课程中,您将看到我们如何使用数组来存储玩家库存或设计攻击组合。\n" +"\n" +"现在,让我们练习创建数组。" + +#: course/lesson-19-creating-arrays/lesson.tres:282 +msgid "Walking to the robot" +msgstr "走向机器人" + +#: course/lesson-19-creating-arrays/lesson.tres:283 +msgid "" +"The turtle wants to meet the robot! But it cannot find it on its own.\n" +"\n" +"Fill the [code]turtle_path[/code] array with [code]Vector2[/code] " +"coordinates indicating where the turtle should move to avoid the obstacles " +"and arrive safely to the robot.\n" +"\n" +"The turtle can move up, down, left, or right. It cannot move diagonally.\n" +"\n" +"We recommend copying and pasting to fill the array with comma-separated " +"[code]Vector2[/code] values quickly." +msgstr "" +"乌龟想见机器人! 但它无法自己找到它。\n" +"\n" +"用 [code]Vector2[/code] 坐标填充 [code]turtle_path[/code] 数组,指示海龟应该" +"移动的位置以避开障碍物并安全到达机器人。\n" +"\n" +"乌龟可以向上、向下、向左或向右移动。 它不能沿对角线移动。\n" +"\n" +"我们建议快速复制和粘贴以用逗号分隔的 [code]Vector2[/code] 值填充数组。" + +#: course/lesson-19-creating-arrays/lesson.tres:298 +msgid "" +"Help the turtle find its way to the robot! Give it a path to follow to reach " +"the robot." +msgstr "帮助乌龟找到通往机器人的路! 给它一条通往机器人的路径。" + +#: course/lesson-19-creating-arrays/lesson.tres:303 +msgid "Selecting units" +msgstr "选择单位" + +#: course/lesson-19-creating-arrays/lesson.tres:304 +msgid "" +"In this tactical game, the player and computer can select multiple units at " +"once. You need to call the [code]select_units()[/code] function and pass it " +"an array of [code]Vector2[/code] coordinates to know which units to select.\n" +"\n" +"Each [code]Vector2[/code] in the array represents a cell with a unit.\n" +"\n" +"You can pass arrays in function calls as arguments. As an array is a value " +"type the computer recognizes, you can pass the whole array as a single " +"function argument.\n" +"\n" +"Select all units on the board by passing the correct array to the " +"[code]select_units()[/code] function." +msgstr "" +"在这个战术游戏中,玩家和电脑可以同时选择多个单位。 您需要调用 " +"[code]select_units()[/code] 函数并将 [code]Vector2[/code] 坐标数组传递给它," +"以了解要选择的单位。\n" +"\n" +"数组中的每个 [code]Vector2[/code] 代表一个单元格。\n" +"\n" +"您可以在函数调用中将数组作为参数传递。 由于数组是计算机识别的值类型,您可以将" +"整个数组作为单个函数参数传递。\n" +"\n" +"通过将正确的数组传递给 [code]select_units()[/code] 函数来选择板上的所有单元。" + +#: course/lesson-19-creating-arrays/lesson.tres:320 +msgid "Write an array to select all units on the board in this strategy game." +msgstr "写一个数组来选择这个策略游戏中棋盘上的所有单位。" + +#: course/lesson-19-creating-arrays/lesson.tres:324 +msgid "Creating arrays" +msgstr "创建数组" + +#~ msgid "As you can see, the code still works the same." +#~ msgstr "如您所见,代码仍然可以正常工作。" diff --git a/i18n/zh_Hans/lesson-2-your-first-error.po b/i18n/zh_Hans/lesson-2-your-first-error.po new file mode 100644 index 00000000..090d4734 --- /dev/null +++ b/i18n/zh_Hans/lesson-2-your-first-error.po @@ -0,0 +1,174 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-06-13 06:50+0000\n" +"Last-Translator: suplife <2634557184@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.18-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-2-your-first-error/lesson.tres:14 +msgid "" +"When you program, you are bound to run into errors. Tons of them.\n" +"\n" +"But you shouldn't worry! On the computer, [b]errors are a good thing[/b].\n" +"\n" +"You will encounter errors, and [i]that's okay[/i]: every programmer does. " +"Especially professionals.\n" +"\n" +"At school, maybe you learned that mistakes are a bad thing. When you code " +"something, it's not the case: [b]errors help you write correct programs[/b] " +"because they show you what is wrong in your programs." +msgstr "" +"当你编写程序时,你肯定会遇到报错,而且超级多。\n" +"\n" +"不过你不必担心!对于计算机而言,[b]报错是好事[/b]。\n" +"\n" +"你会遇到报错,但[i]没有什么大不了的[/i]:所有程序员都会遇到。专业人士遇到得尤" +"其多。\n" +"\n" +"在学校里,你可能认为犯错是坏事。当编写代码时,情况并非如此:[b]这些错误可以帮" +"助你编写正确的程序[/b],因为它们会告诉你在程序的哪里产生了错误。" + +#: course/lesson-2-your-first-error/lesson.tres:30 +msgid "" +"A code error looks like this. It's a message that tells you some bit of your " +"code doesn't work." +msgstr "" +"代码错误看上去类似这样。这就是一条消息,告诉你你的代码里有些内容无法正常工" +"作。" + +#: course/lesson-2-your-first-error/lesson.tres:48 +msgid "Making errors friendlier" +msgstr "让报错更友好" + +#: course/lesson-2-your-first-error/lesson.tres:50 +msgid "" +"Error messages can look a bit cryptic. This is because they're designed by " +"programmers, for trained programmers.\n" +"\n" +"We added an error translator in this app that will help you get started.\n" +"\n" +"It shows you why an error happens and what the message means. It also gives " +"you some tips on how to fix it." +msgstr "" +"错误消息可能看上去很难理解。这是因为它们是程序员设计的,针对的是训练有素的程" +"序员。\n" +"\n" +"我们在这个应用中添加了错误翻译器,来帮助你入门。\n" +"\n" +"它会显示为什么会报这个错误,以及错误消息是含义是什么。还会给你一些修复建议。" + +#: course/lesson-2-your-first-error/lesson.tres:74 +msgid "" +"Error messages are designed on purpose by fellow programmers who came before " +"you. They anticipated you might have specific issues and wanted to help you " +"fix them.\n" +"\n" +"You shouldn't think of errors as failures. They are like mentors helping you " +"from the past. Importantly, errors won't break your computer. At least not " +"with GDScript because it's a pretty safe language.\n" +"\n" +"Ultimately, you want to fix all the errors in your program. Understanding " +"what is causing the errors, with the help of error messages, is key to " +"fixing them." +msgstr "" +"错误信息是在你之前的程序员有意设计的。他们预计你会遇到特定的问题,并希望帮助" +"你解决这些问题。\n" +"\n" +"你不应该把错误理解为自己的失败。它们是来自过去的导师,是来帮助你的。重要的是" +",错误并不会破坏你的电脑。至少用 GDScript " +"的时候不会,因为这是一门相当安全的语言。\n" +"\n" +"最终,你需要修复程序中的所有错误。在错误信息的帮助下,了解导致错误的原因,这" +"是修复错误的关键。" + +#: course/lesson-2-your-first-error/lesson.tres:86 +msgid "Are error messages a good or a bad thing in code?" +msgstr "代码中错误信息是好事还是坏事?" + +#: course/lesson-2-your-first-error/lesson.tres:89 +msgid "" +"Yes, error messages are here to help you!\n" +"\n" +"Pay attention to them, and do your best to read and understand them. With " +"experience, you'll learn to make your code work more reliably thanks to " +"error messages." +msgstr "" +"是的,报错是来帮你的!\n" +"\n" +"请集中注意,尽最大努力去阅读和理解它们。随着经验的积累,你将逐渐学会利用错误" +"信息来让你的代码更可靠地工作。" + +#: course/lesson-2-your-first-error/lesson.tres:92 +msgid "They're bad: error messages are always bad." +msgstr "它们很糟糕:错误消息总是不好的。" + +#: course/lesson-2-your-first-error/lesson.tres:92 +#: course/lesson-2-your-first-error/lesson.tres:93 +msgid "They're good: they're here to help." +msgstr "好事:它们能帮到你。" + +#: course/lesson-2-your-first-error/lesson.tres:102 +msgid "" +"Okay, let's see an error in action. Once again, click the [i]Practice[/i] " +"button below to face your first real error." +msgstr "" +"好了,让我们来看看实际操作中的报错。还是那句话,请点击下方的[i]练习[/i]按钮," +"迎接你的第一个实际的错误。" + +#: course/lesson-2-your-first-error/lesson.tres:110 +msgid "Fix Your First Error" +msgstr "修正你的第一个错误" + +#: course/lesson-2-your-first-error/lesson.tres:111 +msgid "" +"This code is incorrect and will cause an error when you try to run it.\n" +"\n" +"The code defines an empty function named [code]this_code_is_wrong[/code].\n" +"\n" +"To work, the function should use the [code]return[/code] keyword. But this " +"keyword is currently inside a comment, which the computer ignores.\n" +"\n" +"Test the current code by pressing the [i]Run[/i] button.\n" +"\n" +"Then, remove the comment sign (#) to make the code valid.\n" +"\n" +"Be careful not to remove the spacing before [code]return[/code]! Otherwise, " +"that'll cause another error. You may try that too, if you feel like it." +msgstr "" +"这段代码并不正确,你尝试运行的话就会引起报错。\n" +"\n" +"代码中定义了一个空的函数,叫作 [code]this_code_is_wrong[/code]。\n" +"\n" +"要让它正常工作,就应该使用 [code]return[/code] 关键字。不过这个关键字目前位于" +"注释之中,会被计算机忽略。\n" +"\n" +"请点击[i]运行[/i]按钮测试目前的代码。\n" +"\n" +"然后,请移除注释标记(#),让代码有效。\n" +"\n" +"请小心,不要把 [code]return[/code] 之前的空白也一并移除!否则就会引起另一种报" +"错。如果你喜欢的话,也可以试试。" + +#: course/lesson-2-your-first-error/lesson.tres:131 +msgid "There's an error in this code. We need you to fix it!" +msgstr "这段代码中有一个错误。我们需要你来修正!" + +#: course/lesson-2-your-first-error/lesson.tres:135 +msgid "Your First Error" +msgstr "你的第一个错误" diff --git a/i18n/zh_Hans/lesson-20-looping-over-arrays.po b/i18n/zh_Hans/lesson-20-looping-over-arrays.po new file mode 100644 index 00000000..a23e1c2d --- /dev/null +++ b/i18n/zh_Hans/lesson-20-looping-over-arrays.po @@ -0,0 +1,288 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"PO-Revision-Date: 2022-05-07 16:52+0000\n" +"Last-Translator: Haoyu Qiu \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-20-looping-over-arrays/lesson.tres:14 +msgid "" +"We used the [code]range()[/code] function in combination with " +"[code]for[/code] loops." +msgstr "我们将 [code]range()[/code] 函数与 [code]for[/code] 循环结合使用。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:34 +msgid "" +"The [code]range()[/code] function produced an array that the " +"[code]for[/code] keyword could loop over.\n" +"\n" +"We can give [code]for[/code] loops [i]any[/i] array, and they will loop " +"over them just the same.\n" +"\n" +"Instead of using the [code]range()[/code] function, we could manually " +"write the numbers and get the same result." +msgstr "" +"[code]range()[/code] 函数生成了一个数组,[code]for[/code] " +"关键字可以循环遍历该数组。\n" +"\n" +"我们可以给 [code]for[/code] 循环 [i]any[/i] " +"数组,它们会以同样的方式循环它们。\n" +"\n" +"我们可以手动编写数字并获得相同的结果,而不是使用 [code]range()[/code] 函数。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:58 +msgid "" +"For each element inside the array, the [code]for[/code] loop extracts it," +" stores it in the temporary variable named [code]number[/code], and " +"executes the loop's code once.\n" +"\n" +"Inside the loop, you can access the [code]number[/code] variable, which " +"changes on each [i]iteration[/i].\n" +"\n" +"The code works regardless of the array or where you store it. Often, you " +"will store arrays in variables for easy access." +msgstr "" +"对于数组中的每个元素,[code]for[/code] 循环将其提取出来,将其存储在名为 " +"[code]number[/code] 的临时变量中,并执行一次循环的代码。\n" +"\n" +"在循环内部,您可以访问 [code]number[/code] 变量,该变量在每次 [i]迭代[/i] " +"时都会发生变化。\n" +"\n" +"无论数组或存储位置如何,该代码都有效。 " +"通常,您会将数组存储在变量中以便于访问。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:80 +msgid "What will this code print?" +msgstr "这段代码会打印什么?" + +#: course/lesson-20-looping-over-arrays/lesson.tres:81 +msgid "" +"[code]var numbers = [0, 1, 2]\n" +"for number in numbers:\n" +" print(number)\n" +"[/code]" +msgstr "" +"[code]var numbers = [0, 1, 2]\n" +"for number in numbers:\n" +" print(number)\n" +"[/code]" + +#: course/lesson-20-looping-over-arrays/lesson.tres:86 +msgid "" +"Compared to previous examples, we store the array in the " +"[code]numbers[/code] variable. Using the [code]numbers[/code] variable in" +" our [code]for[/code] loop allows the computer to access the array of " +"numbers like before.\n" +"\n" +"We have three numbers in the array: [code]0[/code], [code]1[/code], and " +"[code]2[/code].\n" +"\n" +"The loop extracts each of them sequentially and assigns it to the " +"[code]number[/code] temporary variable. As the loop processes each " +"number, the output will print [code]0[/code], then [code]1[/code], then " +"[code]2[/code], each on a separate line." +msgstr "" +"与前面的示例相比,我们将数组存储在 [code]numbers[/code] 变量中。 在我们的 " +"[code]for[/code] 循环中使用 [code]numbers[/code] " +"变量允许计算机像以前一样访问数字数组。\n" +"\n" +"我们在数组中有三个数字:[code]0[/code]、[code]1[/code] 和 [code]2[/code]。\n" +"\n" +"循环依次提取它们中的每一个并将其分配给 [code]number[/code] 临时变量。 " +"当循环处理每个数字时,输出将打印 [code]0[/code],然后是 [code]1[/code]," +"然后是 [code]2[/code],每个都在单独的行上。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:91 +#: course/lesson-20-looping-over-arrays/lesson.tres:92 +msgid "0, 1, and 2" +msgstr "0, 1, 和 2" + +#: course/lesson-20-looping-over-arrays/lesson.tres:91 +msgid "1, 2, and 3" +msgstr "1, 2, 和 3" + +#: course/lesson-20-looping-over-arrays/lesson.tres:91 +msgid "0, 0, and 0" +msgstr "0, 0, 和 0" + +#: course/lesson-20-looping-over-arrays/lesson.tres:99 +msgid "Making the turtle walk, with a loop" +msgstr "用循环让乌龟走路" + +#: course/lesson-20-looping-over-arrays/lesson.tres:101 +msgid "" +"In the previous lesson, you made a turtle walk along a path by writing " +"[code]Vector2[/code] coordinates in an array." +msgstr "在上一课中,您通过在数组中写入 [code]Vector2[/code] 坐标让海龟沿着路径行走。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:121 +msgid "" +"It's a [code]for[/code] loop that makes the turtle walk along the path.\n" +"\n" +"The loop works like this: for each coordinate in the array, it moves the " +"turtle once to that cell." +msgstr "" +"这是一个 [code]for[/code] 循环,使海龟沿着路径行走。\n" +"\n" +"循环的工作方式如下:对于数组中的每个坐标,它将海龟移动一次到该单元格。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:143 +msgid "It's the same principle with unit selection." +msgstr "与单位选择的原则相同。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:163 +msgid "" +"For each coordinate in an array named [code]selected_units[/code], we " +"check if there is a unit in that cell. If so, we select it. \n" +"\n" +"In that case, we use an array, a loop, and a condition together." +msgstr "" +"对于名为 [code]selected_units[/code] " +"的数组中的每个坐标,我们检查该单元格中是否有一个单元。 " +"如果是这样,我们选择它。\n" +"\n" +"在这种情况下,我们一起使用数组、循环和条件。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:185 +msgid "" +"The code above uses several features you haven't learned yet:\n" +"\n" +"- In a condition, the [code]in[/code] keyword allows you to check if a " +"value exists [i]in[/i] an array.\n" +"- The array's [code]append()[/code] function appends a new value at the " +"end of the array.\n" +"\n" +"Notice the use of a period after the [code]selected_units[/code] " +"variable, to call the [code]append()[/code] function. It's because this " +"function exists only on arrays.\n" +"\n" +"When functions exist only on a specific value type, you write a dot after" +" the value to call the function on it.\n" +"\n" +"We'll revisit those two features again in the following lessons." +msgstr "" +"上面的代码使用了几个你还没有学过的特性:\n" +"\n" +"- 在条件中,[code]in[/code] 关键字允许您检查值是否存在 [i]in[/i] 数组。\n" +"- 数组的 [code]append()[/code] 函数在数组末尾追加一个新值。\n" +"\n" +"请注意在 [code]selected_units[/code] 变量之后使用句点来调用 " +"[code]append()[/code] 函数。 这是因为这个函数只存在于数组上。\n" +"\n" +"当函数只存在于特定的值类型上时,您可以在值后面写一个点来调用它上面的函数。\n" +"\n" +"在接下来的课程中,我们将再次重温这两个功能。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:204 +msgid "" +"The beauty of loops is that they work regardless of the size of your " +"arrays. \n" +"\n" +"The code just works whether you have one or ten thousand units to select." +" It is all accomplished with only a couple lines of code.\n" +"\n" +"That's the power of computer programming.\n" +"\n" +"In the following practices, you will use arrays combined with " +"[code]for[/code] loops to achieve similar results." +msgstr "" +"循环的美妙之处在于,无论数组大小如何,它们都可以工作。\n" +"\n" +"无论您要选择一万个单位还是一万个单位,该代码都可以正常工作。 " +"这一切只需几行代码即可完成。\n" +"\n" +"这就是计算机编程的力量。\n" +"\n" +"在下面的实践中,您将使用数组结合 [code]for[/code] 循环来实现类似的结果。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:218 +msgid "Move the robot along the path" +msgstr "沿路径移动机器人" + +#: course/lesson-20-looping-over-arrays/lesson.tres:219 +msgid "" +"Our AI pathfinding algorithm provided a path for the robot to move to the" +" right edge of the grid. Your task is to use a [code]for[/code] loop to " +"make the robot move.\n" +"\n" +"To move the robot, call [i]its[/i] [code]move_to()[/code] function, like " +"so: [code]robot.move_to()[/code].\n" +"\n" +"The [code]move_to()[/code] function only exists on the robot, which is " +"why you need to access it this way." +msgstr "" +"我们的 AI 寻路算法为机器人移动到网格的右边缘提供了一条路径。 您的任务是使用 " +"[code]for[/code] 循环使机器人移动。\n" +"\n" +"要移动机器人,请调用[i]它的[/i] [code]move_to()[/code] " +"函数,如下所示:[code]robot.move_to()[/code]。\n" +"\n" +"此处的 [code]move_to()[/code] " +"函数仅存在于机器人上,这就是您需要以这种方式访问它的原因。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:235 +msgid "" +"Our AI pathfinding algorithm is giving us a path to move the robot. Now, " +"you need to make the turtle move along the path." +msgstr "我们的 AI 寻路算法为我们提供了移动机器人的路径。 " +"现在,您需要让乌龟沿着路径移动。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:240 +msgid "Back to the drawing board" +msgstr "回到绘图板" + +#: course/lesson-20-looping-over-arrays/lesson.tres:241 +msgid "" +"We want to draw many rectangles, something surprisingly common in games.\n" +"\n" +"However, writing this code by hand can get tedious. Instead, you could " +"store the size of your shapes in arrays and use a loop to draw them all " +"in batches.\n" +"\n" +"That's what you'll do in this practice.\n" +"\n" +"Use a [code]for[/code] loop to draw every rectangle in the " +"[code]rectangle_sizes[/code] array with the [code]draw_rectangle()[/code]" +" function.\n" +"\n" +"The rectangles shouldn't overlap or cross each other. To avoid that, " +"you'll need to call the [code]jump()[/code] function." +msgstr "" +"我们想要绘制许多矩形,这在游戏中非常常见。\n" +"\n" +"但是,手动编写此代码可能会很乏味。 " +"相反,您可以将形状的大小存储在数组中,并使用循环批量绘制它们。\n" +"\n" +"这就是你在这个练习中要做的。\n" +"\n" +"使用 [code]for[/code] 循环通过 [code]draw_rectangle()[/code] 函数绘制 " +"[code]rectangle_sizes[/code] 数组中的每个矩形。\n" +"\n" +"矩形不应相互重叠或交叉。 为避免这种情况,您需要调用 [code]jump()[/code] " +"函数。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:261 +msgid "" +"The drawing turtle makes its comeback. Fear not! Armed with loops, you'll" +" make it draw faster than ever before." +msgstr "绘图乌龟卷土重来。 不要害怕! 配备循环,您将使其绘制速度比以往任何时候都快。" + +#: course/lesson-20-looping-over-arrays/lesson.tres:265 +msgid "Looping over arrays" +msgstr "循环遍历数组" diff --git a/i18n/zh_Hans/lesson-21-strings.po b/i18n/zh_Hans/lesson-21-strings.po new file mode 100644 index 00000000..602b04ae --- /dev/null +++ b/i18n/zh_Hans/lesson-21-strings.po @@ -0,0 +1,203 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2022-05-08 12:00+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-21-strings/lesson.tres:14 +msgid "" +"Throughout this course, we've mostly stored numbers in variables. But what " +"if we wanted to store a player's name?\n" +"\n" +"This is where strings help us.\n" +"\n" +"Strings are instrumental in games and applications. We use them to display " +"information such as the description of a spell or the name of a character." +msgstr "" +"在整个课程中,我们主要将数字存储在变量中。但是如果我们想存储一个玩家的名字" +"呢?\n" +"\n" +"这就是字符串帮助我们的地方。\n" +"\n" +"字符串在游戏和应用程序中非常有用。我们使用它们来显示诸如咒语描述或角色名称之" +"类的信息。" + +#: course/lesson-21-strings/lesson.tres:36 +msgid "What are strings" +msgstr "什么是字符串" + +#: course/lesson-21-strings/lesson.tres:38 +msgid "" +"A [code]String[/code] is a value type which holds text. To create a " +"[code]String[/code], you write text wrapped in quotation marks ([code]\"\"[/" +"code]). For example: [code]\"This is a text string.\"[/code]\n" +"\n" +"The quotation marks differentiate strings from other value types and " +"function names.\n" +"\n" +"You may remember we've used strings before in previous lessons." +msgstr "" +"[code]String[/code] 是一种保存文本的值类型。要创建 [code]String[/code],请编" +"写用引号括起来的文本 ([code]\"\"[/code])。例如:[code]“这是一个文本字符" +"串。”[/code]\n" +"\n" +"引号将字符串与其他值类型和函数名称区分开来。\n" +"\n" +"您可能还记得我们之前在之前的课程中使用过字符串。" + +#: course/lesson-21-strings/lesson.tres:62 +msgid "" +"Under the hood, strings are arrays of characters. In fact, we can use a " +"[code]for[/code] loop to loop through the characters of a [code]String[/" +"code] as we would with any other array." +msgstr "" +"在底层,字符串其实是字符数组。事实上,我们可以使用 [code]for[/code] 循环来遍" +"历[code]String[/code] 的字符,就像我们对任何其他数组一样。" + +#: course/lesson-21-strings/lesson.tres:80 +msgid "Which of these are strings?" +msgstr "其中哪些是字符串?" + +#: course/lesson-21-strings/lesson.tres:83 +msgid "" +"[code]\"1\"[/code] and [code]\"name\"[/code] are strings.\n" +"\n" +"[code]\"1\"[/code] only contains a character and [i]doesn't[/i] represent " +"the number [code]1[/code].\n" +"\n" +"[code]\"name\"[/code] is made up of four different characters." +msgstr "" +"[code]\"1\"[/code] 和 [code]\"name\"[/code] 是字符串。\n" +"\n" +"[code]\"1\"[/code] 只包含一个字符,[i]不[/i] 代表数字 [code]1[/code]。\n" +"\n" +"[code]\"name\"[/code] 由四个不同的字符组成。" + +#: course/lesson-21-strings/lesson.tres:88 +msgid "1" +msgstr "1" + +#: course/lesson-21-strings/lesson.tres:88 +#: course/lesson-21-strings/lesson.tres:89 +msgid "\"1\"" +msgstr "\"1\"" + +#: course/lesson-21-strings/lesson.tres:88 +#: course/lesson-21-strings/lesson.tres:89 +msgid "\"name\"" +msgstr "\"name\"" + +#: course/lesson-21-strings/lesson.tres:96 +msgid "Why we use strings" +msgstr "为什么我们使用字符串" + +#: course/lesson-21-strings/lesson.tres:118 +msgid "" +"Every piece of text you see in this app is a string that Godot is displaying " +"for us.\n" +"\n" +"Much like how [code]Vector2[/code] variables make calculations easier, " +"[code]string[/code] variables come with many helper functions and tricks we " +"can use.\n" +"\n" +"We can use arrays to store strings too. This is useful for chaining " +"animations. In this example, the [code]play_animation()[/code] plays a " +"specific animation." +msgstr "" +"你在这个应用程序中看到的每一条文本都是 Godot 为我们显示的字符串。\n" +"\n" +"就像 [code]Vector2[/code] 变量如何使计算更容易一样,[code]string[/code] 变量" +"带有许多我们可以使用的辅助函数和技巧。\n" +"\n" +"我们也可以使用数组来存储字符串。这对于链接动画很有用。在此示例中," +"[code]play_animation()[/code] 播放特定动画。" + +#: course/lesson-21-strings/lesson.tres:142 +msgid "" +"In the next few practices, we'll use strings in combination with different " +"concepts from earlier lessons." +msgstr "在接下来的几个练习中,我们将结合前面课程中的不同概念使用字符串。" + +#: course/lesson-21-strings/lesson.tres:150 +msgid "Creating string variables" +msgstr "创建字符串变量" + +#: course/lesson-21-strings/lesson.tres:151 +msgid "" +"Currently, the robot has a number stored in the [code]robot_name[/code] " +"variable. \n" +"\n" +"Change the [code]robot_name[/code] variable so that it's a string instead. " +"You can give it any name you'd like." +msgstr "" +"目前,机器人在 [code]robot_name[/code] 变量中存储了一个数字。\n" +"\n" +"更改 [code]robot_name[/code] 变量,使其改为字符串。你可以给它起任何你喜欢的名" +"字。" + +#: course/lesson-21-strings/lesson.tres:163 +msgid "Give the robot a readable name using a string stored in a variable." +msgstr "使用存储在变量中的字符串给机器人一个可读的名称。" + +#: course/lesson-21-strings/lesson.tres:168 +msgid "Using an array of strings to play a combo" +msgstr "使用字符串数组播放连招" + +#: course/lesson-21-strings/lesson.tres:169 +#, fuzzy +msgid "" +"In this practice, we'll chain together animations using an array of strings. " +"You might find such combinations in fighting games.\n" +"\n" +"The robot has the following animation names:\n" +"\n" +"- [code]jab[/code] (makes the robot perform a quick punch)\n" +"- [code]uppercut[/code] (the robot uses a powerful jumping punch)\n" +"\n" +"Populate the combo array with animation names as strings.\n" +"\n" +"Then, for each action in the array, call the [code]play_animation()[/code] " +"function to play them.\n" +"\n" +"The array should contain three values, so the robot makes these three " +"attacks: two jabs followed by one uppercut." +msgstr "" +"在本练习中,我们将使用字符串数组将动画链接在一起。您可能会在格斗游戏中找到这" +"样的组合。\n" +"\n" +"该机器人具有以下动画名称:\n" +"\n" +"- [code]jab[/code](让机器人快速出拳)\n" +"- [code]uppercut[/code](机器人使用强力的跳拳)\n" +"\n" +"使用动画名称作为字符串填充组合数组。\n" +"\n" +"然后,对于数组中的每个动作,调用 [code]play_animation()[/code] 函数来播放它" +"们。\n" +"\n" +"机器人应按顺序执行以下操作:[code]jab、jab、uppercut[/code]。" + +#: course/lesson-21-strings/lesson.tres:190 +msgid "Define an array of strings to unleash a powerful combo." +msgstr "定义一个字符串数组以释放强大的连招。" + +#: course/lesson-21-strings/lesson.tres:194 +msgid "Strings" +msgstr "字符串" diff --git a/i18n/zh_Hans/lesson-22-functions-return-values.po b/i18n/zh_Hans/lesson-22-functions-return-values.po new file mode 100644 index 00000000..82ba95fc --- /dev/null +++ b/i18n/zh_Hans/lesson-22-functions-return-values.po @@ -0,0 +1,243 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-22-functions-return-values/lesson.tres:13 +msgid "" +"Until now, you learned that functions are sequences of instructions you give " +"a name and you can call any time.\n" +"\n" +"On top of that, functions can make calculations and [i]return[/i] new " +"values.\n" +"\n" +"Let's look at some examples to see why it's useful." +msgstr "" +"到现在为止,您已经了解到函数是您命名的指令序列,您可以随时调用。\n" +"\n" +"最重要的是,函数可以进行计算并[i]返回[/i]新值。\n" +"\n" +"让我们看一些例子,看看它为什么有用。" + +#: course/lesson-22-functions-return-values/lesson.tres:25 +msgid "Built-in functions that return a value" +msgstr "返回一个值的内置函数" + +#: course/lesson-22-functions-return-values/lesson.tres:27 +msgid "" +"Many functions built into GDScript make calculations and return a new " +"value.\n" +"\n" +"For example, the [code]round()[/code] function takes a decimal number as an " +"argument and gives you back a new number rounded to the nearest digit." +msgstr "" +"GDScript 中内置有许多函数进行计算并返回一个新值。\n" +"\n" +"例如,[code]round()[/code] 函数将一个十进制数字作为参数,并返回一个四舍五入到" +"最接近数字的新数字。" + +#: course/lesson-22-functions-return-values/lesson.tres:49 +#, fuzzy +msgid "" +"Imagine you have a game where you track the player's health as a percentage, " +"a decimal number going from [code]0.0[/code] to [code]100.0[/code].\n" +"\n" +"When displaying the health on the interface, you don't want to show the " +"decimal part. In that case, you may use the [code]round()[/code] function, " +"like so." +msgstr "" +"想象一下,你有一个游戏,你以百分比形式跟踪玩家的血量状况,这是一个从 " +"[code]0.0[/code] 到 [code]100.0[/code] 的十进制数字。\n" +"\n" +"在界面上显示血量状况时,您不想显示小数部分。在这种情况下,您可以像这样使用 " +"[code]round()[/code] 函数。" + +#: course/lesson-22-functions-return-values/lesson.tres:71 +msgid "" +"Notice how we assign the result of the function call to a variable. Because " +"the [code]round()[/code] function returns a [i]new[/i] value, we need to " +"either store the result or use the value immediately.\n" +"\n" +"Above, we assigned it to a variable, but you could also do the following." +msgstr "" +"请注意我们如何将函数调用的结果赋值给变量。因为 [code]round()[/code] 函数返回" +"一个 [i]新[/i] 值,我们需要存储结果或者立即使用这个值。\n" +"\n" +"在上面,我们将结果赋值给一个变量,但你也可以像接下来这样做。" + +#: course/lesson-22-functions-return-values/lesson.tres:93 +msgid "" +"You can assign the return value of a function call if you plan on using it " +"more than once." +msgstr "如果你计划使用多次使用一个函数的返回值的话,你可以将它赋值给一个变量。" + +#: course/lesson-22-functions-return-values/lesson.tres:101 +msgid "A cooler example: lerp()" +msgstr "一个更酷的例子:lerp()" + +#: course/lesson-22-functions-return-values/lesson.tres:103 +msgid "" +"The [code]lerp()[/code] function, short for [i]linear interpolate[/i], " +"calculates and returns a weighted average between two values.\n" +"\n" +"It takes three arguments: the two values to average and a value between " +"[code]0.0[/code] and [code]1.0[/code] to skew the result.\n" +"\n" +"In game programming, it's used to animate things moving towards a target " +"with a single line of code." +msgstr "" +"[code]lerp()[/code] 函数是 [i]linear interpolate[/i] 的缩写,计算并返回两个值" +"之间的加权平均值。\n" +"\n" +"它需要三个参数:要平均的两个值和 [code]0.0[/code] 和 [code]1.0[/code] 之间的" +"值来倾斜结果。\n" +"\n" +"在游戏编程中,它用于通过单行代码使物体向目标移动。" + +#: course/lesson-22-functions-return-values/lesson.tres:137 +msgid "" +"Every frame, the code calculates a position somewhere between the turtle and " +"the mouse cursor. The [code]lerp()[/code] function takes care of " +"everything.\n" +"\n" +"It's not the most robust approach for smooth movement, as you'll learn in " +"the future, but it's a helpful function nonetheless." +msgstr "" +"每一帧,代码都会计算乌龟和鼠标光标之间的某个位置。 [code]lerp()[/code] 函数负" +"责处理所有事情。\n" +"\n" +"正如您将来会学到的那样,这不是平滑运动的最强大的方法,但它仍然是一个有用的功" +"能。" + +#: course/lesson-22-functions-return-values/lesson.tres:147 +msgid "Writing a function that returns a value" +msgstr "编写一个有返回值的函数" + +#: course/lesson-22-functions-return-values/lesson.tres:149 +#, fuzzy +msgid "" +"You can make [i]your[/i] functions return values.\n" +"\n" +"To make a function return a value, you use the [code]return[/code] keyword " +"followed by the value in question.\n" +"\n" +"In previous lessons, we had characters walking on grids.\n" +"\n" +"And for those practices, you were working directly with cell coordinates.\n" +"\n" +"Well, cell coordinates don't correspond to positions on the screen. To find " +"the center of any cell on the screen, we need to convert the cell's " +"coordinates to a position on the screen, in pixels." +msgstr "" +"您可以使 [i]你的[/i] 函数返回值。\n" +"\n" +"要让函数返回值,请使用 [code]return[/code] 关键字,后跟返回值。\n" +"\n" +"在之前的课程中,我们让角色在网格上行走。\n" +"\n" +"对于这些实践,您直接使用单元坐标。\n" +"\n" +"好吧,单元格坐标不对应屏幕上的位置,所以我们需要将单元格位置转换为屏幕位置。" + +#: course/lesson-22-functions-return-values/lesson.tres:177 +msgid "" +"To do so, we use a function. The function does two things:\n" +"\n" +"1. First, it multiplies the cell coordinates by the cell size, which gives " +"us the position of the cell's top-left corner on the screen, in pixels.\n" +"2. Then, we add half of the cell size to get the center of the cell.\n" +"\n" +"The function returns the result, allowing us to store it in a variable." +msgstr "" +"为此,我们使用了一个函数。该函数有两个功能:\n" +"\n" +"1. 首先,它将单元格坐标乘以单元格大小,得出单元格左上角在屏幕上的位置(以像素" +"为单位)。\n" +"2. 然后,将单元格大小的一半加起来,得到单元格的中心点。\n" +"\n" +"函数返回结果,我们可以将其存储在变量中。" + +#: course/lesson-22-functions-return-values/lesson.tres:202 +msgid "" +"The [code]return[/code] keyword returns the value to the code calling the " +"function. You'll receive the result where you call the function." +msgstr "" +"[code]return[/code] 关键字将值返回给调用函数的代码。您将在调用该函数的位置收" +"到结果。" + +#: course/lesson-22-functions-return-values/lesson.tres:222 +#, fuzzy +msgid "" +"Some functions return values, and some do not. During practices, you can " +"learn which functions return a value using the documentation panel. It will " +"display if the practice requires using specific functions or variables.\n" +"\n" +"There, functions that start with the term [code]void[/code] do not return a " +"value. Any other term means the function does return a value. You'll learn " +"more about what other terms mean in a couple of lessons when we explore " +"value [i]types[/i].\n" +"\n" +"For now, let's practice returning values from functions!" +msgstr "" +"有些函数返回值,有些则没有。您可以使用练习界面中的文档面板了解哪些函数会返回" +"结果。\n" +"\n" +"在那里,以关键字 [code]void[/code] 开头的函数不返回值。任何其他术语都意味着该" +"函数确实返回一个值。当我们探索值 [i]类型s[/i] 时,您将在几节课中了解更多关于" +"其他关键字的含义。\n" +"\n" +"现在,让我们练习从函数返回值!" + +#: course/lesson-22-functions-return-values/lesson.tres:234 +msgid "Converting coordinates from the grid to the screen" +msgstr "将坐标从网格转换到屏幕" + +#: course/lesson-22-functions-return-values/lesson.tres:235 +msgid "" +"Define a function that converts a position on a grid to the screen.\n" +"\n" +"The function takes a [code]Vector2[/code] cell coordinate as an argument. It " +"should return the corresponding [code]Vector2[/code] screen coordinates at " +"the center of the cell." +msgstr "" +"定义一个将网格上的位置转换为屏幕的函数。\n" +"\n" +"该函数将 [code]Vector2[/code] 单元格坐标作为参数。它应该返回单元格中心对应的 " +"[code]Vector2[/code] 屏幕坐标。" + +#: course/lesson-22-functions-return-values/lesson.tres:249 +msgid "" +"We lost the function to convert grid coordinates, but we desperately need it " +"for our game! Make the turtle move again by coding it." +msgstr "" +"我们失去了转换网格坐标的函数,但我们的游戏迫切需要它!通过编码使乌龟再次移" +"动。" + +#: course/lesson-22-functions-return-values/lesson.tres:253 +msgid "Functions that return a value" +msgstr "返回一个值的函数" + +#~ msgid "" +#~ "To do so, we use a function. It multiplies the cell coordinate by the " +#~ "cell size, adds half the cell size to the product, and returns the result." +#~ msgstr "" +#~ "为此,我们使用一个函数。它将单元格坐标乘以单元格大小,将单元格大小的一半加" +#~ "到乘积中,然后返回结果。" diff --git a/i18n/zh_Hans/lesson-23-append-to-arrays.po b/i18n/zh_Hans/lesson-23-append-to-arrays.po new file mode 100644 index 00000000..273b7d67 --- /dev/null +++ b/i18n/zh_Hans/lesson-23-append-to-arrays.po @@ -0,0 +1,292 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"PO-Revision-Date: 2022-06-19 11:18+0000\n" +"Last-Translator: adadaadadade <272169607@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.13.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-23-append-to-arrays/lesson.tres:13 +msgid "" +"In previous lessons, you learned how to create arrays to store lists of " +"values and how to loop over them. It's nice, but you won't go far with only " +"that.\n" +"\n" +"The real strength of arrays is that you can add and remove values from them " +"at any time. It allows you to [i]queue[/i] or [i]stack[/i] data." +msgstr "" +"在之前的课程中,您学习了如何创建数组来存储值列表以及如何循环它们。 这很好,但" +"你不会走得太远。\n" +"\n" +"数组的真正优势在于您可以随时在其中添加和删除值。 它允许您 [i]queue[/i] 或 " +"[i]stack[/i] 数据。" + +#: course/lesson-23-append-to-arrays/lesson.tres:25 +msgid "For now, let's take another example." +msgstr "现在,让我们再举一个例子。" + +#: course/lesson-23-append-to-arrays/lesson.tres:33 +msgid "Tracking orders in a restaurant management game" +msgstr "在餐厅管理游戏中跟踪订单" + +#: course/lesson-23-append-to-arrays/lesson.tres:35 +msgid "" +"You're making a restaurant management game where customers place orders, and " +"you need to handle them as they come.\n" +"\n" +"In this game, customers order meals that end up in a queue. You need to " +"prepare them in the kitchen.\n" +"\n" +"In this example, we simulate orders arriving and getting completed over time." +msgstr "" +"你正在制作一个餐厅管理游戏,顾客在其中下订单,你需要在他们来的时候处理他" +"们。\n" +"\n" +"在这个游戏中,顾客点餐时要排长队。 你需要在厨房里准备它们。\n" +"\n" +"在这个例子中,我们模拟了随着时间的推移到达和完成的订单。" + +#: course/lesson-23-append-to-arrays/lesson.tres:59 +msgid "" +"How do you keep track of pending and completed orders? With an array!\n" +"\n" +"When a customer purchases a meal, you want to [i]append[/i] it to the array. " +"Then, as you complete a meal in the kitchen and serve it, you want to remove " +"it from the array.\n" +"\n" +"You can do that with the [code]append()[/code] and the [code]pop_front()[/" +"code] functions of the array, respectively.\n" +"\n" +"Try to read the code below before moving on. Don't worry if not everything " +"makes sense, as we'll break it all down." +msgstr "" +"您如何跟踪待处理和已完成的订单? 带数组!\n" +"\n" +"当客户购买餐点时,您希望将其 [i] 附加[/i] 到数组中。 然后,当您在厨房完成一顿" +"饭并上桌时,您希望将其从阵列中移除。\n" +"\n" +"您可以分别使用数组的 [code]append()[/code] 和 [code]pop_front()[/code] 函数来" +"做到这一点。\n" +"\n" +"在继续之前尝试阅读下面的代码。 如果不是一切都有意义,请不要担心,因为我们将把" +"它全部分解。" + +#: course/lesson-23-append-to-arrays/lesson.tres:85 +msgid "" +"Notice how we call some functions by writing a dot after a variable name. " +"Like a given value type can have sub-variables, it can also have its own " +"functions.\n" +"\n" +"Functions like [code]append()[/code] and [code]pop_front()[/code] only exist " +"on arrays. That's why to call them, we need to access it from the array " +"using the dot: [code]array.append()[/code]." +msgstr "" +"注意我们如何通过在变量名后写一个点来调用一些函数。 就像给定的值类型可以有子变" +"量一样,它也可以有自己的函数。\n" +"\n" +"[code]append()[/code] 和 [code]pop_front()[/code] 之类的函数只存在于数组中。 " +"这就是调用它们的原因,我们需要使用点从数组中访问它:[code]array.append()[/" +"code]。" + +#: course/lesson-23-append-to-arrays/lesson.tres:97 +msgid "" +"Let's break down the code.\n" +"\n" +"We queue orders in the [code]waiting_orders[/code] array by appending them " +"to the array." +msgstr "" +"让我们分解代码。\n" +"\n" +"我们通过将订单附加到数组中,在 [code]waiting_orders[/code] 数组中排队。" + +#: course/lesson-23-append-to-arrays/lesson.tres:119 +msgid "" +"We can use a string to represent a meal when calling the [code]add_order()[/" +"code] function." +msgstr "" +"在调用 [code]add_order()[/code] 函数时,我们可以使用字符串来表示一顿饭。" + +#: course/lesson-23-append-to-arrays/lesson.tres:139 +msgid "" +"When completing an order, we remove it from the [code]waiting_orders[/code] " +"array by calling its [code]pop_front()[/code] function. This function gives " +"us the order back, which allows us to assign it to a temporary variable." +msgstr "" +"完成订单后,我们通过调用其 [code]pop_front()[/code] 函数将其从 " +"[code]waiting_orders[/code] 数组中移除。 该函数将订单返回给我们,这允许我们将" +"其分配给一个临时变量。" + +#: course/lesson-23-append-to-arrays/lesson.tres:159 +msgid "" +"We can then append the order to our [code]completed_orders[/code] array." +msgstr "然后我们可以将订单附加到我们的 [code]completed_orders[/code] 数组中。" + +#: course/lesson-23-append-to-arrays/lesson.tres:179 +msgid "" +"We call arrays like [code]waiting_orders[/code] a [i]queue[/i]: the first " +"element we append to the array is the first one we remove." +msgstr "" +"我们将像 [code]waiting_orders[/code] 这样的数组称为 [i]queue[/i]:我们附加到" +"数组的第一个元素是我们删除的第一个元素。" + +#: course/lesson-23-append-to-arrays/lesson.tres:187 +msgid "What does #... mean?" +msgstr "这是什么意思?" + +#: course/lesson-23-append-to-arrays/lesson.tres:189 +msgid "" +"We write [code]#...[/code] to represent ellipses in the code. It means " +"\"we're completing the function's code.\" We use that to break down code " +"examples and make them easier to learn from.\n" +"\n" +"The hash sign itself marks the start of a code comment. It's a line the " +"computer will ignore, which is why it typically appears in grey." +msgstr "" +"我们编写 [code]#...[/code] 来表示代码中的省略号。 这意味着“我们正在完成函数的" +"代码”。 我们使用它来分解代码示例并使它们更容易学习。\n" +"\n" +"井号本身标志着代码注释的开始。 这是计算机将忽略的一条线,这就是它通常显示为灰" +"色的原因。" + +#: course/lesson-23-append-to-arrays/lesson.tres:199 +msgid "Using arrays as stacks" +msgstr "使用数组作为栈" + +#: course/lesson-23-append-to-arrays/lesson.tres:201 +msgid "" +"Another common use of arrays is [i]stacks[/i] of data.\n" +"\n" +"Take a factory management game where you need to retrieve materials from " +"stacks of crates. They arrive at the factory piled up vertically, and you " +"need to take them from top to bottom." +msgstr "" +"数组的另一个常见用途是 [i]stacks[/i] 数据。\n" +"\n" +"参加一个工厂管理游戏,您需要从成堆的板条箱中取回材料。 它们到达工厂时垂直堆" +"积,您需要将它们从上到下拿走。" + +#: course/lesson-23-append-to-arrays/lesson.tres:223 +msgid "" +"To take a crate from the back of the array, this time, we use the " +"[code]pop_back()[/code] array function.\n" +"\n" +"This function removes (pops) the last value from the array and returns it to " +"you.\n" +"\n" +"Here we pop the last value of the array and print what's left of the array " +"to demonstrate how the array gets smaller." +msgstr "" +"为了从数组后面取出一个箱子,这一次,我们使用 [code]pop_back()[/code] 数组函" +"数。\n" +"\n" +"此函数从数组中删除(弹出)最后一个值并将其返回给您。\n" +"\n" +"在这里,我们弹出数组的最后一个值并打印数组的剩余部分以演示数组如何变小。" + +#: course/lesson-23-append-to-arrays/lesson.tres:247 +msgid "" +"Like [code]pop_front()[/code], the function returns the value removed from " +"the array. You will often store that value in a variable.\n" +"\n" +"The value in question could be the crate's content, which you can then use " +"to give resources to the player.\n" +"\n" +"In the following practices, you will use the [code]append()[/code], " +"[code]pop_front()[/code], and [code]pop_back()[/code] array functions." +msgstr "" +"与 [code]pop_front()[/code] 一样,该函数返回从数组中删除的值。 您通常会将该值" +"存储在变量中。\n" +"\n" +"有问题的值可能是箱子的内容,然后您可以使用它为玩家提供资源。\n" +"\n" +"在以下实践中,您将使用 [code]append()[/code]、[code]pop_front()[/code] 和 " +"[code]pop_back()[/code] 数组函数。" + +#: course/lesson-23-append-to-arrays/lesson.tres:259 +msgid "Completing orders" +msgstr "完成订单" + +#: course/lesson-23-append-to-arrays/lesson.tres:260 +msgid "" +"The [code]waiting_orders[/code] array will be filled over time.\n" +"\n" +"Your job is to move orders from the waiting list to the " +"[code]completed_orders[/code] list using the array's [code]append()[/code] " +"and [code]pop_front()[/code] functions.\n" +"\n" +"Remember that the array's [code]pop_front()[/code] function returns the " +"popped value, which allows you to store it in a variable and then pass it to " +"another function." +msgstr "" +"[code]waiting_orders[/code] 数组将随着时间的推移而被填充。\n" +"\n" +"您的工作是使用数组的 [code]append()[/code] 和 [code]pop_front()[/code] 函数将" +"订单从等待列表移动到 [code]completed_orders[/code] 列表。\n" +"\n" +"请记住,数组的 [code]pop_front()[/code] 函数返回弹出的值,这允许您将其存储在" +"变量中,然后将其传递给另一个函数。" + +#: course/lesson-23-append-to-arrays/lesson.tres:277 +msgid "" +"Orders are piling up in the kitchen, and we need to clear them fast using " +"the array's [code]pop_front()[/code] function." +msgstr "" +"厨房里的订单堆积如山,我们需要使用数组的 [code]pop_front()[/code] 函数快速清" +"除它们。" + +#: course/lesson-23-append-to-arrays/lesson.tres:282 +msgid "Clearing up the crates" +msgstr "清理箱子" + +#: course/lesson-23-append-to-arrays/lesson.tres:283 +msgid "" +"Crates are piling up on the platform. Move them out of the way by popping " +"them from the [code]crates[/code] array.\n" +"\n" +"You need to remove them from top to bottom using the array's [code]pop_back()" +"[/code] function.\n" +"\n" +"Your code should remove all the crates in the array using a while loop.\n" +"\n" +"[b]Careful![/b] if you run a while loop carelessly, you can lock the " +"software.\n" +"\n" +"You can check if the [code]crates[/code] array still contains values by " +"writing [code]while crates:[/code]" +msgstr "" +"板条箱在平台上堆积如山。 通过从 [code] crates[/code] " +"数组中弹出它们来将它们移开。\n" +"\n" +"您需要使用数组的 [code]pop_back()[/code] 函数从上到下删除它们。\n" +"\n" +"您的代码应使用 while 循环删除数组中的所有 crate。\n" +"\n" +"[b]小心![/b]如果你不小心运行了while循环,你可以锁定软件。\n" +"\n" +"您需要通过写[code]while " +"crates:[/code]来检查[code]crates[/code]数组是否还含有值" + +#: course/lesson-23-append-to-arrays/lesson.tres:303 +msgid "" +"Crates are piling up on the platform. Move them out of the way by popping " +"them from their array." +msgstr "板条箱在平台上堆积如山。 通过将它们从阵列中弹出来将它们移开。" + +#: course/lesson-23-append-to-arrays/lesson.tres:307 +msgid "Appending and popping values from arrays" +msgstr "从数组中追加和弹出值" diff --git a/i18n/zh_Hans/lesson-24-access-array-indices.po b/i18n/zh_Hans/lesson-24-access-array-indices.po new file mode 100644 index 00000000..c77184a0 --- /dev/null +++ b/i18n/zh_Hans/lesson-24-access-array-indices.po @@ -0,0 +1,250 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"PO-Revision-Date: 2022-05-08 14:10+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-24-access-array-indices/lesson.tres:14 +msgid "" +"You learned to loop over all the values in an array using the [code]for[/" +"code] keyword." +msgstr "您学会了使用 [code]for[/code] 关键字循环遍历数组中的所有值。" + +#: course/lesson-24-access-array-indices/lesson.tres:34 +msgid "" +"But what if you need to access the third item in the player's inventory? The " +"tenth item?\n" +"\n" +"There's a dedicated notation to access one element in an array by index.\n" +"\n" +"To do so, you use square brackets with a number inside the brackets." +msgstr "" +"但是,如果您需要访问玩家库存中的第三个项目怎么办? 第十项?\n" +"\n" +"有一种专门的符号可以通过索引访问数组中的一个元素。\n" +"\n" +"为此,您使用方括号,括号内有一个数字。" + +#: course/lesson-24-access-array-indices/lesson.tres:58 +msgid "Index zero is the [i]first[/i] element in the array." +msgstr "索引零是数组中的 [i]first[/i] 元素。" + +#: course/lesson-24-access-array-indices/lesson.tres:78 +msgid "" +"Index one is the [i]second[/i] element in the array, and so on.\n" +"\n" +"You would access the [i]fourth[/i] element in the [code]inventory[/code] " +"array like so." +msgstr "" +"索引一是数组中的 [i]second[/i] 元素,依此类推。\n" +"\n" +"您可以像这样访问 [code]inventory[/code] 数组中的 [i]fourth[/i] 元素。" + +#: course/lesson-24-access-array-indices/lesson.tres:98 +msgid "" +"How would you access the [i]third[/i] item in the [code]inventory[/code] " +"array?" +msgstr "您将如何访问 [code]inventory[/code] 数组中的 [i]third[/i] 项?" + +#: course/lesson-24-access-array-indices/lesson.tres:101 +msgid "" +"Indices start at zero, so the index of the [i]third[/i] item is [code]2[/" +"code]. That's why you need to write [code]inventory[2][/code]." +msgstr "" +"索引从零开始,因此[i]third[/i] 项的索引是[code]2[/code]。 这就是为什么你需要" +"编写 [code]inventory[2][/code]。" + +#: course/lesson-24-access-array-indices/lesson.tres:102 +#: course/lesson-24-access-array-indices/lesson.tres:103 +msgid "inventory[2]" +msgstr "inventory[2]" + +#: course/lesson-24-access-array-indices/lesson.tres:102 +msgid "inventory[3]" +msgstr "inventory[3]" + +#: course/lesson-24-access-array-indices/lesson.tres:110 +msgid "Accessing the last values with negative indices" +msgstr "使用负索引访问最后一个值" + +#: course/lesson-24-access-array-indices/lesson.tres:112 +msgid "" +"What if you want to access the last or second-before-last item in the " +"[code]inventory[/code]?\n" +"\n" +"In that case, you can use negative indices. If you write [code]-1[/code] in " +"the brackets, you will get the last item in the array. You will get the " +"second-to-last item if you write [code]-2[/code]." +msgstr "" +"如果您想访问 [code]inventory[/code] 中的最后一个或倒数第二个项目怎么办?\n" +"\n" +"在这种情况下,您可以使用负索引。 如果你在括号中写 [code]-1[/code],你将得到数" +"组中的最后一项。 如果您编写 [code]-2[/code],您将获得倒数第二个项目。" + +#: course/lesson-24-access-array-indices/lesson.tres:134 +msgid "" +"That's very convenient when you need to quickly access elements from the end " +"of the list." +msgstr "当您需要从列表末尾快速访问元素时,这非常方便。" + +#: course/lesson-24-access-array-indices/lesson.tres:142 +msgid "How would you access the third-to-last item in the inventory array?" +msgstr "您将如何访问库存数组中倒数第三个项目?" + +#: course/lesson-24-access-array-indices/lesson.tres:145 +msgid "" +"When using negative indices, [code]-1[/code] means the [i]last[/i] element " +"in the array. Index [code]-2[/code] will be the second-to-last, thus " +"[code]-3[/code] will be the third-to-last.\n" +"\n" +"It can be little confusing as it seems to work differently from positive " +"indices. However, it's because there's no difference between index [code]0[/" +"code] and [code]-0[/code]: they both point to the first item in the array." +msgstr "" +"当使用负索引时,[code]-1[/code] 表示数组中的 [i]last[/i] 元素。 索引 " +"[code]-2[/code] 将是倒数第二个,因此 [code]-3[/code] 将是倒数第三个。\n" +"\n" +"它可能有点令人困惑,因为它似乎与正指数的工作方式不同。 但是,这是因为索引 " +"[code]0[/code] 和 [code]-0[/code] 之间没有区别:它们都指向数组中的第一项。" + +#: course/lesson-24-access-array-indices/lesson.tres:148 +#: course/lesson-24-access-array-indices/lesson.tres:149 +msgid "inventory[-3]" +msgstr "inventory[-3]" + +#: course/lesson-24-access-array-indices/lesson.tres:148 +msgid "inventory[-2]" +msgstr "inventory[-2]" + +#: course/lesson-24-access-array-indices/lesson.tres:156 +msgid "You can't access non-existent indices" +msgstr "您无法访问不存在的索引" + +#: course/lesson-24-access-array-indices/lesson.tres:158 +msgid "" +"There's a catch with this syntax: if you try to access an index that does " +"not exist, you will get an error. You have to be careful always to access " +"existing elements in the array.\n" +"\n" +"There are a couple of ways you can check for valid indices. One of them is " +"checking the array's size." +msgstr "" +"这种语法有一个问题:如果你试图访问一个不存在的索引,你会得到一个错误。 您必须" +"始终小心访问数组中的现有元素。\n" +"\n" +"有几种方法可以检查有效索引。 其中之一是检查数组的大小。" + +#: course/lesson-24-access-array-indices/lesson.tres:170 +msgid "" +"[b]Checking the size of the array[/b]\n" +"\n" +"Arrays come with a member function named [code]size()[/code]. You can call " +"it on the array anytime to know its [i]current[/i] size." +msgstr "" +"[b]检查数组的大小[/b]\n" +"\n" +"数组带有一个名为 [code]size()[/code] 的成员函数。 您可以随时在数组上调用它以" +"了解其 [i]current[/i] 大小。" + +#: course/lesson-24-access-array-indices/lesson.tres:192 +msgid "" +"The maximum index you can access in an array is [code]array.size() - 1[/" +"code]: it's the last item in the array." +msgstr "" +"您可以在数组中访问的最大索引是 [code]array.size() - 1[/code]:它是数组中的最" +"后一项。" + +#: course/lesson-24-access-array-indices/lesson.tres:212 +msgid "" +"In the following practices, you will use array indices to realign train " +"tracks and grab the correct item in an inventory." +msgstr "" +"在以下实践中,您将使用数组索引来重新排列火车轨道并在库存中获取正确的项目。" + +#: course/lesson-24-access-array-indices/lesson.tres:220 +msgid "Using the right items" +msgstr "使用正确的物品" + +#: course/lesson-24-access-array-indices/lesson.tres:221 +msgid "" +"In our game, the player has an inventory that works as an array under the " +"hood.\n" +"\n" +"They want to equip a sword and a shield to buff their characters. Like " +"before, we need you to find them in the array.\n" +"\n" +"You need to access elements in the [code]inventory[/code] array by index to " +"do so.\n" +"\n" +"Call the [code]use_item()[/code] function with the item as an argument to " +"use an item. For example, you can use the first item by calling " +"[code]use_item(inventory[0])[/code]." +msgstr "" +"在我们的游戏中,玩家有一个在引擎盖下作为数组工作的库存。\n" +"\n" +"他们想装备一把剑和一个盾牌来增强他们的角色。 像以前一样,我们需要您在数组中找" +"到它们。\n" +"\n" +"您需要通过索引访问 [code]inventory[/code] 数组中的元素才能这样做。\n" +"\n" +"使用项目作为参数调用 [code]use_item()[/code] 函数以使用项目。 例如,您可以通" +"过调用 [code]use_item(inventory[0])[/code] 来使用第一项。" + +#: course/lesson-24-access-array-indices/lesson.tres:239 +msgid "Find the right items to use in the player's inventory." +msgstr "在玩家的库存中找到要使用的正确物品。" + +#: course/lesson-24-access-array-indices/lesson.tres:244 +msgid "Realigning the train tracks" +msgstr "重新调整火车轨道" + +#: course/lesson-24-access-array-indices/lesson.tres:245 +msgid "" +"We have train tracks broken down into little chunks in our game. We use them " +"to make modular tracks and draw circuits of all shapes and sizes.\n" +"\n" +"However, several chunks are misaligned. You need to find them in the " +"[code]tracks[/code] array and pass them to the [code]align()[/code] " +"function.\n" +"\n" +"To do so, you need to access the array by index.\n" +"\n" +"This time, though, you need to access them with [i]negative indices[/i]." +msgstr "" +"我们在游戏中将火车轨道分解成小块。 我们使用它们来制作模块化轨道并绘制各种形状" +"和大小的电路。\n" +"\n" +"但是,有几个块未对齐。 您需要在 [code]tracks[/code] 数组中找到它们并将它们传" +"递给 [code]align()[/code] 函数。\n" +"\n" +"为此,您需要按索引访问数组。\n" +"\n" +"不过,这一次,您需要使用 [i] 负索引 [/i] 来访问它们。" + +#: course/lesson-24-access-array-indices/lesson.tres:263 +msgid "" +"Some chunks of our train tracks are misaligned, and the train can't pass. " +"Find the faulty pieces and realign them." +msgstr "" +"我们的一些火车轨道错位了,火车无法通过。 找到有缺陷的部分并重新调整它们。" + +#: course/lesson-24-access-array-indices/lesson.tres:267 +msgid "Accessing values in arrays" +msgstr "访问数组中的值" diff --git a/i18n/zh_Hans/lesson-25-creating-dictionaries.po b/i18n/zh_Hans/lesson-25-creating-dictionaries.po new file mode 100644 index 00000000..b51beb59 --- /dev/null +++ b/i18n/zh_Hans/lesson-25-creating-dictionaries.po @@ -0,0 +1,295 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-03-26 17:50+0100\n" +"PO-Revision-Date: 2022-05-08 14:10+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-25-creating-dictionaries/lesson.tres:14 +msgid "" +"In the last lesson, we used an array to represent a player's inventory.\n" +"\n" +"With just an array of item names, though, we can't easily keep track of " +"the amount of each item.\n" +"\n" +"Instead, we can bundle the item names and amounts into a single " +"[i]dictionary[/i].\n" +"\n" +"A dictionary is a data structure that allows you to map pairs of values. " +"In the pair, we call the first value a [i]key[/i] as we use it to access " +"the second.\n" +"\n" +"In other words, a dictionary has a list of [i]keys[/i], and each key " +"points to a [i]value[/i].\n" +"\n" +"To define a dictionary, we use curly brackets. A colon separates each key" +" and its value. A comma separates each key and value pair." +msgstr "" +"在上一课中,我们使用了一个数组来表示玩家的物品栏。\n" +"\n" +"但是,仅使用一组项目名称,我们无法轻松跟踪每个项目的数量。\n" +"\n" +"相反,我们可以将项目名称和金额捆绑到一个 [i]dictionary[/i] 中。\n" +"\n" +"字典是一种数据结构,允许您映射成对的值。 在这对中,我们将第一个值称为 " +"[i]key[/i],因为我们使用它来访问第二个。\n" +"\n" +"换句话说,字典有一个 [i]keys[/i] 的列表,每个 key 指向一个 [i]value[/i]。\n" +"\n" +"要定义字典,我们使用大括号。 冒号分隔每个键及其值。 逗号分隔每个键和值对。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:42 +msgid "Dictionaries can hold any values" +msgstr "字典可以保存任何值" + +#: course/lesson-25-creating-dictionaries/lesson.tres:44 +msgid "" +"Dictionaries can map about any value to any other value.\n" +"\n" +"For example, we can use the name of an item as a key and the amount as " +"the corresponding value. This makes dictionaries excellent for keeping " +"track of a player's inventory." +msgstr "" +"字典可以将任何值映射到任何其他值。\n" +"\n" +"例如,我们可以使用商品的名称作为键,金额作为对应的值。 " +"这使得字典非常适合跟踪玩家的库存。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:66 +msgid "" +"Here we matched the name (a string) to the amount (a number). But a key " +"could be a string, a number, or even a vector! \n" +"\n" +"Although we can have all of these different keys, keep in mind that every" +" key has to be [i]unique[/i]. That means we [i]couldn't[/i] have a " +"dictionary like the following." +msgstr "" +"在这里,我们将名称(字符串)与金额(数字)相匹配。 " +"但是一个键可以是一个字符串、一个数字,甚至是一个向量!\n" +"\n" +"尽管我们可以拥有所有这些不同的键,但请记住,每个键都必须是 [i] 唯一的 [/i]。 " +"这意味着我们 [i] 不能[/i] 拥有像下面这样的字典。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:88 +msgid "We would get the following error." +msgstr "我们会得到以下错误。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:106 +msgid "In the above example, which key would cause an error?" +msgstr "在上面的例子中,哪个键会导致错误?" + +#: course/lesson-25-creating-dictionaries/lesson.tres:109 +msgid "" +"The key [code]\"healing heart\"[/code] appears [b]twice[/b] in the " +"dictionary.\n" +"\n" +"In the above example, Godot wouldn't know whether to return " +"[code]3[/code] or [code]8[/code] when using [code]inventory[\"healing " +"heart\"][/code]. This is why keys need to be unique." +msgstr "" +"关键字 [code]\"healing heart\"[/code] 在字典中出现 [b] 两次 [/b]。\n" +"\n" +"在上面的例子中,Godot 在使用 [code]inventory[\"healing heart\"][/code] " +"时不知道是返回 [code]3[/code] 还是 [code]8[/code]。 " +"这就是为什么键需要是唯一的。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:112 +#: course/lesson-25-creating-dictionaries/lesson.tres:113 +msgid "\"healing heart\"" +msgstr "\"healing heart\"" + +#: course/lesson-25-creating-dictionaries/lesson.tres:112 +msgid "\"shield\"" +msgstr "\"shield\"" + +#: course/lesson-25-creating-dictionaries/lesson.tres:112 +msgid "\"sword\"" +msgstr "\"sword\"" + +#: course/lesson-25-creating-dictionaries/lesson.tres:120 +msgid "How dictionaries work under the hood" +msgstr "字典如何在幕后工作" + +#: course/lesson-25-creating-dictionaries/lesson.tres:122 +msgid "" +"Dictionaries are also called mappings or [i]associative arrays[/i]. Under" +" the hood, they use arrays and several functions to efficiently store and" +" retrieve values across arrays.\n" +"\n" +"Precisely, dictionaries use a [i]hashing algorithm[/i]. Hashing " +"algorithms convert one value into another.\n" +"\n" +"In this case, hashing consists of converting a given key into a unique " +"whole number. The dictionary then uses that number as an array's index!\n" +"\n" +"That's how a dictionary works: when you give it a key, it converts it " +"into a unique index and uses that index to retrieve the corresponding " +"value in the computer's memory.\n" +"\n" +"That's also why you can't have the same key twice: it would map to the " +"same array index, causing you to overwrite an existing value." +msgstr "" +"字典也称为映射或 [i] 关联数组 [/i]。 " +"在底层,他们使用数组和几个函数来有效地跨数组存储和检索值。\n" +"\n" +"准确地说,字典使用[i]散列算法[/i]。 散列算法将一个值转换为另一个值。\n" +"\n" +"在这种情况下,散列包括将给定的键转换为唯一的整数。 " +"然后字典将该数字用作数组的索引!\n" +"\n" +"这就是字典的工作原理:当你给它一个键时,它会将它转换为一个唯一的索引,并使用" +"该索引来检索计算机内存中的相应值。\n" +"\n" +"这也是为什么您不能两次拥有相同的键:它会映射到相同的数组索引,导致您覆盖现有" +"值。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:138 +msgid "Accessing values" +msgstr "访问值" + +#: course/lesson-25-creating-dictionaries/lesson.tres:140 +msgid "" +"We access the value of keys by writing the dictionary name, with the key " +"in between square brackets." +msgstr "我们通过写字典名称来访问键的值,键在方括号之间。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:168 +msgid "How would you access how many gems the player has?" +msgstr "您将如何访问玩家拥有的宝石数量?" + +#: course/lesson-25-creating-dictionaries/lesson.tres:171 +msgid "" +"We need to make sure the key is the same as we defined in the dictionary." +"\n" +"\n" +"In our case, [code]var item_count = inventory[\"gems\"][/code] is correct." +msgstr "" +"我们需要确保键与我们在字典中定义的键相同。\n" +"\n" +"在我们的例子中,[code]var item_count = inventory[\"gems\"][/code] 是正确的。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:174 +msgid "var item_count = inventory[\"gem\"]" +msgstr "var item_count = inventory[\"gem\"]" + +#: course/lesson-25-creating-dictionaries/lesson.tres:174 +#: course/lesson-25-creating-dictionaries/lesson.tres:175 +msgid "var item_count = inventory[\"gems\"]" +msgstr "var item_count = inventory[\"gems\"]" + +#: course/lesson-25-creating-dictionaries/lesson.tres:174 +msgid "var item_count = inventory[\"sword\"]" +msgstr "var item_count = inventory[\"sword\"]" + +#: course/lesson-25-creating-dictionaries/lesson.tres:182 +msgid "Changing values" +msgstr "修改值" + +#: course/lesson-25-creating-dictionaries/lesson.tres:184 +msgid "" +"We can also change values directly, which is useful in our case for " +"adding or removing items from the player's inventory." +msgstr "我们还可以直接更改值,这在我们的例子中对于从玩家的库存中添加或删除项目很有用" +"。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:214 +msgid "" +"In the following practices, we'll use a dictionary to create a player " +"inventory and create a function to change the value of items." +msgstr "在下面的实践中,我们将使用字典来创建玩家物品栏并创建一个函数来更改物品的价值" +"。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:222 +msgid "Creating an inventory using a dictionary" +msgstr "使用字典创建背包" + +#: course/lesson-25-creating-dictionaries/lesson.tres:223 +msgid "" +"Let's give some items to the player.\n" +"\n" +"We use a dictionary for the player's inventory. We defined the " +"[code]inventory[/code] variable for you, but it contains no items yet.\n" +"\n" +"Give the player the following items by adding the correct keys and values" +" to the dictionary:\n" +"\n" +"- Three \"healing heart\".\n" +"- Nine \"gems\".\n" +"- One \"sword\".\n" +"\n" +"The keys should be text strings, and the values whole numbers." +msgstr "" +"让我们给玩家一些物品。\n" +"\n" +"我们为玩家的库存使用字典。 我们为您定义了 [code]inventory[/code] " +"变量,但它还没有包含任何项目。\n" +"\n" +"通过将正确的键和值添加到字典中,为玩家提供以下项目:\n" +"\n" +"——三“疗愈心”。\n" +"- 九颗“宝石”。\n" +"- 一把“剑”。\n" +"\n" +"键应该是文本字符串,值应该是整数。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:244 +msgid "" +"Collecting items is fun, but we need a good way to store them. Write a " +"dictionary to display the player's items." +msgstr "收集物品很有趣,但我们需要一种很好的方式来储存它们。 " +"编写一个字典来显示玩家的物品。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:249 +msgid "Increasing item counts" +msgstr "增加项目数量" + +#: course/lesson-25-creating-dictionaries/lesson.tres:250 +msgid "" +"We want to change the item counts in the player's inventory whenever the " +"player picks up or uses an item.\n" +"\n" +"We've started the [code]add_item()[/code] function for you.\n" +"\n" +"The [code]inventory[/code] dictionary should use the " +"[code]item_name[/code] parameter as the key to access its values, and we " +"should increase the value by [code]amount[/code].\n" +"\n" +"To test this practice, we'll use your [code]add_item()[/code] function to" +" increase the item count of Healing Heart, Gems, and Sword." +msgstr "" +"我们希望在玩家拾取或使用物品时更改玩家库存中的物品数量。\n" +"\n" +"我们已经为您启动了 [code]add_item()[/code] 函数。\n" +"\n" +"[code]inventory[/code] 字典应该使用 [code]item_name[/code] " +"参数作为访问其值的键,我们应该将值增加 [code]amount[/code]。\n" +"\n" +"为了测试这种做法,我们将使用您的 [code]add_item()[/code] " +"函数来增加治疗之心、宝石和剑的物品数量。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:266 +msgid "" +"The player might walk over a pick-up or find something in a chest, so we " +"need a way to change the item counts in our inventory." +msgstr "玩家可能会走过拾取物或在箱子里找到东西,所以我们需要一种方法来更改库存中的物" +"品数量。" + +#: course/lesson-25-creating-dictionaries/lesson.tres:270 +msgid "Creating Dictionaries" +msgstr "创建字典" diff --git a/i18n/zh_Hans/lesson-26-looping-over-dictionaries.po b/i18n/zh_Hans/lesson-26-looping-over-dictionaries.po new file mode 100644 index 00000000..364f9e70 --- /dev/null +++ b/i18n/zh_Hans/lesson-26-looping-over-dictionaries.po @@ -0,0 +1,189 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2022-05-08 14:10+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:13 +msgid "" +"Like with arrays, you can loop over dictionaries. You can loop over both " +"their keys and values.\n" +"\n" +"Let's see how it works with two examples." +msgstr "" +"与数组一样,您可以遍历字典。 您可以遍历它们的键和值。\n" +"\n" +"让我们通过两个示例来看看它是如何工作的。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:23 +msgid "Displaying an inventory's content" +msgstr "显示库存的内容" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:25 +msgid "" +"To display the player's inventory, you need to know what it contains. You " +"need the name and amount of each object.\n" +"\n" +"And from code, you can only achieve that by looping over the whole " +"dictionary and processing key-value pairs one by one.\n" +"\n" +"To get the list of keys in the dictionary, you can call its [code]keys()[/" +"code] member function." +msgstr "" +"要显示玩家的库存,您需要知道其中包含什么。 您需要每个对象的名称和数量。\n" +"\n" +"而从代码中,你只能通过遍历整个字典并一一处理键值对来实现。\n" +"\n" +"要获取字典中的键列表,可以调用它的 [code]keys()[/code] 成员函数。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:49 +#, fuzzy +msgid "" +"But it's something we do so much that you don't need to call the function.\n" +"\n" +"Instead, you can directly [ignore]type the variable name in a [code]for[/" +"code] loop after the [code]in[/code] keyword. The language understands that " +"you implicitly want to loop over the dictionary's keys." +msgstr "" +"但这是我们经常做的事情,以至于您不需要调用该函数。\n" +"\n" +"相反,您可以在 [code]in[/code] 关键字之后的 [code]for[/code] 循环中直接键入变" +"量名称。 该语言理解您隐含地想要遍历字典的键。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:71 +msgid "" +"You can get the values with the syntax [code]dictionary[key][/code] as you " +"learned in the previous lesson.\n" +"\n" +"We can loop over the inventory keys, get the corresponding values, and " +"display all that information in the user interface." +msgstr "" +"您可以使用在上一课中学习的语法 [code]dictionary[key][/code] 获取值。\n" +"\n" +"我们可以遍历库存键,获取相应的值,并在用户界面中显示所有这些信息。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:103 +msgid "" +"Instead of printing the key-value pairs to the output console, we can code " +"and call a dedicated function that displays items in the user interface." +msgstr "" +"我们可以编写代码并调用在用户界面中显示项目的专用函数,而不是将键值对打印到输" +"出控制台。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:131 +msgid "Mapping grid cells to units" +msgstr "将网格单元映射到单位" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:133 +msgid "" +"We can also use a dictionary to map units to their position on a game " +"board.\n" +"\n" +"That's how you'd typically code a board game, a grid-based RPG, or a " +"tactical RPG.\n" +"\n" +"While we focused on [code]String[/code] keys so far, GDScript dictionaries " +"accept any value type as a key, allowing you to map anything to anything.\n" +"\n" +"The only limitation is that every key must be unique." +msgstr "" +"我们还可以使用字典将单位映射到它们在游戏板上的位置。\n" +"\n" +"这就是您通常编写棋盘游戏、基于网格的 RPG 或战术 RPG 的方式。\n" +"\n" +"虽然到目前为止我们专注于 [code]String[/code] 键,但 GDScript 字典接受任何值类" +"型作为键,允许您将任何内容映射到任何内容。\n" +"\n" +"唯一的限制是每个键都必须是唯一的。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:159 +msgid "" +"Using a [code]for[/code] loop, you can use the key-value pairs to place " +"units on the board at the start of a game." +msgstr "" +"使用 [code]for[/code] 循环,您可以使用键值对在游戏开始时将单位放置在棋盘上。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:189 +msgid "" +"In the following practices, you will loop over dictionaries and process " +"their content." +msgstr "在以下实践中,您将遍历字典并处理其内容。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:197 +msgid "Displaying the inventory" +msgstr "显示库存" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:198 +msgid "" +"We use a dictionary to represent the player's inventory in this game. The " +"dictionary keys are the name of items, and they map to the number of items " +"that the player owns.\n" +"\n" +"You need to loop over the dictionary and display the name and amount of " +"every item in the inventory.\n" +"\n" +"To do so, call the [code]display_item()[/code] function. It takes two " +"arguments: the item name and the amount." +msgstr "" +"我们使用字典来表示玩家在这个游戏中的库存。 字典键是物品的名称,它们映射到玩家" +"拥有的物品数量。\n" +"\n" +"您需要遍历字典并显示库存中每个项目的名称和数量。\n" +"\n" +"为此,请调用 [code]display_item()[/code] 函数。 它有两个参数:项目名称和数" +"量。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:218 +msgid "" +"We need to display the player's inventory on the screen but lack the code to " +"do so. Use a loop to display every item." +msgstr "" +"我们需要在屏幕上显示玩家的物品栏,但缺少执行此操作的代码。 使用循环显示每个项" +"目。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:223 +msgid "Placing units on the board" +msgstr "将单元放置在板上" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:224 +msgid "" +"We have a dictionary named [code]units[/code] that maps a cell position on " +"the grid to a unit to put there.\n" +"\n" +"Using a for loop and the [code]place_unit()[/code] function, place every " +"unit in the units dictionary at the desired position on the game board." +msgstr "" +"我们有一个名为 [code]units[/code] 的字典,它将网格上的一个单元格位置映射到一" +"个要放在那里的单元。\n" +"\n" +"使用 for 循环和 [code]place_unit()[/code] 函数,将单位字典中的每个单位放置在" +"游戏板上所需的位置。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:242 +msgid "" +"We want to populate our game board with units at the start of every battle. " +"Loop over the dictionary to place units on the board." +msgstr "" +"我们希望在每场战斗开始时用单位填充我们的游戏板。 循环遍历字典以将单元放置在板" +"上。" + +#: course/lesson-26-looping-over-dictionaries/lesson.tres:246 +msgid "Looping over dictionaries" +msgstr "循环遍历字典" diff --git a/i18n/zh_Hans/lesson-27-value-types.po b/i18n/zh_Hans/lesson-27-value-types.po new file mode 100644 index 00000000..58aebe2f --- /dev/null +++ b/i18n/zh_Hans/lesson-27-value-types.po @@ -0,0 +1,310 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2022-06-12 11:07+0200\n" +"PO-Revision-Date: 2022-05-08 14:10+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-27-value-types/lesson.tres:13 +msgid "" +"In your code, values have a particular [i]type[/i]. You have already learned " +"about several: whole numbers, decimal numbers, strings, 2D vectors, arrays, " +"and dictionaries.\n" +"\n" +"The computer uses the type of a value to know which operations and functions " +"you can use with them.\n" +"\n" +"As a result, it's essential to understand types: they are not fully " +"compatible with one another, and misusing them will cause errors." +msgstr "" +"在您的代码中,值具有特定的 [i]type[/i]。 您已经了解了以下几种:整数、十进制" +"数、字符串、二维向量、数组和字典。\n" +"\n" +"计算机使用值的类型来了解您可以使用哪些操作和功能。\n" +"\n" +"因此,了解类型至关重要:它们彼此不完全兼容,滥用它们会导致错误。" + +#: course/lesson-27-value-types/lesson.tres:25 +msgid "A prime example" +msgstr "一个典型的例子" + +#: course/lesson-27-value-types/lesson.tres:27 +msgid "" +"You want to display the player's health in the interface. Your code tracks " +"health as a whole number, a value of type [code]int[/code] (short for " +"integer)." +msgstr "" +"您想在界面中显示玩家的健康状况。 您的代码将健康跟踪为一个整数,一个 " +"[code]int[/code] 类型的值(整数的缩写)。" + +#: course/lesson-27-value-types/lesson.tres:47 +msgid "" +"However, to display it on the player's screen, the computer wants text: it " +"needs a value of type [code]String[/code].\n" +"\n" +"You can concatenate two strings with the [code]+[/code] operator." +msgstr "" +"然而,为了在播放器的屏幕上显示它,计算机需要文本:它需要一个 [code]String[/" +"code] 类型的值。\n" +"\n" +"您可以使用 [code]+[/code] 运算符连接两个字符串。" + +#: course/lesson-27-value-types/lesson.tres:69 +msgid "So the following code looks like it could work at first glance." +msgstr "所以下面的代码乍一看似乎可以工作。" + +#: course/lesson-27-value-types/lesson.tres:89 +msgid "But when running the code, we get this strange error." +msgstr "但是在运行代码时,我们得到了这个奇怪的错误。" + +#: course/lesson-27-value-types/lesson.tres:109 +msgid "" +"It tells you you can't add values of type [code]String[/code] and [code]int[/" +"code]: they're incompatible.\n" +"\n" +"In that case, you need to convert the [code]health[/code] number into a " +"[code]String[/code]." +msgstr "" +"它告诉您不能添加 [code]String[/code] 和 [code]int[/code] 类型的值:它们不兼" +"容。\n" +"\n" +"在这种情况下,您需要将 [code]health[/code] 数字转换为 [code]String[/code]。" + +#: course/lesson-27-value-types/lesson.tres:119 +msgid "Converting values into strings" +msgstr "将值转换为字符串" + +#: course/lesson-27-value-types/lesson.tres:121 +msgid "" +"You can get the text representation of a value by calling the [code]str()[/" +"code] function (short for \"string\"). The function returns its argument as " +"a new [code]String[/code].\n" +"\n" +"You can use this function whenever you want to turn some number or vector " +"into text." +msgstr "" +"您可以通过调用 [code]str()[/code] 函数(“字符串”的缩写)来获取值的文本表示。 " +"该函数将其参数作为新的 [code]String[/code] 返回。\n" +"\n" +"每当您想将某个数字或向量转换为文本时,都可以使用此功能。" + +#: course/lesson-27-value-types/lesson.tres:143 +msgid "" +"In this case, it turns the number [code]100[/code] into the string " +"[code]\"100\"[/code]. Or whatever number [code]health[/code] is currently." +msgstr "" +"在这种情况下,它将数字 [code]100[/code] 转换为字符串 [code]\"100\"[/code]。 " +"或当前 [code]health[/code] 的任何数字。" + +#: course/lesson-27-value-types/lesson.tres:151 +msgid "Converting strings into numbers" +msgstr "将字符串转换为数字" + +#: course/lesson-27-value-types/lesson.tres:153 +msgid "" +"You can also convert strings into whole numbers or decimal numbers using " +"respectively the [code]int()[/code] and [code]float()[/code] functions.\n" +"\n" +"Those functions can convert what the player writes in a text field into a " +"number. For example, the number of potions to sell at once in a shop." +msgstr "" +"您还可以分别使用 [code]int()[/code] 和 [code]float()[/code] 函数将字符串转换" +"为整数或十进制数。\n" +"\n" +"这些函数可以将玩家在文本字段中写入的内容转换为数字。 例如,商店中一次出售的药" +"水数量。" + +#: course/lesson-27-value-types/lesson.tres:173 +msgid "Some types are partially compatible" +msgstr "某些类型部分兼容" + +#: course/lesson-27-value-types/lesson.tres:175 +msgid "" +"Most types are incompatible. For example, you can't directly add or multiply " +"an array with a number.\n" +"\n" +"However, some types are [i]partially[/i] compatible. For example, you can " +"multiply or divide a vector by a number. " +msgstr "" +"大多数类型不兼容。 例如,您不能直接将数组与数字相加或相乘。\n" +"\n" +"但是,某些类型 [i] 部分[/i] 兼容。 例如,您可以将向量乘以或除以数字。 " + +#: course/lesson-27-value-types/lesson.tres:197 +msgid "" +"It is possible because other developers defined that operation for you under " +"the hood.\n" +"\n" +"However, you cannot directly add or subtract a number to a vector. You'll " +"get an error. That's why, in earlier lessons, you had to access the sub-" +"variables of [code]position[/code] to add numbers to them." +msgstr "" +"这是可能的,因为其他开发人员在后台为您定义了该操作。\n" +"\n" +"但是,您不能直接在向量中添加或减去数字。 你会得到一个错误。 这就是为什么在前" +"面的课程中,您必须访问 [code]position[/code] 的子变量来为它们添加数字。" + +#: course/lesson-27-value-types/lesson.tres:207 +msgid "A surprising result" +msgstr "出人意料的结果" + +#: course/lesson-27-value-types/lesson.tres:209 +msgid "" +"Take the following division: [code]3/2[/code]. What result would you expect " +"to get? [code]1.5[/code]?" +msgstr "" +"采取以下划分:[code]3/2[/code]。 你希望得到什么结果? [code]1.5[/code]?" + +#: course/lesson-27-value-types/lesson.tres:229 +msgid "" +"Well, for the computer, the result of [code]3/2[/code] is [code]1[/code].\n" +"\n" +"Wait, what?!\n" +"\n" +"That's because, for the computer, the division of two whole numbers should " +"always result in a whole number.\n" +"\n" +"When you divide decimal numbers instead, you will get a decimal number as a " +"result." +msgstr "" +"那么,对于计算机来说,[code]3/2[/code] 的结果是 [code]1[/code]。\n" +"\n" +"等等,什么?!\n" +"\n" +"那是因为,对于计算机来说,两个整数相除应该总是得到一个整数。\n" +"\n" +"相反,当您将十进制数相除时,您将得到一个十进制数。" + +#: course/lesson-27-value-types/lesson.tres:255 +msgid "" +"Even if it's just a [code]0[/code], adding a decimal place tells the " +"computer we want decimal numbers.\n" +"\n" +"This shows you how mindful you need to be with types. Otherwise, you will " +"get unexpected results. It can get pretty serious: number errors can lead to " +"bugs like controls not working as intended or charging the wrong price to " +"players. " +msgstr "" +"即使它只是一个 [code]0[/code],添加一个小数位也会告诉计算机我们想要十进制" +"数。\n" +"\n" +"这向您展示了对类型的关注程度。 否则,你会得到意想不到的结果。 它可能会变得非" +"常严重:数字错误会导致诸如控件无法按预期工作或向玩家收取错误价格等错误。 " + +#: course/lesson-27-value-types/lesson.tres:265 +msgid "Understanding and mastering types is a key skill for developers" +msgstr "理解和掌握类型是开发人员的一项关键技能" + +#: course/lesson-27-value-types/lesson.tres:267 +msgid "" +"Programming beginners often struggle due to the lack of understanding of " +"types.\n" +"\n" +"Languages like GDScript hide the types from you by default. As a result, if " +"you don't understand that some are incompatible, you can get stuck when " +"facing type-related errors.\n" +"\n" +"You'll want to keep that in mind in your learning journey. When writing " +"code, you will need to understand everything that's happening.\n" +"\n" +"That said, let's practice some type conversions." +msgstr "" +"由于缺乏对类型的理解,编程初学者经常遇到困难。\n" +"\n" +"默认情况下,像 GDScript 这样的语言会隐藏类型。 结果,如果您不了解某些不兼容的" +"内容,则在遇到与类型相关的错误时可能会卡住。\n" +"\n" +"您需要在学习过程中牢记这一点。 编写代码时,您需要了解正在发生的一切。\n" +"\n" +"也就是说,让我们练习一些类型转换。" + +#: course/lesson-27-value-types/lesson.tres:281 +msgid "Displaying the player's health and energy" +msgstr "显示玩家的健康和能量" + +#: course/lesson-27-value-types/lesson.tres:282 +msgid "" +"We want to display the player's energy in the user interface.\n" +"\n" +"Currently, our code has a type error. We're trying to display a whole number " +"while the [code]display_energy()[/code] function expects a string.\n" +"\n" +"Using the [code]str()[/code] function, clear the type error and make the " +"energy amount display on the interface.\n" +"\n" +"You can't change the [code]energy[/code] variable definition: setting it to " +"[code]\"80\"[/code] would break the rest of the game's code. You must " +"convert the value when calling [code]display_energy()[/code]." +msgstr "" +"我们希望在用户界面中显示玩家的能量。\n" +"\n" +"目前,我们的代码存在类型错误。 我们试图显示一个整数,而 " +"[code]display_energy()[/code] 函数需要一个字符串。\n" +"\n" +"使用[code]str()[/code]函数,清除类型错误,并在界面上显示电量。\n" +"\n" +"您无法更改 [code]energy[/code] 变量定义:将其设置为 [code]\"80\"[/code] 会破" +"坏游戏的其余代码。 调用 [code]display_energy()[/code] 时必须转换值。" + +#: course/lesson-27-value-types/lesson.tres:300 +msgid "" +"We want to display the player's energy in the interface but face a type " +"error. Use your new knowledge to fix it." +msgstr "我们想在界面中显示玩家的能量,但遇到类型错误。 用你的新知识来修复它。" + +#: course/lesson-27-value-types/lesson.tres:305 +msgid "Letting the player type numbers" +msgstr "让玩家输入数字" + +#: course/lesson-27-value-types/lesson.tres:306 +msgid "" +"In our game's shops, we want to let the player type numbers to select the " +"number of items they want to buy or sell.\n" +"\n" +"We need to know the number of items as an [code]int[/code], but the computer " +"reads the player's input as a [code]String[/code].\n" +"\n" +"Your task is to convert the player's input into numbers for the shop's code " +"to work.\n" +"\n" +"Using the [code]int()[/code] function, convert the player's input into a " +"whole number and store the result in the [code]item_count[/code] variable." +msgstr "" +"在我们的游戏商店中,我们想让玩家输入数字来选择他们想要购买或出售的物品数" +"量。\n" +"\n" +"我们需要以 [code]int[/code] 的形式知道项目的数量,但计算机将玩家的输入读取为 " +"[code]String[/code]。\n" +"\n" +"您的任务是将玩家的输入转换为数字,以便商店的代码能够正常工作。\n" +"\n" +"使用 [code]int()[/code] 函数,将玩家的输入转换为整数并将结果存储在 " +"[code]item_count[/code] 变量中。" + +#: course/lesson-27-value-types/lesson.tres:326 +msgid "" +"We want the player to choose the number of items they buy or sell in our " +"game's shops. But right now, all we get are type errors." +msgstr "" +"我们希望玩家选择他们在游戏商店中购买或出售的物品数量。 但是现在,我们得到的只" +"是类型错误。" + +#: course/lesson-27-value-types/lesson.tres:330 +msgid "Value types" +msgstr "值类型" diff --git a/i18n/zh_Hans/lesson-28-specifying-types.po b/i18n/zh_Hans/lesson-28-specifying-types.po new file mode 100644 index 00000000..d7219df5 --- /dev/null +++ b/i18n/zh_Hans/lesson-28-specifying-types.po @@ -0,0 +1,271 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2022-05-08 14:10+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-28-specifying-types/lesson.tres:13 +msgid "" +"By default, GDScript is what we call a dynamically-typed language. That " +"means that you can just write variables, assign them a value with a number, " +"and assign them another value with a different type.\n" +"\n" +"Unlike in some other languages, in GDScript, the following code is valid." +msgstr "" +"默认情况下,GDScript 就是我们所说的动态类型语言。 这意味着您可以只编写变量," +"为它们分配一个带有数字的值,然后为它们分配另一个具有不同类型的值。\n" +"\n" +"与其他一些语言不同,在 GDScript 中,以下代码是有效的。" + +#: course/lesson-28-specifying-types/lesson.tres:35 +msgid "" +"But this feature often causes problems down the line. Let's take one example." +msgstr "但是此功能通常会导致问题。 让我们举一个例子。" + +#: course/lesson-28-specifying-types/lesson.tres:43 +msgid "Cell size: decimal number, or 2D vector?" +msgstr "格子大小:十进制数还是二维向量?" + +#: course/lesson-28-specifying-types/lesson.tres:45 +#, fuzzy +msgid "" +"Games use grids all the time, be it for grid-based gameplay or to make " +"algorithms faster.\n" +"\n" +"When working with grids, you need to convert grid coordinates into positions " +"in the game world all the time. To do so, you give each cell a size in " +"pixels.\n" +"\n" +"You'll likely pick one of two types for that: [code]float[/code] or " +"[code]Vector2[/code], because pixel positions on the screen use " +"[code]Vector2[/code] coordinates.\n" +"\n" +"Either of those two values would be fine:" +msgstr "" +"游戏一直都在使用网格,无论是基于网格的游戏玩法还是让算法更快。\n" +"\n" +"使用网格时,您需要始终将网格坐标转换为游戏世界中的位置。 为此,您需要为每个单" +"元格指定一个像素大小。\n" +"\n" +"您可能会为此选择以下两种类型之一:[code]float[/code] 或 [code]Vector2[/" +"code]。\n" +"\n" +"这两个值中的任何一个都可以:" + +#: course/lesson-28-specifying-types/lesson.tres:71 +msgid "" +"Using a [code]Vector2[/code] could simplify some calculations. For example, " +"when converting grid coordinates to game world coordinates." +msgstr "" +"使用 [code]Vector2[/code] 可以简化一些计算。 例如,将网格坐标转换为游戏世界坐" +"标时。" + +#: course/lesson-28-specifying-types/lesson.tres:91 +msgid "" +"In this example, because both [code]cell[/code] and [code]cell_size[/code] " +"are [code]Vector2[/code] values, we can add them.\n" +"\n" +"However, if [code]cell_size[/code] is a [code]float[/code], we will get a " +"type error." +msgstr "" +"在这个例子中,因为 [code]cell[/code] 和 [code]cell_size[/code] 都是 " +"[code]Vector2[/code] 值,我们可以添加它们。\n" +"\n" +"但是,如果 [code]cell_size[/code] 是 [code]float[/code],我们将收到类型错误。" + +#: course/lesson-28-specifying-types/lesson.tres:123 +msgid "" +"Worse: due to dynamic typing, we won't get an error [i]right away[/i]. We " +"will only get the error when calling [code]grid_to_world(Vector2(1, 1))[/" +"code].\n" +"\n" +"And that's a big problem." +msgstr "" +"更糟糕的是:由于动态类型,我们不会立即得到错误 [i][/i]。 我们只会在调用 " +"[code]grid_to_world(Vector2(1, 1))[/code] 时得到错误。\n" +"\n" +"这是一个大问题。" + +#: course/lesson-28-specifying-types/lesson.tres:135 +msgid "" +"Because we're learning, we only have small code examples in this course. But " +"your games' code will get long and split into many files. When coding, you " +"often forget about the code you wrote several weeks ago.\n" +"\n" +"And with a lot of code, it could take [i]hours[/i] of play before players " +"trigger a type error in your code." +msgstr "" +"因为我们正在学习,所以我们在本课程中只有小代码示例。 但是您的游戏代码会变长并" +"分成许多文件。 编码时,您经常会忘记几周前编写的代码。\n" +"\n" +"并且使用大量代码,玩家可能需要 [i] 小时 [/i] 的播放时间才能触发代码中的类型错" +"误。" + +#: course/lesson-28-specifying-types/lesson.tres:145 +msgid "Using type hints" +msgstr "使用类型提示" + +#: course/lesson-28-specifying-types/lesson.tres:147 +msgid "" +"Fortunately, GDScript has optional [i]type hints[/i].\n" +"\n" +"Type hints let the computer know the value type you want for variables and " +"report errors before running the code.\n" +"\n" +"To specify the type a variable can accept, you can write a colon and a type " +"after the name when defining a new variable." +msgstr "" +"幸运的是,GDScript 有可选的 [i] 类型提示[/i]。\n" +"\n" +"类型提示让计算机知道您想要的变量值类型并在运行代码之前报告错误。\n" +"\n" +"要指定变量可以接受的类型,可以在定义新变量时在名称后写一个冒号和一个类型。" + +#: course/lesson-28-specifying-types/lesson.tres:171 +msgid "" +"You could tell the computer you want [code]cell_size[/code] only to accept " +"[code]Vector2[/code] values like so." +msgstr "" +"您可以告诉计算机您希望 [code]cell_size[/code] 只接受 [code]Vector2[/code] 这" +"样的值。" + +#: course/lesson-28-specifying-types/lesson.tres:191 +msgid "" +"If you try to replace the [code]cell_size[/code] with a value of another " +"type later, the computer will not let you." +msgstr "" +"如果您稍后尝试将 [code]cell_size[/code] 替换为其他类型的值,计算机将不会让您" +"这样做。" + +#: course/lesson-28-specifying-types/lesson.tres:219 +msgid "Letting the computer figure it out" +msgstr "让电脑自己解决" + +#: course/lesson-28-specifying-types/lesson.tres:221 +msgid "" +"GDScript comes with a feature called [i]type inference[/i]. In many cases, " +"but not all, the computer can figure out the type of a variable for you.\n" +"\n" +"To do so, you write [code]:=[/code], without the type. The computer will set " +"the type using the value after the equal sign. We could make " +"[code]cell_size[/code] a variable of type [code]Vector2[/code] like so:" +msgstr "" +"GDScript 带有一个称为 [i]type inference[/i] 的功能。 在许多情况下,但不是全部" +"情况下,计算机可以为您找出变量的类型。\n" +"\n" +"为此,您编写 [code]:=[/code],不带类型。 计算机将使用等号后面的值设置类型。 " +"我们可以将 [code]cell_size[/code] 设为 [code]Vector2[/code] 类型的变量,如下" +"所示:" + +#: course/lesson-28-specifying-types/lesson.tres:243 +msgid "" +"This takes little typing, yet you get the benefits of using type hints, like " +"the computer reporting errors better and faster." +msgstr "" +"这需要很少的输入,但您会获得使用类型提示的好处,例如计算机更好更快地报告错" +"误。" + +#: course/lesson-28-specifying-types/lesson.tres:251 +msgid "Why bother to add hints?" +msgstr "为什么要添加提示?" + +#: course/lesson-28-specifying-types/lesson.tres:253 +msgid "" +"When you give the language hints like that, it will [i]prevent[/i] major " +"type errors. When you work in Godot, you will see that the computer can " +"report issues as you write the code. It makes the benefit even greater.\n" +"\n" +"Type hints can also help improve the readability of your code. It can help " +"to put more information directly in the code. As we saw, types are essential " +"when coding, and when using type hints, the computer will add them to the " +"engine's built-in code documentation system.\n" +"\n" +"There's an incredible third benefit for you: by using type hints, you will " +"learn types much faster. It's excellent for learning.\n" +"\n" +"In the following practices, you will write the correct type hints to make " +"the code error-free." +msgstr "" +"当你给出这样的语言提示时,它将[i]防止[/i]主要类型错误。 当您在 Godot 中工作" +"时,您会看到计算机可以在您编写代码时报告问题。 它使收益更大。\n" +"\n" +"类型提示还可以帮助提高代码的可读性。 它可以帮助将更多信息直接放入代码中。 正" +"如我们所看到的,类型在编码时是必不可少的,当使用类型提示时,计算机会将它们添" +"加到引擎的内置代码文档系统中。\n" +"\n" +"还有一个令人难以置信的第三个好处:通过使用类型提示,您将更快地学习类型。 它非" +"常适合学习。\n" +"\n" +"在以下实践中,您将编写正确的类型提示以使代码无错误。" + +#: course/lesson-28-specifying-types/lesson.tres:267 +msgid "Add the correct type hints to variables" +msgstr "向变量添加正确的类型提示" + +#: course/lesson-28-specifying-types/lesson.tres:268 +msgid "" +"Our variables get the correct values but not the right hints. Using your " +"type-fu, add the correct type names in the variable definitions.\n" +"\n" +"You need to write the type name between the colon and the equal sign.\n" +"\n" +"Note: You cannot use type inference in this practice. You need to write the " +"type name in full." +msgstr "" +"我们的变量得到了正确的值,但没有得到正确的提示。 使用您的 type-fu,在变量定义" +"中添加正确的类型名称。\n" +"\n" +"您需要在冒号和等号之间写入类型名称。\n" +"\n" +"注意:您不能在此实践中使用类型推断。 您需要完整填写类型名称。" + +#: course/lesson-28-specifying-types/lesson.tres:284 +msgid "" +"Our variables have the wrong type hints, causing errors. Correct them to " +"make the code run." +msgstr "我们的变量有错误的类型提示,导致错误。 更正它们以使代码运行。" + +#: course/lesson-28-specifying-types/lesson.tres:289 +msgid "Fix the values to match the type hints" +msgstr "修复值以匹配类型提示" + +#: course/lesson-28-specifying-types/lesson.tres:290 +msgid "" +"It is the other way around in this practice: the type hints are fine, but " +"the values are not.\n" +"\n" +"Your task is to fix the values after the equal sign, so they match the type " +"hint of each variable." +msgstr "" +"在这种做法中情况正好相反:类型提示很好,但值不是。\n" +"\n" +"您的任务是修复等号后的值,使它们与每个变量的类型提示相匹配。" + +#: course/lesson-28-specifying-types/lesson.tres:304 +msgid "" +"This time, it's the other way around: variables have the correct type hints " +"but the wrong values. Change the values to make the code run." +msgstr "" +"这一次,情况正好相反:变量有正确的类型提示,但有错误的值。 更改值以使代码运" +"行。" + +#: course/lesson-28-specifying-types/lesson.tres:308 +msgid "Specifying types with type hints" +msgstr "使用类型提示指定类型" diff --git a/i18n/zh_Hans/lesson-3-standing-on-shoulders-of-giants.po b/i18n/zh_Hans/lesson-3-standing-on-shoulders-of-giants.po new file mode 100644 index 00000000..f416c23a --- /dev/null +++ b/i18n/zh_Hans/lesson-3-standing-on-shoulders-of-giants.po @@ -0,0 +1,438 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2022-05-09 15:18+0000\n" +"Last-Translator: Haoyu Qiu \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:14 +msgid "" +"As programmers, we rely on a lot of code created by others before us.\n" +"\n" +"Every programming language comes with a wealth of features created by other " +"programmers to save you time.\n" +"\n" +"We call a bundle of code created by fellow developers a [i]library[/i].\n" +"\n" +"It's a bunch of code sitting there, waiting for you to use it.\n" +"\n" +"Game engines like Godot bundle many libraries together. They provide a " +"massive toolset to save you time when making games." +msgstr "" +"作为程序员,我们依赖于我们之前的其他人创建的大量代码。\n" +"\n" +"每种编程语言都具有其他程序员创建的大量功能,可以节省您的时间。\n" +"\n" +"我们将由其他开发人员创建的代码包称为[i]库[/i]。\n" +"\n" +"它是一堆代码,等待你使用它。\n" +"\n" +"像 Godot 这样的游戏引擎将许多库捆绑在一起。它们提供了一个庞大的工具集,可以在" +"制作游戏时节省您的时间。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:30 +msgid "You'll always use a lot of existing code" +msgstr "您将始终使用大量现有代码" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:32 +msgid "" +"When coding, you always use a lot of code from developers who came before " +"you.\n" +"\n" +"In a moment, you'll write your first code. You'll use [i]functions[/i] " +"created by the Godot developers.\n" +"\n" +"A function is a list of instructions with an exact name. We can tell the " +"computer to execute all the instructions in sequence with that name." +msgstr "" +"在编码时,您总是使用大量来自您之前的开发人员的代码。\n" +"\n" +"稍后,您将编写您的第一个代码。 您将使用 Godot 开发人员创建的[i]函数[/i]。\n" +"\n" +"函数是具有确切名称的指令列表。 我们可以告诉计算机使用该名称按顺序执行所有指" +"令。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:44 +msgid "Calling functions" +msgstr "调用函数" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:46 +msgid "" +"When you tell the computer to execute a function, we say you [i]call[/i] the " +"function.\n" +"\n" +"To call a function, you write its [i]exact[/i] name followed by an open and " +"closed parenthesis. To call the function named \"show\", you would write " +"[code]show()[/code]." +msgstr "" +"当你告诉计算机执行一个函数时,我们说你[i]调用[/i]这个函数。\n" +"\n" +"要调用一个函数,你可以写下它的[i]确切的[/i]名称,后跟一个左括号和右括号。 要" +"调用名为“show”的函数,您可以编写 [code]show()[/code]。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:58 +msgid "" +"In Godot, calling [code]show()[/code] makes something visible, like a " +"character or item. The complementary [code]hide()[/code] function hides the " +"entity.\n" +"\n" +"Once an entity is visible, calling [code]show()[/code] again doesn't have " +"any effect.\n" +"\n" +"Similarly, once you hide something, calling [code]hide()[/code] again " +"doesn't change anything.\n" +"\n" +"[i]Click the Run button on any example below to execute the code listing.[/i]" +msgstr "" +"在 Godot 中,调用 [code]show()[/code] 可以使某些东西可见,例如字符或项目。 互" +"补的 [code]hide()[/code] 函数隐藏实体。\n" +"\n" +"一旦实体可见,再次调用 [code]show()[/code] 不会有任何效果。\n" +"\n" +"同样,一旦你隐藏了某些东西,再次调用 [code]hide()[/code] 并不会改变任何东" +"西。\n" +"\n" +"[i]单击下面任何示例上的“运行”按钮以执行代码清单。[/i]" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:84 +msgid "" +"In the code listing above, we write the function call [code]hide()[/code] in " +"a new function named [code]run()[/code] to execute the code. Creating a new " +"function is necessary to execute instructions in GDScript." +msgstr "" +"在上面的代码清单中,我们在一个名为 [code]run()[/code] 的新函数中编写了函数调" +"用 [code]hide()[/code] 来执行代码。 在 GDScript 中执行指令需要创建一个新函" +"数。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:92 +msgid "Can you tell me more about that \"run()\" function?" +msgstr "你能告诉我更多关于“run()”函数的信息吗?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:94 +msgid "" +"In GDScript, unlike in some other languages, we must write our code inside " +"of custom functions.\n" +"\n" +"You'll learn what functions are and how they work in great detail in the " +"course, but here's a quick look at them if you're curious.\n" +"\n" +"A function is a bundle of code you can execute anytime. It's a named list of " +"instructions.\n" +"\n" +"To define a function, you need to write the [code]func[/code] keyword, the " +"function's name, parentheses, and a colon: [code]func run():[/code] defines " +"a function named [code]run()[/code].\n" +"\n" +"You then go to the next line to write the function's body. That's the " +"instructions of the function.\n" +"\n" +"Notice how each instruction starts with a leading [code]Tab[/code] " +"character. The computer uses that to know which lines are part of the " +"function.\n" +"\n" +"Throughout the course, you'll see many functions called [code]run()[/code].\n" +"\n" +"Those are functions we created to give you interactive examples." +msgstr "" +"在 GDScript 中,与其他一些语言不同,我们必须在自定义函数中编写代码。\n" +"\n" +"您将在课程中详细了解函数是什么以及它们如何工作,但如果您好奇,可以快速浏览一" +"下它们。\n" +"\n" +"函数是您可以随时执行的代码包。 这是一个命名的指令列表。\n" +"\n" +"要定义一个函数,您需要编写 [code]func[/code] 关键字、函数名称、括号和冒号: " +"[code]func run():[/code] 定义了一个名为 [code]run()[/code] 的函数。\n" +"\n" +"然后转到下一行来编写函数体,就是该函数中所包含的指令。\n" +"\n" +"请注意每条指令如何以前导[code]制表符[/code]开头。 计算机使用它来知道哪些行是" +"函数的一部分。\n" +"\n" +"在整个课程中,您将看到许多称为 [code]run()[/code] 的函数。\n" +"\n" +"这些是我们为给您提供交互式示例而创建的函数。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:116 +msgid "Function arguments" +msgstr "函数参数" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:118 +#, fuzzy +msgid "" +"We use parentheses to call functions because you can give the function " +"[i]arguments[/i] inside the parentheses when calling it.\n" +"\n" +"Here's a [i]sprite[/i] standing straight. If we call the [code]rotate(0.3)[/" +"code] function, the character [i]sprite[/i] turns by 0.3 radians." +msgstr "" +"我们使用括号来调用函数,因为您可以在调用函数时在括号内给出函数的[i]参数[/" +"i]。\n" +"\n" +"这是一个[i]精灵[/i]笔直站立的画面。 如果我们调用 [code]rotate(0.3)[/code] 函" +"数,角色[i]精灵[/i]会转动 0.3 个单位。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:140 +msgid "" +"The [code]0.3[/code] part between the parentheses is the function's " +"[i]argument[/i].\n" +"\n" +"Arguments are values (numbers, bits of text, and more) that change how the " +"function behaves.\n" +"\n" +"Arguments let you fine-tune the effect of the function call. They can be " +"optional at times, but functions often require arguments in order to work.\n" +"\n" +"For example, calling [code]rotate()[/code] without any argument would result " +"in an error. Without an argument, Godot doesn't know by [i]how much[/i] you " +"intend to rotate the [i]sprite[/i].\n" +"\n" +"Don't worry about memorizing what arguments each function requires or " +"accepts! As a programmer, the documentation will always be close by for you " +"to refer to.\n" +"\n" +"Finally, notice how we use a dot in the number [code]0.3[/code] above: you " +"need to use a dot like this to represent decimal numbers. You can't use " +"commas as they have a different purpose in code." +msgstr "" +"括号之间的 [code]0.3[/code] 部分是函数的[i]参数[/i]。\n" +"\n" +"参数是改变函数行为方式的值(数字、文本位等)。\n" +"\n" +"参数可让您微调函数调用的效果。 它们有时是可选的,但函数通常需要参数才能工" +"作。\n" +"\n" +"例如,不带任何参数调用 [code]rotate()[/code] 会导致错误。 如果没有参数," +"Godot 不知道你打算把[i]精灵[/i]旋转[i]多少度[/i]。\n" +"\n" +"不要担心记住每个函数需要或接受的参数!作为程序员,文档将始终在您身边供您参" +"考。\n" +"\n" +"最后,请注意我们如何在上面的数字 [code]0.3[/code] 中使用点:您需要使用这样的" +"点来表示十进制数。 您不能使用逗号,因为它们在代码中有不同的用途。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:158 +msgid "What are radians?" +msgstr "什么是弧度?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:160 +msgid "" +"The value of [code]0.3[/code] is an angle in [i]radians[/i]. In daily life, " +"we're used to measuring angles in degrees. The radian is another scale " +"commonly used in video games and math.\n" +"\n" +"You can convert radians into degrees by multiplying them by 180 and dividing " +"them by PI:\n" +"\n" +"[code]degrees = radians * 180 / PI[/code]\n" +"\n" +"An angle of [code]PI[/code] radians corresponds to [code]180[/code] degrees. " +"And [code]2 * PI[/code] is a full turn: [code]360[/code] degrees.\n" +"\n" +"[b]How do radians work exactly?[/b]\n" +"\n" +"Radians are a way to measure angles based on the radius of a circle.\n" +"\n" +"To get the angle in radians, you take the circle's radius and wrap it around " +"the circle. That angle is [code]1[/code] radian because you are wrapping the " +"radius [code]1[/code] time around the circle.\n" +"\n" +"Because the perimeter of a circle is [code]2 * PI * radius[/code], a full " +"turn (360°) corresponds to [code]2 * PI[/code] radians: you need to wrap the " +"radius of a circle [code]2 * PI[/code] times around the circle to make a " +"full circle." +msgstr "" +"[code]0.3[/code] 的值是以 [i]radians[/i] 为单位的角度。在日常生活中,我们习惯" +"于以度数来测量角度。弧度是视频游戏和数学中常用的另一种尺度。\n" +"\n" +"您可以通过将弧度乘以 180 再除以 PI 来将弧度转换为度数:\n" +"\n" +"[code]度数 = 弧度 * 180 / PI[/code]\n" +"\n" +"[code]PI[/code] 弧度的角度对应于 [code]180[/code] 度。而 [code]2 * PI[/code] " +"是一个完整的转角:[code]360[/code] 度。\n" +"\n" +"[b]弧度究竟是如何工作的?[/b]\n" +"\n" +"弧度是一种根据圆的半径测量角度的方法。\n" +"\n" +"要获得以弧度表示的角度,请取圆的半径并将其环绕在圆周围。该角度是 [code]1[/" +"code] 弧度,因为您将半径 [code]1[/code] 时间绕圆。\n" +"\n" +"因为圆的周长是[code]2 * PI * radius[/code],所以一整圈(360°)对应的是" +"[code]2 * PI[/code]弧度:你需要把圆的半径包起来[code]2 * PI[/code] 绕圈转一" +"圈。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:182 +msgid "What does the code below do?" +msgstr "下面的代码有什么作用?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:183 +msgid "[code]show()[/code]" +msgstr "[code]show()[/code]" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:185 +msgid "" +"Both answers were right! Technically, the code calls the [code]show()[/code] " +"function. And doing so makes the game entity visible." +msgstr "" +"两个答案都是对的! 从技术上讲,代码调用 [code]show()[/code] 函数。 这样做会使" +"游戏实体可见。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 +#, fuzzy +msgid "It calls the function named \"show\"." +msgstr "它调用名为“show.”的函数" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:186 +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:187 +msgid "It makes the entity (like a game character or a sprite) visible." +msgstr "它使实体(如游戏角色或精灵)可见。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:196 +#, fuzzy +msgid "" +"Another example: With the [code]move_local_x()[/code] function, you can move " +"the character to its left and right. The function takes one argument: a " +"number of pixels to offset the entity.\n" +"\n" +"The complementary function [code]move_local_y()[/code] makes the character " +"move up and down.\n" +"\n" +"This is one way to move a character in a game, although we'll see more " +"powerful ways to do this later." +msgstr "" +"另一个例子:使用 [code]move_local_x()[/code] 函数,您可以将字符左右移动。 该" +"函数采用一个参数:偏移实体的像素数。\n" +"\n" +"补充函数 [code]move_local_y()[/code] 使 [i]sprite[/i] 上下移动。\n" +"\n" +"这是在游戏中移动角色的一种方法,尽管稍后我们会看到更强大的方法来做到这一点。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:218 +msgid "Why move_local_y(20) moves the character down" +msgstr "为什么 move_local_y(20) 将角色向下移动" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:220 +msgid "" +"With positive values ([code]20[/code]), the code above moves the robot to " +"the right and down.\n" +"\n" +"This is probably different than what you studied at school: in math classes, " +"the horizontal axis points to the right, like here, but the vertical axis " +"points up.\n" +"\n" +"In video games, and generally in 2D computer graphics, the vertical axis " +"points down instead. So whenever you move something on the Y-axis with a " +"positive value, it'll move [i]down[/i]." +msgstr "" +"对于正值([code]20[/code]),上面的代码将机器人向右和向下移动。\n" +"\n" +"这可能与您在学校学习的不同:在数学课上,水平轴指向右侧,就像这里一样,但垂直" +"轴指向上方。\n" +"\n" +"在视频游戏中,通常在 2D 计算机图形中,垂直轴指向下方。 所以每当你在 Y 轴上移" +"动一个正值的东西时,它就会移动 [i]down[/i]。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:232 +msgid "How do you call a function?" +msgstr "你如何调用一个函数?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:233 +msgid "What is the syntax you use to call a function in general?" +msgstr "您通常用来调用函数的语法是什么?" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:235 +msgid "" +"To call a function, you need to write its exact name followed by an opening " +"and a closing parenthesis.\n" +"\n" +"If the function requires one or more [i]arguments[/i], you add them inside " +"the parentheses. Whether you need to do that or not depends on the function." +msgstr "" +"要调用函数,您需要写下它的确切名称,后跟一个左括号和一个右括号。\n" +"\n" +"如果函数需要一个或多个 [i] 参数[/i],则将它们添加到括号内。 是否需要这样做取" +"决于功能。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:238 +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:239 +msgid "You write its name followed by an opening and a closing parenthesis." +msgstr "你写它的名字,后跟一个左括号和一个右括号。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:238 +msgid "You write its name followed by a colon." +msgstr "你写它的名字,后跟一个冒号。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:238 +msgid "" +"You write a value, like a number, followed by an opening and a closing " +"parenthesis." +msgstr "你写一个值,比如一个数字,后跟一个左括号和一个右括号。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:246 +msgid "Make The Character Visible" +msgstr "使角色可见" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:247 +msgid "" +"Our robot character's invisible! Call the [code]show()[/code] function to " +"make it appear.\n" +"\n" +"Please call [code]show()[/code] inside the [code]run()[/code] function, on " +"line [code]2[/code], and keep the [code]Tab[/code] character at the start of " +"the line. The computer needs that to understand your code." +msgstr "" +"我们的机器人角色是隐形的! 调用 [code]show()[/code] 函数使其出现。\n" +"\n" +"请在 [code]run()[/code] 函数内调用 [code]show()[/code],在 [code]2[/code] " +"行,并保持 [code]Tab[/code] 字符为 行的开始。 计算机需要它来理解您的代码。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:259 +msgid "The robot's invisible! Call a function to bring it back." +msgstr "机器人看不见! 调用函数将其恢复。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:264 +msgid "Make the Robot Upright" +msgstr "使机器人直立" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:265 +msgid "" +"The robot was turned by [code]-0.5[/code] radians. You need to make it " +"upright by calling the [code]rotate()[/code] function.\n" +"\n" +"Please call [code]rotate()[/code] inside the [code]run()[/code] function, on " +"line [code]2[/code], and keep the [code]Tab[/code] character at the start of " +"the line. The computer needs that to understand your code." +msgstr "" +"机器人转动了 [code]-0.5[/code] 弧度。 您需要通过调用 [code]rotate()[/code] 函" +"数使其直立。\n" +"\n" +"请在 [code]run()[/code] 函数内调用 [code]rotate()[/code],在 [code]2[/code] " +"行,并将 [code]Tab[/code] 字符保持在 行的开始。 计算机需要它来理解您的代码。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:277 +msgid "" +"The robot is turned sideways. Help it straighten up with a function call." +msgstr "机器人侧身。 通过函数调用帮助它理顺。" + +#: course/lesson-3-standing-on-shoulders-of-giants/lesson.tres:281 +msgid "We Stand on the Shoulders of Giants" +msgstr "我们站在巨人的肩膀上" diff --git a/i18n/zh_Hans/lesson-4-drawing-a-rectangle.po b/i18n/zh_Hans/lesson-4-drawing-a-rectangle.po new file mode 100644 index 00000000..a74e580a --- /dev/null +++ b/i18n/zh_Hans/lesson-4-drawing-a-rectangle.po @@ -0,0 +1,309 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2022-06-19 11:18+0000\n" +"Last-Translator: adadaadadade <272169607@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.13.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:14 +msgid "" +"We'll use code created by others like we did in the previous lesson. This " +"time, we'll solve a more complicated problem: drawing shapes." +msgstr "" +"我们将使用其他人创建的代码,就像我们在上一课中所做的那样。 这一次,我们将解决" +"一个更复杂的问题:绘制形状。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:22 +msgid "Meet the turtle" +msgstr "遇见乌龟" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:24 +msgid "" +"We present you: the turtle! We created the turtle to teach you how to call " +"functions." +msgstr "我们向您介绍:乌龟! 我们创建了海龟来教你如何调用函数。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:44 +#, fuzzy +msgid "" +"The turtle is a little machine that moves forward, turns, and draws lines " +"along its path.\n" +"\n" +"To make it draw, you give it a list of instructions: on each code line, you " +"call one specific function.\n" +"\n" +"We prepared several functions for you:\n" +"\n" +"- [code]move_forward(pixels)[/code] makes the turtle move forward over a " +"given distance in [i]pixels[/i]. \n" +"- [code]turn_right(degrees)[/code] makes the turtle turn clockwise by a " +"precise amount of [i]degrees[/i].\n" +"- [code]turn_left(degrees)[/code] works the same as [code]turn_right(degrees)" +"[/code], except the turtle turns counter-clockwise.\n" +"\n" +"You'll use these functions the same way you used [code]rotate()[/code] " +"before.\n" +"\n" +"The turtle draws a white line as it moves. We'll use this line to draw " +"shapes.\n" +"\n" +"For example, to move the turtle 200 pixels, you would write " +"[code]move_forward(200)[/code]." +msgstr "" +"乌龟是一个小机器,它会向前移动、转动并沿着它的路径画线。\n" +"\n" +"为了让它绘制,你给它一个指令列表:在每一行代码上,你调用一个特定的函数。\n" +"\n" +"我们为您准备了几个功能:\n" +"\n" +"- [code]move_forward(pixels)[/code] 使海龟向前移动 [i]pixels[/i] 中的给定距" +"离。\n" +"- [code]turn_right(degrees)[/code] 使海龟向右转动精确的 [i]degrees[/i]。\n" +"- [code]turn_left(degrees)[/code] 与 [code]turn_right(degrees)[/code] 相同," +"只是海龟向左转。\n" +"\n" +"您将像以前使用 [code]rotate()[/code] 一样使用这些函数。\n" +"\n" +"乌龟在移动时会画一条白线。 我们将使用这条线来绘制形状。\n" +"\n" +"例如,要将海龟移动 200 像素,您可以编写 [code]move_forward(200)[/code]。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:76 +msgid "Turning left and right" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:78 +msgid "" +"The functions [code]turn_left()[/code] and [code]turn_right()[/code] work " +"the same.\n" +"\n" +"To turn 45 degrees to the right, you would write [code]turn_right(45)[/" +"code].\n" +"\n" +"If we call [code]turn_right(45)[/code], the turtle turns 45 degrees to the " +"right before moving on to the next instruction." +msgstr "" +"[code]turn_left()[/code] 和 [code]turn_right()[/code] 功能相同。\n" +"\n" +"要向右转 45 度,可以编写 [code]turn_right(45)[/code]。\n" +"\n" +"如果我们调用 [code]turn_right(45)[/code],海龟会向右转 45 度,然后继续执行下" +"一条指令。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:102 +msgid "" +"Using these instructions, we can make any two-dimensional shape we like!\n" +"\n" +"Try to understand the example below. \n" +"\n" +"In the next practice, you'll use the functions we saw above to first draw a " +"corner, then a rectangle like this one." +msgstr "" +"使用这些说明,我们可以制作任何我们喜欢的二维形状!\n" +"\n" +"试着理解下面的例子。\n" +"\n" +"在下一个练习中,您将使用我们在上面看到的函数首先绘制一个角,然后绘制一个像这" +"样的矩形。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:124 +msgid "In the function call below, which part is the argument?" +msgstr "在下面的函数调用中,哪一部分是函数参数?" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:125 +msgid "[code]move_forward(30)[/code]" +msgstr "[code]move_forward(30)[/code]" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:127 +msgid "" +"A function's arguments are all the values inside the parentheses. In this " +"case, there's only one, but there can be multiple separated by commas.\n" +"\n" +"In this case, [code]move_forward[/code] is the function's name and [code]30[/" +"code] is the argument.\n" +"\n" +"This function call will make the turtle move forward by [code]30[/code] " +"pixels." +msgstr "" +"括号内是函数参数。当前例子中参数虽然只有一个,但是可以有多个得情况,使用逗号" +"隔开。\n" +"\n" +"例子中[code]move_forward[/code]是函数名[code]30[/code]是函数参数。\n" +"\n" +"函数调用后海龟会向前移动[code]30[/code]个像素。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:132 +msgid "move_forward" +msgstr "move_forward" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:132 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:133 +msgid "30" +msgstr "30" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:140 +msgid "The turtle uses code made specifically for this app!" +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:142 +msgid "" +"The turtle is a little learning tool custom-made for this course, based on a " +"proven code learning methodology. It's designed to teach you how to use and " +"create functions.\n" +"\n" +"So please don't be surprised if writing code like [code]turn_left()[/code] " +"inside of the Godot editor doesn't work! And don't worry, once you've " +"learned the foundations, you'll see they make it faster and easier to learn " +"Godot functions." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:154 +msgid "" +"Let's move on to practice! You'll get to play with the turtle functions to " +"draw shapes." +msgstr "" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:162 +msgid "Drawing a Corner" +msgstr "画一个直角" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:163 +#, fuzzy +msgid "" +"In this practice, we'll tell the turtle to draw a corner.\n" +"\n" +"The corner is made up of two lines that are [code]200[/code] pixels long. " +"The lines are connected at each end by [code]90[/code] degrees, or right-" +"angle.\n" +"\n" +"The [code]move_forward()[/code] and [code]turn_right()[/code] functions to " +"the right draw a corner, but they're missing some arguments.\n" +"\n" +"Add the missing arguments so the turtle moves forward [code]200[/code] " +"pixels, turns right [code]90[/code] degrees, then moves forward again " +"[code]200[/code] pixels.\n" +"\n" +"We added the first argument for you so the turtle moves forward [code]200[/" +"code] pixels.\n" +"\n" +"In the following practices, we'll draw multiple corners to create " +"rectangles.\n" +"\n" +msgstr "" +"在这个练习中,我们将告诉海龟画一个角。\n" +"\n" +"角由两条 [code]200[/code] 像素长的线组成。 这些线在每一端以 [code]90[/code] " +"度或直角连接。\n" +"\n" +"右边的 [code]move_forward()[/code] 和 [code]turn_right()[/code] 函数画了一个" +"角,但它们缺少一些参数。\n" +"\n" +"添加缺少的参数,使海龟向前移动 [code]200[/code] 像素,向右转 [code]90[/code] " +"度,然后再次向前移动 [code]200[/code] 像素。\n" +"\n" +"我们为您添加了第一个参数,以便海龟向前移动 [code]200[/code] 像素。\n" +"\n" +"在下面的实践中,我们将绘制多个角来创建矩形。\n" +"\n" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:187 +msgid "" +"Use the turtle to draw a square's corner. You'll then build upon it to draw " +"a rectangle." +msgstr "使用海龟画一个正方形的角。 然后,您将在它的基础上绘制一个矩形。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:192 +#: course/lesson-4-drawing-a-rectangle/lesson.tres:240 +msgid "Drawing a Rectangle" +msgstr "绘制一个矩形" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:193 +#, fuzzy +msgid "" +"Add the correct arguments to the functions [code]move_forward()[/code] and " +"[code]turn_right()[/code] to draw a rectangle with a width of [code]200[/" +"code] pixels, and a height of [code]120[/code] pixels.\n" +"\n" +"We wrote the first argument for you.\n" +"\n" +"In the next practice, you'll use the same functions to draw a bigger " +"rectangle." +msgstr "" +"在函数[code]move_forward()[/code]和[code]turn_right()[/code]中添加正确的参" +"数,绘制一个宽度为[code]200[/code]像素、高度为 [code]120[/code] 像素。\n" +"\n" +"我们为您编写了第一个参数。\n" +"\n" +"在下一个练习中,您将使用相同的函数来绘制一个更大的矩形。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:213 +msgid "" +"Based on your rectangle corner, you now need to draw a complete rectangle." +msgstr "根据您的矩形角,您现在需要绘制一个完整的矩形。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:218 +msgid "Drawing a Bigger Rectangle" +msgstr "画一个更大的矩形" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:219 +msgid "" +"Write out calls to the functions [code]move_forward()[/code] and " +"[code]turn_right()[/code] to draw a rectangle with a width of 220 pixels, " +"and a height of 260 pixels.\n" +"\n" +"We wrote the first two lines for you.\n" +"\n" +"Be sure to write each instruction on a separate line.\n" +"\n" +"Every line should start with one [code]Tab[/code] character so the computer " +"understands it's part of the [code]draw_rectangle()[/code] function." +msgstr "" +"写出对函数 [code]move_forward()[/code] 和 [code]turn_right()[/code] 的调用," +"以绘制一个宽度为 220 像素、高度为 260 像素的矩形。\n" +"\n" +"我们为您编写了前两行。\n" +"\n" +"确保将每条指令写在单独的行上。\n" +"\n" +"每一行都应该以一个 [code]Tab[/code] 字符开头,以便计算机理解它是 " +"[code]draw_rectangle()[/code] 函数的一部分。" + +#: course/lesson-4-drawing-a-rectangle/lesson.tres:236 +msgid "" +"At this point, you're ready to code entirely on your own. Call functions by " +"yourself to draw a complete rectangle." +msgstr "此时,您已准备好完全自己编写代码。 自己调用函数绘制一个完整的矩形。" + +#~ msgid "" +#~ "The function parameters are inside the parentheses in a function " +#~ "definition.\n" +#~ "\n" +#~ "The [code]func[/code] keyword tells the computer you're defining a new " +#~ "function, and [code]move_forward[/code] is the function's name." +#~ msgstr "" +#~ "函数参数位于函数定义的括号内。\n" +#~ "\n" +#~ "[code]func[/code] 关键字告诉计算机您正在定义一个新函数,而 " +#~ "[code]move_forward[/code] 是函数的名称。" + +#~ msgid "func" +#~ msgstr "func" + +#~ msgid "pixels" +#~ msgstr "像素" diff --git a/i18n/zh_Hans/lesson-5-your-first-function.po b/i18n/zh_Hans/lesson-5-your-first-function.po new file mode 100644 index 00000000..5be4b2cb --- /dev/null +++ b/i18n/zh_Hans/lesson-5-your-first-function.po @@ -0,0 +1,386 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-5-your-first-function/lesson.tres:14 +msgid "" +"So far, we have called existing functions that other developers wrote.\n" +"\n" +"In this lesson, we'll talk more about what functions are and see some " +"examples. Then, you will learn how to define your own functions." +msgstr "" +"到目前为止,我们已经调用了其他开发人员编写的现有函数。\n" +"\n" +"在本课中,我们将更多地讨论什么是函数并查看一些示例。 然后,您将学习如何定义自" +"己的函数。" + +#: course/lesson-5-your-first-function/lesson.tres:24 +msgid "Functions are named sequences of instructions" +msgstr "函数被命名为指令序列" + +#: course/lesson-5-your-first-function/lesson.tres:26 +msgid "" +"Functions are [i]sequences of instructions[/i] we give a name. We call that " +"name an [i]identifier[/i].\n" +"\n" +"Using the identifier, we can get the computer to execute all the " +"instructions inside the function as many times as we need. This is what a " +"[i]function call[/i] does." +msgstr "" +"函数是[i]指令序列[/i],我们给它一个名字。 我们称这个名字为[i]标识符[/i]。\n" +"\n" +"使用标识符,我们可以让计算机根据需要多次执行函数内的所有指令。 这就是 [i] 函" +"数调用 [/i] 的作用。" + +#: course/lesson-5-your-first-function/lesson.tres:36 +msgid "Learn more about identifiers" +msgstr "了解有关标识符的更多信息" + +#: course/lesson-5-your-first-function/lesson.tres:38 +msgid "" +"In computer programming, we talk about [i]identifiers[/i] rather than " +"\"names\".\n" +"\n" +"It is because a function name is a label the computer uses to precisely " +"[i]identify[/i] and refer to a function or other code elements.\n" +"\n" +"Identifiers are unique: you cannot reuse the same name in a given [i]space[/" +"i] in your code.\n" +"\n" +"If you try to name two functions the same, the computer will raise an error." +msgstr "" +"在计算机编程中,我们谈论 [i] 标识符 [/i] 而不是“名称”。\n" +"\n" +"这是因为函数名称是计算机用来精确[i]识别[/i]并引用函数或其他代码元素的标签。\n" +"\n" +"标识符是唯一的:您不能在代码的给定 [i]space[/i] 中重复使用相同的名称。\n" +"\n" +"如果您尝试将两个函数命名为相同,计算机将引发错误。" + +#: course/lesson-5-your-first-function/lesson.tres:54 +msgid "" +"If there is any code that you need to run multiple times, you can put it " +"inside a function and give it a name.\n" +"\n" +"The instructions inside a function can be any code you want, and they will " +"all run every time you call the function.\n" +"\n" +"Here's the example of a [code]move_and_rotate()[/code] function that moves " +"the turtle forward and then turns it 90°." +msgstr "" +"如果有任何代码需要多次运行,可以将其放在函数中并为其命名。\n" +"\n" +"函数内的指令可以是你想要的任何代码,每次调用函数时它们都会运行。\n" +"\n" +"下面是一个 [code]move_and_rotate()[/code] 函数的示例,该函数将海龟向前移动," +"然后将其旋转 90°。" + +#: course/lesson-5-your-first-function/lesson.tres:78 +msgid "" +"The [code]move_and_rotate()[/code] function consists of two instructions, " +"each on a separate line. Both of those instructions call another familiar " +"function.\n" +"\n" +"You could write another function that calls [code]move_and_rotate()[/code] " +"four times to draw a square of length 200 pixels." +msgstr "" +"[code]move_and_rotate()[/code] 函数由两条指令组成,每条指令位于单独的一行。 " +"这两条指令都调用了另一个熟悉的函数。\n" +"\n" +"您可以编写另一个函数,调用 [code]move_and_rotate()[/code] 四次来绘制一个长度" +"为 200 像素的正方形。" + +#: course/lesson-5-your-first-function/lesson.tres:100 +#, fuzzy +msgid "" +"Every time we call [code]move_and_rotate()[/code], the two functions " +"[code]move_forward(200)[/code] and [code]turn_right(90)[/code] are called in " +"sequence.\n" +"\n" +"In this simple example, it may not feel super useful. Here's a more useful " +"and realistic one: a function to draw any square.\n" +"\n" +"The following function uses [i]parameters[/i], which we will explore in the " +"next lesson.\n" +"\n" +"[i]Drag the slider to change the square's size.[/i]" +msgstr "" +"每次调用[code]move_and_rotate()[/code]时,依次调用[code]move_forward(200)[/" +"code]和[code]turn_right(90)[/code]这两个函数。\n" +"\n" +"在这个简单的例子中,它可能感觉不是很有用。 这是一个更有用和现实的:一个绘制任" +"何矩形的函数。\n" +"\n" +"以下函数使用 [i]parameters[/i],我们将在下一课中探讨。\n" +"\n" +"[i]拖动滑块改变正方形的大小。[/i]" + +#: course/lesson-5-your-first-function/lesson.tres:124 +msgid "How to define your own functions" +msgstr "如何定义自己的函数" + +#: course/lesson-5-your-first-function/lesson.tres:126 +msgid "" +"Let's break down how you define a function.\n" +"\n" +"A function definition starts with the [code]func[/code] keyword followed by " +"a space, the function's name, parentheses, and a colon." +msgstr "" +"让我们分解一下如何定义函数。\n" +"\n" +"函数定义以 [code]func[/code] 关键字开头,后跟空格、函数名称、括号和冒号。" + +#: course/lesson-5-your-first-function/lesson.tres:148 +msgid "" +"The instructions inside the function [b]must[/b] all start with a leading " +"tab character. You can insert that tab character by pressing the [b]Tab[/b] " +"key.\n" +"\n" +"We call those leading tabs [i]indents[/i]. They're important: the computer " +"uses them to know which instructions are part of the same code block." +msgstr "" +"函数 [b] 必须[/b] 中的指令都以前导制表符开头。 您可以通过按 [b]Tab[/b] 键插入" +"该制表符。\n" +"\n" +"我们将这些前导制表符称为 [i] 缩进 [/i]。 它们很重要:计算机使用它们来知道哪些" +"指令是同一代码块的一部分。" + +#: course/lesson-5-your-first-function/lesson.tres:158 +msgid "Why do we use functions?" +msgstr "我们为什么要使用函数?" + +#: course/lesson-5-your-first-function/lesson.tres:161 +msgid "" +"Functions are groups of instructions we reuse every time we call the " +"function.\n" +"\n" +"Because we give functions a name, they also allow us to name a set of " +"instructions, which is handy!" +msgstr "" +"函数是我们每次调用函数时重用的指令组。\n" +"\n" +"因为我们给函数命名,它们也允许我们命名一组指令,这很方便!" + +#: course/lesson-5-your-first-function/lesson.tres:164 +#: course/lesson-5-your-first-function/lesson.tres:165 +msgid "To reuse code multiple times. " +msgstr "多次重用代码。 " + +#: course/lesson-5-your-first-function/lesson.tres:164 +#: course/lesson-5-your-first-function/lesson.tres:165 +msgid "To run multiple instructions in one go." +msgstr "一次运行多条指令。" + +#: course/lesson-5-your-first-function/lesson.tres:164 +#: course/lesson-5-your-first-function/lesson.tres:165 +msgid "To put a name on multiple lines of code." +msgstr "将名称放在多行代码上。" + +#: course/lesson-5-your-first-function/lesson.tres:172 +msgid "Names in code have rules" +msgstr "代码中的名字有规则" + +#: course/lesson-5-your-first-function/lesson.tres:174 +msgid "" +"Function identifiers cannot contain spaces. In general, names in programming " +"languages cannot contain spaces.\n" +"\n" +"The computer uses spaces to detect the separation between different keywords " +"and identifiers.\n" +"\n" +"Instead of spaces, in GDScript, we use underscores (\"_\"). You saw this " +"already with functions like [code]move_forward()[/code] or " +"[code]move_local_x()[/code]. This is the convention we follow in GDScript.\n" +"\n" +"There's another convention programmers use in some other programming " +"languages.\n" +"\n" +"Instead of using underscores, they start words with capital letters except " +"for the first one. With that convention, you'd write function names like " +"[code]moveForward()[/code] or [code]moveLocalX()[/code]\n" +"\n" +"Identifiers also [i]have[/i] to start with a letter or an underscore; You " +"[i]can't[/i] begin with a number, but you can use numbers after the first " +"character." +msgstr "" +"函数标识符不能包含空格。 通常,编程语言中的名称不能包含空格。\n" +"\n" +"计算机使用空格来检测不同关键字和标识符之间的分隔。\n" +"\n" +"在 GDScript 中,我们使用下划线(“_”)代替空格。 您已经通过 " +"[code]move_forward()[/code] 或 [code]move_local_x()[/code] 等函数看到了这一" +"点。 这是我们在 GDScript 中遵循的约定。\n" +"\n" +"程序员在其他一些编程语言中使用了另一种约定。\n" +"\n" +"它们不使用下划线,而是以大写字母开头,第一个除外。 使用该约定,您将编写函数名" +"称,如 [code]moveForward()[/code] 或 [code]moveLocalX()[/code]\n" +"\n" +"标识符也 [i]have[/i] 以字母或下划线开头; 你[i]不能[/i]以数字开头,但你可以在" +"第一个字符之后使用数字。" + +#: course/lesson-5-your-first-function/lesson.tres:192 +msgid "Which of the following names are valid function names?" +msgstr "以下哪个名称是有效的函数名称?" + +#: course/lesson-5-your-first-function/lesson.tres:193 +msgid "Note that it's fine to use capital letters." +msgstr "请注意,可以使用大写字母。" + +#: course/lesson-5-your-first-function/lesson.tres:195 +msgid "" +"You can't name a function [code]move forward[/code] because it contains a " +"space. Names in code cannot contain spaces.\n" +"\n" +"They can't start with numbers either, which is why [code]45_degree_turn[/" +"code] is also invalid. \n" +"\n" +"However, having numbers elsewhere in a function name is fine. That's why " +"[code]make3NewCharacters[/code] works." +msgstr "" +"你不能命名一个函数 [code]move forward[/code] 因为它包含一个空格。 代码中的名" +"称不能包含空格。\n" +"\n" +"它们也不能以数字开头,这就是为什么 [code]45_degree_turn[/code] 也是无效的。\n" +"\n" +"但是,在函数名的其他地方有数字是可以的。 这就是 [code]make3NewCharacters[/" +"code] 起作用的原因。" + +#: course/lesson-5-your-first-function/lesson.tres:200 +msgid "move forward" +msgstr "向前移动" + +#: course/lesson-5-your-first-function/lesson.tres:200 +#: course/lesson-5-your-first-function/lesson.tres:201 +msgid "jump" +msgstr "跳跃" + +#: course/lesson-5-your-first-function/lesson.tres:200 +#: course/lesson-5-your-first-function/lesson.tres:201 +msgid "make3NewCharacters" +msgstr "制作 3 个新角色" + +#: course/lesson-5-your-first-function/lesson.tres:200 +#: course/lesson-5-your-first-function/lesson.tres:201 +msgid "move_forward" +msgstr "move_forward" + +#: course/lesson-5-your-first-function/lesson.tres:200 +msgid "45_degree_turn" +msgstr "45_degree_turn" + +#: course/lesson-5-your-first-function/lesson.tres:208 +msgid "Instantly moving the turtle to a different position" +msgstr "立即将海龟移动到不同的位置" + +#: course/lesson-5-your-first-function/lesson.tres:210 +msgid "" +"In order to draw multiple squares in different positions, we introduce a new " +"function for our turtle to use.\n" +"\n" +"The [code]jump()[/code] function picks up the turtle and places it relative " +"to where it is.\n" +"\n" +"So calling [code]jump(-100, 50)[/code] moves the turtle by 100 pixels to the " +"[b]left[/b] and 50 pixels [b]down[/b] without drawing any lines." +msgstr "" +"为了在不同位置绘制多个正方形,我们引入了一个新功能供我们的海龟使用。\n" +"\n" +"[code]jump()[/code] 函数拾取海龟并将其相对于它所在的位置放置。\n" +"\n" +"因此,调用 [code]jump(-100, 50)[/code] 将海龟向 [b]left[/b] 移动 100 像素," +"在 [b]down[/b] 移动 50 像素,而不绘制任何线条。" + +#: course/lesson-5-your-first-function/lesson.tres:232 +msgid "A function to draw squares" +msgstr "绘制正方形的函数" + +#: course/lesson-5-your-first-function/lesson.tres:233 +msgid "" +"Code a function named [code]draw_square()[/code] to draw one square of " +"length 200 pixels. The function should take no parameters.\n" +"\n" +"Use the [code]move_forward()[/code] and [code]turn_right()[/code] functions " +"to instruct the turtle.\n" +"\n" +"In the following practice, you'll use the [code]draw_square()[/code] " +"function to draw multiple squares by calling your own function." +msgstr "" +"编写一个名为 [code]draw_square()[/code] 的函数来绘制一个长度为 200 像素的正方" +"形。 该函数不应带任何参数。\n" +"\n" +"使用 [code]move_forward()[/code] 和 [code]turn_right()[/code] 函数来指示海" +"龟。\n" +"\n" +"在下面的练习中,您将使用 [code]draw_square()[/code] 函数通过调用您自己的函数" +"来绘制多个正方形。" + +#: course/lesson-5-your-first-function/lesson.tres:246 +msgid "" +"Until now, you've had to write code by hand, and it's boring. It's time to " +"code a reusable function. You'll use it to draw multiple squares." +msgstr "" +"到现在为止,您必须手动编写代码,这很无聊。 是时候编写一个可重用的函数了。 您" +"将使用它来绘制多个正方形。" + +#: course/lesson-5-your-first-function/lesson.tres:251 +msgid "Drawing multiple squares" +msgstr "绘制多个正方形" + +#: course/lesson-5-your-first-function/lesson.tres:252 +msgid "" +"You have a function to draw one square: [code]draw_square()[/code]. Use it " +"to draw three squares.\n" +"\n" +"We already created [code]draw_square()[/code] for you. Create a function " +"named [code]draw_three_squares[/code] that calls [code]draw_square()[/code] " +"three times.\n" +"\n" +"If you just call the function, all three squares will overlap. To stack them " +"diagonally, call [code]jump(300, 300)[/code] between two calls to " +"[code]draw_square()[/code].\n" +"\n" +"Calling [code]jump(300, 300)[/code] makes the turtle jump by 300 pixels to " +"the right and 300 pixels down without drawing any lines." +msgstr "" +"你有一个绘制一个正方形的函数:[code]draw_square()[/code]。 用它来画三个正方" +"形。\n" +"\n" +"我们已经为您创建了 [code]draw_square()[/code]。 创建一个名为 " +"[code]draw_three_squares[/code] 的函数,该函数调用 [code]draw_square()[/" +"code] 三次。\n" +"\n" +"如果你只是调用该函数,所有三个方块都会重叠。 要对角堆叠它们,请在两次调用 " +"[code]draw_square()[/code] 之间调用 [code]jump(300, 300)[/code]。\n" +"\n" +"调用 [code]jump(300, 300)[/code] 会使海龟向右跳跃 300 像素,向下跳跃 300 像" +"素,而不绘制任何线条。" + +#: course/lesson-5-your-first-function/lesson.tres:275 +msgid "" +"Now you created a function to draw squares, you can reuse it by calling it " +"multiple times." +msgstr "现在您创建了一个绘制正方形的函数,您可以通过多次调用它来重用它。" + +#: course/lesson-5-your-first-function/lesson.tres:279 +msgid "Coding Your First Function" +msgstr "编写您的第一个函数" diff --git a/i18n/zh_Hans/lesson-6-multiple-function-parameters.po b/i18n/zh_Hans/lesson-6-multiple-function-parameters.po new file mode 100644 index 00000000..f206e7e1 --- /dev/null +++ b/i18n/zh_Hans/lesson-6-multiple-function-parameters.po @@ -0,0 +1,493 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:14 +msgid "" +"In the previous part, you created a function to draw a square of a fixed " +"size.\n" +"\n" +"This function is a bit limiting. Instead, it would be much better if we had " +"a function to draw a square of [i]any[/i] size. Or better: any kind of " +"rectangle (a square is a specific kind of rectangle).\n" +"\n" +"In previous lessons, you used the [code]rotate()[/code] function and gave it " +"an [i]argument[/i]." +msgstr "" +"在上一部分中,您创建了一个函数来绘制一个固定大小的正方形。\n" +"\n" +"这个功能有点限制。 相反,如果我们有一个函数来绘制一个 [i]任意[/i] " +"大小的正方形会更好。 或者更好:任何类型的矩形(正方形是特定类型的矩形)。\n" +"\n" +"在之前的课程中,您使用了 [code]rotate()[/code] 函数并给了它一个 [i] " +"参数[/i]。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:38 +msgid "" +"Just like [code]rotate()[/code], we can also give our function " +"[i]parameters[/i]. Parameters are labels you give to values passed to the " +"function." +msgstr "" +"就像 [code]rotate()[/code] 一样,我们也可以给我们的函数 [i]parameters[/i]。 " +"参数是您赋予传递给函数的值的标签。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:46 +msgid "Can I rotate in both directions?" +msgstr "我可以向两个方向旋转吗?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:48 +msgid "" +"The [code]radians[/code] can be a positive or negative number, which allows " +"you to rotate both clockwise and counter-clockwise." +msgstr "[code]radians[/code] 可以是正数或负数,它允许您顺时针和逆时针旋转。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:58 +msgid "" +"For now, please focus on the first line: [code]func rotate(radians)[/code].\n" +"\n" +"When you call [code]rotate(0.5)[/code], the computer binds the value " +"[code]0.5[/code] to the label [code]radians[/code].\n" +"\n" +"Wherever the computer sees the identifier [code]radians[/code] inside the " +"function, it replaces it with the [code]0.5[/code] value.\n" +"\n" +"The parameter name is always a label you use to refer to a [i]value[/i]. The " +"value in question can be a number, text, or anything else.\n" +"\n" +"For now, we'll stick to numbers as we have yet to see other value types." +msgstr "" +"现在,请关注第一行:[code]func rotate(radians)[/code]。\n" +"\n" +"当您调用 [code]rotate(0.5)[/code] 时,计算机会将值 [code]0.5[/code] 绑定到标" +"签 [code]radians[/code]。\n" +"\n" +"无论计算机在函数内何处看到标识符 [code]radians[/code],都会将其替换为 " +"[code]0.5[/code] 值。\n" +"\n" +"参数名称始终是您用来引用 [i] 值[/i] 的标签。 有问题的值可以是数字、文本或其他" +"任何内容。\n" +"\n" +"目前,我们将坚持使用数字,因为我们还没有看到其他值类型。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:74 +msgid "What is a function parameter?" +msgstr "什么是函数参数?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:77 +msgid "" +"A parameter is a label that represents a value.\n" +"\n" +"The value in question can change: it depends on what you put in parentheses " +"when calling a function." +msgstr "" +"参数是表示值的标签。\n" +"\n" +"有问题的值可能会改变:这取决于您在调用函数时放入括号中的内容。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:80 +#: course/lesson-6-multiple-function-parameters/lesson.tres:81 +msgid "A label you give to a value the function receives." +msgstr "您为函数接收的值赋予的标签。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:80 +msgid "A number you use to make calculations." +msgstr "用于计算的数字。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:80 +msgid "The name of a function." +msgstr "函数的名称。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:88 +msgid "How to create functions with parameters" +msgstr "如何创建带参数的函数" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:90 +msgid "" +"You can give your function parameters when writing its [i]definition[/i] " +"(the line starting with the [code]func[/code] keyword).\n" +"\n" +"To do so, you add a name inside of the parentheses." +msgstr "" +"您可以在编写函数的 [i]definition[/i](以 [code]func[/code] 关键字开头的行)时" +"提供函数参数。\n" +"\n" +"为此,您在括号内添加一个名称。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:112 +msgid "" +"You can give parameters any name. How you name functions and parameters is " +"up to you. \n" +"\n" +"Just remember that names cannot contain spaces. To write parameter names " +"with multiple words, you need to use underscores.\n" +"\n" +"The following function definition is exactly equivalent to the previous one." +msgstr "" +"您可以为参数指定任何名称。 如何命名函数和参数取决于您。\n" +"\n" +"请记住,名称不能包含空格。 要用多个单词编写参数名称,您需要使用下划线。\n" +"\n" +"下面的函数定义与前一个完全相同。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:136 +msgid "" +"Parameters make your code easier to reuse.\n" +"\n" +"Here's an example with a function to draw any square. Use the slider to " +"change the value passed to the function and draw squares of different sizes." +msgstr "" +"参数使您的代码更易于重用。\n" +"\n" +"这是一个带有绘制任何正方形的函数的示例。 使用滑块更改传递给函数的值并绘制不同" +"大小的正方形。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:156 +msgid "Which is the correct syntax for a function definition?" +msgstr "函数定义的正确语法是什么?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:159 +msgid "" +"To define a function, you need to start with the [code]func[/code] keyword " +"followed by a space, the [code]function_name[/code], and optional parameters " +"inside parentheses.\n" +"\n" +"You must end the line with a colon, which defines a new code block. We'll " +"see moving forward that keywords other than [code]func[/code] require a " +"colon at the end of the line." +msgstr "" +"要定义一个函数,您需要以 [code]func[/code] 关键字开头,后跟一个空格、" +"[code]function_name[/code] 和括号内的可选参数。\n" +"\n" +"您必须以冒号结束该行,它定义了一个新的代码块。 我们将看到除 [code]func[/" +"code] 以外的关键字在行尾需要冒号。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +#: course/lesson-6-multiple-function-parameters/lesson.tres:163 +msgid "func function_name(parameter_name):" +msgstr "func 函数名(参数名):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +msgid "func (function_name): parameter_name" +msgstr "func (函数名): 参数名" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +msgid "func function_name(parameter_name)" +msgstr "func 函数名(参数名)" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:162 +msgid "function_name(parameter_name):" +msgstr "函数名(参数名):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:170 +msgid "Functions can have multiple parameters" +msgstr "函数可以有多个参数" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:172 +msgid "" +"You can use multiple parameters in a function. In fact, you can use as many " +"as you [i]need[/i].\n" +"\n" +"To separate the function parameters, you need to write a comma between them." +msgstr "" +"您可以在一个函数中使用多个参数。 事实上,您可以使用 [i] 需要 [/i] 的任意数" +"量。\n" +"\n" +"要分隔函数参数,您需要在它们之间写一个逗号。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:192 +msgid "Must I write spaces between function parameters?" +msgstr "我必须在函数参数之间写空格吗?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:194 +msgid "" +"In a function definition, you must have a space between the [code]func[/" +"code] keyword and the function name.\n" +"\n" +"However, because we use the comma to separate parameters, it doesn't matter " +"if you use spaces between parameters. As long as you have the comma, either " +"syntax is correct.\n" +"\n" +"We often use spaces after the comma for readability." +msgstr "" +"在函数定义中,[code]func[/code] 关键字和函数名之间必须有一个空格。\n" +"\n" +"但是,因为我们使用逗号分隔参数,所以参数之间是否使用空格无关紧要。 只要你有逗" +"号,任何一种语法都是正确的。\n" +"\n" +"为了便于阅读,我们经常在逗号后使用空格。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:208 +msgid "" +"The following example defines a function that uses two parameters to move an " +"entity on both the X and Y axes." +msgstr "以下示例定义了一个函数,该函数使用两个参数在 X 轴和 Y 轴上移动实体。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:226 +msgid "How should I name my functions and parameters?" +msgstr "我应该如何命名我的函数和参数?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:228 +msgid "" +"The names of functions, parameters, or other things in your code are " +"entirely up to you.\n" +"\n" +"They are written by us programmers for other programmers. You want to use " +"the names that make the most sense to you and fellow programmers.\n" +"\n" +"You could absolutely write single-letter names like in maths classes: " +"[code]a[/code], [code]b[/code], [code]f[/code].\n" +"\n" +"You can also write abbreviated names like [code]pos[/code] for position, " +"[code]bg[/code] for background, and so on.\n" +"\n" +"Many programmers do either or both of the above.\n" +"\n" +"At GDQuest, we favor complete and explicit names.\n" +"\n" +"We generally try to write code that is explicit and relatively easy to " +"read.\n" +"\n" +"Right now, you have to enter every letter when you code, so long names may " +"feel inconvenient.\n" +"\n" +"However, this is good for learning: it trains your fingers to [ignore]type " +"precisely.\n" +"\n" +"Then, after you finish this course, you will see that the computer assists " +"you a lot when you code real games with a feature called auto-completion.\n" +"\n" +"Based on a few characters you [ignore]type, it will offer you to complete " +"long names." +msgstr "" +"代码中的函数、参数或其他内容的名称完全取决于您。\n" +"\n" +"它们是我们程序员为其他程序员编写的。您应该使用对您和其他程序员最有意义的名" +"称。\n" +"\n" +"你绝对可以像在数学课中那样写单字母名称:[code]a[/code]、[code]b[/code]、" +"[code]f[/code]。\n" +"\n" +"您还可以写缩写名称,例如 [code]pos[/code] 表示位置,[code]bg[/code] 表示背" +"景,等等。\n" +"\n" +"许多程序员都使用上述任何一种或两种方式。\n" +"\n" +"在 GDQuest,我们倾向于完整和明确的名称。\n" +"\n" +"我们通常会尝试编写明确且相对容易阅读的代码。\n" +"\n" +"现在,您必须在编码时输入每个字母,因此长名称可能会让人感到不便。\n" +"\n" +"但是,这对学习有好处:它可以训练您的手指精确打字。\n" +"\n" +"然后,在您完成本课程后,您会发现当您实际编写游戏时,计算机会使用称为自动补全" +"的功能为您提供很多帮助。\n" +"\n" +"根据您键入的几个字符,它会为您补完完整的长名称。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:256 +msgid "When defining a function, parameters are..." +msgstr "定义函数时,参数..." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:259 +msgid "" +"You can define functions with or without parameters, depending on your needs." +msgstr "您可以根据需要定义带或不带参数的函数。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:260 +#: course/lesson-6-multiple-function-parameters/lesson.tres:261 +msgid "Optional" +msgstr "可选" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:260 +msgid "Mandatory" +msgstr "强制的" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:268 +msgid "" +"What's the correct syntax to define a function with multiple parameters?" +msgstr "定义具有多个参数的函数的正确语法是什么?" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:271 +msgid "" +"You always write the function parameters inside of the parentheses. To " +"define multiple parameters, you separate them with a comma." +msgstr "您总是将函数参数写在括号内。 要定义多个参数,请用逗号分隔它们。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:272 +#: course/lesson-6-multiple-function-parameters/lesson.tres:273 +msgid "func function_name(parameter_1, parameter_2, ...):" +msgstr "func 函数名(参数_1,参数_2,...):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:272 +msgid "func function_name(parameter_1 parameter_2 ...):" +msgstr "func 函数名(参数_1 参数_2 ...):" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:272 +msgid "func function_name(): parameter_1, parameter_2, ..." +msgstr "func 函数名():参数_1,参数_2,..." + +#: course/lesson-6-multiple-function-parameters/lesson.tres:282 +msgid "" +"Now it's your turn to create a function with multiple parameters: a function " +"to draw rectangles of any size." +msgstr "现在轮到你创建一个具有多个参数的函数了:一个绘制任意大小矩形的函数。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:290 +msgid "Drawing corners of different sizes" +msgstr "绘制不同大小的角" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:291 +msgid "" +"Before we create a rectangle of any size, let's first see how we can use " +"parameters to draw simpler shapes.\n" +"\n" +"Here we have an incomplete function that will draw corners with lines of any " +"length, but it's missing its [code]length[/code] parameter.\n" +"\n" +"The function will move the turtle forward an amount defined by the parameter " +"[code]length[/code], turn [code]90[/code] degrees, then move forward " +"[code]length[/code] pixels.\n" +"\n" +"Complete the [code]draw_corner()[/code] function so it uses the " +"[code]length[/code] parameter to draw corners." +msgstr "" +"在我们创建任意大小的矩形之前,让我们先看看如何使用参数来绘制更简单的形状。\n" +"\n" +"这里我们有一个不完整的函数,它可以用任意长度的线绘制角,但是它缺少它的 " +"[code]length[/code] 参数。\n" +"\n" +"该函数将把海龟向前移动一个由参数 [code]length[/code] 定义的量,转动 " +"[code]90[/code] 度,然后向前移动 [code]length[/code] 个像素。\n" +"\n" +"完成 [code]draw_corner()[/code] 函数,使其使用 [code]length[/code] 参数绘制" +"角。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:309 +msgid "" +"Using function parameters, code a function you can reuse to draw corners " +"with lines of varying sizes." +msgstr "使用函数参数,编写一个函数,您可以重复使用以绘制不同大小的线的角。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:314 +msgid "Using multiple parameters" +msgstr "使用多个参数" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:315 +msgid "" +"In this practice, we'll improve our [code]draw_corner()[/code] function so " +"the angle can also vary.\n" +"\n" +"Add the [code]angle[/code] parameter after the [code]length[/code] parameter " +"in the [code]draw_corner()[/code] function and use it to draw corners of " +"varying angles." +msgstr "" +"在这个实践中,我们将改进我们的 [code]draw_corner()[/code] 函数,以便角度也可" +"以变化。\n" +"\n" +"将 [code]angle[/code] 参数添加到 [code]draw_corner()[/code] 函数中,放在" +"[code]length[/code]参数之后,并使用它来绘制不同角度的角。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:329 +msgid "With two parameters, code a function to draw corners with any angle." +msgstr "使用两个参数,编写一个函数来绘制任意角度的角。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:334 +msgid "Drawing squares of any size" +msgstr "绘制任意大小的正方形" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:335 +msgid "" +"We want a function to draw squares of any size.\n" +"\n" +"We could use these squares as outlines when selecting units in a tactical " +"game, as a frame for items in an inventory, and more.\n" +"\n" +"Create a function named [code]draw_square()[/code] that takes one parameter: " +"the [code]length[/code] of the square's sides.\n" +"\n" +"[b]The turtle should face towards the right when starting or completing a " +"square.[/b]\n" +"\n" +"Be sure to call [b]turn_right(90)[/b] enough times in your function to do " +"so." +msgstr "" +"我们想要一个函数来绘制任意大小的正方形。\n" +"\n" +"我们可以将这些正方形用作战术游戏中选择单位的轮廓,用作库存中物品的框架等" +"等。\n" +"\n" +"创建一个名为 [code]draw_square()[/code] 的函数,它采用一个参数:正方形边的 " +"[code]length[/code]。\n" +"\n" +"[b]开始或完成一个矩形时,乌龟应该面向右侧。[/b]\n" +"\n" +"为到达上述效果,请确保在你的函数中调用足够次的 [b]turn_right(90)[/b] 函数。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:352 +msgid "" +"In the previous lesson, your function would draw squares of a fixed size. " +"Using a parameter, code a function to draw squares of any size." +msgstr "" +"在上一课中,您的函数将绘制固定大小的正方形。 使用一个参数,编写一个函数来绘制" +"任意大小的正方形。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:357 +msgid "Drawing rectangles of any size" +msgstr "绘制任意大小的矩形" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:358 +msgid "" +"Let's make our square drawing function more flexible to include rectangles " +"of varying sizes.\n" +"\n" +"Your job is to code a function named [code]draw_rectangle()[/code] that " +"takes two parameters: the [code]length[/code] and the [code]height[/code] of " +"the rectangle.\n" +"\n" +"[b]The turtle should face towards the right when starting or completing a " +"rectangle.[/b]\n" +"\n" +"Note that we could still draw a square with [code]draw_rectangle()[/code] by " +"having the [code]length[/code] and [code]height[/code] equal the same value." +msgstr "" +"让我们使矩形绘图功能更加灵活,以包含不同大小的矩形。\n" +"\n" +"你的工作是编写一个名为 [code]draw_rectangle()[/code] 的函数,它接受两个参数:" +"矩形的 [code]length[/code] 和 [code]height[/code]。\n" +"\n" +"[b]开始或完成一个矩形时,乌龟应该面向右侧。[/b]\n" +"\n" +"请注意,我们仍然可以使用 [code]draw_rectangle()[/code] 通过使 [code]length[/" +"code] 和 [code]height[/code] 等于相同的值来绘制矩形。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:381 +msgid "" +"With one parameter, you can make squares of any size. With two, you can draw " +"any rectangle! You'll do so in this practice." +msgstr "" +"使用一个参数,您可以制作任意大小的正方形。 有了两个,您可以绘制任何矩形! 您" +"将在本练习中这样做。" + +#: course/lesson-6-multiple-function-parameters/lesson.tres:385 +msgid "Your First Function Parameter" +msgstr "您的第一个函数参数" diff --git a/i18n/zh_Hans/lesson-7-member-variables.po b/i18n/zh_Hans/lesson-7-member-variables.po new file mode 100644 index 00000000..50a68bfb --- /dev/null +++ b/i18n/zh_Hans/lesson-7-member-variables.po @@ -0,0 +1,389 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-7-member-variables/lesson.tres:14 +msgid "" +"In this lesson, we take a first look at variables.\n" +"\n" +"In games, you need to keep track of many values that change over time:\n" +"\n" +"- The player's score.\n" +"- Every character or enemy's health.\n" +"- The last checkpoint.\n" +"\n" +"And so much more. You need to store, retrieve, and update those values.\n" +"\n" +"We call those values [i]variables[/i]. Variables are labels you use to keep " +"track of values that vary over time. Here's an example of a variable " +"tracking a character or monster's health." +msgstr "" +"在本课中,我们首先了解变量。\n" +"\n" +"在游戏中,您需要跟踪许多随时间变化的值:\n" +"\n" +"- 玩家的分数。\n" +"- 每个角色或敌人的健康。\n" +"- 最后一个检查点。\n" +"\n" +"还有更多。您需要存储、检索和更新这些值。\n" +"\n" +"我们将这些值称为 [i] 变量 [/i]。变量是用于跟踪随时间变化的值的标签。这是一个" +"跟踪角色或怪物健康状况的变量示例。" + +#: course/lesson-7-member-variables/lesson.tres:44 +msgid "" +"The line above defines a new variable named [code]health[/code] and assigns " +"it a starting value of [code]100[/code] (that's what the equal sign does, " +"more on that below).\n" +"\n" +"Function parameters, which you saw in the previous lesson, are another " +"example of variables." +msgstr "" +"上面的行定义了一个名为 [code]health[/code] 的新变量,并为它分配了一个起始值 " +"[code]100[/code](这就是等号的作用,下面会详细介绍)。\n" +"\n" +"您在上一课中看到的函数参数是变量的另一个示例。" + +#: course/lesson-7-member-variables/lesson.tres:56 +msgid "" +"In this lesson, we start using variables built into Godot. They're a " +"particular kind called [i]member variables[/i].\n" +"\n" +"Member variables are values attached to a game entity. They're useful " +"properties like the [code]position[/code], [code]rotation[/code], and " +"[code]scale[/code] of a character.\n" +"\n" +"In a previous lesson, we saw how we could use the [code]rotate()[/code] " +"function to rotate our character." +msgstr "" +"在本课中,我们开始使用 Godot 内置的变量。 它们是一种特殊的类型,称为 [i] 成员" +"变量 [/i]。\n" +"\n" +"成员变量是附加到游戏实体的值。 它们是有用的属性,例如字符的 [code]position[/" +"code]、[code]rotation[/code] 和 [code]scale[/code]。\n" +"\n" +"在上一课中,我们看到了如何使用 [code]rotate()[/code] 函数来旋转我们的角色。" + +#: course/lesson-7-member-variables/lesson.tres:80 +msgid "" +"This function increases or decreases the value of the entity's " +"[code]rotation[/code] member variable.\n" +"\n" +"Say we want to reset the rotation to [code]0[/code] and make the character " +"upright. Using the [code]rotate()[/code] function can prove difficult: you " +"need to know the character's exact current angle to cancel it out.\n" +"\n" +"It's much easier to use the member variable rather than the function.\n" +"\n" +"The following code assigns the value [code]0[/code] to the character's " +"rotation, resetting its angle and making it upright." +msgstr "" +"此函数增加或减少实体的 [code]rotation[/code] 成员变量的值。\n" +"\n" +"假设我们要将旋转重置为 [code]0[/code] 并使角色直立。 使用 [code]rotate()[/" +"code] 函数可能很困难:您需要知道角色的确切当前角度才能取消它。\n" +"\n" +"使用成员变量比使用函数要容易得多。\n" +"\n" +"以下代码将值 [code]0[/code] 分配给角色的旋转,重置其角度并使其直立。" + +#: course/lesson-7-member-variables/lesson.tres:106 +msgid "" +"Notice how we use the equal sign ([code]=[/code]) to change the value of a " +"variable." +msgstr "请注意我们如何使用等号 ([code]=[/code]) 来更改变量的值。" + +#: course/lesson-7-member-variables/lesson.tres:114 +msgid "What's a variable?" +msgstr "什么是变量?" + +#: course/lesson-7-member-variables/lesson.tres:117 +msgid "" +"Variables are labels you use to access values that change over time.\n" +"\n" +"You can also use them to put a name on a value you want to reuse throughout " +"your code. It makes your code easier to read and to change." +msgstr "" +"变量是用于访问随时间变化的值的标签。\n" +"\n" +"您还可以使用它们为要在整个代码中重用的值命名。 它使您的代码更易于阅读和更改。" + +#: course/lesson-7-member-variables/lesson.tres:120 +#: course/lesson-7-member-variables/lesson.tres:121 +msgid "A label you use to keep track of a value that can change." +msgstr "用于跟踪可以更改的值的标签。" + +#: course/lesson-7-member-variables/lesson.tres:120 +msgid "A function that varies over time." +msgstr "随时间变化的函数。" + +#: course/lesson-7-member-variables/lesson.tres:120 +msgid "A decimal number." +msgstr "一个十进制数。" + +#: course/lesson-7-member-variables/lesson.tres:128 +msgid "Accessing sub-variables with the dot" +msgstr "使用点访问子变量" + +#: course/lesson-7-member-variables/lesson.tres:130 +#, fuzzy +msgid "" +"In video games, you will see many member variables that have sub-values.\n" +"\n" +"For example, the [code]position[/code] we mentioned has two coordinates: " +"[code]x[/code] and [code]y[/code].\n" +"\n" +"It's the same for the [code]scale[/code]: it has [code]x[/code] and [code]y[/" +"code] sub-variables. They respectively control the horizontal and vertical " +"size of the game entity.\n" +"\n" +"To access those X and Y sub-components, you add a dot (\".\") after the " +"variable name.\n" +"\n" +"The code below places the entity at [code]200[/code] pixels on the x-axis " +"and [code]250[/code] pixels on the y-axis." +msgstr "" +"在视频游戏中,您会看到许多具有子值的成员变量。\n" +"\n" +"比如我们提到的[code]position[/code]有两个坐标:[code]x[/code]和[code]y[/" +"code]。\n" +"\n" +"[code]scale[/code] 也是如此:它有 [code]x[/code] 和 [code]y[/code] 子变量。 " +"它们分别控制游戏实体的水平和垂直大小。\n" +"\n" +"要访问这些 X 和 Y 子组件,请在变量名称后添加一个点(“.”)。\n" +"\n" +"下面的代码将实体放置在 x 轴上的 [code]180[/code] 像素和 y 轴上的 [code]120[/" +"code] 像素处。" + +#: course/lesson-7-member-variables/lesson.tres:158 +msgid "" +"Notice how we use the equal sign (\"=\") to assign the numbers on the right " +"to the sub-variables on the left.\n" +"\n" +"Unlike in maths, in computer programming, the equal sign (\"=\") does not " +"mean \"is equal to.\"\n" +"\n" +"Instead, it means \"assign the result of the expression on the right to the " +"variable on the left\". We assign values so often in code that we prefer to " +"reserve the equal sign for that." +msgstr "" +"请注意我们如何使用等号(“=”)将右侧的数字分配给左侧的子变量。\n" +"\n" +"与数学不同,在计算机编程中,等号(“=”)并不意味着“等于”。\n" +"\n" +"相反,它的意思是“将右侧表达式的结果分配给左侧的变量”。 我们在代码中经常赋值," +"因此我们更愿意为此保留等号。" + +#: course/lesson-7-member-variables/lesson.tres:170 +msgid "In games, the Y-axis is positive going down" +msgstr "在游戏中,Y 轴为正向下" + +#: course/lesson-7-member-variables/lesson.tres:172 +msgid "" +"Note that in games, assuming your character's position starts at (0, 0), the " +"code above moves the entity [code]180[/code] pixels to the right and " +"[code]120[/code] pixels down.\n" +"\n" +"In math, the y-axis is generally positive going up by convention.\n" +"\n" +"The convention is the [i]opposite[/i] in video games and many computer " +"applications: the y-axis is positive going down." +msgstr "" +"请注意,在游戏中,假设您的角色的位置从 (0, 0) 开始,上面的代码将实体 " +"[code]180[/code] 像素向右移动并向下移动 [code]120[/code] 像素。\n" +"\n" +"在数学中,按照惯例,y 轴通常为正向上。\n" +"\n" +"该约定与视频游戏和许多计算机应用程序中的[i]相反[/i]:y轴向下为正。" + +#: course/lesson-7-member-variables/lesson.tres:194 +msgid "Why does the Y-axis point downwards?" +msgstr "为什么 Y 轴向下?" + +#: course/lesson-7-member-variables/lesson.tres:196 +msgid "" +"This may be confusing if you only saw the y-axis pointing up in math " +"classes. However, in math, axes go in any direction. They don't even have to " +"be perpendicular.\n" +"\n" +"On the computer, the position (0, 0) happens to correspond to the top-left " +"of your computer screen. It then makes sense for coordinates to be positive " +"when going towards the bottom-right corner.\n" +"\n" +"This leads to another question: why is position zero the top left of the " +"screen? This is due to computer and TV displays history: they would " +"calculate and display pixels starting from the top left corner and moving " +"towards the bottom right corner." +msgstr "" +"如果您只在数学课上看到 y 轴指向上方,这可能会令人困惑。 但是,在数学中,轴可" +"以朝任何方向移动。 它们甚至不必垂直。\n" +"\n" +"在计算机上,位置 (0, 0) 恰好对应于计算机屏幕的左上角。 然后,当朝向右下角时," +"坐标为正是有意义的。\n" +"\n" +"这就引出了另一个问题:为什么屏幕左上角的位置为零? 这是由于计算机和电视显示历" +"史:它们会计算并显示从左上角开始向右下角移动的像素。" + +#: course/lesson-7-member-variables/lesson.tres:210 +msgid "" +"Let's look at one last example before moving on to the practice. The " +"following code makes the character 1.5 times its starting size." +msgstr "" +"在继续练习之前,让我们看最后一个例子。 以下代码使字符成为其起始大小的 1.5 " +"倍。" + +#: course/lesson-7-member-variables/lesson.tres:228 +msgid "How do you access sub-variables?" +msgstr "你如何访问子变量?" + +#: course/lesson-7-member-variables/lesson.tres:229 +msgid "" +"Variables often hold sub-values, like the [code]position[/code] has two sub-" +"variables: [code]x[/code] and [code]y[/code]. How would you access the " +"[code]x[/code], for example?" +msgstr "" +"变量通常包含子值,例如 [code]position[/code] 有两个子变量:[code]x[/code] 和 " +"[code]y[/code]。 例如,您将如何访问 [code]x[/code]?" + +#: course/lesson-7-member-variables/lesson.tres:231 +msgid "" +"To access a sub-variable, you need to write a dot between the parent " +"variable name and the sub-variable name.\n" +"\n" +"For example, to access the [code]x[/code] sub-variable of the " +"[code]position[/code] variable, you'll write [code]position.x[/code]." +msgstr "" +"要访问子变量,您需要在父变量名称和子变量名称之间写一个点。\n" +"\n" +"例如,要访问 [code]position[/code] 变量的 [code]x[/code] 子变量,您将编写 " +"[code]position.x[/code]。" + +#: course/lesson-7-member-variables/lesson.tres:234 +#: course/lesson-7-member-variables/lesson.tres:235 +msgid "You write a dot (\".\") between the variable and the sub-variable name." +msgstr "您在变量和子变量名称之间写一个点(“.”)。" + +#: course/lesson-7-member-variables/lesson.tres:234 +msgid "" +"You write an arrow (\"->\") between the variable and the sub-variable name." +msgstr "在变量和子变量名称之间写一个箭头(“->”)。" + +#: course/lesson-7-member-variables/lesson.tres:234 +msgid "" +"You write a slash (\"/\") between the variable and the sub-variable name." +msgstr "在变量和子变量名称之间写一个斜杠(“/”)。" + +#: course/lesson-7-member-variables/lesson.tres:244 +msgid "" +"In a future lesson, we'll explain why and how those variables have sub-" +"variables.\n" +"\n" +"For now, just know you can use the dot to access them.\n" +"\n" +"We'll tell you which variables have sub-components and what their names " +"are.\n" +"\n" +"In the next lessons, you'll create your own variables and do operations on " +"them to add or remove [code]score[/code], [code]health[/code], you name it.\n" +"\n" +"For now, let's practice accessing variables." +msgstr "" +"在以后的课程中,我们将解释这些变量为什么以及如何具有子变量。\n" +"\n" +"现在,只知道您可以使用点来访问它们。\n" +"\n" +"我们将告诉您哪些变量具有子组件以及它们的名称。\n" +"\n" +"在接下来的课程中,您将创建自己的变量并对它们进行操作以添加或删除 " +"[code]score[/code]、[code]health[/code],您可以命名它。\n" +"\n" +"现在,让我们练习访问变量。" + +#: course/lesson-7-member-variables/lesson.tres:260 +msgid "Draw a rectangle at a precise position" +msgstr "在精确位置绘制一个矩形" + +#: course/lesson-7-member-variables/lesson.tres:261 +msgid "" +"Draw a rectangle of 200 by 120 pixels at the X position of 120 pixels and Y " +"position of 100 pixels.\n" +"\n" +"You need to replace the numbers in the code editor to draw the correct " +"rectangle." +msgstr "" +"在 120 像素的 X 位置和 100 像素的 Y 位置绘制一个 200 x 120 像素的矩形。\n" +"\n" +"您需要替换代码编辑器中的数字以绘制正确的矩形。" + +#: course/lesson-7-member-variables/lesson.tres:275 +msgid "" +"Use the position member variable and its sub-variables to change the " +"rectangle's position." +msgstr "使用 position 成员变量及其子变量来改变矩形的位置。" + +#: course/lesson-7-member-variables/lesson.tres:280 +msgid "Draw squares at different positions" +msgstr "在不同位置绘制多个矩形" + +#: course/lesson-7-member-variables/lesson.tres:281 +#, fuzzy +msgid "" +"Draw three squares of size 100 by 100 that are 100 pixels apart on the " +"horizontal axis. In other words, there should be a 100-pixel gap between two " +"squares.\n" +"\n" +"You should draw the squares starting at the position (100, 100). This means " +"you should position the first square at 100 on the X axis and 100 on the Y " +"axis.\n" +"\n" +"Remember you need to use the equal sign ([code]=[/code]) to change the value " +"of a variable, like the turtle's position.\n" +"\n" +"Write your code inside the [code]run()[/code] function so the computer can " +"recognize it.\n" +"\n" +"Use the provided [code]draw_rectangle()[/code] function to draw each square." +msgstr "" +"绘制三个大小为 100 x 100 的正方形,它们在水平轴上相距 100 像素。 换句话说,两" +"个正方形之间应该有 100 像素的间隙。\n" +"\n" +"您应该从位置 (100, 100) 开始绘制正方形。 这意味着您应该将第一个正方形放置在 " +"X 轴上的 100 和 Y 轴上的 100 处。\n" +"\n" +"请记住,您需要使用等号 ([code]=[/code]) 来更改变量的值,例如海龟的位置。\n" +"\n" +"在 [code]run()[/code] 函数中编写您的代码,以便计算机能够识别它。" + +#: course/lesson-7-member-variables/lesson.tres:299 +msgid "" +"Now you can place and draw one shape, but how about drawing several? In this " +"practice, you'll place three squares side by side to really get the hang of " +"properties." +msgstr "" +"现在你可以放置和绘制一个矩形,但如何放置几个呢?在这一练习中,你将并排放置三" +"个矩形来真正掌握属性的使用。" + +#: course/lesson-7-member-variables/lesson.tres:303 +msgid "Introduction to Member Variables" +msgstr "成员变量简介" diff --git a/i18n/zh_Hans/lesson-8-defining-variables.po b/i18n/zh_Hans/lesson-8-defining-variables.po new file mode 100644 index 00000000..937401f7 --- /dev/null +++ b/i18n/zh_Hans/lesson-8-defining-variables.po @@ -0,0 +1,280 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-05-16 09:25+0200\n" +"PO-Revision-Date: 2023-09-14 03:34+0000\n" +"Last-Translator: KeJun \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-8-defining-variables/lesson.tres:13 +msgid "" +"In the previous lesson, you used a predefined member variable named " +"[code]position[/code].\n" +"\n" +"In your projects, you will need to define your own variables.\n" +"\n" +"Imagine that you need to track the player's health in your game.\n" +"\n" +"They may start with [code]5[/code] health points. When taking a hit, the " +"health should go down to [code]4[/code]. After another hit, it should be " +"[code]3[/code]. And so on.\n" +"\n" +"To keep track of that, you can create a variable named [code]health[/code] " +"to which you add and subtract points.\n" +"\n" +"The example below introduces the [code]print()[/code] function, which " +"outputs its argument to the output box on the left.\n" +"\n" +"Click the [i]run()[/i] button to instantly run the entire function, and " +"click the [i]step[/i] button to execute lines of code one by one.\n" +"\n" +"The [i]Debugger[/i] panel at the bottom shows the current value of the " +"[code]health[/code] variable." +msgstr "" +"在上一课中,您使用了一个名为 [code]position[/code] 的预定义成员变量。\n" +"\n" +"在您的项目中,您需要定义自己的变量。\n" +"\n" +"想象一下,您需要在游戏中跟踪玩家的血量状况。\n" +"\n" +"它们可能从 [code]5[/code] 血量点开始。受到打击时,生命值应降至 " +"[code]4[/code]。再次受击后,应该是 [code]3[/code]。等等。\n" +"\n" +"要跟踪这一点,您可以创建一个名为 [code]health[/code] " +"的变量,您可以在其中添加和减去血量值。\n" +"\n" +"[i]下面的例子介绍了[code]print()[/code]函数,将其参数输出到左侧的输出框。[/i]" + +#: course/lesson-8-defining-variables/lesson.tres:47 +msgid "" +"After executing the first two lines of code, you will have a health variable " +"storing a value of [code]4[/code].\n" +"\n" +"Below, we'll break down how you define new variables and explain the " +"[code]print()[/code] function." +msgstr "" +"执行前两行代码后,您将拥有一个存储值 [code]4[/code] 的health变量。\n" +"\n" +"下面,我们将分解您如何定义新变量并解释 [code]print()[/code] 函数。" + +#: course/lesson-8-defining-variables/lesson.tres:57 +msgid "Defining a variable" +msgstr "定义变量" + +#: course/lesson-8-defining-variables/lesson.tres:59 +#, fuzzy +msgid "" +"To use a variable, you must first define it so the computer registers its " +"name.\n" +"\n" +"To do so, you start a line of code with the [code]var[/code] keyword " +"followed by your desired variable name. Like [code]func[/code] stands for " +"[i]function[/i], [code]var[/code] stands for [i]variable[/i].\n" +"\n" +"Variables are case-sensitive, which means [code]health[/code] and " +"[code]Health[/code] are technically different variables. Be careful to use " +"the same capitalization wherever you refer to the same variable, or you " +"could be reading or writing to a different variable.\n" +"\n" +"The following line defines a [code]health[/code] variable pointing to no " +"value. You can think of it as creating a product label you have yet to stick " +"onto something." +msgstr "" +"要使用变量,您必须首先定义它,以便计算机注册它的名称。\n" +"\n" +"为此,您使用 [code]var[/code] 关键字开始一行代码,后跟所需的变量名称。就像 " +"[code]func[/code] 代表 [i]function[/i],[code]var[/code] 代表 [i]variable[/" +"i]。\n" +"\n" +"下面的行定义了一个没有值的 [code]health[/code] 变量。您可以将其视为创建一个尚" +"未贴在某物上的产品标签。" + +#: course/lesson-8-defining-variables/lesson.tres:85 +msgid "" +"Like with functions, a member variable's name must be unique inside a given " +"code file. Creating two variables next to each other with the same name will " +"cause an error." +msgstr "" +"与函数一样,成员变量的名称在给定代码文件中必须是唯一的。创建两个相邻的具有相" +"同名称的变量将导致错误。" + +#: course/lesson-8-defining-variables/lesson.tres:105 +msgid "" +"To use a variable, you want to assign it a starting value. You can do so " +"using the equal sign (=).\n" +"\n" +"This code assigns the value [code]100[/code] to a new variable named " +"[code]health[/code]." +msgstr "" +"要使用变量,您需要为其分配一个起始值。您可以使用等号 (=) 执行此操作。\n" +"\n" +"此代码将值 [code]100[/code] 分配给名为 [code]health[/code] 的新变量。" + +#: course/lesson-8-defining-variables/lesson.tres:127 +msgid "" +"After defining your variable, you can access its value by writing the " +"variable's name." +msgstr "定义变量后,您可以通过写入变量的名称来访问其值。" + +#: course/lesson-8-defining-variables/lesson.tres:147 +msgid "" +"The code above will display the number [code]100[/code] to some output " +"window.\n" +"\n" +"Notice we don't use the [code]var[/code] keyword anymore as we only need it " +"to [i]define[/i] a variable.\n" +"\n" +"Also, once you define a variable, you can change its value anytime with the " +"equal sign." +msgstr "" +"上面的代码将在某个输出窗口显示数字 [code]100[/code]。\n" +"\n" +"请注意,我们不再使用 [code]var[/code] 关键字,因为我们只需要它来 [i]定义[/i] " +"一个变量。\n" +"\n" +"此外,一旦你定义了一个变量,你可以随时用等号改变它的值。" + +#: course/lesson-8-defining-variables/lesson.tres:169 +msgid "About the print function" +msgstr "关于print函数" + +#: course/lesson-8-defining-variables/lesson.tres:171 +msgid "" +"The [code]print()[/code] function is generally the first function you learn " +"in academic programming courses.\n" +"\n" +"It sends (\"prints\") the message or value you give it to some output " +"window, often a black window with plain white text." +msgstr "" +"[code]print()[/code] 函数通常是你在学校编程课程中学习的第一个函数。\n" +"\n" +"它将您给它的消息或值发送(“打印”)到某个输出窗口,通常是带有纯白色文本的黑色" +"窗口。" + +#: course/lesson-8-defining-variables/lesson.tres:183 +msgid "" +"Programmers often use [code]print()[/code] to quickly check the value of " +"their variables when their game runs.\n" +"\n" +"In the app, we made a special output window that captures calls to " +"[code]print()[/code] and displays a card to make it friendlier for you." +msgstr "" +"程序员经常在游戏运行时使用 [code]print()[/code] 来快速检查变量的值。\n" +"\n" +"在应用程序中,我们制作了一个特殊的输出窗口,该窗口捕获对 [code]print()[/" +"code] 的调用并显示一张卡片以使其对您更友好。" + +#: course/lesson-8-defining-variables/lesson.tres:205 +msgid "" +"Here, the verb [i]print[/i] means \"to send information to display on the " +"screen.\"\n" +"\n" +"The function \"prints\" things on your computer display; It does not relate " +"to printers." +msgstr "" +"在这里,动词 [i]print[/i] 的意思是“发送信息以显示在屏幕上”。\n" +"\n" +"该函数在您的计算机显示器上“打印”东西;它与打印机无关。" + +#: course/lesson-8-defining-variables/lesson.tres:215 +msgid "Variables are like labels" +msgstr "变量就像标签" + +#: course/lesson-8-defining-variables/lesson.tres:217 +msgid "" +"As we hinted above, in GDScript, variables work a bit like labels.\n" +"\n" +"Assigning a value to a variable is like taking your label (the variable) and " +"sticking it onto some item (the value)." +msgstr "" +"正如我们上面所暗示的,在 GDScript 中,变量的工作方式有点像标签。\n" +"\n" +"给变量赋值就像把你的标签(变量)贴到某个项(值)上。" + +#: course/lesson-8-defining-variables/lesson.tres:229 +msgid "" +"Like a supermarket has a database of product labels, the computer keeps a " +"list of all variables in your code.\n" +"\n" +"Given the variable name, the computer can look up the attached value.\n" +"\n" +"It has an important consequence. In GDScript, you can stick that label to " +"any other value." +msgstr "" +"就像超市有一个产品标签数据库一样,计算机会在您的代码中保存一份所有变量的列" +"表。\n" +"\n" +"给定变量名称,计算机可以查找对应的值。\n" +"\n" +"它有一个重要的后果。在 GDScript 中,您可以将该标签粘贴到任何其他值上。" + +#: course/lesson-8-defining-variables/lesson.tres:253 +#, fuzzy +msgid "" +"The above code is like taking a label from the appropriate item and sticking " +"it to the wrong thing:\n" +"\n" +"- At line 2, the [code]health[/code] variable holds a number.\n" +"- From line 3, [code]health[/code] holds text.\n" +"\n" +"The computer will let you do that! The code's syntax and \"grammar\" are " +"correct, but it's not good.\n" +"\n" +"Variable names should describe the value they contain, so a [code]health[/" +"code] variable with a text value will confuse your future self and other " +"coders. It can also cause errors in your game.\n" +"\n" +"Later on, we'll see how to avoid this issue with [i]variable types[/i]. For " +"now, let's practice creating variables!" +msgstr "" +"上面的代码就像从适当的项目中取出一个标签并将其粘贴到错误的东西上:\n" +"\n" +"- 在第 1 行,[code]health[/code] 变量包含一个数字。\n" +"- 从第 2 行开始,[code]health[/code] 包含文本。\n" +"\n" +"电脑会让你做到这一点!代码的句法(syntax)和“语法(grammar)”是正确的,但并不" +"好。\n" +"\n" +"稍后,我们将看到如何使用 [i] 变量类型 [/i] 来避免这个问题。现在,让我们练习创" +"建变量!" + +#: course/lesson-8-defining-variables/lesson.tres:270 +msgid "Define a health variable" +msgstr "定义health变量" + +#: course/lesson-8-defining-variables/lesson.tres:271 +msgid "" +"Define a variable named [code]health[/code] with a starting value of " +"[code]100[/code].\n" +"\n" +"You can define variables inside or outside functions. In this practice, you " +"shouldn't create a function." +msgstr "" +"定义一个名为 [code]health[/code] 的变量,其起始值为 [code]100[/code]。\n" +"\n" +"您可以在函数内部或外部定义变量。在这种做法中,您不应该创建函数。" + +#: course/lesson-8-defining-variables/lesson.tres:282 +msgid "" +"In this practice, you'll define your first variable and give it a specific " +"starting value." +msgstr "在本练习中,您将定义您的第一个变量并为其指定一个特定的起始值。" + +#: course/lesson-8-defining-variables/lesson.tres:286 +msgid "Defining Your Own Variables" +msgstr "定义你自己的变量" diff --git a/i18n/zh_Hans/lesson-9-adding-and-subtracting.po b/i18n/zh_Hans/lesson-9-adding-and-subtracting.po new file mode 100644 index 00000000..b742ae70 --- /dev/null +++ b/i18n/zh_Hans/lesson-9-adding-and-subtracting.po @@ -0,0 +1,209 @@ +# Translations template for Learn GDScript From Zero. +# Copyright (C) 2022 GDQuest +# This file is distributed under the same license as the Learn GDScript From +# Zero project. +# FIRST AUTHOR , 2022. +# +msgid "" +msgstr "" +"Project-Id-Version: Learn GDScript From Zero\n" +"Report-Msgid-Bugs-To: https://github.com/GDQuest/learn-gdscript\n" +"POT-Creation-Date: 2023-10-06 07:34+0200\n" +"PO-Revision-Date: 2022-05-08 14:10+0000\n" +"Last-Translator: 巽星石 \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.12.1\n" +"Generated-By: Babel 2.9.1\n" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:14 +#, fuzzy +msgid "" +"Our character in our game will have health by defining the [code]health[/" +"code] variable. The higher the character's health, the further away the " +"player is from losing the game.\n" +"\n" +"Health that changes adds tension to the game, especially if the player is " +"fighting with low health! It's a resource that the player should manage " +"carefully.\n" +"\n" +"The character's health might get low if an enemy attacks them or they fall " +"into a hole.\n" +"\n" +"We can create a function to represent damage in these cases." +msgstr "" +"通过定义 [code]health[/code] 变量,我们游戏中的角色将拥有生命值。角色的生命值" +"越高,玩家离输掉游戏就越远。\n" +"\n" +"生命值的变化增加了游戏的紧张感,尤其是当玩家在低生命值的情况下战斗时!这是玩" +"家应该谨慎管理的资源。\n" +"\n" +"如果敌人攻击他们或他们掉进洞里,角色的生命值可能会变低。\n" +"\n" +"我们可以创建一个函数来表示这些情况下的损坏。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:40 +#, fuzzy +msgid "" +"We pass the amount of damage the robot should take as a parameter.\n" +"\n" +"Line 2 subtracts [code]amount[/code] from [code]health[/code].\n" +"\n" +"Note the [code]-=[/code] syntax which achieves this. It's a shorthand we " +"often use.\n" +"\n" +"You can also use a longer form. Both of these lines have the same effect. " +"They both subtract the value of [code]amount[/code] from the [code]health[/" +"code] variable:\n" +"\n" +"[code]health -= amount[/code]\n" +"[code]health = health - amount[/code]\n" +"\n" +"You may notice that the health of the robot can go below [code]0[/code]. " +"We'll see how to manage this in a future lesson using [i]conditions[/i]." +msgstr "" +"我们将机器人应该承受的伤害量作为参数传递。\n" +"\n" +"第 2 行从 [code]health[/code] 中减去 [code]amount[/code]。\n" +"\n" +"请注意实现此目的的 [code]-=[/code] 语法。这是我们经常使用的速记。\n" +"\n" +"您也可以使用更长的表格。这两行具有相同的效果。它们都将 [code]amount[/code] 的" +"值减去 [code]health[/code] 变量:\n" +"\n" +"[code]健康-=数量[/code]\n" +"[code]健康=健康-金额[/code]\n" +"\n" +"您可能会注意到机器人的健康状况可能低于 [code]0[/code]。我们将在以后的课程中看" +"到如何使用 [i]conditions[/i] 来管理它。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:61 +msgid "" +"The robot's health could increase instead if the player picks up an item " +"that heals them, or if they use a healing item." +msgstr "" +"如果玩家捡起一个可以治愈他们的物品,或者如果他们使用治疗物品,机器人的健康可" +"能会增加。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:81 +msgid "" +"Here again, the health can go beyond [code]100[/code].\n" +"\n" +"Also, once more, the short line [code]health += amount[/code] is equivalent " +"to the longer form [code]health = health + amount[/code]." +msgstr "" +"在这里,健康可以超越[code]100[/code]。\n" +"\n" +"同样,短线 [code]health += amount[/code] 等价于更长的形式 [code]health = " +"health + amount[/code]。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:91 +msgid "Which of these would increase the health of the robot?" +msgstr "其中哪些会增加机器人的健康?" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:94 +msgid "" +"Both of these lines increase the [code]health[/code] of the robot by " +"[code]amount[/code].\n" +"[code]\n" +"health += amount\n" +"health = health + amount\n" +"[/code]" +msgstr "" +"这两行代码都将机器人的 [code]health[/code] 增加了 [code]数量[/code]。\n" +"[code]\n" +"health += amount\n" +"health = health + amount\n" +"[/code]" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +msgid "health -= amount" +msgstr "health -= amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +#: course/lesson-9-adding-and-subtracting/lesson.tres:100 +msgid "health += amount" +msgstr "health += amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +#: course/lesson-9-adding-and-subtracting/lesson.tres:100 +msgid "health = health + amount" +msgstr "health = health + amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:99 +msgid "health = health - amount" +msgstr "health = health - amount" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:109 +msgid "" +"In the following practices, you'll code the [code]take_damage()[/code] and " +"[code]heal()[/code] functions so the robot's health can decrease and " +"increase." +msgstr "" +"在以下实践中,您将编写 [code]take_damage()[/code] 和 [code]heal()[/code] 函" +"数,以便机器人的健康可以减少和增加。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:117 +msgid "Damaging the Robot" +msgstr "损坏机器人" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:118 +msgid "" +"In our game, the main character has a certain amount of [code]health[/code]. " +"When it gets hit, the health should go down by a varying [code]amount[/code] " +"of damage.\n" +"\n" +"Add to the [code]take_damage()[/code] function so it subtracts the " +"[code]amount[/code] to the predefined [code]health[/code] variable.\n" +"\n" +"The robot starts with 100 health and will take 50 damage." +msgstr "" +"在我们的游戏中,主角有一定的[code]health[/code]。当它被击中时,生命值应该会因" +"不同的[code]数量[/code]伤害而下降。\n" +"\n" +"添加到 [code]take_damage()[/code] 函数,以便将 [code]amount[/code] 减去预定义" +"的 [code]health[/code] 变量。\n" +"\n" +"机器人开始时有 100 点生命值,会受到 50 点伤害。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:134 +msgid "Learn how to deal damage to entities like our robot." +msgstr "了解如何对我们的机器人等实体造成伤害。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:139 +msgid "Healing the Robot" +msgstr "治愈机器人" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:140 +msgid "" +"It's time to heal the robot up to full health!\n" +"\n" +"Write a function called [code]heal()[/code] that takes [code]amount[/code] " +"as a parameter.\n" +"\n" +"The function should add [code]amount[/code] to [code]health[/code].\n" +"\n" +"The robot starts with 50 health and will heal 50 to get it up to 100." +msgstr "" +"是时候让机器人恢复健康了!\n" +"\n" +"编写一个名为 [code]heal()[/code] 的函数,将 [code]amount[/code] 作为参数。\n" +"\n" +"该函数应将 [code]amount[/code] 添加到 [code]health[/code]。\n" +"\n" +"机器人开始时有 50 点生命值,然后会治疗 50 点以使其达到 100 点。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:157 +msgid "" +"Our robot needs healing after that practice! Create a function to heal it " +"back to full health." +msgstr "练习后我们的机器人需要治疗!创建一个函数来将其恢复到完全健康状态。" + +#: course/lesson-9-adding-and-subtracting/lesson.tres:161 +msgid "Adding and Subtracting" +msgstr "加减法"