Iva*_*van 5 php multilingual translation internationalization
我救出了一个原本只为西班牙观众写的旧项目,现在我必须把它国际化.
该项目有3种文本字符串:
<html>...<body>...<p>Hello world</p>...首先不是问题,因为实际上很少有字符串并且非常本地化.第二种情况也非常本地化,所以这不是一个大问题.但最后2个案例是无法诠释的:数百个HTML文件(静态+数据库)里面有数百个字符串.
所以,我正在寻找一种自动化方法,将所有字符串提取为可识别的格式,将其提供给翻译人员,然后将我的页面用于其他语言.
是否存在类似的东西,还是应该创建自定义解决方案?在这种情况下,任何想法?
好.I18n(国际化)是一件非常奇怪的事情.您必须对代码进行许多更改才能使其更加多语言化.
对我来说,最好的解决方案是在已经支持多层I18n的CakePHP上移动它.但是这个解决方案会让你花费很多时间.所以....
翻译内部文本的快速方法
echo "Hello World"
Run Code Online (Sandbox Code Playgroud)
要么
<p>Hello World</p>
Run Code Online (Sandbox Code Playgroud)
是为每种语言创建一个带有php扩展的适当语言文件(例如:es.php,el.php,en.php,等等),它将包含一个带有键和值的数组,如下所示:
$l = array(
'WEB_TITLE' => 'My web site title',
'GEN_HELLO' => 'Hello World',
'MENU_HOME' => 'Home',
'MENU_PRODUCTS' => 'Products',
...
);
Run Code Online (Sandbox Code Playgroud)
然后进入您的网站,您必须在每个页面的最开始加载相应的语言文件,然后在您的页面中,您必须执行以下操作:
echo $l['GEN_HELLO'];
Run Code Online (Sandbox Code Playgroud)
和
<p><?php echo $l['GEN_HELLO']; ?></p>
Run Code Online (Sandbox Code Playgroud)
这是您的应用程序的前端.现在要使您的数据多语言,您必须在某些方面更改数据库结构.
让我们说你有那张桌子
ARTICLES
id Title Content Date Active
Run Code Online (Sandbox Code Playgroud)
在上述结构中,您必须使Title和Content I18n兼容.为了翻译那些列,您必须创建另一个在示例ARTICLES_L中调用的表
ARTICLES_L
ID POST_ID COLUMN LANGUAGE CONTENT
Run Code Online (Sandbox Code Playgroud)
在上表中,您必须存储文章ID,翻译所属的列(即:标题)语言和翻译的内容.
所以,如果你在ARTICLES中有这些记录
ARTICLES
id Title Content Date Active
1 Title 1 This is content 1 2011-10-01 13:28:45 1
2 Title 2 This is content 2 2011-10-01 13:28:45 1
3 Title 3 This is content 3 2011-10-01 13:28:45 1
Run Code Online (Sandbox Code Playgroud)
表ARTICLES_L将包含该记录
ARTICLES_L
ID POST_ID COLUMN LANGUAGE CONTENT
1 1 title es_ES Título 1
2 1 content es_ES Este es el contenido 1
3 1 title el_GR ?????? 1
4 1 content el_GR ???? ????? ?? ??????????? 1
5 2 title es_ES Título 2
6 2 content es_ES Este es el contenido 1
....
Run Code Online (Sandbox Code Playgroud)
实际上还有许多其他任务你需要做,但这是我给你的解决方案背后的想法:)
祝好运
PN:对于应用程序的前端更好的是使用http://php.net/manual/en/book.gettext.php 这种方式是从WordPress和CakePHP使用的方式,但是在非常低的级别: ?看看吧.这比为每种语言创建文件要好.
| 归档时间: |
|
| 查看次数: |
856 次 |
| 最近记录: |