Skip to content

Commit 0c8a9ff

Browse files
authored
Merge pull request #25 from loloop/mauricio/lang
adds multi-language support
2 parents 0a3eb96 + 6c49f7d commit 0c8a9ff

File tree

28 files changed

+346
-51
lines changed

28 files changed

+346
-51
lines changed

Ignite/Sources/Ignite/Framework/ContentLoader.swift

-4
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,4 @@ public struct ContentLoader {
2020
public func tagged(_ tag: String) -> [Content] {
2121
all.filter { $0.tags.contains(tag) }
2222
}
23-
24-
public var home: [Content] {
25-
all.filter { !$0.isHidden }
26-
}
2723
}

Ignite/Sources/Ignite/Framework/StaticLayout.swift

+6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ public protocol StaticLayout: Layoutable {
2020

2121
/// The image for sharing the layout
2222
var image: URL? { get }
23+
24+
/// The language for the layout
25+
var language: Language { get }
2326

2427
/// A plain-text description for this layout. Defaults to an empty string.
2528
var description: String { get }
@@ -48,6 +51,9 @@ public extension StaticLayout {
4851
"/\(title.lowercased().replacing(" ", with: "-"))"
4952
}
5053
}
54+
55+
/// Defaults to brazilian portuguese
56+
var language: Language { .portugueseBrazil }
5157

5258
/// Defaults to no sharing image
5359
var image: URL? { nil }

Ignite/Sources/Ignite/Publishing/PublishingContext-Generators.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ extension PublishingContext {
7777
title: "Tags",
7878
description: "Tags",
7979
url: site.url.appending(path: path),
80-
body: body
80+
body: body,
81+
// TODO: Add language support for TagLayouts
82+
language: .portugueseBrazil
8183
)
8284

8385
let outputString = render(page, using: site.tagLayout.parentLayout)

Ignite/Sources/Ignite/Publishing/PublishingContext.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,8 @@ public final class PublishingContext {
326326
description: staticLayout.description,
327327
url: site.url.appending(path: path),
328328
image: staticLayout.image,
329-
body: body
329+
body: body,
330+
language: staticLayout.language
330331
)
331332

332333
let outputString = render(page, using: staticLayout.parentLayout)
@@ -347,13 +348,16 @@ public final class PublishingContext {
347348
}
348349

349350
currentRenderingPath = content.path
351+
let languageString = content.metadata["language"] as? String ?? "pt_BR"
352+
let language = Language(rawValue: languageString) ?? .portugueseBrazil
350353

351354
let page = Page(
352355
title: content.title,
353356
description: content.description,
354357
url: site.url.appending(path: content.path),
355358
image: content.image.flatMap { site.url.appending(path: $0) },
356-
body: body
359+
body: body,
360+
language: language
357361
)
358362

359363
let outputString = render(page, using: layout.parentLayout)

Ignite/Sources/Ignite/Rendering/Page.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public struct Page: Sendable {
1515
private(set) public var url: URL
1616
private(set) public var image: URL?
1717
private(set) public var body: any HTML
18+
private(set) public var language: Language
1819
}
1920

2021
extension Page {
@@ -23,6 +24,7 @@ extension Page {
2324
title: "",
2425
description: "",
2526
url: URL(string: "about:blank")!,
26-
body: EmptyHTML()
27+
body: EmptyHTML(),
28+
language: .portugueseBrazil
2729
)
2830
}

site/Build/apps/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<meta content="summary_large_image" name="twitter:card" />
1616
<meta content="on" name="twitter:dnt" />
1717
<meta content="article" name="og:type" />
18-
<meta content="pt_BR" name="og:locale" />
18+
<meta content="pt-BR" name="og:locale" />
1919
<meta content="" property="og:description" />
2020
<link href="/css/style.css" rel="stylesheet" />
2121
</head>
@@ -28,6 +28,7 @@
2828
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
2929
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
3030
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
31+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
3132
</ul>
3233
</div>
3334
</nav>

site/Build/br/appclips/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<meta content="summary_large_image" name="twitter:card" />
2121
<meta content="on" name="twitter:dnt" />
2222
<meta content="article" name="og:type" />
23-
<meta content="pt_BR" name="og:locale" />
23+
<meta content="pt-BR" name="og:locale" />
2424
<meta content="Neste artigo conto como foi a experiência de criar um App Clip para o app do maior evento de plataformas Apple do Brasil, e te falo como é fácil fazer o seu próprio!" property="og:description" />
2525
<link href="/css/style.css" rel="stylesheet" />
2626
</head>
@@ -33,6 +33,7 @@
3333
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
3434
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
3535
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
36+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
3637
</ul>
3738
</div>
3839
</nav>

site/Build/br/composable-talk/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<meta content="summary_large_image" name="twitter:card" />
1919
<meta content="on" name="twitter:dnt" />
2020
<meta content="article" name="og:type" />
21-
<meta content="pt_BR" name="og:locale" />
21+
<meta content="pt-BR" name="og:locale" />
2222
<meta content="Hype ou útil de verdade? Nesta talk dei um overview do que é, os primeiros passos e por que usar ou não a tão falada TCA" property="og:description" />
2323
<link href="/css/style.css" rel="stylesheet" />
2424
</head>
@@ -31,6 +31,7 @@
3131
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
3232
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
3333
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
34+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
3435
</ul>
3536
</div>
3637
</nav>

site/Build/br/event-based-architechture-for-spritekit/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<meta content="summary_large_image" name="twitter:card" />
2121
<meta content="on" name="twitter:dnt" />
2222
<meta content="article" name="og:type" />
23-
<meta content="pt_BR" name="og:locale" />
23+
<meta content="pt-BR" name="og:locale" />
2424
<meta content="Vamos dar uma olhada em como podemos facilitar o desenvolvimento de apps com SpriteKit" property="og:description" />
2525
<link href="/css/style.css" rel="stylesheet" />
2626
</head>
@@ -33,6 +33,7 @@
3333
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
3434
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
3535
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
36+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
3637
</ul>
3738
</div>
3839
</nav>

site/Build/br/index.html

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<!doctype html>
2+
<html data-bs-theme="auto" lang="pt-BR">
3+
<head>
4+
<meta charset="utf-8" />
5+
<meta content="width=device-width, initial-scale=1" name="viewport" />
6+
<meta content="Mauricio Cardozo" name="author" />
7+
<meta content="Ignite v0.2.1" name="generator" />
8+
<title>Home – Mauricio Cardozo</title>
9+
<link href="https://mauriciocardozo.me/br" rel="canonical" />
10+
<meta content="Mauricio Cardozo" property="og:site_name" />
11+
<meta content="Home" property="og:title" />
12+
<meta content="Home" name="twitter:title" />
13+
<meta content="https://mauriciocardozo.me/br" property="og:url" />
14+
<meta content="mauriciocardozo.me" name="twitter:domain" />
15+
<meta content="summary_large_image" name="twitter:card" />
16+
<meta content="on" name="twitter:dnt" />
17+
<meta content="article" name="og:type" />
18+
<meta content="pt-BR" name="og:locale" />
19+
<meta content="" property="og:description" />
20+
<link href="/css/style.css" rel="stylesheet" />
21+
</head>
22+
<body class="container">
23+
<nav>
24+
<div class="site-navigation">
25+
<a href="/" id="title" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover"><p style="font-weight: 500">MC</p></a>
26+
<ul>
27+
<li><a href="/" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>artigos</p></a></li>
28+
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
29+
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
30+
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
31+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
32+
</ul>
33+
</div>
34+
</nav>
35+
<main>
36+
<div class="content">
37+
<div class="intro">
38+
<h1 class="huge">Oi, eu sou o Mauricio</h1>
39+
<h2>Vamos falar sobre tecnologias Apple?</h2>
40+
</div>
41+
<div>
42+
<div>
43+
<h2><a href="/br/serversideswift" class="inverted link-underline link-underline-opacity-100 link-underline-opacity-100-hover">Vamos falar de Swift no Linux?</a></h2>
44+
<p>Swift no Linux é uma área pouco explorada pelo desenvolvedor de plataformas Apple, mas pode ser uma ferramenta muito útil e uma fonte de conhecimento imensa, e que vale muito a pena de se aprender.</p>
45+
</div>
46+
<div>
47+
<h2><a href="/br/composable-talk" class="inverted link-underline link-underline-opacity-100 link-underline-opacity-100-hover">Vamos falar de Composable Architecture?</a></h2>
48+
<p>Hype ou útil de verdade? Nesta talk dei um overview do que é, os primeiros passos e por que usar ou não a tão falada TCA</p>
49+
</div>
50+
<div>
51+
<h2><a href="/br/appclips" class="inverted link-underline link-underline-opacity-100 link-underline-opacity-100-hover">Criando o seu primeiro App Clip</a></h2>
52+
<p>Neste artigo conto como foi a experiência de criar um App Clip para o app do maior evento de plataformas Apple do Brasil, e te falo como é fácil fazer o seu próprio!</p>
53+
</div>
54+
<div>
55+
<h2><a href="/br/swiftui-motion-effects" class="inverted link-underline link-underline-opacity-100 link-underline-opacity-100-hover">Fazendo MotionEffects com SwiftUI</a></h2>
56+
<p>Já tentou aplicar efeitos de movimento em views de SwiftUI? Não? Vem comigo!</p>
57+
</div>
58+
<div>
59+
<h2><a href="/br/event-based-architechture-for-spritekit" class="inverted link-underline link-underline-opacity-100 link-underline-opacity-100-hover">Arquitetura baseada em eventos para SpriteKit</a></h2>
60+
<p>Vamos dar uma olhada em como podemos facilitar o desenvolvimento de apps com SpriteKit</p>
61+
</div>
62+
<div>
63+
<h2><a href="/br/unity3d-and-apple" class="inverted link-underline link-underline-opacity-100 link-underline-opacity-100-hover">Unity3D e o mundo Apple</a></h2>
64+
<p>Este artigo é um espelho do meu artigo publicado para o equinociOS 2016, uma reunião de artigos criados durante o equinócio feitos pela comunidade Apple no Brasil.</p>
65+
</div>
66+
</div>
67+
</div>
68+
</main>
69+
</body>
70+
</html>

site/Build/br/serversideswift/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<meta content="summary_large_image" name="twitter:card" />
2121
<meta content="on" name="twitter:dnt" />
2222
<meta content="article" name="og:type" />
23-
<meta content="pt_BR" name="og:locale" />
23+
<meta content="pt-BR" name="og:locale" />
2424
<meta content="Swift no Linux é uma área pouco explorada pelo desenvolvedor de plataformas Apple, mas pode ser uma ferramenta muito útil e uma fonte de conhecimento imensa, e que vale muito a pena de se aprender." property="og:description" />
2525
<link href="/css/style.css" rel="stylesheet" />
2626
</head>
@@ -33,6 +33,7 @@
3333
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
3434
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
3535
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
36+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
3637
</ul>
3738
</div>
3839
</nav>

site/Build/br/swiftui-motion-effects/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<meta content="summary_large_image" name="twitter:card" />
2121
<meta content="on" name="twitter:dnt" />
2222
<meta content="article" name="og:type" />
23-
<meta content="pt_BR" name="og:locale" />
23+
<meta content="pt-BR" name="og:locale" />
2424
<meta content="Já tentou aplicar efeitos de movimento em views de SwiftUI? Não? Vem comigo!" property="og:description" />
2525
<link href="/css/style.css" rel="stylesheet" />
2626
</head>
@@ -33,6 +33,7 @@
3333
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
3434
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
3535
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
36+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
3637
</ul>
3738
</div>
3839
</nav>

site/Build/br/unity3d-and-apple/index.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<meta content="summary_large_image" name="twitter:card" />
1919
<meta content="on" name="twitter:dnt" />
2020
<meta content="article" name="og:type" />
21-
<meta content="pt_BR" name="og:locale" />
21+
<meta content="pt-BR" name="og:locale" />
2222
<meta content="Este artigo é um espelho do meu artigo publicado para o equinociOS 2016, uma reunião de artigos criados durante o equinócio feitos pela comunidade Apple no Brasil." property="og:description" />
2323
<link href="/css/style.css" rel="stylesheet" />
2424
</head>
@@ -31,6 +31,7 @@
3131
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
3232
<li><a href="/me" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contato</p></a></li>
3333
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
34+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇺🇸</p></a></li>
3435
</ul>
3536
</div>
3637
</nav>

site/Build/contact/index.html

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<!doctype html>
2+
<html data-bs-theme="auto" lang="en">
3+
<head>
4+
<meta charset="utf-8" />
5+
<meta content="width=device-width, initial-scale=1" name="viewport" />
6+
<meta content="Mauricio Cardozo" name="author" />
7+
<meta content="Ignite v0.2.1" name="generator" />
8+
<title>Contact Info – Mauricio Cardozo</title>
9+
<link href="https://mauriciocardozo.me/contact" rel="canonical" />
10+
<meta content="Mauricio Cardozo" property="og:site_name" />
11+
<meta content="Contact Info" property="og:title" />
12+
<meta content="Contact Info" name="twitter:title" />
13+
<meta content="https://mauriciocardozo.me/contact" property="og:url" />
14+
<meta content="mauriciocardozo.me" name="twitter:domain" />
15+
<meta content="summary_large_image" name="twitter:card" />
16+
<meta content="on" name="twitter:dnt" />
17+
<meta content="article" name="og:type" />
18+
<meta content="en" name="og:locale" />
19+
<meta content="" property="og:description" />
20+
<link href="/css/style.css" rel="stylesheet" />
21+
</head>
22+
<body class="container">
23+
<nav>
24+
<div class="site-navigation">
25+
<a href="/en" id="title" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover"><p style="font-weight: 500">MC</p></a>
26+
<ul>
27+
<li><a href="/en" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>articles</p></a></li>
28+
<li><a href="/apps" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>apps</p></a></li>
29+
<li><a href="/contact" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>contact</p></a></li>
30+
<li><a href="https://nsbrazil.com" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>NSBrazil</p></a></li>
31+
<li><a href="/" class="inverted link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover m-0"><p>🇧🇷</p></a></li>
32+
</ul>
33+
</div>
34+
</nav>
35+
<main>
36+
<div class="content">
37+
<div>
38+
<h1 id="contato">contact</h1>
39+
<p><a href="https://www.linkedin.com/in/mauricio-cardozo/" class="inverted light link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover"><strong>linkedin</strong><span>/in/mauricio-cardozo</span></a><br /><a href="https://github.com/loloop" class="inverted light link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover"><strong>github</strong><span> @loloop</span></a><br /><a href="https://bsky.app/profile/mauriciocardozo.me" class="inverted light link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover"><strong>bluesky</strong><span> @mauriciocardozo.me</span></a><br /><a href="https://instagram.com/cocoa.mauricio" class="inverted light link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover"><strong>instagram</strong><span> @cocoa.mauricio</span></a><br /><a href="" class="inverted light link-plain link-underline link-underline-opacity-100 link-underline-opacity-100-hover"><strong>iOSDevBR</strong><span> @mauricio</span></a><br /></p>
40+
</div>
41+
</div>
42+
</main>
43+
</body>
44+
</html>

0 commit comments

Comments
 (0)