PHP中使用gettext来支持多语言的方法_PHP
我们今天用一个简单的实例说明一下在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
#
#, 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
"Language-Team: LANGUAGE
"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.
#
#
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
"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.
#
#
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:
"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就行了。

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

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

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

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

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

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

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