<?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: Diana Voroniak</title>
    <description>The latest articles on DEV Community by Diana Voroniak (@dianafromcrowdin).</description>
    <link>https://dev.to/dianafromcrowdin</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%2F672176%2Fd082ed67-50e8-4dbb-889c-88fb0d709d73.jpg</url>
      <title>DEV Community: Diana Voroniak</title>
      <link>https://dev.to/dianafromcrowdin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dianafromcrowdin"/>
    <language>en</language>
    <item>
      <title>Webinar: From multilingual UI to multilingual company</title>
      <dc:creator>Diana Voroniak</dc:creator>
      <pubDate>Thu, 09 Mar 2023 11:52:42 +0000</pubDate>
      <link>https://dev.to/crowdin/webinar-from-multilingual-ui-to-multilingual-company-35ai</link>
      <guid>https://dev.to/crowdin/webinar-from-multilingual-ui-to-multilingual-company-35ai</guid>
      <description>&lt;p&gt;We’ll have a live discussion with Sarah Rosales-Hunt, who’s currently a Head of Product Content and Localization at Humu (ex. Sr. Localization Project Manager, Slack). After working both at the agency and client side, Sarah has vast experience to share. We'll be discussing what are the basic elements for a successful localization initiative, how to wok with content, and how to get ready for expanding to new markets.&lt;/p&gt;

&lt;p&gt;In this free webinar, you’ll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where does localization start?&lt;/li&gt;
&lt;li&gt;What kind of content should be localized first?&lt;/li&gt;
&lt;li&gt;What are the main elements of a successful localization project?&lt;/li&gt;
&lt;li&gt;A one-man band is also a team.&lt;/li&gt;
&lt;li&gt;What are the types of localization teams?&lt;/li&gt;
&lt;li&gt;What to expect from your localization software?&lt;/li&gt;
&lt;li&gt;Automating localization regardless of where your content lives&lt;/li&gt;
&lt;li&gt;Hosted by&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Register now:&lt;/strong&gt; &lt;a href="http://bit.ly/3F5TMsD" rel="noopener noreferrer"&gt;http://bit.ly/3F5TMsD&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About Crowdin&lt;/strong&gt;: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://crowdin.com/" rel="noopener noreferrer"&gt;Crowdin&lt;/a&gt; is a cloud-based localization management software. With over 2M registered users and 100K+ localization projects from all over the world. Crowdin helps companies streamline their growth by reaching people who speak different languages. Trusted by Humu, Calendly, Mojang Studios, GitLab, and other companies creating multilingual products.&lt;/p&gt;

</description>
      <category>multilingual</category>
      <category>globalization</category>
      <category>localization</category>
      <category>webinar</category>
    </item>
    <item>
      <title>Node.js i18n: Agile Localization for Developers</title>
      <dc:creator>Diana Voroniak</dc:creator>
      <pubDate>Fri, 25 Mar 2022 10:23:26 +0000</pubDate>
      <link>https://dev.to/crowdin/nodejs-i18n-agile-localization-for-developers-3o63</link>
      <guid>https://dev.to/crowdin/nodejs-i18n-agile-localization-for-developers-3o63</guid>
      <description>&lt;p&gt;In today’s market, people seek personalization. They expect your app to speak their native language. In this article, we will cover how you can translate your Node.js app using a developer-friendly localization platform. Learn about the i18n framework and how to integrate your repository with a localization system to automate Node.js localization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make Your App Multilingual and Grow Your Revenue
&lt;/h2&gt;

&lt;p&gt;Language connects people. The same principle is applied to your app development. Having localized versions of your app can grow and generate great revenue for your app by opening new markets.  &lt;/p&gt;

&lt;p&gt;The internet is somewhat similar to the real world. When you visit a place where no one speaks your mother language, you feel isolated and lost. Making your app multilingual help your customers use it more effectively and opens up opportunities to reach new audiences.  &lt;/p&gt;

&lt;p&gt;According to a recent &lt;a href="https://preply.com/en/blog/language-inclusive-apps/" rel="noopener noreferrer"&gt;study by Preply&lt;/a&gt;, most of the top apps in each tech category are also the most language-inclusive ones.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Node.js Web Application Framework
&lt;/h2&gt;

&lt;p&gt;Node.js is a server-side platform built on Google Chrome's JavaScript Engine. The official &lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;documentation of Node.js&lt;/a&gt; states the following – ‘’Node.js is a platform built on Chrome's JavaScript runtime for easily building fast and scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.’’  &lt;/p&gt;

&lt;p&gt;If you choose Node.js as a development environment and are curious about how you can implement localization as a part of your workflow – you’re in the right place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Node.js i18n: Localization Starting Point
&lt;/h2&gt;

&lt;p&gt;If you plan to create a multilingual version of your app, you should use one of the Node.js internationalization libraries available, for example on &lt;a href="https://openbase.com/" rel="noopener noreferrer"&gt;Openbase&lt;/a&gt;. This article will cover the &lt;a href="https://github.com/mashpie/i18n-node" rel="noopener noreferrer"&gt;i18n-node&lt;/a&gt; as an example. You may choose another library according to your preferences. They do implement localization functionality pretty much in the same way. &lt;/p&gt;

&lt;p&gt;Here are a few first steps you need to take to begin the localization of your Node.js app with &lt;a href="https://github.com/mashpie/i18n-node" rel="noopener noreferrer"&gt;i18n-node&lt;/a&gt; library.&lt;/p&gt;

&lt;h3&gt;
  
  
  The first step would be to install the package
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;$ npm install i18n&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Then, create an i18n config object
&lt;/h3&gt;

&lt;p&gt;Before we use the library, we need to configure it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ touch app/i18n.config.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;File: app/i18n.config.js&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { I18n } = require('i18n');
const path = require('path');

const i18n = new I18n({
  locales: ['en', 'uk'],
  defaultLocale: 'en',
  directory: path.join('./', 'locales')
});

module.exports = i18n;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We added support for 2 languages, with the default one being en (English) and the second one being uk (Ukrainian). View the whole list of all &lt;a href="https://github.com/mashpie/i18n-node#list-of-all-configuration-options" rel="noopener noreferrer"&gt;configuration&lt;/a&gt; options for the library to learn more. &lt;/p&gt;

&lt;h3&gt;
  
  
  Create an i18n object
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;$ touch index.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;File: index.js&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const i18n = require('./app/i18n.config');

console.log(i18n.getLocales()); // ['en', 'uk']
console.log(i18n.getLocale()); // 'en'
console.log(i18n.__('Hello')); // 'Hello'
console.log(i18n.__n('You have %s message', 5)); // 'You have 5 messages'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in the command line, run the following:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ node index.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This will automatically generate a locales' directory on the root folder. It will contain the relevant translation strings for the current language:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ tree locales &lt;br&gt;
locales&lt;br&gt;
├── uk.json&lt;br&gt;
└── en.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;File: locales/en.json&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{&lt;br&gt;
   "Hello": "Hello",&lt;br&gt;
   "You have %s message": {&lt;br&gt;
      "one": "You have %s message",&lt;br&gt;
      "other": "You have %s messages"&lt;br&gt;
   }&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add the following line in the index.js to test the generation of translatable strings for the other language:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;i18n.setLocale('uk')&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;File: locales/uk.json&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{&lt;br&gt;
   "Hello": "Привіт",&lt;br&gt;
   "You have %s message": {&lt;br&gt;
      "one": "Ви маєте %s повідомлення",&lt;br&gt;
      "other": "Ви маєте %s повідомлень"&lt;br&gt;
   }&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Rerun the app to verify translations
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;$ node index.js&lt;br&gt;
Привіт&lt;br&gt;
Ви маєте 5 повідомлень&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Automate Node.js Localization with Crowdin
&lt;/h2&gt;

&lt;p&gt;Node.js localization library was created to help and save your time as a developer. However, as you can assume from a small example above, doing the actual translations into multiple languages can still be very challenging, especially for complex apps.  &lt;/p&gt;

&lt;p&gt;You will face several challenges like making sure that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your translators do not edit the same file simultaneously or break the code&lt;/li&gt;
&lt;li&gt; translation values are present for each language&lt;/li&gt;
&lt;li&gt;you don’t have to spend time copy-pasting translations
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t have to deal with all the extra work. And why would you if there is a solution? Make localization part of your workflow and forget about those issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Integrate Your Repo and Localization Project
&lt;/h3&gt;

&lt;p&gt;Set up an integration with your repo. Crowdin integrates with &lt;a href="https://store.crowdin.com/collections/frontpage/products/github" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://store.crowdin.com/collections/frontpage/products/gitlab" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;, &lt;a href="https://store.crowdin.com/products/bitbucket?_pos=1&amp;amp;_sid=499a27e7c&amp;amp;_ss=r" rel="noopener noreferrer"&gt;Bitbucket&lt;/a&gt;, and &lt;a href="https://store.crowdin.com/collections/frontpage/products/azure-repos" rel="noopener noreferrer"&gt;Azure Repos&lt;/a&gt;. You can also install &lt;a href="https://support.crowdin.com/cli-tool/" rel="noopener noreferrer"&gt;Crowdin Console Client&lt;/a&gt; (CLI) which allows you to integrate with GIT, SVN, Mercurial, and more. &lt;/p&gt;

&lt;p&gt;Crowdin will get the localization files from your repo and upload them to the &lt;a href="https://support.crowdin.com/online-editor/" rel="noopener noreferrer"&gt;Editor&lt;/a&gt;, where all strings from your app will look user-friendly and include the comments you provided. Once the translations are done, the system compiles them into a file and syncs them with your code as a merge request. Translations do not get to the master branch before you merge them. You can also integrate multiple branches with Crowdin at the same time, so translators can work with the texts from your feature branch before it’s rolled out, and you can release them into multiple languages at the same time.  &lt;/p&gt;

&lt;p&gt;In case you have more than one app or several products that share similar features and texts, you can share their translations and avoid translating the same content twice, saving time and money. Usually, iOS and Android app versions have much of the same content. In Crowdin, you can easily detect duplicate strings to reuse their translations. &lt;/p&gt;

&lt;h3&gt;
  
  
  Use Machine Translation and Translation Memory Pre-Translation
&lt;/h3&gt;

&lt;p&gt;Both machine translation (MT) and translation memory (TM) will help you translate content faster and reduce translation costs. With their help, you can reduce the duration of the project even before the translators begin their work. To do this, configure pre-translation via TM or MT. You can also leverage MT to get translations of non-critical content.  &lt;/p&gt;

&lt;p&gt;On Crowdin, you can localize your product with the help of more than 40 machine engines like Microsoft Translator, Google Translate, DeepL Translator. View the list of &lt;a href="https://crowdin.com/page/integrations#nav-mt-engines" rel="noopener noreferrer"&gt;machine engines&lt;/a&gt; you can use with Crowdin today.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ensure Context for Translators
&lt;/h3&gt;

&lt;p&gt;Simply put, context ensures the quality of the localized version of your app. Crowdin has created a few ways to help you provide context for translators and reduce manual work. &lt;/p&gt;

&lt;p&gt;You can provide context using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WYSIWYG &lt;a href="https://support.crowdin.com/online-editor/" rel="noopener noreferrer"&gt;editor&lt;/a&gt; view&lt;/li&gt;
&lt;li&gt;Context for strings. Add text descriptions or labels, use Glossary terms to get relevant translations faster.&lt;/li&gt;
&lt;li&gt;Screenshots. You can upload your game or app screenshots manually or using different integrations or add-ons, like Crowdin SDK for example. This way, translators know the location and context for each string.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.crowdin.com/enterprise/in-context/" rel="noopener noreferrer"&gt;In-Context&lt;/a&gt; Localization tool. Translators can work as if in the real app interface and preview the translations they make right there. Translations are stored within your Crowdin project, and you can decide when to pull the strings to your application. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can learn more about the Crowdin platform by watching a short &lt;a href="https://crowdin.com/on-demand-demo" rel="noopener noreferrer"&gt;on-demand demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Localize Your Product with Crowdin
&lt;/h2&gt;

&lt;p&gt;Automate localization by internationalizing your texts and integrating your repo with Crowdin New source strings are automatically sent to translators, and you receive translations as a merge after the work is done. Let your customers access your product in several languages. Get started and register a &lt;a href="https://accounts.crowdin.com/register" rel="noopener noreferrer"&gt;Crowdin account&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>tutorial</category>
      <category>localization</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Crowdin Language Services: The Fastest Way to Make Your Product Multilingual</title>
      <dc:creator>Diana Voroniak</dc:creator>
      <pubDate>Fri, 04 Mar 2022 08:41:32 +0000</pubDate>
      <link>https://dev.to/crowdin/crowdin-language-services-the-fastest-way-to-make-your-product-multilingual-20c9</link>
      <guid>https://dev.to/crowdin/crowdin-language-services-the-fastest-way-to-make-your-product-multilingual-20c9</guid>
      <description>&lt;p&gt;Crowdin Language Services is the fastest way to prepare content for your multilingual audience. Along with the localization management platform, we now deliver professional translation services.&lt;/p&gt;

&lt;p&gt;Want to reach a multilingual market? Now you have a quick and easy solution. Upload your files or connect your VCS to automate content sync and order translations from a new vendor – &lt;a href="https://solutions.crowdin.com/crowdin-language-services" rel="noopener noreferrer"&gt;Crowdin Language Services&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If you need help with managing the localization process and tasks like: deciding on the target market, languages, and budget, uploading the files, ensuring translators have all the resources to provide high-quality translations, and more, Crowdin also offers to hire a &lt;a href="https://solutions.crowdin.com/virtual-localization-manager" rel="noopener noreferrer"&gt;virtual localization manager&lt;/a&gt; to handle the role of your localization lead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Save Time on Finding the Best Translation Agency
&lt;/h2&gt;

&lt;p&gt;It can be challenging to find a good translation service, especially considering the number of freelancers and agencies available on the internet today. The important things to consider when choosing your LSP can include translation expertise, delivery time, and many other factors. We wanted to give you an option where you can skip making this choice and simply select the files and order translations right away.&lt;/p&gt;

&lt;p&gt;That’s why we added &lt;a href="https://solutions.crowdin.com/crowdin-language-services" rel="noopener noreferrer"&gt;Crowdin Language Services&lt;/a&gt; to the list of vendors in Crowdin. You can still bring your in-house team, freelancers, or any agency of your choice. For quick translations and projects with limited time or budget, Crowdin Language Services can be the right choice. All you need to quickly translate your content is to add your files to Crowdin (manually or via an integration) and hire professionals to do translations while you focus on developing new features or creating content.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Main Reasons to Hire Crowdin Language Services
&lt;/h2&gt;

&lt;p&gt;If you hire professional translation services, you know you’re working with trained linguists. With us, you will receive high-quality translations and a fast, clear, and convenient process from start to finish. Here are a few key reasons to hire Crowdin Language Services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Content Types and Sync with 100+ Tools
&lt;/h3&gt;

&lt;p&gt;Crowdin Language Services will deal with any type of content. With us, you can localize your web or desktop software, games, apps, websites, landing pages, and more. &lt;/p&gt;

&lt;p&gt;To avoid any manual file transfer, you can connect your Crowdin projects with repositories on GitHub, GitLab, Bitbucket, and Azure Repos.&lt;/p&gt;

&lt;p&gt;You can also export and translate data from more than 100 applications like content management systems, file directories, marketing and customer support tools. And yes, you can do it without manual file copy-pasting. All you need is to install a respective app from the &lt;a href="https://store.crowdin.com/" rel="noopener noreferrer"&gt;Crowdin Store&lt;/a&gt; and sync source files and translations between Crowdin and the tool of your choice.&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%2Finf85r4vkfwrcwmzugja.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%2Finf85r4vkfwrcwmzugja.png" alt="Crowdin Store:Integrations and Apps" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Languages
&lt;/h3&gt;

&lt;p&gt;Crowdin Language Services team can get started within a few days and specializes in translations into more than &lt;strong&gt;100&lt;/strong&gt; languages, including German, English, French, Spanish, Italian, Portuguese, Dutch, Russian, Polish, Czech, Chinese, Arabic, and more. &lt;/p&gt;

&lt;h3&gt;
  
  
  Quality
&lt;/h3&gt;

&lt;p&gt;Go with Crowdin translation services that put quality first. With us, you’ll know for sure that your content will be polished before it reaches you. We ensure continuous quality control with both automatic (QA checks, glossaries, translation memory) and professional review (proofreading).&lt;/p&gt;

&lt;h3&gt;
  
  
  Customer Service
&lt;/h3&gt;

&lt;p&gt;The translation process is straightforward and easy to start. Crowdin Language Services complete the project within the deadline and can manage different localization projects simultaneously.&lt;/p&gt;

&lt;h3&gt;
  
  
  Certifications and Security
&lt;/h3&gt;

&lt;p&gt;All information and content you provide to us are stored on secure servers. View our &lt;a href="https://crowdin.com/page/security" rel="noopener noreferrer"&gt;Security at Crowdin&lt;/a&gt; page to see our security policies, data on sub-processors, and what Crowdin does to ensure internal and application security.&lt;/p&gt;

&lt;h3&gt;
  
  
  Order Professional Translations From Crowdin Language Services
&lt;/h3&gt;

&lt;p&gt;Start localizing your content in a matter of minutes.&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%2Fa79v8aqa6o7jcy7vrj2d.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%2Fa79v8aqa6o7jcy7vrj2d.png" alt="5 steps to make your product multilingual with Crowdin Language Services" width="800" height="1038"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To order translations, please follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create an account or log into &lt;a href="https://crowdin.com/" rel="noopener noreferrer"&gt;Crowdin&lt;/a&gt; and create a localization project. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automate your content synchronization. Connect your project with &lt;a href="https://support.crowdin.com/github-integration/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://support.crowdin.com/gitlab-integration/" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;, &lt;a href="https://support.crowdin.com/bitbucket-integration/" rel="noopener noreferrer"&gt;Bitbucket&lt;/a&gt;, or &lt;a href="https://support.crowdin.com/azure-repos-integration/" rel="noopener noreferrer"&gt;Azure Repos&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to the main page &amp;gt; &lt;em&gt;Resources&lt;/em&gt; &amp;gt; &lt;em&gt;Vendors&lt;/em&gt; &amp;gt; Crowdin Language Services &amp;gt; Choose a project and &lt;strong&gt;Create a Task&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pick files, target languages, and buy translations.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Localize Your Product with Crowdin
&lt;/h2&gt;

&lt;p&gt;Automate localization process, release your app in several languages simultaneously, and provide an enhanced experience for your global customers with Crowdin.&lt;/p&gt;

&lt;p&gt;Get started and register a &lt;a href="https://crowdin.com/" rel="noopener noreferrer"&gt;Crowdin&lt;/a&gt; account.&lt;/p&gt;

</description>
      <category>multilingual</category>
      <category>localization</category>
      <category>translatio</category>
      <category>devs</category>
    </item>
    <item>
      <title>CakePHP Translation: Agile Localization for Devs</title>
      <dc:creator>Diana Voroniak</dc:creator>
      <pubDate>Fri, 10 Dec 2021 15:11:53 +0000</pubDate>
      <link>https://dev.to/crowdin/cakephp-translation-agile-localization-for-devs-32eh</link>
      <guid>https://dev.to/crowdin/cakephp-translation-agile-localization-for-devs-32eh</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/cakephp/cakephp" rel="noopener noreferrer"&gt;CakePHP&lt;/a&gt; is an open-source web framework for PHP which uses commonly known design patterns. Based on model-view-controller, it is generally used for handling web applications, the informative &lt;a href="https://bakery.cakephp.org/" rel="noopener noreferrer"&gt;CakePHP library&lt;/a&gt; makes the development clear.&lt;/p&gt;

&lt;p&gt;Our article will teach you how CakePHP Translation basics can help you automate your localization and translate regular app updates with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automate Localization with VCS Integrations
&lt;/h2&gt;

&lt;p&gt;Localization is an important step that opens your product to a global market. In order to reap the benefits of localization and enjoy both the result and process, it should be organized in a highly agile manner.&lt;/p&gt;

&lt;p&gt;The best way to do it is to integrate the localization process into your development workflow. For this, use a localization management platform that integrates with your software repository.  &lt;/p&gt;

&lt;p&gt;On Crowdin, you can connect your localization projects with &lt;a href="https://store.crowdin.com/collections/frontpage/products/github" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, &lt;a href="https://store.crowdin.com/collections/frontpage/products/gitlab" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;, &lt;a href="https://store.crowdin.com/products/bitbucket?_pos=1&amp;amp;_sid=499a27e7c&amp;amp;_ss=r" rel="noopener noreferrer"&gt;Bitbucket&lt;/a&gt;, &lt;a href="https://store.crowdin.com/collections/frontpage/products/azure-repos" rel="noopener noreferrer"&gt;Azure Repos&lt;/a&gt; or install &lt;a href="https://support.crowdin.com/cli-tool/" rel="noopener noreferrer"&gt;Crowdin Console Client (CLI)&lt;/a&gt; that allows you to integrate with GIT, SVN, Mercurial, and more.  &lt;/p&gt;

&lt;p&gt;Integration with your repository ensures that the new texts from the selected branches are sent to your localization project right away, and all the translations are automatically added to your repo as a pull request.  &lt;/p&gt;

&lt;p&gt;Make all of these steps automated to save your time for other tasks.  &lt;/p&gt;

&lt;h2&gt;
  
  
  CakePHP Localization Basics
&lt;/h2&gt;

&lt;p&gt;Developers often underestimate the complexity of localization. An application aiming for a multilingual market should contain more than just translated copy. You should also consider date and time formats, currency symbols, and pluralization.  &lt;/p&gt;

&lt;p&gt;To make it easier for you to understand the basics, let’s talk about CakePHP localization and gettext.&lt;/p&gt;

&lt;h3&gt;
  
  
  CakePHP – Gettext
&lt;/h3&gt;

&lt;p&gt;Since CakePHP follows standard gettext strategies, CakePHP localization requires storing translatable text in &lt;a href="https://support.crowdin.com/file-formats/po/#custom-attributes" rel="noopener noreferrer"&gt;.po files&lt;/a&gt;. It is one of the most common human/machine-readable file formats.&lt;/p&gt;

&lt;p&gt;So that's why the first step towards the multilingual CakePHP app is to install &lt;a href="https://www.gnu.org/software/gettext/" rel="noopener noreferrer"&gt;gettext&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set Up CakePHP Translations
&lt;/h3&gt;

&lt;p&gt;The simplest way to “transform” a single-language application into a multilingual application is to use the &lt;code&gt;__()&lt;/code&gt; function in your code. &lt;/p&gt;

&lt;p&gt;Here is an example of some code for a single-language application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h2&amp;gt;Home page&amp;lt;/h2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To internationalize your code, all you need to do is to wrap all strings you need to localize in __() like so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h2&amp;gt;&amp;lt;?= __('Home page') ?&amp;gt;&amp;lt;/h2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These two code examples are identical in terms of functionality – they will both send the content to the browser. The &lt;code&gt;__()&lt;/code&gt; function will translate the passed string if a translation is available. If there are no translations, it returns the texts without any changes. That means, the original string will appear on the web page.&lt;/p&gt;

&lt;p&gt;Note: You do not need to instantiate the L10n class. It happens automatically the first time the &lt;code&gt;__()&lt;/code&gt; function is called.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Language Files
&lt;/h3&gt;

&lt;p&gt;Create one or more .po files, depending on how the file is and how many languages you want. Place files under &lt;em&gt;src/Locale/&lt;/em&gt; and within this directory. It's important to create a subfolder for each language the application needs to support.&lt;/p&gt;

&lt;p&gt;If you choose to use just one .po file, you'll wrap your strings with the &lt;code&gt;__()&lt;/code&gt; helper. If you choose to have multiple .po files in order to avoid one massive file, you can use the &lt;code&gt;__d()&lt;/code&gt; helper so that you could specify the domain (domain = name of the .po file without the .po extension).&lt;/p&gt;

&lt;p&gt;Translation folders can be the two or three-letter ISO code of the language or the full locale name such as &lt;code&gt;fr_FR&lt;/code&gt;, &lt;code&gt;es_ES&lt;/code&gt;, &lt;code&gt;es_DO&lt;/code&gt;, which contains both the language and the country where it is spoken.&lt;/p&gt;

&lt;p&gt;View Crowdin &lt;a href="https://support.crowdin.com/api/language-codes/" rel="noopener noreferrer"&gt;languages codes&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/src
        /Locale
            /fr
                mywebapp.po
            /es
                mywebapp.po

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

&lt;/div&gt;



&lt;p&gt;The source strings will be marked with “&lt;strong&gt;msgid&lt;/strong&gt;” and shouldn’t be changed. Strings marked with “&lt;strong&gt;msgstr&lt;/strong&gt;” are where you put the translation. The translation starts blank and needs to be filled in. Don't forget to keep quotes around your translation.  &lt;/p&gt;

&lt;p&gt;If “&lt;strong&gt;msgctxt&lt;/strong&gt;” is given, it will be used as part of the translation title, which you can use to provide the context. In the next section, we will cover more details about context.&lt;/p&gt;

&lt;p&gt;An example translation file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;msgid "Settings and privacy"
msgstr "Paramètres et confidentialité"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you install the integration with your VSC system, you can customize content synchronization between your repository and Crowdin. For this, change the configuration in the Crowdin UI, or edit the configuration file based on your preferences and upload it.  &lt;/p&gt;

&lt;p&gt;For example, you can define the path for files, map your own languages to be recognizable in your localization projects, rename translation files, select files and directories that you don’t need to translate, and more.  &lt;/p&gt;

&lt;p&gt;Read more about &lt;a href="https://support.crowdin.com/vcs-integrations-configuring-online/?q=language%20codes#creating-a-configuration" rel="noopener noreferrer"&gt;VCS Integrations&lt;/a&gt; and a &lt;a href="https://support.crowdin.com/configuration-file/" rel="noopener noreferrer"&gt;configuration file&lt;/a&gt;.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Add String Context
&lt;/h3&gt;

&lt;p&gt;Providing translators with context improves translation quality, makes the translation process easier, and streamlines the QA process by reducing the possibility of user error.  &lt;/p&gt;

&lt;p&gt;You can add a “comment” to your string to give translators hints about a translatable string.&lt;/p&gt;

&lt;p&gt;Let's look at the word "email". In English, it refers to a noun and a verb. To specify which one is used here, you can use the &lt;code&gt;__x()&lt;/code&gt; function. The context will appear on the &lt;strong&gt;msgctxt&lt;/strong&gt; line in the resulting .po file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo __x('noun', 'email');

echo __x('verb', 'email');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first argument is the context of the message, and the second is the message to be translated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;msgctxt "noun"
msgid "email"
msgstr ""
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Set the Default Locale
&lt;/h3&gt;

&lt;p&gt;You can set the default locale in your &lt;em&gt;config/app.php&lt;/em&gt; file by setting &lt;code&gt;App.defaultLocale&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The default locale controls several aspects of your application, including the default language, the date and time formats. It can also control the number or currency format whenever any of those is displayed using CakePHP’s localization libraries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'App' =&amp;gt; [
    ...
    'defaultLocale' =&amp;gt; env('APP_DEFAULT_LOCALE', 'en_US'),
    ...
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check out the official &lt;a href="https://book.cakephp.org/3/en/core-libraries/internationalization-and-localization.html" rel="noopener noreferrer"&gt;CakePHP documentation&lt;/a&gt; to discover further information about using plurals, variables, and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Provide Context – Improve the Translation Quality
&lt;/h2&gt;

&lt;p&gt;Context ensures the quality of your localized product and makes the translation process easier. There are a lot of ways to provide context. It can be screenshots, videos, a link to the entire file, or even better – a visual preview right in the Editor where translators work.  &lt;/p&gt;

&lt;p&gt;The original context is particularly important when sentences are short or consist of few words, as often happens in our case with web applications.  &lt;/p&gt;

&lt;p&gt;To make it easier for you to provide context for translators and reduce manual work, Crowdin has created an &lt;a href="https://support.crowdin.com/enterprise/in-context/" rel="noopener noreferrer"&gt;In-Context Localization tool&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;You can use the tool to create an overlay for your app. Translators can translate and receive context in real-time. In-context localization is connected with the actual project created in Crowdin, which contains the translatable files. The translators can preview their translations as if in the real app interface. Translation files are stored within your Crowdin project, and you can decide when to pull them to your application (for example, only pull them after reviewing by a proofreader, so you can be confident in the quality of the final product).&lt;/p&gt;

&lt;p&gt;Read our article about the &lt;a href="https://blog.crowdin.com/2019/11/05/no-context-no-quality-give-translators-context-to-get-better-translations/" rel="noopener noreferrer"&gt;In-Context tool&lt;/a&gt; and other ways to provide context for translators  on Crowdin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Localize Your App with Crowdin
&lt;/h3&gt;

&lt;p&gt;Automate localization process, release your app in several languages simultaneously, and provide an enhanced experience for your global customers with Crowdin. &lt;/p&gt;

&lt;p&gt;Get started and register a &lt;a href="https://accounts.crowdin.com/register?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=cakephp-localization&amp;amp;utm_content=article"&gt;Crowdin&lt;/a&gt; account.&lt;/p&gt;

</description>
      <category>cakephp</category>
      <category>webdev</category>
      <category>localization</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Webinar: How to localize your mobile app and drive your app store optimization (ASO) strategy</title>
      <dc:creator>Diana Voroniak</dc:creator>
      <pubDate>Thu, 09 Dec 2021 15:44:29 +0000</pubDate>
      <link>https://dev.to/crowdin/webinar-how-to-localize-your-mobile-app-and-drive-your-app-store-optimization-aso-strategy-3kp1</link>
      <guid>https://dev.to/crowdin/webinar-how-to-localize-your-mobile-app-and-drive-your-app-store-optimization-aso-strategy-3kp1</guid>
      <description>&lt;p&gt;Did you know that including #applocalization in your app store optimization strategy could boost your app downloads?&lt;br&gt;
You can learn more about this topic at our online webinar.&lt;/p&gt;

&lt;p&gt;Join Crowdin on December 22 at 11 AM EST / 5 PM CET for a webinar on mobile localization.&lt;/p&gt;

&lt;p&gt;Attend this free webinar to learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to get started with app localization&lt;/li&gt;
&lt;li&gt;Why context is essential when translating short copy&lt;/li&gt;
&lt;li&gt;Publishing new translations over-the-air with no need to update the app&lt;/li&gt;
&lt;li&gt;Driving your app store optimization strategy (ASO)&lt;/li&gt;
&lt;li&gt;Agency VS community translations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our Partnerships Manager Bohdan Sitarskyi and a special guest, Localization Project Manager Guillermo Umpiérrez, will discuss how you can make localization a part of your app store optimization strategy and drive more downloads.&lt;/p&gt;

&lt;p&gt;Localize your mobile apps with Crowdin and get relevant translations, provide translators with context, and update texts faster using automation features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Register now&lt;/strong&gt;: &lt;a href="https://bit.ly/3dx47zU" rel="noopener noreferrer"&gt;https://bit.ly/3dx47zU&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  About Crowdin:
&lt;/h2&gt;

&lt;p&gt;Crowdin is a cloud-based localization management software. With 2M registered users and 100K+ localization projects from all over the world. Efficiently create and manage all your multilingual content in one place. Localize your apps, websites, games, help documentation, designs, and all that create a native experience for your customers around the globe.&lt;/p&gt;

&lt;p&gt;Trusted by GitHub, Avast, GitLab, Buffer, Calendly, and Wrike, and other companies creating multilingual products.&lt;/p&gt;

&lt;p&gt;Crowdin integrates with GitHub, GitLab, Bitbucket, Azure Repos, and 100+tools. You can use our API, CLI, webhooks, apps and customize your experience depending on your needs.&lt;/p&gt;

</description>
      <category>android</category>
      <category>ios</category>
      <category>localization</category>
      <category>webinar</category>
    </item>
    <item>
      <title>Mobile Apps Localization</title>
      <dc:creator>Diana Voroniak</dc:creator>
      <pubDate>Wed, 10 Nov 2021 08:16:07 +0000</pubDate>
      <link>https://dev.to/crowdin/mobile-apps-localization-2093</link>
      <guid>https://dev.to/crowdin/mobile-apps-localization-2093</guid>
      <description>&lt;p&gt;Whenever you are new to localization, the best thing to keep in mind is that localization is an integral part of product development, the same as prototyping or testing. Thus, localization will require some extra setups at the beginning in order for you to create a continuous workflow later.&lt;/p&gt;

&lt;p&gt;In case you’re afraid that localization can slow down your team and the results you make, we can change your mind. Downloading resource files, sending them to translators, and integrating translations into the codebase manually is really time-consuming, but luckily, it’s not the only option.&lt;/p&gt;

&lt;p&gt;Learn how Crowdin helps you automate the localization of your Android or iOS mobile apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Recap: One Project or Two for Each App?
&lt;/h2&gt;

&lt;p&gt;The content of iOS and Android apps typically overlaps. In Crowdin, you can easily identify duplicate strings and ensure that the same content is not translated twice.&lt;/p&gt;

&lt;p&gt;You can hide duplicates. Translators will see and translate only one string rather than five identical ones, while the translation will be automatically applied to duplicates. Or choose to show duplicates - if the content is precisely different and requires different translations.&lt;/p&gt;

&lt;p&gt;You can enable &lt;em&gt;Hide duplicates&lt;/em&gt; option in the project settings.&lt;/p&gt;

&lt;p&gt;Unify placeholders for iOS and Android strings. This will help to treat more strings as duplicates. For example, &lt;em&gt;Hello, %s!&lt;/em&gt; (Android) and &lt;em&gt;Hello, %@!&lt;/em&gt; (iOS) will be matched as duplicates and will be shown to translators as &lt;em&gt;Hello, [%s]!&lt;/em&gt; On export, you’ll get files with the placeholders in their original formatting.&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%2Fihxc1390bo1w7s0qs9k4.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%2Fihxc1390bo1w7s0qs9k4.png" alt="Crowdin settings, unify placeholders" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read more about how to &lt;a href="https://support.crowdin.com/advanced-project-setup/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article#unify-placeholders"&gt;unify placeholders&lt;/a&gt; in Android and iOS localization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Send Strings Directly from Your Design Tool
&lt;/h2&gt;

&lt;p&gt;Did you know that designers could send strings for translation with the keys and text segmentation rules while working on the prototypes?&lt;/p&gt;

&lt;p&gt;Your team can send strings for translation directly from a design tool like Figma, Sketch, or Adobe XD. Don’t worry about integrating texts into the codebase. Each string has its unique identifier, so development teams can integrate both sources and translated content in the codebase without any problems. &lt;/p&gt;

&lt;p&gt;If you set up automatic synchronization with your repo - these updates can be added automatically. In the same way, you can edit or create sources - to synchronize them back, for example, in GitHub integration - choose &lt;em&gt;sync sources&lt;/em&gt; in the integration settings.&lt;/p&gt;

&lt;p&gt;In addition, if the source files in Crowdin are of a different format than Android XML and Strings, engineers will be able to launch custom exporters and download the files in the appropriate format. They can use either Crowdin API or &lt;em&gt;crowdin download targets&lt;/em&gt; command of the CLI 3.4.0 version and higher.&lt;/p&gt;

&lt;p&gt;You can read more about custom file exporters and discover more smart ways of &lt;a href="https://blog.crowdin.com/2021/02/11/smart-ways-to-approach-mobile-app-localization/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article"&gt;mobile app localization&lt;/a&gt; on our blog.&lt;/p&gt;

&lt;p&gt;Crowdin's integration with their design tools allows designers to preview translated mockups, customize them as needed, or notify engineers that elements must be scaled.&lt;/p&gt;

&lt;p&gt;Learn more about Crowdin plugins for design teams and how they help streamline &lt;a href="https://blog.crowdin.com/2021/01/27/best-practices-for-ui-localization/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article"&gt;user interface localization&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update Localized Content with Over-the-Air Technology
&lt;/h2&gt;

&lt;p&gt;Sometimes rolling out new versions on the App Store or Google Play each time new translations arrive is not an option. When updates happen occasionally, waiting for app verification does not cause much trouble, but if you want to deliver translations to users much faster, you should consider using &lt;a href="https://blog.crowdin.com/2019/12/12/over-the-air-content-delivery-for-android-and-ios-apps-available-in-open-beta/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article"&gt;Over-the-Air technology&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;To use it, you need to create a distribution in your Crowdin project and install Crowdin SDK on the mobile app (&lt;a href="https://github.com/crowdin/mobile-sdk-android/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article"&gt;Android&lt;/a&gt; or &lt;a href="https://github.com/crowdin/mobile-sdk-ios/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article"&gt;iOS&lt;/a&gt;). Distribution is a CDN vault that mirrors the translated content of your project. You can create separate distributions for different files, or one distribution per project.&lt;/p&gt;

&lt;p&gt;Once you're done with the settings, you can create releases within the required distribution each time you'd like to update translations in your app and deliver translations to consumers immediately. You can discover even more ways to &lt;a href="https://blog.crowdin.com/2021/02/11/smart-ways-to-approach-mobile-app-localization/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article"&gt; localize your mobile app&lt;/a&gt; on our blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  Localize Your Product with Crowdin
&lt;/h2&gt;

&lt;p&gt;Keep developing new features and improvements while translators receive new texts in real-time. Release multilingual versions for customers around the globe simultaneously. Register in &lt;a href="https://accounts.crowdin.com/register/?utm_source=dev.to&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mobile-apps-localization&amp;amp;utm_content=article"&gt;Crowdin&lt;/a&gt; to try it out first hand, and if you’ve got any questions, &lt;a href="https://crowdin.com/contacts" rel="noopener noreferrer"&gt;contact&lt;/a&gt; the support team. &lt;/p&gt;

</description>
      <category>localization</category>
      <category>translation</category>
      <category>multilingual</category>
      <category>app</category>
    </item>
  </channel>
</rss>
