Current Location: Home> Latest Articles> How to Implement Internationalization and Localization in PHP and CGI: A Guide for Cross-Language Adaptation

How to Implement Internationalization and Localization in PHP and CGI: A Guide for Cross-Language Adaptation

M66 2025-06-14

1. The Concept of Internationalization and Localization

Internationalization (I18N) refers to the ability of an application to be designed to support multiple languages and cultures. Localization (L10N) refers to the process of translating an application's interface and text for a specific language and region.

2. Implementing Internationalization and Localization

In PHP, we can use the gettext extension to implement internationalization. gettext is a standard internationalization tool that allows us to translate the text of an application into different languages. First, we need to install the gettext extension. Then, we need to create a .po file containing all the translated text and use the xgettext command to extract all translatable strings from the source code. Next, we can use a dedicated translation tool like Poedit to edit the translation strings in the .po file. Finally, we need to convert the .po file into a binary .mo file. Below is an example of PHP code for internationalization:

<?php
    // Set the locale
    putenv("LC_ALL=zh_CN.UTF-8");
    setlocale(LC_ALL, "zh_CN.UTF-8");

    // Specify the path to the .mo file
    bindtextdomain("messages", "locale");

    // Select the translation domain
    textdomain("messages");

    // Use gettext to translate text
    echo _("Hello World!");
?>

In CGI, we can use the internationalization library (libintl) to achieve internationalization and localization. The internationalization library is a standard library that provides functionality similar to gettext. We need to ensure that libintl is installed on the server. Below is an example of CGI code for internationalization:

#include <locale.h>
#include <libintl.h>
#include <stdio.h>

int main() {
    // Set the locale
    setlocale(LC_ALL, "zh_CN.UTF-8");

    // Bind the translation domain
    bindtextdomain("messages", "locale");

    // Select the translation domain
    textdomain("messages");

    // Use gettext to translate text
    printf("%s", gettext("Hello World!"));
    return 0;
}

3. Implementing Localization

In addition to text translation, localization also includes formatting dates, times, and currencies. In PHP, we can use the strftime and money_format functions to format date-time and currency. Below is an example of PHP code for localization:

<?php
    // Set the locale
    setlocale(LC_ALL, "zh_CN.UTF-8");

    // Format date-time
    $date = strftime("%d %B %Y");
    echo $date;

    // Format currency
    $number = 1234.56;
    $formatted_number = money_format("%n", $number);
    echo $formatted_number;
?>

In CGI, we can use the localeconv function library to get the localized date, time, and currency formats. Below is an example of CGI code for localization:

#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <localeconv.h>

int main() {
    // Set the locale
    setlocale(LC_ALL, "zh_CN.UTF-8");

    // Get the localized date-time format
    struct timeval tv;
    struct tm *tm;
    char date[128];

    gettimeofday(&tv, NULL);
    tm = localtime(&tv.tv_sec);

    strftime(date, sizeof(date), "%d %B %Y", tm);
    printf("%s", date);

    // Get the localized currency format
    struct lconv *lc = localeconv();
    double number = 1234.56;
    char formatted_number[128];

    snprintf(formatted_number, sizeof(formatted_number), lc->currency_symbol, number);
    printf("%s", formatted_number);

    return 0;
}

4. Conclusion

Internationalization and localization are the foundation for building cross-language and regional applications. In PHP and CGI, we can use the gettext extension and the internationalization library to achieve internationalization and localization. In addition to text translation, localization also involves formatting date, time, and currency. By applying these techniques effectively, we can provide a better user experience and ensure our applications can adapt to different languages and regions.

This article provides example code that can help readers understand and apply internationalization and localization techniques. Additionally, it is important to consider the cultural practices and habits of different languages and regions, and comply with local laws and regulations to ensure that applications function properly across various languages and regions.