diff --git a/translations/de/try_ruby_100.md b/translations/de/try_ruby_100.md
new file mode 100644
index 00000000..b3352c5b
--- /dev/null
+++ b/translations/de/try_ruby_100.md
@@ -0,0 +1,17 @@
+---
+lang: DE
+title: Stop, du bist völlig irre!
+answer: ^\d{1,}$
+ok: Nur Strings können umgedreht werden
+error:
+---
+
+Man kann die Nummer vierzig nicht umdrehen. Ich denke, du kannst deinen Monitor
+an den Spiegel halten, aber eine Nummer umzudrehen macht einfach keinen Sinn.
+
+Ruby hat eine Fehlermeldung geworfen. Ruby sagt dir, es gibt keine Methode
+'reverse' für Nummern.
+
+Vielleicht, wenn du die Nummer zuerst in einen String umwandelst:
+
+ 40.to_s.reverse
diff --git a/translations/de/try_ruby_110.md b/translations/de/try_ruby_110.md
new file mode 100644
index 00000000..5b342863
--- /dev/null
+++ b/translations/de/try_ruby_110.md
@@ -0,0 +1,24 @@
+---
+lang: DE
+title: Äpfel sind etwas anderes als Orangen
+answer: \[\]
+ok: Super, das ist eine leere Liste
+error:
+---
+
+Und Nummern sind etwas anderes als Strings.
+
+Während du in Ruby Methoden auf jedes Objekt anwenden kannst, funktionieren
+einige Methoden nur auf bestimmte Arten von Objekten.
+Du kannst aber immer zwischen verschiedenen Typen konvertieren, indem du die
+"to"-Methoden von Ruby verwendest.
+
+- __to_s__ konvertiert Sachen in __S__trings
+- __to_i__ konvertiert Sachen in __I__nteger (Nummern)
+- __to_a__ konvertiert Sachen in __A__rrays
+
+__Was sind Arrays?!__
+
+Das sind Listen. Tippe ein Paar von Klammern ein:
+
+ []
diff --git a/translations/de/try_ruby_120.md b/translations/de/try_ruby_120.md
new file mode 100644
index 00000000..77106563
--- /dev/null
+++ b/translations/de/try_ruby_120.md
@@ -0,0 +1,20 @@
+---
+lang: DE
+title: In einer Schlange stehen
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
+ok: Ausgezeichnet
+error: Versuche, eine vierte Nummer in die Liste einzufügen
+---
+
+Listen (Arrays) speichern Dinge __in einer Reihenfolge__.
+
+Wie beim Schlange stehen für Popcorn. Du stehst hinter jemandem und würdest
+nicht im Traum daran denken, ihn zur Seite zu schieben, oder? Und den Typ, der
+hinter dir steht, behältst du genau im Auge, richtig?
+
+Hier ist eine Liste für dich. Lottozahlen:
+
+ [12, 47, 35]
+
+Versuche, eine Nummer zu dieser Liste hinzuzufügen: Gib ein Komma nach 35 ein,
+gefolgt von einer Nummer. Das Leerzeichen ist optional.
diff --git a/translations/de/try_ruby_130.md b/translations/de/try_ruby_130.md
new file mode 100644
index 00000000..ea22651f
--- /dev/null
+++ b/translations/de/try_ruby_130.md
@@ -0,0 +1,13 @@
+---
+lang: DE
+title: Einer hebt die Hand
+answer: ^47$
+ok: Okay
+error:
+---
+
+Eine Liste von Lottozahlen. Welche ist die höchste?
+
+Versuch es:
+
+ [12, 47, 35].max
diff --git a/translations/de/try_ruby_140.md b/translations/de/try_ruby_140.md
new file mode 100644
index 00000000..57be5476
--- /dev/null
+++ b/translations/de/try_ruby_140.md
@@ -0,0 +1,14 @@
+---
+lang: DE
+title: Eine Liste wegstecken
+answer: ^\[(\d+)(,\s*\d+){2,}\]$
+ok: Gespeichert!
+error:
+---
+
+Gut, gut. Aber es ist lästig, diese Liste jedes Mal neu eingeben zu müssen,
+wenn man sie braucht, nicht wahr?
+
+Speichern wir unsere Nummern in einem Ticket wie folgt:
+
+ ticket = [12, 47, 35]
diff --git a/translations/de/try_ruby_150.md b/translations/de/try_ruby_150.md
new file mode 100644
index 00000000..fb09d0ac
--- /dev/null
+++ b/translations/de/try_ruby_150.md
@@ -0,0 +1,12 @@
+---
+lang: EN
+title: Jetzt Ticket eintippen
+answer: \[(\d+(, )?){2,}\]
+load: ticket = [12, 47, 35]
+ok: Wiederhergestellt!
+error:
+---
+
+Jetzt tippe:
+
+ ticket
diff --git a/translations/de/try_ruby_160.md b/translations/de/try_ruby_160.md
new file mode 100644
index 00000000..91896db0
--- /dev/null
+++ b/translations/de/try_ruby_160.md
@@ -0,0 +1,28 @@
+---
+lang: DE
+title: Gespeichert, weggesteckt
+answer: \[12, 35, 47\]
+load: ticket = [12, 47, 35]
+ok: Du hast die Liste sortiert
+error:
+---
+
+Du hast deine Lottozahlen aufbewahrt und sie in einer __Variablen__ namens
+Ticket verstaut.
+Aber jeder andere Name, wie _jimmyslist_, wäre auch in Ordnung gewesen.
+
+Programmieren, so wirst du merken, besteht hauptsächlich aus der Arbeit mit
+Variablen.
+
+Bringen wir deine Lottozahlen in die richtige Reihenfolge, was meinst du?
+
+Benutze:
+
+ ticket.sort!
+
+Du hattest eine Liste. Du hast die Liste sortiert. Die Variable Ticket ist nun
+verändert.
+Ist dir aufgefallen, dass die Methode _sort!_ ein großes, helles Ausrufezeichen
+am Ende hat?
+Häufig brüllen Ruby-Methoden so, wenn sie die Variable dauerhaft verändern.
+Ist nichts Besonderes, nur ein Zeichen.
diff --git a/translations/de/try_ruby_170.md b/translations/de/try_ruby_170.md
new file mode 100644
index 00000000..e81b2fce
--- /dev/null
+++ b/translations/de/try_ruby_170.md
@@ -0,0 +1,39 @@
+---
+lang: DE
+title: Elementar
+answer: ^(12|35|47)$
+load: ticket = [12, 47, 35]
+ok: Ok
+error: Fast
+---
+
+Wir haben also unsere Nummern in der Variable 'ticket' gespeichert. Wie
+bekommen wir sie wieder raus?
+
+Wir haben bereits gesehen, dass wir mit __max__ die höchste Nummer ermitteln
+können. So ähnlich kannst du auch
+das erste (__first__) oder das letzte (__last__) Element der Liste abrufen.
+Aber was, wenn du ein bestimmtes Element willst?
+
+### [ ]
+Ruby verwendet die eckigen Klammern [ ], um ein Element auszuwählen.
+Die eckigen Klammern kommen in Ruby sehr häufig vor.
+Sie sind wie ein Visier, mit dem man ein Ziel anvisieren kann. Ganz genau.
+Diese Klammern bedeuten: "Ich suche nach ____". Fertig, zielen.
+
+Holen wir uns alle unsere Lottozahlen:
+
+ puts ticket[0]
+ puts ticket[1]
+ puts ticket[2]
+
+Warum benutzen wir [0], [1], [2]?
+
+Und nicht [1], [2] und [3]? Ist das so eine Art japanisches Zen-Ding?
+Nein, wir Computerleute fangen einfach gerne bei Null an zu zählen. Das ist
+nicht nur eine Ruby Sache,
+diese _nullbasierte Indizierung_ wird in den meisten Programmiersprachen
+verwendet.
+
+> Eine kurze Erinnerung: Du kannst den Button __Copy__ benutzen, um den
+Beispielcode in den Editor zu kopieren.
diff --git a/translations/de/try_ruby_180.md b/translations/de/try_ruby_180.md
new file mode 100644
index 00000000..ff503fff
--- /dev/null
+++ b/translations/de/try_ruby_180.md
@@ -0,0 +1,35 @@
+---
+lang: DE
+title: Zusammenfassung #2 ist da
+answer: \w+
+class: stretcher chapmark
+load: poem = "Mein Toast ist mir aus der Hand geflogen\nUnd mein Toast ist zum Mond geflogen.\nAber als ich es im Fernsehen sah,\nUnsere Flagge auf dem Halleyschen Kometen setzend,\nNoch mehr wollte ich es essen.\n"
+ok: Reimt es sich?
+error:
+---
+
+Schau, wie deine zweite Minute gelaufen ist:
+
+### Fehler
+Wenn du versuchst, eine Nummer umzudrehen oder irgendetwas Merkwürdiges zu tun,
+wird Ruby dich darauf hinweisen.
+
+### Arrays
+Arrays sind Listen, in denen Dinge in einer bestimmten Reihenfolge gespeichert
+werden.
+Wir wissen auch, wie man Arrays erstellt und Elemente aus Arrays abruft.
+
+### Variablen
+Variablen speichern eine Sache und geben ihr einen Namen. Dazu hast du das
+Gleichheitszeichen verwendet. So wie:
+ticket = [14, 37, 18].
+
+### 2/8
+Insgesamt gibt es acht Abschnitte. Du hast zwei Achtel des Weges geschafft! Das
+ist doch ganz einfach, findest du nicht auch? Es kommt noch mehr Gutes.
+
+Lass uns für einen Moment die Richtung wechseln. Ich habe ein wenig Poesie für
+dich in eine bestimmte Variable gestopft.
+Schau es dir an. Tippe:
+
+ puts poem
diff --git a/translations/de/try_ruby_190.md b/translations/de/try_ruby_190.md
new file mode 100644
index 00000000..288a889b
--- /dev/null
+++ b/translations/de/try_ruby_190.md
@@ -0,0 +1,17 @@
+---
+lang: DE
+title: Leider hasst du Toast-Poesie
+answer: (Toast){0}
+load: prev
+ok: Ausgezeichnet
+error: Riecht für mich immer noch nach Toast
+---
+
+Es ist schon in Ordnung. Du musst es nicht mögen. Mach was draus, wenn du
+willst. Anstelle von Toast, nimm eine Melone oder so. Probier mal das hier, um
+das neue Gedicht zu sehen:
+
+ poem.gsub("Toast", "Melonenstück")
+
+Die Methode __gsub__ ist die Abkürzung für global substitute. Sie ersetzt alle
+Vorkommen von "Toast" durch " Melonenstück".
diff --git a/translations/de/try_ruby_20.md b/translations/de/try_ruby_20.md
new file mode 100644
index 00000000..43bc52ad
--- /dev/null
+++ b/translations/de/try_ruby_20.md
@@ -0,0 +1,21 @@
+---
+lang: DE
+title: Den Editor benutzen
+answer: ^\d{1,}$
+ok: Gut! Du hast ein bisschen gerechnet. Siehst du, wie die Antwort herauskommt?
+error: Tippe 2 + 6 in den Editor
+---
+
+Gib im Editor deinen Ruby-Code ein, klicke auf den Button __Run__ und siehe,
+wie er läuft!
+
+Versuche zum Beispiel, etwas Mathe zu tippen. Wie:
+
+ 2 + 6
+
+Die Ausgabe deines Programms sollte im Ausgabefenster zu sehen sein.
+Es sollte auch eine Zeile geben, die dir sagt, wie gut du die Aufgabe gelöst
+hast.
+
+> Alternativ kannst du auch auf den Button __Copy__ klicken, um den
+Beispielcode in den Editor zu kopieren.
diff --git a/translations/de/try_ruby_200.md b/translations/de/try_ruby_200.md
new file mode 100644
index 00000000..dc827253
--- /dev/null
+++ b/translations/de/try_ruby_200.md
@@ -0,0 +1,12 @@
+---
+lang: DE
+title: Fertig, Zielen
+answer: negolfeg dnaH red sua rim tsi tsaoT nieM
+load: prev
+ok: Okay, ja. Das ganze Gedicht ist also umgedreht worden.
+error:
+---
+
+Hier eine Frage: Was passiert, wenn wir dieses ganze Gedicht umkehren?
+
+ poem.reverse
diff --git a/translations/de/try_ruby_210.md b/translations/de/try_ruby_210.md
new file mode 100644
index 00000000..313a59ad
--- /dev/null
+++ b/translations/de/try_ruby_210.md
@@ -0,0 +1,19 @@
+---
+lang: DE
+title: Too Much Reversal
+answer: ^\["Noch mehr wollte (.+)
+load: prev
+ok: Ja, fast so, wie wir es wollen
+error:
+---
+
+Das ganze Gedicht wurde also Buchstabe für Buchstabe umgedreht. Dabei wollte
+ich eigentlich nur die Zeilen umkehren.
+Verschiebe die letzte Zeile nach oben an den Anfang und die erste Zeile nach
+unten an das Ende.
+
+Rückwärts, aber nicht __so__ rückwärts.
+
+So geht's:
+
+ poem.lines.reverse
diff --git a/translations/de/try_ruby_220.md b/translations/de/try_ruby_220.md
new file mode 100644
index 00000000..89f58bf5
--- /dev/null
+++ b/translations/de/try_ruby_220.md
@@ -0,0 +1,26 @@
+---
+lang: DE
+title: Ringelreihen aus verketteten Methoden
+answer: Mein Toast ist mir aus der Hand geflogen
+load: prev
+ok: Gute Arbeit, mein Freund! Die join-Methode hat das Array von Zeilen genommen und sie zu einem String zusammengefügt.
+error:
+---
+
+Was also hast du gesehen? Was ist da passiert? Du hast __poem.lines.reverse__
+eingegeben und was ist passiert?
+
+Zwei Dinge sind passiert. Du hast das Gedicht in eine Liste umgewandelt, indem
+du 'lines' benutzt hast.
+'Lines' entscheidet über die Art der Aufteilung des Strings und konvertiert ihn
+in ein Array.
+
+Dann hast du diese Liste umgedreht. Du hattest die einzelnen Zeilen. Du hast
+sie umgedreht. Das war's.
+
+Lass uns am Ende noch eine weitere Methode hinzufügen:
+
+ puts poem.lines.reverse.join
+
+Das Kombinieren von Methoden auf diese Weise wird als _Methodenverkettung_
+bezeichnet.
\ No newline at end of file
diff --git a/translations/de/try_ruby_230.md b/translations/de/try_ruby_230.md
new file mode 100644
index 00000000..72a2395f
--- /dev/null
+++ b/translations/de/try_ruby_230.md
@@ -0,0 +1,33 @@
+---
+lang: DE
+title: Von allen Zusammenfassungen ist #3 jetzt hier
+answer: \{\}
+class: stretcher chapmark
+load: prev
+ok: Du hast einen leeren Hash gemacht!
+error:
+---
+
+### Ausrufe
+Methoden können Ausrufezeichen (und auch Fragezeichen) in ihrem Namen haben.
+Die sind nur dazu da, um ihre Funktion besser zu erklären. Nichts Besonderes.
+
+### String Manipulation
+Suche und ändere Strings
+
+### Chaining
+Mit der Verkettung von Methoden können Sie viel mehr erreichen. Zerlege das
+Gedicht, drehe es um und setze es wieder zusammen:
+__poem.lines.reverse.join__
+
+An dieser Stelle möchtest du vielleicht noch ein wenig an dem Gedicht
+herumspielen. Eine vollständige Liste aller String Methoden ist
+hier
+(auf Englisch).
+
+Probier doch mal ein paar aus, zum Beispiel: poem.downcase oder poem.swapcase
+
+## Bereit?
+Wenn du dich bereit fühlst, weiterzumachen, tippe:
+
+ books = {}
diff --git a/translations/de/try_ruby_240.md b/translations/de/try_ruby_240.md
new file mode 100644
index 00000000..9fcf325c
--- /dev/null
+++ b/translations/de/try_ruby_240.md
@@ -0,0 +1,34 @@
+---
+lang: DE
+title: Ein kleines leeres Buch
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {}
+ok: Ja, das ist eine neue Bewertung
+error: Verwende einen der Begriffe splendid, quite_good, mediocre, quite_not_good, abysmal. Den Doppelpunkt nicht vergessen
+---
+
+Du hast einen leeren __Hash__ erstellt. Ein Hash ist wie ein Array, nur dass
+jedes seiner Elemente einen Namen hat.
+
+Wir werden einige Mini-Buchrezensionen in unseren neuen Hash packen. Hier ist
+unser Bewertungssystem:
+
+- :splendid → ein Meisterwerk
+- :quite\_good → genossen, sicher, ja
+- :mediocre → gleichermaßen gut und schlecht
+- :quite\_not\_good → ausgesprochen schlecht
+- :abysmal → dampfendes Wrack
+
+Um ein Buch zu bewerten, setze den Titel in eckige Klammern und die Bewertung
+nach den Gleichheitszeichen. Zum Beispiel:
+
+ books["Gravitys Rainbow"] = :splendid
+
+> Ich denke, es ist nur angemessen, dir zu sagen, dass alle Lektionen in TryRuby
+unabhängig voneinander sind.
+> Wenn du also wild drauf los tippst, Buchbesprechungen zu schreiben, kannst du
+die nur in dieser Lektion verwenden.
+> Wenn du deine Bewertungen in der nächsten Lektion verwenden möchtest,
+solltest du sie kopieren und einfügen.
+> Mach dir nicht zu viele Gedanken darüber, jede Lektion enthält eine Menge
+vorgegebener Dinge, mit denen du herumspielen kannst.
diff --git a/translations/de/try_ruby_250.md b/translations/de/try_ruby_250.md
new file mode 100644
index 00000000..3ad54b65
--- /dev/null
+++ b/translations/de/try_ruby_250.md
@@ -0,0 +1,34 @@
+---
+lang: DE
+title: Mehr Kurzbewertungen
+answer: [3-9]
+load: books = {"Gravitys Rainbow" => :splendid}
+ok: Siehst du, die length-Methode funktioniert bei Strings, Arrays und Hashes.
+error:
+---
+
+Mach weiter, fülle sie mit Bewertungen. Und wenn du die ganze Liste sehen
+willst, tippe einfach: __puts books__
+
+Noch einmal, die Bewertungen sind: :splendid, :quite\_good, :mediocre,
+:quite\_not\_good und :abysmal.
+
+Diese Bewertungen sind keine Strings. Wenn du einen Doppelpunkt vor ein
+einfaches Wort setzt, erhältst du ein __Symbol__. Symbole sind sparsamer als
+Strings (in Bezug auf den Computerspeicher). Wenn du ein Wort immer wieder in
+deinem Programm benutzt, verwende ein Symbol. Anstatt Tausende von Kopien
+dieses Wortes im Speicher zu haben, speichert der Computer das Symbol nur
+__einmal__.
+
+Noch wichtiger ist, ein Symbol zeigt dir, dass es nicht irgendein Wort ist,
+sondern eine Bedeutung innerhalb deines Programms hat.
+
+Gib 2 weitere Buchrezensionen ein, verwende __books.length__, um zu sehen, wie
+viele Rezensionen der Hash enthält:
+
+ books["The deep end"] = :abysmal
+ books["Living colors"] = :mediocre
+
+ puts books
+
+ puts books.length
diff --git a/translations/de/try_ruby_260.md b/translations/de/try_ruby_260.md
new file mode 100644
index 00000000..2cd5fecb
--- /dev/null
+++ b/translations/de/try_ruby_260.md
@@ -0,0 +1,24 @@
+---
+lang: DE
+title: Warte, hat mir Gravity's Rainbow gefallen?
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre}
+ok: Es hat mir sehr gut gefallen
+error:
+---
+
+Eine tolle Sache an Ruby ist, dass Namen oft wiederverwendet werden, was
+weniger Namen bedeutet, die man sich merken muss.
+
+Erinnerst du dich daran, wie wir mit Hilfe einer Nummer Elemente aus einem
+Array abgerufen haben?
+__puts ticket[1]__.
+
+Bei einem Hash funktioniert das genauso, nur dass wir keine Nummer, sondern
+einen Namen verwenden, um ein Element zu erhalten.
+
+Wenn Sie also einen Ihrer alten Beiträge nachschlagen möchten, setzen Sie den
+Titel wieder in die eckigen Klammern. Aber lass die Gleichheitszeichen weg.
+Etwa so:
+
+ puts books["Gravitys Rainbow"]
diff --git a/translations/de/try_ruby_270.md b/translations/de/try_ruby_270.md
new file mode 100644
index 00000000..00656415
--- /dev/null
+++ b/translations/de/try_ruby_270.md
@@ -0,0 +1,21 @@
+---
+lang: DE
+title: Hashes als Paare
+answer: ^\[".*"\]
+load: prev
+ok: Du hast die Schlüssel gefunden
+error:
+---
+
+Vergiss nicht, dass Hashes nicht für die Reihenfolge der Dinge sorgen. Das ist
+nicht ihre Aufgabe. Sie verbinden nur zwei Dinge miteinander: einen __key
+(Schlüssel)__ und einen __value (Wert)__.
+
+In deinen Rezensionen ist der Titel des Buches der Schlüssel und die Bewertung
+ist der Wert.
+
+Wenn du nur die Titel aller Bücher sehen willst, die du bewertet hast:
+
+ books.keys
+
+Du kannst es auch mit .values anstelle von .keys ausprobieren.
\ No newline at end of file
diff --git a/translations/de/try_ruby_280.md b/translations/de/try_ruby_280.md
new file mode 100644
index 00000000..30e02e45
--- /dev/null
+++ b/translations/de/try_ruby_280.md
@@ -0,0 +1,30 @@
+---
+lang: EN
+title: Bist du hart?
+answer: :mediocre|mediocre:
+load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre, "Bumblebees" => :mediocre}
+ok: Toll, wow! Du hast eine Übersicht über deine Bewertungen erstellt
+error:
+---
+
+Verteilst du also harte, unfaire Bewertungen? Lassen Sie uns mit einem neuen
+Hash __ratings__ die Punkte zählen:
+
+Dann, okay, zählen wir jetzt deine Bewertungen zusammen. Mach einfach mit.
+Tippe:
+
+ ratings = Hash.new {0}
+
+ books.values.each { |rate|
+ ratings[rate] += 1
+ }
+
+ puts ratings
+
+Die gerade Linie im Code ist das Pipe-Zeichen, das sich wahrscheinlich links
+neben der Y-Taste auf deiner Tastatur befindet.
+
+Die Zeile _+= 1_ bedeutet: Erhöhe den Wert um 1.
+
+Mach dir keine Sorgen, wenn du nicht alles verstehst, was hier vor sich geht.
+Es wird später erklärt werden.
diff --git a/translations/de/try_ruby_290.md b/translations/de/try_ruby_290.md
new file mode 100644
index 00000000..a6a9c7d6
--- /dev/null
+++ b/translations/de/try_ruby_290.md
@@ -0,0 +1,19 @@
+---
+lang: DE
+title: Ein Strichliste
+answer: \w+
+ok: Yodelay!
+error:
+---
+
+Eines der tollen neuen Dinge, die wir gerade benutzt haben, ist ein __Block__.
+Wir werden sie in dieser und in der nächsten Lektion genauer betrachten. Aber
+im Grunde ist ein Block ein Stück Ruby-Code, das von geschweiften Klammern
+umgeben ist.
+
+Probieren wir einen anderen Block aus:
+
+ 5.times { print "Odelay! " }
+
+Blöcke sind immer mit Methoden verbunden. Wie die Methode __times__, die den
+Block nimmt und den Code immer wieder ausführt. (In unserem Beispiel: fünfmal.)
\ No newline at end of file
diff --git a/translations/de/try_ruby_30.md b/translations/de/try_ruby_30.md
new file mode 100644
index 00000000..e484b0cd
--- /dev/null
+++ b/translations/de/try_ruby_30.md
@@ -0,0 +1,14 @@
+---
+lang: DE
+title: Nummern und Mathematik
+answer: ^[0-9\.,-]{1,}$
+ok: Gut
+error:
+---
+
+Ruby erkennt Nummern und mathematische Symbole. Du kannst auch andere
+mathematische Symbole ausprobieren:
+
+ 4 * 10
+ 5 - 12
+ 30 / 4
\ No newline at end of file
diff --git a/translations/de/try_ruby_300.md b/translations/de/try_ruby_300.md
new file mode 100644
index 00000000..9987b4b8
--- /dev/null
+++ b/translations/de/try_ruby_300.md
@@ -0,0 +1,26 @@
+---
+lang: DE
+title: Hast du die Zeit?
+answer: ^[0-9]$
+ok: Du hast genau das richtige Timing!
+error: Führe den Block 0 bis 9 Mal aus
+---
+
+Wie wir im ersten Beispiel mit einem Block (beim Zählen von Bewertungen)
+gesehen haben, können wir einen Wert an den Block übergeben. Welche Werte
+__übergeben__ werden, hängt von der Methode ab, die den Block ausführt.
+
+Die Werte, die vom Block __empfangen__ werden, stehen im Variablennamen am
+Anfang des Blocks, zwischen zwei Pipe-Symbolen: |
+
+Versuchen wir das mal mit diesem Block:
+
+ 5.times { |time|
+ puts time
+ }
+
+Hier sendet die Methode __.times__ einen Wert an die Variable __|time|__. Aber
+beachte, dass die Variable time nur innerhalb des Blocks bekannt ist.
+
+> Hast du gemerkt, dass du den Code über mehrere Zeilen aufteilen kannst? Das
+macht es etwas einfacher zu lesen.
diff --git a/translations/de/try_ruby_310.md b/translations/de/try_ruby_310.md
new file mode 100644
index 00000000..9f0a2eaa
--- /dev/null
+++ b/translations/de/try_ruby_310.md
@@ -0,0 +1,23 @@
+---
+lang: DE
+title: Wir kommen zur Zusammenfassung #4
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Diese letzte Lektion war ein bisschen länger. Du hast sicher bis zu drei Minuten damit verbracht, etwas zu lernen über:
+
+### Hashes
+Das kleine Wörterbuch mit den geschweiften Seiten: __{}__
+
+### Symbole
+Kleine, effiziente Codewörter mit einem Doppelpunkt, wie: __:splendid__
+
+### Blöcke
+Codestücke, die an viele der Methoden von Ruby angehängt werden können. Hier ist der Code, den du verwendet hast, um eine Übersicht über die Bewerungen zu erstellen:
+__books.values.each { |rate| ratings[rate] += 1 }__
+
+### Als nächstes
+In der nächsten Lektion werden wir uns ein wenig näher mit Methoden beschäftigen.
diff --git a/translations/de/try_ruby_320.md b/translations/de/try_ruby_320.md
new file mode 100644
index 00000000..3d79e257
--- /dev/null
+++ b/translations/de/try_ruby_320.md
@@ -0,0 +1,43 @@
+---
+lang: DE
+title: "To (be) or not to (be)"
+answer:
+load: poem = "Mein Toast ist mir aus der Hand geflogen\nUnd mein Toast ist zum Mond geflogen.\nBlablabla\n"
+ok:
+error:
+---
+
+Eine weitere kleine Sache, über die wir noch nicht wirklich offen gesprochen
+haben: Argumente von Methoden.
+Weißt du noch, wie wir das Gedicht ein wenig verändert haben? Wir verwendeten:
+poem.gsub("Toast", "Melonenstück")
+
+Die Methode gsub benötigt 2 Argumente, die wir an gsub übergeben, indem wir
+zwei Strings zwischen Klammern einfügen. _Argumente sagen der Methode genau,
+was sie tun soll._
+
+### Klammern
+Eigentlich macht es Ruby meistens nichts aus, wenn man die Klammern weglässt.
+Das hätte also auch funktioniert:
+__poem.gsub "Toast", "Melonenstück"__
+
+Wir haben bereits eine andere Methode mit einem Parameter verwendet. Und zwar
+schon oft, obwohl es nicht sehr offensichtlich war:
+
+ puts "Hallo"
+ puts("Hallo")
+
+Ja, __puts__ ist auch eine Methode. Die Verwendung von puts mit oder ohne
+Klammern ist für Ruby dasselbe, aber die Version ohne Klammern ist etwas
+einfacher zu lesen. Und sie spart wertvolle Zeit beim Tippen!
+
+> Die Schlussfolgerung ist wohl, dass du mit Klammern machen kannst, was du
+willst, solange dein Code gut lesbar ist.
+
+### to (be) or not to (be)
+Wenn also _to_ eine Methode und _be_ ein Argument ist, kennen wir jetzt die
+Antwort auf diese uralte Frage.
+Es ist wirklich nur eine Frage der Vorliebe, ob du _ to be_ oder _to (be)_
+sein willst.
+
+Hast du Lust auf mehr Shakespeare? Lies weiter.
diff --git a/translations/de/try_ruby_330.md b/translations/de/try_ruby_330.md
new file mode 100644
index 00000000..16bdc15d
--- /dev/null
+++ b/translations/de/try_ruby_330.md
@@ -0,0 +1,37 @@
+---
+lang: DE
+title: "The Taming of the Shrew"
+answer: ^tame
+ok: Gut gut!
+error:
+---
+
+Du weißt jetzt genau, wie man Ruby benutzt. Ich meine, du hast das Wesentliche
+drauf.
+Du musst einfach immer mehr Methoden lernen und komplexere Blöcke ausprobieren.
+
+Aber es gibt eine Seite von Ruby, die wir noch nicht erledigt haben. Eigene
+Methoden zu entwickeln.
+__Ähem!__ Bringen wir es also hinter uns.
+
+Neben der Verwendung der in Ruby eingebauten Methoden (wie puts, sort, times)
+kannst du auch deine eigenen Methoden definieren. Warum ist das eine gute
+Idee? Aus zwei Gründen:
+
+### Um dein Programm kürzer zu machen
+Wenn du dasselbe in mehr als einem Teil deines Codes tun musst, ist es
+einfacher, diesen Code in eine separate Methode zu packen. Dein Code ist dann
+kürzer.
+
+### Um deinen Code leichter lesbar zu machen
+Angenommen, dein Programm muss eine Menge verschiedener Dinge tun.
+Du __könntest__ den ganzen Code in ein einzige lange Datei packen. Aber es
+wäre sehr schwierig, diesen Code später zu lesen und zu verstehen.
+
+Stattdessen solltest du deinen Code in verschiedene Methoden aufteilen und
+jeder Methode einen leicht verständlichen Namen geben. Du wirst es dir später danken.
+
+Wie definieren wir also eine Methode? Etwa so:
+
+ def tame( number_of_shrews )
+ end
diff --git a/translations/de/try_ruby_340.md b/translations/de/try_ruby_340.md
new file mode 100644
index 00000000..a8fbade2
--- /dev/null
+++ b/translations/de/try_ruby_340.md
@@ -0,0 +1,26 @@
+---
+lang: DE
+title: In Ruby bedeutet Def Leppard: definiere die Methode Leppard
+answer: ^tame
+ok: Tame ist nicht lame
+error:
+---
+
+Hey, okay, du hast es geschafft. Du hast deine eigene Methode erstellt. Du hast
+mit def begonnen, gefolgt von dem Namen der Methode.
+Und eine Liste von Argumenten, die die Methode benötigt. Das ist nicht zu
+beängstigend und gefährlich!
+Wir müssen es nur noch mit Ruby auffüllen und mit dem Ende abschließen.
+
+Hier ist der Code:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ end
+
+> __P.S.__
+> Falls du den Titel dieses Kapitels nicht verstehst.
+> Def Leppard
+> ist der Name einer einst berühmten englischen Rockband.
diff --git a/translations/de/try_ruby_350.md b/translations/de/try_ruby_350.md
new file mode 100644
index 00000000..57b0a265
--- /dev/null
+++ b/translations/de/try_ruby_350.md
@@ -0,0 +1,12 @@
+---
+lang: DE
+title: Die reife Frucht Ihrer eigenen Schöpfung
+answer: ^Tamed a shrew
+ok: Das wird es ihnen zeigen
+error:
+load: def tame(number_of_shrews);number_of_shrews.times{puts "Tamed a shrew"};end;
+---
+
+Eine neue Methode ist geboren. Wir sollten sie jetzt anwenden:
+
+ tame 5
diff --git a/translations/de/try_ruby_360.md b/translations/de/try_ruby_360.md
new file mode 100644
index 00000000..cf6a8bd7
--- /dev/null
+++ b/translations/de/try_ruby_360.md
@@ -0,0 +1,33 @@
+---
+lang: DE
+title: Geben und Nehmen
+answer: \d+
+ok: Genau richtig. Bravo.
+error:
+---
+
+Die meisten Methoden wollen nicht nur ein paar Parameter als Eingabe, sondern
+auch __etwas zurückgeben__.
+Ich habe unsere Methode ein wenig geändert, so dass sie einen Wert an Sie
+zurückgibt. Probier es aus:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ return number_of_shrews
+ end
+
+ puts tame(3)
+
+### Return
+Und da du hier so fortgeschritten und fähig wirst, noch ein Tipp: Du kannst
+das Wort __return__ in der letzten Zeile der Methode weglassen.
+Ruby gibt automagisch den letzten Wert zurück, der innerhalb der Methode
+verwendet wurde.
+
+Wir können also die letzte Zeile in einfach ändern: __number\_of\_shrews__.
+
+Aber da die Methode __.times__ auch die _number\_of\_shrews_ zurückgibt,
+können wir die gesamte letzte Zeile entfernen. Unsere ursprüngliche Methode
+hat also bereits das getan, was wir die ganze Zeit wollten!
diff --git a/translations/de/try_ruby_370.md b/translations/de/try_ruby_370.md
new file mode 100644
index 00000000..ffcff5ac
--- /dev/null
+++ b/translations/de/try_ruby_370.md
@@ -0,0 +1,28 @@
+---
+lang: DE
+title: Hallo, wer ist da? Und Zusammenfassung #5 schwenkt seinen Hut!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Gut gemacht, gut gemacht, gut gemacht, gut gemacht!
+
+Ehrlich, ehrlich, ehrlich, ehrlich, eeeeeeehrlich!
+
+Hier sind die letzten Minuten deines Lebens im Rückblick:
+
+### Methoden
+Methoden können mit __def__ definiert werden und haben einen Namen. Methoden
+machen dein Programm kürzer und einfacher zu lesen.
+
+### Parameter
+Methoden können Parameter haben.
+
+### Rückgabewerte
+Methoden geben (fast) immer einen Wert zurück.
+
+## Und nun
+"To (be) or not to (be)" ist für dich keine Frage mehr. Bist du bereit für
+etwas mehr Shakespeare?
diff --git a/translations/de/try_ruby_380.md b/translations/de/try_ruby_380.md
new file mode 100644
index 00000000..78c2b802
--- /dev/null
+++ b/translations/de/try_ruby_380.md
@@ -0,0 +1,37 @@
+---
+lang: DE
+title: Die Welt liegt uns zu Füßen
+answer: ^\{\"William
+ok: Gut. Etwas schwierig zu lesen.
+error:
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
+---
+
+Bislang haben wir Programme laufen lassen, die nur Dinge verwenden, die wir
+selbst eingegeben haben.
+Was schön ist, ich meine, dass _Odelaying_ episch war, aber dies ist das
+Internet-Zeitalter, also ist es an der Zeit, dass wir den Rest der Welt in
+unsere Programmierbemühungen mit einbeziehen.
+
+Es gibt viele, viele, viele Websites, die du um Informationen bitten kannst.
+Unter diesem Link findest du zum Beispiel alle aktuellen
+Google-Nachrichten
+über Ruby.
+
+Dein Webbrowser wird den Text wahrscheinlich recht gut anzeigen. Wenn du dir
+den Quelltext ansiehst (tippe: Strg-U), wirst du eine lange Kette von seltsam
+formatiertem Text sehen. Im Google-Beispiel ist er im Format __rss__.
+
+### Formate
+Es gibt viele andere Formate mit merkwürdigen Namen, die im Internet verfügbar
+sind und verwendet werden, wie html, xml und json. Ja, sogar diese Website
+verwendet einige von ihnen.
+
+Ich habe eine Methode für dich vorbereitet, mit der du eine Liste der
+kompletten Werke von William Shakespeare aus dem Internet holt. (Keine Sorge,
+sie kommt vom selben Server, auf dem auch diese Website läuft, wir stören also
+niemanden.)
+
+Hole die Daten mit:
+
+ get_shakey
diff --git a/translations/de/try_ruby_390.md b/translations/de/try_ruby_390.md
new file mode 100644
index 00000000..34ecd4cc
--- /dev/null
+++ b/translations/de/try_ruby_390.md
@@ -0,0 +1,56 @@
+---
+lang: DE
+title: Noble Kinsmen
+answer: ^The Two Noble Kinsmen$
+ok: Viel besser
+error:
+load: prev
+---
+
+Okay, wir haben jetzt eine Liste von Theaterstücken aus dem Internet. Die
+Liste war im json-Format. Zum Glück bietet uns Ruby eine Methode, um json-Daten
+in einen Ruby-Hash zu konvertieren. Die Methode _get\_shakey_ hat das bereits
+für uns getan.
+
+Aber da die Struktur der json-Daten im Hash beibehalten wird, ist es immer noch
+ein bisschen schwierig zu lesen. Lass uns eine Methode schreiben, welche die
+Stücke schön anzeigt.
+
+Wenn du dir die Liste der Stücke genau ansiehst, wirst du sehen, dass sie eine
+Art verschachtelte Struktur hat. (Das ist bei Daten aus dem Internet ziemlich
+üblich.) So sieht das aus:
+
+
+
"William Shakespeare"
+
+
"1"
+
+
"title": "The Two Gentlemen of Verona"
+
"finished": 1591
+
+
+
"2"
+
+
"title": "The Taming of the Shrew"
+
"finished": 1591
+
+
+
...
+
+
+
+
+Um die Stücke aufzulisten, müssen wir zunächst auf das oberste Hash-Element
+"William Shakespeare" über seinen Namen zugreifen. Als Nächstes müssen wir
+durch jedes Element darunter __iterieren__.
+
+Ruby hat eine Methode zum Iterieren. Sie heißt __each__. Wir haben sie bereits
+bei der Erstellung unseres Buchbewertungssystems gesehen.
+
+Alles, was die Methode __each__ zurückgibt, wird an einen Block übergeben:
+
+ s = get_shakey
+
+ s["William Shakespeare"].each { |key, val|
+ puts val["title"]
+ }
diff --git a/translations/de/try_ruby_40.md b/translations/de/try_ruby_40.md
new file mode 100644
index 00000000..26f3225c
--- /dev/null
+++ b/translations/de/try_ruby_40.md
@@ -0,0 +1,33 @@
+---
+lang: DE
+title: Anders ausgedrückt
+answer: ^[0-9\.,-]{1,}$
+ok: Gut ausgedrückt
+error:
+---
+
+Ist dir aufgefallen, dass du, wenn du mehr als eine Formel eingegeben hast, nur
+ die Antwort für die letzte Formel gesehen hast?
+Was ist hier los?
+
+> Um diese Website einfacher zu machen, habe ich Ruby so eingestellt, dass das
+Ergebnis deines Programms in den Ausgabebildschirm oben kopiert wird.
+> Wenn du also eine Formel eingibst, kannst du das Ergebnis sehen.
+> __Aber nur das letzte Ergebnis.__ Und nur dann, wenn die Ausgabe noch leer
+ist.
+
+Wenn du also 2 oder mehr Formeln eingegeben hast, zeigte Ruby nur das Ergebnis
+der letzten Formel an.
+
+Natürlich hast du die Möglichkeit, den Bildschirm zu steuern! Tippe einfach
+__puts__ vor jede Formel
+ein (mit einem Leerzeichen dazwischen). Puts bedeutet: *'etwas auf den
+Bildschirm drucken'*.
+
+Probier das mal:
+
+ puts 4 * 10
+ puts 5 - 12
+ puts 30 / 4
+
+Lösche nun die 'puts' aus der letzten Formel und schau, was passiert.
diff --git a/translations/de/try_ruby_400.md b/translations/de/try_ruby_400.md
new file mode 100644
index 00000000..b79d0d8b
--- /dev/null
+++ b/translations/de/try_ruby_400.md
@@ -0,0 +1,44 @@
+---
+lang: DE
+title: Jetzt alle zusammen
+answer: ^4$
+ok: Ja, Shakespeare hat 4 Stücke im Jahr 1591 geschrieben.
+error: Die Antwort für das Jahr 1591 sollte 4 sein
+load: prev
+---
+
+Nehmen wir nun an, wir wollen nur die Namen und die Anzahl der Stücke wissen,
+die Shakespeare in einem bestimmten Jahr geschrieben hat.
+
+Mit Ruby kann man Werte aus einem Hash __selektieren__. Die select-Methode
+verwendet einen Block, um zu definieren, was ausgewählt werden soll, und gibt
+das gefundene Ergebnis zurück.
+
+Wir können dann die von __select__ zurückgegebenen Ergebnisse in der __each__-
+Methode wie zuvor verwenden, indem wir sie einfach nach dem select-Block
+hinzufügen. Dies ist ein weiteres Beispiel für die Methodenverkettung, die wir
+bereits bei der Umkehrung eines Gedichts gesehen haben.
+
+Ich habe die Methode __count\_plays__ für dich vorbereitet. Versuche
+herauszufinden, wie viele Stücke von Shakespeare im Jahr __1591__ geschrieben
+wurden. Versuche es hiermit:
+
+ def count_plays(year)
+ s = get_shakey
+
+ s["William Shakespeare"]
+ .select { |k, v|
+ v["finished"] == year
+ }.each { |key, val|
+ puts val["title"]
+ }.count
+ end
+
+ puts count_plays(0)
+
+Hast du gemerkt, dass ich die count-Methode am Ende der each-Methode angehängt
+habe. Dadurch erhalten wir einen Rückgabewert für die Methode __count\_plays__.
+
+Es gibt hier eine weitere Möglichkeit der Verkettung. Siehe die einsame Zeile
+__s = get_shakey__. Man könnte __["William Shakespeare"].select { |k, v|__ am
+Ende von get_shakey hinzufügen (in diesem Fall ist kein Punkt erforderlich).
\ No newline at end of file
diff --git a/translations/de/try_ruby_410.md b/translations/de/try_ruby_410.md
new file mode 100644
index 00000000..f6d2dbdc
--- /dev/null
+++ b/translations/de/try_ruby_410.md
@@ -0,0 +1,46 @@
+---
+lang: DE
+title: Ende gut, alles gut
+answer: All's Well That Ends Well
+ok: Wahr
+error: Verwende 1605 als zweiten Parameter
+load: prev
+---
+
+Okay, wir haben uns ein paar Daten aus dem Internet besorgt, wir haben
+ausgewählt, was wir wollten und es ausgedruckt. Was können wir noch verbessern?
+Wir könnten die Ergebnisse etwas hübscher ausdrucken. Zum Beispiel das Jahr
+hinzufügen und Titel und Jahre ausrichten.
+
+Das bedeutet, mehrere Werte in einer Zeile auszugeben. Ruby hat eine nette
+Art, das zu tun. Es ist so, als würde man eine Zeichenkette ausgeben wie:
+__puts "Hallo, mein Name ist Jimmy"__ aus. Aber anstelle des literalen Wertes
+_Jimmy_ verwenden wir den Wert einer Variablen.
+
+Ersetze als erstes __Jimmy__ durch __#{}__. Wenn Ruby ein Raute-Symbol #
+gefolgt von einer geschweiften Klammer { sieht, sucht es nach einer Variablen
+zwischen der ersten Klammer und der folgenden schließenden Klammer }.
+Wir können also Folgendes verwenden: __"Hallo, mein Name ist \#{name}"__.
+
+Ändern wir unseren Code ein wenig
+
+ def print_plays(year_from, year_to)
+ get_shakey["William Shakespeare"]
+ .select { |k, v|
+ year_from <= v["finished"] &&
+ year_to >= v["finished"]
+ }.each { |k, v|
+ puts "#{v["title"].ljust(30)} #{v["finished"]}"
+ }
+ end
+ print_plays(1600, 1605)
+
+Ich habe __.ljust(30)__ zum Titel hinzugefügt. Auf diese Weise ist der Titel
+_linksbündig_ mit einer Mindestlänge von 30 Zeichen, so dass die Jahreszahlen
+hübsch angeordnet sind.
+
+Versuche, die Ausgabe des Programms so zu ändern, dass es die Stücke wie folgt
+anzeigt: __1600 -> As You Like It__
+
+__Ende gut, alles gut?__ Hey, wir sind noch nicht fertig, aber das Ende ist in
+Sicht!
diff --git a/translations/de/try_ruby_420.md b/translations/de/try_ruby_420.md
new file mode 100644
index 00000000..a807d40f
--- /dev/null
+++ b/translations/de/try_ruby_420.md
@@ -0,0 +1,39 @@
+---
+lang: DE
+title: Wenn ich nur wüsste, wie man eine Entscheidung trifft
+answer:
+ok:
+error:
+---
+
+Entscheidungsfindung, das kann im echten Leben ein echtes Problem sein. Aber
+nicht für uns.
+Ruby macht es sehr einfach, Entscheidungen zu treffen.
+
+ if 1 < 2
+ puts "It is true: 1 is less than 2"
+ end
+
+Das Schlüsselwort hier ist __if__. If kann vor einer Methode oder nach einer
+Methode platziert werden, etwa so:
+
+ puts "It is true: 1 is less than 2" if 1 < 2
+
+__If__ ist eine Methode, die einen Parameter benötigt. Dieser Parameter kann
+ein beliebiger Ausdruck sein, den du testen möchtest. Das Ergebnis des
+Ausdrucks muss entweder __true__ oder __false__ sein.
+Hier sind einige Ausdrücke mit ihren Ergebnissen:
+
+ 5 <= 10 # => true
+ 'abc' == 'def' # => false
+ true # => true
+ 123456 # => true
+ 0 # => true
+ nil # => false
+ 'xyz'.empty? # => false
+ 'a' > 5 # => error:
+ # comparison of String with
+ # Numeric failed
+
+Der _if-Ausdruck_ kann viele Formen annehmen. Er kann literale Werte (1 < 2),
+Variablen (a < 1) und den Rückgabewert einer Methode ('xyz'.empty?) vergleichen.
diff --git a/translations/de/try_ruby_430.md b/translations/de/try_ruby_430.md
new file mode 100644
index 00000000..e5a61516
--- /dev/null
+++ b/translations/de/try_ruby_430.md
@@ -0,0 +1,37 @@
+---
+lang: DE
+title: Und nun die erstaunliche Schlussfolgerung
+answer: is not equal to 100$
+ok: So ist es besser
+error: Das kann nicht richtig sein
+---
+
+Hast du die 2 Gleichheitszeichen in __'abc' == 'def'__ gesehen?
+
+Dieses __==__ bedeutet __ist gleich__.
+Das einzelne Gleichheitszeichen, das wir bereits gesehen haben, bedeutet
+__einer Variablen einen Wert zuweisen__.
+
+Um es noch verwirrender zu machen: Sie können die Zuweisung nach einer if-
+Methode so verwenden:
+
+ a = 0
+
+ if a = 100
+ puts "Expression is true, but a is now: #{a}"
+ else
+ puts "#{a} is not equal to 100"
+ end
+
+Ändere das = in == und sieh, was passiert.
+
+Ich kann dir versichern, dass du regelmäßig vergessen wirst, das zweite
+Gleichheitszeichen zu tippen. Auch ich vergesse es manchmal noch.
+
+### else
+In dem obigen Code habe ich einen else-Ausdruck hinzugefügt. Dieser Teil wird
+ausgeführt, wenn der Ausdruck __if test-expression__ zu false ausgewertet wird.
+
+> Es gibt noch weitere Varianten dieses if-then-else-Themas. Du kannst
+> hier.
+> mehr lesen (auf Englisch).
diff --git a/translations/de/try_ruby_440.md b/translations/de/try_ruby_440.md
new file mode 100644
index 00000000..898178ff
--- /dev/null
+++ b/translations/de/try_ruby_440.md
@@ -0,0 +1,32 @@
+---
+lang: DE
+title: Ich hungrig
+answer: ^Ich nicht hungrig
+ok: Ja
+error: Um 10 Uhr bin ich auf gar keinen Fall hungrig!
+---
+
+Okay, das klappt ja wunderbar. Das ist einfaches Zeug für dich, aber vergiss
+nicht, dass du vor fünfzehn Minuten noch __gar kein Ruby__ kanntest!
+
+Letzter Schritt. Verbinden wir alles miteinander, okay? Lassen wir es zusammen
+erklingen wie ein schönes, glitzerndes Glockenspiel am Strand im herrlichen
+Sonnenlicht!
+
+Wir werden zunächst zwei Methoden definieren und dann eine Entscheidung treffen:
+
+ def hungrig?(uhrzeit_in_stunden)
+ puts "Ich hungrig"
+ true
+ end
+
+ def iss_einen(was)
+ puts "Ich esse #{was}\n"
+ end
+
+ iss_einen 'Apfel' if hungrig?(14)
+
+ iss_einen 'Apfel' if hungrig?(10)
+
+Nun versuche, die Methode __hungrig?__ so zu ändern, dass sie __"Ich nicht
+hungrig"__ anzeigt und false zurückgibt, wenn die Zeit kleiner als 12 ist.
diff --git a/translations/de/try_ruby_450.md b/translations/de/try_ruby_450.md
new file mode 100644
index 00000000..fb76f634
--- /dev/null
+++ b/translations/de/try_ruby_450.md
@@ -0,0 +1,37 @@
+---
+lang: DE
+title: Zusammenfassung #6 was bedeutet, du bist schon so weit gekommen
+answer: \{\}
+class: stretcher chapmark
+ok: Ok, das ist ein leerer Hash
+error:
+---
+
+Du bist ein Ruby-Kleriker der Stufe 6. Ich meine, was für eine großartige
+Leistung du vollbracht hast. Lass uns das noch einmal durchgehen:
+
+
+### Daten
+Du hast einige Daten aus dem Internet geladen, eine Datenstruktur durchlaufen
+und Werte ausgewählt.
+
+### Iterieren
+You iterated all elements of a hash and you chained some more methods.
+
+### Hübsches Ausgeben
+Und als ob das noch nicht genug wäre, hast du einige Werte so formatiert und
+ausgedruckt, dass sie für Menschen leicht zu lesen sind. Du hast sogar __ein
+richtiges Programm gemacht!__
+
+### IF
+Du hast gelernt, mit __if__ und __else__ Anweisungen die Kontrolle über deine
+Programme zu übernehmen.
+
+## Also
+Was könnte als Nächstes kommen? Was könntest du jetzt noch lernen müssen? Ha,
+das ist der beste Teil. Du bist schon so weit gekommen, dass wir den
+Unterricht enthüllen werden. Noch zwei kurze Lektionen und du bist fertig.
+
+Vorher haben wir einen Hash wie diesen erstellt:
+
+ Hash.new
diff --git a/translations/de/try_ruby_460.md b/translations/de/try_ruby_460.md
new file mode 100644
index 00000000..1e9947a1
--- /dev/null
+++ b/translations/de/try_ruby_460.md
@@ -0,0 +1,42 @@
+---
+lang: DE
+title: Keine Schulklasse, eine Arbeiterklasse
+answer:
+ok:
+error:
+---
+
+Du siehst, die leeren geschweiften Klammern {} sind eine Abkürzung für
+Hash.new. Die Methode new wird verwendet, um Objekte einer bestimmten Klasse
+zu erzeugen. Denken Sie bei "Klasse" an die " Arbeiterklasse" — eine
+bestimmte Gruppe von Objekten, die ähnlich sind, die gleichen Jobs haben, die
+gleichen Hemden.
+Welchen Nutzen hat eine Klasse?
+
+### BlurbalizerTM
+Du hattest gerade eine brillante Idee für eine neue App. Es wird __die__
+nächste Instant-Messaging-Plattform sein. Du willst eine App, mit der man sich
+gegenseitig kurze Nachrichten schicken kann. Du nennst diese Nachrichten
+BlurbsTM. Ein BlurbTM hat eine maximale Länge von nur 40
+Zeichen. Lass uns auch eine Stimmungsanzeige machen.
+
+
+
+### Wo soll ich anfangen?
+Nun, du könntest deine BlurbsTM-Einträge in einer json-Datei
+speichern, oder?
+Aber wie kannst du den Inhalt des Eintrags und die Zeit, zu der er
+veröffentlicht wurde, nachverfolgen?
+Und wenn du die Datei geladen hast, wie würde sie in Ruby aussehen?
+Wäre es ein Hash? Oder ein Array? Oder ein Array von Arrays? Oder etwas
+anderes?
+
+### Klasse
+Ich glaube wirklich, dass du eine Klasse benutzen willst. Du bist bereits mit
+vielen Klassen vertraut:
+Hash, Array, String.
+Erstellen wir eine neue Klasse (gibt keine Ausgabe zurück):
+
+ class Blurb
+ end
diff --git a/translations/de/try_ruby_470.md b/translations/de/try_ruby_470.md
new file mode 100644
index 00000000..141e9588
--- /dev/null
+++ b/translations/de/try_ruby_470.md
@@ -0,0 +1,22 @@
+---
+lang: DE
+title: Der Stoff, aus dem Apps gemacht sind
+answer:
+ok:
+error:
+---
+
+Du hast eine neue BlurbTM-Klasse eröffnet. Woraus ist dein
+Blogeintrag gemacht?
+Der Inhalt, sicher. Auch eine Zeit, zu der der BlurbTM
+veröffentlicht wurde. Und eine Stimmung.
+
+Okay, du hast also die erste Zeile der Klasse, hier ist der Rest:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+ end
+
+Klassennamen beginnen immer mit einem Großbuchstaben.
+
+(Immer noch keine Ausgabe)
diff --git a/translations/de/try_ruby_480.md b/translations/de/try_ruby_480.md
new file mode 100644
index 00000000..31fbd180
--- /dev/null
+++ b/translations/de/try_ruby_480.md
@@ -0,0 +1,27 @@
+---
+lang: DE
+title: Accessors sind die baumelnden Gliedmaßen
+answer: Blurb:
+ok: My first Blurb
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;end
+---
+
+Hey, gute Klasse, Kumpel. Du hast eine neue BlurbTM-Klasse.
+
+In der Definition der Klasse hast du eine Methode namens attr\_accessor
+verwendet. Es gibt viele __Attr__ibute Methoden wie diese, die kleine
+Einstellungen zu Klassen hinzufügen. Diese Attribute sind einfach nur
+Variablen, die einer Klasse zugeordnet sind.
+
+Sieh es doch einmal so. Eine Klasse ist wie eine Person. Dieses sternförmige
+menschliche Ding da draußen. Und die Attribute sind die baumelnden Gliedmaßen,
+die verschiedenen Teile, aus denen ein Körper besteht und denen andere
+Menschen die Hand geben können.
+
+### Und nun
+Erstellen eines BlurbsTM und Festlegen des Inhalts:
+
+ blurb1 = Blurb.new
+ puts blurb1
+ blurb1.content = "Today Mount Hood Was Stolen!"
diff --git a/translations/de/try_ruby_490.md b/translations/de/try_ruby_490.md
new file mode 100644
index 00000000..dc2ec02a
--- /dev/null
+++ b/translations/de/try_ruby_490.md
@@ -0,0 +1,15 @@
+---
+lang: DE
+title: Ein Objekt, dieses hübsche kleine Paket
+answer: Blurb:
+ok: Blurb updated
+error:
+load: prev;blurb1=Blurb.new;blurb1.content="Today Mount Hood Was Stolen!"
+---
+
+Lost geht's, stell die BlurbTM Zeit und Stimmung ein:
+
+ blurb1.time = Time.now
+ blurb1.mood = :sick
+
+ puts blurb1
diff --git a/translations/de/try_ruby_50.md b/translations/de/try_ruby_50.md
new file mode 100644
index 00000000..dbaabff8
--- /dev/null
+++ b/translations/de/try_ruby_50.md
@@ -0,0 +1,14 @@
+---
+lang: DE
+title: Sag deinen Namen
+answer: [a-zA-Z]{1,1}
+ok: Perfekt, du hast einen String aus den Buchstaben deines Namens gebildet
+error:
+---
+
+Sicher, Computer sind praktisch und schnell für Mathe. Aber machen wir weiter.
+Willst du deinen Namen rückwärts sehen?
+
+Gib als Erstes deinen Vornamen in Anführungszeichen ein, etwa so:
+
+ "Jimmy"
diff --git a/translations/de/try_ruby_500.md b/translations/de/try_ruby_500.md
new file mode 100644
index 00000000..9ba64c25
--- /dev/null
+++ b/translations/de/try_ruby_500.md
@@ -0,0 +1,28 @@
+---
+lang: DE
+title: Aufpeppen der Sache
+answer: ^\d{4}
+ok: Notiert
+error:
+---
+
+Cool, deine App ist großartig. Hey, machen wir es dir ein bisschen leichter. Du wirst die Zeit nicht jedes Mal so eingeben wollen, wenn du BlurbTM benutzt.
+
+Du willst nur den Inhalt eingeben und die Stimmung festlegen, richtig?
+
+Fügen wir eine __initialize__-Methode zu unserer Klasse hinzu. Diese Methode wird immer dann aufgerufen, wenn ein neuer Blurb erstellt wird. Gleichzeitig können wir die Länge des Blurb-Inhalts auf 40 Zeichen begrenzen.
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+ end
+
+ Blurb.new(:sick).time
+
+(Der Parameter __content=""__ ist dazu da, um sicherzustellen, dass content eine String ist,
+auch wenn kein Parameter content an die Methode initialize übergeben wird.)
diff --git a/translations/de/try_ruby_510.md b/translations/de/try_ruby_510.md
new file mode 100644
index 00000000..eaa25555
--- /dev/null
+++ b/translations/de/try_ruby_510.md
@@ -0,0 +1,30 @@
+---
+lang: DE
+title: Du hast deiner App beigebracht, wertlose Dinge abzulehnen
+answer: Blurb:
+ok: Blurb hinzugefügt
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
+---
+
+Hast du gesehen, wie wir innerhalb der Klasse die at-Symbole (@time) verwendet
+haben?
+
+__Außerhalb__ der Klasse verwenden wir Accessors:
+
+> __blurb.time = Time.now__
+
+aber __innerhalb__ verwenden wir die __Objektvariablen__:
+
+> __@time = Time.now__
+
+Sie sind genau dasselbe, werden aber an zwei verschiedenen Stellen in deinem
+Programm verwendet.
+
+### Erstelle einen weiteren BlurbTM
+Wenn ein neuer BlurbTM erstellt wird, überprüft die Methode
+initialize, ob irgendwelche Argumente für new gibt.
+
+Äh, wir brauchen zwei Argumente:
+
+ blurb2 = Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
diff --git a/translations/de/try_ruby_520.md b/translations/de/try_ruby_520.md
new file mode 100644
index 00000000..04b34ceb
--- /dev/null
+++ b/translations/de/try_ruby_520.md
@@ -0,0 +1,30 @@
+---
+lang: DE
+title: Eine Giraffe hat nicht die Zusammenfassung #7 gestohlen
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: prev;blurb2=Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
+---
+
+Aha, du bist hier. Und alles in einem Stück. Wir werden deine App immer noch
+verwirklichen, aber bis dahin, lass uns eine Zusammenfassung anschauen, okay?
+
+### Klassen
+In Ruby ist alles eine Art von Objekt. Klassen erklären Objekte, wie ein
+bestimmtes Objekt funktioniert.
+Du hast zum Beispiel ein paar BlurbTM-Objekte erstellt, und diese
+Objekte werden in der Blurb Klasse erklärt.
+Mit anderen Worten: sie heißen Blurb-Objekte.
+Mit Klassen kann man (irgendwie) Objekte des wirklichen Lebens modellieren.
+
+### Accessors
+Accessors sind Variablen, die an ein Objekt angehängt sind und __außerhalb__
+des Objekts verwendet werden können.
+(blurb2.time = Time.now)
+
+### Objectvariablen
+Objektvariablen sind die gleichen Variablen, die man auch für Accessors
+verwendet, aber __innerhalb__ des Objekts.
+(@time = Time.now)
diff --git a/translations/de/try_ruby_530.md b/translations/de/try_ruby_530.md
new file mode 100644
index 00000000..35b5a14f
--- /dev/null
+++ b/translations/de/try_ruby_530.md
@@ -0,0 +1,51 @@
+---
+lang: DE
+title: Dein eigenes Revier
+answer: Blurbalizer:
+ok: Meine App erstellt
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end
+---
+
+Okay, bringen wir die Sache zu Ende, Kleines. Hier ist das letzte Kapitel der
+PACKENDEN, epischen Geschichte von Try Ruby!
+Jetzt, wo du einen Eindruck davon bekommen hast, wie das Ganze funktioniert,
+wie wirst du es zu Hause und in der Tiefkühltruhe deines Lebensmittelhändlers
+verwenden?
+Du bist eine großartige Person (eine meiner Favoriten), aber du brauchst
+Orientierung.
+
+### Lass uns deine App fertigstellen
+Du hast App-Einträge, aber keine eigentliche App.
+Es braucht immer noch einen Titel, einen Ort, an dem alle BlurbsTM
+gespeichert werden, und eine Timeline, um zu funktionieren.
+
+Rate mal, was, wir werden eine weitere Klasse verwenden. Ich habe den gesamten
+Code für die neue Klasse in einem Rutsch angegeben.
+__Nimm dir einfach die Zeit__, ihn zu lesen.
+Ich habe es nicht eilig, ich werde in der nächsten Lektion auf dich warten.
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = [] # A fresh clean array
+ # for storing Blurbs
+ end
+
+ def add_a_blurb(mood, content)
+ # The << means add to the end of the array
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbify: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp = Blurbalizer.new "The Big Blurb"
diff --git a/translations/de/try_ruby_540.md b/translations/de/try_ruby_540.md
new file mode 100644
index 00000000..c4748364
--- /dev/null
+++ b/translations/de/try_ruby_540.md
@@ -0,0 +1,27 @@
+---
+lang: DE
+title: Was hat es mit dem Blurb auf sich?
+answer: Today
+ok: Bring die Blurbs
+error:
+load: prev;class Blurbalizer;attr_reader :title;def initialize(title);@title=title;@blurbs=[];end;def add_a_blurb(mood, content);@blurbs << Blurb.new(mood, content);@blurbs.each {|t| t.time -= 73};end;def show_timeline;puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.time}.reverse.each { |t| puts "#{t.content.ljust(40)} #{t.time}"};end;end;myapp = Blurbalizer.new "The Big Blurb";myapp.add_a_blurb :sick,"Today Mount Hood Was Stolen!";myapp.add_a_blurb :confused,"I can not believe Mt. Hood was stolen!";myapp.add_a_blurb :dazed,"I am speechless!";myapp.add_a_blurb :mad,"It was stolen by a giraffe !!";myapp.add_a_blurb :sad,"I Left my Hoodie on the Mountain!";myapp.add_a_blurb :mad,"I am never going back to that mountain."
+---
+
+Da hast du es. Hast du herausgefunden, was der ganze Code in der Blurbalizer
+TM-Klasse macht?
+
+> In der Klasse BlurbalizerTM gibt es zwei __Methoden__ (add\_a\_blurb und show\_timeline).
+> Du kannst eine Methode außerhalb der Klasse benutzen, genau wie wir es mit den Accessors gemacht haben.
+
+Zeit, BlurbalizerTM zu verwenden. Ich habe bereits einige Blurbs
+TM für dich vorbereitet, aber du kannst gerne deine Eigenen
+hinzufügen.
+
+Wir erstellen die BlurbsTM nicht mehr direkt, sondern verwenden die
+__Methode__ add\_a\_blurb der BlurbalizerTM-Klasse. Auf diese Weise
+können wir sicher sein, dass alle unsere BlurbsTM im myapp-Objekt
+gespeichert sind.
+
+ myapp.add_a_blurb :moody, "Add Blurb here"
+
+ myapp.show_timeline
diff --git a/translations/de/try_ruby_550.md b/translations/de/try_ruby_550.md
new file mode 100644
index 00000000..08d1d6a2
--- /dev/null
+++ b/translations/de/try_ruby_550.md
@@ -0,0 +1,66 @@
+---
+lang: DE
+title: Die Kombination macht's
+answer: :-
+ok: Moody!
+error:
+load: prev
+---
+
+Mit den einfachen Teilen von Ruby lassen sich einige wunderschöne Dinge
+anstellen, besonders wenn man sie zu neuen Dingen kombiniert.
+Hier haben wir eine App, die aus einer Klasse besteht, die eine andere Klasse
+enthält. Und genau mit dieser Art von Kreaturen kann Ruby wirklich gut umgehen.
+Man nennt das objektorientierte Programmierung.
+
+Wir sind bei der __letzten Programmierübung__ von TryRuby angekommen. Wenn du
+willst, kannst du dem BlurbalizerTM noch einige weitere Funktionen hinzufügen.
+
+Vielleicht möchtest du die Stimmung als Smiley in der Methode __show_timeline__
+ausgeben. Du könntest der BlurbTM-Klasse eine _moodify_-Methode
+hinzufügen und diese Methode dann in der _show\_timeline_-Methode verwenden:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+
+ def moodify
+ if @mood == :sad
+ return ":-("
+ elsif @mood == :happy
+ return ":-)"
+ # Add other moods here
+ end
+
+ # The default mood
+ ":-|"
+ end
+ end
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = []
+ end
+
+ def add_a_blurb(mood, content)
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp.show_timeline
diff --git a/translations/de/try_ruby_560.md b/translations/de/try_ruby_560.md
new file mode 100644
index 00000000..fb450c41
--- /dev/null
+++ b/translations/de/try_ruby_560.md
@@ -0,0 +1,36 @@
+---
+lang: DE
+title: Zusammenfassung #8, dei Hey-Entspann-Dich-Das-Hast-Du-Gut-Gemacht Zusammenfassung
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: def ruby(f);puts "Geh zu www.ruby-lang.org um Ruby herunterzuladen";end;class K;attr_reader :rb;end;my_first_program=K.new
+---
+
+Dieser letzte Abschnitt brauchte einen Moment, um zur Ruhe zu kommen, um dir
+einige Hinweise zu geben, wie du Ruby verwenden kannst.
+
+Wenn du Spaß daran hattest, kannst du weitermachen mit dem
+TryRuby Playground oder Ruby herunterladen und installieren:
+ruby-lang.org
+
+Wenn du Ruby installiert hast, kannst du eine Datei, sagen wir
+_my\_first\_program.rb_, mit einem Texteditor erstellen, etwas Ruby-Code
+eingeben und ihn dann ausführen, indem du eine Eingabeaufforderung öffnest und
+eingibst:
+
+ ruby my_first_program.rb
+
+Es gibt viele (kostenlose) Entwicklungswerkzeuge, die einen Editor, einen
+Dateibrowser und einen "Ruby-Runner" kombinieren.
+
+## Zeit, zu feiern
+Du verdienst wirklich einen doppelschichtigen Kuchen mit doppeltem Zuckerguss
+und einen Mann, der eine dieser Gitarren spielt, die eine Doppelgitarre ist.
+Ich meine, du hast es geschafft, das hast du wirklich! Kein Zweifel, du bist
+ein __zertifizierter rotblütiger Schlauberger!__
+
+## Mehr Infos
+Auf dieser Website gibt es eine Reihe von Beiträgen. Sie können dir einige
+Anregungen geben, wie du von hier aus weitermachen kannst.
diff --git a/translations/de/try_ruby_60.md b/translations/de/try_ruby_60.md
new file mode 100644
index 00000000..c29a2cdd
--- /dev/null
+++ b/translations/de/try_ruby_60.md
@@ -0,0 +1,18 @@
+---
+lang: DE
+title: Sag deinen Namen rückwärts
+answer: \w+
+ok: tuG
+error:
+---
+
+Ein String ist ein Set von Zeichen, die der Computer verarbeiten kann. Stell
+dir vor, die Buchstaben sind auf einer Wäscheleine und die Anführungszeichen
+sind Wäscheklammern, die die Enden halten. Die Anführungszeichen markieren den
+Anfang und das Ende.
+
+Um deinen Namen umzukehren, tippe:
+
+ "Jimmy".reverse
+
+("Vergiss nicht den Punkt!")
diff --git a/translations/de/try_ruby_70.md b/translations/de/try_ruby_70.md
new file mode 100644
index 00000000..f7265b59
--- /dev/null
+++ b/translations/de/try_ruby_70.md
@@ -0,0 +1,16 @@
+---
+lang: DE
+title: Die Buchstaben zählen
+answer: ^\d+$
+ok: Jup. Länge ist auch eine "Methode".
+error:
+---
+
+Du hast die Reverse-__Methode__ auf deinen Namen angewendet! Indem du deinen
+Namen in Anführungszeichen gesetzt hast, hast du einen String erstellt. Dann
+hast du die Reverse-Methode aufgerufen, die bei Strings funktioniert, um alle
+Buchstaben rückwärts umzukehren.
+
+Nun wollen wir mal sehen, wie viele Buchstaben dein Name hat:
+
+ "Jimmy".length
diff --git a/translations/de/try_ruby_80.md b/translations/de/try_ruby_80.md
new file mode 100644
index 00000000..bd2c56de
--- /dev/null
+++ b/translations/de/try_ruby_80.md
@@ -0,0 +1,18 @@
+---
+lang: DE
+title: Auf Repeat
+answer: (\w+)
+ok: Schön, dich kennenzulernen.Schön, dich kennenzulernen.Schön, dich kennenzulernen.
+error:
+---
+
+Jetzt fragst du dich wahrscheinlich, wozu das alles gut sein soll.
+
+Nun, ich bin sicher, du warst schon einmal auf einer Website, die geschrien hat:
+__Hey, dein Passwort ist zu kurz!__
+
+Siehst du, manche Programme verwenden diesen einfachen __.length__-Code.
+
+Pass auf. Multiplizieren wir deinen Namen mit 5.
+
+ "Jimmy" * 5
diff --git a/translations/de/try_ruby_90.md b/translations/de/try_ruby_90.md
new file mode 100644
index 00000000..7b20846e
--- /dev/null
+++ b/translations/de/try_ruby_90.md
@@ -0,0 +1,32 @@
+---
+lang: DE
+title: Hey, schon die Zusammenfassung #1
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
+class: stretcher chapmark
+ok: Nö, es ist nicht möglich, eine Nummer umzukehren. Klick auf 'Next'
+error:
+---
+
+Sehen wir uns an, was Sie in der ersten Minute gelernt haben.
+
+### Der Editor
+Wenn du den Code in den Editor eingibst und auf Ausführen klickst, erhältst du
+eine Antwort im Ausgabefenster.
+(Fast) jeder Code gibt eine Antwort.
+
+### Nummern und Strings
+Nummern und Strings sind Rubys Mathe- und Textobjekte.
+
+### Methoden
+Du hast englischsprachige Methoden wie 'reverse' und 'length' verwendet. Und
+symbolische Methoden wie die Multiplikationsmethode: \*
+__Methoden bedeuten Aktion!__
+
+Das ist die Essenz deines Lernens. Mit einfachen Dingen zu spielen und sie in
+neue Dinge zu verwandeln. Fühlst du dich schon wohl? Ich verspreche dir, es ist
+so.
+
+## Okay,
+lass uns etwas Unangenehmes tun. Versuche, eine Nummer umzudrehen:
+
+ 40.reverse
diff --git a/translations/en/try_ruby_10.md b/translations/en/try_ruby_10.md
index 4ccaffa2..556ff877 100644
--- a/translations/en/try_ruby_10.md
+++ b/translations/en/try_ruby_10.md
@@ -1,10 +1,10 @@
---
lang: EN
title: Got 30 minutes? Give Ruby a shot right now!
-answer:
+answer:
class: stretcher chapmark
-ok:
-error:
+ok:
+error:
---
Ruby is a programming language from Japan which is revolutionizing
@@ -18,9 +18,5 @@ You can type some Ruby code in the editor and use these buttons to navigate:
- __Copy__ → Copies the example code to the editor
- __Next__ → Allows you to go to the next lesson
- __Back__ → Allows you to return to the previous lesson
-- __Clear__ → Clears the editor
-Use the 'world' button
-above to change TryRuby's language.
-
-### Click on __Next__ to start learning.
+
Click on Next to start learning.
diff --git a/translations/en/try_ruby_120.md b/translations/en/try_ruby_120.md
index f872dd96..061820d3 100644
--- a/translations/en/try_ruby_120.md
+++ b/translations/en/try_ruby_120.md
@@ -1,7 +1,7 @@
---
lang: EN
title: Standing in Line
-answer: ^\[(\d+)(,\s*\d+){3,}\]$
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
ok: Excellent
error: Try adding a fourth number to the list
---
diff --git a/translations/en/try_ruby_160.md b/translations/en/try_ruby_160.md
index 4985407b..58651300 100644
--- a/translations/en/try_ruby_160.md
+++ b/translations/en/try_ruby_160.md
@@ -1,24 +1,24 @@
---
-lang: EN
-title: Saved, Tucked Away
+lang: EN
+title: Saved, Tucked Away
answer: \[12, 35, 47\]
-load: ticket = [12, 47, 35]
-ok: You've sorted the list
-error:
+load: ticket = [12, 47, 35]
+ok: You've sorted the list
+error:
---
-You've hung on to your lotto numbers, tucking them away inside a __variable__ called ticket.
-But any other name, like _jimmyslist_, would have been fine to.
+You've hung on to your lotto numbers, tucking them away inside a **variable** called ticket.
+But any other name, like _jimmyslist_, would have been fine too.
Programming, you will discover, is mostly about working with variables.
Let's put your lotto numbers in order, how about?
-Use:
+Use:
ticket.sort!
-
+
You had a list. You sorted the list. The ticket variable is now changed.
Did you notice that the _sort!_ method has a big, bright exclamation at the end?
A lot of times Ruby methods shout like that if they alter the variable for good.
-It's nothin special, just a mark.
+It's nothing special, just a mark.
diff --git a/translations/en/try_ruby_180.md b/translations/en/try_ruby_180.md
index fd801729..43ee0121 100644
--- a/translations/en/try_ruby_180.md
+++ b/translations/en/try_ruby_180.md
@@ -15,7 +15,7 @@ If you try to reverse a number or do anything fishy, Ruby will tell you so.
### Arrays
Arrays are lists for storing things in some order.
-We also know how to create array's and get items from array's.
+We also know how to create arrays and get items from arrays.
### Variables
Variables save a thing and give it a name. You used the equals sign to do this. Like:
diff --git a/translations/en/try_ruby_190.md b/translations/en/try_ruby_190.md
index b955c034..e04bc50a 100644
--- a/translations/en/try_ruby_190.md
+++ b/translations/en/try_ruby_190.md
@@ -1,10 +1,10 @@
---
-lang: EN
-title: Sadly, You Hate Toast Poetry
+lang: EN
+title: Sadly, You Hate Toast Poetry
answer: (toast){0}
-load: prev
-ok: Excellent
-error: Still smells like toast to me
+load: prev
+ok: Excellent
+error: Still smells like toast to me
---
Look, it's okay. You don't have to like it. Hack it up, be my guest. Instead of toast, go for a
@@ -12,5 +12,5 @@ melon or something. Try this to see the new poem:
poem.gsub("toast", "honeydew")
-The __gsub__ method is short for global substitute. It replaces all occurences of "toast" with
+The **gsub** method is short for global substitute. It replaces all occurrences of "toast" with
"honeydew".
diff --git a/translations/en/try_ruby_20.md b/translations/en/try_ruby_20.md
index 0020ddf4..9422ce74 100644
--- a/translations/en/try_ruby_20.md
+++ b/translations/en/try_ruby_20.md
@@ -6,14 +6,14 @@ ok: Good! You did a bit of math. See how the answer popped out?
error: Type 2 + 6 in the editor
---
-The editor window at the bottom is where you type your Ruby code, hit the __Run__ button and
+The editor window is where you type your Ruby code. Hit the __Run__ button and
watch it run!
For example, try typing some math. Like:
2 + 6
-The output of your program should show itself at the output window at the top.
+The output of your program should show itself in the output window.
There should also be a line that tells you how well you did.
> Alternatively you can hit the __Copy__ button to copy the example code to the editor.
diff --git a/translations/en/try_ruby_200.md b/translations/en/try_ruby_200.md
index 9033f3d0..aa735a8d 100644
--- a/translations/en/try_ruby_200.md
+++ b/translations/en/try_ruby_200.md
@@ -1,7 +1,7 @@
---
lang: EN
title: Ready, Aim
-answer: ^\n.ti tae ot (.+)
+answer: dnah ym morf nwolf sah tsaot yM
load: prev
ok: Okay, sure. So the whole poem has been turned backwards.
error:
diff --git a/translations/en/try_ruby_220.md b/translations/en/try_ruby_220.md
index e831019c..21c84f00 100644
--- a/translations/en/try_ruby_220.md
+++ b/translations/en/try_ruby_220.md
@@ -1,9 +1,9 @@
---
lang: EN
title: Ringlets of Chained Methods
-answer: ^More still did (.+)
+answer: My toast has flown from my hand
load: prev
-ok: Good show, my friend! The join method took that array of lines and put them together into a string.
+ok: Good show, my friend! The join method took that array of lines and put them together into a string.
error:
---
diff --git a/translations/en/try_ruby_240.md b/translations/en/try_ruby_240.md
index 4669464f..0b0bf57f 100644
--- a/translations/en/try_ruby_240.md
+++ b/translations/en/try_ruby_240.md
@@ -4,7 +4,7 @@ title: A Wee Blank Book
answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
load: books = {}
ok: Yes that's a new review
-error: Use one of splendid, quite_good, mediocre, quite_not_good, abysmal. Don't forget the colon
+error: Use one of splendid, quite_good, mediocre, quite_not_good, abysmal. Don't forget the colon
---
You've made an empty __hash__. A hash is like an array, only every one of its elements has a name.
diff --git a/translations/en/try_ruby_250.md b/translations/en/try_ruby_250.md
index 995e8322..4e3a14a3 100644
--- a/translations/en/try_ruby_250.md
+++ b/translations/en/try_ruby_250.md
@@ -3,7 +3,7 @@ lang: EN
title: More Bite-Size Reviews
answer: [3-9]
load: books = {"Gravitys Rainbow" => :splendid}
-ok: See, the length method works on strings, array's and hashes.
+ok: See, the length method works on strings, arrays and hashes.
error:
---
@@ -16,7 +16,7 @@ Symbols are cheaper than strings (in terms of computer memory.) If you use a wor
use a symbol. Rather than having thousands of copies of that word in memory, the computer will store the symbol only
__once__.
-More importantly, a symbol tells you that is not just any old word but has a meaning within your program.
+More importantly, a symbol tells you that it is not just any old word but has a meaning within your program.
Enter 2 more bookreviews, use __books.length__ to see how many reviews there are in the hash:
diff --git a/translations/en/try_ruby_280.md b/translations/en/try_ruby_280.md
index 3097fd4d..58d8e7b7 100644
--- a/translations/en/try_ruby_280.md
+++ b/translations/en/try_ruby_280.md
@@ -1,7 +1,7 @@
---
lang: EN
title: Are You Harsh?
-answer: "mediocre"
+answer: :mediocre|mediocre:
load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre, "Bumblebees" => :mediocre}
ok: Great, wow! You've made a scorecard of your ratings
error:
diff --git a/translations/en/try_ruby_310.md b/translations/en/try_ruby_310.md
index b3bcd239..85b1fc64 100644
--- a/translations/en/try_ruby_310.md
+++ b/translations/en/try_ruby_310.md
@@ -21,4 +21,4 @@ build a scorecard:
__books.values.each { |rate| ratings[rate] += 1 }__
### Next
-In the next lesson we will delve al little bit deeper into methods.
+In the next lesson we will delve a little bit deeper into methods.
diff --git a/translations/en/try_ruby_320.md b/translations/en/try_ruby_320.md
index 8942b40c..d70bb0d7 100644
--- a/translations/en/try_ruby_320.md
+++ b/translations/en/try_ruby_320.md
@@ -12,10 +12,10 @@ Remember when we changed the poem a little bit? We used:
__poem.gsub("toast", "honeydew")__
The gsub method needs 2 arguments, which we passed to gsub by including two strings between
-parenthesis. _Arguments tell the method exactly what to do._
+parentheses. _Arguments tell the method exactly what to do._
-### Parenthesis
-Actually, most of the time Ruby doesn't mind if you omit the parenthesis. So this would have
+### Parentheses
+Actually, most of the time Ruby doesn't mind if you omit the parentheses. So this would have
worked too:
__poem.gsub "toast", "honeydew"__
@@ -25,10 +25,10 @@ obvious:
puts "Hello"
puts("Hello")
-Yes __puts__ is also a method. Using puts with or without parenthesis is the same to Ruby, but the
-version without parenthesis is a bit easier to read. And it saves you valuable typing time!
+Yes __puts__ is also a method. Using puts with or without parentheses is the same to Ruby, but the
+version without parentheses is a bit easier to read. And it saves you valuable typing time!
-> So I guess the conclusion is that you can do whatever you like with parenthesis as long as your
+> So I guess the conclusion is that you can do whatever you like with parentheses as long as your
> code reads nicely.
### to (be) or not to (be)
diff --git a/translations/en/try_ruby_380.md b/translations/en/try_ruby_380.md
index 88909568..a18fa7b4 100644
--- a/translations/en/try_ruby_380.md
+++ b/translations/en/try_ruby_380.md
@@ -4,11 +4,11 @@ title: The world is our oyster
answer: ^\{\"William
ok: Good. Bit difficult to read.
error:
-load: def get_shakey;JSON.parse("{\"William Shakespeare\": {\"1\": {\"title\": \"The Two Gentlemen of Verona\", \"finished\": 1591},\"2\": {\"title\": \"The Taming of the Shrew\", \"finished\": 1591},\"3\": {\"title\": \"Henry VI, Part 2\", \"finished\": 1591},\"4\": {\"title\": \"Henry VI, Part 3\", \"finished\": 1591},\"5\": {\"title\": \"Henry VI, Part 1\", \"finished\": 1592},\"6\": {\"title\": \"Titus Andronicus\", \"finished\": 1592},\"7\": {\"title\": \"Richard III\", \"finished\": 1593},\"8\": {\"title\": \"Edward III\", \"finished\": 1593},\"9\": {\"title\": \"The Comedy of Errors\", \"finished\": 1594},\"10\": {\"title\": \"Love's Labour's Lost\", \"finished\": 1595},\"11\": {\"title\": \"Love's Labour's Won\", \"finished\": 1596},\"12\": {\"title\": \"Richard II\", \"finished\": 1595},\"13\": {\"title\": \"Romeo and Juliet\", \"finished\": 1595},\"14\": {\"title\": \"A Midsummer Night's Dream\", \"finished\": 1595},\"15\": {\"title\": \"King John\", \"finished\": 1596},\"16\": {\"title\": \"The Merchant of Venice\", \"finished\": 1597},\"17\": {\"title\": \"Henry IV, Part 1\", \"finished\": 1597},\"18\": {\"title\": \"The Merry Wives of Windsor\", \"finished\": 1597},\"19\": {\"title\": \"Henry IV, Part 2\", \"finished\": 1598},\"20\": {\"title\": \"Much Ado About Nothing\", \"finished\": 1599},\"21\": {\"title\": \"Henry V\", \"finished\": 1599},\"22\": {\"title\": \"Julius Caesar\", \"finished\": 1599},\"23\": {\"title\": \"As You Like It\", \"finished\": 1600},\"24\": {\"title\": \"Hamlet\", \"finished\": 1601},\"25\": {\"title\": \"Twelfth Night\", \"finished\": 1601},\"26\": {\"title\": \"Troilus and Cressida\", \"finished\": 1602},\"27\": {\"title\": \"Sir Thomas More\", \"finished\": 1604},\"28\": {\"title\": \"Measure for Measure\", \"finished\": 1604},\"29\": {\"title\": \"Othello\", \"finished\": 1604},\"30\": {\"title\": \"All's Well That Ends Well\", \"finished\": 1605},\"31\": {\"title\": \"King Lear\", \"finished\": 1606},\"32\": {\"title\": \"Timon of Athens\", \"finished\": 1606},\"33\": {\"title\": \"Macbeth\", \"finished\": 1606},\"34\": {\"title\": \"Antony and Cleopatra\", \"finished\": 1606},\"35\": {\"title\": \"Pericles, Prince of Tyre\", \"finished\": 1608},\"36\": {\"title\": \"Coriolanus\", \"finished\": 1608},\"37\": {\"title\": \"The Winter's Tale\", \"finished\": 1611},\"38\": {\"title\": \"Cymbeline\", \"finished\": 1610},\"39\": {\"title\": \"The Tempest\", \"finished\": 1611},\"40\": {\"title\": \"Cardenio\", \"finished\": 1613},\"41\": {\"title\": \"Henry VIII\", \"finished\": 1613},\"42\": {\"title\": \"The Two Noble Kinsmen\", \"finished\": 1614}}}");end;
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
---
So far we have been running programs that only use things that we have typed ourselves.
-Which is nice, I mean that _Odelaying_ was epic, but this the internet era so it is about
+Which is nice, I mean that _Odelaying_ was epic, but this is the internet era so it is about
time we included the rest of the world in our programming efforts.
Many, many, many websites are available that you can ask for information. For instance
diff --git a/translations/en/try_ruby_390.md b/translations/en/try_ruby_390.md
index f6872930..9e4f0916 100644
--- a/translations/en/try_ruby_390.md
+++ b/translations/en/try_ruby_390.md
@@ -38,7 +38,7 @@ Looks like this:
-To list the plays we first have to access the top "William Shakespeare" hash element by it's name.
+To list the plays we first have to access the top "William Shakespeare" hash element by its name.
Next we have to __iterate__ through each element below it.
Ruby has a method for iterating. It is called __each__. We have seen it before when
diff --git a/translations/en/try_ruby_40.md b/translations/en/try_ruby_40.md
index ddb5fbdf..c65b0196 100644
--- a/translations/en/try_ruby_40.md
+++ b/translations/en/try_ruby_40.md
@@ -10,10 +10,10 @@ Did you notice that if you typed more than one formula you only saw the answer f
What is going on?
> To make this website easier to use I have told Ruby to copy the result of your program to the
-> output screen at the top. So when you type a formula you get to see the results.
+> output screen. So when you type a formula you get to see the results.
> __But only the last result.__ And only if the output is still empty.
-So when you entered 2 or more formula's, Ruby only showed the result of the last formula.
+So when you entered 2 or more formulas, Ruby only showed the result of the last formula.
Of course you have the power to control the screen! Just type __puts__ before each formula
(with a space in between). Puts means: *'put something on the screen'*.
diff --git a/translations/en/try_ruby_400.md b/translations/en/try_ruby_400.md
index b9bd7cda..3e8dbf6f 100644
--- a/translations/en/try_ruby_400.md
+++ b/translations/en/try_ruby_400.md
@@ -36,6 +36,6 @@ were written by Shakespeare in the year __1591__. Try this:
Did you notice that I chained the count method at the end of the each method. This gives
us a return value for the __count\_plays__ method.
-There is another possibility for chaining here. See that loney line __s = get_shakey__.
+There is another possibility for chaining here. See that lonely line __s = get_shakey__.
You could add the __["William Shakespeare"].select { |k, v|__ at the end of get_shakey
(no dot needed in this case).
diff --git a/translations/en/try_ruby_410.md b/translations/en/try_ruby_410.md
index f7f982f9..cffe2f3c 100644
--- a/translations/en/try_ruby_410.md
+++ b/translations/en/try_ruby_410.md
@@ -35,6 +35,6 @@ Let's change our code a bit
I have added __.ljust(30)__ to the title. This way the title is _left justified_ with a minimum
length of 30 characters so the years align nicely.
-See if you can change the ouput of the program so that it shows the plays like this: __1600 -> As You Like It__
+See if you can change the output of the program so that it shows the plays like this: __1600 -> As You Like It__
__All's Well That Ends Well?__ Hey we're not done yet, but the end is in sight!
diff --git a/translations/en/try_ruby_430.md b/translations/en/try_ruby_430.md
index 7de3263c..1b1f4448 100644
--- a/translations/en/try_ruby_430.md
+++ b/translations/en/try_ruby_430.md
@@ -31,4 +31,4 @@ In the code above I have added an else expression. This part will be executed wh
__if test-expression__ evaluates to false.
> There are more variations to this if-then-else theme. You can read more
-> here.
+> here.
diff --git a/translations/en/try_ruby_440.md b/translations/en/try_ruby_440.md
index c5bea888..46c44f2b 100644
--- a/translations/en/try_ruby_440.md
+++ b/translations/en/try_ruby_440.md
@@ -1,31 +1,31 @@
---
-lang: EN
-title: Me hungry
-answer: ^Me not hungry.$
-ok: Yes
-error: No way am I hungry at 10 AM!
+lang: EN
+title: Me hungry
+answer: ^Me not hungry
+ok: Yes
+error: No way am I hungry at 10 AM!
---
Okay, this is coming along wonderfully. This is simple stuff for you, but keep in mind that you
-didn't know __any Ruby whatsoever__ just fifteen minutes ago!
+didn't know **any Ruby whatsoever** just fifteen minutes ago!
Last step. Let's tie it all together, you know? Let's make it chime together like a very nice set
-of glistening chimes on the beach in the maginificent sunlight!
+of glistening chimes on the beach in the magnificent sunlight!
We'll define two methods first and then take a decision:
def hungry?(time_of_day_in_hours)
- puts "Me hungry."
+ puts "Me hungry"
true
end
def eat_an(what)
- puts "Me eat #{what}.\n"
+ puts "Me eat #{what}\n"
end
eat_an 'apple' if hungry?(14)
eat_an 'apple' if hungry?(10)
-Now see if you can change the method __hungry?__ to display __"Me not hungry"__ and returning false
+Now see if you can change the method **hungry?** to display **"Me not hungry"** and returning false
when the time is less than 12.
diff --git a/translations/en/try_ruby_450.md b/translations/en/try_ruby_450.md
index 4f00f2dc..ed62cfa7 100644
--- a/translations/en/try_ruby_450.md
+++ b/translations/en/try_ruby_450.md
@@ -11,7 +11,7 @@ You're a level six Ruby cleric. I mean what a great job you've done. Let's revie
### Data
-You loaded some data of the internet, traversed a data structure and selected values.
+You loaded some data off the internet, traversed a data structure and selected values.
### Iterating
You iterated all elements of a hash and you chained some more methods.
diff --git a/translations/en/try_ruby_500.md b/translations/en/try_ruby_500.md
index 26dc29ec..e64019dc 100644
--- a/translations/en/try_ruby_500.md
+++ b/translations/en/try_ruby_500.md
@@ -25,7 +25,7 @@ At the same time we can limit the length of the BlurbTM content to 40
end
end
- Blurb.new.time
+ Blurb.new(:sick).time
(That parameter __content=""__ is there to make sure that we know content is a string,
even if no content parameter is passed to the initialize method.)
diff --git a/translations/en/try_ruby_510.md b/translations/en/try_ruby_510.md
index a1890dcb..38b5ea4c 100644
--- a/translations/en/try_ruby_510.md
+++ b/translations/en/try_ruby_510.md
@@ -3,7 +3,7 @@ lang: EN
title: You've Taught Your App to Reject Worthless Things
answer: Blurb:
ok: Blurb added
-error:
+error:
load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
---
@@ -25,4 +25,4 @@ arguments to new.
Uh, we need two arguments:
- Blurb2 = Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
+ blurb2 = Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
diff --git a/translations/en/try_ruby_560.md b/translations/en/try_ruby_560.md
index 746e124b..150a5833 100644
--- a/translations/en/try_ruby_560.md
+++ b/translations/en/try_ruby_560.md
@@ -1,23 +1,23 @@
---
lang: EN
title: Summary #8, The Hey-Relax-You-Did-Good Summary
-answer:
+answer:
class: stretcher chapmark
ok:
error:
-load: def ruby(f);puts "Go to www.ruby-lang.org to download Ruby";end;class K;attr_reader :rb;end;my_first_progam=K.new
+load: def ruby(f);puts "Go to www.ruby-lang.org to download Ruby";end;class K;attr_reader :rb;end;my_first_program=K.new
---
This last section took a moment to wind down, to give you some pointers as to how you can use Ruby.
-If you enjoyed yourself, you can continue with the TryRuby Playground
+If you enjoyed yourself, you can continue with the TryRuby Playground
or download and install Ruby:
ruby-lang.org
-Once you have Ruby installed, you can create a file, let say _my\_first\_progam.rb_, with a text
+Once you have Ruby installed, you can create a file, let say _my\_first\_program.rb_, with a text
editor, type some Ruby code and then run it by opening a command prompt and typing:
- ruby my_first_progam.rb
+ ruby my_first_program.rb
There are many (free) development tools available that combine an editor, file browser and a
'ruby-runner'.
diff --git a/translations/en/try_ruby_90.md b/translations/en/try_ruby_90.md
index 624cc902..7e33f8de 100644
--- a/translations/en/try_ruby_90.md
+++ b/translations/en/try_ruby_90.md
@@ -1,16 +1,16 @@
---
lang: EN
title: Hey, Summary #1 Already
-answer: ^NoMethodError(.*)$
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
class: stretcher chapmark
ok: Nope, it is not possible to reverse a number. Click 'next'
-error:
+error:
---
Let's look at what you've learned in the first minute.
### The editor
-Typing code into the editor and clicking on run gives you an answer in the ouput window.
+Typing code into the editor and clicking on run gives you an answer in the output window.
(Almost) all code gives an answer.
### Numbers and strings
@@ -18,7 +18,7 @@ Numbers and strings are Ruby's math and text objects.
### Methods
You've used English-language methods like reverse and length. And symbolic methods like the
-multiplication method: \*
+multiplication method: \*
__Methods mean action!__
This is the essence of your learning. Taking simple things, toying with them and turning them into
diff --git a/translations/es/try_ruby_10.md b/translations/es/try_ruby_10.md
index f07b0200..271cf49b 100644
--- a/translations/es/try_ruby_10.md
+++ b/translations/es/try_ruby_10.md
@@ -1,10 +1,10 @@
---
lang: ES
title: ¿Tienes 30 minutos? ¡Prueba Ruby ahora mismo!
-answer:
+answer:
class: stretcher chapmark
-ok:
-error:
+ok:
+error:
---
Ruby es un lenguaje de programación de Japón que está revolucionando el desarrollo de software.
@@ -17,9 +17,5 @@ Escribe código Ruby en el editor y usa estos botones para navegar:
- __Copy__ → Copia el ejemplo al editor
- __Next__ → Avanza a la siguiente lección
- __Back__ → Retrocede a la lección anterior
-- __Clear__ → Borra el editor
-Usa el botón 'Mundo' de arriba
-para cambiar el idioma de Try Ruby.
-
-### Pulsa __Next__ para empezar a aprender.
+
Pulsa Next para empezar a aprender.
diff --git a/translations/es/try_ruby_120.md b/translations/es/try_ruby_120.md
index ac470fd4..934a8a80 100644
--- a/translations/es/try_ruby_120.md
+++ b/translations/es/try_ruby_120.md
@@ -1,7 +1,7 @@
---
lang: ES
title: En la cola
-answer: ^\[(\d+)(,\s*\d+){3,}\]$
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
ok: Excelente
error: Prueba a añadir un cuarto número a la lista
---
diff --git a/translations/es/try_ruby_200.md b/translations/es/try_ruby_200.md
index f93679c7..278e1de4 100644
--- a/translations/es/try_ruby_200.md
+++ b/translations/es/try_ruby_200.md
@@ -1,7 +1,7 @@
---
lang: ES
title: Apunten. Fuego
-answer: ^\n.ti tae ot (.+)
+answer: dnah ym morf nwolf sah tsaot yM
load: prev
ok: De acuerdo, sí. Se ha dado la vuelta el poema entero.
error:
diff --git a/translations/es/try_ruby_220.md b/translations/es/try_ruby_220.md
index ec6f053e..c91d09cf 100644
--- a/translations/es/try_ruby_220.md
+++ b/translations/es/try_ruby_220.md
@@ -1,9 +1,9 @@
---
lang: ES
title: Tirabuzón de Métodos en Cadena
-answer: ^More still did (.+)
+answer: My toast has flown from my hand
load: prev
-ok: Bien hecho, amigo mío. El método join cogió el array de líneas y las puso juntas en un string.
+ok: Bien hecho, amigo mío. El método join cogió el array de líneas y las puso juntas en un string.
error:
---
diff --git a/translations/es/try_ruby_240.md b/translations/es/try_ruby_240.md
index 1ccf8c79..77233071 100644
--- a/translations/es/try_ruby_240.md
+++ b/translations/es/try_ruby_240.md
@@ -4,7 +4,7 @@ title: Un Diminuto Libro En Blanco
answer: ^(esplendido|muy_bueno|mediocre|malo|abismal)$
load: libros = {}
ok: Sí, eso es una nueva reseña
-error: Usa uno de :esplendido, :muy_bueno, :mediocre, :malo, :abismal. No te olvides los dos puntos.
+error: Usa uno de :esplendido, :muy_bueno, :mediocre, :malo, :abismal. No te olvides los dos puntos.
---
Has creado un __hash__ vacío. Un hash es como un array, salvo que cada uno de sus elementos tiene un nombre.
diff --git a/translations/es/try_ruby_280.md b/translations/es/try_ruby_280.md
index 30e8b659..657e4d20 100644
--- a/translations/es/try_ruby_280.md
+++ b/translations/es/try_ruby_280.md
@@ -1,7 +1,7 @@
---
lang: ES
title: ¿Eres severo?
-answer: "mediocre"
+answer: :mediocre|mediocre:
load: libros = {"El Arco Iris de Gravedad" => :esplendido, "El fin profundo" => :abismal, "Colores vivientes" => :mediocre, "Abejorros" => :mediocre}
ok: ¡Genial! Has hecho un marcador de puntuaciones.
error:
diff --git a/translations/es/try_ruby_340.md b/translations/es/try_ruby_340.md
index efef23cb..820186f7 100644
--- a/translations/es/try_ruby_340.md
+++ b/translations/es/try_ruby_340.md
@@ -1,7 +1,7 @@
---
lang: ES
title: En Ruby, Def Leppard significa: define el método Leppard
-answer: ^Domé
+answer: ^domar
ok: Domar no es aburrido
error:
---
diff --git a/translations/es/try_ruby_380.md b/translations/es/try_ruby_380.md
index f338af94..d2662fba 100644
--- a/translations/es/try_ruby_380.md
+++ b/translations/es/try_ruby_380.md
@@ -4,7 +4,7 @@ title: El mundo es nuestro
answer: ^\{\"William
ok: Bien. Un poco difícil de leer
error:
-load: def get_shakey;JSON.parse("{\"William Shakespeare\": {\"1\": {\"titulo\": \"Los dos hidalgos de Verona\", \"terminado\": 1591},\"2\": {\"titulo\": \"La fierecilla domada\", \"terminado\": 1591},\"3\": {\"titulo\": \"Enrique VI, Parte 2\", \"terminado\": 1591},\"4\": {\"titulo\": \"Enrique VI, Parte 3\", \"terminado\": 1591},\"5\": {\"titulo\": \"Enrique VI, Parte 1\", \"terminado\": 1592},\"6\": {\"titulo\": \"Tito Andrónico\", \"terminado\": 1592},\"7\": {\"titulo\": \"Ricardo III\", \"terminado\": 1593},\"8\": {\"titulo\": \"Eduardo III\", \"terminado\": 1593},\"9\": {\"titulo\": \"La comedia de las equivocaciones\", \"terminado\": 1594},\"10\": {\"titulo\": \"Trabajos de amor perdidos\", \"terminado\": 1595},\"11\": {\"titulo\": \"Trabajos de amor ganados\", \"terminado\": 1596},\"12\": {\"titulo\": \"Ricardo II\", \"terminado\": 1595},\"13\": {\"titulo\": \"Romeo y Julieta\", \"terminado\": 1595},\"14\": {\"titulo\": \"El sueño de una noche de verano\", \"terminado\": 1595},\"15\": {\"titulo\": \"El rey Juan\", \"terminado\": 1596},\"16\": {\"titulo\": \"El mercader de Venecia\", \"terminado\": 1597},\"17\": {\"titulo\": \"Enrique IV, Parte 1\", \"terminado\": 1597},\"18\": {\"titulo\": \"Las alegres comadres de Windsor\", \"terminado\": 1597},\"19\": {\"titulo\": \"Enrique IV, Parte 2\", \"terminado\": 1598},\"20\": {\"titulo\": \"Mucho ruido y pocas nueces\", \"terminado\": 1599},\"21\": {\"titulo\": \"Enrique V\", \"terminado\": 1599},\"22\": {\"titulo\": \"Julio Cesar\", \"terminado\": 1599},\"23\": {\"titulo\": \"Como gustéis\", \"terminado\": 1600},\"24\": {\"titulo\": \"Hamlet\", \"terminado\": 1601},\"25\": {\"titulo\": \"La decimosegunda noche\", \"terminado\": 1601},\"26\": {\"titulo\": \"Troilo y Crésida\", \"terminado\": 1602},\"27\": {\"titulo\": \"Tomás Moro\", \"terminado\": 1604},\"28\": {\"titulo\": \"Medida por medida\", \"terminado\": 1604},\"29\": {\"titulo\": \"Otelo\", \"terminado\": 1604},\"30\": {\"titulo\": \"A buen fin no hay mal tiempo\", \"terminado\": 1605},\"31\": {\"titulo\": \"El rey Lear\", \"terminado\": 1606},\"32\": {\"titulo\": \"Timón de Atenas\", \"terminado\": 1606},\"33\": {\"titulo\": \"Macbeth\", \"terminado\": 1606},\"34\": {\"titulo\": \"Antonio y Cleopatra\", \"terminado\": 1606},\"35\": {\"titulo\": \"Pericles\", \"terminado\": 1608},\"36\": {\"titulo\": \"Coriolano\", \"terminado\": 1608},\"37\": {\"titulo\": \"Cuento de invierno\", \"terminado\": 1611},\"38\": {\"titulo\": \"Cimbelino\", \"terminado\": 1610},\"39\": {\"titulo\": \"La tempestad\", \"terminado\": 1611},\"40\": {\"titulo\": \"Cardenio\", \"terminado\": 1613},\"41\": {\"titulo\": \"Enrique VIII\", \"terminado\": 1613},\"42\": {\"titulo\": \"Los dos nobles caballeros\", \"terminado\": 1614}}}");end;
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"titulo"=>"Los dos hidalgos de Verona", "terminado"=>1591},"2"=>{"titulo"=>"La fierecilla domada", "terminado"=>1591},"3"=>{"titulo"=>"Enrique VI, Parte 2", "terminado"=>1591},"4"=>{"titulo"=>"Enrique VI, Parte 3", "terminado"=>1591},"5"=>{"titulo"=>"Enrique VI, Parte 1", "terminado"=>1592},"6"=>{"titulo"=>"Tito Andrónico", "terminado"=>1592},"7"=>{"titulo"=>"Ricardo III", "terminado"=>1593},"8"=>{"titulo"=>"Eduardo III", "terminado"=>1593},"9"=>{"titulo"=>"La comedia de las equivocaciones", "terminado"=>1594},"10"=>{"titulo"=>"Trabajos de amor perdidos", "terminado"=>1595},"11"=>{"titulo"=>"Trabajos de amor ganados", "terminado"=>1596},"12"=>{"titulo"=>"Ricardo II", "terminado"=>1595},"13"=>{"titulo"=>"Romeo y Julieta", "terminado"=>1595},"14"=>{"titulo"=>"El sueño de una noche de verano", "terminado"=>1595},"15"=>{"titulo"=>"El rey Juan", "terminado"=>1596},"16"=>{"titulo"=>"El mercader de Venecia", "terminado"=>1597},"17"=>{"titulo"=>"Enrique IV, Parte 1", "terminado"=>1597},"18"=>{"titulo"=>"Las alegres comadres de Windsor", "terminado"=>1597},"19"=>{"titulo"=>"Enrique IV, Parte 2", "terminado"=>1598},"20"=>{"titulo"=>"Mucho ruido y pocas nueces", "terminado"=>1599},"21"=>{"titulo"=>"Enrique V", "terminado"=>1599},"22"=>{"titulo"=>"Julio Cesar", "terminado"=>1599},"23"=>{"titulo"=>"Como gustéis", "terminado"=>1600},"24"=>{"titulo"=>"Hamlet", "terminado"=>1601},"25"=>{"titulo"=>"La decimosegunda noche", "terminado"=>1601},"26"=>{"titulo"=>"Troilo y Crésida", "terminado"=>1602},"27"=>{"titulo"=>"Tomás Moro", "terminado"=>1604},"28"=>{"titulo"=>"Medida por medida", "terminado"=>1604},"29"=>{"titulo"=>"Otelo", "terminado"=>1604},"30"=>{"titulo"=>"A buen fin no hay mal tiempo", "terminado"=>1605},"31"=>{"titulo"=>"El rey Lear", "terminado"=>1606},"32"=>{"titulo"=>"Timón de Atenas", "terminado"=>1606},"33"=>{"titulo"=>"Macbeth", "terminado"=>1606},"34"=>{"titulo"=>"Antonio y Cleopatra", "terminado"=>1606},"35"=>{"titulo"=>"Pericles", "terminado"=>1608},"36"=>{"titulo"=>"Coriolano", "terminado"=>1608},"37"=>{"titulo"=>"Cuento de invierno", "terminado"=>1611},"38"=>{"titulo"=>"Cimbelino", "terminado"=>1610},"39"=>{"titulo"=>"La tempestad", "terminado"=>1611},"40"=>{"titulo"=>"Cardenio", "terminado"=>1613},"41"=>{"titulo"=>"Enrique VIII", "terminado"=>1613},"42"=>{"titulo"=>"Los dos nobles caballeros", "terminado"=>1614}}}; end;
---
Hasta ahora hemos ejecutado programas que usan solamente cosas que hemos tecleado nosotros mismos.
diff --git a/translations/es/try_ruby_430.md b/translations/es/try_ruby_430.md
index 9b7a5d2d..a12da51b 100644
--- a/translations/es/try_ruby_430.md
+++ b/translations/es/try_ruby_430.md
@@ -30,4 +30,4 @@ Te garantizo que se te olvidará teclear el segundo símbolo de igual con bastan
En el código de arriba he añadido una expresión else. Esta es la parte que se ejecutará cuando la __expresión del if__ se evalua a false.
> Hay más variantes de este if-then-else. Puedes leer más
-> aquí.
+> aquí.
diff --git a/translations/es/try_ruby_440.md b/translations/es/try_ruby_440.md
index 2856bb10..a2030e61 100644
--- a/translations/es/try_ruby_440.md
+++ b/translations/es/try_ruby_440.md
@@ -1,7 +1,7 @@
---
lang: ES
title: Tengo hambre
-answer: ^No tengo hambre.$
+answer: ^No tengo hambre
ok: Sí
error: ¡ No es posible tener hambre a las 10 AM !
---
@@ -13,12 +13,12 @@ Ultimo paso. Juntémoslo todo, ¿de acuerdo? Hagamoslo repicar todo como un conj
Definamos dos métodos y luego tomaremos una decisión:
def hambre?(hora_del_dia)
- puts "Tengo hambre."
+ puts "Tengo hambre"
true
end
def come(que)
- puts "Me como un #{que}.\n"
+ puts "Me como un #{que}\n"
end
come 'manzana' if hambre?(14)
diff --git a/translations/es/try_ruby_500.md b/translations/es/try_ruby_500.md
index 64d09fa8..b277d8ed 100644
--- a/translations/es/try_ruby_500.md
+++ b/translations/es/try_ruby_500.md
@@ -24,6 +24,6 @@ A la misma vez podemos limitar la longitud del contenido del BlurbTM
end
end
- Blurb.new.tiempo
+ Blurb.new(:sick).tiempo
(Ese parámetro __contenido=""__ está ahí para asegurarnos de que tenemos un string como contenido, aunque no le pasemos nada al método initialize).
diff --git a/translations/es/try_ruby_510.md b/translations/es/try_ruby_510.md
index 2c9a9d2a..b62d7454 100644
--- a/translations/es/try_ruby_510.md
+++ b/translations/es/try_ruby_510.md
@@ -3,7 +3,7 @@ lang: ES
title: Has Enseñado a tu Aplicación a Rechazar Cosas Sin Valor
answer: Blurb:
ok: Blurb añadido
-error:
+error:
load: class Blurb;attr_accessor :contenido,:tiempo,:animo;def initialize(animo, contenido="");@tiempo=Time.now;@contenido=contenido[0..39];@animo=animo;end;end;blurb1=Blurb.new(:enfermo,"¡El Everest ha sido robado!")
---
@@ -24,4 +24,4 @@ Cuando se crea un nuevo BlurbTM, se usa el método initialize para ch
Eh, necesitamos dos argumentos:
- Blurb2 = Blurb.new :confuso, "¡No puedo creer que hayan robado el Everest!"
+ blurb2 = Blurb.new :confuso, "¡No puedo creer que hayan robado el Everest!"
diff --git a/translations/es/try_ruby_560.md b/translations/es/try_ruby_560.md
index 37e5f5f2..0ef10464 100644
--- a/translations/es/try_ruby_560.md
+++ b/translations/es/try_ruby_560.md
@@ -10,7 +10,7 @@ load: def ruby(f);puts "Ve a www.ruby-lang.org para descargar Ruby";end;class
Esta última sección se tomó un momento para relajarse, y darte algunas pistas de cómo puedes usar Ruby.
-Si has disfrutado, puedes seguir con la zona de juegos TryRuby Playground
+Si has disfrutado, puedes seguir con la zona de juegos TryRuby Playground
o descargarte e instalar Ruby:
ruby-lang.org
diff --git a/translations/es/try_ruby_90.md b/translations/es/try_ruby_90.md
index 1a3a7ee7..400d9b25 100644
--- a/translations/es/try_ruby_90.md
+++ b/translations/es/try_ruby_90.md
@@ -1,10 +1,10 @@
---
lang: ES
title: Ey, Sumario #1 Ya
-answer: ^NoMethodError(.*)$
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
class: stretcher chapmark
ok: Nop, no es posible dar la vuelta a un número. Pulsa 'next'
-error:
+error:
---
Echemos un vistazo a lo que has aprendido en el primer minuto.
@@ -17,7 +17,7 @@ Escribir código en el editor y pulsar __run__ te da una respuesta en la ventana
Los números y los strings (las cadenas de texto) son los objetos de Ruby para las mates y los textos.
### Métodos
-Ya has usado métodos de lenguaje como dar la __vuelta__ (reverse) o __tamaño__ (length). Y también métodos simbólicos como la multiplicación: \*
+Ya has usado métodos de lenguaje como dar la __vuelta__ (reverse) o __tamaño__ (length). Y también métodos simbólicos como la multiplicación: \*
__Los Métodos significan acción!__
Esta es la esencia de tu aprendizaje. Coger cosas simples, jugar con ellas y convertirlas en cosas nuevas. ¿Te sientes cómodo? Seguro que sí.
diff --git a/translations/fr/README.md b/translations/fr/README.md
new file mode 100644
index 00000000..01688464
--- /dev/null
+++ b/translations/fr/README.md
@@ -0,0 +1,21 @@
+## Copyright (C)
+Try Ruby version 4 French translation, 2018, _Olivier Lacan_, 2024, _Idris TAKERBOUST_
+
+## The MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/translations/fr/try_ruby_10.md b/translations/fr/try_ruby_10.md
new file mode 100644
index 00000000..46f7ad65
--- /dev/null
+++ b/translations/fr/try_ruby_10.md
@@ -0,0 +1,23 @@
+---
+lang: FR
+title: 30 minutes de libre ? Essaie Ruby !
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Ruby est un language de programmation originaire du Japon qui a
+révolutionné le développement logiciel.
+
+La beauté de Ruby réside dans son équilibre entre simplicité et puissance.
+
+Tu peux saisir du code Ruby dans l'éditeur et utiliser les boutons suivants pour naviguer :
+
+- __Run__ → Executer le code dans l'éditeur
+- __Copy__ → Copier le code d'exemple dans l'éditeur
+- __Next__ → Basculer à la leçon suivante
+- __Back__ → Revenir à la leçon précédente
+
+
Clique sur Next pour commencer à apprendre.
+
diff --git a/translations/fr/try_ruby_100.md b/translations/fr/try_ruby_100.md
new file mode 100644
index 00000000..447be28a
--- /dev/null
+++ b/translations/fr/try_ruby_100.md
@@ -0,0 +1,18 @@
+---
+lang: FR
+title: Stop, t'es barge !
+answer: ^\d{1,}$
+ok: Seuls les strings peuvent être inversés
+error:
+---
+
+On ne peut pas inverser le nombre quarante. J'imagine que tu
+pourrais tenir ton moniteur en face d'un mirroir, mais inverser un
+nombre n'est pas franchement très logique.
+
+Ruby a lancé un message d'erreur. Ruby t'explique qu'il n'y a pas de
+méthode pour inverser des nombres.
+
+Tu pourrais peut-être transformer ce nombre en string pour commencer :
+
+ 40.to_s.reverse
diff --git a/translations/fr/try_ruby_110.md b/translations/fr/try_ruby_110.md
new file mode 100644
index 00000000..32f5f6d7
--- /dev/null
+++ b/translations/fr/try_ruby_110.md
@@ -0,0 +1,24 @@
+---
+lang: FR
+title: Les pommes ne sont pas des oranges.
+answer: \[\]
+ok: Parfait, voilà une liste vide.
+error:
+---
+
+Et les nombres sont différents des strings.
+
+Bien qu'il soit possible d'utiliser des méthodes sur n'importe quel
+objet avec Ruby, certaines méthodes ne fonctionnent qu'avec certains
+types de choses. Mais il est toujours possible de passer d'un type à un
+autre avec les méthodes "to" to Ruby.
+
+- __to_s__ convertit les choses en __s__trings (chaîne de caractères)
+- __to_i__ convertit les choses en __i__ntegers (nombres entiers)
+- __to_a__ convertit les choses en __a__rrays (listes / tableaux)
+
+__Qu'est-ce qu'un array ?!__
+
+C'est une liste. Saisis une paire de crochets :
+
+ []
diff --git a/translations/fr/try_ruby_120.md b/translations/fr/try_ruby_120.md
new file mode 100644
index 00000000..8dff828d
--- /dev/null
+++ b/translations/fr/try_ruby_120.md
@@ -0,0 +1,21 @@
+---
+lang: FR
+title: Faire la queue
+answer: ^\[(\d+)(,\s*\d+){3,}\]$
+ok: Excellent
+error: Essaye d'ajouter un quatrième nombre à la liste
+---
+
+Les listes (arrays) stockent des choses __dans un ordre défini__.
+
+C'est un peu comme faire la queue pour acheter une baguette. Tu es
+derrière quelqu'un et ce sera impensable de les pousser pour passer
+devant, non? Et le mec derrière toi, tu gardes un œil sur lui, juste au
+cas où ?
+
+Voilà une liste pour toi. Des numéros de lotterie :
+
+ [12, 47, 35]
+
+Essaie d'ajouter un nombre à cette liste: saisis une virgule après 35
+suivie d'un nombre. L'espace est facultatif.
diff --git a/translations/fr/try_ruby_130.md b/translations/fr/try_ruby_130.md
new file mode 100644
index 00000000..859e1daa
--- /dev/null
+++ b/translations/fr/try_ruby_130.md
@@ -0,0 +1,13 @@
+---
+lang: FR
+title: Un d'entre eux lève la main
+answer: ^47$
+ok: D'accord
+error:
+---
+
+Une liste de numéros de lotterie. Lequel est le plus grand ?
+
+Essaye:
+
+ [12, 47, 35].max
diff --git a/translations/fr/try_ruby_140.md b/translations/fr/try_ruby_140.md
new file mode 100644
index 00000000..148aab45
--- /dev/null
+++ b/translations/fr/try_ruby_140.md
@@ -0,0 +1,14 @@
+---
+lang: FR
+title: Ranger une liste proprement
+answer: ^\[(\d+)(,\s*\d+){2,}\]$
+ok: Sauvegardé !
+error:
+---
+
+Bien, bien. Cela dit c'est ennuyant d'avoir à retaper cette liste chaque
+fois que tu en as besoin, non ?
+
+Sauvegardons nos numéros dans un ticket comme ça :
+
+ ticket = [12, 47, 35]
diff --git a/translations/fr/try_ruby_150.md b/translations/fr/try_ruby_150.md
new file mode 100644
index 00000000..2ab986f9
--- /dev/null
+++ b/translations/fr/try_ruby_150.md
@@ -0,0 +1,12 @@
+---
+lang: FR
+title: Maintenant entre ticket
+answer: \[(\d+(, )?){2,}\]
+load: ticket = [12, 47, 35]
+ok: Réstoré!
+error:
+---
+
+Maintenant, saisi:
+
+ ticket
diff --git a/translations/fr/try_ruby_160.md b/translations/fr/try_ruby_160.md
new file mode 100644
index 00000000..b90af4b4
--- /dev/null
+++ b/translations/fr/try_ruby_160.md
@@ -0,0 +1,27 @@
+---
+lang: FR
+title: Sauvegardé, rangé proprement
+answer: \[12, 35, 47\]
+load: ticket = [12, 47, 35]
+ok: Tu as organisé la liste en ordre
+error:
+---
+
+Tu as gardé tes numéro de lotto en les rangeant dans une __variable__
+nommée ticket. Mais n'importe quel autre nom, comme _lalistedejimmy_,
+aurait aussi fait l'affaire.
+
+Comme tu découvriras, la programmation c'est surtout jongler avec des
+variables.
+
+Mettons les numéros de lotto dans l'ordre.
+
+Utilise:
+
+ ticket.sort!
+
+Tu avais une liste. Tu as organisé la liste dans l'ordre. La variable
+ticket a maintenant changé Est-ce que tu as remarqué que la méthode
+_sort!_ a un gros point d'exclamation à la fin ? Souvent les méthodes
+Ruby crient comme ça lorsqu'elle modifient une variable pour de bon.
+C'est rien de grave, juste une ponctuation.
diff --git a/translations/fr/try_ruby_170.md b/translations/fr/try_ruby_170.md
new file mode 100644
index 00000000..38d62934
--- /dev/null
+++ b/translations/fr/try_ruby_170.md
@@ -0,0 +1,37 @@
+---
+lang: FR
+title: Élementaire
+answer: ^(12|35|47)$
+load: ticket = [12, 47, 35]
+ok: D'accord
+error: Presque
+---
+
+Donc nous avons stocké nos numéros de loterie dans la variable ticket.
+Comment faire pour les retrouver ?
+
+On a déjà vu qu'il est possible d'obtenir le numéro le plus élevé avec __max__.
+On peut également obtenir le premier (__first__) ou le dernier (__last__)
+élement de la liste.
+Mais que faire si on a besoin d'un élement specifique de la liste?
+
+### [ ]
+Ruby utilise des crochets droits [ ] pour viser un élement.
+Les crochets droits sont très commun dans Ruby.
+Ce sont comme des lunettes de visée pour aligner une cible. Exactement.
+Ces crochets signifient, "Je cherche ____". Prêt, vises.
+
+Recupèrons tous nos numéros de lotto :
+
+ puts ticket[0]
+ puts ticket[1]
+ puts ticket[2]
+
+Pourquoi utiliser [0], [1], [2] ?
+
+Et pourquoi pas [1], [2] and [3] ? Est-ce que c'est une éspèce de truc Zen japonais ?
+Non, nous autre les amis des ordinateurs on préfère juste commencer à compter à
+partir de zéro. C'est pas juste un truc dans Ruby, ça s'appelle _l'indexation à
+base zéro_ et c'est utilisé dans la plupart des languages de programmation.
+
+> Un petit rappel : tu peux utiliser le bouton __Copy__ pour recopier l'exemple de code dans l'éditeur.
diff --git a/translations/fr/try_ruby_180.md b/translations/fr/try_ruby_180.md
new file mode 100644
index 00000000..7818e7da
--- /dev/null
+++ b/translations/fr/try_ruby_180.md
@@ -0,0 +1,34 @@
+---
+lang: FR
+title: Le résumé #2 est arrivé
+answer: \w+
+class: stretcher chapmark
+load: poem = "My toast has flown from my hand\nAnd my toast has gone to the moon.\nBut when I saw it on television,\nPlanting our flag on Halley's comet,\nMore still did I want to eat it.\n"
+ok: Est-ce que ça rime?
+error:
+---
+
+Jettons un œil à ce qui s'est passé pendant ta deuxième minute:
+
+### Erreurs
+Si tu essayes d'inverser un nombre ou de faire des choses bizarres, Ruby
+te dira ce qui ne va pas.
+
+### Listes
+Les arrays sont des listes pour stocker des choses dans un ordre
+spécifique. On sait égaelement comment créer un array et récuperer des
+élement dans un array.
+
+### Variables
+Les variables sauvegardent une chose et lui donne un nom. Tu as utilisé
+le signe égal pour ça. Par example: ticket = [14, 37, 18].
+
+### 2/8
+En tout il y a huit sections. Tu as fini deux-huitièmes du chemin! C'est
+pas si compliqué, non? Et il y a plein de bonnes choses à suivre.
+
+Changeons de direction pour un instant. J'ai mis un petit bout de poésie
+pour toi dans une certaine variable.
+Jette un œil. Saisi:
+
+ puts poem
diff --git a/translations/fr/try_ruby_190.md b/translations/fr/try_ruby_190.md
new file mode 100644
index 00000000..346ae874
--- /dev/null
+++ b/translations/fr/try_ruby_190.md
@@ -0,0 +1,17 @@
+---
+lang: FR
+title: Malheuresement, la poésie de biscotte c'est pas ton truc
+answer: (toast){0}
+load: prev
+ok: Excellent
+error: Ça sent toujours la biscotte pour moi
+---
+
+Eh, c'est pas grave. T'es pas obligé d'aimer ça. Laisses toi aller et
+améliore mon poème. Au lieu d'une biscotte, tu peux essayer un melon
+pourquoi pas. Essaie de voir ce nouveau poème:
+
+ poem.gsub("toast", "honeydew")
+
+La méthode __gsub__ est un raccourci pour *sub*stitution *g*lobale.
+Elle remplace toutes les instances du mot "toast" avec "honeydew".
diff --git a/translations/fr/try_ruby_20.md b/translations/fr/try_ruby_20.md
new file mode 100644
index 00000000..9f76a9cf
--- /dev/null
+++ b/translations/fr/try_ruby_20.md
@@ -0,0 +1,19 @@
+---
+lang: FR
+title: Utilisation de l'éditeur
+answer: ^\d{1,}$
+ok: Super ! Tu as fais un peu de maths. As-tu vu le résultat ?
+error: Entre 2 + 6 dans l'éditeur
+---
+
+L'éditeur est l'endroit où tu tapes ton code Ruby, appuie sur le bouton __Run__
+et regarde le s'exécuter !
+
+Par exemple, essaie d'écrire des calculs. comme :
+
+ 2 + 6
+
+La sortie de ton programme devrait s'afficher dans la fenêtre du bas.
+Il devrait également y avoir une ligne qui te dit comment tu t'en sors.
+
+> Autrement, tu peux appuyer sur le bouton __Copy__ pour copier le code d'exemple dans l'éditeur.
diff --git a/translations/fr/try_ruby_200.md b/translations/fr/try_ruby_200.md
new file mode 100644
index 00000000..b14917b4
--- /dev/null
+++ b/translations/fr/try_ruby_200.md
@@ -0,0 +1,12 @@
+---
+lang: FR
+title: Prêt, Viser
+answer: dnah ym morf nwolf sah tsaot yM
+load: prev
+ok: C'est plutôt logique. L'entièrement du poème a été inversé.
+error:
+---
+
+Petite question : que se passe-t-il lorsque nous inversons entièrement "poem" (__poème__) ?
+
+ poem.reverse
diff --git a/translations/fr/try_ruby_210.md b/translations/fr/try_ruby_210.md
new file mode 100644
index 00000000..8d749c5b
--- /dev/null
+++ b/translations/fr/try_ruby_210.md
@@ -0,0 +1,17 @@
+---
+lang: FR
+title: Surplus d'inversion
+answer: ^\["More still did (.+)
+load: prev
+ok: Oui, c'est presque ce que nous voulons
+error:
+---
+
+Tout le poème a donc été tourné à l'envers, lettre par lettre. Je voulais uniquement inverser les lignes.
+Mettre la dernière ligne en première et la première ligne en dernière.
+
+Inversé, mais pas __autant__ inversé.
+
+Voici comment:
+
+ poem.lines.reverse
diff --git a/translations/fr/try_ruby_220.md b/translations/fr/try_ruby_220.md
new file mode 100644
index 00000000..397d76c0
--- /dev/null
+++ b/translations/fr/try_ruby_220.md
@@ -0,0 +1,21 @@
+---
+lang: FR
+title: Enchaînements de méthode en série
+answer: My toast has flown from my hand
+load: prev
+ok: Bon travail, mon ami ! La méthode 'join' prend un liste (array) de chaîne de caractères (string) pour les a rassemblées en une seule string (chaîne de caractères).
+error:
+---
+
+Alors, qu'as-tu vu ? Qu'est-ce qui s'est passé là ? Tu as tapé __poem.lines.reverse__ et qu'est-ce qui s'est passé ?
+
+Deux choses se sont produites. Tu as transformé le poème (__poem__) en une liste (__array__) en utilisant la méthode __lines__.
+Lines décide de la manière dont la chaîne de caractères (__string__) est découpée et la convertit en un tableau (__array__).
+
+Ensuite, tu as inversé (__reverse__) cette liste. Tu as pris chaque ligne et tu les as inversées. C'est tout.
+
+Pour finir on à utilisé une autre méthode :
+
+ puts poem.lines.reverse.join
+
+Combiner des méthodes de cette manière s'appelle _l'enchaînement de méthodes (method chaining)_.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_230.md b/translations/fr/try_ruby_230.md
new file mode 100644
index 00000000..68fb4f70
--- /dev/null
+++ b/translations/fr/try_ruby_230.md
@@ -0,0 +1,28 @@
+---
+lang: FR
+title: De tous les résumés, #3 est là
+answer: \{\}
+class: stretcher chapmark
+load: prev
+ok: Tu as créé un hash vide !
+error:
+---
+
+### Exclamations
+Les méthodes peuvent avoir des points d'exclamation (et aussi des points d'interrogation) dans leur nom. Ils sont juste là pour mieux expliquer quelle est leur fonction. Pas de problème.
+
+### Manipulation de string
+Recherche et modification de string
+
+### Enchaînement
+L'enchaînement des méthodes vous permet de faire beaucoup plus de choses. Divisez un poème, inversez-le, réassemblez-le :
+__poem.lines.reverse.join__
+
+À ce stade, vous pouvez vouloir bricoler un peu plus avec le poème. Une liste complète de toutes les méthodes de la classe String se trouve ici.
+
+N'hésitez pas à essayer quelques-unes, comme : poem.downcase ou poem.swapcase
+
+## Prêt ?
+Quand tu te sens prêt à passer à autre chose, tape :
+
+ livres = {}
\ No newline at end of file
diff --git a/translations/fr/try_ruby_240.md b/translations/fr/try_ruby_240.md
new file mode 100644
index 00000000..bbc8cb29
--- /dev/null
+++ b/translations/fr/try_ruby_240.md
@@ -0,0 +1,27 @@
+---
+lang: FR
+title: La page blanche du livre
+answer: ^(splendide|assez_bon|moyen|decu|catastrophique)$
+load: livres = {}
+ok: Oui, c'est une nouvelle critique
+error: Utilise l'un de ces mots splendide, assez_bon, moyen, decu, catastrophique. N'oublie pas le deux-points (:).
+---
+
+Tu as créé un __hash__ vide. Un hash est comme un tableau, sauf que chaque élément a un nom.
+
+Nous allons mettre quelques critiques de livres dans notre nouveau hash. Voici notre système de notation :
+
+- :splendide → un chef-d'œuvre
+- :assez_bon → apprécié, sûr, oui
+- :moyen → ni bon, ni mauvais
+- :decu → assez mauvais
+- :catastrophique → un désastre fumant
+
+Pour noter un livre, mets le titre entre crochets et mets la note après le signe égal. Par exemple :
+
+ livres["Harry Potter"] = :splendide
+
+> À ce stade, je pense qu'il est juste de te dire que toutes les leçons de TryRuby sont indépendantes les unes des autres.
+> Donc, si tu deviens fou à taper des critiques de livres ici, tu ne pourras les utiliser que dans cette leçon.
+> Si tu veux utiliser tes critiques dans la prochaine leçon, tu devrais les copier/coller.
+> Ne t'inquiète pas trop à ce sujet, chaque leçon a plein de trucs prédéfinis pour que tu puisses jouer avec.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_250.md b/translations/fr/try_ruby_250.md
new file mode 100644
index 00000000..cbeafcde
--- /dev/null
+++ b/translations/fr/try_ruby_250.md
@@ -0,0 +1,27 @@
+---
+lang: FR
+title: Encore plus de critiques
+answer: [3-9]
+load: livres = {"Harry Potter" => :splendide}
+ok: See, the length method works on strings, arrays and hashes.
+error:
+---
+
+Continuons, remplis des critiques. Et si tu veux voir toute la liste, il te suffit de taper : __puts livres__
+
+Encore une fois, les notations sont : :splendide, :assez_bon, :moyen, :decu, :catastrophique
+
+Ces notations ne sont pas des strings. Lorsque tu places un deux-points devant un mot simple, tu obtiens un __symbole__.
+Les symboles sont moins coûteux en mémoire que les chaînes de caractères. Si tu utilises un mot encore et encore dans ton programme,
+utilise un symbole. Plutôt que d'avoir des milliers de copies de ce mot en mémoire, l'ordinateur ne stockera le symbole qu'une seule fois.
+
+Plus important encore, un symbole te dit que ce n'est pas juste un mot ordinaire mais qu'il a une signification dans ton programme.
+
+Ajoute encore 2 critiques de livres, utilise __livres.length__ pour voir combien de critiques il y a dans le hash :
+
+ livres["The deep end"] = :catastrophique
+ livres["Living colors"] = :moyen
+
+ puts livres
+
+ puts livres.length
diff --git a/translations/fr/try_ruby_260.md b/translations/fr/try_ruby_260.md
new file mode 100644
index 00000000..b0a5ef74
--- /dev/null
+++ b/translations/fr/try_ruby_260.md
@@ -0,0 +1,20 @@
+---
+lang: FR
+title: Attends, ai-je aimé Harry Potter ?
+answer: ^(splendide|assez_bon|moyen|decu|catastrophique)$
+load: livres = {"Harry Potter"=>:splendide, "The deep end"=>:catastrophique, "Living colors"=>:moyen}
+ok: J'ai beaucoup aimé
+error:
+---
+
+Une des grandes choses à propos de Ruby est que les noms sont souvent réutilisés, ce qui signifie moins de noms à retenir.
+
+Tu te souviens comment nous avons récupéré des éléments d'un array en utilisant un nombre :
+__puts ticket[1]__.
+
+Pour un hash, ça fonctionne de la même manière, sauf que nous n'utilisons pas un nombre pour obtenir un élément mais un nom.
+
+Donc, si tu veux rechercher une de tes anciennes critiques, mets à nouveau le titre entre crochets. Mais ne mets pas le signe égal (=).
+Comme ceci :
+
+ puts livres["Harry Potter"]
\ No newline at end of file
diff --git a/translations/fr/try_ruby_270.md b/translations/fr/try_ruby_270.md
new file mode 100644
index 00000000..23a3437f
--- /dev/null
+++ b/translations/fr/try_ruby_270.md
@@ -0,0 +1,19 @@
+---
+lang: FR
+title: Les Hashs vont de paires
+answer: ^\[".*"\]
+load: prev
+ok: Tu as trouvé les clés
+error:
+---
+
+Garde à l'esprit que les hashes ne conservent pas les choses dans l'ordre. Ce n'est pas leur rôle. Ils associent simplement
+deux choses : une clé (__key__) et une valeur (__value__).
+
+Dans tes critiques, le titre du livre est la clé et la notation est la valeur.
+
+Si tu veux simplement voir les titres de tous les livres que tu as critiqués :
+
+ livres.keys
+
+Tu peux aussi essayer cela avec .values au lieu de .keys.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_280.md b/translations/fr/try_ruby_280.md
new file mode 100644
index 00000000..863d7076
--- /dev/null
+++ b/translations/fr/try_ruby_280.md
@@ -0,0 +1,26 @@
+---
+lang: FR
+title: Es-tu sévère ?
+answer: :moyen
+load: livres = {"Harry Potter"=>:splendide, "The deep end"=>:catastrophique, "Living colors"=>:moyen}
+ok: Génial, wow ! Tu as fait une feuille de notation de tes évaluations
+error:
+---
+
+Alors, tu donnes des critiques sévères et injustes ? Gardons une trace avec un nouveau hash __notations__ :
+
+Desormais, nous allons compter tes critiques. Reste avec moi. Écris :
+
+ notations = Hash.new {0}
+
+ livres.values.each { |note|
+ notations[note] += 1
+ }
+
+ puts notations
+
+Le trait droit dans le code correspond au caractère "pipe" (|), probablement situé juste au-dessus de la touche 'T' OU 'Y' d'un clavier Windows Français, ou "Option+Maj+L" sur MacOS.
+
+Le _+= 1_ signifie : augmenter la valeur de 1.
+
+Ne t'inquiète pas si tu ne comprends pas tout ce qui se passe ici. Tout sera expliqué plus tard.
diff --git a/translations/fr/try_ruby_290.md b/translations/fr/try_ruby_290.md
new file mode 100644
index 00000000..cf4c45ce
--- /dev/null
+++ b/translations/fr/try_ruby_290.md
@@ -0,0 +1,15 @@
+---
+lang: FR
+title: Un décompte
+answer: \w+
+ok: Houra!
+error:
+---
+
+Une des choses étonnantes que nous venons d'utiliser est un bloc (__block__). Nous allons explorer cela plus en détail dans cette leçon et celle à venir. Mais, en gros, un bloc est un morceau de code Ruby entouré d'accolades '{' '}'.
+
+Essayons un autre bloc :
+
+ 3.times { print "Hip! " }
+
+Les blocs sont toujours attachés à des méthodes. Comme la méthode __times__, qui prend le bloc et exécute le code à plusieurs reprises. (Dans notre exemple : trois fois.)
\ No newline at end of file
diff --git a/translations/fr/try_ruby_30.md b/translations/fr/try_ruby_30.md
new file mode 100644
index 00000000..5defc8bf
--- /dev/null
+++ b/translations/fr/try_ruby_30.md
@@ -0,0 +1,13 @@
+---
+lang: FR
+title: Nombres et Mathématiques
+answer: ^[0-9\.,-]{1,}$
+ok: Parfait
+error:
+---
+
+Ruby reconnaît les nombres et les symboles mathématiques. Tu peux essayer d'autres opérations mathématiques comme :
+
+ 4 * 10
+ 5 - 12
+ 30 / 4
\ No newline at end of file
diff --git a/translations/fr/try_ruby_300.md b/translations/fr/try_ruby_300.md
new file mode 100644
index 00000000..c0256ca3
--- /dev/null
+++ b/translations/fr/try_ruby_300.md
@@ -0,0 +1,21 @@
+---
+lang: FR
+title: Tu as le 'time' ?
+answer: ^[0-9]$
+ok: Tu es parfaitement synchronisé !
+error: Lance le bloc de 0 à 9 fois
+---
+
+Comme nous l'avons vu dans le premier exemple avec un bloc (lors du décompte des notations), nous pouvons passer une valeur au bloc. Les valeurs qui sont __passées__ sont déterminées par la méthode qui exécute le bloc.
+
+Les valeurs qui sont __reçues__ par le bloc sont placées dans la variable entre les deux symboles pipe au début du bloc : |
+
+Essayons ça avec ce bloc :
+
+ 5.times { |time|
+ puts time
+ }
+
+Ici, la méthode __.times__ envoie une valeur à la variable __|time|__. Mais note que la variable time est uniquement connue à l'intérieur du bloc.
+
+> As-tu remarqué que tu peux répartir le code sur plusieurs lignes ? Cela rend la lecture un peu plus facile.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_310.md b/translations/fr/try_ruby_310.md
new file mode 100644
index 00000000..5fd6882b
--- /dev/null
+++ b/translations/fr/try_ruby_310.md
@@ -0,0 +1,23 @@
+---
+lang: FR
+title: Nous arrivons au resumé #4
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Cette dernière leçon était un peu plus longue. Tu as probablement utilisé environ trois minutes pour apprendre sur :
+
+### Hashes
+Le petit dictionnaire avec les pages en boucle : __{}__
+
+### Symbols
+De petits mots de code efficaces avec un deux-points, comme : __:splendide__
+
+### Blocks
+Des morceaux de code qui peuvent être ajoutés à de nombreuses méthodes de Ruby. Voici le code que tu as utilisé pour construire une feuille de notation :
+__livres.values.each { |note| notations[note] += 1 }__
+
+### La suite
+Dans la prochaine leçon, nous plongerons un peu plus profondément dans les méthodes.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_320.md b/translations/fr/try_ruby_320.md
new file mode 100644
index 00000000..ad982876
--- /dev/null
+++ b/translations/fr/try_ruby_320.md
@@ -0,0 +1,38 @@
+---
+lang: FR
+title: Être ou ne pas être
+answer:
+load: poem = "My toast has flown from my hand\nAnd my toast has gone to the moon.\nYada yada yada\n"
+ok:
+error:
+---
+
+Une autre petite chose que nous n'avons pas vraiment abordée ouvertement : les arguments/paramètres de méthode.
+Tu te souviens quand nous avons modifié un peu le poème ? Nous avons utilisé :
+__poem.gsub("toast", "honeydew")__
+
+La méthode gsub a besoin de 2 arguments, que nous avons passés à gsub en incluant deux strings entre
+parenthèses. _Les arguments disent à la méthode exactement quoi faire_.
+
+### Parenthèses
+En fait, la plupart du temps, Ruby n'est pas dérangé si tu ommets les parenthèses. Donc, cela aurait
+également fonctionné :
+__poem.gsub "toast", "honeydew"__
+
+Finalement, nous avons déjà utilisé une autre méthode avec un seul paramètre. Beaucoup de fois en fait, même si ce n'était pas très
+évident :
+
+ puts "Hello"
+ puts("Hello")
+
+Oui, __puts__ est aussi une méthode. Utiliser puts avec ou sans parenthèses est la même chose pour Ruby, mais la
+version sans parenthèses est un peu plus facile à lire. Et cela vous fait gagner du temps de frappe précieux !
+
+> Du coup, on peut supposer que la conclusion est que tu peux faire ce que tu veux avec les parenthèses tant que ton
+> code est lisible.
+
+### Être ou ne pas être
+Donc, si _to_ est une méthode et _be_ est un argument, nous connaissons maintenant la réponse à cette question ancienne.
+C'est vraiment juste une question de préférence si tu veux _to be_ ou _to(be)_.
+
+As-tu envie de plus de Shakespeare ? Lisons.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_330.md b/translations/fr/try_ruby_330.md
new file mode 100644
index 00000000..fb01d446
--- /dev/null
+++ b/translations/fr/try_ruby_330.md
@@ -0,0 +1,33 @@
+---
+lang: FR
+title: La Mégère apprivoisée
+answer: ^tame
+ok: Bien bien !
+error:
+---
+
+Tu sais parfaitement comment utiliser Ruby maintenant. Je veux dire, tu as maîtrisé les bases.
+Il te suffit simplement d'apprendre plus de méthodes et d'essayer des blocs plus complexes.
+
+Mais il y a un côté de Ruby que nous n'avons pas encore abordé. Créer tes propres méthodes.
+__Hum !__ Allons-y alors.
+
+En plus d'utiliser les méthodes intégrées de Ruby (comme puts, sort, times), tu peux définir
+tes propres méthodes. Pourquoi est-ce une bonne idée ? Deux raisons :
+
+### Pour rendre ton programme plus court
+Si tu dois faire la même chose à plusieurs endroits de ton code, il est plus facile
+de mettre ce code dans une méthode séparée. Ton code sera plus court.
+
+### Pour rendre ton code plus facile à lire
+Suppose que ton programme doit faire beaucoup de choses différentes.
+Tu __pourrais__ tout entasser dans un seul long morceau de code. Mais il serait très difficile de
+lire et comprendre ce code plus tard.
+
+Au lieu de cela, tu devrais découper ton code en différentes méthodes et donner à chaque méthode un nom en anglais facile à
+comprendre. Tu te remercieras plus tard.
+
+Alors comment définissons-nous une méthode ? Comme ceci :
+
+ def tame( number_of_shrews )
+ end
diff --git a/translations/fr/try_ruby_340.md b/translations/fr/try_ruby_340.md
new file mode 100644
index 00000000..34366f17
--- /dev/null
+++ b/translations/fr/try_ruby_340.md
@@ -0,0 +1,24 @@
+---
+lang: FR
+title: En Ruby, "Def Leppard" signifie: definir la méthode Leppard
+answer: ^tame
+ok: Apprivoiser n'est pas ennuyeux
+error:
+---
+
+Eh bien, d'accord, dans ce cas faissons le. Crées ta propre méthode eb commencant par __def__, suivi du nom de la méthode.
+Puis une liste d'arguments dont la méthode aura besoin. Ce n'est pas trop effrayant et dangereux !
+Tout ce que nous avons à faire, c'est de la remplir avec du Ruby et de terminer avec __end__.
+
+Voici le code :
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ end
+
+> __P.S.__
+> Si tu ne comprends pas le titre de ce chapitre.
+> Def Leppard
+> est le nom d'un, autrefois célèbre, groupe de rock anglais.
diff --git a/translations/fr/try_ruby_350.md b/translations/fr/try_ruby_350.md
new file mode 100644
index 00000000..48df5818
--- /dev/null
+++ b/translations/fr/try_ruby_350.md
@@ -0,0 +1,15 @@
+---
+lang: FR
+title: Le fruit mûr de ta création
+answer: ^Tamed a shrew
+ok: Ça leur apprendra, ces mégères (shrew)
+error:
+load: def tame(number_of_shrews);number_of_shrews.times{puts "Tamed a shrew"};end;
+---
+
+Un nouveau méthode est née. Utilisons-la maintenant :
+
+ tame 5
+
+> __P.S.__
+> Tamed a shrew = Mégère apprivoisée
\ No newline at end of file
diff --git a/translations/fr/try_ruby_360.md b/translations/fr/try_ruby_360.md
new file mode 100644
index 00000000..c481b288
--- /dev/null
+++ b/translations/fr/try_ruby_360.md
@@ -0,0 +1,29 @@
+---
+lang: FR
+title: Donner et prendre
+answer: \d+
+ok: Exactement. Bravo.
+error:
+---
+
+La plupart des méthodes ne veulent pas uniquement quelques paramètres en entrée, mais elles peuvent aussi __donner quelque chose en retour__.
+J'ai un peu modifié notre méthode pour qu'elle te retourne (__return__) une valeur. Essaie-la :
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ return number_of_shrews
+ end
+
+ puts tame(3)
+
+### Return
+Et, puisque tu deviens si avancé et compétent ici, un autre conseil :
+tu peux omettre le mot __return__ de la dernière ligne de la méthode.
+Ruby retournera automatiquement la dernière valeur qui a été utilisée à l'intérieur de la méthode.
+
+Donc, nous pouvons changer la dernière ligne en juste : __number\_of\_shrews__.
+
+Mais puisque la méthode __.times__ renvoie également le _number\_of\_shrews_, nous pouvons
+supprimer toute la dernière ligne. En fait, notre méthode originale faisait déjà ce que nous voulions depuis le début !
\ No newline at end of file
diff --git a/translations/fr/try_ruby_370.md b/translations/fr/try_ruby_370.md
new file mode 100644
index 00000000..74709d5b
--- /dev/null
+++ b/translations/fr/try_ruby_370.md
@@ -0,0 +1,27 @@
+---
+lang: FR
+title: Bonjour, Qui est là ? Le résumé #5 fait signe de son chapeau !
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Bien joué, bien joué, bien joué, bien joué !
+
+Vraiment, vraiment, vraiment, vraiment, vraiiiiiiiiiment !
+
+Voici les dernières minutes de ta vie en revue :
+
+### Méthodes
+Les méthodes peuvent être définies avec __def__ et ont un nom. Les méthodes rendent ton programme plus court
+et plus facile à lire.
+
+### Paramètres
+Les méthodes peuvent avoir des paramètres.
+
+### Valeurs de retour
+Les méthodes (presque toujours) retournent une valeur.
+
+## Et Maintenant ?
+Être ou ne pas être n'est plus une question pour toi. Es-tu prêt pour un peu plus de Shakespeare ?
\ No newline at end of file
diff --git a/translations/fr/try_ruby_380.md b/translations/fr/try_ruby_380.md
new file mode 100644
index 00000000..1ee0ca79
--- /dev/null
+++ b/translations/fr/try_ruby_380.md
@@ -0,0 +1,28 @@
+---
+lang: FR
+title: Le monde nous appartient
+answer: ^\{\"William
+ok: Super. mais difficile a lire.
+error:
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
+---
+
+Jusqu'à présent, nous avons exécuté des programmes qui n'utilisent que ce que nous avons écris nous-mêmes.
+Ce qui est bien, je veux dire que le _Hip, hip houra !_ était épique, mais nous sommes à l'ère d'Internet, donc il est temps d'inclure le reste du monde dans nos efforts de programmation.
+
+De nombreux, nombreux sites Web sont disponibles où tu peux demander des informations. Par exemple, ce lien te donnera tous les flux d'actualités Google sur Ruby.
+
+Ton navigateur Web l'affichera probablement très bien pour toi. Si tu regardes le code source (tape : contrôle-U), tu verras une longue chaîne de texte étrangement formatée. Dans l'exemple de Google, c'est au format __rss__.
+
+### Formats
+Il existe de nombreux autres formats, avec des noms étranges, disponibles et utilisés sur le Web, comme :
+html, xml et json. Oui, même ce site Web utilise quelques-uns de ces formats.
+
+J'ai préparé une méthode pour toi qui récupérera une liste des œuvres complètes de William
+Shakespeare depuis Internet.
+(Ne t'inquiète pas, cela provient en fait du même serveur sur lequel ce site Web fonctionne, donc
+nous ne dérangeons personne.)
+
+Obtiens les données avec :
+
+ get_shakey
\ No newline at end of file
diff --git a/translations/fr/try_ruby_390.md b/translations/fr/try_ruby_390.md
new file mode 100644
index 00000000..2af9db0c
--- /dev/null
+++ b/translations/fr/try_ruby_390.md
@@ -0,0 +1,53 @@
+œ---
+lang: FR
+title: Noble Kinsmen
+answer: ^The Two Noble Kinsmen$
+ok: C'est bien mieux
+error:
+load: prev
+---
+
+Bien, maintenant nous avons une liste de pièces de théâtre provenant d'Internet. La liste est au format json.
+Heureusement pour nous, Ruby fournit gentiment une méthode pour convertir les données json en un hash Ruby.
+La méthode _get\_shakey_ l'a déjà fait pour nous.
+
+Mais comme la structure des données json est conservée dans le hash, il est encore un peu difficile à lire.
+Écrivons une méthode pour afficher tout ça de manière agréable.
+
+Si tu inspectes attentivement la liste de pièces de théâtre, tu verras qu'elle a une sorte de structure imbriquée.
+(C'est en fait assez courant dans les données que tu obtiens d'Internet.)
+Ça ressemble à ça :
+
+
+
"William Shakespeare"
+
+
"1"
+
+
"title": "The Two Gentlemen of Verona"
+
"finished": 1591
+
+
+
"2"
+
+
"title": "The Taming of the Shrew"
+
"finished": 1591
+
+
+
...
+
+
+
+
+Pour lister les pièces de théâtre, nous devons d'abord accéder à au premier l'élément du hash "William Shakespeare" par son nom.
+Ensuite, nous devons __itérer__ à travers chaque élément suivant.
+
+Ruby a une méthode pour itérer. Elle s'appelle __each__. Nous l'avons déjà vue lorsque nous avons
+créé notre système de notation des livres.
+
+Tout ce que la méthode __each__ retourne est passé à un bloc :
+
+ s = get_shakey
+
+ s["William Shakespeare"].each { |key, val|
+ puts val["title"]
+ }
diff --git a/translations/fr/try_ruby_40.md b/translations/fr/try_ruby_40.md
new file mode 100644
index 00000000..6b5ef48b
--- /dev/null
+++ b/translations/fr/try_ruby_40.md
@@ -0,0 +1,27 @@
+---
+lang: FR
+title: Afficher les choses autrement
+answer: ^[0-9\.,-]{1,}$
+ok: Bien affiché
+error:
+---
+
+As-tu remarqué que si tu écris plus d'une formule, tu n'as que la dernière réponse.
+Comment ça se fait ?
+
+> Pour rendre ce site web simple à utiliser, j'ai demandé à Ruby de copier le résultat de ton programme dans la fenêtre de sortie.
+> Donc, lorsque tu écris une formule, tu peux voir les résultats.
+> __Mais seulement le dernier résultat.__ Et seulement si la sortie est encore vide.
+
+Du coup si tu as saisi 2 formules ou plus, Ruby n'affiche que le résultat de la dernière formule.
+
+Bien sûr, tu as le pouvoir de contrôler l'écran ! Il suffit d'écrire __puts__ avant chaque formule
+(separé d'un espace). "Puts" signifie : *'Afficher quelque chose à l'écran'*.
+
+Essaie ça :
+
+ puts 4 * 10
+ puts 5 - 12
+ puts 30 / 4
+
+Maintenant retire les "puts" progressivement et observe ce qui se passe.
diff --git a/translations/fr/try_ruby_400.md b/translations/fr/try_ruby_400.md
new file mode 100644
index 00000000..0fac1b0e
--- /dev/null
+++ b/translations/fr/try_ruby_400.md
@@ -0,0 +1,35 @@
+---
+lang: FR
+title: Tous ensemble désormais
+answer: ^4$
+ok: Oui, Shakespeare a écrit 4 pièces en 1591
+error: La réponse pour l'année 1591 devrait être 4
+load: prev
+---
+
+Maintenant, supposons que nous voulions uniquement connaître les noms et le nombre de pièces écrites par Shakespeare au cours d'une année spécifique.
+
+Ruby nous permet de sélectionner (__select__) des valeurs à partir d'un hash. La méthode select utilise un bloc pour nous permettre de définir ce que nous voulons sélectionner et retourne ce qu'elle a trouvé.
+
+Nous pouvons ensuite utiliser les résultats retournés par __select__ dans la méthode __each__ comme précédemment en les ajoutant simplement après le bloc select. C'est un autre exemple de chaînage de méthodes, que nous avons vu précédemment lors de l'inversion d'un poème.
+
+J'ai préparé la méthode __count\_plays__ pour toi. Essaye de trouver combien de pièces ont été écrites par Shakespeare en l'année __1591__. Essaie ceci :
+
+ def count_plays(year)
+ s = get_shakey
+
+ s["William Shakespeare"]
+ .select { |k, v|
+ v["finished"] == year
+ }.each { |key, val|
+ puts val["title"]
+ }.count
+ end
+
+ puts count_plays(0)
+
+As-tu remarqué que j'ai chaîné la méthode count à la fin de la méthode each ? Cela nous donne une valeur de retour pour la méthode __count\_plays__.
+
+Il y a une autre possibilité pour le chaînage ici.
+Regarde cette ligne __s = get\_shakey__.
+Tu pourrais retirer la variable __s__ et chaîner get_shakey avec le __["William Shakespeare"].select { |k, v|__
\ No newline at end of file
diff --git a/translations/fr/try_ruby_410.md b/translations/fr/try_ruby_410.md
new file mode 100644
index 00000000..3e19ba4f
--- /dev/null
+++ b/translations/fr/try_ruby_410.md
@@ -0,0 +1,38 @@
+---
+lang: FR
+title: Tout est bien qui finit bien
+answer: All's Well That Ends Well
+ok: Vrai
+error: Utilisez 1605 en deuxième paramètre
+load: prev
+---
+
+Bien, nous avons obtenu des données d'Internet, nous avons sélectionné ce que nous voulions et nous l'avons afficher.
+Que reste-t-il à améliorer ? Nous pourrions afficher les résultats un peu plus joliment. Comme ajouter l'année et aligner les titres et les années.
+
+Cela signifie afficher plusieurs valeurs sur une seule ligne. Ruby a une manière astucieuse de le faire.
+C'est comme afficher une chaîne de caractères comme ceci : __puts "Salut, je m'appelle Jimmy"__.
+Mais au lieu de la valeur littérale _Jimmy_, nous utilisons la valeur d'une variable.
+
+Remplacez d'abord _Jimmy_ par __#{}__. Si Ruby voit un symbole de hachage # suivi d'une accolade {
+il cherche une variable entre la première accolade et l'accolade fermante suivante }.
+Nous pouvons donc utiliser ceci : __"Salut, je m'appelle \#{name}"__.
+
+Modifions un peu notre code :
+
+ def print_plays(year_from, year_to)
+ get_shakey["William Shakespeare"]
+ .select { |k, v|
+ year_from <= v["finished"] &&
+ year_to >= v["finished"]
+ }.each { |k, v|
+ puts "#{v["finished"]} -> #{v["title"]}"
+ }
+ end
+ print_plays(1600, 1605)
+
+J'ai ajouté __.ljust(30)__ au titre. De cette façon, le titre est justifié à gauche avec une longueur minimale de 30 caractères pour que les années s'alignent joliment.
+
+Voyez si vous pouvez changer la sortie du programme pour qu'elle affiche les pièces comme ceci : __1600 -> Comme il vous semble__
+
+__Tout est bien qui finit bien ?__ Hé, nous n'avons pas encore terminé, mais la fin est proche !
\ No newline at end of file
diff --git a/translations/fr/try_ruby_420.md b/translations/fr/try_ruby_420.md
new file mode 100644
index 00000000..84452955
--- /dev/null
+++ b/translations/fr/try_ruby_420.md
@@ -0,0 +1,36 @@
+---
+lang: FR
+title: Si seulement je savais comment prendre une décision
+answer:
+ok:
+error:
+---
+
+Prendre des décisions, dans la vie réelle, peut être un vrai problème. Pas pour nous cependant.
+Ruby rend très facile de prendre des décisions.
+
+ if 1 < 2
+ puts "C'est vrai : 1 est inférieur à 2"
+ end
+
+Le mot clé ici est __if__. If peut être placé avant une méthode ou après une méthode, comme ceci :
+
+ puts "C'est vrai : 1 est inférieur à 2" if 1 < 2
+
+__If__ est une méthode qui nécessite un paramètre. Ce paramètre peut être n'importe quelle expression que vous
+voulez tester. Le résultat de l'expression doit être soit __true__ soit __false__.
+Voici quelques expressions avec leurs résultats :
+
+ 5 <= 10 # => true
+ 'abc' == 'def' # => false
+ true # => true
+ 123456 # => true
+ 0 # => true
+ nil # => false
+ 'xyz'.empty? # => false
+ 'a' > 5 # => erreur :
+ # la comparaison entre une chaîne de caractères et
+ # un nombre a échoué
+
+L'_expression if_ peut prendre de nombreuses formes. Elle peut comparer des valeurs littérales (1 < 2),
+des variables (a < 1) et la valeur de retour d'une méthode ('xyz'.empty?).
\ No newline at end of file
diff --git a/translations/fr/try_ruby_430.md b/translations/fr/try_ruby_430.md
new file mode 100644
index 00000000..9f981b54
--- /dev/null
+++ b/translations/fr/try_ruby_430.md
@@ -0,0 +1,32 @@
+---
+lang: FR
+title: Et maintenant, la surprenante conclusion
+answer: n'est pas égal à 100$
+ok: C'est mieux
+error: Ce n'est pas possible
+---
+
+Avez-vous remarqué les 2 signes égaux dans __'abc' == 'def'__ ?
+
+Ce __==__ signifie __est égal à__.
+Le simple signe égal que nous avons vu auparavant signifie __affecter une valeur à une variable__.
+
+Pour rendre les choses plus confuses : vous pouvez utiliser l'assignation après une méthode if comme ceci :
+
+ a = 0
+
+ if a = 100
+ puts "L'expression est vraie, mais a est maintenant : #{a}"
+ else
+ puts "#{a} n'est pas égal à 100"
+ end
+
+Changez le = en == et voyez ce qui se passe.
+
+Je peux vous garantir que vous oublierez régulièrement de taper le deuxième signe égal. Moi aussi, je l'oublie parfois.
+
+### else
+Dans le code ci-dessus, j'ai ajouté une expression else. Cette partie sera exécutée lorsque l'__expression de test if__ s'évalue à faux.
+
+> Il existe plus de variations sur ce thème if-then-else. Vous pouvez en lire plus
+> ici.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_440.md b/translations/fr/try_ruby_440.md
new file mode 100644
index 00000000..5b551cdd
--- /dev/null
+++ b/translations/fr/try_ruby_440.md
@@ -0,0 +1,33 @@
+---
+lang: FR
+title: Moi faim
+answer: ^Moi pas faim
+ok: Oui
+error: NON, j'ai pas faim à 10h !
+---
+
+Vous avancez à merveille ! C'est simple pour vous, mais rappelez-vous que vous ne connaissiez __absolument rien en Ruby__ il y a seulement quinze minutes !
+
+Dernière étape. Mettons tout cela ensemble, d'accord ? Faisons en sorte que tout sonne ensemble comme un très joli ensemble de carillons scintillants sur la plage, sous la magnifique lumière du soleil !
+
+Nous allons d'abord définir deux méthodes, puis prendre une décision :
+
+ def faim?(heure_de_la_journée_en_heures)
+ if heure_de_la_journée_en_heures < 12
+ puts "Moi pas faim"
+ false
+ else
+ puts "Moi faim"
+ true
+ end
+ end
+
+ def manger(aliment)
+ puts "Moi manger #{aliment}\n"
+ end
+
+ manger 'pomme' if faim?(14)
+
+ manger 'pomme' if faim?(10)
+
+Voyez si vous pouvez changer la méthode __faim?__ pour afficher __"Moi pas faim"__ et retourner faux __false__ lorsque l'heure est inférieure à 12.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_450.md b/translations/fr/try_ruby_450.md
new file mode 100644
index 00000000..ecd5ee40
--- /dev/null
+++ b/translations/fr/try_ruby_450.md
@@ -0,0 +1,31 @@
+---
+lang: FR
+title: Résumé #6 Autrement dit, tu as parcouru du un long chemin
+answer: \{\}
+class: stretcher chapmark
+ok: Bien, ceci est un hash vide.
+error:
+---
+
+Tu es un prêtre niveau six en Ruby. Je veux dire, quel excellent travail tu as fait. Voyons voir :
+
+### Données
+Tu as chargé des données depuis internet, parcouru une structure de données et sélectionné des valeurs.
+
+### Itération
+Tu as itéré sur tous les éléments d'un hash et tu as chaîné encore plus de méthodes.
+
+### Affichage agréable
+Et si cela ne suffisait pas, tu as formaté et affiché des valeurs d'une manière facile à lire pour le commun des mortels. En fait, __tu as créé un véritable programme !__
+
+### IF
+Tu as appris à prendre le contrôle de tes programmes avec des instructions __if__ et __else__.
+
+## Donc
+Qu'est-ce qui pourrait bien venir ensuite ? Que pourrais-tu encore avoir à apprendre maintenant ?
+Ha, voici la meilleure partie. Tu as parcouru un si long chemin que nous allons maintenant découvrir les classes.
+Après seulement deux leçons courtes de plus, tu auras terminé.
+
+Plus tôt, nous avons créé un hash comme ceci :
+
+ Hash.new
\ No newline at end of file
diff --git a/translations/fr/try_ruby_460.md b/translations/fr/try_ruby_460.md
new file mode 100644
index 00000000..291e3bda
--- /dev/null
+++ b/translations/fr/try_ruby_460.md
@@ -0,0 +1,33 @@
+---
+lang: FR
+title: Pas une classe d'école, une classe ouvrière
+answer:
+ok:
+error:
+---
+
+Vois-tu les accolades vides {} c'est un raccourci pour Hash.new.
+La méthode new est utilisée pour créer des objets d'une certaine classe.
+Pense à "classe" comme la "classe ouvrière" ; un groupe d'élément ayant les mêmes propriétés : mêmes emplois, mêmes maisons, même style vestimentaire.
+Quel est l'utilité d'une classe ?
+
+### BlurbalizerTM
+Tu viens juste d'avoir une idée brillante pour une nouvelle application.
+Ce sera __LA__ prochaine plateforme de messagerie instantanée.
+Tu veux une application où les gens peuvent s'envoyer des messages courts.
+Tu appelles ces messages BlurbsTM. Un BlurbTM a une longueur maximale de seulement 40 caractères.
+Ajoutons également la possibilité de définir son humeur (__mood__).
+
+### Par où commencer
+Eh bien, tu pourrais stocker tes entrées BlurbsTM dans un fichier json, n'est-ce pas ?
+Mais comment garderais-tu une trace du contenu de l'entrée et de l'heure à laquelle elle a été postée ?
+Et lorsque tu chargerais le fichier, comment cela apparaîtrait-il en Ruby ?
+Serait-ce un Hash ? Ou un Array ? Ou un Array de Arrays ? Ou autre chose ?
+
+### Classe
+Je pense vraiment que tu voudras utiliser une classe.
+Tu es déjà familier avec de nombreuses classes : Hash, Array, String.
+Créons une nouvelle classe (ne renvoie aucune sortie) :
+
+ class Blurb
+ end
diff --git a/translations/fr/try_ruby_470.md b/translations/fr/try_ruby_470.md
new file mode 100644
index 00000000..b79e6bf9
--- /dev/null
+++ b/translations/fr/try_ruby_470.md
@@ -0,0 +1,20 @@
+---
+lang: FR
+title: Les éléments qui font une application
+answer:
+ok:
+error:
+---
+
+Tu as crées une nouvelle classe BlurbTM. De quoi sont faits les articles de blog ?
+Le contenu (__content__), bien sûr. Mais aussi de l'heure à laquelle le BlurbTM a été publié (__time__). Et aussi une humeur (__mood__).
+
+Bien, tu as la première ligne de la classe, voici la suite :
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+ end
+
+Les noms de classe commencent toujours par une lettre majuscule.
+
+(Toujours pas de sortie)
\ No newline at end of file
diff --git a/translations/fr/try_ruby_480.md b/translations/fr/try_ruby_480.md
new file mode 100644
index 00000000..590bc1b7
--- /dev/null
+++ b/translations/fr/try_ruby_480.md
@@ -0,0 +1,26 @@
+---
+lang: FR
+title: Les 'accessors' sont les membres pendouillants.
+answer: Blurb:
+ok: Mon premier Blurb
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;end
+---
+
+Super classe, mon ami(e)! Tu as une nouvelle classe BlurbTM.
+
+Dans la définition de la classe, tu as utilisé une méthode appelée attr\_accessor.
+Il existe de nombreuses méthodes d' __attr__ibut comme celle-ci qui permettent d'apporter de petites améliorations.
+Ces attributs sont juste des variables attachées à une classe.
+
+Pensez-y de cette manière. Une classe est comme une personne.
+Cette chose en forme d'étoile est un humain.
+Et les attributs sont les membres pendouillants, les différentes parties qui composent un corps et
+que d'autres personnes peuvent se serrer la main avec.
+
+### Maintenant
+Pour créer un BlurbTM et définir le contenu :
+
+ blurb1 = Blurb.new
+ puts blurb1
+ blurb1.content = "Aujourd'hui, le Mont Blanc a été volé !"
diff --git a/translations/fr/try_ruby_490.md b/translations/fr/try_ruby_490.md
new file mode 100644
index 00000000..7d10edfe
--- /dev/null
+++ b/translations/fr/try_ruby_490.md
@@ -0,0 +1,15 @@
+---
+lang: FR
+title: Un objet, ce petit paquet bien organisé.
+answer: Blurb:
+ok: Blurb mis à jour
+error:
+load: prev;blurb1=Blurb.new;blurb1.content="Aujourd'hui, le Mont Blanc a été volé !"
+---
+
+A toi de jouer, définis le temps et l'humeur du BlurbTM :
+
+ blurb1.time = Time.now
+ blurb1.mood = :triste
+
+ puts blurb1
\ No newline at end of file
diff --git a/translations/fr/try_ruby_50.md b/translations/fr/try_ruby_50.md
new file mode 100644
index 00000000..b0b705ba
--- /dev/null
+++ b/translations/fr/try_ruby_50.md
@@ -0,0 +1,13 @@
+---
+lang: FR
+title: Dis ton nom
+answer: [a-zA-Z]{1,1}
+ok: Parfait, tu as formé une chaîne de caractères (string) à partir des lettres de ton nom.
+error:
+---
+
+Bien sûr, les ordinateurs sont pratiques et rapides pour les calculs. Passons à autre chose : Veux-tu voir ton nom à l'envers ?
+
+Écris d'abord ton prénom entre guillemets comme ceci :
+
+ "Jimmy"
diff --git a/translations/fr/try_ruby_500.md b/translations/fr/try_ruby_500.md
new file mode 100644
index 00000000..502db5f4
--- /dev/null
+++ b/translations/fr/try_ruby_500.md
@@ -0,0 +1,30 @@
+---
+lang: FR
+title: Accélérons les choses
+answer: ^\d{4}
+ok: C'est noté
+error:
+---
+
+Super, ton application est géniale. Rendons les choses un peu plus simple pour toi.
+Tu ne voudras pas définir le temps de cette façon à chaque fois que tu crées un BlurbTM.
+
+Tu veux juste saisir le contenu (__content__) et définir l'humeur (__mood__), n'est-ce pas ?
+
+Ajoutons une méthode __initialize__ à notre classe. Cette méthode est appelée chaque fois qu'un nouveau BlurbTM est créé.
+Par la méme occassion, nous pouvons limiter la longueur du contenu du BlurbTM à 40 caractères.
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+ end
+
+ Blurb.new(:triste).time
+
+(Le paramètre __content=""__ est là pour s'assurer que nous savons que le contenu est une chaîne de caractères,
+même si aucun paramètre 'content' n'est definie, il passe par la méthode __initialize__.)
\ No newline at end of file
diff --git a/translations/fr/try_ruby_510.md b/translations/fr/try_ruby_510.md
new file mode 100644
index 00000000..538a7f61
--- /dev/null
+++ b/translations/fr/try_ruby_510.md
@@ -0,0 +1,28 @@
+---
+lang: FR
+title: Tu as appris à ton application à rejeter les choses sans valeur.
+answer: Blurb:
+ok: Blurb ajouté
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
+---
+
+As-tu remarqué comment à l'intérieur de la classe nous avons utilisé le arobase '@' (@time).
+
+__À l'extérieur__ de la classe, nous utilisons des 'accessors' :
+
+> __blurb.time = Time.now__
+
+mais __à l'intérieur__, nous utilisons les __variables de l'objet__ :
+
+> __@time = Time.now__
+
+Ce sont exactement la même chose, mais exprimée à deux endroits différents de ton programme.
+
+### Crée un autre BlurbTM
+Lorsqu'un nouveau BlurbTM est créé, la méthode initialize est utilisée pour vérifier s'il y a des
+arguments à new.
+
+Nous avons besoin de deux arguments :
+
+ blurb2 = Blurb.new :confus, "Je ne peux pas croire que le Mont Blanc a été volé !"
diff --git a/translations/fr/try_ruby_520.md b/translations/fr/try_ruby_520.md
new file mode 100644
index 00000000..37536770
--- /dev/null
+++ b/translations/fr/try_ruby_520.md
@@ -0,0 +1,26 @@
+---
+lang: FR
+title: Une girafe n'a pas volé le résumé #7
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: prev;blurb2=Blurb.new :confus, "Je ne peux pas croire que le Mont Blanc a été volé !"
+---
+
+Tu en es là. Et en un seul morceau, haha. Nous allons continuer de rendre l'application concrète, mais en attendant, faisons une révision, d'accord ?
+
+### Classes
+En Ruby, tout est en quelque sorte objet.
+Les classes expliquent les objets et leur fonctionnement.
+Par exemple, vous avez créé quelques objets BlurbTM et ces objets sont détaillés dans la classe Blurb.
+En d'autres termes, on les appelle des objets Blurb.
+Tu peux utiliser les classes pour modéliser (en quelque sorte) des objets de la vie réelle.
+
+### Accessors
+Les accessors sont des variables attachées à un objet qui peuvent être utilisées à l'extérieur d'objet.
+(blurb2.time = Time.now)
+
+### Variables d'objet
+Les variables d'objet sont les mêmes variables que tu utilises pour les accessors, mais à l'intérieur d'un objet.
+(@time = Time.now)
diff --git a/translations/fr/try_ruby_530.md b/translations/fr/try_ruby_530.md
new file mode 100644
index 00000000..f87f18f5
--- /dev/null
+++ b/translations/fr/try_ruby_530.md
@@ -0,0 +1,46 @@
+---
+lang: FR
+title: Ton propre territoire
+answer: Blurbalizer:
+ok: L'application est créée
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end
+---
+
+Trés bien, concluons cela. Voici le dernier chapitre de l'histoire épique et PALPITANTE de Try Ruby !
+Maintenant que tu as eu un aperçu de comment tout cela fonctionne, comment vas-tu l'utiliser à la maison
+et dans ton quotidien ?
+Tu es une personne géniale (l'un de mes favoris), mais tu as encore un peu besoin d'être guidé.
+
+### Terminons l'application
+Nous avons des entrées dans l'application, mais pas d'application à proprement parler.
+Pour fonctionner, elle a encore besoin d'un titre, d'un endroit où stocker tous les BlurbsTM et d'une chronologie.
+
+Devine quoi, nous allons utiliser une autre classe.
+Je te donne tout le code pour la nouvelle classe.
+__Prends ton temps__ pour l'étudier. Je ne suis pas pressé, je t'attendrai à la prochaine leçon.
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = [] # Un tableau propre et vide
+ # pour stocker les Blurbs
+ end
+
+ def add_a_blurb(mood, content)
+ # Le << signifie ajouter à la fin du tableau
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbify: #{@title} contient #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp = Blurbalizer.new "Le Grand Blurb"
\ No newline at end of file
diff --git a/translations/fr/try_ruby_540.md b/translations/fr/try_ruby_540.md
new file mode 100644
index 00000000..9a0d3db1
--- /dev/null
+++ b/translations/fr/try_ruby_540.md
@@ -0,0 +1,20 @@
+---
+lang: FR
+title: Qu'est-ce que c'est tous ces Blurbs ?
+answer: Aujourd'hui
+ok: Apportez les blurps
+error:
+load: prev;class Blurbalizer;attr_reader :title;def initialize(title);@title=title;@blurbs=[];end;def add_a_blurb(mood, content);@blurbs << Blurb.new(mood, content);@blurbs.each {|t| t.time -= 73};end;def show_timeline;puts "Blurbalizer: #{@title} contient #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.time}.reverse.each { |t| puts "#{t.content.ljust(40)} #{t.time}"};end;end;myapp = Blurbalizer.new "Le Grand Blurb";myapp.add_a_blurb :triste,"Aujourd'hui, le Mont Blanc a été volé !";myapp.add_a_blurb :confus,"Je ne peux pas croire que le Mont Blanc a été volé !";myapp.add_a_blurb :surpris,"Je suis sans voix !";myapp.add_a_blurb :colere,"Il a été volé par une girafe ! !!";myapp.add_a_blurb :degout,"J'ai laissé mon sweat à la montagne !";myapp.add_a_blurb :furieux,"Je ne retournerai jamais sur cette montagne."
+---
+
+Nous y voilà. Avez-vous compris ce que fait tout ce code dans la classe BlurbalizerTM ?
+
+> Dans la classe BlurbalizerMC, il y a deux __méthodes__ (add\_a\_blurb et show\_timeline). Tu peux utiliser une méthode en dehors de la classe, tout comme nous l'avons fait avec les accessors.
+
+Il est temps de commencer à utiliser BlurbalizerTM. J'ai déjà chargé quelques BlurbsTM pour toi, mais n'hésite pas à ajouter les tiens.
+
+Nous ne créons plus directement des BlurbsTM, mais nous utilisons la __méthode__ add\_a\_blurb de la classe BlurbalizerTM. De cette manière, nous pouvons être sûrs que tous nos BlurbsTM sont stockés dans l'objet myapp.
+
+ myapp.add_a_blurb :humeur, "Ajouter un Blurp ici"
+
+ myapp.show_timeline
diff --git a/translations/fr/try_ruby_550.md b/translations/fr/try_ruby_550.md
new file mode 100644
index 00000000..2ffc91ed
--- /dev/null
+++ b/translations/fr/try_ruby_550.md
@@ -0,0 +1,65 @@
+---
+lang: FR
+title: Tout est dans la combinaison
+answer: :-
+ok: De l'humeur !
+error:
+load: prev
+---
+
+Il est possible de faire de très belles choses avec les éléments simples de Ruby, en particulier lorsqu'on les combine
+pour créer de nouvelles choses.
+Ici, nous avons une application composée d'une classe contenant une autre classe.
+Et, en fait, Ruby se débrouille très bien
+avec ce genre de créature. C'est ce qu'on appelle la programmation orientée objet.
+
+Nous sommes arrivés au __dernier exercice de programmation__ de TryRuby. Si vous le souhaitez,
+vous pouvez ajouter d'autres fonctionnalités à Blurbalizer.TM.
+
+Peut-être que tu prefères afficher l'humeur sous forme de smiley dans la méthode __show_timeline__. Tu peux ajouter
+une méthode _moodify_ dans la classe BlurbTM puis utiliser cette méthode dans la méthode _show\_timeline_ :
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+
+ def moodify
+ if @mood == :triste
+ return ":-("
+ elsif @mood == :content
+ return ":-)"
+ # Ajoutez d'autres humeurs ici
+ end
+
+ # L'humeur par défaut
+ ":-|"
+ end
+ end
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = []
+ end
+
+ def add_a_blurb(mood, content)
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbalizer: #{@title} contient #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp.show_timeline
\ No newline at end of file
diff --git a/translations/fr/try_ruby_560.md b/translations/fr/try_ruby_560.md
new file mode 100644
index 00000000..efedbdd8
--- /dev/null
+++ b/translations/fr/try_ruby_560.md
@@ -0,0 +1,26 @@
+---
+lang: FR
+title: Resumé #8, Le Detente-Tu-As-Gérés Récapitulatif
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: def ruby(f);puts "Rendez-vous sur www.ruby-lang.org pour télécharger Ruby";end;class K;attr_reader :rb;end;mon_premier_programme=K.new
+---
+
+Cette dernière partie a pris un moment pour se terminer, pour te donner quelques conseils sur la façon dont tu peux utiliser Ruby.
+
+Si tu as apprécié, tu peux continuer avec le TryRuby Playground ou télécharger et installer Ruby: ruby-lang.org
+
+Une fois que tu as Ruby installé, tu peux créer un fichier, disons _mon\_premier\_programme.rb_, avec un éditeur de texte, taper du code Ruby, puis l'exécuter en ouvrant une invite de commande et en tapant :
+
+ ruby mon_premier_programme.rb
+
+Il existe de nombreux outils de développement (gratuits) disponibles qui combinent un éditeur, un explorateur de fichiers et un 'ruby-runner'.
+
+## Célébration
+Tu mérites vraiment un gâteau à deux étages avec un double glaçage et un gars jouant de l'une de ces guitares qui est une double guitare.
+Je veux dire, tu as terminé, tu l'as vraiment fait ! Pas de doute là-dessus, tu es vraiment __le génie que tu penses être__
+
+## Plus d'infos
+Il y a quelques articles sur ce site web. Ils peuvent te donner quelques indications sur où aller à partir de maintenant.
\ No newline at end of file
diff --git a/translations/fr/try_ruby_60.md b/translations/fr/try_ruby_60.md
new file mode 100644
index 00000000..d9f58fb2
--- /dev/null
+++ b/translations/fr/try_ruby_60.md
@@ -0,0 +1,16 @@
+---
+lang: FR
+title: Dis ton nom à l'envers
+answer: \w+
+ok: ! iuO
+error:
+---
+
+Une chaîne de caractères (string) est un ensemble de caractères que l'ordinateur peut traiter. Imagine que les lettres sont sur une corde
+à linge et que les guillemets sont des pinces à linge tenant les extrémités. Les guillemets marquent le début et la fin.
+
+Pour inverser ton nom, écris:
+
+ "Jimmy".reverse
+
+(N'oublie pas le point !)
diff --git a/translations/fr/try_ruby_70.md b/translations/fr/try_ruby_70.md
new file mode 100644
index 00000000..a8403508
--- /dev/null
+++ b/translations/fr/try_ruby_70.md
@@ -0,0 +1,13 @@
+---
+lang: FR
+title: Compter les lettres
+answer: ^\d+$
+ok: Oui. Length est aussi une 'methode'
+error:
+---
+
+Tu as utilisé la __méthode__ reverse (__inverse__) sur ton nom ! En mettant ton nom entre guillemets, tu as créé une chaîne de caractères (string). Pour enfin appelé la méthode reverse qui fonctionne sur des chaînes de caractères (string) pour retourner toutes les lettres à l'envers.
+
+Maintenant, voyons combien de lettres il y a dans ton nom :
+
+ "Jimmy".length
diff --git a/translations/fr/try_ruby_80.md b/translations/fr/try_ruby_80.md
new file mode 100644
index 00000000..94858e90
--- /dev/null
+++ b/translations/fr/try_ruby_80.md
@@ -0,0 +1,17 @@
+---
+lang: FR
+title: Répétition
+answer: (\w+)
+ok: EnchantéEnchantéEnchantéEnchantéEnchanté
+error:
+---
+
+Maintenant, tu te demandes probablement à quoi tout cela peut servir.
+
+Et bien, je suis sûr que tu as déjà été sur un site web qui a gueulé : __Hé, ton mot de passe est trop court !__
+
+Tu as deviné ? certains programmes utilisent la méthode __.length__ (__longueur__) dans leur code.
+
+Voyons voir, et si essayait de multipler ton nom par 5.
+
+ "Jimmy" * 5
diff --git a/translations/fr/try_ruby_90.md b/translations/fr/try_ruby_90.md
new file mode 100644
index 00000000..e9cecbd2
--- /dev/null
+++ b/translations/fr/try_ruby_90.md
@@ -0,0 +1,30 @@
+---
+lang: FR
+title: Hé, Résumé #1 Déjà
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
+class: stretcher chapmark
+ok: Nop, ce n'est pas possible d'inverser un nombre. Clique sur 'next'.
+error:
+---
+
+Regardons ce que tu as appris dans la première minute.
+
+### L'éditeur
+Écrire du code dans l'éditeur et cliquer sur "Run" te donne une réponse dans la fenêtre de sortie.
+(Presque) tout le code donne une réponse.
+
+### Nombres et chaîne de caractères
+Les nombres et les chaînes de caractères sont des objets mathématiques et textuels de Ruby.
+
+### Méthodes
+Tu as utilisé des méthodes en anglais comme reverse (__inverse__) et length (__longueur__) . Et des méthodes symboliques comme la
+méthode de multiplication : \*
+__Méthodes signifie action !__
+
+C'est l'essence de ton apprentissage. Prendre des choses simples, jouer avec elles et les transformer en
+nouvelles choses. Tu te sens déjà à l'aise ? Je te confirme que oui.
+
+## Okay,
+Essayons quelques choses de malaisant. Tente d'inverser un nombre :
+
+ 40.reverse
diff --git a/translations/ja/README.md b/translations/ja/README.md
new file mode 100644
index 00000000..f4cb217e
--- /dev/null
+++ b/translations/ja/README.md
@@ -0,0 +1,21 @@
+## Copyright (C)
+Try Ruby version 4 Japanese translation, 2016, _Koji Shimada_, _Masayoshi Takahashi_
+
+## The MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/translations/ja/try_ruby_10.md b/translations/ja/try_ruby_10.md
index 4c48f0ce..72cd4861 100644
--- a/translations/ja/try_ruby_10.md
+++ b/translations/ja/try_ruby_10.md
@@ -1,10 +1,10 @@
---
lang: JA
title: 30分ありますか? 今すぐRubyを試しましょう!
-answer:
+answer:
class: stretcher chapmark
-ok:
-error:
+ok:
+error:
---
Rubyは日本発のプログラミング言語で、ソフトウェア開発に革命をもたらしています。
@@ -17,10 +17,5 @@ Rubyの美しさはシンプルさと力強さの調和にあります。
- __Copy__ → 例のコードをエディタにコピーする
- __Next__ → 次のレッスンに進む
- __Back__ → 前のレッスンに戻る
-- __Clear__ → エディタをクリアする
-
-上の'地球'ボタンで
-TryRubyの言語を切り替えられます。
-
-### __Next__ をクリックして学習をはじめましょう
+
Next をクリックして学習をはじめましょう
diff --git a/translations/ja/try_ruby_120.md b/translations/ja/try_ruby_120.md
index 78217356..037b641c 100644
--- a/translations/ja/try_ruby_120.md
+++ b/translations/ja/try_ruby_120.md
@@ -1,7 +1,7 @@
---
lang: JA
title: 一列に並んで
-answer: ^\[(\d+)(,\s*\d+){3,}\]$
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
ok: バッチリです
error: リストの4番目に数値を追加してください
---
diff --git a/translations/ja/try_ruby_200.md b/translations/ja/try_ruby_200.md
index 33aaccee..da474adb 100644
--- a/translations/ja/try_ruby_200.md
+++ b/translations/ja/try_ruby_200.md
@@ -1,7 +1,7 @@
---
lang: JA
title: 構えて、狙って
-answer: ^\n.ti tae ot (.+)
+answer: dnah ym morf nwolf sah tsaot yM
load: prev
ok: オーケー。詩全体が逆順に変わりました。
error:
diff --git a/translations/ja/try_ruby_220.md b/translations/ja/try_ruby_220.md
index 0cc769c0..e5987cb1 100644
--- a/translations/ja/try_ruby_220.md
+++ b/translations/ja/try_ruby_220.md
@@ -1,9 +1,8 @@
---
lang: JA
title: メソッドをつなげる
-answer: ^More still did (.+)
+answer: My toast has flown from my hand
load: prev
-ok: Good show, my friend! The join method took that array of lines and put them together into a string.
ok: いい感じですね!joinメソッドは、配列の各要素をつなげて、一つの文字列にしました。
error:
---
diff --git a/translations/ja/try_ruby_240.md b/translations/ja/try_ruby_240.md
index 332dab02..54e95e76 100644
--- a/translations/ja/try_ruby_240.md
+++ b/translations/ja/try_ruby_240.md
@@ -4,7 +4,7 @@ title: ちっちゃな空っぽの本
answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
load: books = {}
ok: 新しい書評です
-error: splendid、quite_good、mediocre、quite_not_good、abysmalのいずれかを使ってください。また、コロンを忘れないでください
+error: splendid、quite_good、mediocre、quite_not_good、abysmal のいずれかを使ってください。また、コロンを忘れないでください
---
今作成したのは空の__ハッシュ__です。ハッシュは配列みたいなもので、各要素が名前を持つという点が異なります。
diff --git a/translations/ja/try_ruby_280.md b/translations/ja/try_ruby_280.md
index 462f646b..969cdc2b 100644
--- a/translations/ja/try_ruby_280.md
+++ b/translations/ja/try_ruby_280.md
@@ -1,7 +1,7 @@
---
lang: JA
title: 辛辣な書評をつけてしまった?
-answer: "mediocre"
+answer: :mediocre|mediocre:
load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre, "Bumblebees" => :mediocre}
ok: やった!すごいです。評価のスコアカードを作成しました
error:
diff --git a/translations/ja/try_ruby_380.md b/translations/ja/try_ruby_380.md
index f6afde89..779192dc 100644
--- a/translations/ja/try_ruby_380.md
+++ b/translations/ja/try_ruby_380.md
@@ -4,7 +4,7 @@ title: 世界はあなたの思いのまま
answer: ^\{\"William
ok: いいですね。けれど少しばかり読みにくいです。
error:
-load: def get_shakey;JSON.parse("{\"William Shakespeare\": {\"1\": {\"title\": \"The Two Gentlemen of Verona\", \"finished\": 1591},\"2\": {\"title\": \"The Taming of the Shrew\", \"finished\": 1591},\"3\": {\"title\": \"Henry VI, Part 2\", \"finished\": 1591},\"4\": {\"title\": \"Henry VI, Part 3\", \"finished\": 1591},\"5\": {\"title\": \"Henry VI, Part 1\", \"finished\": 1592},\"6\": {\"title\": \"Titus Andronicus\", \"finished\": 1592},\"7\": {\"title\": \"Richard III\", \"finished\": 1593},\"8\": {\"title\": \"Edward III\", \"finished\": 1593},\"9\": {\"title\": \"The Comedy of Errors\", \"finished\": 1594},\"10\": {\"title\": \"Love's Labour's Lost\", \"finished\": 1595},\"11\": {\"title\": \"Love's Labour's Won\", \"finished\": 1596},\"12\": {\"title\": \"Richard II\", \"finished\": 1595},\"13\": {\"title\": \"Romeo and Juliet\", \"finished\": 1595},\"14\": {\"title\": \"A Midsummer Night's Dream\", \"finished\": 1595},\"15\": {\"title\": \"King John\", \"finished\": 1596},\"16\": {\"title\": \"The Merchant of Venice\", \"finished\": 1597},\"17\": {\"title\": \"Henry IV, Part 1\", \"finished\": 1597},\"18\": {\"title\": \"The Merry Wives of Windsor\", \"finished\": 1597},\"19\": {\"title\": \"Henry IV, Part 2\", \"finished\": 1598},\"20\": {\"title\": \"Much Ado About Nothing\", \"finished\": 1599},\"21\": {\"title\": \"Henry V\", \"finished\": 1599},\"22\": {\"title\": \"Julius Caesar\", \"finished\": 1599},\"23\": {\"title\": \"As You Like It\", \"finished\": 1600},\"24\": {\"title\": \"Hamlet\", \"finished\": 1601},\"25\": {\"title\": \"Twelfth Night\", \"finished\": 1601},\"26\": {\"title\": \"Troilus and Cressida\", \"finished\": 1602},\"27\": {\"title\": \"Sir Thomas More\", \"finished\": 1604},\"28\": {\"title\": \"Measure for Measure\", \"finished\": 1604},\"29\": {\"title\": \"Othello\", \"finished\": 1604},\"30\": {\"title\": \"All's Well That Ends Well\", \"finished\": 1605},\"31\": {\"title\": \"King Lear\", \"finished\": 1606},\"32\": {\"title\": \"Timon of Athens\", \"finished\": 1606},\"33\": {\"title\": \"Macbeth\", \"finished\": 1606},\"34\": {\"title\": \"Antony and Cleopatra\", \"finished\": 1606},\"35\": {\"title\": \"Pericles, Prince of Tyre\", \"finished\": 1608},\"36\": {\"title\": \"Coriolanus\", \"finished\": 1608},\"37\": {\"title\": \"The Winter's Tale\", \"finished\": 1611},\"38\": {\"title\": \"Cymbeline\", \"finished\": 1610},\"39\": {\"title\": \"The Tempest\", \"finished\": 1611},\"40\": {\"title\": \"Cardenio\", \"finished\": 1613},\"41\": {\"title\": \"Henry VIII\", \"finished\": 1613},\"42\": {\"title\": \"The Two Noble Kinsmen\", \"finished\": 1614}}}");end;
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
---
ここまでは、自分自身で入力したものだけを使用するプログラムを実行してきました。
diff --git a/translations/ja/try_ruby_390.md b/translations/ja/try_ruby_390.md
index 98c4d57f..21723c75 100644
--- a/translations/ja/try_ruby_390.md
+++ b/translations/ja/try_ruby_390.md
@@ -9,7 +9,7 @@ load: prev
いいですね。インターネットから戯曲のリストを取得できました。リストはjsonフォーマットになっていました。
幸いなことに、RubyはjsonデータをRubyのハッシュに変換するメソッドを提供しています。
-今回は、_get_shakey_メソッドがすでにそれをやってくれていました。
+今回は、_get\_shakey_メソッドがすでにそれをやってくれていました。
ただ、ハッシュにはなりましたが、jsonデータの構造を保ち続けているためにちょっとばかり読みにくいです。
戯曲のリストをいい感じに表示するメソッドを書いていきましょう。
diff --git a/translations/ja/try_ruby_400.md b/translations/ja/try_ruby_400.md
index bbdb2aaa..0af48177 100644
--- a/translations/ja/try_ruby_400.md
+++ b/translations/ja/try_ruby_400.md
@@ -35,6 +35,6 @@ selectメソッドから返ったリストを使い、__each__メソッドを呼
countメソッドをeachメソッドの終わりにつなげていることに気づきましたか?
この値が__count\_plays__メソッドの戻り値になります。
-メソッド連鎖のまた別の具体例を示します。_s = get_shakey__ という行を見てみてください。
-ここで、get_shakeyのうしろに__["William Shakespeare"].select { |k, v|__ と続けることもできます
+メソッド連鎖のまた別の具体例を示します。__s = get\_shakey__ という行を見てみてください。
+ここで、get\_shakeyのうしろに__["William Shakespeare"].select { |k, v|__ と続けることもできます
(この場合はドットは付けないでください)。
diff --git a/translations/ja/try_ruby_430.md b/translations/ja/try_ruby_430.md
index 80ad29ac..0527620b 100644
--- a/translations/ja/try_ruby_430.md
+++ b/translations/ja/try_ruby_430.md
@@ -32,4 +32,4 @@ __==__は__等しい__という意味になります。
この箇所は__if テストする式__がfalseと評価した際に実行されることになります。
> このif-then-elseの書き方には、もっとたくさんのバリエーションがあります。
-> 詳しく知りたい方はここを読んでください。
+> 詳しく知りたい方はここを読んでください。
diff --git a/translations/ja/try_ruby_500.md b/translations/ja/try_ruby_500.md
index a75098a7..bf143ec7 100644
--- a/translations/ja/try_ruby_500.md
+++ b/translations/ja/try_ruby_500.md
@@ -25,7 +25,7 @@ __initialize__メソッドをクラスに追加しましょう。
end
end
- Blurb.new.time
+ Blurb.new(:sick).time
(引数の__content=""__という部分は、内容が文字列であると確認するためにあります。
こう書くことで、たとえcontent部分の引数が与えられなったとしても空文字が渡されます。)
diff --git a/translations/ja/try_ruby_510.md b/translations/ja/try_ruby_510.md
index a35111c8..24fd75a5 100644
--- a/translations/ja/try_ruby_510.md
+++ b/translations/ja/try_ruby_510.md
@@ -3,7 +3,7 @@ lang: JA
title: 意味ないものは拒むようにしつけました
answer: Blurb:
ok: Blurbが追加されました
-error:
+error:
load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
---
@@ -24,4 +24,4 @@ load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, cont
あ、2つの引数が必要です。
- Blurb2 = Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
+ blurb2 = Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
diff --git a/translations/ja/try_ruby_560.md b/translations/ja/try_ruby_560.md
index 879e5027..b3469ede 100644
--- a/translations/ja/try_ruby_560.md
+++ b/translations/ja/try_ruby_560.md
@@ -1,31 +1,31 @@
---
lang: JA
title: 要約(その8)です。リラックスして聞いてください
-answer:
+answer:
class: stretcher chapmark
ok:
error:
-load: def ruby(f);puts "www.ruby-lang.orgに行ってRubyをダウンロードしましょう";end;class K;attr_reader :rb;end;my_first_progam=K.new
+load: def ruby(f);puts "www.ruby-lang.orgに行ってRubyをダウンロードしましょう";end;class K;attr_reader :rb;end;my_first_program=K.new
---
この最後の章は幕を閉じ、Rubyをどう使えるかについていくつかのポインタを示すためにあります。
-ここまで楽しめたなら、TryRuby Playgroundで続けることもできますし、
+ここまで楽しめたなら、TryRuby Playgroundで続けることもできますし、
Rubyをダウンロードしてインストールすることもできます。
ruby-lang.org
-Rubyをインストールしたなら、_my\_first\_progam.rb というファイルを作成し、
+Rubyをインストールしたなら、_my\_first\_program.rb というファイルを作成し、
テキストエディタでファイルを開いて、適当なRubyコードを書いて実行してみてください。
プログラムを実行するには、コマンドプロンプトを開き、次のように入力します。
- ruby my_first_progam.rb
+ ruby my_first_program.rb
エディタとファイルブラウザ、'ruby-runner'などが一つになった、
たくさんの(フリーな)開発ツールが存在しています。
## おめでとうございます
-あなたは、何度も砂糖衣をかけた二曹ケーキや、ダブルギターのを弾くギタープレイヤーに本当に値します。
+あなたは、何度も砂糖衣をかけた二層ケーキや、ダブルギターを弾くギタープレイヤーに本当に値します。
つまり終わったということです。本当にやり遂げました!疑いようがありません。
これであなたは__認定元気いっぱい利口者__です!
diff --git a/translations/ja/try_ruby_60.md b/translations/ja/try_ruby_60.md
index 3fc46b53..983e59fa 100644
--- a/translations/ja/try_ruby_60.md
+++ b/translations/ja/try_ruby_60.md
@@ -7,11 +7,11 @@ error:
---
コンピュータが処理できる文字の集まりのことを文字列といいます。
-文字を一並びに干された洗濯物、引用符をその端をつまんでいる洗濯ハサミだと思ってください。
+文字を一並びに干された洗濯物、引用符をその端をつまんでいる洗濯バサミだと思ってください。
引用符は文字列のはじめとおわりを表します。
名前を逆さまにするには、つぎのように入力します。
"Jimmy".reverse
-(カンマを忘れないで!)
+(ピリオドを忘れないで!)
diff --git a/translations/ja/try_ruby_90.md b/translations/ja/try_ruby_90.md
index 46bcdd32..967248e6 100644
--- a/translations/ja/try_ruby_90.md
+++ b/translations/ja/try_ruby_90.md
@@ -1,10 +1,10 @@
---
lang: JA
title: このくらいで要約(その1)にしましょう
-answer: ^NoMethodError(.*)$
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
class: stretcher chapmark
ok: いいえ、数を逆さまにはできません。'Next'を押してください
-error:
+error:
---
ここまでの数分で学んだことを確認してみましょう。
diff --git a/translations/mk/README.md b/translations/mk/README.md
new file mode 100644
index 00000000..97fd0674
--- /dev/null
+++ b/translations/mk/README.md
@@ -0,0 +1,21 @@
+## Copyright (C)
+Try Ruby version 4 Macedonian translation, 2020, _Violeta Pavleska_
+
+## The MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/translations/mk/try_ruby_10.md b/translations/mk/try_ruby_10.md
new file mode 100644
index 00000000..ebd78f60
--- /dev/null
+++ b/translations/mk/try_ruby_10.md
@@ -0,0 +1,21 @@
+---
+lang: MK
+title: Имаш 30 минути? Започни со програмирање во Ruby веднаш!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Ruby е програмски јазик од Јапонија кој го револуционизира софтверскиот развој.
+
+Убавината на Ruby е во неговиот баланс помеѓу едноставноста и моќта.
+
+Можеш да пишуваш Ruby код во едиторот и можеш да ги користиш овие копчиња за навигација:
+
+- __Run__ → Го извршува кодот напишан во едиторот
+- __Copy__ → Го копира пример кодот напишан во едиторот
+- __Next__ → Те носи на следната лекција
+- __Back__ → Ти дозволува да се вратиш на претходната лекција
+
+
Кликни Next да започнеш со учење.
diff --git a/translations/mk/try_ruby_100.md b/translations/mk/try_ruby_100.md
new file mode 100644
index 00000000..452d7234
--- /dev/null
+++ b/translations/mk/try_ruby_100.md
@@ -0,0 +1,15 @@
+---
+lang: MK
+title: Стоп, ова е апсурдно!
+answer: ^\d{1,}$
+ok: Само стринговите можат да бидат прикажани во обратен редослед
+error:
+---
+
+Не можеш да го прикажеш бројот четириесет во обратен редослед. Можеш да го држиш мониторот пред огледало, но прикажување на број во обратен редослед едноставно нема смисла.
+
+Ruby прикажа порака која ја објаснува грешката. Преку таа порака, Ruby ти кажува дека нема метод наречен reverse за броеви.
+
+Можеби ако прво го модифицираш бројот да биде стринг:
+
+ 40.to_s.reverse
diff --git a/translations/mk/try_ruby_110.md b/translations/mk/try_ruby_110.md
new file mode 100644
index 00000000..71aba37f
--- /dev/null
+++ b/translations/mk/try_ruby_110.md
@@ -0,0 +1,22 @@
+---
+lang: MK
+title: Јаболката се различни од портокалите
+answer: \[\]
+ok: Одлично, ова е празна листа
+error:
+---
+
+И броевите се различни од стринговите.
+
+Иако можеш да користиш методи врз било кој објект во Ruby, сепак некои методи единствено функционираат само за одредени типови.
+Но, секогаш можеш да извршиш конверзија помеѓу разни типови користејќи ги **to** методите во Ruby.
+
+- __to_s__ врши конверзија во стрингови (__s__ trings)
+- __to_i__ врши конверзија во цели броеви (__i__ ntegers)
+- __to_a__ врши конверзија во низи (__a__ rrays)
+
+__Што се низи?!__
+
+Низите се листи. Напиши пар од загради:
+
+ []
diff --git a/translations/mk/try_ruby_120.md b/translations/mk/try_ruby_120.md
new file mode 100644
index 00000000..18c6f1ab
--- /dev/null
+++ b/translations/mk/try_ruby_120.md
@@ -0,0 +1,18 @@
+---
+lang: MK
+title: Чекање во ред
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
+ok: Одлично
+error: Пробај да додадеш четврти број во низата
+---
+
+Низите (листите) чуваат работи __во одреден редослед__.
+
+Како стоење во ред за пуканки. Ти си позади некој, и не ни помислуваш да го истуркаш на страна,
+нели? Исто, ја приметуваш личноста која стои позади тебе, нели?
+
+Еве листа за тебе. Броеви за лотарија:
+
+ [12, 47, 35]
+
+Пробај да додадеш уште еден број во низата: стави запирка после 35 проследена со некој број. Празното место е опционално.
diff --git a/translations/mk/try_ruby_130.md b/translations/mk/try_ruby_130.md
new file mode 100644
index 00000000..36f4c2d3
--- /dev/null
+++ b/translations/mk/try_ruby_130.md
@@ -0,0 +1,13 @@
+---
+lang: MK
+title: Некој нека крене рака
+answer: ^47$
+ok: Супер
+error:
+---
+
+Низа со броеви за лотарија. Кој од нив е најголем?
+
+Пробај го следново:
+
+ [12, 47, 35].max
diff --git a/translations/mk/try_ruby_140.md b/translations/mk/try_ruby_140.md
new file mode 100644
index 00000000..81519b40
--- /dev/null
+++ b/translations/mk/try_ruby_140.md
@@ -0,0 +1,13 @@
+---
+lang: MK
+title: Совладување на низи
+answer: ^\[(\d+)(,\s*\d+){2,}\]$
+ok: Зачувано!
+error:
+---
+
+Ова е супер. Но, сигурно е здодевно да ја пишуваш повторно и повторно истата низа секогаш кога ќе ти притреба, нели?
+
+Ајде да ги зачуваме броевите внатре во **ticket**, како во примерот:
+
+ ticket = [12, 47, 35]
diff --git a/translations/mk/try_ruby_150.md b/translations/mk/try_ruby_150.md
new file mode 100644
index 00000000..df0a3fd0
--- /dev/null
+++ b/translations/mk/try_ruby_150.md
@@ -0,0 +1,12 @@
+---
+lang: MK
+title: Сега, напиши Ticket
+answer: \[(\d+(, )?){2,}\]
+load: ticket = [12, 47, 35]
+ok: Низата е уште тука!
+error:
+---
+
+Сега, напиши
+
+ ticket
diff --git a/translations/mk/try_ruby_160.md b/translations/mk/try_ruby_160.md
new file mode 100644
index 00000000..8a86a714
--- /dev/null
+++ b/translations/mk/try_ruby_160.md
@@ -0,0 +1,24 @@
+---
+lang: MK
+title: Зачувано и складирано
+answer: \[12, 35, 47\]
+load: ticket = [12, 47, 35]
+ok: Ти ја подреди листата
+error:
+---
+
+Сѐ до сега се придржуваше до твоите лото броеви, ставајќи ги во __променлива__ (анг. variable), наречена ticket.
+Но и било кое друго име, како _jimmyslist_, можеш да ставиш и би било валидно исто така.
+
+Во програмирањето, ќе откриеш дека најголем дел се состои во работа со променливи.
+
+Ајде да ги подредиме твоите лото броеви во редослед, може?
+
+Напиши:
+
+ ticket.sort!
+
+Имаше низа. Ја подреди низата. Сега променливата ticket е изменета.
+Дали примети дека _sort!_ методот има голем впечатлив извичник на крајот?
+Често методите во Ruby имаат извичник ако сакаат да извршат промена врз истата променлива.
+Нема ништо посебно во тоа, тоа е само знак.
diff --git a/translations/mk/try_ruby_170.md b/translations/mk/try_ruby_170.md
new file mode 100644
index 00000000..f3aa49cf
--- /dev/null
+++ b/translations/mk/try_ruby_170.md
@@ -0,0 +1,34 @@
+---
+lang: MK
+title: Елементарно
+answer: ^(12|35|47)$
+load: ticket = [12, 47, 35]
+ok: ОК
+error: Скоро до целта
+---
+
+Па, ги зачувавме нашите лото броеви во променливата ticket. Како сега да ги извадиме повторно надвор?
+
+Веќе видовме дека можеме да го извадиме најголемиот број од низата со методот __max__. Слично, можеш да
+го извадиш __првиот__ или __последниот__ елемент од низата.
+Но, што ако сакаш да извадиш некој конкретен елемент?
+
+### [ ]
+Ruby користи [ ] загради за да таргетира елемент.
+Заградите се многу чести во Ruby.
+Тие се како знаци кои се користат за да пронајдеш мета. Буквално.
+Тие загради значат, "Јас барам ____". Подготвен, нишани!
+
+Ајде да ги издвоиме сите лото броеви:
+
+ puts ticket[0]
+ puts ticket[1]
+ puts ticket[2]
+
+Зошто користиме [0], [1], [2]?
+
+А не користиме [1], [2] и [3]? Да не е ова некаква Јапонска Зен работа?
+Не, ние компјутерџиите сакаме да започнеме со броење од нула. Тоа всушност не е само во Ruby,
+индексирањето _базирано на нула_ се користи во повеќето програмски јазици.
+
+> Мало потсетување: можeш да го користиш __Copy__ копчето за да го копираш код примерокот во едиторот.
diff --git a/translations/mk/try_ruby_180.md b/translations/mk/try_ruby_180.md
new file mode 100644
index 00000000..6d28b2dd
--- /dev/null
+++ b/translations/mk/try_ruby_180.md
@@ -0,0 +1,31 @@
+---
+lang: MK
+title: Резимето на делот #2 е тука
+answer: \w+
+class: stretcher chapmark
+load: poem = "My toast has flown from my hand\nAnd my toast has gone to the moon.\nBut when I saw it on television,\nPlanting our flag on Halley's comet,\nMore still did I want to eat it.\n"
+ok: Се римува ли?
+error:
+---
+
+Сега, погледни како твојата втора минута помина:
+
+### Грешки (анг. Errors)
+Доколку пробаш да прикажеш број во обратен редослед или да направиш нешто некоректно, Ruby ќе ти укаже на тоа.
+
+### Низи (анг. Arrays)
+Низите се листи кои зачувуваат работи во некаков редослед.
+Знаеме како да креираме низа и како да извадиме елементи од низата.
+
+### Променливи (анг. Variables)
+Променливите зачувуваат работи и им даваат име. Го употреби знакот за еднакво за да го направиш тоа. На пример,
+ticket = [14, 37, 18].
+
+### 2/8
+Сѐ на сѐ има 8 секции. Ти си две-осмини од целта. Ова се прилично едноставни работи, нели?
+Уште подобри работи следат!
+
+Ајде да смениме насока за момент. Зачував поезија за тебе во одредена променлива.
+Погледни. Напиши:
+
+ puts poem
diff --git a/translations/mk/try_ruby_190.md b/translations/mk/try_ruby_190.md
new file mode 100644
index 00000000..82e5a065
--- /dev/null
+++ b/translations/mk/try_ruby_190.md
@@ -0,0 +1,16 @@
+---
+lang: MK
+title: За жал, Toast поезијата не ти се допаѓа
+answer: (toast){0}
+load: prev
+ok: Прекрасно
+error: Сеуште ми мириса на toast мене
+---
+
+Види, во ред е. Не мора да ти се допаѓа. Промени го, ако баш и сакаш. Наместо toast, оди по
+лубеница или нешто друго. Пробај го следново за да ја видиш новата поема:
+
+ poem.gsub("toast", "honeydew")
+
+__gsub__ методот е скатено за глобална замена (анг. **global substitute**). Ги заменува сите прикажување на "toast" со
+"honeydew".
diff --git a/translations/mk/try_ruby_20.md b/translations/mk/try_ruby_20.md
new file mode 100644
index 00000000..fb148f60
--- /dev/null
+++ b/translations/mk/try_ruby_20.md
@@ -0,0 +1,18 @@
+---
+lang: MK
+title: Користење на едиторот
+answer: ^\d{1,}$
+ok: Одлично! Употреби малку математика. Примети ли како одговорот се прикажа одма?
+error: Напиши 2 + 6 во едиторот
+---
+
+Едитор (анг. **Editor**) прозорецот во долниот десен агол е место за твојот Ruby код. Кликни на __Run__ копчето за го извршиш кодот!
+
+Можеш да започнеш со малку математика. На пример:
+
+ 2 + 6
+
+Резултатот на твојата програма треба да се прикаже во прозорецот за резултат (анг. **Output**), сместен во горниот десен агол.
+Таму исто така треба да има бројка која ти покажува кој е резултатот од кодот.
+
+> Како алтернатива, можеш да кликнеш на __Copy__ за да го ископираш код примерокот во едиторот.
diff --git a/translations/mk/try_ruby_200.md b/translations/mk/try_ruby_200.md
new file mode 100644
index 00000000..e41c0d95
--- /dev/null
+++ b/translations/mk/try_ruby_200.md
@@ -0,0 +1,12 @@
+---
+lang: MK
+title: Подготвен, нишани
+answer: dnah ym morf nwolf sah tsaot yM
+load: prev
+ok: Во ред. Целата поема е прикажана во обратен редослед.
+error:
+---
+
+Прашање: што ќе се случи кога ќе ја прикажеме во обратен редослед целата поема?
+
+ poem.reverse
diff --git a/translations/mk/try_ruby_210.md b/translations/mk/try_ruby_210.md
new file mode 100644
index 00000000..5832894c
--- /dev/null
+++ b/translations/mk/try_ruby_210.md
@@ -0,0 +1,18 @@
+---
+lang: MK
+title: Премногу пресврти
+answer: ^\["More still did (.+)
+load: prev
+ok: Да, скоро до тоа што го посакуваме
+error:
+---
+
+Значи, целата поема е прикажана во обратен редослед, буква по буква. Јас само сакав да ги прикажам
+редиците во обратен редослед.
+Да ги променам местата на последната редица со првата.
+
+Да наназад, но не __толку__ назад.
+
+Еве како:
+
+ poem.lines.reverse
diff --git a/translations/mk/try_ruby_220.md b/translations/mk/try_ruby_220.md
new file mode 100644
index 00000000..0033fadb
--- /dev/null
+++ b/translations/mk/try_ruby_220.md
@@ -0,0 +1,21 @@
+---
+lang: MK
+title: Прстени од врзување на методи
+answer: My toast has flown from my hand
+load: prev
+ok: Добра претстава, мој пријателе! join методот ја зеде низата од редици стихови и ги спои сите заедно во стринг.
+error:
+---
+
+Па, што гледаш? Што се случи таму? Ти напиша __poem.lines.reverse__ и што се случи?
+
+Се случија две работи. Ти ја претвори поемата во низа со помош на редовите стихови.
+Редовите стихови одлучија на кој начин стрингот ќе биде поделен и го претвори во Низа.
+
+Потоа, ја прикажа низата во обратен редослед. Ја имаше секоја редица стих. Ги прикажа во обратен редослед. И, тоа е тоа.
+
+Ајде да додадеме уште еден метод на крајот:
+
+ puts poem.lines.reverse.join
+
+Комбинирањето, односно врзувањето на методи на ваков начин е наречен _method chaining_.
\ No newline at end of file
diff --git a/translations/mk/try_ruby_230.md b/translations/mk/try_ruby_230.md
new file mode 100644
index 00000000..3fc3cde8
--- /dev/null
+++ b/translations/mk/try_ruby_230.md
@@ -0,0 +1,31 @@
+---
+lang: MK
+title: Од вкупниот број на Резимеа, #3 е тука
+answer: \{\}
+class: stretcher chapmark
+load: prev
+ok: Одлично! Ти направи празен hash!
+error:
+---
+
+### Извичници
+Методите можат да содржат извичници (и прашалници) во нивното име.
+Тоа е само заради подобро објаснување на нивната функционалност. Ништо страшно.
+
+### Манипулација на стрингови
+Пребарување и промена на стрингови
+
+### Поврзување (анг. chaining)
+Поврзувањето на методи помага кога треба да извршиш повеќе операции врз еден објект. Можеш: да ја поделиш поемата, да ја прикажеш во обратен редослед, и на крај па пак да ја склопиш:
+__poem.lines.reverse.join__
+
+Во овој момент, можеби сакаш уште да си играш со поемата. Комплетната листа со методи за
+манипулација со Стрингови можеш да ја најдеш тука.
+
+
+Повели и пробај нови методи, како на пример: __poem.downcase__ или __poem.swapcase__
+
+## Подготвен?
+Кога ќе се почувствуваш спремен за следната лекција, напиши:
+
+ books = {}
diff --git a/translations/mk/try_ruby_240.md b/translations/mk/try_ruby_240.md
new file mode 100644
index 00000000..26ab90fa
--- /dev/null
+++ b/translations/mk/try_ruby_240.md
@@ -0,0 +1,27 @@
+---
+lang: EN
+title: Мала празна книга
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {}
+ok: Да, ти само што додаде нов ранг
+error: Use one of splendid, quite_good, mediocre, quite_not_good, abysmal. Don't forget the colon
+---
+
+Креираше празен __hash__. Нash-от е како низа, со таа разлика што секој од елементите во hash-от има име.
+
+Ќе направиме минијатурни оцени за книгата во нашиот нов hash. Ова е нашиот систем за рангирање:
+
+- :splendid → ремек-дело
+- :quite\_good → релативно добра
+- :mediocre → ист број на добри и лоши делови
+- :quite\_not\_good → релативно лоша
+- :abysmal → премногу лоша
+
+За да рангираш книга, стави го насловот во __[ ]__ наводници и стави го рангот после знакот за еднакво. На пример,
+
+ books["Gravitys Rainbow"] = :splendid
+
+> Бидејќи стигна до тука, фер е да ти кажам дека сите лекции во TryRuby се одвоени една од друга.
+> Па така, ако се разигра со рангирањето на книги, шансата ти е само во оваа лекција.
+> Доколку сакаш да ги користиш твоите рангирања во наредната лекција, мораш да им направиш copy/paste.
+> Не грижи се за ова премногу, секоја лекција има многу предефинирани работи со кои можеш да играш.
diff --git a/translations/mk/try_ruby_250.md b/translations/mk/try_ruby_250.md
new file mode 100644
index 00000000..0d30abdf
--- /dev/null
+++ b/translations/mk/try_ruby_250.md
@@ -0,0 +1,26 @@
+---
+lang: MK
+title: Уште оцени!
+answer: [3-9]
+load: books = {"Gravitys Rainbow" => :splendid}
+ok: Само што откри дека методот length одговара за стрингови, низи и hash-ови
+error:
+---
+
+Продолжи со одличната работа и наполни ги книгите со оцени. И, ако сакаш да ја видиш целата листа само напиши: __puts books__
+
+И повторно, рангирањето е: :splendid, :quite\_good, :mediocre, :quite\_not\_good and :abysmal.
+
+Овие рангови не се стрингови. Кога ќе ставиш две-точки **:** пред прост збор, добиваш __симбол__.
+Симболите се „поевтини“ од стринговите (во конотација на компјутерска меморија). Доколку сакаш да користиш еден збор на повеќе места во твојата програма, користи симбол. Наместо да имаш илјадници копии од истиот збор во меморија, компјутерот ќе го зачува симболот само __еднаш__.
+
+Уште поважно, симболот ти кажува дека не е само било кој стар збор, туку има значење во твојата програма.
+
+Внеси уште 2 оцени за книги, и напиши __books.length__ за да видиш колку оцени има во hash-от:
+
+ books["The deep end"] = :abysmal
+ books["Living colors"] = :mediocre
+
+ puts books
+
+ puts books.length
diff --git a/translations/mk/try_ruby_260.md b/translations/mk/try_ruby_260.md
new file mode 100644
index 00000000..330ef8ec
--- /dev/null
+++ b/translations/mk/try_ruby_260.md
@@ -0,0 +1,20 @@
+---
+lang: MK
+title: Чекај малку, ја оценив ли книгата Gravity's Rainbow?
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre}
+ok: Многу ми се допаѓа
+error:
+---
+
+Една од прекрасните работи во Ruby е тоа што имињата се често повторно употребливи, а тоа значи помалку имиња за паметење.
+
+Се сеќаваш ли како издвојувавме елементи од низа, со користење на број:
+__puts ticket[1]__.
+
+Кај hash-от ова фунцкионира на ист начин, со таа разлика што кај hash-от не користиме број за да го издвоиме елементот, туку користиме име.
+
+Па така, ако сакаш да издвоиш некој од твоите постари оцени, повторно стави го насловот во __[ ]__ наводници. Но, изостави го знакот за еднакво.
+Исто како во примерот:
+
+ puts books["Gravitys Rainbow"]
diff --git a/translations/mk/try_ruby_270.md b/translations/mk/try_ruby_270.md
new file mode 100644
index 00000000..aefed73f
--- /dev/null
+++ b/translations/mk/try_ruby_270.md
@@ -0,0 +1,19 @@
+---
+lang: MK
+title: Hash-овите како Парови
+answer: ^\[".*"\]
+load: prev
+ok: Ги пронајде клучевите
+error:
+---
+
+Имај на ум дека hash-овите не ги чуваат работите во редослед. Тоа не е нивна работа. Нивната работа е
+само да направат пар од две работи: __клуч__ (анг. key) и __вредност__ (анг. value).
+
+Во твоите оцени, името на книгата претставува клуч, а рангот претставува вредност.
+
+Доколку сакаш да ги видиш само насловите од сите книги што си ги оценил, напиши:
+
+ books.keys
+
+Можеш да го пробаш истово и со .values, наместо со .keys.
\ No newline at end of file
diff --git a/translations/mk/try_ruby_280.md b/translations/mk/try_ruby_280.md
new file mode 100644
index 00000000..2674242a
--- /dev/null
+++ b/translations/mk/try_ruby_280.md
@@ -0,0 +1,29 @@
+---
+lang: MK
+title: Дали си строг при оценувањето на книгите?
+answer: :mediocre|mediocre:
+load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre, "Bumblebees" => :mediocre}
+ok: Одлично, браво! Ти само што направи карта со твои оцени.
+error:
+---
+
+Даваш строги, нефер оцени? Ајде, да го зачуваме резултатот во нов hash __ratings__:
+
+Потоа, може да ги изброиме твоите оцени. Остани со мене. Напиши:
+
+ ratings = Hash.new {0}
+
+ books.values.each { |rate|
+ ratings[rate] += 1
+ }
+
+ puts ratings
+
+
+Правата линија во кодот се вика **pipe character**, која најверојатно се наоѓа над копчето Enter
+на твојата тастатура.
+
+Делот **+= 1** од код линијата **ratings[rate] += 1** значи: зголеми ја вредноста за 1.
+
+Не грижи се ако не разбираш сѐ што се случува тука. Ќе ти биде јасно подоцна.
+
diff --git a/translations/mk/try_ruby_290.md b/translations/mk/try_ruby_290.md
new file mode 100644
index 00000000..fee0f032
--- /dev/null
+++ b/translations/mk/try_ruby_290.md
@@ -0,0 +1,16 @@
+---
+lang: MK
+title: Сума
+answer: \w+
+ok: Yodelay!
+error:
+---
+
+Една од прекрасните нови работи кои сега ги искористивме е __блокот__ (анг. block). Ќе дознаеш повеќе за ова и во следната лекција. Но, во основа, блокот е мал Ruby код опкружен со __{ }__ наводници.
+
+Ајде да пробаме друг блок:
+
+ 5.times { print "Odelay! " }
+
+Блоковите се секогаш поврзани за методи. Како кај __times__ методот, кој го зема блокот и го извршува
+одново и одново. (Во нашиот пример, пет пати.)
\ No newline at end of file
diff --git a/translations/mk/try_ruby_30.md b/translations/mk/try_ruby_30.md
new file mode 100644
index 00000000..78abadb1
--- /dev/null
+++ b/translations/mk/try_ruby_30.md
@@ -0,0 +1,13 @@
+---
+lang: MK
+title: Броеви и Математика
+answer: ^[0-9\.,-]{1,}$
+ok: Одлично
+error:
+---
+
+Ruby препознава броеви и математички симболи. Можеш да пробаш и други операции, како:
+
+ 4 * 10
+ 5 - 12
+ 30 / 4
\ No newline at end of file
diff --git a/translations/mk/try_ruby_300.md b/translations/mk/try_ruby_300.md
new file mode 100644
index 00000000..fbe96992
--- /dev/null
+++ b/translations/mk/try_ruby_300.md
@@ -0,0 +1,24 @@
+---
+lang: MK
+title: Дали имаш уште време?
+answer: ^[0-9]$
+ok: Одлично го примени .times методот!
+error: Изврши го кодот во блокот 0 до 9 пати
+---
+
+Како што видовме во првиот пример со блок (при броењето на рангови) може да испратиш вредност (анг. value) на блокот.
+Кои вредности се __испратени__ е одредено со методот кој го управува блокот.
+
+Вредностите кои се __примени__ од блокот се сместени во променлива, која се испраќа на почетокот на блокот,
+помеѓу два симболи: __|име на променлива|__
+
+Ајде да го пробаме тоа во следниов блок:
+
+ 5.times { |time|
+ puts time
+ }
+
+Тука, методот __.times__ праќа вредност на променливата __|time|__. При тоа, запомни дека променливата time е валидна само
+во рамки на блокот.
+
+> Примети ли дека можеш да го делиш кодот на повеќе линии. Тоа го прави полесен за читање.
diff --git a/translations/mk/try_ruby_310.md b/translations/mk/try_ruby_310.md
new file mode 100644
index 00000000..964c3dc6
--- /dev/null
+++ b/translations/mk/try_ruby_310.md
@@ -0,0 +1,23 @@
+---
+lang: MK
+title: Стигнавме до Резиме #4
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Последнава лекција беше малку подолга. Најверојатно ти требаа три минути за да научиш:
+
+### Hash-ови
+Синоним за малиот речник (анг. dictionary) со округли страни: __{ }__
+
+### Симболи (анг. symbols)
+Мал, ефективен код од зборови, пред кои се ставаат две-точки, како: __:splendid__
+
+### Блокови (анг. blocks)
+Делови код кој може да се прикачи на многу методи во Ruby. Следниот код го искористи за да го зачуваш резултатот:
+__books.values.each { |rate| ratings[rate] += 1 }__
+
+### Следно
+Во следната лекција ќе учиме подетално за методи.
diff --git a/translations/mk/try_ruby_320.md b/translations/mk/try_ruby_320.md
new file mode 100644
index 00000000..a42153e5
--- /dev/null
+++ b/translations/mk/try_ruby_320.md
@@ -0,0 +1,38 @@
+---
+lang: MK
+title: Да се биде или не
+answer:
+load: poem = "My toast has flown from my hand\nAnd my toast has gone to the moon.\nYada yada yada\n"
+ok:
+error:
+---
+
+Другата работа за која до сега немавме шанса да ја разгледаме се: аргументите, односно параметрите (анг. parameters), во методите.
+Се сеќаваш кога ја изменивме пемата? Користевме:
+__poem.gsub("toast", "honeydew")__
+
+gsub-методот има два агрументи кои ги пративме преку два стрингови одделени со запирка, во загради.
+_Аргументите им кажуваат на методите што точно да прават._
+
+### Загради
+Всушност, за многу од методите во Ruby не се задолжителни заградите, па дури и да ги испуштиш некаде методот ќе функционира. Па така, следниот код ќе функционираше и вака:
+__poem.gsub "toast", "honeydew"__
+
+Исто така, искористивме и друг метод со параметри. Всушност, многу пати искористивме параметри иако не беше
+многу очигледно:
+
+ puts "Hello"
+ puts("Hello")
+
+Да, __puts__ исто така е метод. Дали ќе користиш загради или не кога го применуваш методот puts, за
+Ruby е исто, со таа разлика што верзијата без загради е малку полесна за читање. И ти заштедува значително време
+во пишувањето на кодот!
+
+> Па, сметам дека заклучокот е дека можеш да правиш што сакаш со заградите се додека твојот код
+> се чита убаво.
+
+### Да се биде или не / to (be) or not to (be)
+Значи, ако _to_ е метод и _be_ е параметар сега знаеме како да одговориме на прашањето старо со години.
+Навистина станува збор само за лична преференција дали сакаш да биде _to be_ или _to(be)_.
+
+Дали си расположен за Шекспир? Продолжи со читање.
diff --git a/translations/mk/try_ruby_330.md b/translations/mk/try_ruby_330.md
new file mode 100644
index 00000000..172a5759
--- /dev/null
+++ b/translations/mk/try_ruby_330.md
@@ -0,0 +1,34 @@
+---
+lang: MK
+title: Припитомување на итрицата (Шекспирово дело)
+answer: ^tame
+ok: Многу добро!
+error:
+---
+
+Сега знаеш многу добро како да го користиш програмскиот јазик Ruby. Мислам, ги помина основите.
+Сега, треба само да продолжиш да изучуваш што повеќе методи и да пробуваш што повеќе комплекси блокови.
+
+Но, има една страна од Ruby за која не зборувавме. Дефинирање на твои методи.
+__Точно така!__ Ајде да ги совладаме и нив.
+
+
+Покрај тоа што можеш да ги користиш веќе дефинираните Ruby методи (како puts, sort, times), можеш
+да дефинираш твои методи. Зошто тоа е добра идеја? Две причини:
+
+### Да си ја направиш програма пократка
+Ако една иста работа ти се повторува во повеќе делови од твојот код, полесно е
+истиот тој код да се стави во посебен метод. Твојот код ќе биде пократок.
+
+### Твојот код ќе биде лесен за читање
+Претпостави си дека твојата програма треба да прави многу различни работи.
+Да, ти __можеш__ да го ставиш кодот во една целина. Но, ќе биде многу тешко
+за разбирање и читање на истиот код подоцна.
+
+Наместо тоа, можеш да го поделиш кодот на повеќе методи, при тоа да му дадеш
+име од Англискиот јазик кое ќе биде лесно за разбирање. Ќе бидеш благодарен на себе за тоа подоцна.
+
+Па, како дефинираме метод? Како во следниот пример:
+
+ def tame( number_of_shrews )
+ end
diff --git a/translations/mk/try_ruby_340.md b/translations/mk/try_ruby_340.md
new file mode 100644
index 00000000..2170c310
--- /dev/null
+++ b/translations/mk/try_ruby_340.md
@@ -0,0 +1,24 @@
+---
+lang: MK
+title: Во Ruby, def leppard значи: дефинирање на метод со име Leppard
+answer: ^tame
+ok: Tame is not lame
+error:
+---
+
+Одлично! Веќе дефинираш твои методи. Започна со def, па следува името на методот.
+И листа со параметри кои ќе му бидат потребни на самиот метод. Ова не е ништо страшно ниту пак опасно!
+Сѐ што треба да направиш е да го пополниш методот со Ruby код и на крај да го ставиш резервираниот (анг. reserved) збор end.
+
+Ова е кодот:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ end
+
+> __П.С.__
+> Доколку не го сфати насловот на оваа лекција,
+> Def Leppard
+> е име на некогаш познатиот Англиски рок бенд.
diff --git a/translations/mk/try_ruby_350.md b/translations/mk/try_ruby_350.md
new file mode 100644
index 00000000..0029b4e5
--- /dev/null
+++ b/translations/mk/try_ruby_350.md
@@ -0,0 +1,12 @@
+---
+lang: MK
+title: Зрелите плодови на твојата креација
+answer: ^Tamed a shrew
+ok: That'll show those shrews
+error:
+load: def tame(number_of_shrews);number_of_shrews.times{puts "Tamed a shrew"};end;
+---
+
+Нов метод е дефиниран. Ајде сега да го примениме:
+
+ tame 5
diff --git a/translations/mk/try_ruby_360.md b/translations/mk/try_ruby_360.md
new file mode 100644
index 00000000..81bfd26c
--- /dev/null
+++ b/translations/mk/try_ruby_360.md
@@ -0,0 +1,29 @@
+---
+lang: MK
+title: Дај и земи
+answer: \d+
+ok: Само така. Браво.
+error:
+---
+
+Повеќето методи не само што бараат некои параметри како инпут (анг. input), туку и ќе дадат __нешто назад__.
+Направив мала измена во методот со цел да ти врати некоја вредност. Пробај:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ return number_of_shrews
+ end
+
+ puts tame(3)
+
+### Return
+Па, бидејќи си толку способен и напреден, повели уште еден совет:
+можеш да го испуштиш клучниот збор __return__ од последната линија код во методот.
+Ruby автоматски ќе ја врати последната вредност што се употребила во методот.
+
+Па така, последната линија код може да се прикаже вака: __number\_of\_shrews__.
+
+Но, бидејќи методот __.times__ исто така ќе го врати _бројот на shrews_ може да
+ја избришеме целата последна линија. Всушност, оригиналниот метод веќе го направи тоа што го баравме цело време!
diff --git a/translations/mk/try_ruby_370.md b/translations/mk/try_ruby_370.md
new file mode 100644
index 00000000..2a28640f
--- /dev/null
+++ b/translations/mk/try_ruby_370.md
@@ -0,0 +1,29 @@
+---
+lang: MK
+title: Здраво, кој е таму? Тука е Резимето #5!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Многу добро сторено, многу добро сторено, многу добро сторено, многу добро сторено!
+
+
+Навистина, навистина, навистина, навистина, навистинаааааа!
+
+Ова се последните минути од твојот живот во ретроспектива:
+
+### Методи
+Методите се дефинираат со резервираниот збор __def__ и имаат име. Методите ја прават твојата
+програма пократка и полесна за читање.
+
+### Параметри
+Методите може да имаат параметри.
+
+### Return вредности
+Методите (скоро) секогаш враќаат вредност.
+
+## Сега
+_Да се биде или не_ не е повеќе прашање за тебе. Дали си подготвен за прикажување
+повеќе од Шекспир?
diff --git a/translations/mk/try_ruby_380.md b/translations/mk/try_ruby_380.md
new file mode 100644
index 00000000..d163436f
--- /dev/null
+++ b/translations/mk/try_ruby_380.md
@@ -0,0 +1,32 @@
+---
+lang: MK
+title: Светот е нашата школка (Извадок од Шекспирово дело)
+answer: ^\{\"William
+ok: Добро. Малку потешко за читање.
+error:
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
+---
+
+Сѐ до сега извршувавме програми кои користат работи што сами ги пишувавме.
+Што е добро, иако _Odelaying_ беше епска, ова е интернет ера и е веќе време да го приклучиме
+остатокот од светот во нашите напори за програмирање.
+
+Многу, многу, многу веб страни се достапни за да ги прашаш за одредени информации. На пример,
+следниот линк ќе ти ги даде сите моментални новости на Google поврзани со Ruby.
+
+Твојот веб прелистувач најверојатно ќе ти ги прикаже во средена верзија за тебе.
+Ако погледнеш во изворот (type: control-U)
+ќе видиш долг стринг формиран од чудни карактери. Примерот на Google е во __rss__ формат.
+
+### Формати
+Има многу други формати, со чудни имиња, кои се достапни и се користат на веб, како:
+html, xml и json. Да, дури и оваа веб страна користи некои од нив.
+
+Подготвив метод за тебе кој, ќе земе и ќе достави низа со комплетната работа на
+Вилијам Шекспир од интернет.
+(Не грижи се, најверојатно доаѓа од истиот сервер на кој што оваа веб страна работи,
+па така не досадуваме на никого.)
+
+Преземи ги податоците со следната команда:
+
+ get_shakey
diff --git a/translations/mk/try_ruby_390.md b/translations/mk/try_ruby_390.md
new file mode 100644
index 00000000..278bcdeb
--- /dev/null
+++ b/translations/mk/try_ruby_390.md
@@ -0,0 +1,54 @@
+---
+lang: MK
+title: Двајцата благородни земјаци
+answer: ^The Two Noble Kinsmen$
+ok: Ова е многу подобро
+error:
+load: prev
+---
+
+Супер, сега имаме низа со претстави од интернет. Оваа низа е во json формат.
+За наша среќа, Ruby има метод со кој ќе направиме конверзија на json податоците во hash.
+Методот _get\_shakey_ веќе го направи тоа за нас.
+
+Бидејќи структурата на json податоците е ставена во hash, сеуште е потешка за читање.
+Ајде да напишеме метод со кој ќе ги прикажеме претставите во читлив формат.
+
+
+Доколку направиш инспекција на низата од претстави, ќе забележиш дека има вградена структура.
+(Ова всушност е многу честа појава кај податоци кои ги преземаш од интернет.)
+Изгледа како во примерот:
+
+
+
"William Shakespeare"
+
+
"1"
+
+
"title": "The Two Gentlemen of Verona"
+
"finished": 1591
+
+
+
"2"
+
+
"title": "The Taming of the Shrew"
+
"finished": 1591
+
+
+
...
+
+
+
+
+Со цел да ги прикажеме претставите, прво треба да пристапиме до најгорниот hash елемент "William Shakespeare" преку неговото име.
+Потоа треба да __поминеме__ низ секој елемент под него.
+
+Ruby има метод за повторување. Се вика __each__. Овој метод го сретнавме кога креиравме
+сопствен рејтинг систем за книги.
+
+Сѐ што методот __each__ враќа се испраќа во блок:
+
+ s = get_shakey
+
+ s["William Shakespeare"].each { |key, val|
+ puts val["title"]
+ }
diff --git a/translations/mk/try_ruby_40.md b/translations/mk/try_ruby_40.md
new file mode 100644
index 00000000..7d05233d
--- /dev/null
+++ b/translations/mk/try_ruby_40.md
@@ -0,0 +1,27 @@
+---
+lang: MK
+title: Со други зборови
+answer: ^[0-9\.,-]{1,}$
+ok: Супер направено
+error:
+---
+
+Дали забележа дека доколку напишеш повеќе од една формула ќе го видиш само резултатот од последната напишана линија код.
+Што се случува?
+
+> Со цел да ја направиме оваа веб страна полесна за користење му посочив на Ruby да го ископира резултатот од твојата програма во
+> **Output** прозорецот на врвот. Па така, кога ќе напишеш формула, исто така ќе имаш можност да го видиш и резултатот.
+> __Но, само последниот резултат.__ И само ако резултат прозорецот е сеуште празен.
+
+Па така, кога внесе 2 или повеќе формули, Ruby го прикажа само резултатот од последната формула.
+
+Се разбира ти можеш да го контролираш резултатот! Само напиши __puts__ пред секоја формула
+(со празно место помеѓу нив). Puts значи: *'прикажи (стави) нешто на екранот'*.
+
+Пробај го следново:
+
+ puts 4 * 10
+ puts 5 - 12
+ puts 30 / 4
+
+Сега отстрани го зборот puts од послената формула и види што ќе се случи.
diff --git a/translations/mk/try_ruby_400.md b/translations/mk/try_ruby_400.md
new file mode 100644
index 00000000..ac7ddd63
--- /dev/null
+++ b/translations/mk/try_ruby_400.md
@@ -0,0 +1,41 @@
+---
+lang: MK
+title: Сите заедно сега
+answer: ^4$
+ok: Да, Шекспир напишал 4 претстави во 1591
+error: Одговорот за годината 1591 треба да биде 4
+load: prev
+---
+
+Сега претпостави дека сакаме да ги знаеме имињата и бројот на претстави напишани
+од Шекспир само за одредена година.
+
+Ruby ни дозволува да __селектираме__ вредности од hash. Методот select користи блок преку кој
+ни дозволува да дефинираме што сакаме да селектираме и ни го враќа она што го пронашол.
+
+Потоа, може да го искористиме резултатот добиен од __select__ методот во __each__ методот (како претходно) со тоа што ќе го додадеме после select блокот. Ова е друг пример за поврзување на методи,
+кој го сретнавме претходно кога ја прикажувавме поемата во обратен редослед.
+
+Го подготвив методот __count\_plays__ за тебе. Пробај да видиш дали можеш да најдеш колку претстави
+се напишани од Шекспир во годината __1591__. Пробај го следново:
+
+ def count_plays(year)
+ s = get_shakey
+
+ s["William Shakespeare"]
+ .select { |k, v|
+ v["finished"] == year
+ }.each { |key, val|
+ puts val["title"]
+ }.count
+ end
+
+ puts count_plays(0)
+
+
+Дали забележа дека го поврзав count методот на крајот на секој each метод. Ова ни ја враќа
+вредноста од _count\_plays__ методот.
+
+Тука, има и друга можност за поврзување на методи. Ја гледаш таа осамена линија код __s = get_shakey__.
+Можеш да додадеш __["William Shakespeare"].select { |k, v|__ на крајот од get_shakey
+(не е потребно за овој случај).
diff --git a/translations/mk/try_ruby_410.md b/translations/mk/try_ruby_410.md
new file mode 100644
index 00000000..e61d66b0
--- /dev/null
+++ b/translations/mk/try_ruby_410.md
@@ -0,0 +1,41 @@
+---
+lang: MK
+title: Сѐ е добро штом добро ќе заврши
+answer: All's Well That Ends Well
+ok: True
+error: Стави 1605 како втор параметар
+load: prev
+---
+
+Добро, имаме податоци од интернет, селектиравме што сакавме и ги прикажавме резултатите.
+Што остана за подобрување? Може да ги прикажеме резултатите во подобра верзија. Како на пример
+да ја додадеме годината и да ги израмнеме насловите и годините.
+
+Тоа значи прикажување на неколку вредности во една линија. Ruby има елегантен начин
+за тоа. Тоа е исто како прикажување на стринг: __puts "Hi, my name is Jimmy"__.
+Но, наместо да ја користиме буквалната вредност _Jimmy_, ние ќе ја користиме вредноста на променливата.
+
+Прво, замени го __Jimmy__ со __#{}__. Ако Ruby забележи дека имаш hash симбол проследен со { } наводници
+{ бара променлива која се наоѓа меѓу отворената заграда и затворената заграда }.
+Така, може да се искористи следното: __"Hi, my name is \#{name}"__.
+
+Ајде малку да го промениме кодот
+
+ def print_plays(year_from, year_to)
+ get_shakey["William Shakespeare"]
+ .select { |k, v|
+ year_from <= v["finished"] &&
+ year_to >= v["finished"]
+ }.each { |k, v|
+ puts "#{v["title"].ljust(30)} #{v["finished"]}"
+ }
+ end
+ print_plays(1600, 1605)
+
+Додадов __.ljust(30)__ на насловот. На овој начин, насловот е порамент од лева страна (анг. _left justified_) со минимум 30 карактери
+за годината да се порамни убаво.
+
+Значи, пробај да видиш дали ќе можеш да го промениш аутпутот на програмата за да ја прикаже претставата како во примерот:
+__1600 -> As You Like It__
+
+__Сѐ е добро штом добро ќе заврши?__ Не, сеуште не сме готови, но крајтот се гледа!
diff --git a/translations/mk/try_ruby_420.md b/translations/mk/try_ruby_420.md
new file mode 100644
index 00000000..a1b7f131
--- /dev/null
+++ b/translations/mk/try_ruby_420.md
@@ -0,0 +1,35 @@
+---
+lang: МК
+title: Кога само би знаел како да донесам одлука
+answer:
+ok:
+error:
+---
+
+Донесувањето на одлуки (анг. decision making) во реалниот живот може да биде вистински проблем. Но не и за нас.
+Ruby значително го олеснува донесувањето на одлуки.
+
+ if 1 < 2
+ puts "Тоа е точно: 1 е помал од 2"
+ end
+
+Тука, резервираниот збор е __if__. Овој збор може да биде ставен пред некој метод или после него, како на следниов пример:
+
+ puts "Тоа е точно: 1 е помал од 2" if 1 < 2
+
+__If__ е метод кој бара еден параметар. Тој параметар може да биде било кој услов што сакаш да го тестираш. Резултатот од условот мора да биде или __true__ или __false__.
+Тука имаме неколку примери на услови и нивните резултати:
+
+ 5 <= 10 # => true
+ 'abc' == 'def' # => false
+ true # => true
+ 123456 # => true
+ 0 # => true
+ nil # => false
+ 'xyz'.empty? # => false
+ 'a' > 5 # => error:
+ # компарацијата на Стринг со
+ # Број (анг. Numeric) не успеа
+
+ _if_ условот може да има повеќе форми. Може да врши споредба на буквални вредности (1 < 2),
+променливи (a < 1) и на повратна вредност од метод ('xyz'.empty?).
diff --git a/translations/mk/try_ruby_430.md b/translations/mk/try_ruby_430.md
new file mode 100644
index 00000000..8735d57a
--- /dev/null
+++ b/translations/mk/try_ruby_430.md
@@ -0,0 +1,33 @@
+---
+lang: МК
+title: И сега, зачудувачкиот крај
+answer: не е еднакво на 100$
+ok: Тоа е супер!
+error: Ова не може да биде точно
+---
+
+Дали ги виде двата знаци за еднакво во изразот __'abc' == 'def'__?
+
+Овој знак __==__ значи: _е еднакво на_ (анг. __is equal to__).
+Додека, еден знак за еднакво, што го сретнавме и претходно, значи доделување вредност на променлива (анг. __assign a value to a variable__).
+
+За да биде уште позбунувачки, доделувањето на вредност може да се изврши и после if метод, како на пример:
+
+ a = 0
+
+ if a = 100
+ puts "Изразот е точен, но променливата a сега е: #{a}"
+ else
+ puts "#{a} не е еднакво на 100"
+ end
+
+Знакот за еднакво = промени го во == и види што ќе се случи.
+
+Ти гарантирам дека често ќе забораваш да додадеш и втор знак за еднакво. И јас го заборавам понекогаш.
+
+### else
+Во кодот погоре јас додадов и else израз. Овој дел ќе се изврши кога резултатот од
+__if тест-изразот__ ќе биде неточен, односно false.
+
+> Има повеќе варијации на if-then-else тема. Можеш да прочиташ повеќе
+> тука.
diff --git a/translations/mk/try_ruby_440.md b/translations/mk/try_ruby_440.md
new file mode 100644
index 00000000..60e621f6
--- /dev/null
+++ b/translations/mk/try_ruby_440.md
@@ -0,0 +1,28 @@
+---
+lang: МК
+title: Јас гладен
+answer: ^Јас не гладен
+ok: Yes
+error: Нема шанси да сум гладен во 10 часот наутро!
+---
+
+Во ред, сѐ се вклопува одлично. Ова се едноставни работи за тебе, но запомни дека пред само 15 минути __немаше појма за Ruby__!
+
+Последен чекор. Ајде да сврземе сѐ заедно, може?
+
+Прво ќе дефинираме два методи, а потоа ќе донесеме одлука:
+
+ def hungry?(time_of_day_in_hours)
+ puts "Me hungry"
+ true
+ end
+
+ def eat_an(what)
+ puts "Me eat #{what}\n"
+ end
+
+ eat_an 'apple' if hungry?(14)
+
+ eat_an 'apple' if hungry?(10)
+
+Сега, пробај да го смениш методот __hungry?__ да прикаже __"Јас не гладен"__ и да врати false кога времето е порано од 12 часот.
diff --git a/translations/mk/try_ruby_450.md b/translations/mk/try_ruby_450.md
new file mode 100644
index 00000000..75d90094
--- /dev/null
+++ b/translations/mk/try_ruby_450.md
@@ -0,0 +1,31 @@
+---
+lang: МК
+title: Резиме #6, што значи дека дојде многу далеку
+answer: \{\}
+class: stretcher chapmark
+ok: Во ред, тоа е празен hash
+error:
+---
+
+Ти си на 6то ниво од Ruby туторијалот. Прекрасна работа заврши. Ајде да видиме:
+
+
+### Data
+Вчита (анг. loading) податоци од интернет, разгледа структура на податоци (анг. data structure) и направи манипулација со избрани вредности.
+
+### Iterating
+Ти минуваше (анг. iterating) низ сите елементи во hash-от и поврза некои методи.
+
+### Прикажување текст то читлива форма (анг. pretty printing)
+И тоа не е сѐ, ти форматираше и прикажа вредности на начин кој е лесен за читање. Всушност, __ти направи вистинска програма!__
+
+### If
+Научи како да ја контролираш твојата програма со __if__ и __else__ изрази.
+
+## Па..
+Па, што може да биде следно? Што може да се научи сега?
+Ова е најдобриот дел. Ти помина толку голем пат, што ние ќе те запознаеме со Класи. Уште две кратки лекции и ти си готов!
+
+Претходно, ние креиравме hash како на примерот:
+
+ Hash.new
diff --git a/translations/mk/try_ruby_460.md b/translations/mk/try_ruby_460.md
new file mode 100644
index 00000000..9c6a2cd7
--- /dev/null
+++ b/translations/mk/try_ruby_460.md
@@ -0,0 +1,34 @@
+---
+lang: МК
+title: Not a School Class, a Working Class
+answer:
+ok:
+error:
+---
+
+Како што виде, празните загради {} се кратенка за Hash.new. Методот _new_ се користи за инстанцирање објекти
+од одредена класа (анг. Class). Размислувај за „класа“ како на „работничка класа“ — специфична група објекти кои
+се слични меѓу себе, имаат иста работа, исти маици.
+Од каква корист е класата?
+
+### BlurbalizerTM
+Ти само што добри брилијантна идеја за нова апликација. Тоа ќе биде следната инстант платформа за пораки.
+Ти сакаш апликација каде луѓето можат да си праќаат едни на други кратки пораки. Овие пораки
+ќе ги наречеме BlurbsTM. Еден BlurbTM ќе има максимална должина од само 40 карактери.
+Исто така ќе направиме перформанс за расположение (анг. mood setting).
+
+
+
+### Од каде да започнеш
+Па, една опција е твоите BlurbsTM елементи да ги ставиш во json фајл, нели?
+Но, како ќе водиш евиденција за содржината од елементот и времето кога е постиран?
+И кога ќе го вчиташ фајлот, како ќе изгледа во Ruby?
+Ќе биде Hash? Или низа? Или низа од низи? Или пак нешто друго?
+
+### Класа (анг. Class)
+Јас навистина мислам дека ќе сакаш да користиш класа. Ти си веќе запознаен со многу класи:
+Hash, Array, String.
+Ајде да креираме нова класа (која не враќа никаков резултат):
+
+ class Blurb
+ end
diff --git a/translations/mk/try_ruby_470.md b/translations/mk/try_ruby_470.md
new file mode 100644
index 00000000..e226d2d9
--- /dev/null
+++ b/translations/mk/try_ruby_470.md
@@ -0,0 +1,21 @@
+---
+lang: МК
+title: Работите кои ги сочинуваат апликациите
+answer:
+ok:
+error:
+---
+
+Ти отвори нова BlurbTM класа. Од што се состои твојот елемент?
+Содржина (анг. content), се разбира. Исто така, треба да го зачуваш
+времето (анг. time) кога BlurbTM е креиран. И, расположение (анг. mood).
+
+Во ред, веќе ја имаш првата линија код од класата, еве го остатокот:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+ end
+
+Името на класата секогаш започнува го голема буква.
+
+(Сеуште немаме резултат)
diff --git a/translations/mk/try_ruby_480.md b/translations/mk/try_ruby_480.md
new file mode 100644
index 00000000..6d8ecb2c
--- /dev/null
+++ b/translations/mk/try_ruby_480.md
@@ -0,0 +1,25 @@
+---
+lang: МК
+title: Accessors може да се споредат со екстремитетите на човечко тело
+answer: Blurb:
+ok: Мојот прв Blurb
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;end
+---
+
+Супер дефинирана класа, читателу. Ти сега имаш нова BlurbTM класа.
+
+При дефинирање на класата, ти користеше метод наречен attr\_accessor.
+Има многу __attr__ibute методи како на пример методот која додава мали преференци на класата.
+Овие атрибути (анг. attributes) се само променливи прикачени за класа.
+
+Размислувај на овој начин. Класата е како човек. А, атрибутите се различните делови
+од кои е направено човечкото тело, како на пример рака чија една од функционалностите е
+ракување со друг човек.
+
+### Сега
+За да креираш BlurbTM и да ставиш содржина погледни го примерот:
+
+ blurb1 = Blurb.new
+ puts blurb1
+ blurb1.content = "Today Mount Hood Was Stolen!"
diff --git a/translations/mk/try_ruby_490.md b/translations/mk/try_ruby_490.md
new file mode 100644
index 00000000..f6dd28a5
--- /dev/null
+++ b/translations/mk/try_ruby_490.md
@@ -0,0 +1,15 @@
+---
+lang: МК
+title: Објект, тоа мало убаво пакување
+answer: Blurb:
+ok: Blurb е ажуриран
+error:
+load: prev;blurb1=Blurb.new;blurb1.content="Today Mount Hood Was Stolen!"
+---
+
+Те охрабрувам да пробаш да ставиш време и расположение на BlurbTM:
+
+ blurb1.time = Time.now
+ blurb1.mood = :sick
+
+ puts blurb1
diff --git a/translations/mk/try_ruby_50.md b/translations/mk/try_ruby_50.md
new file mode 100644
index 00000000..c238906e
--- /dev/null
+++ b/translations/mk/try_ruby_50.md
@@ -0,0 +1,13 @@
+---
+lang: MK
+title: Кажи ни го твоето име
+answer: [a-zA-Z]{1,1}
+ok: Совшрено, ти формираше стринг од буквите на твоето име
+error:
+---
+
+Секако, компјутерите се корисни и брзи во математика. Ајде да продолжиме. Сакаш да го видиш твоето име напишано во обратен редослед?
+
+Прво напиши го твоето име во наводници, како во примерот:
+
+ "Jimmy"
diff --git a/translations/mk/try_ruby_500.md b/translations/mk/try_ruby_500.md
new file mode 100644
index 00000000..b7eef142
--- /dev/null
+++ b/translations/mk/try_ruby_500.md
@@ -0,0 +1,30 @@
+---
+lang: МК
+title: Ајде малку да забрзаме
+answer: ^\d{4}
+ok: Забележано
+error:
+---
+
+Супер, твојата апликација е прекрасна. Ајде малку да ти ги олесниме работите.
+Ти сигурно не сакаш да го ставаш времето на овој начин секогаш кога креираш или ажурираш BlurbTM.
+
+Ти само сакаш да внесеш содржина и да го поставиш расположението, нели?
+
+Ајде да додадеме __initialize__ метод на нашата класа. Овој метод се повикува секогаш кога е креиран нов BlurbTM.
+Во исто време може да ставиме лимит за должината на содржината на BlurbTM да биде 40 карактери.
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+ end
+
+ Blurb.new(:sick).time
+
+(Параметарот __content=""__ е тука за да нѐ потсетува дека содржината е од тип Стринг,
+иако параметер со содржина не е пуштен во initialize методот.)
diff --git a/translations/mk/try_ruby_510.md b/translations/mk/try_ruby_510.md
new file mode 100644
index 00000000..f6340794
--- /dev/null
+++ b/translations/mk/try_ruby_510.md
@@ -0,0 +1,27 @@
+---
+lang: МК
+title: Ти ја научи апликацијата да ги одбива непотребните работи
+answer: Blurb:
+ok: Blurb е додаден
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
+---
+
+Дали забележа дека внатре во класата ние користевме at-симболи (@time).
+
+__Надвор__ од класата, ние искористивме accessors:
+
+> __blurb.time = Time.now__
+
+но, __внатре__ ги користиме __променливите од објектот__:
+
+> __@time = Time.now__
+
+Тие се едно исто, но прикажани на две различни места во твојата програма.
+
+### Креирај нов BlurbTM
+Кога нов BlurbTM е креиран, initialize методот се користи за да провери дали има нови параметри.
+
+Во овој случај, нам ни требаат два параметри:
+
+ blurb2 = Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
diff --git a/translations/mk/try_ruby_520.md b/translations/mk/try_ruby_520.md
new file mode 100644
index 00000000..c8f21e25
--- /dev/null
+++ b/translations/mk/try_ruby_520.md
@@ -0,0 +1,25 @@
+---
+lang: МК
+title: Жирафа не го украде Резимето #7
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: prev;blurb2=Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
+---
+
+Браво, успеа да стигнеш до тука. Твојата апликација ќе ја направиме да биде реална, но прво да направиме резиме, може?
+
+### Класи
+Сѐ во Ruby е некаков вид на објект. Класите ги објаснуваат објектите, односно како тие функционираат.
+На пример, ти направи неколку BlurbTM објекти и тие се објаснети во Blurb класата.
+Со други зборови: ние ги викаме Blurb објекти.
+Можеш да ги користиш класите за (речиси) да моделираш објекти од реалниот свет.
+
+### Accessors
+Accessors се променливи прикачени на објект кои можат да се користат __надвор__ од објектот.
+(blurb2.time = Time.now)
+
+### Објект променливи
+Објект променливи се истите променливи што ти ги користиш како accessors, но __внатре__ во самиот објект.
+(@time = Time.now)
diff --git a/translations/mk/try_ruby_530.md b/translations/mk/try_ruby_530.md
new file mode 100644
index 00000000..7e03ec3f
--- /dev/null
+++ b/translations/mk/try_ruby_530.md
@@ -0,0 +1,45 @@
+---
+lang: МК
+title: Твојата сопствена територија
+answer: Blurbalizer:
+ok: myapp е креирана
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end
+---
+
+Тука може да ги привршуваме работите, читателу. Тука е последното поглавје од епската приказна на TryRuby!
+Сега кога имаш ориентација како сѐ работи, како ќе ги искористиш за твојата куќа и за твојот замрзнувач?
+Ти си прекрасна личност, дури и една од моите омилени, но сепак ти треба насочување.
+
+### Ајде да ја завршиме твојата апликација
+Ти имаш елементи, но немаш вистинска програма.
+Сеуште треба наслов, некое место за да ги зачуваме сите BlurbsTM и времеплов (анг. timeline) со цел да функционира.
+
+Погоди што? Ние ќе користиме уште една класа. Во следниот пример е прикажан целиот код од новата класа во една целина.
+Дозволи си онолку време колку што ти треба за да го проучиш.
+Јас не сум во брзање, ќе те причекам во следната лекција.
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = [] # Нова празна низа
+ # за зачувување Blurbs
+ end
+
+ def add_a_blurb(mood, content)
+ # Овој знак << значи додај го елементот на крајот од низата
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbify: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp = Blurbalizer.new "The Big Blurb"
diff --git a/translations/mk/try_ruby_540.md b/translations/mk/try_ruby_540.md
new file mode 100644
index 00000000..716082c3
--- /dev/null
+++ b/translations/mk/try_ruby_540.md
@@ -0,0 +1,24 @@
+---
+lang: МК
+title: Што се работи во Blurb?
+answer: Today
+ok: Bring on the blurbs
+error:
+load: prev;class Blurbalizer;attr_reader :title;def initialize(title);@title=title;@blurbs=[];end;def add_a_blurb(mood, content);@blurbs << Blurb.new(mood, content);@blurbs.each {|t| t.time -= 73};end;def show_timeline;puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.time}.reverse.each { |t| puts "#{t.content.ljust(40)} #{t.time}"};end;end;myapp = Blurbalizer.new "The Big Blurb";myapp.add_a_blurb :sick,"Today Mount Hood Was Stolen!";myapp.add_a_blurb :confused,"I can not believe Mt. Hood was stolen!";myapp.add_a_blurb :dazed,"I am speechless!";myapp.add_a_blurb :mad,"It was stolen by a giraffe !!";myapp.add_a_blurb :sad,"I Left my Hoodie on the Mountain!";myapp.add_a_blurb :mad,"I am never going back to that mountain."
+---
+
+Одлично, пристина до уште една нова лекција! Дали сфати што прави кодот во BlurbalizerTM класата?
+
+> Во BlurbalizerTM има два __методи__ (add\_a\_blurb and show\_timeline).
+> Ти можеш да користиш метод надвор од класата, на ист начин како што направивме со accessors.
+
+Време е да почнеме да ја користиме BlurbalizerTM. Јас веќе вчитав (анг. loaded) неколку
+BlurbsTM за тебе, но чувствувај се слободно да додадеш твои нови.
+
+Ние сега не креираме BlurbsTM директно, туку користиме add\_a\_blurb __метод__ од
+BlurbalizerTM класата. На овој начин, може да се осигураме дека сите наши BlurbsTM
+се зачувани во myapp објектот.
+
+ myapp.add_a_blurb :moody, "Додај Blurb тука"
+
+ myapp.show_timeline
diff --git a/translations/mk/try_ruby_550.md b/translations/mk/try_ruby_550.md
new file mode 100644
index 00000000..127cd104
--- /dev/null
+++ b/translations/mk/try_ruby_550.md
@@ -0,0 +1,66 @@
+---
+lang: МК
+title: Сѐ е до комбинирањето
+answer: :-
+ok: Moody!
+error:
+load: prev
+---
+
+Некои убави работи можат да бидат направени со едноставни делови од Ruby, посебно кога ќе ги
+искомбинираш заедно за да креираш нови работи.
+
+Тука, ние имаме апликација направена од класа која содржи друга класа. И, всушност, Ruby навистина добро
+функционира со ваквите вгнездувања. Тоа се нарекува објектно ориентирано програмирање.
+
+Ние стигнавме до __последната вежба за програмирање__ од TryRuby. Доколку сакаш, можеш да додадеш
+и други карактеристики (анг. features) на BlurbalizerTM.
+
+Можеби ти сакаш да го прикажеш расположението преку емотикони во __show_timeline__ методот. Можеш
+да додадеш _moodify_ во BlurbTM класата и тогаш да го искористиш тој метод во
+ _show\_timeline_ методот:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+
+ def moodify
+ if @mood == :sad
+ return ":-("
+ elsif @mood == :happy
+ return ":-)"
+ # Add other moods here
+ end
+
+ # The default mood
+ ":-|"
+ end
+ end
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = []
+ end
+
+ def add_a_blurb(mood, content)
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp.show_timeline
diff --git a/translations/mk/try_ruby_560.md b/translations/mk/try_ruby_560.md
new file mode 100644
index 00000000..5a89d436
--- /dev/null
+++ b/translations/mk/try_ruby_560.md
@@ -0,0 +1,32 @@
+---
+lang: МК
+title: Резиме #8, или опушти-се-издржа
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: def ruby(f);puts "Go to www.ruby-lang.org to download Ruby";end;class K;attr_reader :rb;end;my_first_progam=K.new
+---
+
+Оваа последна лекција ја искористивме малку да забавиме и да потенцираме неколку работи како ти
+можеш да го користиш Ruby програмскиот јазик.
+
+Доколку уживаше, можеш да продолжиш со TryRuby Playground
+или преземи го и инсталирај Ruby:
+ruby-lang.org
+
+Штом ќе завршиш со инсталација на Ruby, можеш да креираш фајл, на пример _my\_first\_progam.rb_,
+во текст едитор каде ќе напишеш Ruby код. Потоа кодот ќе го извршиш со отворање на терминал (или командна линија) и пишување
+на следнава команда:
+
+ ruby my_first_progam.rb
+
+Има многу (бесплатни) алатки за развој на софтвер (анг. software development) кои се комбинираат во едитор, file browser и 'ruby-runner'.
+
+## Прослави
+Ти навистина заслужи двослојна торта со двослоен прелив и некој да ти засвири на гитара.
+Ти ги совлада сите делови од овој туторијал! Нема сомнеж за тоа, ти си сега __certified red-blooded smartiac!__
+
+## Нешто повеќе
+Има повеќе статии на оваа веб страна. Таму ќе добиеш насоки каде да продолжиш да се
+движиш штом завршиш тука.
diff --git a/translations/mk/try_ruby_60.md b/translations/mk/try_ruby_60.md
new file mode 100644
index 00000000..9a9491b1
--- /dev/null
+++ b/translations/mk/try_ruby_60.md
@@ -0,0 +1,15 @@
+---
+lang: MK
+title: Кажи ни го твоето име во обратен редослед
+answer: \w+
+ok: репуС
+error:
+---
+
+Стрингот (анг. **String**) е сет од карактери кои компјутерот може да ги процесира. Замисли дека буквите се обесени на жица за алишта и наводниците се штипалки кои ги држат краевите. Наводниците го означуваат почетокот и крајот.
+
+За да го видиш твоето име во обратен редослед, напиши го следното:
+
+ "Jimmy".reverse
+
+(Немој да ја заборавиш точката!)
diff --git a/translations/mk/try_ruby_70.md b/translations/mk/try_ruby_70.md
new file mode 100644
index 00000000..16d6ed1f
--- /dev/null
+++ b/translations/mk/try_ruby_70.md
@@ -0,0 +1,14 @@
+---
+lang: MK
+title: Броење на Букви
+answer: ^\d+$
+ok: Да. Length е исто така 'метод'
+error:
+---
+
+Го искористи reverse __методот__ за твоето име! Со ставање на твоето име во наводници ти направи стринг. Потоа, го повика
+reverse методот, кој фунцкионира за стрингови и ги подредува буквите во обратен редослед.
+
+Сега, ајде да видиме од колку букви се содржи твоето име:
+
+ "Jimmy".length
diff --git a/translations/mk/try_ruby_80.md b/translations/mk/try_ruby_80.md
new file mode 100644
index 00000000..4ea34447
--- /dev/null
+++ b/translations/mk/try_ruby_80.md
@@ -0,0 +1,17 @@
+---
+lang: MK
+title: Повторувања
+answer: (\w+)
+ok: Мило ми е што те запознав.Мило ми е што те запознав.Мило ми е што те запознав.
+error:
+---
+
+Сега, сигурно се прашуваш за што служи сето ова.
+
+Па, сигурно си посетил страна која скоро и да викала, __Извинете, вашата лозинка е премногу кратка!__
+
+Гледаш, некои програми користат многу едноставен __.length__ код.
+
+Погледни го ова. Ајде да го помножиме твоето име со бројот 5.
+
+ "Jimmy" * 5
diff --git a/translations/mk/try_ruby_90.md b/translations/mk/try_ruby_90.md
new file mode 100644
index 00000000..44224416
--- /dev/null
+++ b/translations/mk/try_ruby_90.md
@@ -0,0 +1,30 @@
+---
+lang: MK
+title: Резиме на делот #1. Толку брзо?!
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
+class: stretcher chapmark
+ok: Не, не е можно да го прикажеш бројот во обратен редослед. Кликни 'Next'
+error:
+---
+
+Ајде да погледнеме што сѐ научи во овие неколку воведни минути.
+
+### Едитор
+Пишувањето на код во едиторот и кликање на копчето Run ти го дава одговорот во прозорот насловен Output (мкд. резултат).
+(Скоро) секој код дава некаков резултат/одговор.
+
+### Броеви и стрингови
+Броевите и стринговите претставуваат математички и текст објекти во Ruby.
+
+### Методи
+Ти користеше методи чие име е блиско на Англискиот-јазик, и тоа: reverse и length. И симболички методи како што е
+методот за множење: \*
+__Методите значат извршување на некаква активност!__
+
+Ова е основата за твоето учење. Земање на едноставни работи, манипулирање со нив и нивна трансформација во
+нови работи. Се чувствуваш комфортно, нели? Ти ветувам дека си.
+
+## Во ред,
+Ајде да направиме нешто некомфортно. Пробај да го прикажеш бројот во обратен редослед.
+
+ 40.reverse
diff --git a/translations/nl/try_ruby_10.md b/translations/nl/try_ruby_10.md
index 2233ca54..0062ae7a 100644
--- a/translations/nl/try_ruby_10.md
+++ b/translations/nl/try_ruby_10.md
@@ -1,13 +1,13 @@
---
lang: NL
-title: Heb je 30 minuten over ? Probeer Ruby eens uit !
-answer:
+title: Heb je 30 minuten over? Probeer Ruby eens uit!
+answer:
class: stretcher chapmark
-ok:
-error:
+ok:
+error:
---
-Ruby is een programmeertaal uit Japan die software ontwikkeling op zijn kop zet !
+Ruby is een programmeertaal uit Japan die software ontwikkeling op zijn kop zet!
Het mooie van Ruby is de balans tussen eenvoud en kracht.
@@ -17,9 +17,5 @@ Type wat Ruby code in de editor en gebruik de knoppen om TryRuby te bedienen:
- __Copy__ → Kopieert de voorbeeld code naar de editor
- __Next__ → Naar de volgende les
- __Back__ → Ga terug naar de vorige les
-- __Clear__ → Wis inhoud van de editor
-Met de 'wereld' knop
-hierboven kan je kiezen welke taal je voor TryRuby wilt gebruiken.
-
-### Klik op __Next__ om te beginnen
+
Klik op Next om te beginnen.
diff --git a/translations/nl/try_ruby_120.md b/translations/nl/try_ruby_120.md
index a5010b17..0796677c 100644
--- a/translations/nl/try_ruby_120.md
+++ b/translations/nl/try_ruby_120.md
@@ -1,7 +1,7 @@
---
lang: NL
title: In de rij
-answer: ^\[(\d+)(,\s*\d+){3,}\]$
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
ok: Bingo
error: Probeer een vierde getal toe te voegen
---
diff --git a/translations/nl/try_ruby_200.md b/translations/nl/try_ruby_200.md
index 44b943e1..0025e1a5 100644
--- a/translations/nl/try_ruby_200.md
+++ b/translations/nl/try_ruby_200.md
@@ -1,7 +1,7 @@
---
lang: NL
title: Ready, Aim
-answer: ^\n.ti tae ot (.+)
+answer: dnah ym morf nwolf sah tsaot yM
load: prev
ok: Lijkt wel Latijn
error:
diff --git a/translations/nl/try_ruby_220.md b/translations/nl/try_ruby_220.md
index ff03bce4..0a391c85 100644
--- a/translations/nl/try_ruby_220.md
+++ b/translations/nl/try_ruby_220.md
@@ -1,9 +1,9 @@
---
lang: NL
title: De schakels van de ketting
-answer: ^More still did (.+)
+answer: My toast has flown from my hand
load: prev
-ok: Goed gedaan hoor! De join methode heeft dat array weer aan elkaar geplakt.
+ok: Goed gedaan hoor! De join methode heeft dat array weer aan elkaar geplakt.
error:
---
diff --git a/translations/nl/try_ruby_240.md b/translations/nl/try_ruby_240.md
index e2132714..94c44a39 100644
--- a/translations/nl/try_ruby_240.md
+++ b/translations/nl/try_ruby_240.md
@@ -4,7 +4,7 @@ title: Een boekenlijst
answer: ^(uitstekend|best_goed|matig|best_wel_slecht|vreselijk)$
load: boeken = {}
ok: Dank je voor je boekverslag
-error: Gebruik: uitstekend, best_goed, matig, best_wel_slecht of vreselijk. Vergeet de dubbele punt niet
+error: Gebruik: uitstekend, best_goed, matig, best_wel_slecht of vreselijk. Vergeet de dubbele punt niet
---
Je hebt net een lege haspel gemaakt. Een wat ?
diff --git a/translations/nl/try_ruby_280.md b/translations/nl/try_ruby_280.md
index f436b9ea..79d927bc 100644
--- a/translations/nl/try_ruby_280.md
+++ b/translations/nl/try_ruby_280.md
@@ -1,7 +1,7 @@
---
lang: NL
title: Hoe streng ben jij?
-answer: "matig"
+answer: :matig
load: boeken = {"De regenboog" => :uitstekend, "Het puffertje" => :vreselijk, "Kleurenblind" => :matig, "Bloemetjes en bijtjes" => :matig}
ok: Wow! Je hebt een scorelijst gemaakt.
error:
diff --git a/translations/nl/try_ruby_380.md b/translations/nl/try_ruby_380.md
index 91fc1a00..47e77da2 100644
--- a/translations/nl/try_ruby_380.md
+++ b/translations/nl/try_ruby_380.md
@@ -4,7 +4,7 @@ title: We kunnen de hele wereld aan
answer: ^\{\"William
ok: Goed. Wel lastig te lezen zo.
error:
-load: def get_shakey;JSON.parse("{\"William Shakespeare\": {\"1\": {\"title\": \"The Two Gentlemen of Verona\", \"finished\": 1591},\"2\": {\"title\": \"The Taming of the Shrew\", \"finished\": 1591},\"3\": {\"title\": \"Henry VI, Part 2\", \"finished\": 1591},\"4\": {\"title\": \"Henry VI, Part 3\", \"finished\": 1591},\"5\": {\"title\": \"Henry VI, Part 1\", \"finished\": 1592},\"6\": {\"title\": \"Titus Andronicus\", \"finished\": 1592},\"7\": {\"title\": \"Richard III\", \"finished\": 1593},\"8\": {\"title\": \"Edward III\", \"finished\": 1593},\"9\": {\"title\": \"The Comedy of Errors\", \"finished\": 1594},\"10\": {\"title\": \"Love's Labour's Lost\", \"finished\": 1595},\"11\": {\"title\": \"Love's Labour's Won\", \"finished\": 1596},\"12\": {\"title\": \"Richard II\", \"finished\": 1595},\"13\": {\"title\": \"Romeo and Juliet\", \"finished\": 1595},\"14\": {\"title\": \"A Midsummer Night's Dream\", \"finished\": 1595},\"15\": {\"title\": \"King John\", \"finished\": 1596},\"16\": {\"title\": \"The Merchant of Venice\", \"finished\": 1597},\"17\": {\"title\": \"Henry IV, Part 1\", \"finished\": 1597},\"18\": {\"title\": \"The Merry Wives of Windsor\", \"finished\": 1597},\"19\": {\"title\": \"Henry IV, Part 2\", \"finished\": 1598},\"20\": {\"title\": \"Much Ado About Nothing\", \"finished\": 1599},\"21\": {\"title\": \"Henry V\", \"finished\": 1599},\"22\": {\"title\": \"Julius Caesar\", \"finished\": 1599},\"23\": {\"title\": \"As You Like It\", \"finished\": 1600},\"24\": {\"title\": \"Hamlet\", \"finished\": 1601},\"25\": {\"title\": \"Twelfth Night\", \"finished\": 1601},\"26\": {\"title\": \"Troilus and Cressida\", \"finished\": 1602},\"27\": {\"title\": \"Sir Thomas More\", \"finished\": 1604},\"28\": {\"title\": \"Measure for Measure\", \"finished\": 1604},\"29\": {\"title\": \"Othello\", \"finished\": 1604},\"30\": {\"title\": \"All's Well That Ends Well\", \"finished\": 1605},\"31\": {\"title\": \"King Lear\", \"finished\": 1606},\"32\": {\"title\": \"Timon of Athens\", \"finished\": 1606},\"33\": {\"title\": \"Macbeth\", \"finished\": 1606},\"34\": {\"title\": \"Antony and Cleopatra\", \"finished\": 1606},\"35\": {\"title\": \"Pericles, Prince of Tyre\", \"finished\": 1608},\"36\": {\"title\": \"Coriolanus\", \"finished\": 1608},\"37\": {\"title\": \"The Winter's Tale\", \"finished\": 1611},\"38\": {\"title\": \"Cymbeline\", \"finished\": 1610},\"39\": {\"title\": \"The Tempest\", \"finished\": 1611},\"40\": {\"title\": \"Cardenio\", \"finished\": 1613},\"41\": {\"title\": \"Henry VIII\", \"finished\": 1613},\"42\": {\"title\": \"The Two Noble Kinsmen\", \"finished\": 1614}}}");end;
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
---
Tot op heden hebben we programma's uitgevoerd die we zelf hebben ingetypt. En dat is
diff --git a/translations/nl/try_ruby_430.md b/translations/nl/try_ruby_430.md
index 22019163..1fdbd154 100644
--- a/translations/nl/try_ruby_430.md
+++ b/translations/nl/try_ruby_430.md
@@ -33,4 +33,4 @@ In de voorbeeld code staat ook een __else__. Deze hoort bij de __if__. De regel
na de _else_ zal worden uitgevoerd als de _if test uitdrukking_ niet waar is.
> Er zijn nog meer variaties op dit als-dan-anders thema. Lees er meer over in de Ruby
-> documentatie.
+> documentatie.
diff --git a/translations/nl/try_ruby_440.md b/translations/nl/try_ruby_440.md
index 93f13d54..9fd1203f 100644
--- a/translations/nl/try_ruby_440.md
+++ b/translations/nl/try_ruby_440.md
@@ -1,7 +1,7 @@
---
lang: NL
title: Ik ben hongerig
-answer: ^Ik ben niet hongerig.$
+answer: ^Ik ben niet hongerig
ok: Klopt
error: Om 10 uur heb ik nog geen trek !
---
@@ -14,12 +14,12 @@ Laatste stap van dit onderdeel. We laten nu alles samenwerken als één soepele
Eerst definiëren we twee methoden. Dan nemen we een beslissing:
def hongerig?(tijdstip_in_uren)
- puts "Ik ben hongerig."
+ puts "Ik ben hongerig"
true
end
def eet_een(wat)
- puts "Ik eet een #{wat}.\n"
+ puts "Ik eet een #{wat}\n"
end
eet_een 'appel' if hongerig?(14)
diff --git a/translations/nl/try_ruby_500.md b/translations/nl/try_ruby_500.md
index 6d0b6aa6..b045df05 100644
--- a/translations/nl/try_ruby_500.md
+++ b/translations/nl/try_ruby_500.md
@@ -26,7 +26,7 @@ Dan kunnen we ook meteen instellen dat de maximale BlurbTM tekst leng
end
end
- Blurb.new.tijd
+ Blurb.new(:sick).tijd
(Parameter __tekst=""__ zorgt er voor dat we zeker weten dat _tekst_ een string is.
Ook als _Blurb.new_ wordt aangeroepen zonder parameters.)
diff --git a/translations/nl/try_ruby_540.md b/translations/nl/try_ruby_540.md
index 7ca8e18c..fe7a98fa 100644
--- a/translations/nl/try_ruby_540.md
+++ b/translations/nl/try_ruby_540.md
@@ -1,8 +1,8 @@
---
lang: NL
title: De nieuwste Blurbs
-answer:
-ok:
+answer: Today
+ok: Bring on the blurbs
error:
load: prev;class Blurbalizer;attr_reader :titel;def initialize(titel);@titel=titel;@blurbs=[];end;def voeg_blurb_toe(stemming, tekst);@blurbs << Blurb.new(stemming, tekst);@blurbs.each {|t| t.tijd -= 73};end;def toon_timeline;puts "Blurbalizer: #{@titel} heeft #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.tijd}.reverse.each { |t| puts "#{t.tekst.ljust(40)} #{t.tijd}"};end;end;mijnapp = Blurbalizer.new "De Laatste Blurbs";mijnapp.voeg_blurb_toe :verdrietig,"Today Mount Hood Was Stolen!";mijnapp.voeg_blurb_toe :verward,"I can not believe Mt. Hood was stolen!";mijnapp.voeg_blurb_toe :verdoofd,"I am speechless!";mijnapp.voeg_blurb_toe :boos,"It was stolen by a giraffe !!";mijnapp.voeg_blurb_toe :verdrietig,"I Left my Hoodie on the Mountain!";mijnapp.voeg_blurb_toe :boos,"I am never going back to that mountain."
---
diff --git a/translations/nl/try_ruby_560.md b/translations/nl/try_ruby_560.md
index 0bc384ca..7340a0fc 100644
--- a/translations/nl/try_ruby_560.md
+++ b/translations/nl/try_ruby_560.md
@@ -1,11 +1,11 @@
---
lang: NL
title: Samenvatting 8, De Hee-Relax-Goed gedaan Samenvatting
-answer:
+answer:
class: stretcher chapmark
ok:
error:
-load: def ruby(f);puts "Ga naar www.ruby-lang.org om Ruby te downloaden";end;class K;attr_reader :rb;end;mijn_eerste_progamma=K.new
+load: def ruby(f);puts "Ga naar www.ruby-lang.org om Ruby te downloaden";end;class K;attr_reader :rb;end;mijn_eerste_programma=K.new
---
Dit laatste gedeelte was best inspannend. Je kunt nu even uitrusten.
@@ -13,17 +13,17 @@ Hopelijk heb je een goede indruk gekregen hoe je Ruby in het echt kunt
gebruiken.
Als programmeren je aanspreekt zou je verder kunnen gaan met onze eigen
-TryRuby Playground
+TryRuby Playground
of je kunt Ruby downloaden en installeren via:
ruby-lang.org
Als je Ruby hebt geïnstalleerd op je computer kan je een tekstbestand maken,
-bijvoorbeeld: _mijn\_eerste\_progamma.rb_.
+bijvoorbeeld: _mijn\_eerste\_programma.rb_.
Met een text editor zet je er wat Ruby code in.
Je voert het uit door een commando venster te openen en dit in te voeren:
- ruby mijn_eerste_progamma.rb
+ ruby mijn_eerste_programma.rb
Er zijn ook allerlei tools beschikbaar die een tekst editor bevatten en de Ruby
code meteen kunnen uitvoeren.
diff --git a/translations/nl/try_ruby_90.md b/translations/nl/try_ruby_90.md
index 64baa5bc..13e1ba65 100644
--- a/translations/nl/try_ruby_90.md
+++ b/translations/nl/try_ruby_90.md
@@ -1,10 +1,10 @@
---
lang: NL
title: Je hebt samenvatting 1 bereikt
-answer: ^NoMethodError(.*)$
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
class: stretcher chapmark
ok: Nee, nummers kan je niet omdraaien. Klik 'next'
-error:
+error:
---
Je bent net 1 minuut bezig en kijk eens wat je allemaal al weet.
@@ -18,8 +18,8 @@ je wilt tonen.
Numbers en strings zijn Ruby's reken en tekst objecten.
### Methodes
-Je hebt Engelstalige methodes gebruikt als _reverse_ en _length_.
-En symbolische methoden zoals vermenigvuldigen: \*
+Je hebt Engelstalige methodes gebruikt als _reverse_ en _length_.
+En symbolische methoden zoals vermenigvuldigen: \*
__Methodes betekenen actie!__
diff --git a/translations/pt-br/try_ruby_10.md b/translations/pt-br/try_ruby_10.md
index ecb3630f..dc830d5d 100644
--- a/translations/pt-br/try_ruby_10.md
+++ b/translations/pt-br/try_ruby_10.md
@@ -4,7 +4,7 @@ title: Tem 30 minutos? Dê uma chance ao Ruby agora!
answer:
class: stretcher chapmark
ok:
-error:
+error:
---
Ruby é uma linguagem de programação criada no Japão que está revolucionando
@@ -18,9 +18,5 @@ Você pode digitar algum código Ruby no editor e usar estes botões para navega
- __Copy__ → Copia o código de exemplo para o editor
- __Next__ → Vai para a próxima lição
- __Back__ → Retorna a lição anterior
-- __Clear__ → Limpa o editor
-Use o botão 'mundo'
-acima para mudar o idioma do TryRuby.
-
-### Clique em __Next__ para iniciar o aprendizado.
+
Clique em Next para iniciar o aprendizado.
diff --git a/translations/pt-br/try_ruby_120.md b/translations/pt-br/try_ruby_120.md
index 9923927d..2aa84dfd 100644
--- a/translations/pt-br/try_ruby_120.md
+++ b/translations/pt-br/try_ruby_120.md
@@ -1,7 +1,7 @@
---
lang: PT-BR
title: Ficando na Fila
-answer: ^\[(\d+)(,\s*\d+){3,}\]$
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
ok: Excelente
error: Tente incluir um quarto número na lista
---
diff --git a/translations/pt-br/try_ruby_160.md b/translations/pt-br/try_ruby_160.md
index c7ca3353..4147f302 100644
--- a/translations/pt-br/try_ruby_160.md
+++ b/translations/pt-br/try_ruby_160.md
@@ -7,7 +7,7 @@ ok: Você ordenou a lista
error:
---
-Você escreveu seus números de loteria, guardou-os dentro de uma __variavel__ chamada bilhete.
+Você escreveu seus números de loteria, guardou-os dentro de uma __variável__ chamada bilhete.
Mas qualquer outro nome, como _listadoricardo_, teria funcionado também.
Programar, você descobrirá, é em boa parte trabalhar com variáveis.
diff --git a/translations/pt-br/try_ruby_170.md b/translations/pt-br/try_ruby_170.md
index 1018d1b5..6a5b8492 100644
--- a/translations/pt-br/try_ruby_170.md
+++ b/translations/pt-br/try_ruby_170.md
@@ -8,9 +8,9 @@ error: Quase
---
Então, nós guardamos os nossos números da loteria dentro de uma variável bilhete. Como fazemos para
-coloca-los pra fora denovo?
+colocá-los pra fora de novo?
-Nós já vimos que nós podemos obter o mairor número com o método __max__. De forma similar, você pode obter
+Nós já vimos que nós podemos obter o maior número com o método __max__. De forma similar, você pode obter
o primeiro, __first__, ou o último, __last__, elemento da lista.
Mas e se você quiser um elemento específico?
diff --git a/translations/pt-br/try_ruby_200.md b/translations/pt-br/try_ruby_200.md
index 1d34e0b5..326e45d5 100644
--- a/translations/pt-br/try_ruby_200.md
+++ b/translations/pt-br/try_ruby_200.md
@@ -1,7 +1,7 @@
---
lang: PT-BR
title: Pronto, Mire
-answer: ^\n.al-emoc (.+)
+answer: oãm ahnim ad uoov adarrot ahniM
load: prev
ok: Ok, claro. Então todo o poema foi invertido.
error:
diff --git a/translations/pt-br/try_ruby_220.md b/translations/pt-br/try_ruby_220.md
index 904be536..edf32471 100644
--- a/translations/pt-br/try_ruby_220.md
+++ b/translations/pt-br/try_ruby_220.md
@@ -1,9 +1,9 @@
---
lang: PT-BR
title: Cachos de Métodos Encadeados
-answer: ^Mais ainda eu quero (.+)
+answer: Minha torrada voou da minha mão
load: prev
-ok: Bem mostrado, meu amigo! O método join pega este array de linhas e junta todas elas em uma string.
+ok: Bem mostrado, meu amigo! O método join pega este array de linhas e junta todas elas em uma string.
error:
---
diff --git a/translations/pt-br/try_ruby_240.md b/translations/pt-br/try_ruby_240.md
index 753bb5dc..06487590 100644
--- a/translations/pt-br/try_ruby_240.md
+++ b/translations/pt-br/try_ruby_240.md
@@ -4,7 +4,7 @@ title: Um Pequenino Livro em Branco
answer: ^(esplendido|muito_bom|mediocre|nao_tao_bom|lixo)$
load: livros = {}
ok: Sim, este precisa de uma análise
-error: Use um dentre esplendido, muito_bom, mediocre, nao_tao_bom, lixo. Não esqueça os dois pontos.
+error: Use um dentre esplendido, muito_bom, mediocre, nao_tao_bom, lixo. Não esqueça os dois pontos.
---
Você criou um __hash__ vazio. Um hash é como um array, porém cada um dos seus elementos tem um nome.
diff --git a/translations/pt-br/try_ruby_250.md b/translations/pt-br/try_ruby_250.md
index a124926a..e081c587 100644
--- a/translations/pt-br/try_ruby_250.md
+++ b/translations/pt-br/try_ruby_250.md
@@ -9,7 +9,7 @@ error:
Vá em frente, preencha a lista com análises. E, se você quiser ver toda a lista, apenas digite: __puts livros__
-Denovo, as classificações são: :esplendido, :muito\_bom, :mediocre, :nao\_tao\_bom e :lixo
+De novo, as classificações são: :esplendido, :muito\_bom, :mediocre, :nao\_tao\_bom e :lixo
Essas classificações não são strings. Quando você coloca dois pontos a frente de uma simples palavra, você obtém um __symbol__ (símbolo).
Símbolos são mais baratos que strings (em termos de custo de memória). Se você usar uma palavra várias e várias vezes no seu programa,
diff --git a/translations/pt-br/try_ruby_260.md b/translations/pt-br/try_ruby_260.md
index 19797d59..2a3c6696 100644
--- a/translations/pt-br/try_ruby_260.md
+++ b/translations/pt-br/try_ruby_260.md
@@ -14,7 +14,7 @@ __puts bilhete[1]__.
Para um hash isso funciona da mesma forma, exceto que nós não usaremos um número para recuperar um elemento (mas sim um nome).
-Então, se você quiser olhar uma de suas análises antigas, denovo, coloque o título entre colchetes (mas dessa vez sem o sinal de igual).
+Então, se você quiser olhar uma de suas análises antigas, de novo, coloque o título entre colchetes (mas dessa vez sem o sinal de igual).
Desta forma:
puts livros["O Arco-Íris da Gravidade"]
diff --git a/translations/pt-br/try_ruby_280.md b/translations/pt-br/try_ruby_280.md
index 26a5c538..fcfec00f 100644
--- a/translations/pt-br/try_ruby_280.md
+++ b/translations/pt-br/try_ruby_280.md
@@ -1,7 +1,7 @@
---
lang: PT-BR
title: Você é Áspero (Harsh)?
-answer: "mediocre"
+answer: :mediocre|mediocre:
load: livros = {"O Arco-Íris da Gravidade" => :esplendido, "Até o Fim" => :lixo, "Cores Vivas" => :mediocre, "Bumblebees" => :mediocre}
ok: Ótimo, wow! Você fez um scorecard das suas análises.
error:
diff --git a/translations/pt-br/try_ruby_320.md b/translations/pt-br/try_ruby_320.md
index 16113bb0..85493b65 100644
--- a/translations/pt-br/try_ruby_320.md
+++ b/translations/pt-br/try_ruby_320.md
@@ -8,7 +8,7 @@ error:
---
Outra pequena coisa que nós não falamos de forma realmente aberta: argumentos de métodos.
-Lembra quando nós múdamos o poema um pouco? Nós usamos:
+Lembra quando nós mudamos o poema um pouco? Nós usamos:
__poema.gsub("torrada", "manga")__
O método gsub precisa de dois argumentos, que nós passamos para o gsub ao incluir duas strings
@@ -27,7 +27,7 @@ Nós já usamos outro método com parâmetro (ou argumento). Muitas vezes, de fa
Sim, __puts__ também é um método. Usar puts com ou sem parênteses é a mesma coisa para o Ruby, mas a versão
sem parênteses é um pouco mais fácil de ler. E isso economiza seu valioso tempo digitando !
-> Então eu acho que a conclusão é que você pode fazer o que você quiser com parêntesis desde que
+> Então eu acho que a conclusão é que você pode fazer o que você quiser com parênteses desde que
> a legibilidade do seu código seja boa.
### (ser) ou não (ser)
diff --git a/translations/pt-br/try_ruby_360.md b/translations/pt-br/try_ruby_360.md
index 7a7ddef0..1303f97a 100644
--- a/translations/pt-br/try_ruby_360.md
+++ b/translations/pt-br/try_ruby_360.md
@@ -21,9 +21,9 @@ Eu mudei o nosso método um pouco, assim ele irá retornar um valor para você.
### Retorno (Return)
E, uma vez que você está ficando avançado e capaz aqui, mais uma dica:
você pode omitir a palavra __return__ da última linha do método.
-O Ruby irá automáticamente retornar o valor da última variada usada dentro do método.
+O Ruby irá automagicamente retornar o valor da última variável usada dentro do método.
Assim, nós podemos mudar a última linha para apenas __numero\_de\_megeras__.
Mas, uma vez que o método __.times__ também retorna o _numero\_de\_megeras_ nós podemos
-remover a última linha inteira. De fato, nosso método original já fazia o que nós queriamos!
+remover a última linha inteira. De fato, nosso método original já fazia o que nós queríamos!
diff --git a/translations/pt-br/try_ruby_370.md b/translations/pt-br/try_ruby_370.md
index a476ad15..267d9710 100644
--- a/translations/pt-br/try_ruby_370.md
+++ b/translations/pt-br/try_ruby_370.md
@@ -11,7 +11,7 @@ Muito bem, muito bem, muito bem, muito bem!
Verdadeiramente, verdadeiramente, verdadeiramente, verdadeiramente, verdadeirameeeeeente!
-Aqui estão os últimos minutos da nosa vida revisados:
+Aqui estão os últimos minutos da nossa vida revisados:
### Métodos
Métodos podem ser definidos com __def__ e têm um nome. Métodos tornam os seus programas mais curtos
diff --git a/translations/pt-br/try_ruby_380.md b/translations/pt-br/try_ruby_380.md
index c09b72aa..b7779415 100644
--- a/translations/pt-br/try_ruby_380.md
+++ b/translations/pt-br/try_ruby_380.md
@@ -4,7 +4,7 @@ title: O mundo é nossa ostra
answer: ^\{\"William
ok: Bom. Um pouco díficil de ler.
error:
-load: def get_shakey;JSON.parse("{\"William Shakespeare\": {\"1\": {\"title\": \"The Two Gentlemen of Verona\", \"finished\": 1591},\"2\": {\"title\": \"The Taming of the Shrew\", \"finished\": 1591},\"3\": {\"title\": \"Henry VI, Part 2\", \"finished\": 1591},\"4\": {\"title\": \"Henry VI, Part 3\", \"finished\": 1591},\"5\": {\"title\": \"Henry VI, Part 1\", \"finished\": 1592},\"6\": {\"title\": \"Titus Andronicus\", \"finished\": 1592},\"7\": {\"title\": \"Richard III\", \"finished\": 1593},\"8\": {\"title\": \"Edward III\", \"finished\": 1593},\"9\": {\"title\": \"The Comedy of Errors\", \"finished\": 1594},\"10\": {\"title\": \"Love's Labour's Lost\", \"finished\": 1595},\"11\": {\"title\": \"Love's Labour's Won\", \"finished\": 1596},\"12\": {\"title\": \"Richard II\", \"finished\": 1595},\"13\": {\"title\": \"Romeo and Juliet\", \"finished\": 1595},\"14\": {\"title\": \"A Midsummer Night's Dream\", \"finished\": 1595},\"15\": {\"title\": \"King John\", \"finished\": 1596},\"16\": {\"title\": \"The Merchant of Venice\", \"finished\": 1597},\"17\": {\"title\": \"Henry IV, Part 1\", \"finished\": 1597},\"18\": {\"title\": \"The Merry Wives of Windsor\", \"finished\": 1597},\"19\": {\"title\": \"Henry IV, Part 2\", \"finished\": 1598},\"20\": {\"title\": \"Much Ado About Nothing\", \"finished\": 1599},\"21\": {\"title\": \"Henry V\", \"finished\": 1599},\"22\": {\"title\": \"Julius Caesar\", \"finished\": 1599},\"23\": {\"title\": \"As You Like It\", \"finished\": 1600},\"24\": {\"title\": \"Hamlet\", \"finished\": 1601},\"25\": {\"title\": \"Twelfth Night\", \"finished\": 1601},\"26\": {\"title\": \"Troilus and Cressida\", \"finished\": 1602},\"27\": {\"title\": \"Sir Thomas More\", \"finished\": 1604},\"28\": {\"title\": \"Measure for Measure\", \"finished\": 1604},\"29\": {\"title\": \"Othello\", \"finished\": 1604},\"30\": {\"title\": \"All's Well That Ends Well\", \"finished\": 1605},\"31\": {\"title\": \"King Lear\", \"finished\": 1606},\"32\": {\"title\": \"Timon of Athens\", \"finished\": 1606},\"33\": {\"title\": \"Macbeth\", \"finished\": 1606},\"34\": {\"title\": \"Antony and Cleopatra\", \"finished\": 1606},\"35\": {\"title\": \"Pericles, Prince of Tyre\", \"finished\": 1608},\"36\": {\"title\": \"Coriolanus\", \"finished\": 1608},\"37\": {\"title\": \"The Winter's Tale\", \"finished\": 1611},\"38\": {\"title\": \"Cymbeline\", \"finished\": 1610},\"39\": {\"title\": \"The Tempest\", \"finished\": 1611},\"40\": {\"title\": \"Cardenio\", \"finished\": 1613},\"41\": {\"title\": \"Henry VIII\", \"finished\": 1613},\"42\": {\"title\": \"The Two Noble Kinsmen\", \"finished\": 1614}}}");end;
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
---
Até agora, rodamos apenas programas que utilizam apenas coisas digitadas por nós mesmos.
diff --git a/translations/pt-br/try_ruby_410.md b/translations/pt-br/try_ruby_410.md
index e1b32828..d8516ad1 100644
--- a/translations/pt-br/try_ruby_410.md
+++ b/translations/pt-br/try_ruby_410.md
@@ -7,15 +7,15 @@ error: Use 1605 como segundo parâmetro
load: prev
---
-Ok, nós pegamos alguns dados da internet, nós selecionamos o que nós queriamos e imprimimos na tela.
-O que falta melhorar? Nós poderiamos ter impresso os resultados de forma um pouco mais bonita. Como adicionar
+Ok, nós pegamos alguns dados da internet, nós selecionamos o que nós queríamos e imprimimos na tela.
+O que falta melhorar? Nós poderíamos ter impresso os resultados de forma um pouco mais bonita. Como adicionar
o ano e alinhar títulos e anos.
Isso significa imprimir vários valores em uma linha. O Ruby possui um jeito puro
de fazer isso. É exatamente como imprimir uma string: __puts "Olá, meu nome é Ricardo"__.
Mas, ao invés de utilizarmos o valor literal _Ricardo_, nós usaremos o valor da variável.
-Em primeiro lugar, substitua __Ricardo__ por __#{}__. Se o Ruby ver o símbolo hash # segudio chaves {
+Em primeiro lugar, substitua __Ricardo__ por __#{}__. Se o Ruby ver o símbolo hash # seguido de chaves {
ele procurará por uma variável entre a abertura e o fechamento da chave }.
Nós podemos usa-lo desta forma: __"Olá, meu nome é \#{nome}"__
diff --git a/translations/pt-br/try_ruby_430.md b/translations/pt-br/try_ruby_430.md
index d9f6a8f8..6fafd24a 100644
--- a/translations/pt-br/try_ruby_430.md
+++ b/translations/pt-br/try_ruby_430.md
@@ -2,8 +2,8 @@
lang: PT-BR
title: E agora para a conclusão surpreendente
answer: não é igual a 100$
-ok: That's better
-error: This can't be right
+ok: Isso é melhor
+error: Isso não pode estar certo
---
Você viu os dois sinais de igual em __'abc' == 'def'__ ?
@@ -31,4 +31,4 @@ No código acima eu adicionei o else a expressão. Esta parte será executada qu
__expressão teste do if__ retornar false.
> Existem mais variações para este tema if-then-else. Você pode ler mais
-> aqui.
+> aqui.
diff --git a/translations/pt-br/try_ruby_440.md b/translations/pt-br/try_ruby_440.md
index a5f8a69e..f26621b7 100644
--- a/translations/pt-br/try_ruby_440.md
+++ b/translations/pt-br/try_ruby_440.md
@@ -1,7 +1,7 @@
---
lang: PT-BR
title: Mim fome
-answer: ^Mim sem fome.$
+answer: ^Mim sem fome
ok: Sim
error: De jeito nenhum eu estou com fome as 10 da manhã !
---
@@ -17,12 +17,12 @@ como reluzentes sinos na praia brilhando sob a luz do sol.
Nós vamos definir dois métodos primeiro, e então tomaremos uma decisão:
def fome?(hora_do_dia)
- puts "Mim fome."
+ puts "Mim fome"
true
end
def comer_um(o_que)
- puts "Mim comer #{o_que}.\n"
+ puts "Mim comer #{o_que}\n"
end
comer_um 'maçã' if fome?(14)
diff --git a/translations/pt-br/try_ruby_450.md b/translations/pt-br/try_ruby_450.md
index 746794bd..009229dd 100644
--- a/translations/pt-br/try_ruby_450.md
+++ b/translations/pt-br/try_ruby_450.md
@@ -20,12 +20,11 @@ E como se isso não fosse o bastante, você formatou e imprimiu alguns valores d
que é fácil para humanos ler. De fato, __você fez um programa real!__
### IF
-Você aprendeu a tomar o controle dos seus programasa com declarações de __if__ e __else__.
+Você aprendeu a tomar o controle dos seus programas com declarações de __if__ e __else__.
## Então
O que é possível fazer em seguida? O que é possível que você ainda tenha que aprender agora?
-Ha! Esta é a melhor parte. Você
-Ha, this is the best part. Você percorreu um caminho tão grande que agora vamos revelar as classes.
+Ha! Esta é a melhor parte. Você percorreu um caminho tão grande que agora vamos revelar as classes.
Apenas mais duas lições curtas, e acabou.
Mais cedo, nós criamos um Hash desta forma:
diff --git a/translations/pt-br/try_ruby_500.md b/translations/pt-br/try_ruby_500.md
index da60fc0d..1c1af0b2 100644
--- a/translations/pt-br/try_ruby_500.md
+++ b/translations/pt-br/try_ruby_500.md
@@ -24,7 +24,7 @@ Ao mesmo tempo, nós queremos limitar o tamanho do conteúdo do BLurbTMTryRuby Playground ou baixar e instalar o Ruby:
+Se você gostou, você pode continuar com o TryRuby Playground ou baixar e instalar o Ruby:
ruby-lang.org
Uma vez que você tenha o Ruby instalado, você poderá criar um arquivo, digamos _meu\_primeiro\_programa.rb_, usando um editor de texto,
@@ -22,7 +22,7 @@ Existem várias ferramentas (gratuitas) de desenvolvimento disponíveis para com
e um 'ruby-runner'.
## Comemore
-Você realmente merece comer um doblo de camada dupla, com duplo sorvete, enquanto um cara toca uma daquelas guitarras que na verdade são guitarras duplas.
+Você realmente merece comer um bolo de camada dupla, com duplo sorvete, enquanto um cara toca uma daquelas guitarras que na verdade são guitarras duplas.
Quero dizer, você terminou. Você realmente terminou! Não há duvidas sobre isso, você é um __sangue-vermelho espertão certificado!__
## Mais informações
diff --git a/translations/pt-br/try_ruby_60.md b/translations/pt-br/try_ruby_60.md
index 8ba41179..6c48048b 100644
--- a/translations/pt-br/try_ruby_60.md
+++ b/translations/pt-br/try_ruby_60.md
@@ -2,7 +2,7 @@
lang: PT-BR
title: Diga o seu nome de trás para frente
answer: \w+
-ok: dooG
+ok: moB
error:
---
diff --git a/translations/pt-br/try_ruby_90.md b/translations/pt-br/try_ruby_90.md
index 1ae29fcb..b505b3f3 100644
--- a/translations/pt-br/try_ruby_90.md
+++ b/translations/pt-br/try_ruby_90.md
@@ -1,10 +1,10 @@
---
lang: PT-BR
title: Ei, Sumário #1 Pronto
-answer: ^NoMethodError(.*)$
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
class: stretcher chapmark
-ok: Não, não é possível inverter um número. Clique em _next_ para continuar
-error:
+ok: Não, não é possível inverter um número. Clique em __next__ para continuar
+error:
---
Vamos revisar o que nós aprendemos neste primeiro minuto.
diff --git a/translations/ru/README.md b/translations/ru/README.md
new file mode 100644
index 00000000..7f3977cf
--- /dev/null
+++ b/translations/ru/README.md
@@ -0,0 +1,25 @@
+## Copyright (C)
+Try Ruby version 1 English version, 2008, _why the lucky stiff_
+Try Ruby version 2 English version, 2009-2013, _Andrew McElroy & David Miani_
+Try Ruby version 3 English version, 2013 ?, _Eric Allam & Nick Walsh_
+Try Ruby version 4 English version, 2014-2015, _Ivo Herweijer_
+Try Ruby version 4 Russian version, 2018-2019, _Alexander Nikolaev_
+
+## The MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/translations/ru/try_ruby_10.md b/translations/ru/try_ruby_10.md
new file mode 100644
index 00000000..c2c6a4d1
--- /dev/null
+++ b/translations/ru/try_ruby_10.md
@@ -0,0 +1,21 @@
+---
+lang: RU
+title: Есть 30 минут? Дай Ruby шанс, и он тебя удивит!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Ruby - это язык программирования из Японии, который произвел революцию в веб-разработке.
+
+Прелесть Ruby в балансе между простотой и возможностями.
+
+Ты можешь ввести код на Ruby в редакторе и использовать кнопки для навигации:
+
+- __Run__ → Выполнить код, находящийся в редакторе
+- __Copy__ → Вставить/скопировать пример кода в редактор
+- __Next__ → Перейти к следующему уроку
+- __Back__ → Вернуться к предыдущему уроку
+
+
Нажми Next для начала обучения.
diff --git a/translations/ru/try_ruby_100.md b/translations/ru/try_ruby_100.md
new file mode 100644
index 00000000..2b61e561
--- /dev/null
+++ b/translations/ru/try_ruby_100.md
@@ -0,0 +1,16 @@
+---
+lang: RU
+title: Остановись, ты сумасшедший!
+answer: ^\d{1,}$
+ok: Только строки могут быть развернуты задом наперед
+error:
+---
+
+Ты не можешь развернуть число задом наперед. Я думаю, Вы, конечно можете держать монитор перед зеркалом, но разворачивание числа просто не имеет смысла.
+
+Ruby выведет сообщение с ошибкой. Ruby говорит Вам, что не существует метода reverse для чисел.
+
+
+Но можно попробовать преобразовать число 40 в строку для начала:
+
+ 40.to_s.reverse
diff --git a/translations/ru/try_ruby_110.md b/translations/ru/try_ruby_110.md
new file mode 100644
index 00000000..ed326a8a
--- /dev/null
+++ b/translations/ru/try_ruby_110.md
@@ -0,0 +1,22 @@
+---
+lang: RU
+title: Яблоки отличаются от апельсинов
+answer: \[\]
+ok: Отлично. Это пустой список.
+error:
+---
+
+И числа отличаются от строк.
+
+В то время как использование методов применимо ко всем типам, некоторые методы работают только с определенными типами данных.
+Но Вы всегда можете преобразовать один тип в другой, используя методы вида "to"
+
+- __to_s__ преобразует в строки
+- __to_i__ преобразует в число
+- __to_a__ преобразует в массив
+
+__Что такое массив?!__
+
+Массив - это всего лишь список. Наберите 2 квадратные скобки:
+
+ []
diff --git a/translations/ru/try_ruby_120.md b/translations/ru/try_ruby_120.md
new file mode 100644
index 00000000..c9e8bf56
--- /dev/null
+++ b/translations/ru/try_ruby_120.md
@@ -0,0 +1,19 @@
+
+---
+lang: RU
+title: Очередь за попкорном
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
+ok: Прекрасно!
+error: Попробуйте добавить четвертое число в массив.
+---
+
+Списки (массивы) хранят элементы __в определенной последовательности__.
+
+Похоже на очередь за попкорном. Вы стоите за кем-то и не пытаетесь его оттолкнуть или передвинуть, верно?
+Также человек за Вами
+
+Вот список для Вас. Номера лотерейных билетов:
+
+ [12, 47, 35]
+
+Попробуйте добавить число в массив. Наберите запятую и число после 35. Пробел не обязательно.
diff --git a/translations/ru/try_ruby_130.md b/translations/ru/try_ruby_130.md
new file mode 100644
index 00000000..c1cbd3aa
--- /dev/null
+++ b/translations/ru/try_ruby_130.md
@@ -0,0 +1,13 @@
+---
+lang: RU
+title: Первый поднимает руку
+answer: ^47$
+ok: Хорошо
+error:
+---
+
+Список номеров лотерейных билетов. А какой номер максимальный?
+
+Попробуйте:
+
+ [12, 47, 35].max
diff --git a/translations/ru/try_ruby_140.md b/translations/ru/try_ruby_140.md
new file mode 100644
index 00000000..9ccda63f
--- /dev/null
+++ b/translations/ru/try_ruby_140.md
@@ -0,0 +1,13 @@
+---
+lang: RU
+title: Спрячем список
+answer: ^\[(\d+)(,\s*\d+){2,}\]$
+ok: Сохранено!
+error:
+---
+
+Хорошо, хорошо. Но неудобно же набирать каждый раз, когда он может понадобиться, не так ли?
+
+Давайте сохраним наши номера лотерейного билета вот так:
+
+ ticket = [12, 47, 35]
diff --git a/translations/ru/try_ruby_150.md b/translations/ru/try_ruby_150.md
new file mode 100644
index 00000000..6b5bd521
--- /dev/null
+++ b/translations/ru/try_ruby_150.md
@@ -0,0 +1,12 @@
+---
+lang: RU
+title: А теперь наберите ticket
+answer: \[(\d+(, )?){2,}\]
+load: ticket = [12, 47, 35]
+ok: Восстановлен!
+error:
+---
+
+А сейчас наберите:
+
+ ticket
diff --git a/translations/ru/try_ruby_160.md b/translations/ru/try_ruby_160.md
new file mode 100644
index 00000000..daaa74c9
--- /dev/null
+++ b/translations/ru/try_ruby_160.md
@@ -0,0 +1,24 @@
+---
+lang: RU
+title: Сохранен и спрятан
+answer: \[12, 35, 47\]
+load: ticket = [12, 47, 35]
+ok: Вы отсортировали список!
+error:
+---
+
+Вы положили список номеров в __переменную__, называющуюся ticket.
+Но любое другое имя, такое как _ivanslist_, по-прежнему свободно.
+
+Занимаясь программированием, Вы заметите, что основная работа связана с переменными
+
+А давайте упорядочим список лотерейных билетов?
+
+Используйте:
+
+ ticket.sort!
+
+У Вас есть список. Вы отсортировали список. Переменная ticket изменилась.
+А Вы заметили, что у метода __sort!__ на конце стоит восклицательный знак?
+Так Ruby сообщает нам, что переменная ticket будет изменена.
+Ничего необычного, просто запомните!
diff --git a/translations/ru/try_ruby_170.md b/translations/ru/try_ruby_170.md
new file mode 100644
index 00000000..f64a1a7b
--- /dev/null
+++ b/translations/ru/try_ruby_170.md
@@ -0,0 +1,32 @@
+---
+lang: RU
+title: Элементы
+answer: ^(12|35|47)$
+load: ticket = [12, 47, 35]
+ok: Хорошо
+error: Почти
+---
+
+Мы сохранили номера в переменную, а как их получить обратно ?
+
+Мы уже видели, как мы можем получить максимальный элемент, используя метод __max__. Также Вы можете
+получить __first__(первый) или __last__(последний) элемент списка.
+А что если Вы хотите получить какой-то конкретный элемент?
+
+### [ ]
+Ruby использует [ ], чтобы нацелиться на элемент.
+Квадратные скобки очень распространены в Ruby.
+Они означают: "Я ищу ____ ", Готов, целься!
+
+Давайте получим все номера из списка:
+
+ puts ticket[0]
+ puts ticket[1]
+ puts ticket[2]
+
+Почему мы используем [0], [1], [2]?
+
+А не [1], [2] and [3]? Это какой-то японский дзен?
+Нет, во многих языках программирования отсчет идет с нуля. Это не только особенность Ruby.
+
+> Небольшое напоминание: Вы можете использовать кнопку copy.
diff --git a/translations/ru/try_ruby_180.md b/translations/ru/try_ruby_180.md
new file mode 100644
index 00000000..8d9b93d6
--- /dev/null
+++ b/translations/ru/try_ruby_180.md
@@ -0,0 +1,31 @@
+---
+lang: RU
+title: Итоги #2 Что тут у нас?
+answer: (.+)
+class: stretcher chapmark
+load: poem = "Мой тост вылетел из моей руки. \nИ мой тост отправился на луну. \nНо когда я увидел это по телевизору, \nЗаправляя наш флаг на комету Галлея, \nПосле того, как я все-таки захотел съесть его\n"
+ok: В рифму?
+error:
+---
+
+Сейчас посмотрим.
+
+### Ошибки
+Если вы попробуете сделать число наоборот или другое что-то странное, Ruby скажет об этом.
+
+### Массивы
+Массивы - это списки, хранящие элементы в определенной последовательности.
+Мы уже знаем, как создать массив и получить элементы из него.
+
+### Переменные
+Переменные сохраняют значения и дают им имена. Мы используем символ равенства,
+чтобы проделать это. Как тут:
+ticket = [14, 37, 18].
+
+### 2/8
+Всего тут 8 разделов. 2 уже позади! Не так-то и сложно, да?
+
+Давайте немного сменим направление. Я практиковался в поэзии и положил
+результат в переменную poem. Взгляните. Наберите:
+
+ puts poem
diff --git a/translations/ru/try_ruby_190.md b/translations/ru/try_ruby_190.md
new file mode 100644
index 00000000..d4602ee6
--- /dev/null
+++ b/translations/ru/try_ruby_190.md
@@ -0,0 +1,16 @@
+---
+lang: RU
+title: К сожалению, Вам не понравилась поэзия :(
+answer: (toast){0}
+load: prev
+ok: Прекрасно!
+error:
+---
+
+Все в порядке. Это не обязательно должно было понравиться Вам. Попробуйте его, будьте моим гостем. Вместо тоста может быть
+пирог или что угодно. Попробуйте это, чтобы увидеть новый вариант поэмы:
+
+ poem.gsub("тост", "медовик")
+
+Метод __gsub__ это сокращение global substitute (заменитель). Он заменяет все совпадения "тост" на
+"медовик".
diff --git a/translations/ru/try_ruby_20.md b/translations/ru/try_ruby_20.md
new file mode 100644
index 00000000..777b6f76
--- /dev/null
+++ b/translations/ru/try_ruby_20.md
@@ -0,0 +1,19 @@
+---
+lang: RU
+title: Использование редактора
+answer: ^\d{1,}$
+ok: Отлично! Вы немного попрактиковались в математике. Видите полученный результат?
+error: Наберите 2 + 6 в редакторе
+---
+
+Набирайте свой код на Ruby в окне редактора снизу, затем нажмите кнопку __Run__ и посмотрите его работу!
+
+Например, попробуем посчитать простое выражение:
+
+ 2 + 6
+
+Результат вашей программы должен отображаться в окне вывода вверху.
+На следующей строке будет отображаться, настолько хорошо Вы справились.
+
+
+> Также Вы можете нажать кнопку __Copy__, чтобы скопировать код из примера в редактор.
diff --git a/translations/ru/try_ruby_200.md b/translations/ru/try_ruby_200.md
new file mode 100644
index 00000000..8c6c58a3
--- /dev/null
+++ b/translations/ru/try_ruby_200.md
@@ -0,0 +1,12 @@
+---
+lang: RU
+title: Готов, целься!
+answer: икур йеом зи летелыв тсот йоМ
+load: prev
+ok: Конечно, все стихотворение развернуло задом наперед.
+error:
+---
+
+Вот вопрос, что произойдет:
+
+ poem.reverse
diff --git a/translations/ru/try_ruby_210.md b/translations/ru/try_ruby_210.md
new file mode 100644
index 00000000..f6ddc5b1
--- /dev/null
+++ b/translations/ru/try_ruby_210.md
@@ -0,0 +1,15 @@
+---
+lang: RU
+title: Слишком много слов наоборот
+answer: ^\["После того, как я (.+)
+load: prev
+ok: Да, то что нужно!
+error:
+---
+
+Что ж, все стихотворение стало задом наперед. Слово за словом! Но я хочу всего лишь сделать это для строк.
+Переместим первую строку в конец, а последнюю в начало.
+
+Теперь делаем так:
+
+ poem.lines.reverse
diff --git a/translations/ru/try_ruby_220.md b/translations/ru/try_ruby_220.md
new file mode 100644
index 00000000..16fc421d
--- /dev/null
+++ b/translations/ru/try_ruby_220.md
@@ -0,0 +1,21 @@
+---
+lang: RU
+title: Еще немного методов
+answer: Мой тост вылетел из моей руки
+load: prev
+ok: Отлично, мой друг! Метод join взял строки из этого массива и соединил их в строку.
+error:
+---
+
+Что Вы видите? Что произошло? Вы набрали __poem.lines.reverse__ и что случилось?
+
+Два события произошло. Первое: вы разбили стихотворения на строки, используя метод lines,
+и получили массив из них.
+
+Затем Вы развернули этот лист задом наперед. Вот и все!
+
+Давайте добавим еще один метод в конец:
+
+ puts poem.lines.reverse.join
+
+Комбинирование методов называется: цепочка методов.
diff --git a/translations/ru/try_ruby_230.md b/translations/ru/try_ruby_230.md
new file mode 100644
index 00000000..68f65b18
--- /dev/null
+++ b/translations/ru/try_ruby_230.md
@@ -0,0 +1,31 @@
+---
+lang: Ru
+title: Итоги #3 Здесь и сейчас
+answer: \{\}
+class: stretcher chapmark
+load: prev
+ok: Вы создали пустой hash (словарь)!
+error:
+---
+
+### Восклицательный знак
+Методы могут иметь восклицательные знаки(и также вопросительные) в своем имени.
+Они для более понятного объяснения, что они делают. Ничего страшного.
+
+### Манипуляции со строками
+Поиск и изменение строк
+
+### Цепочки
+Цепочки методов позволяют сделать намного больше. Разбить стихотворение, развернуть его, воссоединить в строку:
+__poem.lines.reverse.join__
+
+
+На этом этапе, Вы можете посмотреть про ВСЕ методы для строк тут.
+
+Вернитесь и попробуйте например это:
+poem.downcase или poem.swapcase
+
+## Готовы?
+Когда вы будете готовы двигаться дальше, наберите:
+
+ books = {}
diff --git a/translations/ru/try_ruby_240.md b/translations/ru/try_ruby_240.md
new file mode 100644
index 00000000..442d11f0
--- /dev/null
+++ b/translations/ru/try_ruby_240.md
@@ -0,0 +1,30 @@
+---
+lang: RU
+title: Пустой hash
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {}
+ok: Вот и новый отзыв.
+error: Используйте один из: splendid, quite_good, mediocre, quite_not_good, abysmal. Не забывайте про двоеточие.
+---
+
+Мы создали пустой __hash__. Hash - это как массив, только у каждого элемента есть имя.
+> Примечание переводчика: в русскоязычном сообществе слово hash никак не переводится. Если Array переводят как массив, то Hash остается хэш.
+> Название hash идет от hash-функции, на основе которой работает hash, и которая позволяет очень быстро находить элемент по ключу(имени). Но для того, чтобы использовать hash, нам не обязательно этого знать.
+
+Мы собираемся написать несколько миниатюрных отзывов в новый hash. Вот наша рейтинговая система:
+
+- :splendid → ШЕДЕВР!
+- :quite\_good → Понравилась!
+- :mediocre → На троечку!
+- :quite\_not\_good → Плохо!
+- :abysmal → УЖАСНО!
+
+Чтобы оценить книгу, добавьте название в квадратных скобках и поставьте оценку после знака равно.
+Пример:
+
+ books["Война и мир"] = :splendid
+
+> Сейчас, я считаю необходимым сказать, что все уроки в TryRuby отделены друг от друга.
+> Так, если вы решили сделать очень много отзывов, то использовать их все равно сможете только в этом уроке.
+> Если вы хотите использовать свои отзывы в следующем уроке, вы должны скопировать их и вставить.
+> Не беспокойтесь об этом слишком сильно, у каждого урока есть много предопределенных вещей для вас, чтобы поиграть.
diff --git a/translations/ru/try_ruby_250.md b/translations/ru/try_ruby_250.md
new file mode 100644
index 00000000..73fac0a6
--- /dev/null
+++ b/translations/ru/try_ruby_250.md
@@ -0,0 +1,31 @@
+---
+lang: RU
+title: Еще несколько простых отзывов
+answer: [3-9]
+load: books = {"Gravitys Rainbow" => :splendid}
+ok: Отлично, смотрите: метод length работает на строках, словарях и массивах.
+error:
+---
+
+Продолжайте, заполните его отзывами. И, если вы хотите увидеть весь список, просто введите: __puts books__
+
+Опять же, возможные оценки: :splendid, :quite\_good, :mediocre, :quite\_not\_good and :abysmal.
+
+Эти оценки не являются строками. Когда вы помещаете двоеточие перед простым словом, вы получаете __Symbol__.
+Symbol дешевле строк (с точки зрения компьютерной памяти). Если вы используете слово снова и снова в своей программе,
+используйте Symbol. Вместо того, чтобы иметь тысячи копий этого слова в памяти, Ruby будет хранить Symbol только
+__один раз__.
+
+Что еще более важно, Symbol говорит вам, что это не просто старое слово, но и то, что оно имеет смысл в вашей программе.
+> Примечание переводчика: в английском языке есть два слова: Symbol и Chars, и оба переводятся на русский как символ(ы).
+> В контексте Ruby Symbol правильно было бы перевести как "идентификатор", но в разговоре используют слово символ.
+> Поэтому если в контексте Ruby вы услышите "символ", то скорее всего это Symbol, идентификатор, который записывается как :good, и является оптимизированной для памяти строкой
+
+Введите еще 2 отзыва, используйте __books.length__, чтобы узнать, сколько отзывов в hash:
+
+ books["The deep end"] = :abysmal
+ books["Living colors"] = :mediocre
+
+ puts books
+
+ puts books.length
diff --git a/translations/ru/try_ruby_260.md b/translations/ru/try_ruby_260.md
new file mode 100644
index 00000000..0bab84b1
--- /dev/null
+++ b/translations/ru/try_ruby_260.md
@@ -0,0 +1,21 @@
+---
+lang: RU
+title: Погодите, я не хуже Войны и мир?
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {"Война и мир" => :splendid, "Отцы и дети" => :abysmal, "Идиот" => :mediocre}
+ok: Мне нравится
+error:
+---
+
+Одна особенность Ruby заключается в том, что имена часто используются повторно, что означает меньшее количество имен, которые вам нужно запомнить.
+
+Помните, как мы извлекали элементы из массива с помощью числа:
+__puts ticket [1] __.
+
+Для hash это работает одинаково, за исключением того, что мы не используем число, чтобы получить элемент, а имя(ключ, key, прим. переводчика).
+
+Итак, если вы хотите посмотреть один из своих старых отзывов, снова введите название в квадратных скобках. Но не пишите равенство.
+Именно так:
+
+ puts books["Война и мир"]
+
diff --git a/translations/ru/try_ruby_270.md b/translations/ru/try_ruby_270.md
new file mode 100644
index 00000000..ac1062cb
--- /dev/null
+++ b/translations/ru/try_ruby_270.md
@@ -0,0 +1,19 @@
+---
+lang: RU
+title: Словари это пары
+answer: ^\[".*"\]
+load: prev
+ok: Вы нашли ключи
+error:
+---
+
+Помните, что словари не хранят элементы в последовательности. Это не их задача.
+Они создают пару: ключ(key) : значение(value)
+
+В ваших отзывах, название книги - это ключ, а оценка - значение.
+
+Если вы хотите увидеть все названия книг, введите:
+
+ books.keys
+
+Также попробуйте использовать .values вместо .keys.
diff --git a/translations/ru/try_ruby_280.md b/translations/ru/try_ruby_280.md
new file mode 100644
index 00000000..c414ce63
--- /dev/null
+++ b/translations/ru/try_ruby_280.md
@@ -0,0 +1,25 @@
+---
+lang: RU
+title: А ты суров?
+answer: :mediocre|mediocre:
+load: books = {"Война и мир" => :splendid, "Отцы и дети" => :abysmal, "Идиот" => :mediocre, "Евгений Онегин" => :amazing}
+ok: Отлично, круто! Вы создали таблицу своих оценок
+---
+
+Вы выдаете суровые, несправедливые отзывы? Давайте посчитаем их в новом hash __ratings__:
+Следуя за мной, наберите:
+
+ ratings = Hash.new {0}
+
+ books.values.each { |rate|
+ ratings[rate] += 1
+ }
+
+ puts ratings
+
+Прямой линией в коде является символ pipe , вероятно, расположенный над клавишей Enter
+на клавиатуре.
+
+Эта строка _ + = 1_ означает: увеличить значение на 1.
+
+Не беспокойтесь, если вы не понимаете все, что здесь происходит. Это будет показано позже.
diff --git a/translations/ru/try_ruby_290.md b/translations/ru/try_ruby_290.md
new file mode 100644
index 00000000..bfe43c57
--- /dev/null
+++ b/translations/ru/try_ruby_290.md
@@ -0,0 +1,18 @@
+---
+lang: RU
+title: Подсчет
+answer: .+
+ok: Ура!
+error:
+---
+
+Одна из потрясающих вещей, которую мы использовали это __block(блок)__. Мы изучим подробнее в
+этом и следующем уроке. Но, в основном, блок - это немного кода на Ruby, окруженного фигурными
+скобками.
+
+Давайте попробуем создать другой блок:
+
+ 5.times { print "Ура! " }
+
+Блоки всегда привязаны к методам. Как метод __times__, который берет блок и запускает
+код снова и снова. (В нашем примере: пять раз.)
diff --git a/translations/ru/try_ruby_30.md b/translations/ru/try_ruby_30.md
new file mode 100644
index 00000000..24c1eb1d
--- /dev/null
+++ b/translations/ru/try_ruby_30.md
@@ -0,0 +1,13 @@
+---
+lang: RU
+title: Числа и математика
+answer: ^[0-9\.,-]{1,}$
+ok: Хорошо!
+error:
+---
+
+Ruby понимает числа и математические операции. Попробуйте их использовать, как в примере:
+
+ 4 * 10
+ 5 - 12
+ 30 / 4
diff --git a/translations/ru/try_ruby_300.md b/translations/ru/try_ruby_300.md
new file mode 100644
index 00000000..a191603a
--- /dev/null
+++ b/translations/ru/try_ruby_300.md
@@ -0,0 +1,24 @@
+---
+lang: RU
+title: Есть минутка?
+answer: [0-9]$
+ok: Ты сделал все верно!
+error: Выполните блок 0-9 раз
+---
+
+Как мы видели в первом примере с блоком (при подсчете оценок), мы можем передать значение блоку. Значение, которое
+вставляется определяется методом, который запускает блок.
+
+Значения, которые __принимает__ блок, помещаются в имя переменной в начале блока,
+между двумя символами pipe: |
+
+Попробуем это с помощью этого блока:
+
+ 5.times { |time|
+ puts time
+ }
+
+Здесь метод __.times__ отдает значение переменной __|time|__. Но имейте в виду, что эта переменная известна
+только внутри блока
+
+> Заметили, что вы можете писать код на нескольких строках?
\ No newline at end of file
diff --git a/translations/ru/try_ruby_310.md b/translations/ru/try_ruby_310.md
new file mode 100644
index 00000000..8264b859
--- /dev/null
+++ b/translations/ru/try_ruby_310.md
@@ -0,0 +1,24 @@
+---
+lang: RU
+title: Подводя итоги #4
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Этот урок был немного длиннее. Вы, вероятно, потратили на три минуты больше на его изучение:
+### Словари
+Самый простой пример словаря: __{}__
+
+### Символы
+Крошечные, эффективные кодовые слова с двоеточием, например: __:splendid__
+
+### Блоки
+Куски кода, которые можно привязать ко многим методам Ruby. Вот код, который вы использовали для
+создания таблицы оценок:
+ __books.values.each { |rate| ratings[rate] += 1 }__
+
+### Далее
+В следующих уроках мы еще глубже погрузимся в методы
+
diff --git a/translations/ru/try_ruby_320.md b/translations/ru/try_ruby_320.md
new file mode 100644
index 00000000..a55083b2
--- /dev/null
+++ b/translations/ru/try_ruby_320.md
@@ -0,0 +1,34 @@
+---
+lang: RU
+title: Быть или не быть
+answer:
+load: poem = "Мой тост вылетел из моей руки\n И мой тост отправился на Луну. \n Ура, Ура, Ура \n"
+ok:
+error:
+---
+
+Одна маленькая деталь, которую мы не обсудили - это аргументы методов. Помните,
+как мы меняли содержимое поэмы, используя этот метод:
+__poem.gsub("тост", "медовик")__
+
+Метод gsub требует 2 аргумента, которые мы вставили как строки между двух круглых
+скобок. Аргументы сообщают методу, что именно ему делать.
+
+### Круглые скобки
+На самом деле, в большинстве случаев Ruby не против, если вы опустите скобки. Таким образом, это
+тоже сработает:
+
+__poem.gsub "toast", "honeydew"__
+
+Мы также уже использовали и другой метод с параметром. Много раз. Но это не так очевидно.
+
+ puts "Hello"
+ puts("Hello")
+
+Ага, __puts__ тоже метод. Использование puts с круглыми скобками или без Ruby не важно, но
+вариант без скобок проще читать и немного экономит время набора кода!
+
+> Поэтому я предполагаю, что вывод состоит в том, что вы можете делать все, что угодно, с круглыми скобками, пока
+> код читается красиво.
+
+Хотите немного Шекспира? Читайте дальше.
\ No newline at end of file
diff --git a/translations/ru/try_ruby_330.md b/translations/ru/try_ruby_330.md
new file mode 100644
index 00000000..8d498c60
--- /dev/null
+++ b/translations/ru/try_ruby_330.md
@@ -0,0 +1,33 @@
+---
+lang: RU
+title: Укрощение строптивого
+answer: tame
+ok: Хорошо, хорошо!
+error:
+---
+
+Вы уже знаете, как использовать Ruby. Я имею в виду, что ты уже постиг основы.
+Далее тебе нужно изучить больше методов и попробовать более сложные блоки.
+
+Но мы кое-что еще не обсудили. Создание собственных методов.
+__Хм!__ Давайте займемся этим.
+
+В то время, как Ruby имеет встроенные методы (такие, как puts, sort, times), вы можете определить
+свои собственные методы. Зачем? Вот 2 причины.
+
+### Сделать свою программу короче
+Если вы используете одно и тоже более чем в одном месте кода, то будет намного проще, если
+выделить это в новый метод. Это сделает код короче.
+
+### Сделать свой код более читаемым
+Предположим, что ваша программа должна делать много разных вещей.
+Вы __можете__ записать весь код в один длинный кусок. Но было бы очень сложно
+прочитать и понять этот код позже.
+
+Вместо этого вы должны разбить свой код на методы и дать каждому из них
+понятное английское имя. Вы поблагодарите себя позже.
+
+Итак, как мы определяем метод? Вот так:
+
+ def tame( number_of_shrews )
+ end
\ No newline at end of file
diff --git a/translations/ru/try_ruby_340.md b/translations/ru/try_ruby_340.md
new file mode 100644
index 00000000..4207ece1
--- /dev/null
+++ b/translations/ru/try_ruby_340.md
@@ -0,0 +1,24 @@
+---
+lang: RU
+title: В Ruby, Def Leppard означает: определить метод Leppard *
+answer: ^tame
+ok: Tame is not lame
+error:
+---
+
+Эй, хорошо, ты это сделал. Вы создали свой собственный метод. Вы начали с def, за которым следует имя метода.
+И список аргументов, которые будут нужны методу. Это не слишком страшно и опасно!
+Все, что нам нужно сделать, это заполнить его кодом на Ruby и закончить с ним.
+
+Вот код:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ end
+
+> __P.S.__
+> Если вы не знаете это название, то прочтите
+> Def Leppard
+> это название известной Британской группы.
diff --git a/translations/ru/try_ruby_350.md b/translations/ru/try_ruby_350.md
new file mode 100644
index 00000000..3feaf474
--- /dev/null
+++ b/translations/ru/try_ruby_350.md
@@ -0,0 +1,12 @@
+---
+lang: RU
+title: Плод вашего собственного творения
+answer: ^Tamed a shrew
+ok: Вот и все!
+error:
+load: def tame(number_of_shrews);number_of_shrews.times{puts "Tamed a shrew"};end;
+---
+
+Новый метод рожден. Попробуем его использовать:
+
+ tame 5
diff --git a/translations/ru/try_ruby_360.md b/translations/ru/try_ruby_360.md
new file mode 100644
index 00000000..3ae92018
--- /dev/null
+++ b/translations/ru/try_ruby_360.md
@@ -0,0 +1,29 @@
+---
+lang: RU
+title: Давай и бери
+answer: \d+
+ok: На уровне! Браво!
+error:
+---
+
+Большинство методов не только требуют ввода некоторых параметров, но и возвращают что-то обратно.
+Я немного изменил наш метод, чтобы он вернул вам значение. Попробуй:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ return number_of_shrews
+ end
+
+ puts tame(3)
+
+### Возвращаемое значение
+И, поскольку вы настолько продвинуты и способны, еще один совет:
+вы можете опустить слово __return__ из последней строки метода.
+Ruby автоматически вернет последнее значение, которое использовалось внутри метода.
+
+Так мы можем изменить последнюю строку на это: __number\_of\_shrews__.
+
+Но по-прежнему метод __.times__ также может справиться с этой задачей.
+Так что наш новый метод делает то, что мы уже давно можем и без него!
diff --git a/translations/ru/try_ruby_370.md b/translations/ru/try_ruby_370.md
new file mode 100644
index 00000000..af701f04
--- /dev/null
+++ b/translations/ru/try_ruby_370.md
@@ -0,0 +1,27 @@
+---
+lang: RU
+title: Кто здесь? Итоги #5 Снимите шляпу!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Отлично, Отлично, Отлично!
+
+Круто! Круто! Круууууто!
+
+Вот что мы еще узнали:
+
+### Методы
+Методы могут быть определены с помощью __def__ и у них есть имя. Методы
+делают вашу программу короче и проще для чтения.
+
+### Параметры
+У методов могут быть параметры
+
+### Возвращаемое значение
+Методы зачастую возвращают какое-то значение
+
+## А сейчас
+Готовы почитать немного Шекспира?
diff --git a/translations/ru/try_ruby_380.md b/translations/ru/try_ruby_380.md
new file mode 100644
index 00000000..8f2ba4ab
--- /dev/null
+++ b/translations/ru/try_ruby_380.md
@@ -0,0 +1,31 @@
+---
+lang: RU
+title: Мир - наша устрица
+answer: ^\{\"William
+ok: Хорошо, но читать тяжело!
+error:
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
+---
+
+До сих пор мы запускали программы, которые используют только те вещи, которые мы набрали сами.
+Это классно, но сейчас эпоха интернета, а значит можно использовать эти данные.
+
+Много, много веб-сайтов в сети, а значит у всех них можно запросить информацию. Например:
+эта ссылка даст вам все последние Новости из Гугла
+о Ruby.
+
+Ваш браузер скорее всего отобразит это красиво. Но если вы посмотрите на исходный код,
+(нажмите: control-U) вы увидите сложный текст в формате __rss__.
+
+### Форматы
+Всего очень много форматов со сложными названиями в сети, такие как:
+html, xml and json. Ага, многие веб-сайты используют их.
+
+Я подготовил для вас метод, который выберет список полных работ Уильяма
+Шекспира из Интернета.
+(Не волнуйтесь, что на самом деле это происходит с того же сервера, на котором работает этот веб-сайт, поэтому
+мы никого не беспокоим.)
+
+Получите данные с помощью:
+
+ get_shakey
diff --git a/translations/ru/try_ruby_390.md b/translations/ru/try_ruby_390.md
new file mode 100644
index 00000000..f43cdef0
--- /dev/null
+++ b/translations/ru/try_ruby_390.md
@@ -0,0 +1,53 @@
+---
+lang: RU
+title: Благородные родственники
+answer: ^The Two Noble Kinsmen$
+ok: Так намного лучше.
+error:
+load: prev
+---
+
+Итак, теперь у нас есть список пьес из Интернета. Список был в формате json.
+К счастью для нас Ruby любезно предоставляет метод преобразования данных json в hash Ruby.
+Метод _get\_shakey_ сделает это за нас.
+
+Но так как структура json-данных сохраняется в hash, ее все-таки трудно читать.
+Давайте напишем метод для показа игр.
+
+Если вы внимательно изучите список пьес, вы увидите, что у него есть своего рода вложенный
+состав. (Это действительно довольно распространено в данных, которые вы получаете из Интернета.)
+Выглядит так:
+
+
+
"William Shakespeare"
+
+
"1"
+
+
"title": "The Two Gentlemen of Verona"
+
"finished": 1591
+
+
+
"2"
+
+
"title": "The Taming of the Shrew"
+
"finished": 1591
+
+
+
...
+
+
+
+
+Чтобы перечислить пьесы, нам сначала нужно получить доступ к верхнему элементу словаря «Уильям Шекспир» по его названию.
+Затем мы должны __iterate("шагать")__ по каждому элементу за ним.
+
+Ruby имеет метод для итерации. Он называется __each__. Мы видели это раньше, когда
+создавали нашу систему рейтинга книг.
+
+Все, что возвращает метод __each__, передается блоку:
+
+ s = get_shakey
+
+ s["William Shakespeare"].each { |key, val|
+ puts val["title"]
+ }
diff --git a/translations/ru/try_ruby_40.md b/translations/ru/try_ruby_40.md
new file mode 100644
index 00000000..cc776c46
--- /dev/null
+++ b/translations/ru/try_ruby_40.md
@@ -0,0 +1,27 @@
+---
+lang: RU
+title: Выводим результат иначе
+answer: ^[0-9\.,-]{1,}$
+ok: Отлично!
+error:
+---
+
+Вы заметили, что если Вы набираете более одного выражения, выводится результат только последнего.
+Что же происходит?
+
+> Для более удобного использования этого сайта, я указал Ruby копировать результат вашей программы
+> в поле вывода вверху. Так когда Вы набираете выражение, результат выводится на экран.
+> __Но только последний результат.__ И только если до этого ничего не выводилось
+
+Так когда Вы вводите несколько выражений, Ruby показывает результат только последнего
+
+Конечно, Вам хочется увидеть результат всех! Добавьте __puts__ перед каждым выражением
+(разделяя пробелом). Puts означает: *'вывести что-то на экран'*.
+
+Попробуйте:
+
+ puts 4 * 10
+ puts 5 - 12
+ puts 30 / 4
+
+А теперь удалите __puts__ из последней формулы и посмотрите, что произойдет.
diff --git a/translations/ru/try_ruby_400.md b/translations/ru/try_ruby_400.md
new file mode 100644
index 00000000..e12480a4
--- /dev/null
+++ b/translations/ru/try_ruby_400.md
@@ -0,0 +1,41 @@
+---
+lang: RU
+title: Все вместе
+answer: ^4$
+ok: Ага, Шекспир написал 4 пьесы в 1591
+error: Ответ должен быть 4. Проверьте аргумент метода count_plays
+load: prev
+---
+
+Теперь предположим, что мы хотим знать имена и количество пьес, написанных Шекспиром
+в течение определенного года.
+
+Ruby позволяет нам выводить значения из словаря. Метод select использует блок, который позволяет нам
+определить, что выбрать и вернуть найденное.
+
+Затем мы можем использовать результаты, возвращаемые __select__ в методе __each__, как и раньше,
+просто добавляя его после блока выбора. Это еще один пример цепочки методов, который мы видели
+раньше, когда делали стихотворение задом наперед.
+
+Я подготовил метод __count\_plays__ для вас. Посмотрим, сможете ли
+вы посчитать количество пьес, написанных Шекспиром в 1591:
+
+ def count_plays(year)
+ s = get_shakey
+
+ s["William Shakespeare"]
+ .select { |k, v|
+ v["finished"] == year
+ }.each { |key, val|
+ puts val["title"]
+ }.count
+ end
+
+ puts count_plays(0)
+
+Вы заметили, что я добавил метод count в самом конце всего метода. Так мы получим
+возвращаемое значение метода __count\_plays__.
+
+Есть и другой способ выстраивания цепочки. Видите одинокую строчку __s = get_shakey__.
+Вы можете добавить __["William Shakespeare"].select { |k, v|__ в конец get_shakey
+(не обязательно здесь).
diff --git a/translations/ru/try_ruby_410.md b/translations/ru/try_ruby_410.md
new file mode 100644
index 00000000..b8309194
--- /dev/null
+++ b/translations/ru/try_ruby_410.md
@@ -0,0 +1,40 @@
+---
+lang: RU
+title: Все хорошо, что хорошо кончается
+answer: All's Well That Ends Well
+ok: Верно
+error: Используйте 1605 как 2 параметр
+load: prev
+---
+
+Хорошо, мы получили некоторые данные из Интернета, мы выбрали то, что хотели, и распечатали это.
+Что нужно улучшить? Мы могли бы напечатать результаты немного красивее. Как добавить год
+и выровнять названия и годы?
+
+Это значит требуется печать нескольких значений на одной строке. Ruby имеет удобный способ сделать
+это. Это похоже на печать строки типа: __puts «Привет, меня зовут Джимми» __.
+Но вместо буквенного значения _Джимми_ мы используем значение переменной.
+
+Сначала замените __Джимми__ на __#{}__. Если Ruby видит символ #, а за ним символ {,
+то это означает,что до символа } идет имя переменной.
+Так, мы можем использовать: __"Привет, меня зовут \#{name}"__.
+
+Изменим наш код немного:
+
+ def print_plays(year_from, year_to)
+ get_shakey["William Shakespeare"]
+ .select { |k, v|
+ year_from <= v["finished"] &&
+ year_to >= v["finished"]
+ }.each { |k, v|
+ puts "#{v["title"].ljust(30)} #{v["finished"]}"
+ }
+ end
+ print_plays(1600, 1605)
+
+Я добавил __.ljust(30)__ к заголовку. В таком случае заголовок _имеет отступ_ минимум
+30 символов. Так год выглядит опрятнее =)
+
+Посмотрите, изменится ли выход программы так, чтобы она показывала такие игры: 1600 -> Как вам нравится
+Все хорошо, что хорошо кончается?
+Эй, мы еще не закончили, но конец близок!
diff --git a/translations/ru/try_ruby_420.md b/translations/ru/try_ruby_420.md
new file mode 100644
index 00000000..20657c1a
--- /dev/null
+++ b/translations/ru/try_ruby_420.md
@@ -0,0 +1,35 @@
+---
+lang: RU
+title: Если бы я знал, как принять решение
+answer:
+ok:
+error:
+---
+
+Делать выбор в жизни бывает трудно, но не в Ruby. Тут есть удобные способы принять решение.
+
+ if 1 < 2
+ puts "Это правда: 1 меньше 2"
+ end
+
+Ключевое слово __if(если)__. If может быть поставлен и до, и после метода. Как тут:
+
+ puts "Это правда: 1 меньше 2" if 1 < 2
+
+__If__ это метод, который требует 1 параметр. Этим параметром может быть любое выражение, которое
+вы хотите проверить. Результат выражения __true(правда)__ or __false(ложь)__.
+Вот немного примеров:
+
+ 5 <= 10 # => true
+ 'abc' == 'def' # => false
+ true # => true
+ 123456 # => true
+ 0 # => true
+ nil # => false
+ 'xyz'.empty? # => false
+ 'a' > 5 # => error:
+ # comparison of String with
+ # Numeric failed
+
+_if выражение_ может иметь много видов: сравнивать значения (1 < 2),
+переменные (a < 1) и возвращаемые значения методов('xyz'.empty?).
diff --git a/translations/ru/try_ruby_430.md b/translations/ru/try_ruby_430.md
new file mode 100644
index 00000000..c4015e90
--- /dev/null
+++ b/translations/ru/try_ruby_430.md
@@ -0,0 +1,33 @@
+---
+lang: RU
+title: И напоследок
+answer: не равно 100$
+ok: Так лучше
+error: Это неправильно
+---
+
+Видите двойное равно __'abc' == 'def'__?
+
+Это __==__ означает __проверка на равенство__.
+Одиночное равно используется для присваивания значения переменной.
+
+Чтобы немного вас запутать: вы можете использовать присваивание как аргумент метода if:
+
+ a = 0
+
+ if a = 100
+ puts "Выражение верно, но а сейчас : #{a}"
+ else
+ puts "#{a} не равно 100"
+ end
+
+Поменяйте = на == и посмотрите, что произойдет.
+
+Я вам гарантирую, что вы будете часто забывать поставить двойное равенство.
+
+### Иначе(else)
+В коде я использовал else, это выполняется в случае
+__if тестовое_выражение__ вычисляется как ложь(false).
+
+> Больше информации вы можете почерпнуть
+> здесь.
diff --git a/translations/ru/try_ruby_440.md b/translations/ru/try_ruby_440.md
new file mode 100644
index 00000000..2eaff9ac
--- /dev/null
+++ b/translations/ru/try_ruby_440.md
@@ -0,0 +1,28 @@
+---
+lang: RU
+title: Я голоден
+answer: ^Я не голоден
+ok: Да
+error: Без вариантов, я голоден в 10 утра!
+---
+
+Это прекрасно, но имей ввиду, что ты не знал Ruby всего 15 минут назад!
+
+Давай теперь объединим все наши полученные навыки:
+Давайте определим 2 метода:
+
+ def hungry?(time_of_day_in_hours)
+ puts "Я голоден"
+ true
+ end
+
+ def eat_an(what)
+ puts "Я ем #{what}\n"
+ end
+
+ eat_an 'яблоко' if hungry?(14)
+
+ eat_an 'яблоко' if hungry?(10)
+
+Попробуйте изменить метод __hungry?__ так, чтобы он печатал __"Я не голоден"__ и возвращал false
+когда время меньше 10.
diff --git a/translations/ru/try_ruby_450.md b/translations/ru/try_ruby_450.md
new file mode 100644
index 00000000..06997bc3
--- /dev/null
+++ b/translations/ru/try_ruby_450.md
@@ -0,0 +1,33 @@
+---
+lang: RU
+title: Итоги #6 Что значит издалека?
+answer: \{\}
+class: stretcher chapmark
+ok: Ага, это пустой словарь
+error:
+---
+
+Вы 6-го уровня Ruby клирик. Я имею ввиду, что проделана отличная работа. Давайте подведем итоги:
+
+
+### Данные
+Ты загрузил немного данных из интернета и организовал их в структуру.
+
+### Iterating (шагание)
+Вы прошли по всем элементам словаря, а также создали цепочку методов
+
+### Красивый вывод
+И если этого недостаточно, то вы научились делать красивый вывод.
+Это ведь настоящая программа!
+
+### Если(IF)
+Научились использовать if и else
+
+## Итак
+Что может быть дальше? Что вы, возможно, должны узнать сейчас?
+Ха, это лучшая часть. Вы прошли столь долгий путь, что мы собираемся
+изучить классы. Еще два коротких урока, и все готово.
+
+Ранее мы создавали словарь так:
+
+ Hash.new
diff --git a/translations/ru/try_ruby_460.md b/translations/ru/try_ruby_460.md
new file mode 100644
index 00000000..cb886660
--- /dev/null
+++ b/translations/ru/try_ruby_460.md
@@ -0,0 +1,34 @@
+---
+lang: RU
+title: Не школьный класс, а работающий
+answer:
+ok:
+error:
+---
+
+Вы уже видели пустые фигурные скобки. {} это сокращение Hash.new. Метод new используется, чтобы создавать объекты
+определенного класса. Воспринимайте "class" в смысле "работающий класс" — какая-то особенная группа,
+делающая одну работу и в одинаковых футболках.
+Что используется в классах?
+
+### BlurbalizerTM
+Прикольная идея для нового приложения. Это будет новая платформа для обмена сообщениями.
+Вы хотите приложение, где люди могут обмениваться короткими сообщениями. Вы называете эти сообщения BlurbsTM.
+BlurbTM имеет максимальную длину 40. Давайте сделаем еще настроение сообщения.
+
+
+
+### Где начать?
+Ну, вы можете сохранить записи BlurbsTM в json-файле, верно?
+Но как бы вы отслеживали содержание записи и время ее публикации?
+И когда вы загрузите файл, как он будет выглядеть в Ruby?
+Это будет словарь? Или массив? Или массив массивов? Или что-то другое?
+
+### Класс
+Я уверен, что вы должны использовать класс. Вы уже знаете некоторые из них:
+словарь, массив, строка.
+
+Создадим новый класс:
+
+ class Blurb
+ end
diff --git a/translations/ru/try_ruby_470.md b/translations/ru/try_ruby_470.md
new file mode 100644
index 00000000..7c7f7a83
--- /dev/null
+++ b/translations/ru/try_ruby_470.md
@@ -0,0 +1,18 @@
+---
+lang: RU
+title: Приложения делаются
+answer:
+ok:
+error:
+---
+
+Мы открыли новый BlurbTM класс. Чем наполнен ваш блог?
+Верно, контентом. Также временем, когда BlurbTM был опубликован. И настроением.
+
+Хорошо, так что у вас есть первая строка класса, вот и все:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+ end
+
+Имена классов всегда с большой буквы.
diff --git a/translations/ru/try_ruby_480.md b/translations/ru/try_ruby_480.md
new file mode 100644
index 00000000..f925455d
--- /dev/null
+++ b/translations/ru/try_ruby_480.md
@@ -0,0 +1,24 @@
+---
+lang: RU
+title: Аксессоры это обособленные элементы
+answer: Blurb:
+ok: Мой первый Blurb
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;end
+---
+
+Привет. У тебя есть новый BlurbTM класс.
+
+В определении класса вы использовали метод, называющийся attr\_accessor(аксессор).
+Вообще много атрибутов класса, которые так или иначе его меняют.
+Атрибуты - это всего лишь переменные связанные с классом.
+
+Думайте так. Класс - это человек. Это звездное человеческое существо.
+А атрибуты - это его конечности, разные части собираются в тело, а другие люди могут взять этого человека за руку и поздороваться.
+
+### Сейчас
+Чтобы создать BlurbTM и наполнить данными напишите:
+
+ blurb1 = Blurb.new
+ puts blurb1
+ blurb1.content = "Today Mount Hood Was Stolen!"
diff --git a/translations/ru/try_ruby_490.md b/translations/ru/try_ruby_490.md
new file mode 100644
index 00000000..6700db43
--- /dev/null
+++ b/translations/ru/try_ruby_490.md
@@ -0,0 +1,15 @@
+---
+lang: RU
+title: Объект, этот аккуратный маленький пакет
+answer: Blurb:
+ok: Blurb обновлен
+error:
+load: prev;blurb1=Blurb.new;blurb1.content="Today Mount Hood Was Stolen!"
+---
+
+А теперь поменяй атрибуты нашего BlurbTM:
+
+ blurb1.time = Time.now
+ blurb1.mood = :sick
+
+ puts blurb1
diff --git a/translations/ru/try_ruby_50.md b/translations/ru/try_ruby_50.md
new file mode 100644
index 00000000..6aba8bc3
--- /dev/null
+++ b/translations/ru/try_ruby_50.md
@@ -0,0 +1,13 @@
+---
+lang: RU
+title: Скажи свое имя!
+answer: [a-zA-Zа-яА-Я]{1,1}
+ok: Отлично, Вы сформировали строку из букв Вашего имени.
+error:
+---
+
+Конечно, компьютеры удобны для расчетов. Но давайте попробуем что-то еще. А хотите вывести свое имя задом наперед?
+
+Для начала наберите свое имя в кавычках как тут:
+
+ "Иван"
diff --git a/translations/ru/try_ruby_500.md b/translations/ru/try_ruby_500.md
new file mode 100644
index 00000000..872564cc
--- /dev/null
+++ b/translations/ru/try_ruby_500.md
@@ -0,0 +1,30 @@
+---
+lang: RU
+title: Ускоряемся
+answer: ^\d{4}
+ok: Запомнили :)
+error:
+---
+
+Круто, новое приложение потрясающее. Хей, давай немного упростим?
+Вы всегда хотите ставить время вашему BlurbTM так?.
+
+Вы всего лишь хотите писать контент?
+
+Добавим метод __инициализации__ в наш класс. Этот метод будет всегда вызываться, когда новый BlurbTM
+создается.
+Также мы можем установить максимальную длину BlurbTM контента в 40 символов.
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+ end
+
+ Blurb.new(:sick).time
+
+(Этот параметр __content=""__ используется, чтобы было известно, что это строка и никакой другой параметр не мог инициализировать его.)
diff --git a/translations/ru/try_ruby_510.md b/translations/ru/try_ruby_510.md
new file mode 100644
index 00000000..8a67c5f7
--- /dev/null
+++ b/translations/ru/try_ruby_510.md
@@ -0,0 +1,28 @@
+---
+lang: RU
+title: Вы научили ваше приложение отвергать бесполезные вещи
+answer: Blurb:
+ok: Blurb добавлен
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
+---
+
+Вы заметили, что мы используем символ "собаки" внутри класса? (@time).
+
+__Снаружи__ класса мы используем аксессоры:
+
+> __blurb.time = Time.now__
+
+но __внутри__ мы используем __переменные объекта__:
+
+> __@time = Time.now__
+
+Это одно и тоже, но может использоваться в разных местах вашей программы.
+
+### Создадим другой BlurbTM
+Когда другой BlurbTM создан, метод инициализации используется для проверки любого
+аргумента к методу new.
+
+Ох, нужно еще 2 аргумента:
+
+ blurb2 = Blurb.new :confused, "Не могу поверить, Маунт-Худ был украден!"
diff --git a/translations/ru/try_ruby_520.md b/translations/ru/try_ruby_520.md
new file mode 100644
index 00000000..52a06863
--- /dev/null
+++ b/translations/ru/try_ruby_520.md
@@ -0,0 +1,28 @@
+---
+lang: RU
+title: А жирафы на месте ИТОГИ #7
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: prev;blurb2=Blurb.new :confused, "Не могу поверить, Маунт-Худ был украден!"
+---
+
+Ага, ты здесь. И все еще учишься. Мы по-прежнему будем делать ваше приложение реальным,
+но пока давайте посмотрим результаты, хорошо?
+
+### Классы
+Все в Ruby - это объекты. Классы объясняют объекты как независимые рабочие элементы.
+Например, вы создали несколько BlurbTM объектов, а эти объекты ведут себя так же
+как любой объект класса Blurb.
+
+Другими словами: Вы называете их Blurb объекты.
+Вы можете использовать классы как в реальной жизни.
+
+### Аксессоры
+Аксессоры - это переменные, связанные с классом, но используются __снаружи__ объекта.
+(blurb2.time = Time.now)
+
+### Переменные объекта
+Это то же самое, что и аксессоры, но используются __внутри__ объекта.
+(@time = Time.now)
diff --git a/translations/ru/try_ruby_530.md b/translations/ru/try_ruby_530.md
new file mode 100644
index 00000000..6d2024d2
--- /dev/null
+++ b/translations/ru/try_ruby_530.md
@@ -0,0 +1,45 @@
+---
+lang: RU
+title: Ваш собственный сад
+answer: Blurbalizer:
+ok: Приложение создано
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end
+---
+
+Ладно, давай обернемся, малыш. Вот последняя глава эпической истории познания «Try Ruby»!
+Теперь, когда у вас есть понимание, как все это работает, как вы собираетесь использовать это?
+Ты отличный человек (один из моих любимых), но тебе нужно руководство.
+
+### Давай закончим наше приложение
+У вас есть записи приложений, но нет приложения.
+По-прежнему нужно место, где хранить все BlurbsTM и упорядочить их.
+
+Угадайте что, мы собираемся использовать другой класс. Я дал весь код для нового класса за один раз.
+Только потрать время, чтобы изучить его.
+Я не тороплюсь, я буду ждать тебя на следующем уроке.
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = [] # Пустой массив
+ # для хранения Blurbs
+ end
+
+ def add_a_blurb(mood, content)
+ # << означают добавить в конец массива
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbify: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp = Blurbalizer.new "The Big Blurb"
diff --git a/translations/ru/try_ruby_540.md b/translations/ru/try_ruby_540.md
new file mode 100644
index 00000000..207076cb
--- /dev/null
+++ b/translations/ru/try_ruby_540.md
@@ -0,0 +1,24 @@
+---
+lang: RU
+title: Про что это Blurb?
+answer: Today
+ok: Ок!
+error:
+load: prev;class Blurbalizer;attr_reader :title;def initialize(title);@title=title;@blurbs=[];end;def add_a_blurb(mood, content);@blurbs << Blurb.new(mood, content);@blurbs.each {|t| t.time -= 73};end;def show_timeline;puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.time}.reverse.each { |t| puts "#{t.content.ljust(40)} #{t.time}"};end;end;myapp = Blurbalizer.new "The Big Blurb";myapp.add_a_blurb :sick,"Today Mount Hood Was Stolen!";myapp.add_a_blurb :confused,"I can not believe Mt. Hood was stolen!";myapp.add_a_blurb :dazed,"I am speechless!";myapp.add_a_blurb :mad,"It was stolen by a giraffe !!";myapp.add_a_blurb :sad,"I Left my Hoodie on the Mountain!";myapp.add_a_blurb :mad,"I am never going back to that mountain."
+---
+
+И вот результат. Вы поняли, что в коде класс BlurbalizerTM делает?
+
+> В BlurbalizerTM есть 2 __метода__ (add\_a\_blurb and show\_timeline).
+> Вы можете использовать метод вне класса, также как и с аксессорами.
+
+Самое время, чтобы начать использовать BlurbalizerTM. Я уже загрузил несколько BlurbsTM для тебя,
+но добавь еще свой сам.
+
+Мы больше не создаем BlurbsTM напрямую, но мы используем метод add\_a\_blurb из класса
+BlurbalizerTM. Теперь мы можем быть уверены, что все наши BlurbsTM хранятся в
+объекте myapp.
+
+ myapp.add_a_blurb :moody, "Добавь Blurb сюда"
+
+ myapp.show_timeline
diff --git a/translations/ru/try_ruby_550.md b/translations/ru/try_ruby_550.md
new file mode 100644
index 00000000..5ff2d48a
--- /dev/null
+++ b/translations/ru/try_ruby_550.md
@@ -0,0 +1,65 @@
+---
+lang: RU
+title: Это все про комбинирование
+answer: :-|
+ok: Угрюмо!
+error:
+load: prev
+---
+
+Некоторые интересные вещи можно сделать с помощью простых частей Ruby, особенно когда вы их объединяете
+вместе в нечто новое.
+
+Здесь у нас есть приложение, состоящее из класса, содержащего другой класс.
+Это называется объектно-ориентированное программирование (ООП)
+
+Мы приступаем к __последнему заданию__ на TryRuby. Если хотите, то можете добавить
+больше интересного в BlurbalizerTM.
+
+Может вы захотите выводить улыбающийся смайлик в методе __show_timeline__. Вы должны добавить
+_модифицированный_ метод в класс BlurbTM и затем использовать это в методе _show\_timeline_:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+
+ def moodify
+ if @mood == :sad
+ return ":-("
+ elsif @mood == :happy
+ return ":-)"
+ # Добавь другой смайлик сюда
+ end
+
+ # Смайлик по умолчанию
+ ":-|"
+ end
+ end
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = []
+ end
+
+ def add_a_blurb(mood, content)
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbalizer: #{@title} содержит #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp.show_timeline
diff --git a/translations/ru/try_ruby_560.md b/translations/ru/try_ruby_560.md
new file mode 100644
index 00000000..b9b4e2a7
--- /dev/null
+++ b/translations/ru/try_ruby_560.md
@@ -0,0 +1,28 @@
+---
+lang: RU
+title: ИТОГИ #8
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: def ruby(f);puts "Go to www.ruby-lang.org to download Ruby";end;class K;attr_reader :rb;end;my_first_program=K.new
+---
+
+Этот последний раздел потребовался, чтобы дать вам несколько указаний о том, как вы можете использовать Ruby.
+
+Если вам понравилось, то можете продолжить в TryRuby Playground
+или скачать и установить Ruby:
+ruby-lang.org
+
+Когда Ruby будет установлен, создайте новый файл _my\_first\_program.rb_, используя
+текстовый редактор, добавьте немного кода на Ruby code и затем открыв терминал или командную строку наберите:
+
+ ruby my_first_program.rb
+
+## Празднуйте
+Вы действительно заслуживаете двухслойный торт с двойной двойной глазурью и парня, играющего на одной из этих крутых гитар, которая является двойной гитарой.
+Я имею в виду, что ты закончил, ты действительно сделал это! Не сомневайтесь в этом!
+
+## Больше информации
+На этом сайте есть еще статьи, в которых вы можете почерпнуть что-то полезное
+для себя.
diff --git a/translations/ru/try_ruby_60.md b/translations/ru/try_ruby_60.md
new file mode 100644
index 00000000..08f52124
--- /dev/null
+++ b/translations/ru/try_ruby_60.md
@@ -0,0 +1,16 @@
+---
+lang: RU
+title: Скажи свое имя наоборот
+answer: .+
+ok: !отурК
+error:
+---
+
+Строка представляет собой набор символов, которые компьютер может обрабатывать. Представьте, что буквы, находящиеся в строке, - это
+белье на верёвке, а кавычки - прищепки, держащие концы этой веревки. Кавычки обозначают начало и конец.
+
+Чтобы получить имя задом наперед, наберите:
+
+ "Ivan".reverse
+
+(И не забудьте про точку!)
diff --git a/translations/ru/try_ruby_70.md b/translations/ru/try_ruby_70.md
new file mode 100644
index 00000000..0cc0a836
--- /dev/null
+++ b/translations/ru/try_ruby_70.md
@@ -0,0 +1,14 @@
+---
+lang: RU
+title: Подсчет букв
+answer: ^\d+$
+ok: Ага! length - это тоже метод!
+error:
+---
+
+Вы уже попробовали использовать __method__ reverse на своем имени! Заключив имя в кавычки, Вы создали строку. Затем Вы вызвали метод reverse, который работает со строками и разворачивает ее задом наперед.
+
+А теперь давайте посмотрим, сколько букв в Вашем имени:
+
+ "Ivan".length
+
diff --git a/translations/ru/try_ruby_80.md b/translations/ru/try_ruby_80.md
new file mode 100644
index 00000000..936595d3
--- /dev/null
+++ b/translations/ru/try_ruby_80.md
@@ -0,0 +1,17 @@
+---
+lang: RU
+title: На повторе
+answer: (.+)
+ok: Рад Вас видеть. Рад Вас видеть. Рад Вас видеть.
+error: adfadsfadsf
+---
+
+Сейчас Вам, наверное, интересно, зачем это нужно.
+
+Что ж, я уверен, Вы хоть раз замечали на сайте надпись: __Эй, твой пароль слишком короткий!__
+
+Смотрите, некоторые программы используют код __.length__.
+
+А теперь рассмотрим это. Давайте выведем Ваше имя 5 раз
+
+ "Ivan" * 5
diff --git a/translations/ru/try_ruby_90.md b/translations/ru/try_ruby_90.md
new file mode 100644
index 00000000..ca1e2ddb
--- /dev/null
+++ b/translations/ru/try_ruby_90.md
@@ -0,0 +1,30 @@
+---
+lang: RU
+title: Подводим итоги #1 Уже
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
+class: stretcher chapmark
+ok: Неа, нельзя использовать метод reverse с числом. Жми 'next'
+error:
+---
+
+Давайте посмотрим, что Вы уже изучили.
+
+### Редактор кода
+Можно набирать код в редакторе и получать ответ в окне вывода.
+Большинство программ выдают ответ.
+
+### Числа и строки
+Числа и строки это математические и текстовые объекты в Ruby.
+
+### Методы
+Вы попробовали использовать методы из слов на английском языке reverse и length. А также символьный
+метод умножения: \*
+__Метод значит действие!__
+
+В этом суть Вашего обучения. Берем базовые вещи, играем с ними и превращаем их в
+нечто новое. Понравилось? Я надеюсь, что да!
+
+## Хорошо
+А давайте попробуем кое-что необычное. Попробуйте применить метод reverse к числу:
+
+ 40.reverse
diff --git a/translations/tr/README.md b/translations/tr/README.md
new file mode 100644
index 00000000..50e710b1
--- /dev/null
+++ b/translations/tr/README.md
@@ -0,0 +1,24 @@
+## Copyright (C)
+Try Ruby version 1 English version, 2008, _why the lucky stiff_
+Try Ruby version 2 English version, 2009-2013, _Andrew McElroy & David Miani_
+Try Ruby version 3 English version, 2013 ?, _Eric Allam & Nick Walsh_
+Try Ruby version 4 English version, 2014-2015, _Ivo Herweijer_
+
+## The MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/translations/tr/try_ruby_10.md b/translations/tr/try_ruby_10.md
new file mode 100644
index 00000000..566248d9
--- /dev/null
+++ b/translations/tr/try_ruby_10.md
@@ -0,0 +1,21 @@
+---
+lang: TR
+title: 30 Dakikan Var Mı? Varsa Ruby'i Bir Dene!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Ruby, Japonya'dan gelen yazılım endüstrisinde devrim yaratan bir programlama dilidir.
+
+Ruby'nin güzelliği, basitlik ve güç arasındaki dengesinde bulunur.
+
+Editöre Ruby kodu yazabilir ve bu butonları kullanabilirsin:
+
+- __Run__ → Editördeki kodu çalıştırır
+- __Copy__ → Örnek olarak verilen kodu editöre yapıştırır
+- __Next__ → Sonraki derse gitmeni sağlar
+- __Back__ → Önceki derse gitmeni sağlar
+
+
Öğrenmeye başlamak için Next butonuna tıkla.
diff --git a/translations/tr/try_ruby_100.md b/translations/tr/try_ruby_100.md
new file mode 100644
index 00000000..84e9911a
--- /dev/null
+++ b/translations/tr/try_ruby_100.md
@@ -0,0 +1,15 @@
+---
+lang: TR
+title: Dur, Delilercesine Havlıyorsun!
+answer: ^\d{1,}$
+ok: Sadece string'ler tersine çevirilebilir
+error:
+---
+
+40 sayısını tersine çeviremezsin. Aslında düşününce, monitörünü bir aynaya doğru tutabilirsin tabii ki, ancak bir numarayı tersine çevirmenin pek bir mantığı yok.
+
+Ruby sana bir hata mesajı fırlattı. Ruby, sana reverse metodunun numaralar için var olmadığını anlatıyor.
+
+Eğer belki numara değerini ilk önce string'e çevirirsen:
+
+ 40.to_s.reverse
diff --git a/translations/tr/try_ruby_110.md b/translations/tr/try_ruby_110.md
new file mode 100644
index 00000000..8b7d2010
--- /dev/null
+++ b/translations/tr/try_ruby_110.md
@@ -0,0 +1,22 @@
+---
+lang: TR
+title: Elmalar Portakallardan Farklıdır
+answer: \[\]
+ok: Süper, boş bir liste belirdi
+error:
+---
+
+Ve numaralar string'lerden farklıdırlar.
+
+Metodları herhangi bir obje üzerinde kullanabilsen de bazı metodlar sadece belirli tiplerde olan şeyler üzerinde çalışmaktadırlar.
+Ancak, istediğin zaman Ruby'nin "to" metodlarını kullanarak tipler arasında geçiş yapabilirsin.
+
+- __to_s__ şeyleri __s__tring'lere dönüştürür
+- __to_i__ şeyleri __i__nteger'lara (sayılara) dönüştürür
+- __to_a__ şeyleri __a__rrays'lere dönüştürür
+
+__Array'ler ne ya?!__
+
+Onlar listeler. Bir çift köşeli parantez yazıver:
+
+ []
diff --git a/translations/tr/try_ruby_120.md b/translations/tr/try_ruby_120.md
new file mode 100644
index 00000000..1783f8ab
--- /dev/null
+++ b/translations/tr/try_ruby_120.md
@@ -0,0 +1,18 @@
+---
+lang: TR
+title: Sırada Beklemek
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
+ok: Süper
+error: Listeye döndüncü bir eleman eklemeyi dene
+---
+
+Listeler(array'ler) __belirli bir sırada olan__ şeyleri depolarlar.
+
+Aynı biraz patlamış mısır için sırada beklemek gibi. Sen, birisinin arkasındasın ve onları kenara itmeyi düşünmezsin, değil mi?
+Ayrıca arkandaki kişi, ona dikkat ediyorsun değil mi?
+
+Al sana bir liste. Piyango numaraları:
+
+ [12, 47, 35]
+
+Bu listeye bir numara eklemeyi dene: bir virgül ardından 35 yaz. Boşluk karakteri opsiyoneldir.
diff --git a/translations/tr/try_ruby_130.md b/translations/tr/try_ruby_130.md
new file mode 100644
index 00000000..e143a011
--- /dev/null
+++ b/translations/tr/try_ruby_130.md
@@ -0,0 +1,13 @@
+---
+lang: TR
+title: Elini Kaldıran
+answer: ^47$
+ok: Tamam
+error:
+---
+
+Piyango numaralarından oluşan bir liste. Hangisi en yüksek?
+
+Dene:
+
+ [12, 47, 35].max
diff --git a/translations/tr/try_ruby_140.md b/translations/tr/try_ruby_140.md
new file mode 100644
index 00000000..4a81e41c
--- /dev/null
+++ b/translations/tr/try_ruby_140.md
@@ -0,0 +1,13 @@
+---
+lang: TR
+title: Bir Listeyi Kenara Koymak
+answer: ^\[(\d+)(,\s*\d+){2,}\]$
+ok: Kaydedildi!
+error:
+---
+
+Aferin, aferin. Ancak bu listeyi her ihtiyacın olduğundan tekrar tekrar yazmak sinir bozucu, değil mi?
+
+Hadi numaralarımızı şu şekilde bir bilete kaydedelim:
+
+ ticket = [12, 47, 35]
diff --git a/translations/tr/try_ruby_150.md b/translations/tr/try_ruby_150.md
new file mode 100644
index 00000000..30142500
--- /dev/null
+++ b/translations/tr/try_ruby_150.md
@@ -0,0 +1,12 @@
+---
+lang: TR
+title: Şimdi Ticket Yaz
+answer: \[(\d+(, )?){2,}\]
+load: ticket = [12, 47, 35]
+ok: Geri yüklendi!
+error:
+---
+
+Şimdi, şunu yaz:
+
+ ticket
diff --git a/translations/tr/try_ruby_160.md b/translations/tr/try_ruby_160.md
new file mode 100644
index 00000000..00f37d46
--- /dev/null
+++ b/translations/tr/try_ruby_160.md
@@ -0,0 +1,24 @@
+---
+lang: TR
+title: Kaydedildi, Kenara Konuldu
+answer: \[12, 35, 47\]
+load: ticket = [12, 47, 35]
+ok: Listeyi sıraladın
+error:
+---
+
+Lotto numaralarını ticket adında bir __değişkene__ atayarak onları sağlama aldın.
+Tabii, eğer isteseydin _mahmut_ adında bir değişkene de atayabilirdin.
+
+Zaten fark edeceksin ki programlama aslında genel olarak değişkenlerle uğraşmaktır.
+
+Hadi lotto numaralarını sıralayalım, şuna ne dersin?
+
+Şunu kullan:
+
+ ticket.sort!
+
+Bir listen var. Bunu sıraladın. ticket adındaki değişkenin şimdi değişti.
+_sort!_ metodunun sonda büyük bir ünlem işaretini barındırdığını fark ettin mi?
+Ruby, genel olarak bir değişkeni kalıcı bir şekilde değiştirdiğinde sana öyle bağırır.
+Herhangi bir özel bir şey değil, sadece bir işaret.
diff --git a/translations/tr/try_ruby_170.md b/translations/tr/try_ruby_170.md
new file mode 100644
index 00000000..2255c200
--- /dev/null
+++ b/translations/tr/try_ruby_170.md
@@ -0,0 +1,34 @@
+---
+lang: TR
+title: Elementsel
+answer: ^(12|35|47)$
+load: ticket = [12, 47, 35]
+ok: Tamam
+error: Neredeyse
+---
+
+Lotto numaralarımızı ticket adlı değişkenimizde sakladık. Onları nasıl geri çıkarcaz?
+
+zaten __max__ ile en yüksek numarayı alabileceğimizi görmüştük. Benzer bir şekilde
+bir listenin __ilk__ ya da __son__ elementlerini de alabilirsin.
+Ancak ya spesifik bir element istiyorsan?
+
+### [ ]
+Ruby, belirli bir elementi alabilmek için kareli parantezleri [ ] kullanır.
+Kareli parantezler Ruby'de yaygındır.
+Bunlar, sanki bir nişana tam hedef almak için bir dürbün gibi kullanılır. Aynen.
+Bu kareli parantezler, "Şunu arıyorum ____" Hazır, nişan al.
+
+Hadi tüm lotto numaralarımızı alalım:
+
+ puts ticket[0]
+ puts ticket[1]
+ puts ticket[2]
+
+Neden [0], [1], [2] şeklinde kullanıyoruz?
+
+Ve [1], [2], [3] şeklinde kullanmıyoruz? Bu Bir Japon Zen olayı mı?
+Yoo, bilgisayar insanları sadece 0'dan başlayarak saymayı seviyor. Ruby ile alakalı bir olay değil,
+bu _sıfır bazlı indexleme_ çoğu programlama dilinde kullanılmakta.
+
+> Küçük bir hatırlatma: __Copy__ butonunu editöre örnek kodu koypalamak için kullanabilirsin.
diff --git a/translations/tr/try_ruby_180.md b/translations/tr/try_ruby_180.md
new file mode 100644
index 00000000..42a89779
--- /dev/null
+++ b/translations/tr/try_ruby_180.md
@@ -0,0 +1,31 @@
+---
+lang: TR
+title: Özet #2 Bize Düştü
+answer: \w+
+class: stretcher chapmark
+load: poem = "My toast has flown from my hand\nAnd my toast has gone to the moon.\nBut when I saw it on television,\nPlanting our flag on Halley's comet,\nMore still did I want to eat it.\n"
+ok: Kafiye oluyo mu?
+error:
+---
+
+Şimdi, ikinci dakikanın nasıl geçtiğine bir bak bakalım:
+
+### Hatalar
+Eğer bir numarayı ters çevirmeye veya başka garip bir şey yapmaya çalışırsan, Ruby sana söyleyecektir.
+
+### Array'ler(Diziler)
+Array'ler aslında bir şeyleri belirli bir sırada depolamak için olan listelerdir.
+Ayrıca, nasıl array oluşturup onlardan bir şeyler alabileceğimizi biliyoruz.
+
+### Değişkenler
+Değişkenler bir şeyler depolayıp ona bir isim verir. Bunun için eşittir işaretini kullanmalısın. Mesela:
+ticket = [14, 37, 18].
+
+### 2/8
+Tam olarak sekiz bölüm bulunmakta. Sona iki bölü 8 kadar yakınlaştın! Bunlar kolay şeyler,
+sen ne düşünüyorsun? İleride güzel şeyler var.
+
+Bir an için yön değiştirelim. Belirli bir değişkenin içerisine biraz şiir koydum.
+Bakıversene. Şunu yaz:
+
+ puts poem
diff --git a/translations/tr/try_ruby_190.md b/translations/tr/try_ruby_190.md
new file mode 100644
index 00000000..c66403ad
--- /dev/null
+++ b/translations/tr/try_ruby_190.md
@@ -0,0 +1,16 @@
+---
+lang: TR
+title: Maalesef, Tost Şiirciliğinden Nefret Ediyorsun
+answer: (toast){0}
+load: prev
+ok: Mükemmel
+error: Hala bana tost gibi kokuyor
+---
+
+Bak, problem değil. Beğenmek zorunda değilsin. Kafana göre değiştir, başımın üstünde yerin var.
+Tost yerine git kavan falan yaz. Yeni şiiri görmek için şunu yaz:
+
+ poem.gsub("toast", "honeydew")
+
+__gsub__ metodu global substitute'un kısaltılmış hali. Kendisi "toast" yazan tüm yerleri
+"honeydew" ile değiştirecek.
\ No newline at end of file
diff --git a/translations/tr/try_ruby_20.md b/translations/tr/try_ruby_20.md
new file mode 100644
index 00000000..b9a163a9
--- /dev/null
+++ b/translations/tr/try_ruby_20.md
@@ -0,0 +1,18 @@
+---
+lang: TR
+title: Editörü Kullanmak
+answer: ^\d{1,}$
+ok: Güzel! Biraz matematikle uğraştın. Cevabın nasıl çıkıverdiğini gördün mü?
+error: Editöre 2 + 6 yaz
+---
+
+Ruby kodunu yazacağın yer editöründür. __Run__ butonuna bas ve çalışmasını izle!
+
+Mesela, biraz matematik yapmayı dene. Örneğin:
+
+ 2 + 6
+
+Programının çıktısı, çıktı penceresinde gözükmeli.
+Ayrıca ne kadar iyi iş çıkardığını söyleyen bir satır olmalı.
+
+> Opsiyonel olarak, __Copy__ butonuna tıklayarak örnek kodu editörüne kopyalabilirsin.
diff --git a/translations/tr/try_ruby_200.md b/translations/tr/try_ruby_200.md
new file mode 100644
index 00000000..15bdebfe
--- /dev/null
+++ b/translations/tr/try_ruby_200.md
@@ -0,0 +1,12 @@
+---
+lang: TR
+title: Hazır, Nişan Al
+answer: dnah ym morf nwolf sah tsaot yM
+load: prev
+ok: Tamam, peki. Şimdi şiir tersine geri dönüverdi.
+error:
+---
+
+Hadi sana bir soru: bu tüm şiiri ters çevirirsek ne olur?
+
+ poem.reverse
diff --git a/translations/tr/try_ruby_210.md b/translations/tr/try_ruby_210.md
new file mode 100644
index 00000000..e17b3e89
--- /dev/null
+++ b/translations/tr/try_ruby_210.md
@@ -0,0 +1,17 @@
+---
+lang: TR
+title: Biraz Fazla Çeviriverdik
+answer: ^\["More still did (.+)
+load: prev
+ok: Aynen, nerdeyse istediğimiz gibi
+error:
+---
+
+Görünüşe göre tüm şiir harf harf tamamen test çevirildi. Oysa ki ben sadece satırları ters çevirmek istemiştim.
+Son satırı başa, baş satırı sona çevirmek.
+
+Geri çevirmen ancak, __öyle__ geri çevirmek değil.
+
+İşle şöyle:
+
+ poem.lines.reverse
diff --git a/translations/tr/try_ruby_220.md b/translations/tr/try_ruby_220.md
new file mode 100644
index 00000000..81fb9784
--- /dev/null
+++ b/translations/tr/try_ruby_220.md
@@ -0,0 +1,21 @@
+---
+lang: TR
+title: Zincirlenmiş Metodlardan Oluşan Bukleler
+answer: Tostum elimden fırlayıverdi
+load: prev
+ok: İyi iş yaptın! join metodu o satırlardan oluşan array'i aldı ve bir string'e dönüştürdü.
+error:
+---
+
+Ee, ne görüyorsun? Orda ne oldu? __poem.lines.reverse__ yazdın ve ne oldu?
+
+İki şey oldu. Şiiri satırlardan oluşan bir listeye dönüştürdün.
+Lines, string'in ayrıştırılacağı yönteme karar verip onu array'e dönüştürür.
+
+Sonra, o listeyi tersine çevirdin. Her bir satırın vardı. Onları tersine çevirdin. Bu kadar.
+
+Şu en sona bir tane daha metod ekleyiverelim:
+
+ puts poem.lines.reverse.join
+
+Metodları böyle yazmaya _metod zincirlemesi_ denir.
\ No newline at end of file
diff --git a/translations/tr/try_ruby_230.md b/translations/tr/try_ruby_230.md
new file mode 100644
index 00000000..5a00948c
--- /dev/null
+++ b/translations/tr/try_ruby_230.md
@@ -0,0 +1,30 @@
+---
+lang: TR
+title: Tüm Özetlerin #3 Şimdi Burada
+answer: \{\}
+class: stretcher chapmark
+load: prev
+ok: Boş bir hash yaptın!
+error:
+---
+
+### Ünlemler
+Metodlar adlarında ünlemler (ve ayrıca soru işaretleri) barındırabilir.
+Bunlar sadece fonksiyonalitelerinin ne olduğunu daha iyi açıklamak için. Büyük bir olay değil.
+
+### String manipülasyonu
+String'leri ara ve değiştir
+
+### Zincirleme
+Metodları zincirlemek daha çok şeyi yapabilmene olanak sağlar. Şiiri parçalara ayır, tersine çevir, tekrar bir araya getir:
+__poem.lines.reverse.join__
+
+Artık şiirle biraz daha uğraşmak isteyebilirsin. Tüm string metodlarını barındıran listeyi
+burada bulabilirsin.
+
+Kafana göre birkaç tanesini dene, mesela: poem.downcase ya da poem.swapcase
+
+## Hazır mısın?
+Hazır hissettiğinde devam et ve şunu yaz:
+
+ books = {}
diff --git a/translations/tr/try_ruby_240.md b/translations/tr/try_ruby_240.md
new file mode 100644
index 00000000..e3d66b76
--- /dev/null
+++ b/translations/tr/try_ruby_240.md
@@ -0,0 +1,27 @@
+---
+lang: TR
+title: Küçük Boş Bir Kitap
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {}
+ok: Evet o yeni bir eleştiri
+error: splendid, quite_good, mediocre, quite_not_good, abysmal değerlerinden birini kullan. İki nokta üst üsteyi unutma
+---
+
+Boş bir __hash__ yaptın. Hast boş bir array gibidir, tek farkı her bir elementinin bir adı olmasıdır.
+
+Yeni hash'imize birkaç yeni minyatür eleştiriler koyacağız. İşte bizim değerlendirme sitemimiz:
+
+- :splendid → bir sanateseri
+- :quite\_good → güzel, aynen, evet
+- :mediocre → iyi tarafları olduğu kadar kötü tarafları da vardı
+- :quite\_not\_good → oldukça kötü
+- :abysmal → duman tüten enkaz
+
+Bir kitabı değerlendirmek için, köşeli parantez içerisine başlığı ve değerlendirmeyi de eşittir işaretinden sonra koy. Mesela
+
+ books["Gravitys Rainbow"] = :splendid
+
+> Şimdi, TryRuby içerisindeki her dersin birbirinden ayrı olduğunu söylemeyi boynumun bir borcu olarak görüyorum.
+> Yani, eğer burada gidip deli gibi değerlendirmeler yazıverirsen onları sadece bu derste görüntüleyebilirsin.
+> Eğer oluşturduğun değerlendirmeleri diğer derslerde kullanmak istiyorsan o zaman kopyala/yapıştır yapmalısın.
+> Bunları çok kafana takma, her dersin kendine özel uğraşabilmen için önceden yaratılmış şeyleri var zaten.
diff --git a/translations/tr/try_ruby_250.md b/translations/tr/try_ruby_250.md
new file mode 100644
index 00000000..fdfca46e
--- /dev/null
+++ b/translations/tr/try_ruby_250.md
@@ -0,0 +1,28 @@
+---
+lang: TR
+title: Daha Çok Isırık Büyüklüğünde Değerlendirmeler
+answer: [3-9]
+load: books = {"Gravitys Rainbow" => :splendid}
+ok: Gördün mü, length metodu hem string'de hem array'de hem de hash'de kullanılabiliyor
+error:
+---
+
+Devam et, değerlendirmelerle doldur. Eğer olur da tüm listeyi görmek istersen sadece şunu yazman yeterli: __puts books__
+
+Tekrardan, değerlendirmeler sadece: :splendid, :quite\_good, :mediocre, :quite\_not\_good and :abysmal.
+
+Bu değerlendirmeler string değiller. Basit bir kelimenin önüne iki nokta üst üste karakterini koyduğunda bir __symbol__ haline gelirler.
+Symbol'ler string'lerden daha ucuzdurlar(bilgisayar hafızası anlamında.) Eğer olur da belirli bir kelimeyi programında tekrar ve tekrar
+kullandığını fark edersen, symbol kullan. Aynı bir kelimenin hafızada binlerce kopyasını yaratmak yerine bilgisayar bu sayede sadece __bir adet__
+symbol tutacaktır.
+
+Daha önemlisiyse, bir symbol o kelimenin programın için bir anlamı olmayan herhangi bir kelime olmadığı anlamına gelmektedir.
+
+2 tane daha kitap değerlendirmesi git, hash'te ne kadar kitap değerlendirmesi olduğunu görmek için __books.length__ yaz:
+
+ books["The deep end"] = :abysmal
+ books["Living colors"] = :mediocre
+
+ puts books
+
+ puts books.length
diff --git a/translations/tr/try_ruby_260.md b/translations/tr/try_ruby_260.md
new file mode 100644
index 00000000..b31e15f7
--- /dev/null
+++ b/translations/tr/try_ruby_260.md
@@ -0,0 +1,20 @@
+---
+lang: TR
+title: Bir Saniye, Yer Çekiminin Gökkuşağını Beğendim Mi?
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre}
+ok: Çok beğendim
+error:
+---
+
+Ruby hakkında bir şey şu ki, isimler genel olarak tekrar ve tekrar kullanılır, bu sayede hatırlaman gereken isimler daha azdır.
+
+Bir sayı kullanarak array'den nasıl bir element aldığımızı hatırla:
+__puts ticket[1]__.
+
+Bir hash için de bu aynı şekilde çalışıyor ancak element alabilmek için bir numara değil, bir isim kullanıyoruz.
+
+Yani, eğer eski değerlendirmelerinden bir tanesine bakmak istersen başlığı köşeli parantezlere tekrardan koy ancak eşittir işaretlerini ekleme.
+Tam olarak şöyle:
+
+ puts books["Gravitys Rainbow"]
diff --git a/translations/tr/try_ruby_270.md b/translations/tr/try_ruby_270.md
new file mode 100644
index 00000000..629d6c80
--- /dev/null
+++ b/translations/tr/try_ruby_270.md
@@ -0,0 +1,19 @@
+---
+lang: TR
+title: Çift Olarak Hash'ler
+answer: ^\[".*"\]
+load: prev
+ok: Anahtarları buldun
+error:
+---
+
+Şunu unutma ki hash'ler şeyleri belirli bir sırada depolamaz. Bu onların işi değil. Hash'ler sadece şu iki şeyi
+çift haline getirirler: __key__ ve bir __value__.
+
+Senin değerlendirmelerinde, kitabın başlığı bir key ve değerlendirmeyse bir value.
+
+Eğer sadece tüm değerlendirdiğin kitapların başlıklarını görmek istiyorsan:
+
+ books.keys
+
+Bunu ayrıca .keys yerine .values ile de deneyebilirsin.
\ No newline at end of file
diff --git a/translations/tr/try_ruby_280.md b/translations/tr/try_ruby_280.md
new file mode 100644
index 00000000..1cbd3242
--- /dev/null
+++ b/translations/tr/try_ruby_280.md
@@ -0,0 +1,26 @@
+---
+lang: TR
+title: Sert Misin?
+answer: :mediocre|mediocre:
+load: books = {"Gravitys Rainbow" => :splendid, "The deep end" => :abysmal, "Living colors" => :mediocre, "Bumblebees" => :mediocre}
+ok: Süper, vay! Değerlendirmelerinin bir puan kardını oluşturdun
+error:
+---
+
+Yani sağda solda gidip sert ve haksız değerlendirmeler mi yapıyorsun? Hadi yeni hash'imiz __ratings__ ile bunu takip edelim:
+
+Öyleyse, tamam, hadi şimdi değerlendirmelerini sayalım. Sadece benimle kal. Şunu yaz:
+
+ ratings = Hash.new {0}
+
+ books.values.each { |rate|
+ ratings[rate] += 1
+ }
+
+ puts ratings
+
+Koddaki düz çizgi pipe karakteridir ve muhtemelen Enter tuşunun hemen üstünte yer almaktadır.
+
+O _+= 1_ satırı şu anlama gelir: değeri 1 ile arttır.
+
+Eğer burada olan her şeyi anlayamıyorsan endişelenme. Sonradan açıklayacağız.
diff --git a/translations/tr/try_ruby_290.md b/translations/tr/try_ruby_290.md
new file mode 100644
index 00000000..371fd8d3
--- /dev/null
+++ b/translations/tr/try_ruby_290.md
@@ -0,0 +1,16 @@
+---
+lang: TR
+title: Bir Çetele
+answer: \w+
+ok: Yodelay!
+error:
+---
+
+Kullandığımız mükemmel şeylerden bir tanesi __block__. Bunları bu derste daha çok keşfedeceğiz. Ancak,
+basitçe, bir block süslü parantezlerle çevrelenmiş Ruby kodudur.
+
+Hadi bir başka block daha deneyelim:
+
+ 5.times { print "Odelay! " }
+
+Block'lar her zaman metodlara bağlıdırlar. Kodu alıp tekrar ve tekrar çalıştıran __times__ metodunda da olduğu gibi. (Bizim örneğimizde: beş kere.)
\ No newline at end of file
diff --git a/translations/tr/try_ruby_30.md b/translations/tr/try_ruby_30.md
new file mode 100644
index 00000000..c898e0fc
--- /dev/null
+++ b/translations/tr/try_ruby_30.md
@@ -0,0 +1,13 @@
+---
+lang: TR
+title: Sayılar ve Matematik
+answer: ^[0-9\.,-]{1,}$
+ok: Süper
+error:
+---
+
+Ruby, sayı ve matematiksel sayıları tanır. Şu şekilde matematik yapabilirsin:
+
+ 4 * 10
+ 5 - 12
+ 30 / 4
\ No newline at end of file
diff --git a/translations/tr/try_ruby_300.md b/translations/tr/try_ruby_300.md
new file mode 100644
index 00000000..2bad158d
--- /dev/null
+++ b/translations/tr/try_ruby_300.md
@@ -0,0 +1,22 @@
+---
+lang: TR
+title: Zamanın var mı?
+answer: ^[0-9]$
+ok: Tam zamanında yaptın!
+error: Block'u 0 ila 9 arasında çalıştır.
+---
+
+Birince örnekte de gördüğümüz (değerlendirmeleri sayarken) gibi bir block'a değer verebiliyoruz. Bu block'a
+verilen değerler block'u çalıştıran metoda bağlıdır.
+
+Block tarafından alınan değerler block'un başında iki pipe sembolü arasına yazılan değişken isimlerinde tutulur: |
+
+Hadi onu bu block'ta deneyelim:
+
+ 5.times { |time|
+ puts time
+ }
+
+Burada, __.times__ metodu değeri __|time|__ adlı değişkene göndermektedir. Ayrıca, time adlı değişkenin sadece bu block içerisinde bilindiğini aklımızda tutalım.
+
+> Bir kodu birden fazla satır üzerinde bölebileceğinizi fark ettiniz mi? Bu okumayı daha kolaylaştırır.
diff --git a/translations/tr/try_ruby_310.md b/translations/tr/try_ruby_310.md
new file mode 100644
index 00000000..6381962e
--- /dev/null
+++ b/translations/tr/try_ruby_310.md
@@ -0,0 +1,23 @@
+---
+lang: TR
+title: Şimdi Özete Geliyoruz #4
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Bu son ders biraz uzundu. Yaklaşık 3 dakikanı şunları öğrenmekle harcadın:
+
+### Hashe'ler
+Şu şekilde oluşturulan küçük sözlük: __{}__
+
+### Symbol'lar
+Küçük ve efektif olan, iki nokta üst üste ile şu şekilde yazılan kod isimleri: __:splendid__
+
+### Block'lar
+Ruby'nin birçok metoduna takılabilecek kod yığınları. İşte puan kartını yapmak için kullandığın kod:
+__books.values.each { |rate| ratings[rate] += 1 }__
+
+### Sonraki
+Sonraki derste metodlara daha derin bir dalış gerçekleştireceğiz.
diff --git a/translations/tr/try_ruby_320.md b/translations/tr/try_ruby_320.md
new file mode 100644
index 00000000..efb995fc
--- /dev/null
+++ b/translations/tr/try_ruby_320.md
@@ -0,0 +1,35 @@
+---
+lang: TR
+title: To (be) or not to (be)
+answer:
+load: poem = "Tostum elimden fırlayıverdi\nVe tostum aya uçtu.\nfalan filan falan filan falan filan\n"
+ok:
+error:
+---
+
+Üzerinde çok konuşmadığımız diğer bir küçük şeyse: metod argümanları.
+Şiiri biraz değiştirdiğimiz zamanı hatırlıyor musun? Şunu kullanmıştık:
+__poem.gsub("toast", "honeydew")__
+
+gsub metodunun 2 argümana ihtiyacı var ve biz bunları parantezler arasında iki string vererek kullandık.
+_Argümanlar metoda tam olarak ne yapılması gerektiğini söylerler._
+
+### Parantezler
+Aslında, çoğu zaman parantezleri kullanmaman Ruby'nin umrunda değildir. Yani bu da çalışırdı:
+__poem.gsub "toast", "honeydew"__
+
+Zaten parametrelerle başka bir metodu kullanmıştık. Hatta birden fazla kere, ancak o kadar da açık değildi:
+
+ puts "Hello"
+ puts("Hello")
+
+Evet, __puts__ da bir metod. puts metodunu parantezli veya parantezsiz kullanmak Ruby için aynı şey, ancak
+parantezsiz versiyonunu okumak biraz daha kolay. Ayrıca seni değerli yazma zamanından da da kurtarmış oluyor!
+
+> Sanırım buradaki sonuç kodun güzelce okunduğu sürece parantezlerle ne istersen yapabileceğin.
+
+### to (be) or not to (be)
+Yani eğer _to_ bir metod ve _be_ de bir argümansa bu eski soruya olan cevabı biliyoruz.
+_to be_ ya da _to(be)_ olmak aslında tamamen bir tercih meselesi.
+
+Biraz Shakespeare için modda mısın? Okumaya devam et.
diff --git a/translations/tr/try_ruby_330.md b/translations/tr/try_ruby_330.md
new file mode 100644
index 00000000..ecfe3e07
--- /dev/null
+++ b/translations/tr/try_ruby_330.md
@@ -0,0 +1,33 @@
+---
+lang: TR
+title: Sivri Uçluların Ehlileştirilmesi
+answer: ^tame
+ok: Güzel güzel!
+error:
+---
+
+Artık tamamen Ruby'i nasıl kullanman gerektiğini biliyorsun. Yani, temelleri biliyorsun.
+Sadece daha çok metodları öğrenip daha kompleks blokları denemelisin.
+
+Ancak Ruby'nin henüz hakkında konuşmadığımız bir kısmı daha var. Kendi metodlarını yapmak.
+__Öhöm!__ Hadi onu da halledelim bari.
+
+Ruby'nin zaten kendinden tanımlı metodlarının yanısıra (puts, sort, times gibi) kendi metodlarını da tanımlayabilirsin.
+Peki bu neden iyi bir fikir? İki sebepten ötürü:
+
+### Programını daha kısa yapabilmek için
+Eğer kodunda aynı şeyi birden fazla yerde yapmak ihtiyacı duyuyorsan bu kodu ayrı bir metoda
+koymak daha kolaydır. Kodun bu sayede daha kısa olacaktır.
+
+### Kodunu daha kolay okunabilir yapmak için
+Diyelim ki programın birçok şey yapmaya ihtiyaç duyuyor.
+__Eğer istersen__ tüm kodunu upuzun bir parça halinde yazabilirsin. Ancak bu sonradan okuması ve
+anlaması zor bir hale gelecektir.
+
+Onun yerine kodunu ayrı metodlarda yazıp her birine anlaması kolay bir İngilizce isim ver.
+Kendine bunun için sonradan teşekkür edeceksin.
+
+Peki, nasıl bir metod tanımlayabiliriz? Bu şekilde:
+
+ def tame( number_of_shrews )
+ end
diff --git a/translations/tr/try_ruby_340.md b/translations/tr/try_ruby_340.md
new file mode 100644
index 00000000..2883b281
--- /dev/null
+++ b/translations/tr/try_ruby_340.md
@@ -0,0 +1,24 @@
+---
+lang: TR
+title: Def Leppard'ın Ruby'deki Anlamı: Leppard Adlı Metodu Tanımla
+answer: ^tame
+ok: Uysal topal değil
+error:
+---
+
+Hey, tamam, başardın. Kendi metodunu yapıyorsun. def ile başladın, sonra da metodun ismiyle devam ettin.
+Ardından metodunun ihtiyacı olacak bir argümanlar listesi. Bu o kadar da korkutucu ve tehlikeli değil!
+Tüm yapmamız gereken Ruby ile doldurup end ile bitirmek.
+
+İşte kod:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ end
+
+> __P.S.__
+> Eğer bu bölümün başlığını anlayamadıysanız.
+> Def Leppard
+> ismi önceden ünlü olan İngiliz bir rock müziği grubudur.
diff --git a/translations/tr/try_ruby_350.md b/translations/tr/try_ruby_350.md
new file mode 100644
index 00000000..c3940d18
--- /dev/null
+++ b/translations/tr/try_ruby_350.md
@@ -0,0 +1,12 @@
+---
+lang: TR
+title: Yarattığın Şeyin Olgunlaşmış Meyvesi
+answer: ^Tamed a shrew
+ok: İşte bu o sivrilere haddini bildirecek
+error:
+load: def tame(number_of_shrews);number_of_shrews.times{puts "Tamed a shrew"};end;
+---
+
+Yeni bir metod doğdu. Hadi şimdi kullanalım:
+
+ tame 5
diff --git a/translations/tr/try_ruby_360.md b/translations/tr/try_ruby_360.md
new file mode 100644
index 00000000..da360d0e
--- /dev/null
+++ b/translations/tr/try_ruby_360.md
@@ -0,0 +1,31 @@
+---
+lang: TR
+title: Ver ve Al
+answer: \d+
+ok: Nokta atışı. Bravo.
+error:
+---
+
+Çoğu metodlar sadece giriş olarak parametreler istemez, ayrıca __geri bir şeyler de verirler__.
+Metodumuzu biraz değiştirdim ki sana bir şey döndürsün. Şunu dene:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ return number_of_shrews
+ end
+
+ puts tame(3)
+
+### Return
+Ve, burada bayağı gelişmiş ve yetenekli hale geldiğine göre sana benden bir ipucu:
+istersen __return__ kelimesini metoddan kaldırabilirsin.
+Ruby, bir sihirbaz gibi otomatik olarak metod içerisinde kullanılan son değeri döndürecektir.
+
+Bu bizim son satırı sadece şuna değiştirebileceğimizi gösteriyor: __number\_of\_shrews__.
+
+But since method __.times__ also returns the _number\_of\_shrews_ we can
+remove the entire last line. So in fact our original method already did what we wanted all along!
+Ancak zaten metod __.times__ ayrıca _number\_of\_shrews_ değerini döndüreceğizden ötürü son satırı tamamen
+kaldırabiliriz. Yani zaten en başından beridir bizim orijinal metodumuz tam olarak da istediğimiz şeyi yapıyordu!
diff --git a/translations/tr/try_ruby_370.md b/translations/tr/try_ruby_370.md
new file mode 100644
index 00000000..95ede009
--- /dev/null
+++ b/translations/tr/try_ruby_370.md
@@ -0,0 +1,27 @@
+---
+lang: TR
+title: Merhaba, Kim Orada? Ve Özet #5 Şapkasını Sallar!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Aferin, Aferin, Aferin, Aferin!
+
+Gerçekten, gerçekten, gerçekten, gerçekten, gerçekteeeen!
+
+Al sana hayatının son birkaç dakikasının özeti:
+
+### Metodlar
+Metodlar, __def__ ve bir isim ile tanımlanabilirler. Metodlar programını daha kısa ve
+kolayca okunabilir hale getirir.
+
+### Parametreler
+Metodların parametreleri olabilir.
+
+### Return değerleri
+Metodlar (neredeyse) her zaman bir değer döndürürler.
+
+## Şimdi
+Olmak ya da olmamak artık senin için bir soru değil. Biraz daha Shakespeare için hazır mısın?
diff --git a/translations/tr/try_ruby_380.md b/translations/tr/try_ruby_380.md
new file mode 100644
index 00000000..09572e30
--- /dev/null
+++ b/translations/tr/try_ruby_380.md
@@ -0,0 +1,31 @@
+---
+lang: TR
+title: Dünya Bizim İstiridyemiz
+answer: ^\{\"William
+ok: Güzel. Sadece okuması biraz zor.
+error:
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
+---
+
+Şu ana kadar çalıştırdığımız programlar sadece bizim kendi yazdığımız şeyleri kullanıyordu.
+Ki bu kötü bir şey değil, yani fena değildi ancak artık internet zamanındayız ve artık neredeyse
+dünyanın programlama eforlarını kodumuza ekleme zamanı geldi.
+
+Bir bilgiyi araştırabileceğin, çok, çok, çok fazla websitesi var. Mesela
+bu link sana Ruby hakkındaki güncel Google haber feed'ini verecek.
+
+Web tarayıcın muhtemelen sana bunu güzelce gösterecektir. Eğer kaynağa bakarsan (type: control-U)
+garip bir şekilde formatlanmış uzunca bir metin göreceksin. Google'ın örneğinde bu __rss__ formatıdır.
+
+### Formatlar
+Webde var olan garip isimli daha bir çok farklı format vardır, mesela:
+html, xml and json. Evet, bu websitesi bile bunlarıon birkaçını kullanmakta.
+
+Senin için William Shakespeare'in çalışmalarının tamamını internetten getirecek bir
+metod yazdım.
+(Merak etme, aslında tamamen bu websitenin çalıştığı aynı server'dan geliyor, yani
+aslında kimseyi rahatsız etmiyoruz.)
+
+Datayı şununla al:
+
+ get_shakey
diff --git a/translations/tr/try_ruby_390.md b/translations/tr/try_ruby_390.md
new file mode 100644
index 00000000..ba05c86d
--- /dev/null
+++ b/translations/tr/try_ruby_390.md
@@ -0,0 +1,53 @@
+---
+lang: TR
+title: Noble Kinsmen
+answer: ^The Two Noble Kinsmen$
+ok: Bu çok daha iyi
+error:
+load: prev
+---
+
+Pekala, şimdi internetten içerisinde oyunlar barındıran bir listeye sahibiz. Liste json formatındaydı.
+Neyse ki, Ruby bize kibarca json datasını Ruby hash'ine döndürecek metodu sağlıyor.
+Onu _get\_shakey_ metodu bizim için zaten yaptı.
+
+Ancak json datanın yapısı hash içerisinde muhafaza edildiğinden ötürü bu hala biraz okuması zor.
+Hadi oyunları daha kolayca okumamızı sağlayacak bir metod yazalım.
+
+Eğer oyun listesini dikkatlice incelersen iç içe gömülü bir yapıya sahip olduğununun farkına
+varacaksın. (Bu aslında internetten aldığın datalar için gayet yaygındır.)
+Şu şekilde gözüküyor:
+
+
+
"William Shakespeare"
+
+
"1"
+
+
"title": "The Two Gentlemen of Verona"
+
"finished": 1591
+
+
+
"2"
+
+
"title": "The Taming of the Shrew"
+
"finished": 1591
+
+
+
...
+
+
+
+
+Oyunlara erişebilmek için ilk önce en yukarıdaki "William Shakespeare" hash elementine ismi aracılığıyla ulaşmalıyız.
+Sonra altında bulunan her element için __iterate__ etmeliyiz.
+
+Ruby'nin iterate etmek için bir metodu zaten bulunmakta. Buna __each__ deniyor. Bunu önceden
+kitap değerlendirme sistemimizi yazarken görmüştük.
+
+__each__ metodunun döndürdüğü her şey bir block'a verilmekte:
+
+ s = get_shakey
+
+ s["William Shakespeare"].each { |key, val|
+ puts val["title"]
+ }
diff --git a/translations/tr/try_ruby_40.md b/translations/tr/try_ruby_40.md
new file mode 100644
index 00000000..b79242de
--- /dev/null
+++ b/translations/tr/try_ruby_40.md
@@ -0,0 +1,27 @@
+---
+lang: TR
+title: Farklı Bir Şekilde İfade Etmek
+answer: ^[0-9\.,-]{1,}$
+ok: Aferin
+error:
+---
+
+Birden fazla formül yazdığında sadece en sondakinin cevabını görebildiğini fark ettin mi?
+Neler oluyor?
+
+> Bu websitenin kullanımını iyileştirmek adına Ruby'e programının çıktısını
+> çıktı ekranına yapıştırmasını söyledim. Böylelikle herhangi bir formül yazdığında sonucunu görebileceksin.
+> __Ancak bu sadece son socuç için geçerli.__ Ayrıca çıktının boş da olması lazım.
+
+Bu yüzden, 2 formül girdiğinde sadece sonuncunun sonucunu gördün.
+
+Tabii ki, ekranı kontrol etme gücü sana ait! Sadece __puts__ yazman(ardından bir boşluk
+karakteri olacak şekilde) yeterli. Puts'un anlamı: *'ekrana bir şey koy'*.
+
+Şunu dene:
+
+ puts 4 * 10
+ puts 5 - 12
+ puts 30 / 4
+
+Şimdi son formülden puts'u sil ve ne olduğunu gör.
diff --git a/translations/tr/try_ruby_400.md b/translations/tr/try_ruby_400.md
new file mode 100644
index 00000000..112ed95a
--- /dev/null
+++ b/translations/tr/try_ruby_400.md
@@ -0,0 +1,40 @@
+---
+lang: TR
+title: Şimdi Hep Beraber
+answer: ^4$
+ok: Evet, Shakespeare 1591'de 4 oyun yazdı
+error: Cevap, 1591 yılı için 4 olmalı
+load: prev
+---
+
+Şimdi, düşünelim ki biz sadece belirli bir yılda Shakespeare tarafından yazılan oyunların
+isim ve sayılarını bulmak istiyoruz.
+
+Ruby, bizim değerleri bir hash'ten __select__ aracılığıyla seçmemize izin veriyor. select metodu
+bizim neyin seçileceğini belirmememiz için bir block kullanıyor.
+
+__select__ metodunun daha önce döndürdüğü sonuçları __each__ metodu içerisinde select block'u sonrasında
+ekleyerek kullanabiliriz. Bu daha önce şiiri terster çevirirken gördüğümüz metod zincirlemesine başka bir örnektir.
+
+Senin için __count\_plays__ metodunu hazırladım. Shakespeare'in __1591__ yılında ne kadar oyun
+yazdığına bir bak bakalım. Şunu dene:
+
+ def count_plays(year)
+ s = get_shakey
+
+ s["William Shakespeare"]
+ .select { |k, v|
+ v["finished"] == year
+ }.each { |key, val|
+ puts val["title"]
+ }.count
+ end
+
+ puts count_plays(0)
+
+count metodunu en sona zincirlediğimi fark ettin mi? Bu bize __count\_plays__ metodu için
+geri döndürülecek bir değer veriyor.
+
+Burada zincirleme için başka bir olasılık daha var. O yalnız __s = get_shakey__ satırını görüyor musun?
+get_shakey'den sonra __["William Shakespeare"].select { |k, v|__'ı ekleyebilirdin
+(bu örnekte ihtiyacın yok).
diff --git a/translations/tr/try_ruby_410.md b/translations/tr/try_ruby_410.md
new file mode 100644
index 00000000..7c766344
--- /dev/null
+++ b/translations/tr/try_ruby_410.md
@@ -0,0 +1,40 @@
+---
+lang: TR
+title: İyi Biten Her Şey İyi
+answer: İyi Biten Her Şey İyi
+ok: True
+error: 1605'i ikinci parametre olarak kullan
+load: prev
+---
+
+Tamam, internetten biraz data aldık ve istediğimizi seçip yazdırdık.
+Geriye geliştirmek için ne kaldı? Sonuçları daha güzel yazdırabilirdik. Mesela yılı ekleyip
+başlık ve yılı birbiriyle hizalayabiliriz.
+
+Bu bir satıra birden fazla değer yazdırmak anlamına geliyor. Ruby'nin bunu yapmak için kullanışlı
+bir yolu var. Normal bir string yazdırmak gibi: __puts "Hi, my name is Jimmy"__.
+Ancak _Jimmy_ gibi literal bir değer yerine bir değişkenin değerini kullanıyoruz.
+
+Önce __Jimmy__'i __#{}__ ile değiştir. Eğer Ruby bir hast sembolünü # süslü parantezden
+önce görürse süslü parantezler arasındaki değişkenin değeri için aramaya başlar.
+Yani şunu kullanabiliriz: __"Hi, my name is \#{name}"__.
+
+Hadi kodumuzu biraz değiştirelim
+
+ def print_plays(year_from, year_to)
+ get_shakey["William Shakespeare"]
+ .select { |k, v|
+ year_from <= v["finished"] &&
+ year_to >= v["finished"]
+ }.each { |k, v|
+ puts "#{v["title"].ljust(30)} #{v["finished"]}"
+ }
+ end
+ print_plays(1600, 1605)
+
+Başlığa __.ljust(30)__'ı ekledim. Bu şekilde başlığın sola doğru minimum 30 karakter uzunlukta
+güzelce hizalı olmasını sağladım.
+
+Programın çıktısını bu şekilde değiştirmeyi bir deneyin: __1600 -> As You Like It__
+
+__İyi Biten Her Şey İyi Midir?__ Hey, daha bitmedi. Ancak son yakındır.
diff --git a/translations/tr/try_ruby_420.md b/translations/tr/try_ruby_420.md
new file mode 100644
index 00000000..3d2fd883
--- /dev/null
+++ b/translations/tr/try_ruby_420.md
@@ -0,0 +1,36 @@
+---
+lang: TR
+title: Eğer Karar Vermeyi Bilseydim
+answer:
+ok:
+error:
+---
+
+Karar verme, gerçek hayatta bir problem olabilir. Ama bizim için değil.
+Ruby karar verme sürecini çok kolaylaştırıyor.
+
+ if 1 < 2
+ puts "It is true: 1 is less than 2"
+ end
+
+Buradaki anahtar kelime __if__. If bir metoddan önce veya sonra şu şekilde yerleştirilebilir:
+
+ puts "It is true: 1 is less than 2" if 1 < 2
+
+__If__ aslında bir parametre gerektiren bir metoddur. O parametre test etmek istediğin ifade olabilir.
+O test edilen ifadenin sonucu ya __true__ ya da __false__ olmalıdır.
+İşte burada sonuçlarıyla birkaç ifade:
+
+ 5 <= 10 # => true
+ 'abc' == 'def' # => false
+ true # => true
+ 123456 # => true
+ 0 # => true
+ nil # => false
+ 'xyz'.empty? # => false
+ 'a' > 5 # => error:
+ # comparison of String with
+ # Numeric failed
+
+_if ifadesi_ birden fazla form alabilir. Literal değerleri (1 < 2),
+değişkenleri (a < 1) ve bir metodun döndürdüğü değeri ('xyz'.empty?) karşılaştırabilir.
diff --git a/translations/tr/try_ruby_430.md b/translations/tr/try_ruby_430.md
new file mode 100644
index 00000000..e72b4b1d
--- /dev/null
+++ b/translations/tr/try_ruby_430.md
@@ -0,0 +1,32 @@
+---
+lang: TR
+title: Ve Şimdi Şaşırtıcı Sonuca Gelelim
+answer: 100$ değerine eşit değil
+ok: Şimdi daha iyi
+error: Bu doğru olamaz
+---
+
+__'abc' == 'def'__ ifadesinde bulunan çift eşitlik sembolünü gördün mü?
+
+__==__, __eşittir__ anlamına gelir.
+Önceden gördüğümüz tek eşittir sembolü __bir değişkene değer atamak__ için kullanılır.
+
+Daha çok kafa karıştırmak için: bir if metodundan sonra böyle bir atama kullanabilirsin:
+
+ a = 0
+
+ if a = 100
+ puts "Expression is true, but a is now: #{a}"
+ else
+ puts "#{a} is not equal to 100"
+ end
+
+= sembolünü == sembolüne çevir ve ne olduğunu gör.
+
+Garanti ederim ki ikinci eşittir sembolünü yazmayı düzenli olarak unutacaksın. Ben de
+bazen unutuyorum.
+
+### else
+Yukarıdaki kodda bir else ifadesi ekledim. Bu kısım if test ifadesi false olursa çalıştırılacak.
+
+> Bu if-then-else temasının sahip olduğu daha çok varyasyonlar bulunmaktadır. Burada bunun hakkında daha çok okuyabilirsin.
diff --git a/translations/tr/try_ruby_440.md b/translations/tr/try_ruby_440.md
new file mode 100644
index 00000000..f679af9a
--- /dev/null
+++ b/translations/tr/try_ruby_440.md
@@ -0,0 +1,30 @@
+---
+lang: TR
+title: Açım
+answer: ^Aç değilim
+ok: Evet
+error: Sabah 10'da aç olmam imkansız!
+---
+
+Tamam, her şey güzelce bir araya geliyor. Bunlar senin için kolay şeyler, ancak aklında tut ki
+15 dakika önce bir Ruby bilgin yoktu.
+
+Son adım. Artık tüm bunları birbirine bağlamanın zamanı geldi, değil mi? Hadi beraber bu güzel müziği
+parıldayan sahil ve mükemmel günbatımında beraber dinleyelim!
+
+İlk önce iki metod tanımlayacak sonra bir karar vereceğiz:
+
+ def hungry?(time_of_day_in_hours)
+ puts "Me hungry"
+ true
+ end
+
+ def eat_an(what)
+ puts "Me eat #{what}\n"
+ end
+
+ eat_an 'apple' if hungry?(14)
+
+ eat_an 'apple' if hungry?(10)
+
+Şimdi false değerini döndürüp zaman öğle 12'den erken olunca __"Me not hungry"__ görüntüleyebilmek için __hungry?__ metodunu değiştirmeyi dene.
diff --git a/translations/tr/try_ruby_450.md b/translations/tr/try_ruby_450.md
new file mode 100644
index 00000000..3144c96b
--- /dev/null
+++ b/translations/tr/try_ruby_450.md
@@ -0,0 +1,33 @@
+---
+lang: TR
+title: Özet #6 Yani Uzun Yol Teptin
+answer: \{\}
+class: stretcher chapmark
+ok: Pek, o boş bir hash
+error:
+---
+
+Sen seviye 6 bir din insanısın. Yani, çok iyi bir iş becerdin demek istemiştim. Hadi gözden geçirelim:
+
+
+### Data
+İnternetten data yükledin, data yapısını gezip istediğin değerleri seçtin.
+
+### Iterate etmek
+Bir hash'teki tüm elemenleri itere ettin ve metodlar zincirledin.
+
+### Güzel yazdırma
+Ve o da yeterli değilmiş gibi, bazı değerleri formatlayıp insanlar için okuması kolay
+bir şekilde yazdırdın. Aslında __gerçek bir program yaptın!__
+
+### If
+__if__ ve __else__ ile programının kontrolünü eline almayı öğrendin.
+
+## Yani
+Bundan sonra daha ne olabilir? Daha öğrenecek ne kalmış olabilir?
+He, burası en iyi kısmı. O kadar yok kat ettin ki artık class'ları
+keşfedeceğiz. İki tane daha kısa ders ve bitti.
+
+Önceden bir hash'i şu şekilde oluşturduk:
+
+ Hash.new
diff --git a/translations/tr/try_ruby_460.md b/translations/tr/try_ruby_460.md
new file mode 100644
index 00000000..92713b36
--- /dev/null
+++ b/translations/tr/try_ruby_460.md
@@ -0,0 +1,33 @@
+---
+lang: TR
+title: Okul Class'ı Değil, Çalışan Class
+answer:
+ok:
+error:
+---
+
+Gördüğün gibi, boş süslü parantezler {} aslında Hast.new için bir kısa yol. new metodu belirli bir class
+için yeni objeler oluşturmak adına kullanılır. "class" kavramını aslında "çalışan class" olarak düşün —
+aynı gömleği olan, aynı işleri olan, spesifik birbirine benzer bir grup objeler.
+
+### BlurbalizerTM
+Yeni bir aplikasyon için mükemmel bir fikir aklına geldi. O yeni hızlı mesajlaşma
+platformu olacak. İnsanların birbirine kısa mesajlar gönderebileceğ bir aplikasyon istiyorsun.
+Bu mesajlara BlurbsTM diyorsun. Bir BlurbTM'ün maksimum uzunluğu 40 karakterdir.
+Ayrıca bir ruh havası belirleme de yapalım.
+
+
+
+### Nereden başlanmalı
+İstersen BlurbsTM girişlerini bir json dosyasında depolayabilirsin, değil mi?
+Ancak girişlerin içeriği ve yayınlandığı zamanları nasıl takip edebilirsin?
+Ayrıca dosyayı indirdiğinde Ruby'de nasıl görünürdü?
+Bir Hask mi olurdu? Ya da bir Array mi? Ya da Array'den oluşan bir Array? Ya da başka bir şey?
+
+### Class
+Ben gerçekten bir class kullanmak isteyeceğini düşünüyorum. Zaten birçok class ile aşinasın:
+Hash, Array, String.
+Hadi yeni bir class yapalım (bir çıktı döndürmeyecek):
+
+ class Blurb
+ end
diff --git a/translations/tr/try_ruby_470.md b/translations/tr/try_ruby_470.md
new file mode 100644
index 00000000..7e1d1b64
--- /dev/null
+++ b/translations/tr/try_ruby_470.md
@@ -0,0 +1,20 @@
+---
+lang: TR
+title: Aplikasyonların Yapıldığı Şey
+answer:
+ok:
+error:
+---
+
+Yeni bir BlurbTM class'ı açtın. Blog girişin neyden oluşuyor?
+İçerikten, tabii ki. Ayrıca, BlurbTM'ün oluşturulduğu zaman BlurbTM. Ve bir ruh hali.
+
+Tamam, class'ın ilk satırını aldın, işte sonrası:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+ end
+
+Class isimleri her zaman büyük bir harfle başlar.
+
+(Hala bir çıktı yok)
diff --git a/translations/tr/try_ruby_480.md b/translations/tr/try_ruby_480.md
new file mode 100644
index 00000000..47e8326c
--- /dev/null
+++ b/translations/tr/try_ruby_480.md
@@ -0,0 +1,25 @@
+---
+lang: TR
+title: Accessor'lar Sallanan Uzuvlardır
+answer: Blurb:
+ok: İlk Blurb'üm
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;end
+---
+
+Hey, güzel class, dostum. Yeni bir BlurbTM class'ın var
+
+Class tanımalmasında attr\_accessor adlı bir metod kullandın.
+Bunun gibi küçük class'a küçük ayarlar ekleyen birçok __attr__ibute metodları bulunmaktadır.
+Bu attribute'lar sadece class'a yapışık değişkenlerdir.
+
+Şu şekilde düşün. Bir class insan gibidir.O dışarıda dolaşan yıldız şekilli şey işte.
+Ve attribute'lar da sallanan uzuvlar, farklı parçalar bir vücudu oluşturur ve insanlar
+el sıkışabilir.
+
+### Şimdi
+BlurbTM oluşturup içeriğini belirlemek için:
+
+ blurb1 = Blurb.new
+ puts blurb1
+ blurb1.content = "Today Mount Hood Was Stolen!"
diff --git a/translations/tr/try_ruby_490.md b/translations/tr/try_ruby_490.md
new file mode 100644
index 00000000..a59c788c
--- /dev/null
+++ b/translations/tr/try_ruby_490.md
@@ -0,0 +1,15 @@
+---
+lang: TR
+title: Bir Obje, O Düzenli Küçük Paket
+answer: Blurb:
+ok: Blurb güncellendi
+error:
+load: prev;blurb1=Blurb.new;blurb1.content="Today Mount Hood Was Stolen!"
+---
+
+Devam et ve BlurbTM'üm zaman ve ruh halini belirle:
+
+ blurb1.time = Time.now
+ blurb1.mood = :sick
+
+ puts blurb1
diff --git a/translations/tr/try_ruby_50.md b/translations/tr/try_ruby_50.md
new file mode 100644
index 00000000..73c6b531
--- /dev/null
+++ b/translations/tr/try_ruby_50.md
@@ -0,0 +1,13 @@
+---
+lang: TR
+title: Adını Söyle
+answer: [a-zA-Z]{1,1}
+ok: Süper, adını oluşturan harflerden bir string oluşturdun
+error:
+---
+
+Tabii, bilgisayarlar matematik için kullanışlı. Hadi devam edelim. İsmini ters bir şekilde görmek ister misin?
+
+Önce, ismini şu şekilde iki tırnak karakterleri arasında olacak şekilde yaz:
+
+ "Ali Rıza"
diff --git a/translations/tr/try_ruby_500.md b/translations/tr/try_ruby_500.md
new file mode 100644
index 00000000..0214cafa
--- /dev/null
+++ b/translations/tr/try_ruby_500.md
@@ -0,0 +1,31 @@
+---
+lang: TR
+title: Hızlandırmak
+answer: ^\d{4}
+ok: Not alındı
+error:
+---
+
+Güzel, aplikasyonun mükemmel. Hey, hadi bazı şeyleri senin için daha kolay hale getirelim.
+Her BlurbTM yaptığında zamanı o şekilde belirlemek istemeyeceksin.
+
+Sadece içerik ve ruh halini belirlemek istiyorsun, değil mi?
+
+Hadi class'ımıza bir __initialize__ metodu oluşturalım. Bu metod her yeni BlurbTM
+oluşturduğumuzda çağırılacak
+O anda da BlurbTM'ün içeriğini 40 karaktere limitleyebiliriz.
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+ end
+
+ Blurb.new(:sick).time
+
+(O __content=""__ parametresi hiç content parametresi verilmese de
+content'in string olduğunu garanti etmek için orada.)
diff --git a/translations/tr/try_ruby_510.md b/translations/tr/try_ruby_510.md
new file mode 100644
index 00000000..74bb57de
--- /dev/null
+++ b/translations/tr/try_ruby_510.md
@@ -0,0 +1,28 @@
+---
+lang: TR
+title: Aplikasyonuna Değersiz Şeyleri Reddetmeyi Öğrettin
+answer: Blurb:
+ok: Blurb eklendi
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
+---
+
+Class içerisinde nasıl at-symbol'lerini (@time) kullandığımızı gördün mü?
+
+Class __dışarısında__ accessor'lar kullanıyoruz:
+
+> __blurb.time = Time.now__
+
+ancak __içeride__ kullandıklarımızsa __objenin değişkenleri__:
+
+> __@time = Time.now__
+
+Tamamen aynı şeyler, ancak programında iki farklı yerde ifade edilmekteler.
+
+### Başka bir BlurbTM
+Ne zaman bir BlurbTM yaratılsa, initialize metodu new metoduna verilen argümanları
+kontrol etmek için çalıştırılır.
+
+Uh, iki argümana ihtiyacımız var:
+
+ blurb2 = Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
diff --git a/translations/tr/try_ruby_520.md b/translations/tr/try_ruby_520.md
new file mode 100644
index 00000000..a7aa5896
--- /dev/null
+++ b/translations/tr/try_ruby_520.md
@@ -0,0 +1,26 @@
+---
+lang: TR
+title: Bir Zürafa Hırsızlık Yapmadı Özet #7
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: prev;blurb2=Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
+---
+
+Aha, buradasın. Ve hala bir parça. Hala senin aplikasyonunu gerçek dünyaya taşıyacağız,
+ancak o zamana kadar, bir gözden geçirelim, tamam mı?
+
+### Class'lar
+Ruby içerisindeki her şey bir tür obje. Class'lar objeleri açıklar, belirli objelerin nasıl çalıştığını.
+Mesela, birkaç yeni BlurbTM objeleri oluşturdun ve bu obheler Blurb class'ında açıklanmakta.
+Başka bir deyişle: onlara Blurb objesi diyorsun.
+Gerçek dünyadaki şeyleri modellemek için class'ları kullanabilirsin (kısmen).
+
+### Accessor'lar
+Accessor'lar objelere yapıştırılmış objelerin __dışında__ kullanılan değişkenlerdir.
+(blurb2.time = Time.now)
+
+### Obje değişkenleri
+Obje değişkenleri, accessor'lar kullandığındaki değişkenlerle aynıdır, ancak objenin __içindedirler__.
+(@time = Time.now)
diff --git a/translations/tr/try_ruby_530.md b/translations/tr/try_ruby_530.md
new file mode 100644
index 00000000..50d74edc
--- /dev/null
+++ b/translations/tr/try_ruby_530.md
@@ -0,0 +1,46 @@
+---
+lang: TR
+title: Kendi Çimin
+answer: Blurbalizer:
+ok: Aplikasyonum yaratıldı
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end
+---
+
+Tamam, hadi olayları toplayalım, ufaklık. İşte Try Ruby'nin etkileyici epik hikayesinin son bölümü!
+Şimdi buraya geldiğine göre her şeyin nasıl çalıştığının bir tadına vardın, evinde ve bakkan dondurucusunda
+nasıl kullanacaksın?
+Mükemmel bir insansın (favorilerimden biri), ancak yol gösterilmesine ihtiyacın var.
+
+### Hadi aplikasyonunu bitirelim
+Aplikasyon girdilerin var, ancak gerçek bir aplikasyonun yok.
+Hala çalışmak için bir başığa, BlurbsTM'lerin depolanacağı bir yere ve bir zaman çizelgesine ihtiyacı var.
+
+Bil bakalım ne yapacağız, bir tane daha class kullanacağız. Tüm kodumu yeni class'ta tekte verdim.
+Sadece __ağırdan alarak__ anlamaya çalış.
+Benim acelem yok, seni diğer derste bekleyeceğim.
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = [] # A fresh clean array
+ # for storing Blurbs
+ end
+
+ def add_a_blurb(mood, content)
+ # The << means add to the end of the array
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbify: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp = Blurbalizer.new "The Big Blurb"
diff --git a/translations/tr/try_ruby_540.md b/translations/tr/try_ruby_540.md
new file mode 100644
index 00000000..f3055427
--- /dev/null
+++ b/translations/tr/try_ruby_540.md
@@ -0,0 +1,23 @@
+---
+lang: TR
+title: Blurb'ün Olayı Ne Ya?
+answer: Bugün
+ok: Blurb'leri getir
+error:
+load: prev;class Blurbalizer;attr_reader :title;def initialize(title);@title=title;@blurbs=[];end;def add_a_blurb(mood, content);@blurbs << Blurb.new(mood, content);@blurbs.each {|t| t.time -= 73};end;def show_timeline;puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.time}.reverse.each { |t| puts "#{t.content.ljust(40)} #{t.time}"};end;end;myapp = Blurbalizer.new "The Big Blurb";myapp.add_a_blurb :sick,"Today Mount Hood Was Stolen!";myapp.add_a_blurb :confused,"I can not believe Mt. Hood was stolen!";myapp.add_a_blurb :dazed,"I am speechless!";myapp.add_a_blurb :mad,"It was stolen by a giraffe !!";myapp.add_a_blurb :sad,"I Left my Hoodie on the Mountain!";myapp.add_a_blurb :mad,"I am never going back to that mountain."
+---
+
+İşte buradasın. BlurbalizerTM'in içerisindeki tüm o kodun ne yaptığını çözdün mü?
+
+> BlurbalizerTM class'ında iki adet __metod__ var (add\_a\_blurb and show\_timeline).
+> Class dışında bir metod kullanabilirsin, aynı accessor'larla yaptığımız gibi.
+
+BlurbalizerTM'ı kullanma zamanı. Senin için BlurbsTM'ler yükledim bile, kendi başına
+istediklerini ekleme konusunda rahat hisset.
+
+Artık direk BlurbsTM yaratmıyoruz, ancak BlurbalizerTM class'ın add\_a\_blurb __metodunu__ kullanıyoruz.
+Bu şekilde tüm BlurbsTM'lerimizin myapp objesinde depolandığına emin olabiliriz.
+
+ myapp.add_a_blurb :moody, "Add Blurb here"
+
+ myapp.show_timeline
diff --git a/translations/tr/try_ruby_550.md b/translations/tr/try_ruby_550.md
new file mode 100644
index 00000000..fe5230c4
--- /dev/null
+++ b/translations/tr/try_ruby_550.md
@@ -0,0 +1,64 @@
+---
+lang: TR
+title: Tamamen Birleştirmekle Alakalı
+answer: :-
+ok: Kaprisli!
+error:
+load: prev
+---
+
+Bazı güzel şeyler Ruby'nin basit parçalarıyla yapılabilir, özellikle onları
+yeni şeylere birleştirdiğin zaman.
+Burada bir class içeren başka bir class'tan oluşan bir aplikasyonumuz var. Ve, aslında, Ruby bu şekildeki
+yaratıklarla gayet iyi çalışıyor. Buna obje oryantasyonlu programlama deniyor.
+
+TryRuby'deki __son programlama egzersizine__ geldik. İstersen, BlurbalizerTM'a daha çok
+yeni özellikler ekleyebilirsin.
+
+Belki __show_timeline__ metodunda ruh halini bir smiley olarak yazdırmak istiyorsundur. BlurbTM class'ına
+_moodify_ metodunu ekleyebilir ve o metodu _show\_timeline_ metodunda kullanabilirsin:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+
+ def moodify
+ if @mood == :sad
+ return ":-("
+ elsif @mood == :happy
+ return ":-)"
+ # Add other moods here
+ end
+
+ # The default mood
+ ":-|"
+ end
+ end
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = []
+ end
+
+ def add_a_blurb(mood, content)
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp.show_timeline
diff --git a/translations/tr/try_ruby_560.md b/translations/tr/try_ruby_560.md
new file mode 100644
index 00000000..0ff6b34f
--- /dev/null
+++ b/translations/tr/try_ruby_560.md
@@ -0,0 +1,29 @@
+---
+lang: TR
+title: Özet #8, Hey-Rahatla-İyi-İş-Çıkardın Özeti
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: def ruby(f);puts "Go to www.ruby-lang.org to download Ruby";end;class K;attr_reader :rb;end;my_first_program=K.new
+---
+
+Bu son bölümün bitmesi biraz zaman aldı, ancak bu sana Ruby'i kullanabilmen adına işaretler vermek içindi.
+
+Eğer bunu beğendiysen, TryRuby Playground ile devam edebilirsin ya da
+Ruby'i indirebilirsin:
+ruby-lang.org
+
+Ruby'i indirdiğin zaman text editörün aracılığıyla bir dosya oluşturabilir, diyelim ki _my\_first\_program.rb_ olsun,
+Ruby kodu yazabilir ve sonra komut istemini açıp şunu yazarak çalıştırabilirsin:
+
+ ruby my_first_program.rb
+
+Bir editörü, dosya tarayıcısını ve 'ruby-çalıştırıcısını' kombine eden birçok geliştirme araçları bulunmakta (ücretsiz).
+
+## Kutla
+Gerçekten iki katlı ve çift kremalı bir pastayı o ikili gitarlardan çalan bir adam eşliğinde hak ettin.
+Yani, bitirdin, gerçekten yaptın! Hakkında hiçbir şüphe yok, sen __sertifikalanmış kırmızı kanlı bir dahisin__!
+
+## Daha çok bilgi
+Bu websitede birkaç tane makale var. Sana buradan nereye gitmek konusunda fikir verebilirler.
diff --git a/translations/tr/try_ruby_60.md b/translations/tr/try_ruby_60.md
new file mode 100644
index 00000000..7b83d38b
--- /dev/null
+++ b/translations/tr/try_ruby_60.md
@@ -0,0 +1,16 @@
+---
+lang: TR
+title: İsmini Geriden Söyle
+answer: \w+
+ok: repüS
+error:
+---
+
+Bir string, bilgisayarın işleyebileceği bir karakter(ler) kümesidir. String'leri çamaşır askısına
+asılmış çamaşırlar olarak, tırnakları da mandallar olarak düşünebilirsin. Tırnaklar başlangıç ve sonu belirler.
+
+İsmini terse çevirmek için bunu yaz:
+
+ "Ali Rıza".reverse
+
+(Noktayı unutma!)
diff --git a/translations/tr/try_ruby_70.md b/translations/tr/try_ruby_70.md
new file mode 100644
index 00000000..28900eb9
--- /dev/null
+++ b/translations/tr/try_ruby_70.md
@@ -0,0 +1,13 @@
+---
+lang: TR
+title: Harfleri Saymak
+answer: ^\d+$
+ok: Aynen. Length de bir 'metod'
+error:
+---
+
+İsminde reverse __metodunu__ kullandın! İsmini tırnak işaretleri arasına alarak bir string oluşturdun. Ardından reverse metodunu çağırarak sting üzerindeki tüm harfleri ters çevirdin.
+
+Şimdi, bakalım isminde kaç adet harf varmış:
+
+ "Ali Rıza".length
diff --git a/translations/tr/try_ruby_80.md b/translations/tr/try_ruby_80.md
new file mode 100644
index 00000000..1754c4cd
--- /dev/null
+++ b/translations/tr/try_ruby_80.md
@@ -0,0 +1,17 @@
+---
+lang: TR
+title: Tekrarda
+answer: (\w+)
+ok: Tanıştığıma memnun oldum.Tanıştığıma memnun oldum.Tanıştığıma memnun oldum.
+error:
+---
+
+Şimdi, muhtemelen bunların ne işine yarayacağını düşünüyorsun.
+
+Eminim ki önceden sana __Hey, şifren çok kısa!__ diye bağıran bir websitede bulunmuşsundur.
+
+Gördün mü, bazı programlar o basit __.length__ kodunu kullanıyor.
+
+Şuna bak. Hadi ismini 5 ile çarpalım.
+
+ "Ali Rıza" * 5
diff --git a/translations/tr/try_ruby_90.md b/translations/tr/try_ruby_90.md
new file mode 100644
index 00000000..8468b0f0
--- /dev/null
+++ b/translations/tr/try_ruby_90.md
@@ -0,0 +1,30 @@
+---
+lang: TR
+title: Hey, Özet #Şimdiden 1 Numara
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
+class: stretcher chapmark
+ok: Yoo, bir numarayı ters çevirmek mümkün değil ki. 'next' butonuna bas
+error:
+---
+
+Hadi ilk dakikanda öğrendiklerine bir göz atalım.
+
+### Editör
+Editöre yazmak ve run butonuna basmak sana çıktı ekranında bir sonuç verir.
+(Neredeyse) tüm kod sana bir cevap verir.
+
+### Numaralar ve string'ler
+Numaraler ve string'ler Ruby'nin matematik ve metin objeleridir.
+
+### Metodlar
+İngilizce dilinde olan reverse ve length gibi metod isimleri kullandın. Ayrıca çarpma metodu
+gibi sembolik metodlar da kullandın: \*
+__Methodlar aksiyon anlamına gelir!__
+
+Öğrenmenin özü budur. Basit şeyleri alıp onlarla oynadıktan sonra onları başka şeylere dönüştürmek.
+Rahat hissetmeye başladın mı? Başladığına eminim.
+
+## Tamam,
+bir de rahat olmayan bir şey yapalım. Bir numarayı ters çevirmeye çalış:
+
+ 40.reverse
diff --git a/translations/ua/README.md b/translations/ua/README.md
new file mode 100644
index 00000000..cbd2663e
--- /dev/null
+++ b/translations/ua/README.md
@@ -0,0 +1,21 @@
+## Copyright (C)
+Try Ruby version 4 Ukrainian version, 2019-2020, _Andrii Palchik_
+
+## The MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/translations/ua/try_ruby_10.md b/translations/ua/try_ruby_10.md
new file mode 100644
index 00000000..d1ae6eaf
--- /dev/null
+++ b/translations/ua/try_ruby_10.md
@@ -0,0 +1,21 @@
+---
+lang: UA
+title: Є 30 хвилин? Дай Ruby шанс, і він тебе здивує!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Ruby – це мова програмування з Японії, яка створила передумови для революції у веб-розробці.
+
+Краса Ruby в її балансі між простотою і можливостями.
+
+Ти можеш ввести код на Ruby в редакторі і використовувати кнопки для навігації:
+
+- __Run__ → Виконати код, що знаходиться в редакторі
+- __Copy__ → Вставити/скопіювати приклад коду в редактор
+- __Next__ → Перейти до наступного уроку
+- __Back__ → Повернутися до попереднього уроку
+
+
Натисни Next для початку навчання.
diff --git a/translations/ua/try_ruby_100.md b/translations/ua/try_ruby_100.md
new file mode 100644
index 00000000..1d0c3a73
--- /dev/null
+++ b/translations/ua/try_ruby_100.md
@@ -0,0 +1,15 @@
+---
+lang: UA
+title: Зупинись, ти здурів!)
+answer: ^\d{1,}$
+ok: Розгорнути можна тільки рядки
+error:
+---
+
+Не можна розгорнути число задом наперед. Ти, звісно, можеш тримати монітор перед дзеркалом, але розгортання числа просто не має сенсу.
+
+Ruby виведе повідомлення з помилкою. Ruby каже тобі, що не існує методу reverse для чисел.
+
+Хіба може спробувати перетворити число 40 на рядок для початку:
+
+ 40.to_s.reverse
diff --git a/translations/ua/try_ruby_110.md b/translations/ua/try_ruby_110.md
new file mode 100644
index 00000000..aab4ce5f
--- /dev/null
+++ b/translations/ua/try_ruby_110.md
@@ -0,0 +1,22 @@
+---
+lang: UA
+title: Яблука відрізняються від апельсинів
+answer: \[\]
+ok: Добре, це пустий список.
+error:
+---
+
+А числа відрізняються від рядків.
+
+У той час як використання методів може бути застосовано до всіх об'єктів Ruby, деякі методи працюють тільки з певними типами даних.
+Але ти можеш перетворити один тип на інший, використовуючи методи типу "to"
+
+- __to_s__ перетворює на рядки
+- __to_i__ перетворює на число
+- __to_a__ перетворює на масив
+
+__Що таке масив?!__
+
+Масив – це просто список. Набери 2 квадратні дужки:
+
+ []
diff --git a/translations/ua/try_ruby_120.md b/translations/ua/try_ruby_120.md
new file mode 100644
index 00000000..b657cf6a
--- /dev/null
+++ b/translations/ua/try_ruby_120.md
@@ -0,0 +1,17 @@
+---
+lang: UA
+title: Черга по квитки
+answer: ^\[([-\.\d]+)(\s*,\s*[-\d\.]+){3,}\]$
+ok: Чудесно
+error: Спробуй додати четверте число до списку
+---
+
+Списки (масиви) зберігають елементи __в певній послідовності__.
+
+Схоже на чергу по квитки. Ти стоїш за кимось і навіть не мрієш його відштовхнути або пересунути, чи не так? Також хлопчина за тобою, ти пильно слідкуєш за кожним його рухом.
+
+Ось ще список. Номери лотерейних квитків:
+
+ [12, 47, 35]
+
+Спробуй додати число до масиву. Набери кому і число після 35. Пробіл не обов'язковий.
diff --git a/translations/ua/try_ruby_130.md b/translations/ua/try_ruby_130.md
new file mode 100644
index 00000000..438cfc64
--- /dev/null
+++ b/translations/ua/try_ruby_130.md
@@ -0,0 +1,13 @@
+---
+lang: UA
+title: Перший піднімає руку
+answer: ^47$
+ok: Ok
+error:
+---
+
+Список номерів лотерейних квитків. А який номер максимальний?
+
+Спробуй:
+
+ [12, 47, 35].max
diff --git a/translations/ua/try_ruby_140.md b/translations/ua/try_ruby_140.md
new file mode 100644
index 00000000..8c6634db
--- /dev/null
+++ b/translations/ua/try_ruby_140.md
@@ -0,0 +1,13 @@
+---
+lang: UA
+title: Сховаємо список
+answer: ^\[(\d+)(,\s*\d+){2,}\]$
+ok: Заховано!
+error:
+---
+
+Добре. Але ж незручно набирати список кожного разу, коли він потрібен, так?
+
+Збережімо наші номери лотереї таким чином:
+
+ ticket = [12, 47, 35]
diff --git a/translations/ua/try_ruby_150.md b/translations/ua/try_ruby_150.md
new file mode 100644
index 00000000..b07fb17f
--- /dev/null
+++ b/translations/ua/try_ruby_150.md
@@ -0,0 +1,12 @@
+---
+lang: UA
+title: Тепер введи ticket
+answer: \[(\d+(, )?){2,}\]
+load: ticket = [12, 47, 35]
+ok: Видобуто!
+error:
+---
+
+А зараз набери:
+
+ ticket
diff --git a/translations/ua/try_ruby_160.md b/translations/ua/try_ruby_160.md
new file mode 100644
index 00000000..5882dd4d
--- /dev/null
+++ b/translations/ua/try_ruby_160.md
@@ -0,0 +1,24 @@
+---
+lang: UA
+title: Збережено й заховано
+answer: \[12, 35, 47\]
+load: ticket = [12, 47, 35]
+ok: Ти відсортував список
+error:
+---
+
+Ти поклав список номерів в __змінну__ з назвою ticket.
+Але будь-яке інше ім'я, як __andriilist__, теж згодиться.
+
+Займаючись програмуванням, ти помітиш, що це, переважно, робота зі змінними.
+
+Впорядкуймо список лотерейних квитків?
+
+Використай:
+
+ ticket.sort!
+
+Ти мав простий список. Ти його відсортував. Змінна ticket теж змінилася.
+Ти помітив, що у методу __sort!__ на кінці стоїть великий знак оклику?
+Так Ruby повідомляє нам, що змінна ticket буде змінена не лише в цьому виразі, а й, також, в пам'яті.
+Нічого надзвичайного, просто запам'ятай!
diff --git a/translations/ua/try_ruby_170.md b/translations/ua/try_ruby_170.md
new file mode 100644
index 00000000..a2d96ff7
--- /dev/null
+++ b/translations/ua/try_ruby_170.md
@@ -0,0 +1,31 @@
+---
+lang: UA
+title: Елементи
+answer: ^(12|35|47)$
+load: ticket = [12, 47, 35]
+ok: Ok
+error: Майже
+---
+
+Ми зберегли числа в змінну, а як їх отримати назад?
+
+Ми вже бачили, як ми можемо отримати максимальний елемент, використовуючи метод __max__.
+Також ти можеш отримати __first__ (перший) або __last__ (останній) елемент списку.
+А що коли ти хочеш отримати якийсь конкретний елемент?
+
+### [ ]
+Ruby використовує [], щоб націлитися на елемент.
+Квадратні дужки дуже поширені в Ruby.
+Вони означають: "Я шукаю ____", Готовий, цілься!
+
+Отримай всі номери зі списку:
+
+ puts ticket [0]
+ puts ticket [1]
+ puts ticket [2]
+
+Чому ми використовуємо [0], [1], [2]?
+
+А не [1], [2] чи [3]? Це якийсь японський дзен? Ні, в багатьох мовах програмування відлік йде з нуля. Це не тільки особливість Ruby.
+
+>Невелике нагадування: ти можеш використовувати кнопку __Copy__.
diff --git a/translations/ua/try_ruby_180.md b/translations/ua/try_ruby_180.md
new file mode 100644
index 00000000..8310ffff
--- /dev/null
+++ b/translations/ua/try_ruby_180.md
@@ -0,0 +1,29 @@
+---
+lang: UA
+title: Підсумки #2 Що тут у нас?
+answer: (.+)
+class: stretcher chapmark
+load: poem = "Моя канапка випала у мене з рук. \nІ моя канапка полетіла на Місяць. \nТа коли я побачив її в телевізорі, \nРазом з прапором України на кометі Галлея, \nТоді я найбільше хотів її з'їсти\n"
+ok: Чи є хоч якась рима?)
+error:
+---
+
+Зараз поглянемо, як минула твоя друга хвилина:
+
+### Помилки
+Якщо ти спробуєш розгорнути число чи якусь іншу дурницю, Ruby скаже тобі про це.
+
+### Масиви
+Масиви – це списки, що зберігають елементи в певній послідовності.
+Ми вже знаємо, як створити масив і отримати елементи з нього.
+
+### Змінні
+Змінні зберігають значення і дають їм імена. Ми використали знак рівності щоб зробити це.
+Як тут: ticket = [14, 37, 18].
+
+### 2/8
+Всього тут 8 розділів. 2 вже позаду! Не дуже й складно, так?
+
+Змінімо напрямок. Я люблю поезію і поклав трохи в змінну poem, тож поглянь. Набери:
+
+ puts poem
diff --git a/translations/ua/try_ruby_190.md b/translations/ua/try_ruby_190.md
new file mode 100644
index 00000000..e5230d53
--- /dev/null
+++ b/translations/ua/try_ruby_190.md
@@ -0,0 +1,15 @@
+---
+lang: UA
+title: На жаль, тобі не подобається така поезія
+answer: (toast){0}
+load: prev
+ok: Чудово
+error: Все одно канапка
+---
+
+Все гаразд. Всі ми різні. Редагуй цей шматочок як хочеш. Замість канапки може бути грушка або що завгодно.
+Спробуй це, щоб побачити новий варіант поеми:
+
+ poem.gsub("канапка", "грушка")
+
+Метод __gsub__ це скорочення global substitute (замінник). Він замінить всі збіги "канапка" на "грушка".
diff --git a/translations/ua/try_ruby_20.md b/translations/ua/try_ruby_20.md
new file mode 100644
index 00000000..2e922dc9
--- /dev/null
+++ b/translations/ua/try_ruby_20.md
@@ -0,0 +1,17 @@
+---
+lang: UA
+title: Використання редактора
+answer: ^\d{1,}$
+ok: Чудово! Ти використовуєш математику. Бачив як з'явилася відповідь?
+error: Введи 2 + 6
+---
+
+Набирай свій код на Ruby у вікні редактора знизу, потім натисни кнопку __Run__ і подивися як це працює!
+
+Наприклад, спробуймо порахувати простий вираз:
+
+ 2 + 6
+
+Результат програми повинен відображатися у вікні вгорі. На наступному рядку буде відображатися, наскільки добре ти впорався.
+
+> Також ти можеш натиснути кнопку __Copy__ щоб скопіювати код з прикладу в редактор.
diff --git a/translations/ua/try_ruby_200.md b/translations/ua/try_ruby_200.md
new file mode 100644
index 00000000..0d6424cd
--- /dev/null
+++ b/translations/ua/try_ruby_200.md
@@ -0,0 +1,12 @@
+---
+lang: UA
+title: Готовий, цілься!
+answer: кур з енем у алапив акпанак яоМ
+load: prev
+ok: Звісно, увесь віршик розвернутий задом наперед
+error:
+---
+
+Питання для тебе: що станеться?
+
+ poem.reverse
diff --git a/translations/ua/try_ruby_210.md b/translations/ua/try_ruby_210.md
new file mode 100644
index 00000000..dea10229
--- /dev/null
+++ b/translations/ua/try_ruby_210.md
@@ -0,0 +1,15 @@
+---
+lang: UA
+title: Занадто багато слів навпаки
+answer: ^\["Тоді я найбільше (.+)
+load: prev
+ok: Так, майже те що треба
+error:
+---
+
+Що ж, вся наша поема стала задом наперед, слово за словом! Але ж я всього лише хотів зробити це для рядків.
+Перемісти перший рядок на кінець, а останній на початок. Тобто навпаки, але не так.
+
+Ось як:
+
+ poem.lines.reverse
diff --git a/translations/ua/try_ruby_220.md b/translations/ua/try_ruby_220.md
new file mode 100644
index 00000000..7f442d9e
--- /dev/null
+++ b/translations/ua/try_ruby_220.md
@@ -0,0 +1,20 @@
+---
+lang: UA
+title: Ще трохи методів в ланцюжок
+answer: Моя канапка випала у мене з рук
+load: prev
+ok: Прекрасно, друже! Метод join взяв масив рядків і з'єднав їх в один рядок'.
+error:
+---
+
+Що ти бачиш тут? Що сталося? Ти набрав __poem.lines.reverse__ і що сталося?
+
+Дві речі. Перше: ти розбив віршик на рядки, за допомогою методу lines, і отримав масив з них.
+
+Потім ти розгорнув цей список задом наперед і розгорнув кожен рядок. От і все!
+
+Додамо ще один метод в кінець:
+
+ puts poem.lines.reverse.join
+
+Комбінування методів таким чином називається __ланцюжком методів__.
diff --git a/translations/ua/try_ruby_230.md b/translations/ua/try_ruby_230.md
new file mode 100644
index 00000000..06c86c5b
--- /dev/null
+++ b/translations/ua/try_ruby_230.md
@@ -0,0 +1,29 @@
+---
+lang: UA
+title: Підсумки #3 Тут і зараз
+answer: \{\}
+class: stretcher chapmark
+load: prev
+ok: Ти створив порожній словник!
+error:
+---
+
+### Знак оклику
+Методи можуть мати знак оклику (як і знак питання) в своєму імені.
+Вони тут для більш зрозумілого пояснення, що вони роблять. Нічого страшного.
+
+### Маніпуляції з рядками
+Пошук і зміна рядків
+
+### Ланцюжки
+Ланцюжки методів дозволяють зробити набагато більше. Розбити віршик, розгорнути його, об'єднати в рядок:
+__poem.lines.reverse.join__
+
+На цьому етапі, ти можеш подивитися всі методи для рядків тут here.
+
+Спробуй декілька з них: poem.downcase або poem.swapcase
+
+## Готовий?
+Коли ви будеш готовий рухатися далі, набери:
+
+ books = {}
diff --git a/translations/ua/try_ruby_240.md b/translations/ua/try_ruby_240.md
new file mode 100644
index 00000000..1e0efeb7
--- /dev/null
+++ b/translations/ua/try_ruby_240.md
@@ -0,0 +1,29 @@
+---
+lang: UA
+title: Порожній словник
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {}
+ok: Yes that's a new review
+error: Use one of splendid, quite_good, mediocre, quite_not_good, abysmal. Don't forget the colon
+---
+
+Ми створили порожній __словник (hash)__. Словник – це як масив, тільки у кожного елемента є ім'я.
+
+>Примітка перекладача: в україномовному співтоваристві слово hash перекладається як словник. Якщо Array перекладають як масив, то Hash – словник, інколи просто >хеш. Назва hash походить від hash-функції, на основі якої працює словник, і яка дозволяє дуже швидко знаходити елемент за ключем (ім'ям). Але щоб використовувати словники, нам це знати не обов'язково.
+
+Ми збираємося записати кілька мініатюрних відгуків в наш новий словник. Ось наша рейтингова система:
+
+- :splendid → витвір мистецтва
+- :quite\_good → так, сподобалося
+- :mediocre → посередньо
+- :quite\_not\_good → загалом погано
+- :abysmal → жах
+
+Щоб оцінити книгу, додай назву в квадратних дужках і постав оцінку після знака дорівнює. Наприклад:
+
+ books["Фарбований Лис"] = :splendid
+
+> Зараз, я вважаю за необхідне сказати, що всі уроки в TryRuby відокремлені один від одного.
+>Тож якщо ти вирішив пофестивалити і зробити дуже багато відгуків, то використовувати їх ти зможеш тільки в цьому уроці.
+>Якщо ж хочеш використати свої відгуки і в наступному уроці, то ти повинен скопіювати їх і вставити.
+>Не турбуйся про це, в кожному уроці є багато запрограмованих речей для тебе щоб гратися.
diff --git a/translations/ua/try_ruby_250.md b/translations/ua/try_ruby_250.md
new file mode 100644
index 00000000..20dcb49d
--- /dev/null
+++ b/translations/ua/try_ruby_250.md
@@ -0,0 +1,29 @@
+---
+lang: UA
+title: Ще кілька простих відгуків
+answer: [3-9]
+load: books = {"Фарбований лис" => :splendid}
+ok: Бачиш, метод length працює з рядками, списками і словниками.
+error:
+---
+
+Продовжуй, заповни хеш відгуками. А якщо хочеш побачити весь список, просто набери: puts books
+
+Знову ж, можливі оцінки: :splendid, :quite_good, :mediocre, :quite_not_good і :abysmal.
+
+Ці оцінки не є рядками. Коли ти ставиш двокрапку перед простим словом, ти отримуєш __символ (Symbol)__. Символ є дешевшим за рядок (з точки зору комп'ютерної пам'яті). Тож якщо використовуєш слово знову і знову в своїй програмі, використовуй символ. Замість того, щоб мати тисячі копій цього слова в пам'яті, Ruby буде зберігати символ тільки __один раз__.
+
+Що важливіше, символ каже нам, що це не просто якесь слово, а таке, що має значення у нашій програмі.
+
+>Примітка перекладача: в англійській мові є два слова: Symbol і Char, і обидва перекладаються українською як "символ".
+>В контексті Ruby Symbol правильно було б перекласти як "ідентифікатор", але використовують слово символ.
+>Тому якщо в контексті Ruby ти почуєш "символ", то швидше за все це Symbol, ідентифікатор, який записується як :good, і є оптимізованим для пам'яті рядком.
+
+Введи ще 2 відгуки, використовуй books.length, щоб дізнатися, скільки відгуків в словнику:
+
+ books["Сутінки. Сага."] = :abysmal
+ books["Фарбований Лис"] = :mediocre
+
+ puts books
+
+ puts books.length
diff --git a/translations/ua/try_ruby_260.md b/translations/ua/try_ruby_260.md
new file mode 100644
index 00000000..01b39d8c
--- /dev/null
+++ b/translations/ua/try_ruby_260.md
@@ -0,0 +1,19 @@
+---
+lang: UA
+title: Стоп, невже я засудив Фарбованого Лиса?)
+answer: ^(splendid|quite_good|mediocre|quite_not_good|abysmal)$
+load: books = {"Фарбований Лис" => :splendid, "Сутінки. Сага." => :abysmal, "Хоббіт" => :mediocre}
+ok: Мені сподобалося
+error:
+---
+
+Однією з чудесних особливостей Ruby є те, що імена часто використовуються повторно, тож менша кількість імен, які тобі треба запам'ятати.
+
+Раніше ми витягли елементи з масиву за допомогою числа:
+__puts ticket[1]__.
+
+Для словника це працює однаково, але ми використовуємо не число, щоб отримати елемент, а ім'я (ключ).
+
+Отже, якщо хочеш подивитися один зі своїх старих відгуків, знову введи назву в квадратних дужках. Але не пиши знак дорівнює. Ось так:
+
+ puts books["Фарбований Лис"]
diff --git a/translations/ua/try_ruby_270.md b/translations/ua/try_ruby_270.md
new file mode 100644
index 00000000..a48fea54
--- /dev/null
+++ b/translations/ua/try_ruby_270.md
@@ -0,0 +1,19 @@
+---
+lang: UA
+title: Словники це пари
+answer: ^\[".*"\]
+load: prev
+ok: Ти знайшов ключі
+error:
+---
+
+Пам'ятай, що словники не зберігають елементи в послідовності. Це не їхнє завдання.
+Вони створюють пару з двох елементів: __ключ (key)__ і __значення (value)__
+
+У твоїх відгуках, назва книги це ключ, а оцінка – значення.
+
+Якщо ж хочеш побачити всі назви книг які ти оцінив, введи:
+
+ books.keys
+
+Також спробуй використати .values замість .keys.
diff --git a/translations/ua/try_ruby_280.md b/translations/ua/try_ruby_280.md
new file mode 100644
index 00000000..b5f15898
--- /dev/null
+++ b/translations/ua/try_ruby_280.md
@@ -0,0 +1,26 @@
+---
+lang: UA
+title: Ти суворий критик?
+answer: :mediocre|mediocre:
+load: books = {"Фарбований Лис" => :splendid, "Сутінки. Сага." => :abysmal, "Хоббіт" => :mediocre, "Голодні ігри" => :mediocre}
+ok: Ти створив свій власний рейтинг книжок
+error:
+---
+
+Ти пишеш суворі, несправедливі відгуки? Порахуємо їх в новому словнику __ratings__:
+
+Тепер ми можемо їх порахувати. Набери:Then, okay, now let's count up your reviews. Just stay with me. Type:
+
+ ratings = Hash.new {0}
+
+ books.values.each { |rate|
+ ratings[rate] += 1
+ }
+
+ puts ratings
+
+Прямою лінією в коді є символ pipe, ймовірно, розташований зверху клавіші Enter на твоїй клавіатурі.
+
+Цей рядок += 1 означає: збільшити значення на одиницю.
+
+Не турбуйся, якщо не розумієш всього, що тут відбувається. Все буде ясно пізніше.
diff --git a/translations/ua/try_ruby_290.md b/translations/ua/try_ruby_290.md
new file mode 100644
index 00000000..23ed8df2
--- /dev/null
+++ b/translations/ua/try_ruby_290.md
@@ -0,0 +1,16 @@
+---
+lang: UA
+title: Підрахунок
+answer: .+
+ok: Будьмо!
+error:
+---
+
+Одна з приголомшливих речей, яку ми щойно використали це __блок (block)__.
+Ми вивчимо їх докладніше на цьому й наступному уроці. Та загалом блок – це трохи коду на Ruby, оточеного фігурними дужками.
+
+Спробуй створити інший блок:
+
+ 5.times{ print "Будьмо!" }
+
+Блоки завжди прив'язані до методів. Як метод __times__, який бере блок і запускає код знову і знову. (В нашому прикладі: п'ять разів.)
diff --git a/translations/ua/try_ruby_30.md b/translations/ua/try_ruby_30.md
new file mode 100644
index 00000000..f2fc2d0b
--- /dev/null
+++ b/translations/ua/try_ruby_30.md
@@ -0,0 +1,13 @@
+---
+lang: UA
+title: Числа і математика
+answer: ^[0-9\.,-]{1,}$
+ok: Добре
+error:
+---
+
+Ruby розуміє числа і математичні операції. Спробуй дещо інше, наприклад:
+
+ 4 * 10
+ 5 - 12
+ 30 / 4
diff --git a/translations/ua/try_ruby_300.md b/translations/ua/try_ruby_300.md
new file mode 100644
index 00000000..8de74321
--- /dev/null
+++ b/translations/ua/try_ruby_300.md
@@ -0,0 +1,22 @@
+---
+lang: UA
+title: Є хвилинка?
+answer: [0-9]$
+ok: Дуже вчасно!
+error: Виконай від 0 до 9
+---
+
+Як ми бачили в першому прикладі з блоком (при підрахунку оцінок), ми можемо передати змінну блокові.
+Значення, яке __вставляється__ визначається методом, який запускає блок.
+
+Змінні, які __приймає__ блок, поміщаються в ім'я змінної на початку блоку, між двома символами pipe: |
+
+Спробуймо це за допомогою цього блоку:
+
+ 5.times {|time|
+ puts time
+ }
+
+Тут метод __.times__ посилає значення змінній __|time|__. Але майте на увазі, що ця змінна відома тільки всередині блоку.
+
+> Ти помітив, що можеш розділити код на декілька рядків? Так їх потім простіше читати.
diff --git a/translations/ua/try_ruby_310.md b/translations/ua/try_ruby_310.md
new file mode 100644
index 00000000..1a5bf387
--- /dev/null
+++ b/translations/ua/try_ruby_310.md
@@ -0,0 +1,25 @@
+---
+lang: UA
+title: Підводячи підсумки #4
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Цей урок був дещо довшим і ти, ймовірно, витратив на три хвилини більше на його вивчення:
+
+### Словники
+Найпростіший приклад словника: __{}__
+
+
+### Символи
+Крихітні але ефективні кодові слова з двокрапкою, наприклад: __:splendid__
+
+### Блоки
+Шматочки коду, які можна прив'язати до багатьох методів Ruby.
+Ось код, який ми використовували щоб створити таблицю оцінок:
+__books.values.each { |rate| ratings[rate] += 1 }__
+
+### Далі
+На наступних уроках ми ще глибше зануримося в методи.
diff --git a/translations/ua/try_ruby_320.md b/translations/ua/try_ruby_320.md
new file mode 100644
index 00000000..31db4914
--- /dev/null
+++ b/translations/ua/try_ruby_320.md
@@ -0,0 +1,33 @@
+---
+lang: UA
+title: Бути чи не бути
+answer:
+load: poem = "Моя канапка випала у мене з рук. \nІ моя канапка полетіла на Місяць. \nБла, бла, бла\n"
+ok:
+error:
+---
+
+Одна маленька деталь, яку ми не обговорили – це аргументи методів.
+Пам'ятаєш, як ми змінили вміст поеми, використовуючи цей метод:
+__poem.gsub("канапка", "грушка")__
+
+Метод gsub вимагає два аргументи, які ми передали як рядки в круглих дужках.
+__Аргументи кажуть методові, що саме йому робити.__
+
+### Круглі дужки
+Насправді, в більшості випадків Ruby не проти, якщо ти пропустиш дужки. Таким чином, це теж спрацює:
+__poem.gsub "канапка", "грушка"__
+
+Ми також вже використовували й інший метод з параметром. Багато разів. Але це не так очевидно:
+
+ puts "Hello"
+ puts("Hello")
+
+Так, __puts__ це теж метод. Хочеш писати puts з круглими дужками або без – для Ruby байдуже,
+але варіант без дужок простіше читати і трохи економить час набору коду!
+
+> Висновок полягає в тому, що ти можеш робити все, що завгодно з круглими дужками, поки код читається красиво.
+
+### Тож бути чи не (бути)?
+
+Хочеш ще трохи Шекспіра? Читай далі.
diff --git a/translations/ua/try_ruby_330.md b/translations/ua/try_ruby_330.md
new file mode 100644
index 00000000..5fe36527
--- /dev/null
+++ b/translations/ua/try_ruby_330.md
@@ -0,0 +1,29 @@
+---
+lang: UA
+title: Приборкання норовливої
+answer: ^tame
+ok: Добре добре!
+error:
+---
+
+Ти вже знаєш, як використовувати Ruby. Я маю на увазі, ти вже збагнув основи.
+Далі тобі потрібно вивчити більше методів і спробувати більш складні блоки.
+Але ми ще дещо не обговорили. Створення власних методів. Займімося цим.
+
+У той час, як Ruby має вбудовані методи (такі, як puts, sort, times),
+ти вже можеш писати свої власні методи. Навіщо? На це є дві причини:
+
+### Зробити свою програму коротшою
+Якщо ти використовуєш один і той же код більш ніж в одному місці, тобі буде набагато простіше,
+якщо виділити його в новий метод. Це зробить код коротшим.
+
+### Зробити свій код кращим для читання
+Припустімо, що твоя програма повинна робити багато різних речей.
+Ти __можеш__ записати весь код в один довгий текст. Але було б дуже складно прочитати і зрозуміти цей код пізніше.
+
+Замість цього ти маєш розбити свій код на методи і дати кожному з них зрозуміле ім'я. Подякуєш собі пізніше.
+
+Отже, як ми визначаємо метод? Ось так:
+
+ def tame( number_of_shrews )
+ end
diff --git a/translations/ua/try_ruby_340.md b/translations/ua/try_ruby_340.md
new file mode 100644
index 00000000..a44b37e8
--- /dev/null
+++ b/translations/ua/try_ruby_340.md
@@ -0,0 +1,21 @@
+---
+lang: UA
+title: В Ruby, Def Leppard означає: визначити метод Leppard
+answer: ^tame
+ok: Tame is not lame
+error:
+---
+
+В Ruby, Def Leppard означає: визначити метод Leppard
+Добре, ти це зробив. Ти створив свій власний метод. Почав з def, за яким іде ім'я методу. І список аргументів, які будуть потрібні методові. Це не дуже страшно і небезпечно! Все, що нам потрібно зробити, це заповнити його кодом на Ruby і закінчити з end.
+
+Ось код:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ end
+
+> __P.S.__
+> Якщо ти не знаєш цю назву, Def Leppard це відома Британська рок-група Def Leppard
diff --git a/translations/ua/try_ruby_350.md b/translations/ua/try_ruby_350.md
new file mode 100644
index 00000000..1489e751
--- /dev/null
+++ b/translations/ua/try_ruby_350.md
@@ -0,0 +1,12 @@
+---
+lang: UA
+title: Достиглий плід твоєї праці
+answer: ^Приборкав норовливу
+ok: Так їм!
+error:
+load: def tame(number_of_shrews);number_of_shrews.times{puts "Приборкав норовливу"};end;
+---
+
+Новий метод народжено. Спробуємо його використати:
+
+ tame 5
diff --git a/translations/ua/try_ruby_360.md b/translations/ua/try_ruby_360.md
new file mode 100644
index 00000000..34bffd4f
--- /dev/null
+++ b/translations/ua/try_ruby_360.md
@@ -0,0 +1,28 @@
+---
+lang: UA
+title: Давай і бери
+answer: \d+
+ok: Так
+error:
+---
+
+Більшість методів не тільки вимагають введення деяких параметрів, але й __повернуть щось назад__.
+Я трохи змінив наш метод, щоб він повернув нам значення. Спробуй:
+
+ def tame( number_of_shrews )
+ number_of_shrews.times {
+ puts "Tamed a shrew"
+ }
+ return number_of_shrews
+ end
+
+ puts tame(3)
+
+### Результат
+А оскільки ти вже настільки просунутий і компетентний, ще одна порада: можеш опустити слово __return__ з останнього рядка методу.
+Ruby автоматично поверне останнє значення, яке використовувалося в методі.
+
+Так ми можемо змінити останній рядок просто на: __number\_of\_shrews__.
+
+Але оскільки метод __.times__ також повертає _number\_of\_shrews_ ми можемо стерти останній рядок цілком.
+Так що наш новий метод робить те, що ми від нього хотіли!
diff --git a/translations/ua/try_ruby_370.md b/translations/ua/try_ruby_370.md
new file mode 100644
index 00000000..7256f406
--- /dev/null
+++ b/translations/ua/try_ruby_370.md
@@ -0,0 +1,26 @@
+---
+lang: UA
+title: Привіт, хто тут? Підсумки #5 вітають тебе!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Відмінно, відмінно, відмінно!
+Супер, супер, сууууупер!
+
+Ось що ми ще дізналися:
+
+### Методи
+Методи можуть бути визначені за допомогою __def__ та мають ім'я.
+Методи роблять нашу програму коротшою і простішою для читання.
+
+### Параметри
+Методи можуть мати параметри.
+
+### Значення, що повертаються
+Методи (майже) завжди повертають якесь значення.
+
+## А зараз
+Бути чи не (бути) не є для тебе більше великим питанням. Ти готовий почитати ще трохи Шекспіра?
diff --git a/translations/ua/try_ruby_380.md b/translations/ua/try_ruby_380.md
new file mode 100644
index 00000000..d728624a
--- /dev/null
+++ b/translations/ua/try_ruby_380.md
@@ -0,0 +1,23 @@
+---
+lang: UA
+title: Світ – наша мушля
+answer: ^\{\"William
+ok: Добре. Але важко читати.
+error:
+load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end;
+---
+
+Досі ти запускав програми, які використовують тільки те, що ти набирав сам. Це класно, але зараз епоха інтернету, а значить можна використовувати ці дані.
+
+Багато, багато веб-сайтів в мережі, а значить у всіх них можна запросити інформацію. Наприклад: ця посилання дасть вам всі останні Новини з Гугла по тематиці Ruby.
+
+Ваш бравзер, можливо, відобразить це красиво. Але якщо поглянеш на сирцевий код (натисни: ctrl-U), то побачиш складний текст в форматі __rss__.
+
+### Формати
+Всього існує дуже багато форматів зі складними назвами в мережі, такі як: html, xml та json. Ага, навіть цей веб-сайт використовує декілька.
+
+Я підготував для тебе метод, який вибере список повних робіт Вільяма Шекспіра з Інтернету. (Не хвилюйся, насправді все це скачується з того ж сервера, на якому розміщений мій сайт, тому ми нікого не турбуємо.)
+
+Отримай дані за допомогою:
+
+ get_shakey
diff --git a/translations/ua/try_ruby_390.md b/translations/ua/try_ruby_390.md
new file mode 100644
index 00000000..e3d3099b
--- /dev/null
+++ b/translations/ua/try_ruby_390.md
@@ -0,0 +1,48 @@
+---
+lang: UA
+title: Шляхетні родичі
+answer: ^The Two Noble Kinsmen$
+ok: Так значно краще
+error:
+load: prev
+---
+
+Отже, тепер у нас є список п'єс з Інтернету. Список був в форматі json. На щастя для нас Ruby люб'язно надає метод перетворення даних json на словник Ruby. Метод _get\_shakey_ зробив це за нас.
+
+Але оскільки структура json-даних зберігається в словнику, її трохи важко читати. Тож ми напишемо метод для показу п'єс.
+
+Якщо ти уважно вивчиш список п'єс, то побачиш, що він має наче гніздову структуру.
+(Це досить поширено в даних, які ти отримуєш з Інтернету.) Виглядає це так:
+
+
+
"William Shakespeare"
+
+
"1"
+
+
"title": "The Two Gentlemen of Verona"
+
"finished": 1591
+
+
+
"2"
+
+
"title": "The Taming of the Shrew"
+
"finished": 1591
+
+
+
...
+
+
+
+
+Щоб перерахувати п'єси, нам спочатку потрібно отримати доступ до верхнього елементу словника "Вільям Шекспір" по його назві.
+Потім ми повинні __iterate ("крокувати")__ по кожному елементу за ним.
+
+Ruby має метод для ітерації. Він називається __each__. Ми бачили це раніше, коли створювали нашу систему рейтингу книжок.
+
+Все, що повертає метод __each__, передається блокові:
+
+ s = get_shakey
+
+ s["William Shakespeare"].each { |key, val|
+ puts val["title"]
+ }
diff --git a/translations/ua/try_ruby_40.md b/translations/ua/try_ruby_40.md
new file mode 100644
index 00000000..9d4d0d2b
--- /dev/null
+++ b/translations/ua/try_ruby_40.md
@@ -0,0 +1,27 @@
+---
+lang: UA
+title: Виводимо результат інакше
+answer: ^[0-9\.,-]{1,}$
+ok: Чудово!
+error:
+---
+
+Помітив, що коли ти набираєш більше одного виразу, виводиться результат тільки останнього.
+Що ж відбувається?
+
+> Для більш зручного використання цього сайту, я наказав Ruby копіювати результат нашої програми в поле виведення вгорі.
+> Тож коли ти набираєш вираз, результат виводиться на екран.
+> __Але тільки останній результат.__ І тільки якщо досі нічого не відображалося.
+
+Тож коли ти ввів кілька виразів, Ruby показав результат тільки останнього виразу.
+
+Звичайно, Вам хочеться побачити результат всіх! Додай __puts__ перед кожним виразом (розділяючи пробілом).
+Puts означає: *'вивести щось на екран'*.
+
+Спробуй:
+
+ puts 4 * 10
+ puts 5 - 12
+ puts 30 / 4
+
+А тепер видали puts з останньої формули і подивись, що станеться.
diff --git a/translations/ua/try_ruby_400.md b/translations/ua/try_ruby_400.md
new file mode 100644
index 00000000..0b903a51
--- /dev/null
+++ b/translations/ua/try_ruby_400.md
@@ -0,0 +1,35 @@
+---
+lang: UA
+title: Всі разом
+answer: ^4$
+ok: Так, Шекспір написав 4 п'єси' в 1591
+error: Відповідь для року 1591 має бути 4
+load: prev
+---
+
+Тепер припустімо, що ми хочемо знати імена і кількість п'єс, написаних Шекспіром протягом певного року.
+
+Ruby дозволяє нам __виводити__ значення зі словника.
+Метод select використовує блок, який дозволяє нам визначити, що вибрати і повернути знайдене.
+
+Потім ми можемо використовувати результати, які повертаються через __select__ в методі __each__, як і раніше, просто додаючи його після блоку select. Це ще один приклад ланцюжка методів, який ми бачили раніше, коли розгортали віршик задом наперед.
+
+Я підготував для тебе метод __count\_plays__. Побачимо, чи зможеш ти порахувати кількість п'єс, написаних Шекспіром в __1591__:
+
+ def count_plays(year)
+ s = get_shakey
+
+ s["William Shakespeare"]
+ .select { |k, v|
+ v["finished"] == year
+ }.each { |key, val|
+ puts val["title"]
+ }.count
+ end
+
+ puts count_plays(0)
+
+Ти помітив, що я додав метод count в самому кінці кожного методу. Так ми отримаємо значення, що повертається методу __count\_plays__.
+
+Є й інший спосіб вибудовування ланцюжка. Бачиш самотній рядок __s = get_shakey__.
+Ти можеш додати __["William Shakespeare"].select{ |k, v|__ в кінець get_shakey (але не обов'язково тут).
diff --git a/translations/ua/try_ruby_410.md b/translations/ua/try_ruby_410.md
new file mode 100644
index 00000000..cec2956a
--- /dev/null
+++ b/translations/ua/try_ruby_410.md
@@ -0,0 +1,36 @@
+---
+lang: UA
+title: Все добре, що добре закінчується
+answer: All's Well That Ends Well
+ok: True
+error: Використовуй 1605 як другий параметр
+load: prev
+---
+
+Добре, ми отримали деякі дані з Інтернету, ми вибрали те, що хотіли, і роздрукували це.
+Що ще поліпшити? Ми могли б надрукувати результати трохи гарніше. Як додати рік і вирівняти назви і роки.
+
+Це означає потрібно друк декількох значень на одному рядку. Ruby має зручний спосіб зробити це.
+Це схоже на друк рядка типу: __puts "Привіт, мене звуть Андрій"__. Але замість літерного значення __Андрій__ ми використовуємо значення змінної.
+
+Спочатку заміни __Андрій__ на __#{}__. Якщо Ruby бачить символ #, а за ним символ {то шукає змінні між цими дужками}.
+Тож ми можемо використати: __"Привіт, мене звуть #{name}"__.
+
+Змінимо наш код трохи:
+
+ def print_plays(year_from, year_to)
+ get_shakey["William Shakespeare"]
+ .select { |k, v|
+ year_from <= v["finished"] &&
+ year_to >= v["finished"]
+ }.each { |k, v|
+ puts "#{v["title"].ljust(30)} #{v["finished"]}"
+ }
+ end
+ print_plays(1600, 1605)
+
+Я додав __.ljust(30)__ до заголовку. В такому випадку заголовок має відступ мінімум 30 символів. Так рік виглядає охайніше :)
+
+Подивися, чи зміниться вихід програми так, щоб вона показувала такі п'єси: __1600 -> As You Like It__
+
+__Все добре, що добре занчується?__ Гей, ми ще не закінчили, але кінець вже близько!
diff --git a/translations/ua/try_ruby_420.md b/translations/ua/try_ruby_420.md
new file mode 100644
index 00000000..5887853d
--- /dev/null
+++ b/translations/ua/try_ruby_420.md
@@ -0,0 +1,34 @@
+---
+lang: UA
+title: Якби я знав, як прийняти рішення
+answer:
+ok:
+error:
+---
+
+Робити вибір в житті буває важко, але не в Ruby.
+Тут є зручні способи приймати рішення.
+
+ if 1 < 2
+ puts "Це правда: 1 менше 2"
+ end
+
+Ключове слово __if (якщо)__. If можна ставити і до, і після методу, як тут:
+
+ puts "Це правда: 1 менше 2" if 1 < 2
+
+__If__ це метод, який вимагає 1 параметра. Цим параметром може бути будь-який вираз, який ти хочеш перевірити.
+Результат виразу може бути __true (правда)__ або __false (брехня)__. Ось кілька прикладів:
+
+ 5 <= 10 # => true
+ 'abc' == 'def' # => false
+ true # => true
+ 123456 # => true
+ 0 # => true
+ nil # => false
+ 'xyz'.empty? # => false
+ 'a' > 5 # => error:
+ # comparison of String with
+ # Numeric failed
+
+Вираз if може мати багато видів: порівнювати значення (1 < 2), змінні (a < 1) і повертатися значення методів ('xyz'.empty?).
diff --git a/translations/ua/try_ruby_430.md b/translations/ua/try_ruby_430.md
new file mode 100644
index 00000000..1d4e94c4
--- /dev/null
+++ b/translations/ua/try_ruby_430.md
@@ -0,0 +1,30 @@
+---
+lang: UA
+title: І на останок
+answer: не дорівнює 100$
+ok: Це краще
+error: Так не може бути
+---
+
+Бачиш подвійне дорівнює __'abc' == 'def'__?
+
+Це __==__ означає __перевірка на рівність__. Одиночне дорівнює використовується для __надання значення змінній__.
+
+Щоб трохи тебе заплутати: можеш використати присвоювання як аргумент методу if:
+
+ a = 0
+
+ if a = 100
+ puts "Вираз вірний, але а зараз дорівнює: #{a}"
+ else
+ puts "#{a} не дорівнює 100"
+ end
+
+Поміняй = на == і подивися, що станеться.
+
+Я гарантую, що ти будеш часто забувати поставити подвійне дорівнює, я теж забуваю інколи.
+
+### Інакше (else)
+У коді я використав else, що виконується у разі якщо __if тестовий_вираз__ обчислюється як брехня (false).
+
+> Більше інформації ти можеш отримати тут.
diff --git a/translations/ua/try_ruby_440.md b/translations/ua/try_ruby_440.md
new file mode 100644
index 00000000..17c6c5af
--- /dev/null
+++ b/translations/ua/try_ruby_440.md
@@ -0,0 +1,26 @@
+---
+lang: UA
+title: Я голодний
+answer: ^Я не голодний
+ok: Так
+error: Я не голодний о 10 ранку!
+---
+
+Це прекрасно, це прості речі, але пам'ятай, що ти __не знав Ruby__ всього 15 хвилин тому!
+
+Тож тепер об'єднаємо всі наші отримані навички: визначимо 2 методи:
+
+ def hungry?(time_of_day_in_hours)
+ puts "Я голодний"
+ true
+ end
+
+ def eat_an(what)
+ puts "Я їм #{what}\n"
+ end
+
+ eat_an 'яблуко' if hungry?(14)
+
+ eat_an 'яблуко' if hungry?(10)
+
+ Спробуй змінити метод __hungry?__ так, щоб він друкував __"Я не голодний"__ і повертав false коли час буде менше 12-ї.
diff --git a/translations/ua/try_ruby_450.md b/translations/ua/try_ruby_450.md
new file mode 100644
index 00000000..a55cf99a
--- /dev/null
+++ b/translations/ua/try_ruby_450.md
@@ -0,0 +1,32 @@
+---
+lang: UA
+title: Підсумки #6 Ми пройшли довгий шлях
+answer: \{\}
+class: stretcher chapmark
+ok: Це порожній словник
+error:
+---
+
+Ти 6-го рівня Ruby клірик. Тобто відмінна робота! Підіб'ємо підсумки:
+
+
+### Дані
+Ти завантажив трохи даних з інтернету, пройшовся по них і вибрав значення.
+
+### Iterating (крокування)
+Ти пройшов по всіх елементах словника, а також створив ланцюжок методів.
+
+### Гарний друк
+І якщо цього недостатньо, то ти форматував і вивів кілька даних щоб їх було зручно прочитати людям.
+__Ти зробив справжню програму!__
+
+### Якщо (If)
+Ти навчився використовувати оператори розгалуження __if__ та __else__
+
+## Тож
+Що може бути далі? Що ти, можливо, повинен дізнатися зараз? Ха, це найкраща частина.
+Ти пройшов довгий шлях, тож пора вивчити класи. Ще два коротких уроки, і все готово.
+
+Раніше ми створювали словник так:
+
+ Hash.new
diff --git a/translations/ua/try_ruby_460.md b/translations/ua/try_ruby_460.md
new file mode 100644
index 00000000..517fbb58
--- /dev/null
+++ b/translations/ua/try_ruby_460.md
@@ -0,0 +1,27 @@
+---
+lang: UA
+title: Не шкільний клас, а робітничий
+answer:
+ok:
+error:
+---
+
+Як бачиш порожні фігурні дужки {} це скорочення для Hash.new. Метод new використовується, щоб створювати об'єкти певного класу. Сприймай "class" в сенсі "робітничий клас" — якась особлива група, що робить одну роботу і в однакових футболках.
+Для чого використовуються класи?
+
+
+### BlurbalizerTM
+Ти маєш чудову ідею для нової програми. Це буде чергова платформа для обміну повідомленнями. Ти хочеш додаток, де люди будуть обмінюватися короткими повідомленнями. Ти називаєш ці повідомлення BlurbsTM. BlurbTM має максимальну довжину 40 символів. До роботи.
+
+### Де почати?
+Ти можеш зберегти записи BlurbsTM в json-файлі, так?
+Але як би ти відстежував зміст запису і час публікації? І коли ти завантажиш файл, як він буде виглядати в Ruby?
+Це буде словник? Або масив? Або масив масивів? Або щось інше?
+
+### Клас
+Я впевнений, що ти хотів би використати клас. Ти вже знаєш деякі з них: словник (Hash), масив (Array), рядок (String).
+
+Створімо новий клас (нічого не повертаючи):
+
+ class Blurb
+ end
diff --git a/translations/ua/try_ruby_470.md b/translations/ua/try_ruby_470.md
new file mode 100644
index 00000000..0efce68d
--- /dev/null
+++ b/translations/ua/try_ruby_470.md
@@ -0,0 +1,18 @@
+---
+lang: UA
+title: Те з чого робляться додатки
+answer:
+ok:
+error:
+---
+
+Ми відкрили новий BlurbTM class. клас. Чим наповнений ваш блог?
+Так, змістом! Також часом, коли BlurbTM був опублікований. І настроєм.
+
+Добре, тож у нас є перший рядок класу, ось решта:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+ end
+
+Імена класів завжди починаються з великої літери (і знову ж, нічого не повертається).
diff --git a/translations/ua/try_ruby_480.md b/translations/ua/try_ruby_480.md
new file mode 100644
index 00000000..529cf9b5
--- /dev/null
+++ b/translations/ua/try_ruby_480.md
@@ -0,0 +1,23 @@
+---
+lang: UA
+title: Аксесори це кінцівки
+answer: Blurb:
+ok: Мій перший Blurb
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;end
+---
+
+Чудово. У тебе є новий BlurbTM клас.
+
+У визначенні класу ти використав метод, який називається attr\_accessor (аксесор).
+Взагалі є багато атрибутів класу, які так чи інакше його змінюють. Атрибути – це всього лише змінні пов'язані з класом.
+
+Думайте так. Клас – це людина. Це людська істота у формі зірки.
+А атрибути – це її кінцівки, різні частини збираються в тіло, а інші люди можуть взяти цю людину за руку і привітатися.
+
+### Зараз
+Щоб створити BlurbTM і наповнити даними напиши:
+
+ blurb1 = Blurb.new
+ puts blurb1
+ blurb1.content = "Today Mount Hood Was Stolen!"
diff --git a/translations/ua/try_ruby_490.md b/translations/ua/try_ruby_490.md
new file mode 100644
index 00000000..b551d276
--- /dev/null
+++ b/translations/ua/try_ruby_490.md
@@ -0,0 +1,15 @@
+---
+lang: UA
+title: Об'єкт, цей акуратний маленький пакет
+answer: Blurb:
+ok: Blurb оновлено
+error:
+load: prev;blurb1=Blurb.new;blurb1.content="Today Mount Hood Was Stolen!"
+---
+
+А тепер змінимо атрибути нашого BlurbTM:
+
+ blurb1.time = Time.now
+ blurb1.mood = :sick
+
+ puts blurb1
diff --git a/translations/ua/try_ruby_50.md b/translations/ua/try_ruby_50.md
new file mode 100644
index 00000000..f8ac4a0d
--- /dev/null
+++ b/translations/ua/try_ruby_50.md
@@ -0,0 +1,13 @@
+---
+lang: UA
+title: Назви своє ім'я!
+answer: [a-zA-Zа-яА-Я]{1,1}
+ok: Чудово, ти створив рядок з літер свого імені
+error:
+---
+
+Звісно комп'ютери зручні для розрахунків. Але спробуймо щось іще. Хочеш вивести своє ім'я навпаки?
+
+Для початку набери своє ім'я в лапках як тут:
+
+ "Андрій"
diff --git a/translations/ua/try_ruby_500.md b/translations/ua/try_ruby_500.md
new file mode 100644
index 00000000..421edbe7
--- /dev/null
+++ b/translations/ua/try_ruby_500.md
@@ -0,0 +1,30 @@
+---
+lang: UA
+title: Прискорюємося
+answer: ^\d{4}
+ok: Відмічено
+error:
+---
+
+Круто, новий додаток просто блискучий. А як щодо спростити?
+Ти не захочеш ставити час свого BlurbTM кожного разу коли постиш, чи не так?
+
+Ти просто хочеш записати свої контент і настрій?
+
+Додамо метод ініціалізації __initialize__ в наш клас.
+Цей метод буде завжди викликатися, коли ти створюєш новий BlurbTM.
+Також ми можемо встановити максимальну довжину BlurbTM контенту в 40 символів.
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+ end
+
+ Blurb.new(:sick).time
+
+(Цей параметр __content=""__ використовується, щоб нам було відомо, що контент це рядок і ніякий інший параметр не може ініціювати його.)
diff --git a/translations/ua/try_ruby_510.md b/translations/ua/try_ruby_510.md
new file mode 100644
index 00000000..cc5f415f
--- /dev/null
+++ b/translations/ua/try_ruby_510.md
@@ -0,0 +1,27 @@
+---
+lang: UA
+title: Ти навчив свій додаток відкидати непотрібні речі
+answer: Blurb:
+ok: Blurb додано
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!")
+---
+
+Ти помітив, як ми використовуємо символ собачки "всередині класу"? (@time).
+
+__Ззовні__ класу ми використовуємо аксесор:
+
+> __blurb.time = Time.now__
+
+але __всередині__ ми використовуємо змінні об'єкта:
+
+> __@time = Time.now__
+
+Це одне і те саме, але може використовуватися в різних місцях твоєї програми.
+
+### Створімо інший BlurbTM
+Коли інший BlurbTM створений, метод ініціалізації використовується для перевірки будь-якого аргументи до методу new.
+
+Ой, потрібно ще 2 аргументи:
+
+ blurb2 = Blurb.new :confused, "Не можу повірити, Мавнт-Худ вкрали!"
diff --git a/translations/ua/try_ruby_520.md b/translations/ua/try_ruby_520.md
new file mode 100644
index 00000000..9a7cdd20
--- /dev/null
+++ b/translations/ua/try_ruby_520.md
@@ -0,0 +1,27 @@
+---
+lang: UA
+title: А жирафа на місці Підсумки #7
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: prev;blurb2=Blurb.new :confused, "I can not believe Mt. Hood was stolen!"
+---
+
+Ага, ти тут. І все ще вчишся.
+Ми як і раніше будемо робити твій додаток реальним, але поки що погляньмо на результати, гаразд?
+
+
+### Класи
+Все в Ruby – це об'єкти. Класи пояснюють об'єкти, як певний об'єкт працює.
+Наприклад, ти створив кілька BlurbTM об'єктів, а ці об'єкти поводяться так само як будь-який об'єкт класу Blurb.
+Іншими словами: ти називаєш їх Blurb об'єктами. Ти можеш використовувати класи щоб (начебто) моделювати реальне життя.
+
+### Аксесори
+Аксесори – це змінні, пов'язані з класом, але використовуються ззовні об'єкта.
+
+(blurb2.time = Time.now)
+
+### Змінні об'єкта
+Це те ж саме, що й аксесори, але вони використовуються __всередині__ об'єкта.
+(@time = Time.now)
diff --git a/translations/ua/try_ruby_530.md b/translations/ua/try_ruby_530.md
new file mode 100644
index 00000000..b7dbc626
--- /dev/null
+++ b/translations/ua/try_ruby_530.md
@@ -0,0 +1,44 @@
+---
+lang: UA
+title: Твій власний терен
+answer: Blurbalizer:
+ok: Додаток створено
+error:
+load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end
+---
+
+Гаразд, закругляймося, хлопче. Ось останній розділ епічної історії пізнання Try Ruby!
+Тепер, коли у тебе є розуміння, як все це працює, як ти збираєшся його використовувати?
+Ти чудова людина (один з моїх улюбленців), але тобі потрібне керівництво.
+
+### Закінчимо наш додаток
+У нас є записи додатків, але може бути відсутня програма.
+Як і раніше потрібно ім'я, місце, де можна зберігати всі BlurbsTM і впорядкувати їх.
+
+Ми збираємося використовувати інший клас. Я дав весь код для нового класу за раз. Тільки __не поспішай, вивчи його__.
+Я не поспішаю, я буду чекати тебе на наступному уроці.
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = [] # Порожній масив
+ # для зберігання Blurbs
+ end
+
+ def add_a_blurb(mood, content)
+ # The << means add to the end of the array
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbify: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp = Blurbalizer.new "The Big Blurb"
diff --git a/translations/ua/try_ruby_540.md b/translations/ua/try_ruby_540.md
new file mode 100644
index 00000000..8971a89c
--- /dev/null
+++ b/translations/ua/try_ruby_540.md
@@ -0,0 +1,21 @@
+---
+lang: UA
+title: То про що цей Blurb?
+answer: Today
+ok: Додай blurbs
+error:
+load: prev;class Blurbalizer;attr_reader :title;def initialize(title);@title=title;@blurbs=[];end;def add_a_blurb(mood, content);@blurbs << Blurb.new(mood, content);@blurbs.each {|t| t.time -= 73};end;def show_timeline;puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.time}.reverse.each { |t| puts "#{t.content.ljust(40)} #{t.time}"};end;end;myapp = Blurbalizer.new "The Big Blurb";myapp.add_a_blurb :sick,"Today Mount Hood Was Stolen!";myapp.add_a_blurb :confused,"I can not believe Mt. Hood was stolen!";myapp.add_a_blurb :dazed,"I am speechless!";myapp.add_a_blurb :mad,"It was stolen by a giraffe !!";myapp.add_a_blurb :sad,"I Left my Hoodie on the Mountain!";myapp.add_a_blurb :mad,"I am never going back to that mountain."
+---
+
+І ось результат. Ти зрозумів, що робить код у класі BlurbalizerTM?
+
+> У BlurbalizerTM є 2 методи (add\_a\_blurb та show\_timeline). Можеш використовувати метод поза класом, так як і з аксесорами.
+
+Саме час щоб почати використовувати BlurbalizerTM. Я вже завантажив кілька BlurbsTM для тебе, але можеш додати ще свій.
+
+Ми більше не створюємо BlurbsTM directly, безпосередньо, а використовуємо метод add\_a\_blurb з класу BlurbalizerTM.
+Тепер ми можемо бути певні, що всі наші BlurbsTM зберігаються в об'єкті myapp.
+
+ myapp.add_a_blurb :moody, "Додай Blurb сюди"
+
+ myapp.show_timeline
diff --git a/translations/ua/try_ruby_550.md b/translations/ua/try_ruby_550.md
new file mode 100644
index 00000000..76e30ac7
--- /dev/null
+++ b/translations/ua/try_ruby_550.md
@@ -0,0 +1,60 @@
+---
+lang: UA
+title: Про комбінування
+answer: :-
+ok: Moody!
+error:
+load: prev
+---
+
+Деякі цікаві речі можна зробити за допомогою простих частин Ruby, особливо коли ти їх поєднуєш разом в дещо нове. Тут ми маємо додаток, що складається з класу, що містить інший клас. Це називається об'єктно-орієнтоване програмування (ООП).
+
+Ми приступаємо до __останнього завдання__ на TryRuby. Якщо хочеш, то можеш додати більше цікавого в BlurbalizerTM.
+
+Може ти захочеш вивести усміхнений смайлик в методі __show\_timeline__.
+Ти маєш додати _moodify_ метод в клас BlurbTM і потім використати цей метод в __show\_timeline__:
+
+ class Blurb
+ attr_accessor :content, :time, :mood
+
+ def initialize(mood, content="")
+ @time = Time.now
+ @content = content[0..39]
+ @mood = mood
+ end
+
+ def moodify
+ if @mood == :sad
+ return ":-("
+ elsif @mood == :happy
+ return ":-)"
+ # Додай інший смайлик сюди
+ end
+
+ # Смайлик за замовчуванням
+ ":-|"
+ end
+ end
+
+ class Blurbalizer
+ def initialize(title)
+ @title = title
+ @blurbs = []
+ end
+
+ def add_a_blurb(mood, content)
+ @blurbs << Blurb.new(mood, content)
+ end
+
+ def show_timeline
+ puts "Blurbalizer: #{@title} has #{@blurbs.count} Blurbs"
+
+ @blurbs.sort_by { |t|
+ t.time
+ }.reverse.each { |t|
+ puts "#{t.content.ljust(40)} #{t.time}"
+ }
+ end
+ end
+
+ myapp.show_timeline
diff --git a/translations/ua/try_ruby_560.md b/translations/ua/try_ruby_560.md
new file mode 100644
index 00000000..7ae5baf2
--- /dev/null
+++ b/translations/ua/try_ruby_560.md
@@ -0,0 +1,30 @@
+---
+lang: UA
+title: Підсумки #8 Розслабся, ти добре постарався!
+answer:
+class: stretcher chapmark
+ok:
+error:
+load: def ruby(f);puts "Go to www.ruby-lang.org to download Ruby";end;class K;attr_reader :rb;end;my_first_progam=K.new
+---
+
+Цей останній розділ потрібен, щоб дати тобі кілька вказівок про те, як ти можеш використовувати Ruby.
+
+Якщо тобі сподобалося, то можеш продовжити в TryRuby Playground
+або завантажити та встановити Ruby:
+ruby-lang.org
+
+Коли встановиш Ruby, створи новий файл _my\_first\_progam.rb_, використовуючи текстовий редактор, додай трохи коду,
+потім відкрий термінал або командний рядок і набери:
+
+ ruby my_first_progam.rb
+
+Існує багато (вільних) середовищ розробки, які поєднують редактор коду, переглядач файлів і середовище Ruby.
+У професіоналів попитом користуються Ruby Mine, VS Code, Atom, Sublime Text, Vim.
+
+## Святкуй!
+Ти дійсно заслуговуєш двошаровий торт з подвійною глазур'ю і музиканта, що грає на одній з тих крутих подвійних гітар.
+Ти закінчив, ти дійсно зробив це! Не сумнівайтеся в собі! Продовжуй вивчати цю прекрасну мову програмування – Ruby!
+
+## Більше інформації
+На цьому сайті є ще статті, в яких ти можеш знайти щось корисне для себе.
diff --git a/translations/ua/try_ruby_60.md b/translations/ua/try_ruby_60.md
new file mode 100644
index 00000000..ee19ea76
--- /dev/null
+++ b/translations/ua/try_ruby_60.md
@@ -0,0 +1,15 @@
+---
+lang: UA
+title: Скажи своє ім'я навпаки
+answer: .+
+ok: оводуЧ
+error:
+---
+
+Рядок є набором символів, які комп'ютер може обробляти. Уявіть, що букви, які знаходяться в рядку, – як білизна на мотузці, а лапки – прищіпки, які тримають кінці цієї мотузки. Лапки позначають початок і кінець.
+
+Щоб отримати ім'я задом наперед, набери:
+
+ "Андрій".reverse
+
+(І не забудь точку!)
diff --git a/translations/ua/try_ruby_70.md b/translations/ua/try_ruby_70.md
new file mode 100644
index 00000000..ba8ddd00
--- /dev/null
+++ b/translations/ua/try_ruby_70.md
@@ -0,0 +1,13 @@
+---
+lang: UA
+title: Підрахунок літер
+answer: ^\d+$
+ok: Так. Довжина рядка це також 'метод'
+error:
+---
+
+Ти вже спробував __метод__ reverse на своєму імені! Уклавши ім'я в лапки, ти створив рядок. Потім ти викликав метод reverse, який працює з рядками і розгортає їх задом наперед.
+
+А тепер погляньмо, скільки літер у твоєму імені:
+
+ "Андрій".length
diff --git a/translations/ua/try_ruby_80.md b/translations/ua/try_ruby_80.md
new file mode 100644
index 00000000..c36e5a79
--- /dev/null
+++ b/translations/ua/try_ruby_80.md
@@ -0,0 +1,17 @@
+---
+lang: UA
+title: На повторі
+answer: (.+)
+ok: Приємно познайомитись! Приємно познайомитись! Приємно познайомитись!
+error:
+---
+
+Зараз тобі напевно цікаво, навіщо все це потрібно.
+
+Що ж, я впевнений, ти хоч раз помічав на сайті напис: __Ваш пароль занадто короткий!__
+
+Диви, деякі програми використовують простий код __.length__.
+
+Поглянь ще. Помнож своє ім'я на 5.
+
+ "Андрій" * 5
diff --git a/translations/ua/try_ruby_90.md b/translations/ua/try_ruby_90.md
new file mode 100644
index 00000000..7bea9d5f
--- /dev/null
+++ b/translations/ua/try_ruby_90.md
@@ -0,0 +1,29 @@
+---
+lang: UA
+title: Підсумки #1 Вже
+answer: NoMethodError|undefined|-e:in `eval'|-e:in 'Kernel.eval'
+class: stretcher chapmark
+ok: Ні, неможливо розгорнути число. Натисни 'next'
+error:
+---
+
+Погляньмо, що ти вже вивчив за першу хвилину.
+
+### Редактор коду
+Можна набирати код в редакторі і отримувати відповідь у вікні виводу.
+(Майже) всі програми видають відповідь.
+
+### Числа і рядки
+Числа і рядки це математичні та текстові об'єкти Ruby.
+
+### Методи
+Ти спробував методи зі слів англійською мовою reverse і length.
+А також символьний метод множення: \* __Метод означає дію!__
+
+В цьому суть твого навчання. Беремо базові речі, граємося ними і перетворюємо їх на щось нове.
+Почуваєшся комфортно? Сподіваюсь що так!
+
+###Добре
+Спробуймо дещо незвичайне. Спробуй розгорнути число в інший бік:
+
+ 40.reverse
diff --git a/translations/zh/README.md b/translations/zh/README.md
new file mode 100644
index 00000000..d7a077f6
--- /dev/null
+++ b/translations/zh/README.md
@@ -0,0 +1,21 @@
+## Copyright (C)
+Try Ruby version 4 Chinese version, 2022 _Ye Junzhe_, reviewed & corrected by _Bitfox_ and _Heng Li_
+
+## The MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/translations/zh/try_ruby_10.md b/translations/zh/try_ruby_10.md
new file mode 100644
index 00000000..4cbce65f
--- /dev/null
+++ b/translations/zh/try_ruby_10.md
@@ -0,0 +1,21 @@
+---
+lang: ZH
+title: 有30分钟无事可做? 来尝试一下Ruby吧!
+answer:
+class: stretcher chapmark
+ok:
+error:
+---
+
+Ruby是一门来自日本,并在软件开发领域引起了革命的编程语言。
+
+Ruby的美在于其语法简洁的同时保证了语言的强大。
+
+你可以在编辑器中输入Ruby代码,用这些按钮来使用网站。
+
+- __Run__ → 在编辑器中执行代码
+- __Copy__ → 将示例代码粘贴至编辑器
+- __Next__ → 前往下一节课
+- __Back__ → 回到上一节课
+
+