If you are a PHP developer and you want to display your site in more than one language, then you need to learn how to internationalise your code. Offering your content in several languages will enable you to reach a larger audience.
*** TOTALLY REWRITTEN IN 2020 ***
Learn how to Internationalise your PHP code in this Comprehensive Course.
Learn how to get the language from the URL
Use international standards for identifying languages
Build reusable code for handling multi-language sites
Learn how to use the industry standard gettext
Translate dynamic content including plurals and dates
Translate content in databases
Create a user-friendly interface for visitors
The essential skills required if you want to develop a multi-language website or web application in PHP.
Not everyone understands the same language. To reach a larger audience with your content, you need to display your content in more than one language. gettext has been the industry standard for translating content for many years. In addition to learning how to use gettext with PHP, we’ll learn how to offer the best experience for the international visitor.
Content and Overview
This course is designed for the PHP developer who currently has some content developed in one language. Learning the techniques on this course will enable you to internationalise your site, so you can display its content in multiple languages.
Suitable for all PHP developers, you’ll start by learning the basics of internationalization (i18n) in PHP.
You’ll learn best practices for getting the language code from the URL, and how to use it in your code.
Throughout the course, we’ll build code that you can reuse in all your projects.
You’ll learn how to use gettext, and also an alternative that overcomes its limitations.
In addition to simple strings, you’ll learn how to translate plurals, numbers, dates and long strings of text.
You’ll learn how to handle content in a database, along with how to handle images that contain text.
All the time we’ll adhere to industry standards and best practices.
When you complete the course you’ll be able to internationalise your PHP code, allowing you to display your content in more than one language.
Complete with all the code shown in the lectures, you’ll be able to work alongside the instructor and will receive a verifiable certificate of completion upon finishing the course.
Also, at all times throughout the course you have access to the instructor in the Q&A section to ask for help with any topic related to the course.
Enrol now and add internationalization to your PHP skillset!
In this lecture you'll get an overview of what you need to install to code along with the instructor, and you'll learn how to get the most out of the course.
In this lecture you'll learn how to install a web server, PHP, a database server like MySQL or MariaDB, and phpMyAdmin to administer it.
In this lecture you'll learn how to configure a virtual host to host your content. This will allow you to develop your code in its own web root folder, and access it with its own address in the web browser.
In this lecture you'll learn how to install the Composer dependency manager, required for later on in the course.
In this lecture you'll learn what the internationalization extension is in PHP, and how to enable it.
In this lecture we'll start by copying the entire page to show a translated version. You'll learn how this works, and why it's not a good way to translate content.
In this lecture you'll learn how to show translated content using conditional statements around each string.
In this lecture you'll learn how to store translations separately from the code where they're displayed, and why this is a good idea.
In this lecture you'll learn how to encode your source files so that characters from any language are displayed properly.
In this lecture you'll learn about international standards for language codes, and why we use them when passing the language in the URL.
In this lecture you'll learn how to get the language code from the query string.
In this lecture you'll learn how to get the language code from a subfolder or URL segment. You'll learn how to use .htaccess files to rewrite the URL so the subfolder is converted to the query string in the code.
In this lecture you'll learn how to get the language code from a subdomain.
In this lecture you'll learn how to get the language code from the top-level domain.
In this lecture we'll start building an I18n class that we can use for various functionality throughout the rest of the course.
In this lecture you'll learn what locale codes are, and the international standards used to create them.
In this lecture you'll learn how to canonicalise the locale code so that we can accept any variation from the URL.
In this lecture we'll match the incoming locale code from the URL to the ones that we support on the site, matching just the language code if necessary.
In this lecture you'll learn how to redirect to a default language if the one supplied is invalid or not present. Thus making it more user friendly by always showing content instead of an error message.
In this lecture you'll learn why it's important to declare the language of the HTML document, and how to do it in a valid way.
In this lecture you'll learn how the browser has a list of preferred languages, and how to access these in PHP.
In this lecture we'll process the Accept-Language header from the browser to get a list of the visitor's preferred languages.
In this lecture we'll compare the locales we support to the list of preferred ones from the browser to get the best match.
In this lecture we'll get the best match just taking the language codes into consideration.
In this lecture we'll refactor the code we've written so far so it's clearer and easier to maintain.
In this lecture you'll learn how we can match the visitor's IP address to a country code using geolocation, including the various options for doing so in PHP.
In this lecture we'll use the IPinfo geolocation API to match the visitor's IP address to the country, then use that to select the default language.
In this lecture we'll look at the various formats available for storing translations, from PHP arrays, to XML and YAML. We'll also learn about PO and MO files, the format used by gettext.
In this lecture you'll learn how to use the gettext function in PHP to mark up code that needs to be translated.
In this lecture you'll create the specific folder structure that gettext requires.
In this lecture you'll install the Poedit editor and create the .po translation file getttext needs.
In this lecture you'll learn how to configure gettext in PHP with the necessary locale and location of the translation files.
In this lecture we'll install MoTranslator, which overcomes gettext's limitations but is still compatible with po and mo files.
In this lecture you'll learn how to use MoTranslator in gettext-mode.
In this lecture you'll learn how to configure Poedit to work with MoTranslator.
In this lecture you'll learn how to use the simpler object API in MoTranslator.
In this lecture you'll learn the advantages and disadvantages of using real or keyword messages in the translation file.
In this lecture you'll learn how to translate a string containing an interpolated variable.
In this lecture you'll learn how to handle translating plural strings that depend on the value of a number.
In this lecture you'll learn how to display decimal numbers using the decimal separator character based on the locale.
In this lecture you'll learn how to display dates based on the locale, with the month and day names translated.
In this lecture you'll learn how to handle strings of text that are too long for gettext.
In this lecture you'll learn how to display a message if the file containing the translation is unavailable.
In this lecture you'll learn why using a plain-text markup language is a good idea when using an external translator.
In this lecture we'll convert the HTML in our translation files to Markdown, and install a Markdown parser to convert them back to HTML.
In this lecture you'll learn one method of translating text in a database, by adding additional columns to the same table.
In this lecture you'll learn another method of translating text in a database, by adding an additional table with the translations.
In this lecture you'll learn how to display localised versions of images that contain text.
In this lecture you'll add navigation links to the HTML to switch between languages more easily.
In this lecture you'll learn how best to create language navigation links - where to put them, what they should say, and why you shouldn't use flags.
In this lecture we'll remove some code duplication so we're not repeating ourselves when we add more pages.
In this lecture we'll add a second page so we can see how language switching links work with multiple pages.
In this lecture you'll learn how to calculate the full URL of the current page based on the $_SERVER data, including the protocol, hostname, and port.
In this lecture we'll generate the data needed for the language navigation links, based on the supported locales and the current URL.
In this lecture we'll use the data from the previous lecture to add the language navigation links to the HTML.
In this lecture we'll remember the selected locale in a cookie, so that we can redirect back to that if the visitor returns to the site without a language code in the URL.
In this lecture we'll redirect back to the locale that we previously remembered in the cookie.