<?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: Albert Wolszon</title>
    <description>The latest articles on DEV Community by Albert Wolszon (@albert221).</description>
    <link>https://dev.to/albert221</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%2F359761%2F945fff4c-d9b8-4c3a-9e00-1a5b0942f719.jpeg</url>
      <title>DEV Community: Albert Wolszon</title>
      <link>https://dev.to/albert221</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/albert221"/>
    <language>en</language>
    <item>
      <title>Arbify - l10n for Flutter made easy!</title>
      <dc:creator>Albert Wolszon</dc:creator>
      <pubDate>Wed, 20 May 2020 12:22:57 +0000</pubDate>
      <link>https://dev.to/albert221/arbify-l10n-for-flutter-made-easy-cjj</link>
      <guid>https://dev.to/albert221/arbify-l10n-for-flutter-made-easy-cjj</guid>
      <description>&lt;p&gt;A week ago I attended an online meetup &lt;a href="https://www.meetup.com/pl-PL/flutter-berlin/events/270013077/"&gt;Flutter Berlin x FlutterLDN&lt;/a&gt;. One of the topics was &lt;em&gt;Convenient internationalization of Flutter apps&lt;/em&gt; by Dominik Roszkowski. I really liked the solutions to l10n problems existing in Flutter that he presented.&lt;/p&gt;

&lt;p&gt;But there was this one thing that I didn't like. He showed us one SaaS application as the only piece of software that deals with Flutter's ARB files good enough. This software, of course, is a paid one (with some free plan), but I thought it can't be that. That was the moment when I created a new GitHub repository 🥳&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--DpVdpmDM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1011966511051886592/M0-Vh9H__normal.jpg" alt="Albert Wolszon 💙 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Albert Wolszon 💙
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @albert_wolszon
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--52oNvK_0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-ff4bdab814039c4cb172a35ea369e0ea9c6a4b59b631a293896ae195fa26a99d.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      &lt;a href="https://twitter.com/OrestesGaolin"&gt;@OrestesGaolin&lt;/a&gt; after your talk at &lt;a href="https://twitter.com/FlutterBerlin"&gt;@FlutterBerlin&lt;/a&gt; I'm about to jump into creating an open-source Localizely solution focused on &lt;a href="https://twitter.com/hashtag/Flutter"&gt;#Flutter&lt;/a&gt; that anyone would be able to self-host for free. Let's see if this project will be a finished one 😂
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:37 PM - 12 May 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1260278018808913922" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1260278018808913922" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      1
      &lt;a href="https://twitter.com/intent/like?tweet_id=1260278018808913922" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      4
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Arbify
&lt;/h2&gt;

&lt;p&gt;Arbify is an ARB file localization tool dedicated to Flutter and its intl package. I'm developing it for 8 days straight now and it already works well as an MVP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Target
&lt;/h3&gt;

&lt;p&gt;My target to what I want Arbify to be is a tool that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;works well both for individuals as well as teams and companies&lt;/li&gt;
&lt;li&gt;offers a simple access control via user and project roles&lt;/li&gt;
&lt;li&gt;lets you easily export your messages to ARB file&lt;/li&gt;
&lt;li&gt;and most importantly, is free to use! It's open-source and you can self-host it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I plan to have a Dart extension that will let you easily integrate your Flutter project to any Arbify instance and easily sync your messages with your codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick demo
&lt;/h3&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/rRkKsh4SJ0I"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology
&lt;/h3&gt;

&lt;p&gt;At the beginning, I was wondering what technology should I choose for this project. I really had three options in my mind:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dart&lt;/strong&gt;&lt;br&gt;
The language that the community already knows well so it would probably attract more contributors from the Flutter environment. But that's the technology I didn't know at all in terms of backend development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PHP: Symfony/Laravel&lt;/strong&gt;&lt;br&gt;
The technologies that I personally know quite well and I can easily create stuff in.&lt;/p&gt;

&lt;p&gt;Eventually, I chose Laravel and, I believe, thanks to that the project is in a very good shape right now!&lt;/p&gt;
&lt;h2&gt;
  
  
  Repository
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vWogaON8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-28d89282e0daa1e2496205e2f218a44c755b0dd6536bbadf5ed5a44a7ca54716.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Arbify"&gt;
        Arbify
      &lt;/a&gt; / &lt;a href="https://github.com/Arbify/Arbify"&gt;
        Arbify
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ARB files localization tool. Dedicated to Flutter and its intl package.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Arbify&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/Arbify/Arbify/actions?query=workflow%3APHP"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xnb5KV2Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Arbify/Arbify/workflows/PHP/badge.svg" alt="PHP workflow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ARB files localization tool. Dedicated to &lt;a href="https://flutter.dev" rel="nofollow"&gt;Flutter&lt;/a&gt; and its &lt;a href="https://pub.dev/packages/intl" rel="nofollow"&gt;intl&lt;/a&gt; package.&lt;/p&gt;
&lt;p&gt;For documentation regarding source code of Arbify, check &lt;a href="https://raw.githubusercontent.com/Arbify/Arbify/master/DOCS.md"&gt;DOCS.md&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;p&gt;For installation using docker-compose.&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;cp .env.example .env&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Fill &lt;code&gt;.env&lt;/code&gt; file with the configuration you want to use.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you're using docker-compose, you need to change &lt;code&gt;DB_HOST&lt;/code&gt; to &lt;code&gt;db&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;By default &lt;code&gt;MAIL_MAILER&lt;/code&gt; uses SMTP transport; you may want to change that to &lt;code&gt;log&lt;/code&gt; for development purposes.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;docker-compose build arbify
docker-compose up -d

docker-compose run arbify composer install
docker-compose run arbify php artisan key:generate
docker-compose run arbify php artisan migrate
docker-compose run arbify php artisan db:seed
docker-compose run arbify npm install
docker-compose run arbify npm run prod&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;After this you're ready to go to &lt;a href="http://localhost:8000" rel="nofollow"&gt;http://localhost:8000&lt;/a&gt; and check out Arbify yourself!&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;php artisan db:seed&lt;/code&gt; command seeded the database with a pre-verified admin account with email &lt;code&gt;admin@arbify.io&lt;/code&gt; and password &lt;code&gt;password&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Arbify/Arbify"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  Additional thoughts
&lt;/h2&gt;

&lt;p&gt;I'm very happy I finally found an idea for a project that a) is a niche on the market b) will truly help people and c) drives me so crazy I'm a little bit frustrated I'm programming instead of procrastinating 😂.&lt;/p&gt;

&lt;p&gt;Giving back to the community is an awesome thing. (And looks like they like the idea)&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KBr10t9T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1262495292370358276/pu/img/ZM50bt2A1fXo3g7k.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--DpVdpmDM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1011966511051886592/M0-Vh9H__normal.jpg" alt="Albert Wolszon 💙 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Albert Wolszon 💙
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @albert_wolszon
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--52oNvK_0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/twitter-ff4bdab814039c4cb172a35ea369e0ea9c6a4b59b631a293896ae195fa26a99d.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      For the last week, I was working on Arbify! An open-source localization tool for &lt;a href="https://twitter.com/hashtag/Flutter"&gt;#Flutter&lt;/a&gt;. Inspired by &lt;a href="https://twitter.com/OrestesGaolin"&gt;@OrestesGaolin&lt;/a&gt; talk at &lt;a href="https://twitter.com/FlutterBerlin"&gt;@FlutterBerlin&lt;/a&gt; x &lt;a href="https://twitter.com/FlutterLDN"&gt;@FlutterLDN&lt;/a&gt;. You can check it out yourself with Docker &lt;a href="https://t.co/mBZfXoUbwW"&gt;github.com/Arbify/Arbify&lt;/a&gt;. 🌟 appreciated. Keep in mind it's early alpha! 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      21:31 PM - 18 May 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1262495953870901254" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-reply-action.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1262495953870901254" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-retweet-action.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      10
      &lt;a href="https://twitter.com/intent/like?tweet_id=1262495953870901254" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="/assets/twitter-like-action.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
      47
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>octograd2020</category>
      <category>flutter</category>
      <category>localization</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
