Multi-language PHP: internationalisation for PHP developers
- Description
- Curriculum
- FAQ
- Reviews
- Grade
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!
-
1Introduction and welcome
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.
-
2Install a web server with PHP, a database server and phpMyAdmin
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.
-
3Optional: configure a virtual host with its own root folder and hostname
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.
-
4Install the Composer dependency manager
In this lecture you'll learn how to install the Composer dependency manager, required for later on in the course.
-
5Enable the PHP internationalization extension
In this lecture you'll learn what the internationalization extension is in PHP, and how to enable it.
-
6Translate a page by copying the entire page and translating all the text in 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.
-
7Translate a page by using conditional statements for every string
In this lecture you'll learn how to show translated content using conditional statements around each string.
-
8Store translated strings in an array with one array for each language
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.
-
9Display any character by encoding files using UTF-8
In this lecture you'll learn how to encode your source files so that characters from any language are displayed properly.
-
10Language code standards and passing the language code in the URL
In this lecture you'll learn about international standards for language codes, and why we use them when passing the language in the URL.
-
11Get the language code from the query string
In this lecture you'll learn how to get the language code from the query string.
-
12Get the language code from a subfolder or URL segment
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.
-
13Get the language code from a subdomain
In this lecture you'll learn how to get the language code from a subdomain.
-
14Get the language code from the top-level domain
In this lecture you'll learn how to get the language code from the top-level domain.
-
15Add an I18n class with a list of supported languages
In this lecture we'll start building an I18n class that we can use for various functionality throughout the rest of the course.
-
16Combine language codes and region codes to create locale identifiers
In this lecture you'll learn what locale codes are, and the international standards used to create them.
-
17Canonicalise the locale code from the URL
In this lecture you'll learn how to canonicalise the locale code so that we can accept any variation from the URL.
-
18Get the best match from the list of supported locales
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.
-
19Redirect to the default locale if the value in the URL is invalid
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.
-
20Declare the language of the HTML document with the lang attribute
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.
-
21Specifying the language of the HTML document
-
22Get language preferences from the browser: the HTTP Accept-Language header
In this lecture you'll learn how the browser has a list of preferred languages, and how to access these in PHP.
-
23Parse the Accept-Language header to get a list of locales in order of preference
In this lecture we'll process the Accept-Language header from the browser to get a list of the visitor's preferred languages.
-
24Compare supported locales to the browser preferences and choose the best match
In this lecture we'll compare the locales we support to the list of preferred ones from the browser to get the best match.
-
25Get the best match to the browser preferences using just the language codes
In this lecture we'll get the best match just taking the language codes into consideration.
-
26Refactor the code to make it clearer
In this lecture we'll refactor the code we've written so far so it's clearer and easier to maintain.
-
27Geolocation: matching the user's IP address to their location
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.
-
28Use a geolocation API to get the country code from the IP address
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.
-
29The options for storing translations in separate files
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.
-
30The PHP gettext extension and gettext function for marking translatable strings
In this lecture you'll learn how to use the gettext function in PHP to mark up code that needs to be translated.
-
31Create the folders to store the gettext translation files
In this lecture you'll create the specific folder structure that gettext requires.
-
32Install the Poedit editor and create a .po translation file
In this lecture you'll install the Poedit editor and create the .po translation file getttext needs.
-
33Configure gettext to use the translation file and show the translations
In this lecture you'll learn how to configure gettext in PHP with the necessary locale and location of the translation files.
-
34MoTranslator: a .mo-file-compatible alternative to gettext
In this lecture we'll install MoTranslator, which overcomes gettext's limitations but is still compatible with po and mo files.
-
35Using MoTranslator with its gettext compatibility functions
In this lecture you'll learn how to use MoTranslator in gettext-mode.
-
36Configure Poedit to extract MoTranslator translations
In this lecture you'll learn how to configure Poedit to work with MoTranslator.
-
37Use the simpler MoTranslator object API
In this lecture you'll learn how to use the simpler object API in MoTranslator.
-
38Using real or keyword messages: the advantages and disadvantages
In this lecture you'll learn the advantages and disadvantages of using real or keyword messages in the translation file.
-
39Including variables in translated strings: use sprintf with gettext
In this lecture you'll learn how to translate a string containing an interpolated variable.
-
40Display plural forms of messages using ngettext
In this lecture you'll learn how to handle translating plural strings that depend on the value of a number.
-
41Decimal separators: format decimal numbers based on the locale
In this lecture you'll learn how to display decimal numbers using the decimal separator character based on the locale.
-
42Translate day and month names in dates 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.
-
43Handle long strings of text in separate files
In this lecture you'll learn how to handle strings of text that are too long for gettext.
-
44Display a message if the file containing the translation is unavailable
In this lecture you'll learn how to display a message if the file containing the translation is unavailable.
-
45Use a plain-text formatting language to help translators
In this lecture you'll learn why using a plain-text markup language is a good idea when using an external translator.
-
46Convert translations in separate files to Markdown
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.
-
47Translate data from a database: multiple columns in one table
In this lecture you'll learn one method of translating text in a database, by adding additional columns to the same table.
-
48Translate data from a database: separate table for the translations
In this lecture you'll learn another method of translating text in a database, by adding an additional table with the translations.
-
49Display localised versions of images that contain text
In this lecture you'll learn how to display localised versions of images that contain text.
-
50Add navigation links for switching between languages
In this lecture you'll add navigation links to the HTML to switch between languages more easily.
-
51Language switching links: what they should say and where to put them
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.
-
52Remove code duplication: extract common i18n code out to separate files
In this lecture we'll remove some code duplication so we're not repeating ourselves when we add more pages.
-
53Add a second page and include the common i18n code
In this lecture we'll add a second page so we can see how language switching links work with multiple pages.
-
54Calculate the full current URL from the $_SERVER data
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.
-
55Generate the data for the language navigation links
In this lecture we'll generate the data needed for the language navigation links, based on the supported locales and the current URL.
-
56Add the language navigation links to the HTML
In this lecture we'll use the data from the previous lecture to add the language navigation links to the HTML.
-
57Remember the selected locale in a cookie
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.
-
58Redirect to the locale remembered in the cookie
In this lecture we'll redirect back to the locale that we previously remembered in the cookie.