[英]Dynamically change images directory based on language in PHP?
我正在制作一个骨架,用它来构建多种语言的中小型网站。 我正在使用本教程中的方法:
http://www.bitrepository.com/php-how-to-add-multi-language-support-to-a-website.html
我知道这是2009年的事,但我喜欢他们的工作方式,这对我的同事们来说是最容易理解的,尤其是因为我自己已经从文件中注释掉了beejeus。
这是替换站点中相关文本的好方法。 我现在面临的问题源于这样一个事实:并非任何给定网站上的所有文字都必然是文本。 有很多图像,导航按钮等,也需要更换。
我的想法是进入common.php(如教程中所述)并添加一个条件,它将改变图像目录(img /或image /)。 例如,如果我的文件结构如下所示:
万维网
的index.php
的common.php
/ IMG
/J.Plang.jp.php
/ IMG
如果用户选择日语作为他们的语言,并且脚本运行以从lang.jp.php中获取所有文本,那么我也想使用/ jp目录中/ img目录中的图像。
所以我的问题是,如何将hrc更改为html中每个图像标记的正确/ img目录? 是否可以使用php开关并将src设置为变量,并在声明图像名称之前调用该变量,如<img src="<?php echo($imgsrc);?>/image.jpg" />
,并将路径动态分配给$ imgsrc? 如果是这样,设置该变量的最佳方法是什么?
$ lang变量包含短语言代码(语言名称)
如果在“ jp”目录中有“ jp”目录和“ img”目录,则也可以执行以下操作。
<img src="<?php echo $lang; ?>/img/image.jpg" />
这样就变成了
<img src="jp/img/image.jpg" />
@OpenCode有正确的想法,但可能更容易,而是继续使用你拥有的img文件夹,并在其中为每种语言创建一个新文件夹。
/img
/jp
/en
/es
/image.jpg
然后使用:
<img src="/img/<?php echo $lang; ?>/image.jpg" />
这样,如果您以后决定添加更多语言,则您的webroot不会变得太凌乱。
对不起,你所依赖的教程只是冰山一角。
如果你想制作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周时间同意网页设计(哈哈(或讽刺谁知道))!!!
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.