From fc77205d15b90202571cd71dc07b2c8e877d12ec Mon Sep 17 00:00:00 2001 From: Jonas Date: Fri, 16 Sep 2016 12:57:01 +0200 Subject: Adding German translation for Swift (#1314) --- de-de/swift-de.html.markdown | 590 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 590 insertions(+) create mode 100644 de-de/swift-de.html.markdown (limited to 'de-de') diff --git a/de-de/swift-de.html.markdown b/de-de/swift-de.html.markdown new file mode 100644 index 00000000..2322061c --- /dev/null +++ b/de-de/swift-de.html.markdown @@ -0,0 +1,590 @@ +--- +language: swift +contributors: + - ["Grant Timmerman", "http://github.com/grant"] + - ["Christopher Bess", "http://github.com/cbess"] + - ["Joey Huang", "http://github.com/kamidox"] + - ["Anthony Nguyen", "http://github.com/anthonyn60"] +translators: + - ["Jonas Wippermann", "http://vfuc.co"] +filename: learnswift-de.swift +--- + +Swift ist eine Programmiersprache von Apple für die Entwicklung von iOS und OS X Applikationen. Swift wurde 2014 zu Apples WWDC Entwicklerkonferenz vorgestellt und wurde mit dem Ziel entwickelt, fehlerträchtigen Code zu vermeiden sowie mit Objective-C zu koexistieren. Es wird mit dem LLVM Compiler gebaut und ist ab Xcode 6+ verfügbar. + +Das offizielle [Swift Programming Language](https://itunes.apple.com/us/book/swift-programming-language/id881256329) Buch von Apple ist kostenlos via iBooks verfügbar. + +Außerdem hilfreich ist Apples [Getting Started Guide](https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/RoadMapiOS/index.html), ein guter Einstiegspunkt mit komplettem Swift-Tutorial. + +```swift +// importiere ein Modul +import UIKit + +// +// MARK: Grundlagen +// + +// Xcode unterstützt "Landmarks" um Code zu gliedern, sie werden in der Jump Bar aufgelistet +// MARK: Abschnitts-Markierung +// TODO: Zu erledigen +// FIXME: Zu beheben + +// In Swift 2 wurden println und print zusammengefasst in eine print-Methode. Es wird automatisch ein Zeilenumbruch angehängt. +print("Hello, world!") // println ist jetzt print +print("Hello, world!", appendNewLine: false) // printen ohne Zeilenumbruch am Ende + +// Variablen (var) können nach der Initialisierung verändert werden +// Konstanten (let) können nach der Initialisierung NICHT verändert werden + +var myVariable = 42 +let øπΩ = "value" // Unicode-Variablennamen +let π = 3.1415926 +let convenience = "keyword" // Kontext-abhängiger Variablenname +let weak = "keyword"; let override = "another keyword" // Instruktionen können durch ein Semikolon aufgeteilt werden +let `class` = "keyword" // Nutze "Backticks" um Schlüsselwörter als Variablennamen zu verwenden +let explicitDouble: Double = 70 // Typ explizit festgelegt +let intValue = 0007 // 7 +let largeIntValue = 77_000 // 77000 +let label = "some text " + String(myVariable) // Casting +let piText = "Pi = \(π), Pi 2 = \(π * 2)" // String Interpolation + +// Build-spezifische Werte +// benutzt -D build configuration +#if false + print("not printed") + let buildValue = 3 +#else + let buildValue = 7 +#endif +print("Build value: \(buildValue)") // Build value: 7 + +/* + Optionals ist ein Swift-Feature, welches ermöglicht, dass eine Variable entweder einen (`Some`) oder keinen (`None`) Wert hat + + Da Swift von jeder property einen Wert erwartet, muss sogar nil explizit als Optional festgelegt werden. + + Optional ist ein Enum. +*/ +var someOptionalString: String? = "optional" // Kann nil sein +// Genau wie oben, aber ? ist ein postfix operator (Syntax Candy) +var someOptionalString2: Optional = "optional" + +if someOptionalString != nil { + // Ich bin nicht nil + if someOptionalString!.hasPrefix("opt") { + print("has the prefix") + } + + let empty = someOptionalString?.isEmpty +} +someOptionalString = nil + +// Implizit entpackter Optionalwert +var unwrappedString: String! = "Value is expected." +// Genau wie oben, aber ! ist ein postfix operator (noch mehr Syntax Candy) +var unwrappedString2: ImplicitlyUnwrappedOptional = "Value is expected." + +if let someOptionalStringConstant = someOptionalString { + // hat einen (`Some`) Wert, nicht nil + if !someOptionalStringConstant.hasPrefix("ok") { + // hat keinen "ok"-Prefix + } +} + +// Swift unterstützt das festlegen von Werten eines beliebigen Typens +// AnyObject == id +// Im Gegensatz zum Objective-C `id`, funktioniert AnyObject mit jeglichen Werten (Class, Int, struct, etc) +var anyObjectVar: AnyObject = 7 +anyObjectVar = "Changed value to a string, not good practice, but possible." + +/* + Ein Kommentar + + /* + Verschachtelte Kommentare sind ebenfalls unterstützt + */ +*/ + +// +// MARK: Collections +// + +/* + Array und Dictionary-Typen sind structs. + Deswegen implizieren `let` und `var` bei der Initialisierung auch ob sie änderbar (var) oder unveränderlich (let) sind. +*/ + +// Array +var shoppingList = ["catfish", "water", "lemons"] +shoppingList[1] = "bottle of water" +let emptyArray = [String]() // let == unveränderlich +let emptyArray2 = Array() // genau wie oben +var emptyMutableArray = [String]() // var == änderbar + + +// Dictionary +var occupations = [ + "Malcolm": "Captain", + "kaylee": "Mechanic" +] +occupations["Jayne"] = "Public Relations" +let emptyDictionary = [String: Float]() // let == unveränderlich +let emptyDictionary2 = Dictionary() // genau wie oben +var emptyMutableDictionary = [String: Float]() // var == änderbar + + +// +// MARK: Kontrollstruktur +// + +// for-Schleife (array) +let myArray = [1, 1, 2, 3, 5] +for value in myArray { + if value == 1 { + print("One!") + } else { + print("Not one!") + } +} + +// for-Schleife mit Indizes (array) +for index in myArray.indices { + print("Value with index \(index) is \(myArray[index])") +} + +// for-Schleife (dictionary) +var dict = ["one": 1, "two": 2] +for (key, value) in dict { + print("\(key): \(value)") +} + +// for-Schleife (range) +for i in -1...shoppingList.count { + print(i) +} +shoppingList[1...2] = ["steak", "peacons"] +// ..< schließt letzte Nummer aus + +// while-Schleife +var i = 1 +while i < 1000 { + i *= 2 +} + +// do-while-Schleife +do { + print("hello") +} while 1 == 2 + +// Switch +// Sehr mächtig, wie `if` statement mit Syntax Candy +// Unterstützt Strings, Objekt-Instanzen und primitive Typen (Int, Double, etc) +let vegetable = "red pepper" +switch vegetable { +case "celery": + let vegetableComment = "Add some raisins and make ants on a log." +case "cucumber", "watercress": + let vegetableComment = "That would make a good tea sandwich." +case let localScopeValue where localScopeValue.hasSuffix("pepper"): + let vegetableComment = "Is it a spicy \(localScopeValue)?" +default: // notwendig (um alle möglichen Eingaben zu verarbeiten) + let vegetableComment = "Everything tastes good in soup." +} + + +// +// MARK: Funktionen +// + +// Funktionen sind ein sogenannter "first-class" Typ, was bedeutet, dass sie +// in Funktionen geschachtelt werden und "herumgereicht" werden können + +// Funktion mit Swift header Dokumentation + +/** + Eine Grüß-Funktion + + - Ein Aufzählungspunkt + - Ein weiterer Aufzählungspunkt in der Dokumentation + + :param: name Ein Name + :param: day Ein Tag + :returns: Ein String, der Name und Tag beinhält. +*/ +func greet(name: String, day: String) -> String { + return "Hello \(name), today is \(day)." +} +greet("Bob", "Tuesday") + +// Ähnlich wie oben, bloß anderes Funktions-Parameter-Verhalten +func greet2(#requiredName: String, externalParamName localParamName: String) -> String { + return "Hello \(requiredName), the day is \(localParamName)" +} +greet2(requiredName:"John", externalParamName: "Sunday") + + +// Funktion, welche mehrere Werte in einem Tupel zurückgibt +func getGasPrices() -> (Double, Double, Double) { + return (3.59, 3.69, 3.79) +} +let pricesTuple = getGasPrices() +let price = pricesTuple.2 // 3.79 +// Ignoriere Tupel-(oder andere)Werte mit _ (Unterstrich) +let (_, price1, _) = pricesTuple // price1 == 3.69 +print(price1 == pricesTuple.1) // true +print("Gas price: \(price)") + +// Variierende Argumente.. +func setup(numbers: Int...) { + // .. liegen als Array vor + let number = numbers[0] + let argCount = numbers.count +} + +// Funktionen übergeben und zurückgeben +func makeIncrementer() -> (Int -> Int) { + func addOne(number: Int) -> Int { + return 1 + number + } + return addOne +} +var increment = makeIncrementer() +increment(7) + +// Übergabe via Referenz ("Pass by reference") +func swapTwoInts(inout a: Int, inout b: Int) { + let tempA = a + a = b + b = tempA +} +var someIntA = 7 +var someIntB = 3 +swapTwoInts(&someIntA, &someIntB) +print(someIntB) // 7 + + +// +// MARK: Closures +// +var numbers = [1, 2, 6] + +// Funktionen sind besondere Closures ({}) + +// Closure Beispiel +// `->` teilt Parameter und Rückgabe-Typ +// `in` teilt den Closure Header vom Body +numbers.map({ + (number: Int) -> Int in + let result = 3 * number + return result +}) + + +// Wenn der Typ bekannt ist, wie oben, kann folgendes getan werden +numbers = numbers.map({ number in 3 * number }) +// oder sogar dies +//numbers = numbers.map({ $0 * 3 }) + +print(numbers) // [3, 6, 18] + +// "Schleppende Closure" (Trailing Closure) +numbers = sorted(numbers) { $0 > $1 } + +print(numbers) // [18, 6, 3] + +// Sehr verkürzt, da sich der Typ durch den < Operator ableiten lässt + +numbers = sorted(numbers, < ) + +print(numbers) // [3, 6, 18] + +// +// MARK: Strukturen +// (häufig einfach structs) +// + +// Structures und Klassen haben sehr ähnliche Fähigkeiten +struct NamesTable { + let names = [String]() + + // Eigendefiniertes subscript + subscript(index: Int) -> String { + return names[index] + } +} + + +// Strukturen haben eine automatisch generierte, designierte Initialisierungsfunktion +let namesTable = NamesTable(names: ["Me", "Them"]) +let name = namesTable[1] +print("Name is \(name)") // Name is Them + +// +// MARK: Klassen +// + +// Klassen, Strukturen und deren Member haben drei Ebenen der Zugriffskontrolle +// Es gibt: internal (default), public, private + +public class Shape { + public func getArea() -> Int { + return 0; + } +} + +// Alle Methoden und Properties einer Klasse sind public +// Wenn das einfache Ziel ist, Daten in einem strukturierten Objekt zu halten, +// sollte ein `struct` verwendet werden + +internal class Rect: Shape { + var sideLength: Int = 1 + + // Eigendefinierte Getter und Setter für die Property + private var perimeter: Int { + get { + return 4 * sideLength + } + set { + // `newValue` ist eine implizite Variable, welche in Settern verfügbar ist + sideLength = newValue / 4 + } + } + + // "Lazy" (faules) Laden einer Property, sie bleibt uninitialisiert (nil), + // bis sie aufgerufen wird + lazy var subShape = Rect(sideLength: 4) + + // Wenn kein eigendefinierter Getter/Setter notwendig ist, + // aber trotzdem Code vor und nach dem Setzen eines Variablenwertes laufen soll, + // kann "willSet" und "didSet" benutzt werden + var identifier: String = "defaultID" { + // der `willSet` Parameter wird der Variablenname für den neuen Wert sein + willSet(someIdentifier) { + print(someIdentifier) + } + } + + init(sideLength: Int) { + self.sideLength = sideLength + // super.init muss immer aufgerufen werden, wenn eigene Properties initialisiert werden + super.init() + } + + func shrink() { + if sideLength > 0 { + --sideLength + } + } + + override func getArea() -> Int { + return sideLength * sideLength + } +} + +// Eine simple `Square`-Klasse erbt von/erweitert `Rect` +class Square: Rect { + convenience init() { + self.init(sideLength: 5) + } +} + +var mySquare = Square() +print(mySquare.getArea()) // 25 +mySquare.shrink() +print(mySquare.sideLength) // 4 + +// Casten der Instanz +let aShape = mySquare as Shape + +// Vergleiche Instanzen, nicht äquivalent zum == , welches Objekte vergleicht ("equal to") +if mySquare === mySquare { + print("Yep, it's mySquare") +} + +// Optionale Initialisierung +class Circle: Shape { + var radius: Int + override func getArea() -> Int { + return 3 * radius * radius + } + + // Ein Fragezeichen nach `init` ist eine optionale Initialisierung, + // welche nil zurückgeben kann + init?(radius: Int) { + self.radius = radius + super.init() + + if radius <= 0 { + return nil + } + } +} + +var myCircle = Circle(radius: 1) +print(myCircle?.getArea()) // Optional(3) +print(myCircle!.getArea()) // 3 +var myEmptyCircle = Circle(radius: -1) +print(myEmptyCircle?.getArea()) // "nil" +if let circle = myEmptyCircle { + // wird nicht ausgeführt, da myEmptyCircle nil ist + print("circle is not nil") +} + + +// +// MARK: Enums +// + +// Enums können optional einen eigenen Typen haben +// Wie Klassen auch können sie Methoden haben + +enum Suit { + case Spades, Hearts, Diamonds, Clubs + func getIcon() -> String { + switch self { + case .Spades: return "♤" + case .Hearts: return "♡" + case .Diamonds: return "♢" + case .Clubs: return "♧" + } + } +} + + +// Enum-Werte können vereinfacht geschrieben werden, es muss nicht der Enum-Typ +// genannt werden, wenn die Variable explizit deklariert wurde + +var suitValue: Suit = .Hearts + +// Nicht-Integer-Enums brauchen direkt zugewiesene "Rohwerte" +enum BookName: String { + case John = "John" + case Luke = "Luke" +} +print("Name: \(BookName.John.rawValue)") + +// Enum mit assoziierten Werten +enum Furniture { + // mit Int assoziiert + case Desk(height: Int) + // mit String und Int assoziiert + case Chair(String, Int) + + func description() -> String { + switch self { + case .Desk(let height): + return "Desk with \(height) cm" + case .Chair(let brand, let height): + return "Chair of \(brand) with \(height) cm" + } + } +} + +var desk: Furniture = .Desk(height: 80) +print(desk.description()) // "Desk with 80 cm" +var chair = Furniture.Chair("Foo", 40) +print(chair.description()) // "Chair of Foo with 40 cm" + + +// +// MARK: Protokolle +// + +// Protokolle (`protocol`s) können verlangen, dass entsprechende +// Typen spezifische Instanz-Properties, Instanz/Klassen-Methoden, +// Operatoren oder Subscripts implementieren/haben + +protocol ShapeGenerator { + var enabled: Bool { get set } + func buildShape() -> Shape +} + +// Protocols mit @objc deklariert ermöglichen optionale Funktionen, +// welche es ermöglichen, abzufragen ob ein Typ einem Protokoll entspricht +@objc protocol TransformShape { + optional func reshaped() + optional func canReshape() -> Bool +} + +class MyShape: Rect { + var delegate: TransformShape? + + func grow() { + sideLength += 2 + + // Ein Fragezeichen nach einer optionalen Property, Methode oder Subscript + // ignoriert elegant Nil-Werte und geben nil zurück, anstatt einen Laufzeitfehler zu werfen + // Dies wird "optional Chaining" (optionale Verkettung) genannt + if let allow = self.delegate?.canReshape?() { + // frage erst nach delegate, dann nach Methode + self.delegate?.reshaped?() + } + } +} + + +// +// MARK: Sonstiges +// + +// `extension`s: (Erweiterungen), erweitere Typen um zusätzliche Funktionalität + +// Square entspricht jetzt dem `Printable` Protokoll +extension Square: Printable { + var description: String { + return "Area: \(self.getArea()) - ID: \(self.identifier)" + } +} + +print("Square: \(mySquare)") + +// Standardtypen können ebenfalls erweitert werden +extension Int { + var customProperty: String { + return "This is \(self)" + } + + func multiplyBy(num: Int) -> Int { + return num * self + } +} + +print(7.customProperty) // "This is 7" +print(14.multiplyBy(3)) // 42 + + +//Generics: Ähnlich zu Java und C#. Nutze das `where` keyword um die Bedingung +// des Generics festzulegen + +func findIndex(array: [T], valueToFind: T) -> Int? { + for (index, value) in enumerate(array) { + if value == valueToFind { + return index + } + } + return nil +} +let foundAtIndex = findIndex([1, 2, 3, 4], 3) +print(foundAtIndex == 2) // true + +// Operatoren: +// Eigendefinierte Operatoren können mit diesen Zeichen beginnen: +// / = - + * % < > ! & | ^ . ~ +// oder +// Unicode Mathematik, Symbole, Pfeile, Dingbat, und Linien/Box - Zeichen +prefix operator !!! {} + + +// Ein Prefix-Operator, welcher die Seitenlänge verdreifacht +prefix func !!! (inout shape: Square) -> Square { + shape.sideLength *= 3 + return shape +} + +// Aktueller Wert +print(mySquare.sideLength) // 4 + +// Wert nach verwendung des eigenen Operators +!!!mySquare +print(mySquare.sideLength) // 12 +``` -- cgit v1.2.3 From 4638d37fe2a551f096c81c6429a1c17251171e64 Mon Sep 17 00:00:00 2001 From: ven Date: Fri, 16 Sep 2016 12:57:25 +0200 Subject: fixup #1314 --- de-de/swift-de.html.markdown | 1 + 1 file changed, 1 insertion(+) (limited to 'de-de') diff --git a/de-de/swift-de.html.markdown b/de-de/swift-de.html.markdown index 2322061c..d58b0bd4 100644 --- a/de-de/swift-de.html.markdown +++ b/de-de/swift-de.html.markdown @@ -8,6 +8,7 @@ contributors: translators: - ["Jonas Wippermann", "http://vfuc.co"] filename: learnswift-de.swift +lang: de-de --- Swift ist eine Programmiersprache von Apple für die Entwicklung von iOS und OS X Applikationen. Swift wurde 2014 zu Apples WWDC Entwicklerkonferenz vorgestellt und wurde mit dem Ziel entwickelt, fehlerträchtigen Code zu vermeiden sowie mit Objective-C zu koexistieren. Es wird mit dem LLVM Compiler gebaut und ist ab Xcode 6+ verfügbar. -- cgit v1.2.3 From 970aff0dadeeed4362881f8088e81f4d703000a7 Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Tue, 27 Sep 2016 16:42:40 +0200 Subject: Fix comment in Rust docs: box -> mine (#2365) The "box" is referring to the Box variable a few lines back, but that is called "mine", not "box". --- de-de/rust-de.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'de-de') diff --git a/de-de/rust-de.html.markdown b/de-de/rust-de.html.markdown index 2b1471a8..faa4ec2b 100644 --- a/de-de/rust-de.html.markdown +++ b/de-de/rust-de.html.markdown @@ -319,7 +319,7 @@ fn main() { var = 3; let ref_var: &i32 = &var; - println!("{}", var); // Anders als `box`, `var` kann hier weiter verwendet werden + println!("{}", var); // Anders als `mine`, `var` kann hier weiter verwendet werden println!("{}", *ref_var); // var = 5; // das kompiliert nicht, da `var` ausgeliehen ist // *ref_var = 6; // das kompiliert auch nicht, da `ref_var` eine unveränderliche Referenz ist -- cgit v1.2.3 From 9234c9fea4d2db040e73def518117f4135d71940 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 1 Oct 2016 23:33:04 +0300 Subject: Update Swift pre-decrement syntax to match v3.0 (#2395) --- de-de/swift-de.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'de-de') diff --git a/de-de/swift-de.html.markdown b/de-de/swift-de.html.markdown index d58b0bd4..b58a72d3 100644 --- a/de-de/swift-de.html.markdown +++ b/de-de/swift-de.html.markdown @@ -373,7 +373,7 @@ internal class Rect: Shape { func shrink() { if sideLength > 0 { - --sideLength + sideLength -= 1 } } -- cgit v1.2.3 From 04b80e590da480fbfede0a51c6bf1b59583678fe Mon Sep 17 00:00:00 2001 From: Dennis Keller Date: Mon, 10 Oct 2016 10:57:22 +0200 Subject: Translate asciidoc to german (#2439) --- de-de/asciidoc-de.html.markdown | 125 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 de-de/asciidoc-de.html.markdown (limited to 'de-de') diff --git a/de-de/asciidoc-de.html.markdown b/de-de/asciidoc-de.html.markdown new file mode 100644 index 00000000..1a8cdd5a --- /dev/null +++ b/de-de/asciidoc-de.html.markdown @@ -0,0 +1,125 @@ +--- +language: asciidoc +contributors: + - ["Ryan Mavilia", "http://unoriginality.rocks/"] +translators: + - ["Dennis Keller", "https://github.com/denniskeller"] +filename: asciidoc-de.md +lang: de-de +--- + +AsciiDoc ist eine Auszeichnungssprache ähnlich zu Markdown. Sie kann für alles verwendet werden von Büchern zu Blogs. Erfunden wurde sie 2002 von Stuart Rackham. Die Sprache ist simpel aber sie ermöglicht eine große Anzahl an Anpassungen. + +Kopfzeile des Dokuments + +Kopfzeilen sind optional und dürfen keine Leerzeilen besitzen. Sie müssen mindestens eine Leerzeile vom Inhalt versetzt sein. + +Nur Titel + +``` += Dokumententitel + +Erster Satz des Dokuments. +``` + +Titel und Autor + +``` += Dokumententitel +Vorname Nachname + +Start des Dokuments. +``` + +Mehrere Autoren + +``` += Dokumententitel +John Doe ; Jane Doe; Black Beard + +Starte ein Dokument mit mehreren Autoren. +``` + +Revisionszeile (benötigt eine Autorzeile) + +``` += Dokumententitel V1 +Potato Man +v1.0, 2016-01-13 + +Dieser Artikel über Chips wird Spaß machen. +``` + +Absätze + +``` +Du musst nichts besonderes machen für Absätze. + +Füge eine Leerzeile zwischen zwei Absätze, um sie zu trennen. + +Um eine Leerzeile zu erhalten musst du ein + +ergänzen und du erhälst einen Umbruch! +``` + +Textformatierung + +``` +_Unterstriche erstellt Kursivschrift_ +*Sternchen für Fett gedruckt* +*_Kombinieren für extra Spaß_* +`Benutze Ticks um Monospace zu signalisieren` +`*Fett gedruckter Monospace*` +``` + +Abteilungstitel + +``` += Level 0 (sollte nur in der Kopfzeile verwendet werden) + +== Level 1

+ +=== Level 2

+ +==== Level 3

+ +===== Level 4

+ +====== Level 5
+ +======= Level 6 + +``` + +Listen + +Um eine Aufzählung zu erstellen verwendest du Sternchen. + +``` +* foo +* bar +* baz +``` + +Um eine nummerierte Liste zu erstellen verwendest du Punkte. + +``` +. item 1 +. item 2 +. item 3 +``` + +Um Listen zu verschachteln musst du zusätzliche Sternchen und Punkte hinzufügen. Dies ist bis zu fünf Mal möglich. + +``` +* foo 1 +** foo 2 +*** foo 3 +**** foo 4 +***** foo 5 + +. foo 1 +.. foo 2 +... foo 3 +.... foo 4 +..... foo 5 +``` -- cgit v1.2.3 From 179b34b81aa5644f0389305c00b40cdc6b644e79 Mon Sep 17 00:00:00 2001 From: SmuSmu Date: Fri, 14 Oct 2016 22:25:50 +0200 Subject: Update d-de.html.markdown (#2454) --- de-de/d-de.html.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'de-de') diff --git a/de-de/d-de.html.markdown b/de-de/d-de.html.markdown index ae036d70..2b0b38dd 100644 --- a/de-de/d-de.html.markdown +++ b/de-de/d-de.html.markdown @@ -50,12 +50,14 @@ void main() { } while(n > 0); // For und while sind ja schön und gut aber D bevorzugt foreach - // .. erstellt eine spanne von zahlen, exklusive dem Ende + // Die '..' erstellen eine Spanne von Zahlen, inklusive dem ersten Wert + // jedoch ohne dem letzten foreach(i; 1..1_000_000) { if(n % 2 == 0) writeln(i); } + // Es gibt auch ein 'foreach_reverse' wenn du rückwerts gehen willst. foreach_reverse(i; 1..int.max) { if(n % 2 == 1) { writeln(i); -- cgit v1.2.3 From 4ba4e9abbe3d3b0fc96c1ac083e13eb3f534390b Mon Sep 17 00:00:00 2001 From: Dennis Keller Date: Sat, 15 Oct 2016 22:10:00 +0200 Subject: [html/de] Translate html to german (#2440) * Translate html to german * Add EN label to resources in English --- de-de/html-de.html.markdown | 120 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 de-de/html-de.html.markdown (limited to 'de-de') diff --git a/de-de/html-de.html.markdown b/de-de/html-de.html.markdown new file mode 100644 index 00000000..2ee18129 --- /dev/null +++ b/de-de/html-de.html.markdown @@ -0,0 +1,120 @@ +--- +language: html +contributors: + - ["Christophe THOMAS", "https://github.com/WinChris"] +translators: + - ["Dennis Keller", "https://github.com/denniskeller"] +filename: learnhtml-de.html +lang: de-de +--- + +HTML steht für HyperText Markup Language (Hypertext-Auszeichnungssprache). +Sie ist eine Sprache, um Seiten für das World Wide Web zu schreiben.. +Es ist eine Auszeichnugssprache, die es uns ermöglicht Webseiten mithilfe des Codes zu schreiben, der kennzeichnet wie Text und Daten angezeigt werden sollen. Eigentlich sind HTML Dateien nur einfache Textdateien. +Was sind das für Auszeichnungen? Es ist eine Methode, um die Daten der Website zu organisieren mithilfe von Start- und Endtags. +Diese Auszeichnung dient dazu dem Text Bedeutung zu geben, welchen sie umschließt. +Wie viele andere Computersprachen auch, besitzt HTML viele Versionen. Wir werden hier über HTML5 reden. + +**NOTE :** Du kannst die unterschiedlichen Tags und Elemente, während des Tutorials auf Seiten, wie [codepen](http://codepen.io/pen/) testen, um deren Effekte zu sehen und wie diese funktionieren. Auch kannst du dich damit besser mit der Sprache vertraut machen. +Dieser Artikel ist bedacht darauf, nur HTML Syntax und nützliche Tipps zu geben. + + +```html + + + + + + + + + + Meine Website + + +

Hallo Welt!

+ Komm schau was das hier anzeigt +

Das ist ein Paragraf.

+

Das ist ein weiterer Paragraf.

+
    +
  • Das ist eine Item mit einer nicht-nummerierten Liste (Aufzählungsliste)
  • +
  • Das ist ein weiteres Item
  • +
  • Und das ist das letzte Item in der Liste
  • +
+ + + + + + + + + + + + + + + + + + + + + Meine Seite + + + + + + + +

Hallo, Welt!

+ + Komm, schaue was das zeigt +

Das ist ein Absatz.

+

Das ist ein anderer Absatz.

+
    + +
  • Das ist ein Element in einer nicht Aufzählungsliste
  • +
  • Das ist ein anderes Item
  • +
  • Und das ist das letzte Element in der List
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Erster Tabellenkopf Zweiter Tabllenkopf
Erste Zeile, erste Spalte Erste Zeile, zweite Spalte
Zweite Zeile, erste SpalteZweite Zeile, zweite Spalte
+ +``` + +## Verwendung + +HTML Dateien enden mit `.html`. + +## Um mehr zu lernen + +* [wikipedia (EN)](https://en.wikipedia.org/wiki/HTML) +* [HTML tutorial (EN)](https://developer.mozilla.org/en-US/docs/Web/HTML) +* [W3School (EN)](http://www.w3schools.com/html/html_intro.asp) -- cgit v1.2.3 From 6c27e9e2b1e33d2659206910cba9ddf645ad2b53 Mon Sep 17 00:00:00 2001 From: DennisPS Date: Fri, 21 Oct 2016 08:24:26 +0200 Subject: [go/de] fixing typos (#2480) --- de-de/go-de.html.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'de-de') diff --git a/de-de/go-de.html.markdown b/de-de/go-de.html.markdown index dca88f01..817cb4ae 100644 --- a/de-de/go-de.html.markdown +++ b/de-de/go-de.html.markdown @@ -10,8 +10,8 @@ lang: de-de --- Die Sprache Go (auch golang) wurde von Google entwickelt und wird seit 2007 benutzt. Go ähnelt in der Syntax der Sprache C, bietet darüber hinaus aber viele -Vorteile. Einerseits verzichtet Gp auf Speicherarithmetik und -benutzt einen Garbabe Collector. Andererseits enthält Go native Sprachelemente +Vorteile. Einerseits verzichtet Go auf Speicherarithmetik und +benutzt einen Garbage Collector. Andererseits enthält Go native Sprachelemente für die Unterstützung von Nebenläufigkeit. Durch den Fokus auf einen schnellen Kompilierprozess wird außerdem die Softwareentwicklung in Großprojekten erleichtert. -- cgit v1.2.3 From 819d16b7e53a803ae472f7057190703e5d849a14 Mon Sep 17 00:00:00 2001 From: Dennis Keller Date: Fri, 21 Oct 2016 17:40:03 +0200 Subject: [ruby/de] typo, formatting and translation fixes (#1792) * [ruby-ecosystem/de] typo fixes * move name to translators section * remove trailing whitespace * revamp sentence --- de-de/ruby-de.html.markdown | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'de-de') diff --git a/de-de/ruby-de.html.markdown b/de-de/ruby-de.html.markdown index bdeaa30b..e14603cd 100644 --- a/de-de/ruby-de.html.markdown +++ b/de-de/ruby-de.html.markdown @@ -13,6 +13,7 @@ contributors: - ["Rahil Momin", "https://github.com/iamrahil"] translators: - ["Christian Albrecht", "https://github.com/coastalchief"] + - ["Dennis Keller", "https://github.com/denniskeller"] filename: ruby-de.rb lang: de-de --- @@ -143,7 +144,7 @@ x #=> 10 y #=> 10 ``` ## Benennung -### Konvention ist snake_case +### Konvention ist snake_case ``` snake_case = true ``` @@ -153,9 +154,9 @@ path_to_project_root = '/good/name/' path = '/bad/name/' ``` # Symbols (sind auch Objekte) -Symbols sind unveränderliche, wiederverwendbare Konstanten, welche intern -als integer repräsentiert werden. Sie werden häufig anstelle von Strings -verwendet, um sinnvoll Werte zu übermitteln. +Symbols sind unveränderliche, wiederverwendbare Konstanten, welche intern +als integer repräsentiert werden. Sie werden häufig anstelle von Strings +verwendet, um sinnvoll Werte zu übermitteln. Symbols werden mit dem Doppelpunkt gekennzeichnet. ``` @@ -195,7 +196,7 @@ array[12] #=> nil array[-1] #=> 5 ``` -## Arrays können mit Stard Index und Länge indiziert werden +## Arrays können mit Start Index und Länge indiziert werden ``` array[2, 3] #=> [3, 4, 5] ``` @@ -216,11 +217,9 @@ array.push(6) #=> [1, 2, 3, 4, 5, 6] array.include?(1) #=> true ``` -# Hashes +# Hashes Hashes sind das Hauptfeature um Key/Values zu speichern -``` - ## Ein Hash anlegen ``` hash = { 'color' => 'green', 'number' => 5 } @@ -231,8 +230,8 @@ hash.keys #=> ['color', 'number'] ``` hash['color'] #=> 'green' hash['number'] #=> 5 -hash['nothing here'] #=> nil -// Asking a hash for a key that doesn't exist returns nil: +hash['nothing here'] #=> nil +// Fragen an einen Hash nach einem Schlüssel, der nicht existiert, ruft nil hervor: ``` ## Symbols können auch keys sein @@ -247,7 +246,7 @@ new_hash.has_key?(:defcon) #=> true new_hash.has_value?(3) #=> true ``` -### Tip: Arrays und Hashes sind Enumerable +### Tipp: Arrays und Hashes sind Enumerable ### Und haben gemeinsame, hilfreiche Methoden wie: ### each, map, count, and more @@ -269,8 +268,8 @@ for counter in 1..5 end ``` ## Stattdessen: "each" Methode und einen Bloch übergeben -Ein Block ist ein Codeteil, den man einer Methode übergeben kann -Ähnelt stark lambdas, anonymen Funktionen oder Closures in anderen +Ein Block ist ein Codeteil, den man einer Methode übergeben kann +Ähnelt stark lambdas, anonymen Funktionen oder Closures in anderen Programmiersprachen. ``` @@ -339,7 +338,7 @@ end => "OK job" ``` -# exception handling: +# Exception handling: ``` begin # code here that might raise an exception @@ -360,13 +359,13 @@ def double(x) x * 2 end ``` -## Funktionen (und Blocks) +## Funktionen (und Blocks) ## geben implizit den Wert des letzten Statements zurück ``` double(2) #=> 4 ``` -### Klammern sind optional wenn das Ergebnis nicht mehdeutig ist +### Klammern sind optional wenn das Ergebnis nicht mehrdeutig ist ``` double 3 #=> 6 double double 3 #=> 12 @@ -604,7 +603,7 @@ Something.new.qux # => 'qux' ## Weiterführende Hinweise -//EN +//EN - [Learn Ruby by Example with Challenges](http://www.learneroo.com/modules/61/nodes/338) - A variant of this reference with in-browser challenges. - [Official Documentation](http://www.ruby-doc.org/core-2.1.1/) -- cgit v1.2.3