백엔드 개발 PHP 튜토리얼 PHP中使用gettext来支持多语言的方法_PHP

PHP中使用gettext来支持多语言的方法_PHP

Jun 01, 2016 pm 12:16 PM
gettext 다국어

我们今天用一个简单的实例说明一下在PHP中的getText的用法(getText是一系列的工具和库函数,帮助程序员和翻译人员开发多语言软件的), 从而实现PHP的i18n.
现在, 我们假设要显示一个返回主页的link:
复制代码 代码如下:
//home.php:
$str = 'home';
print {$str}
HTML;

下面开启我们多语言的开发之旅:
创建pot文件,pot是Portable Object Template的首字母缩写,与po对应的是mo,mo是Machine Object的首字母缩写。前者意指原始的字符串文件,一般用于给翻译人员去修改的,后者则是与机器相关的,一般是供程序读取。可以手工创建pot文件,也可以通过xgettext从代码中抽取字符串来产生。这里是用xgettext来产生的:
xgettext -a home.php -o home.pot
运行该命令后,我们发现,在当前目录下,产生了一个名home.pot的文件,打开该文件,可以看到:
复制代码 代码如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-23 20:56+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: home.php:2
msgid "home"
msgstr "

根据pot产生不同语言的po文件,这里我们先产生一个简体中文的po文件:
export LANG=zh_CN.gb2312
msginit -l zh_CN.gb2312 -i home.pot
运行该命令后,我们发现,在当前目录下,产生了一个名zh_CN.po的文件,打开该文件,可以看到:
复制代码 代码如下:
# Chinese translations for PACKAGE package
# PACKAGE 软件包的简体中文翻译.
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# , 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-23 20:56+0800\n"
"PO-Revision-Date: 2009-07-23 21:00+0800\n"
"Last-Translator: FULL NAME \n"
"Language-Team: Chinese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.php:2
msgid "home"
msgstr "

翻译zh_CN.po里对应的字符串为中文:
复制代码 代码如下:
# Chinese translations for PACKAGE package
# PACKAGE 软件包的简体中文翻译.
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# , 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-23 20:56+0800\n"
"PO-Revision-Date: 2009-07-23 21:00+0800\n"
"Last-Translator: \n"
"Language-Team: Chinese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.php:2
msgid "home"
msgstr "主页

根据po文件生成mo文件。
msgfmt zh_CN.po -o zh_CN.mo
运行该命令后,我们发现,在当前目录下,产生了一个名zh_CN.mo的文件。它是二进制的,不能用文本编辑器打开。
安装mo文件到特定目录中:
cp -f zh_CN.mo .local/LC_MESSAGES/home.mo
修改程序。
复制代码 代码如下:
setlocale(LC_ALL, 'zh_CN');
// Specify location of translation tables
bindtextdomain("home", ".");
// Choose domain
textdomain("home");
// Translation is looking for in ./locale/zh_CN/LC_MESSAGES/home.mo now
$str = gettext('home'); //也可以使用_('home')
print {$str}
HTML;

运行这个脚本, 看看, 是不是输出正确的中文了呢?
添加其它语言也很容易,不需要修改程序,只需要像对待中文一样,生成一个mo文件,并安装到系统中对应的目录即可。切换不同的语言仅仅是修改当前的locale就行了。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

다국어 및 국제 지원을 달성하기 위해 vue 및 Element-plus를 사용하는 방법 다국어 및 국제 지원을 달성하기 위해 vue 및 Element-plus를 사용하는 방법 Jul 17, 2023 pm 04:03 PM

다국어 및 국제 지원을 위해 vue 및 Element-plus를 사용하는 방법 소개: 오늘날의 세계화 시대에 다양한 언어와 문화권의 사용자 요구에 대처하기 위해 다국어 및 국제 지원이 필수 기능이 되었습니다. 많은 프런트엔드 프로젝트에 사용됩니다. 이 기사에서는 프로젝트가 다양한 언어 환경의 요구에 유연하게 적응할 수 있도록 vue 및 Element-plus를 사용하여 다국어 및 국제 지원을 달성하는 방법을 소개합니다. 1. Element-plusElement-plus 설치는 vue 공식입니다.

PHP로 다국어 웹사이트를 구현하는 방법 PHP로 다국어 웹사이트를 구현하는 방법 May 22, 2023 am 11:31 AM

인터넷의 인기가 높아짐에 따라 점점 더 많은 웹사이트가 다국어를 지원해야 합니다. 이는 웹사이트의 독자층이 다양한 지역과 문화적 배경을 가질 수 있고, 웹사이트가 단일 언어로만 제공된다면 방문자의 수와 경험이 제한될 수 있기 때문입니다. 이 기사에서는 PHP로 다국어 웹사이트를 구현하는 방법을 소개합니다. 1. 언어 파일의 생성 및 설계 언어 파일은 모든 텍스트 문자열과 해당 번역을 저장하는 파일이며 특정 형식으로 생성되어야 합니다. 언어 파일을 생성할 때 다음 사항을 고려해야 합니다. 1. 이름 지정 및 저장 위치 파일 이름은 다음과 같아야 합니다.

CakePHP는 다국어를 어떻게 처리하나요? CakePHP는 다국어를 어떻게 처리하나요? Jun 06, 2023 am 08:03 AM

CakePHP는 개발자가 고품질 웹 애플리케이션을 신속하게 구축하는 데 도움이 되는 인기 있는 PHP 개발 프레임워크입니다. 세계화가 발전함에 따라 점점 더 많은 애플리케이션이 다국어를 지원해야 하며 CakePHP도 이에 상응하는 지원을 제공합니다. 이 기사에서는 CakePHP가 여러 언어를 처리하는 방법을 소개합니다. 1. 다국어 지원 다국어 지원은 CakePHP의 중요한 기능입니다. 버전 2.0부터 CakePHP는 gettext 파일 형식을 지원합니다.

i18n을 사용하여 Vue에서 다국어 전환을 구현하는 팁 i18n을 사용하여 Vue에서 다국어 전환을 구현하는 팁 Jun 25, 2023 am 09:33 AM

국제화가 지속적으로 발전함에 따라 점점 더 많은 웹사이트와 애플리케이션이 다중 언어 전환 기능을 지원해야 합니다. 널리 사용되는 프런트엔드 프레임워크인 Vue는 다중 언어 전환을 달성하는 데 도움이 되는 i18n이라는 플러그인을 제공합니다. 이 기사에서는 i18n을 사용하여 Vue에서 다중 언어 전환을 구현하는 일반적인 기술을 소개합니다. 1단계: i18n 플러그인 설치 먼저 npm 또는 Yarn을 사용하여 i18n 플러그인을 설치해야 합니다. 명령줄에 다음 명령을 입력합니다: npminst

다중 언어 프레임워크 개발에 PHP를 사용하는 방법은 무엇입니까? 다중 언어 프레임워크 개발에 PHP를 사용하는 방법은 무엇입니까? May 13, 2023 am 08:09 AM

세계화가 심화됨에 따라 점점 더 많은 웹사이트와 애플리케이션이 다국어를 지원해야 합니다. 웹 개발에 널리 사용되는 프로그래밍 언어인 PHP는 다중 언어 프레임워크 개발도 지원해야 합니다. 이 기사에서는 다중 언어 프레임워크 개발에 PHP를 사용하는 방법을 소개합니다. 1. 다국어 프레임워크란 무엇인가요? 먼저 다국어 프레임워크가 무엇인지 알아보겠습니다. 다중 언어 프레임워크는 이름에서 알 수 있듯이 여러 언어를 지원할 수 있는 프레임워크입니다. 국제화 및 지역화 디자인에서는 다국어 프레임워크가 필수적입니다. 다양한 지원이 가능합니다

PHP와 Typecho를 사용하여 다국어 지원 웹사이트를 구축하는 방법 PHP와 Typecho를 사용하여 다국어 지원 웹사이트를 구축하는 방법 Jul 21, 2023 pm 11:21 PM

PHP와 Typecho를 사용하여 다국어 지원 웹사이트를 구축하는 방법 소개: 세계화가 발전하면서 다국어 지원 웹사이트 구축은 점차 기업과 개인이 추구하는 목표가 되었습니다. 널리 사용되는 프로그래밍 언어인 PHP는 뛰어난 PHP 오픈 소스 블로그 프로그램인 Typecho와 결합되어 다국어 웹사이트를 쉽게 구축할 수 있습니다. 이 기사에서는 PHP와 Typecho를 사용하여 다국어 지원 웹사이트를 구축하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. 먼저 Typecho를 설치하고 구성합니다.

Flask-Babel을 사용하여 다국어 지원을 구현하는 방법 Flask-Babel을 사용하여 다국어 지원을 구현하는 방법 Aug 02, 2023 am 08:55 AM

Flask-Babel을 사용하여 다중 언어 지원을 구현하는 방법 소개: 인터넷의 지속적인 발전으로 인해 다중 언어 지원은 대부분의 웹 사이트와 애플리케이션에 필요한 기능이 되었습니다. Flask-Babel은 Babel 라이브러리를 기반으로 다국어 지원을 제공하는 편리하고 사용하기 쉬운 Flask 확장입니다. 이 기사에서는 Flask-Babel을 사용하여 다국어 지원을 구현하는 방법을 소개하고 코드 예제를 첨부합니다. 1. Flask-Babel을 설치하기 전에 먼저 Flask-Bab을 설치해야 합니다.

Layui를 사용하여 다국어 전환을 지원하는 웹사이트를 개발하는 방법 Layui를 사용하여 다국어 전환을 지원하는 웹사이트를 개발하는 방법 Oct 25, 2023 am 10:55 AM

Layui를 사용하여 다중 언어 전환을 지원하는 웹사이트를 개발하는 방법 세계화가 발전함에 따라 점점 더 많은 웹사이트가 다양한 사용자의 요구를 충족하기 위해 다중 언어 전환을 지원해야 합니다. Layui는 아름다운 웹사이트를 빠르게 개발하는 데 도움이 되는 사용하기 쉬운 일련의 구성 요소와 도구를 제공하는 매우 인기 있는 프런트 엔드 프레임워크입니다. 이 기사에서는 Layui를 사용하여 다국어 전환을 지원하는 웹사이트를 개발하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 Layui 관련 파일을 웹페이지에 소개해야 합니다. 할 수 있다

See all articles