我正在制作一个用多种语言构建中小型网站的骨架。我正在使用本教程中的方法:
http://www.bitrepository.com/php-how-to-add-multi-language-support-to-a-website.html
我知道它是从2009年开始的,但我喜欢他们是如何做到的,而且这对我的同事来说是最容易理解的,特别是因为我自己已经从文件中评论了bejeezus。
这是替换网站中相关文字的好方法。我现在面临的问题源于这样一个事实:并非任何给定网站上的所有文字都必然是文本。有很多图像,导航按钮等也需要更换。
我的想法是进入common.php(如教程中所述)并添加一个条件,它也会改变图像目录(img /或image /)。例如,如果我的文件结构如下所示:
WWW
的index.php
的common.php
/ IMG
/ JP
lang.jp.php
/ IMG
如果用户选择日语作为他们的语言并且脚本运行以从lang.jp.php获取所有文本,我也希望在/ jp中使用/ img目录中的图像。
所以我的问题是,如何将hrc更改为html中每个图像标记的正确/ img目录?是否可以使用php开关并将src设置为变量,并在声明图像名称之前调用该变量,如<img src="<?php echo($imgsrc);?>/image.jpg" />
,并将路径动态分配给$ imgsrc?如果是这样,设置该变量的最佳方法是什么?
答案 0 :(得分:1)
$ lang变量包含短语言代码(语言名称)
如果您在“jp”目录中有“jp”目录和“img”目录,那么您也可以执行以下操作。
<img src="<?php echo $lang; ?>/img/image.jpg" />
这样就变成了
<img src="jp/img/image.jpg" />
答案 1 :(得分:1)
@OpenCode有正确的想法,但可能更容易,而是继续使用你拥有的img文件夹,并在其中为每种语言创建一个新文件夹。
/img
/jp
/en
/es
/image.jpg
然后使用:
<img src="/img/<?php echo $lang; ?>/image.jpg" />
这样,如果您决定稍后添加更多语言,您的webroot就不会变得太乱。
答案 2 :(得分:1)
我很抱歉,但你所依赖的教程只是冰山一角。
如果你想制作100%开放,简单和快速的东西,请像我一样(厚颜无耻):
1 - 制作非常简单语言文件,例如仅包含关联的“ini”文件,例如:
text1 = my text
text2 = my text2
text3 = my text3
email_customer = Dear customer
...
通过这种方式,您可以轻松翻译它。
2 - 然后制作一个“php”缓存文件,创建一个你将包含的“类”文件。 3 - 制作一个包含翻译内容的翻译“php”类文件。在其中你可以编写这样的代码:
if language file more recent than cache file
=> create cache file
...
code to generate "language cache file"
...
include "language cache file"
...
3 - 将您的语言文件基于主机:使用$_SERVER['HTTP_HOST']
。这是我的方式:
- if it's "fr.mysite.com" => it's french language
- if it's "es.mysite.com" => it's spanish language
- ... and so on ...
- if it's "www.mysite.com" => it's default language (your choice)
第1步非常非常重要,因为您只需向翻译人员发送适当的文件即可获得大量时间。没有头疼了。您将花费2-3天的时间来编写它,每种新语言将获得4-5天的时间。
对于最终(也是最难)的问题:(仅供参考,这是我第四次重写整个框架以包含这些内容,而我在这里解释的内容代表了几个月的开发,即使看起来很简单):multilangage文件。 这是我的目录:
templates/
|-- common
| |-- css
| |-- htm
| | `-- intranet
| |-- img
| |-- js
| | `-- openid
| |-- pdf
| `-- txt
|-- fr
| |-- css
| |-- htm
| |-- img
| |-- js
| |-- pdf
| `-- txt
`-- us
|-- css
|-- htm
|-- img
|-- js
|-- pdf
`-- txt
在您的“翻译类文件”代码中执行以下操作:
...
include "language cache file"
...
**after the include**
...
function get_expanded_path_file() {
if file exists in language template directory
return full "language" path + filename
if file exists in "common" template directory
return full "common" path + filename
return "/" filename
}
...
现在我希望你能得到完整的想法。如果你想看到这样一个框架的实际行动,请看看我的最新网站(如果你认为它是垃圾邮件或其他什么,请删除我的链接):mysite 如果你明智地使用我的建议像Smarty这样的东西,你最终可能会像我一样:只做Php基础文件,让所有内容都转换为翻译者和webdesigner。仅供参考这个网站花了我两个星期的时间来开发,1天用法语和西班牙语进行翻译,并且... 3周时间同意网页设计(大声笑(或讽刺谁知道))!!!
希望这有帮助