Drupal - 不同语言的不同图像

Tom*_*ell 2 css localization drupal image internationalization

我必须“i18n”现有的 drupal 安装并添加第二种语言。

我的主页上有一个图像,它在 CSS 文件中定义为“背景图像”。

该图像包含文本,因此我需要根据 URL 是否为以下内容显示不同的图像:

http://example.com/en/
Run Code Online (Sandbox Code Playgroud)

或者

http://example.com/es/
Run Code Online (Sandbox Code Playgroud)

如何根据用户语言(基于 URL)在主页上显示不同的图像?

我对 Drupal 还很陌生,所以请不要以为我什么都知道!

更新:我希望可以将特定图像定义为“EN”并添加“ES”替代项,为该图像提供一个 URL(可以在模板或 css 等中使用),但具体取决于用户语言,Drupal将提供特定于语言的版本。这将是理想的。

update2:或者也许另一种方法是可能的 - 创建一个新的“内容类型”,它只包含一个图像,以便:http://example.com/node/23返回纯图像二进制文件(image/jpeg) - 然后这个节点可以像其他节点一样国际化/翻译。我真的很难找到国际化图像的“Drupal”方式......

update3:Drupal 是否在会话中存储用户语言?如果是这样,我可以编写自己的脚本,读取会话语言并提供特定于语言的图像,对吧?并完全避免Drupal(例如:http://example.com/i18n-image.php?img=logo- 丑陋,但你明白了),如果是这样,Drupal如何存储会话用户语言?

FR6*_*FR6 5

您可以使用国际化模块:http://drupal.org/project/i18n

并使用函数“i18n_get_lang()”获取当前语言。

根据语言命名您的文件:

image_LANGUAGE.jpg
image_fr.jpg
image_es.jpg
Run Code Online (Sandbox Code Playgroud)

要嵌入图像:

<img src="<?php echo base_path().path_to_theme().'/images/'; ?>image_<?php echo i18n_get_lang(); ?>.jpg" />
Run Code Online (Sandbox Code Playgroud)

编辑:

要对 CSS 文件实现类似的操作:

您可以根据语言创建各种 CSS 文件:

styles.css
styles_fr.css
styles_es.css
Run Code Online (Sandbox Code Playgroud)

您可以将所有与特定语言无关的 CSS 放入主文件 (styles.css) 中。您可以将与特定语言相关的 CSS 放入其他文件中。

styles_fr.css:

div.item1 { background: url('../images/item1_fr.jpg'); }
Run Code Online (Sandbox Code Playgroud)

styles_es.css:

div.item1 { background: url('../images/item1_es.jpg'); }
Run Code Online (Sandbox Code Playgroud)

然后,您在template.php文件中为页面创建一个预处理函数,其中将包含基于当前语言的特定 CSS 样式表:

function YOURTHEME_preprocess_page(&$vars, $hook){
  drupal_add_css(path_to_theme().'/css/styles.css');
  drupal_add_css(path_to_theme().'/css/styles_'.i18n_get_lang().'.css');
}
Run Code Online (Sandbox Code Playgroud)

或者您可以直接在模板文件中使用 drupal_add_css() 。