Install and update translations in WordPress with Composer

Using Composer is a great way of organizing your WordPress project, with WordPress itself, plugins and themes declared as dependencies. However, an issue I’ve often seen is how you install translation files and keep them updated.

Koodimoonni’s repository

There is a very cool project by Koodimonni, who have created a Composer repository of some of the translation packs on wordpress.org. Unfortunately this repository is limited to just 4 plugins, and the twenty* themes. This is close, but not enough. I could have forked that project and included more plugins and themes myself, but if people started using my repository, I would felt responsible for keeping it running too.

Angry Creative’s autodownloader

At the contributor day of WordCamp Stockholm 2017, the Swedish agency Angry Creative released a Composer package – Composer Auto Language Updates – that connects to the API at wordpress.org to download the translations for you. That is a great idea, and works with every plugin and theme hosted on wordpress.org!

Angry Creative’s package however has its quirks and in January I started fixing bits of it, and was 95% ready to make a pull request. However, life happened, and I forgot about it.

I forgot about Angry Creative’s package, until yesterday afternoon, when I randomly picked it up again. I still wasn’t happy with it – even with my contributions from January, so I started rewriting the whole thing as a Composer plugin. With a few hours today as well, I’ve managed to finish the rewrite, package it and release it so others can benefit from it.

Meet the Composer plugin wplang

Today I released the Composer package bjornjohansen/wplang. It is available on GitHub if you want to look at it, fork it or contribute to it. There are bits of Angry Creative’s original code and logic in there, so I kept the license as GPLv2+. It is also released on Packagist, so to install it you can just run a Composer command:

composer require bjornjohansen/wplang

To define which languages you want to download, and which directory to put your language files in, you have to add a small section in your composer.jsonfile:

"extra": {
    "wordpress-languages": [ "en_GB", "nb_NO", "sv_SE" ],
    "wordpress-language-dir": "wp-content/languages"
}

You should propbably want to customize these values to suit your needs.

Finally run:

composer update

Now Composer will try to pull down translations for WordPress, and your plugins and themes from wordpress.org every time you install or update a package.

Drawbacks

This is one of the original drawbacks that I want to fix, which should be possible with the current structures: Translations are only downloaded when a package (i.e. WordPress, plugin or theme) is installed or updated. This means that if a translation package for a version you already have installed is updated, the translation won’t be updated until a new version of the plugin/theme is released.

Maybe you can help me fix it?

47 Comments

    1. Thanks, Peter.
      I’m using the same Composer events as you are using. Guess I’ll have to see how you solved it :-)

      1. I looks like you did a more thorough rewrite and therefore has nicer code overall. Your Composer integration also looks a much better, but I have more features. We should merge the projects. What do you say?

  1. معمولا وارد شدن آسیب، وجود یک عامل تحریک یا تحت فشار قرار گرفتن یکی از عصب‌ها یا رشته‌های عصبی بازو، مچ دست و پا علت شایع مورمورشدن یا خواب رفتن دست و پا شناخته شده است.

  2. به دلایل مختلفی مانند مشکلات درون سرچ کنسول،بهبود سرعت و … شما ممکن است مایل به بستن خوراک وردپرس و یا همان rss feed سایت خود باشید. برای غیرفعال کردن خوراک وردپرس با ما همراه باشید.

  3. به دلایل متفاوتی ممکنه که شما بخواهید هدر و فوتر سایت خود را در صفحه ای مخصوص و یا در تمام صفحات پنهان کنید بدون اینکه هدر و فوتر وبسایت را کاملا حذف کنید.

  4. حذف موهای زائد بدن به وسیله لیزر به علت دائمی بودن آن، بی خطر، ایمن بودن و بی‌درد بودنش بهترین و محبوب‌ترین روش برای حذف موهای زائد بدن است. لیزر موهای زائد در قم با بهره‌گیری از متخصصان این علم و زیر نظر پزشک، آماده ارائه خدمات به همشهریان عزیز قمی است.

    لیزر موهای زائد

  5. فیلم PVB تولید شده توسط شرکت رازین پلیمر دارای خواص مکانیکی، فیزیکی و اپتیک ویژه بوده و براساس استاندارد مورد تایید صنعت شیشه دنیا تولید و عرضه می‌شود. در آزمایشگاه شرکت رازین پلیمر راه ابریشم علاوه بر کنترل کیفی فیلم PVB، شیشه­‌ی ایمنی لمینیت شده با فیلم PVB بر اساس استاندارد ECER43 مورد آزمایش تست‌های سقوط گلوله، مدل ضربه سر، آب جوش، واپیچش نور، سنجش جذب UV و … قرار می‌­گیرد.

    1. تمامی فیلم‌های PVB تولید شده توسط شرکت رازین پلیمر راه ابریشم، همواره با یک لایه پلی‌اتیلن کلرینیت شده پیچیده شده و درون اتاق‌های تمیز خطوط تولید این شرکت، با فیلم‌های سه لایه الومینیومی وکیوم و عایق بندی می‌گردد.

  6. در دپارتمان‌های مختلف شرکت رازین پليمر راه ابریشم فارغ التحصيلان و متخصصان جوان و با تجربه از بهترین مراكز علمي و آموزشی كشور فعال بوده و با هدف توسعه روز افزون و ارتقای كيفيت محصولات ارائه شده تلاش می‌كنند.

  7. چرا سئو برای بازاریابی مهم است؟
    سئو بخش اساسی بازاریابی دیجیتال است زیرا افراد هرساله تریبون های جستجو انجام می دهند ، اغلب با هدف تجاری برای یافتن اطلاعات در مورد محصولات و خدمات. جستجو اغلب منبع اصلی ترافیک دیجیتال برای برندها است و مکمل سایر کانال های بازاریابی است. دیده شدن بیشتر و رتبه بالاتر در نتایج جستجو نسبت به رقبای شما می تواند تاثیر مهمی بر نتیجه شما داشته باشد.

  8. سئو مخفف “بهینه سازی موتور جستجو” است. به عبارت ساده، این به معنای فرآیند بهبود سایت شما برای افزایش دید آن هنگام جستجوی محصولات یا خدمات مرتبط با کسب و کار شما در گوگل، بینگ و سایر موتورهای جستجو است. هرچه صفحات شما در نتایج جستجو بهتر دیده شوند، احتمال بیشتری برای جلب توجه و جذب مشتریان بالقوه و فعلی به کسب و کار خود خواهید داشت.
    https://tarinotech.com/seo-%d8%b3%d8%a6%d9%88/

  9. تیم برادران پارت به عنوان یکی از قدیمی ترین وارد کنندگان قطعات اریو در ایران مفتخر است بهترین کیفیت را به مشتریان خود ارائه دهد.

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.