<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Martin Pacheco</title>
    <description>The latest articles on DEV Community by Martin Pacheco (@itsmartindev).</description>
    <link>https://dev.to/itsmartindev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1067339%2F1d45a09e-b640-4753-a443-64e92f9bdd85.png</url>
      <title>DEV Community: Martin Pacheco</title>
      <link>https://dev.to/itsmartindev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsmartindev"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Martin Pacheco</dc:creator>
      <pubDate>Tue, 21 Jan 2025 22:47:09 +0000</pubDate>
      <link>https://dev.to/itsmartindev/-59lc</link>
      <guid>https://dev.to/itsmartindev/-59lc</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/lissy93" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F44940%2Fc48f6904-fc82-46a3-8ed7-b2baac65cf9c.jpg" alt="lissy93"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/lissy93/fun-with-consolelog-3i59" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Fun with console.log() 💿&lt;/h2&gt;
      &lt;h3&gt;Alicia Sykes ・ Nov 20 '22&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tooling&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>One Tool to replace spreadsheets and more...</title>
      <dc:creator>Martin Pacheco</dc:creator>
      <pubDate>Mon, 30 Sep 2024 18:56:43 +0000</pubDate>
      <link>https://dev.to/itsmartindev/one-tool-to-replace-spreadsheets-and-more-33ok</link>
      <guid>https://dev.to/itsmartindev/one-tool-to-replace-spreadsheets-and-more-33ok</guid>
      <description>&lt;p&gt;I’ve got something big to share with you today, and no, it’s not another basic tutorial. It’s something that’ll change how you and your team handle sales workflows forever.&lt;/p&gt;

&lt;p&gt;Introducing: Docusseum. Now, if you think that sounds like a fancy french word, you’re not wrong, but it’s also so much more than that. Docusseum is a game-changer for anyone tired of dealing with outdated Excel sheets (I mean, who isn't, right?) or struggling to keep up with sales chaos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Does Docusseum Do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Glad you asked! Docusseum is a one-stop solution for all your sales operations. Imagine this: you’re juggling pricebooks, creating quotes, sending out orders, tracking invoices, and trying to get everything signed—without the hassle. All of that, simplified in one cloud-based platform. Yeah, that’s &lt;a href="https://docusseum.com/" rel="noopener noreferrer"&gt;Docusseum&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faejl9qhycx2bkfiigle6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faejl9qhycx2bkfiigle6.jpg" alt="Image 1" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg67hbcdrjtdhyr0emhya.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg67hbcdrjtdhyr0emhya.jpg" alt="Image 3" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo48ri5um8qi3cwq52pct.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo48ri5um8qi3cwq52pct.jpg" alt="Image 4" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfnho4f0jjp8ricvdefk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmfnho4f0jjp8ricvdefk.jpg" alt="Image 5" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feiey1ctkuavdqyjrwsf7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feiey1ctkuavdqyjrwsf7.jpg" alt="Image 6" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22sbr12avvtzb84jrm2n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22sbr12avvtzb84jrm2n.jpg" alt="Image 7" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkws3gas129ldjf50pkuz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkws3gas129ldjf50pkuz.jpg" alt="Image 8" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8cs5d0o0bstllz9rnmxh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8cs5d0o0bstllz9rnmxh.jpg" alt="Image 9" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m3tac0iqt51fth26jqv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m3tac0iqt51fth26jqv.jpg" alt="Image 2" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>discuss</category>
      <category>learning</category>
      <category>startup</category>
    </item>
    <item>
      <title>Amazing tools that you must use to improve your work flow</title>
      <dc:creator>Martin Pacheco</dc:creator>
      <pubDate>Thu, 19 Oct 2023 00:59:49 +0000</pubDate>
      <link>https://dev.to/itsmartindev/tools-that-might-help-you-in-your-workflow-45pi</link>
      <guid>https://dev.to/itsmartindev/tools-that-might-help-you-in-your-workflow-45pi</guid>
      <description>&lt;p&gt;Development can be hard work, and there are a lot of tools that can make your life easy in the development world.&lt;/p&gt;

&lt;p&gt;Here I list some tools that I use to achieve web development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regexr&lt;/strong&gt;&lt;br&gt;
This site lets you build regex expressions while explaining how it will behave. Supports JavaScript &amp;amp; PHP/PCRE RegEx. Very useful if dealing with complex expressions.&lt;br&gt;
&lt;a href="https://regexr.com/" rel="noopener noreferrer"&gt;regexr.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built With&lt;/strong&gt;&lt;br&gt;
This page can explore other sites and describe which technologies or tools were implemented.&lt;br&gt;
&lt;a href="https://builtwith.com/" rel="noopener noreferrer"&gt;builtwith.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dummy JSON&lt;/strong&gt;&lt;br&gt;
This page provides you a lot of data in JSON format, very useful to mock up different types of data.&lt;br&gt;
&lt;a href="https://dummyjson.com/" rel="noopener noreferrer"&gt;dummyjson.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metatags&lt;/strong&gt;&lt;br&gt;
This tools let you explore the metadata of a site. Can be used to enhance SEO and Open Graph information.&lt;br&gt;
&lt;a href="https://metatags.io/" rel="noopener noreferrer"&gt;metatags.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Facebook debugger web tool&lt;/strong&gt;&lt;br&gt;
Similar to metatags, this tools explore metadata information from any website.&lt;br&gt;
&lt;a href="https://developers.facebook.com/tools/debug/" rel="noopener noreferrer"&gt;developers.facebook.com/tools/debug&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Photopea&lt;/strong&gt;&lt;br&gt;
This amazing tool lets you work with graphics. Its functionality is similar to Adobe Photoshop&lt;br&gt;
&lt;a href="https://www.photopea.com/" rel="noopener noreferrer"&gt;www.photopea.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Analytics&lt;/strong&gt;&lt;br&gt;
With this platform, you can create a Google tag or use the Analytics SDK to integrate to your website, track events and the type of your visitors. Useful to create reports and analyze util data.&lt;br&gt;
&lt;a href="https://analytics.google.com/analytics/web/#/" rel="noopener noreferrer"&gt;https://analytics.google.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free Image Stocks&lt;/strong&gt;&lt;br&gt;
These websites let you get free and high-quality images.&lt;br&gt;
&lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;unsplash.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.pexels.com/" rel="noopener noreferrer"&gt;pexels.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.rawpixel.com/" rel="noopener noreferrer"&gt;rawpixel.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.pond5.com/free" rel="noopener noreferrer"&gt;pond5.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Freepik&lt;/strong&gt;&lt;br&gt;
Freepik offers a widely amount of editable files free.&lt;br&gt;
&lt;a href="https://www.freepik.com/" rel="noopener noreferrer"&gt;freepik.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Icon stocks&lt;/strong&gt;&lt;br&gt;
In these sites, you will find cool icon collections to use in your websites.&lt;br&gt;
&lt;a href="https://www.iconfinder.com/" rel="noopener noreferrer"&gt;iconfinder.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://icons8.com/" rel="noopener noreferrer"&gt;icons8.com&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.flaticon.com/" rel="noopener noreferrer"&gt;flaticon.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Sandbox&lt;/strong&gt;&lt;br&gt;
In this site, you can connect with your github account and serve repositories online with other people.&lt;br&gt;
&lt;a href="https://codesandbox.io/" rel="noopener noreferrer"&gt;https://codesandbox.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment sites&lt;/strong&gt;&lt;br&gt;
This list makes reference to some popular sites that provide needed infrastructure where you can deploy your projects. These sites have free and paid plans.&lt;br&gt;
&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dashboard.heroku.com/" rel="noopener noreferrer"&gt;Heroku&lt;/a&gt;&lt;br&gt;
&lt;a href="https://firebase.google.com/" rel="noopener noreferrer"&gt;Firebase&lt;/a&gt;&lt;br&gt;
&lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;&lt;br&gt;
&lt;a href="https://railway.app/" rel="noopener noreferrer"&gt;railway.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request Bin&lt;/strong&gt;&lt;br&gt;
This site lets you mock up endpoints, so you can test HTTP calls.&lt;br&gt;
&lt;a href="https://public.requestbin.com/" rel="noopener noreferrer"&gt;requestbin.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image space Mockup&lt;/strong&gt;&lt;br&gt;
Do you need to mock an image fast without creating the graphic? Try this page. You only need to specify the width and the height at the end of the url.&lt;br&gt;
&lt;a href="https://via.placeholder.com/1000x200" rel="noopener noreferrer"&gt;Image of 1000 x 200&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tailwind Colors&lt;/strong&gt;&lt;br&gt;
Have a fast reference of the colors available in the Tailwind lib.&lt;br&gt;
&lt;a href="https://tailwindcss.com/docs/customizing-colors" rel="noopener noreferrer"&gt;tailwindcss.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JSON Viewer (Chrome Extension)&lt;/strong&gt;&lt;br&gt;
Have a pretty visualization of JSON files when they are open in your explorer.&lt;br&gt;
&lt;a href="https://github.com/tulios/json-viewer" rel="noopener noreferrer"&gt;github.com/tulios/json-viewer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are some other cool tools or sites that should be mentioned?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I read you in the comments...&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>webdev</category>
      <category>workplace</category>
      <category>programming</category>
    </item>
    <item>
      <title>Translate Nextjs apps using next-translate</title>
      <dc:creator>Martin Pacheco</dc:creator>
      <pubDate>Sat, 29 Apr 2023 19:30:23 +0000</pubDate>
      <link>https://dev.to/itsmartindev/translate-nextjs-apps-using-next-translate-147l</link>
      <guid>https://dev.to/itsmartindev/translate-nextjs-apps-using-next-translate-147l</guid>
      <description>&lt;p&gt;Since there have been some changes in the versions of Nextjs (v 13.3.1 at the time of writing this post), this doc can be used as a reference to internationalize your application using the next-translate (v2.0.5) library.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Create an next app
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-next-app translation-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the next-translate library&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;next-translate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the plugin next-translate-plugin&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;next-translate-plugin &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Internationalization configuration file
&lt;/h2&gt;

&lt;p&gt;Create a file named &lt;code&gt;i18n.js&lt;/code&gt; in the root path of the directory. This file will specify the configuration of the supported translations. You can read more about the configuration on the &lt;a href="https://github.com/aralroca/next-translate" rel="noopener noreferrer"&gt;documentation page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this case the locales array will handle English (en) and Spanish (es) languages:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;i18n.js file&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="na"&gt;locales&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;es&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
 &lt;span class="na"&gt;defaultLocale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;es&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="na"&gt;localeDetection&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="na"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;*&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;common&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
 &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use namespaces to define sections for the whole app, useful if handling large translations.&lt;br&gt;
For this exercise the regex expression ( * ) just will share the ‘common’ namespace with all the pages.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Configure the next.config.js file
&lt;/h2&gt;

&lt;p&gt;Add the next code to this file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nextTranslate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next-translate-plugin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="kr"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;nextTranslate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
 &lt;span class="na"&gt;webpack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;isServer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;webpack&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will end up with something like this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;next.config.js&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/** @type {import('next').NextConfig} */&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nextConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="na"&gt;reactStrictMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kr"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;nextConfig&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nextTranslate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next-translate-plugin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kr"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;nextTranslate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
 &lt;span class="na"&gt;webpack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;isServer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;webpack&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Create the translation files
&lt;/h2&gt;

&lt;p&gt;Translations files are json files that help to manage the diferent languages for the app.&lt;/p&gt;

&lt;p&gt;In the root directory create a folder called &lt;code&gt;locales&lt;/code&gt;.&lt;br&gt;
Then create a folder for each language: &lt;code&gt;en&lt;/code&gt;  &lt;code&gt;es&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For each of those folders you will need to create json files named as the namespace specified before. In this case it is &lt;code&gt;common&lt;/code&gt;. You will end up with an structure like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── i18n.js
├── locales
│   ├── en
│   │   └── common.json
│   └── es
│       └── common.json
├── next.config.js
├── next-env.d.ts
├── package.json
├── package-lock.json
├── postcss.config.js
├── public
│   ├── favicon.ico
│   ├── next.svg
│   └── vercel.svg
├── README.md
├── src
│   ├── pages
│   │   ├── api
│   │   │   └── hello.ts
│   │   ├── _app.tsx
│   │   ├── _document.tsx
│   │   └── index.tsx
│   └── styles
│       └── globals.css
├── tailwind.config.js
└── tsconfig.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add to each json file the key-label data needed to translate the app.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;locales/common/en.json&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"hero-title"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Translating Nextjs apps"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"hero-description"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Internationalization libraries are useful"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;locales/common/es.json&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"hero-title"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Traduciendo apps en Nextjs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"hero-description"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Las librerías de internacionalización son útiles"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Display your translations.
&lt;/h2&gt;

&lt;p&gt;Update your components as shown next.&lt;br&gt;
Import the useTranslation function:&lt;br&gt;
&lt;code&gt;import useTranslation from 'next-translate/useTranslation'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Inside the components functions, call the &lt;code&gt;t&lt;/code&gt; function:&lt;br&gt;
&lt;code&gt;const { t } = useTranslation('common')&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For each text that you want to translate, call the t function and pass the key for your label:&lt;br&gt;
&lt;code&gt;{ t('hero-title') }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is the entire component file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Home.tsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Image&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next/image&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Inter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next/font/google&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;// useTranslation function from next-translate&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;useTranslation&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next-translate/useTranslation&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;inter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Inter&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;subsets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;latin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="c1"&gt;// t function from useTranslation, using the common namespace&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTranslation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;common&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;h-screen flex flex-col justify-center items-center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;text-xl font-bold&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hero-title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;       &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hero-description&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Run your app
&lt;/h2&gt;

&lt;p&gt;Run &lt;code&gt;npm run dev&lt;/code&gt; and got to the this different urls:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;English&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;http://localhost:3000/en&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5zuw6l5eey9sntnkby3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5zuw6l5eey9sntnkby3.png" alt="App translated in english" width="452" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spanish&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;http://localhost:3000/es&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fya8nzzela41f8xb7lsot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fya8nzzela41f8xb7lsot.png" alt="App translated in spanish" width="453" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to change between languages using buttons, check the suggested &lt;a href="https://github.com/aralroca/next-translate#10-how-to-change-the-language" rel="noopener noreferrer"&gt;methodology in the documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is an example of a component that will display all the languages options based on the &lt;code&gt;locales&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ChangeLanguage.tsx&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;locales&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;useTranslation&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next-translate/useTranslation&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;setLanguage&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next-translate/setLanguage&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;ChangeLanguage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;lang&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTranslation&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;locales&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;langs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;l&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;locales&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;l&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;lang&lt;/span&gt; &lt;span class="p"&gt;){&lt;/span&gt;
            &lt;span class="nx"&gt;langs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;  &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;setLanguage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;)
&lt;/span&gt;        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;langs&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At end, you can use sites like &lt;a href="https://translate.i18next.com/" rel="noopener noreferrer"&gt;i18next&lt;/a&gt; to translate json files keeping the keys untouched, so translations can be easier.&lt;/p&gt;

&lt;p&gt;Happy translations! &lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>i18n</category>
      <category>translation</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to install Java in Pop!_Os</title>
      <dc:creator>Martin Pacheco</dc:creator>
      <pubDate>Tue, 18 Apr 2023 19:21:35 +0000</pubDate>
      <link>https://dev.to/itsmartindev/how-to-install-java-in-popos-2j27</link>
      <guid>https://dev.to/itsmartindev/how-to-install-java-in-popos-2j27</guid>
      <description>&lt;p&gt;Java is a programming language that is widely used in the development of software applications, particularly for web and mobile platforms. Pop!_OS, on the other hand, is a Linux distribution that is based on Ubuntu and is designed to be user-friendly for developers and power users.&lt;/p&gt;

&lt;p&gt;Java can be used on Pop!_OS, just like any other operating system. You can install the Java Development Kit (JDK) on Pop!_OS, which includes the Java Virtual Machine (JVM) and other tools necessary for Java development. There are also several integrated development environments (IDEs) available for Java development on Pop!_OS, such as Eclipse, IntelliJ IDEA, and NetBeans.&lt;/p&gt;

&lt;p&gt;To install Java on Pop!_OS using apt, you can follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the terminal by pressing Ctrl+Alt+T on your keyboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update the package list by running the following command:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Install the default-jdk package, which includes the Java Development Kit, by running the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install default-jdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;This command will only install the default JRE – Java Runtime Environment from OpenJDK 11. To install the default JDK – Java Development Kit from OpenJDK 11, you will need to enter another command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install default-jdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify that Java is installed correctly by checking the version number. You can do this by running the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java -version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7inyxwefn4ayz9c35o73.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7inyxwefn4ayz9c35o73.png" alt="java -version" width="798" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This should output information about the version of Java that is installed on your system. Congrats!.&lt;/p&gt;

</description>
      <category>java</category>
      <category>jdk</category>
      <category>linux</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
