Kevin Bond (@zenstruck) 's Twitter Profile
Kevin Bond

@zenstruck

Open Source, #PHP, #Symfony Developer. Writer @SymfonyCasts, @Symfony Core Member. Author of github.com/zenstruck packages.

ID: 26730358

linkhttps://github.com/kbond calendar_today26-03-2009 11:44:20

1,1K Tweet

835 Followers

270 Following

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

To track our starship parts letโ€™s create a StarshipPart entity & load the database via Foundry. Donโ€™t forget the โ€œpartโ€ called toilet paper! symfonycasts.com/screencast/symโ€ฆ

PhpStorm, a JetBrains IDE (@phpstorm) 's Twitter Profile Photo

Up next: a deep dive into education ๐Ÿง‘โ€๐ŸŽ“ Led by some of the most respected voices in the field โ€“ Jeffrey Way, Kevin Bond, and Povilas Korop | Laravel Courses Creator & Youtuber โ€“ live on the @JetBrains YouTube channel ๐Ÿ‘‰ youtube.com/live/3b0ty1iZ8โ€ฆ

Up next: a deep dive into education ๐Ÿง‘โ€๐ŸŽ“

Led by some of the most respected voices in the field โ€“ <a href="/jeffrey_way/">Jeffrey Way</a>, <a href="/zenstruck/">Kevin Bond</a>, and <a href="/PovilasKorop/">Povilas Korop | Laravel Courses Creator & Youtuber</a> โ€“ live on the @JetBrains YouTube channel 
๐Ÿ‘‰ youtube.com/live/3b0ty1iZ8โ€ฆ
SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

ManyToOne: the king of all relations. The way this looks in PHP & the database is nerd wonderful! symfonycasts.com/screencast/symโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

How do we relate a part to its ship? Throw away all that noise about ids & foreign keys: In Doctrine, we relate *objects* and it handles all the boring stuff. Thatโ€™s pretty ๐Ÿ’ฃ symfonycasts.com/screencast/symโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

If you already love Foundry (I do!), wait until you see how simple it is to create a *fleet* of ships and their parts symfonycasts.com/screencast/symโ€ฆ

PhpStorm, a JetBrains IDE (@phpstorm) 's Twitter Profile Photo

The recordings from JetBrains #PHPverse 2025 are now available to watch! You can catch up on any sessions you might have missed๐ŸŽž๏ธ ๐Ÿ‘‰youtube.com/playlist?list=โ€ฆ

The recordings from <a href="/jetbrains/">JetBrains</a>  #PHPverse 2025 are now available to watch! You can catch up on any sessions you might have missed๐ŸŽž๏ธ

๐Ÿ‘‰youtube.com/playlist?list=โ€ฆ
SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿ”„ ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ”„ ๐Ÿ‡ซ๐Ÿ‡ท New course all about the Symfony Translation component! We'll take an English-only site, translate it into multiple languages, add a language switcher and let it loose on the world... First let's install the component. symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

How do we join across a ManyToMany relation with that nasty join table in the center? By ignoring it! Itโ€™s all properties & objects symfonycasts.com/screencast/docโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

With the Translation component installed and configured, our next step is to figure out what language a user wants. There are a couple ways to do this, but let's look at the most robust one: Localized, or Translated routing. symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

Let's create a nifty language switcher widget since having users manually manipulate the URL in their address bar is a huge bummer. symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

Let's do the real work of translating! See where and how you translate text, the "anatomy" of a translation, creating, and loading them. symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

One last thing before we finally translate the site: translation "keys". Let's look at why we use these, how to use them, and how YAML helps! symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

Let's look at a more complex translation, one with dynamic values and pluralization, because "1 dinosaurs" doesn't sound quite right ๐Ÿฆ– symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

HTML in your translations, it's gonna happen. There isn't a perfect solution, so let's take a look at our options. symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

The Symfony CLI makes local development a breeze - but it works best when PHP is installed directly on your machine. Let's walk through setting up PHP (plus common database extensions) and the Symfony CLI on macOS, Linux, or Windows so you're ready to start building Symfony apps.

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

The translation:extract command automates pulling missing translation keys from your PHP and Twig files. But it also has a secret, secondary purpose... Let's check it out! ๐Ÿ•ต๏ธ symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

For a course about translations, we really havenโ€™t done much "translating" yet. Thatโ€™s kinda important! Symfony has integrations with a few different Translation Provider services. Letโ€™s look at @Crowdin, and see how it works! symfonycasts.com/screencast/traโ€ฆ

SymfonyCasts ๐Ÿ‡บ๐Ÿ‡ฆ (@symfonycasts) 's Twitter Profile Photo

We've successfully pushed our English translations up to @Crowdin. Merci beaucoup! now, let's automatically translate and pull them back down! symfonycasts.com/screencast/traโ€ฆ