我在一个提取许多css文件的网站上工作。其中一些是针对国际用户的语言特定覆盖(我们改变了一些样式,因此更长的翻译文本字符串不会破坏布局)。所以我们有类似french.css,spanish.css等的东西。当用户点击我们的语言切换器时,页面会重新加载,并在body标签上添加一个特殊类。这就是页面如何选择其他样式。
我们在不久的将来的目标之一是仅为我们的国际用户提供适合他们的特定语言文件。现在,即使他们没有必要,每个人都会获得所有风格。与此同时,其中一位经理希望将我们的样式合并到一个文件中以减少http请求。如何在不包含每个用户的所有语言覆盖的情况下拥有一个css文件?有没有办法在需要时将样式附加到一个主要的css文件?我们使用Compass SASS;有没有办法编译我们的主文件的不同版本,一个包括西班牙风格,一个包括法国风格等?理想情况下,我们不希望在我们的工作目录中拥有不同版本的主css文件,因为我们支持25种语言。此外,我们的开发人员使用PHP和JavaScript,以防任何人拥有使用这些编程语言的解决方案。
编辑 - 我应该澄清一下。是否有一个脚本或函数可以从一个css文件中获取样式块并将它们直接添加到另一个css文件中,这将是用户服务的一个主要css文件?只有当用户在我们的网站上更改其语言选择时,才会执行此操作。或者,既然我们正在使用SASS,那么在框架中是否有一种方法可以让编译器生成我们的main.scss的25个css版本,每个版本都包含特定的语言覆盖(在我们的sass根目录中没有25个.scss版本)目录)?
答案 0 :(得分:1)
你可以用php做到这一点。 您需要创建一个包含所有css的php文件,并将其包含在索引文件中:
<link rel="stylesheet" type="text/css" href="css_file.php">
然后你必须创建css_file.php并使用以下代码:
<?php
header("Content-type: text/css; charset: UTF-8");
// get the language variable from url
$language = $_GET['langvar'];
if($language == "en"){
// english language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "fr"){
// french language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "other"){
// other language css code goes here
echo "
body { margin: 0; padding: 0; }
";
}
?>
修改强>
如果您的代码中不存在语言变量,您可以从会话中获取语言:
<?php
session_start();
header("Content-type: text/css; charset: UTF-8");
// get the language variable from active session
$language = $_SESSION['langvar'];
if($language == "en"){
// english language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "fr"){
// french language css code goes here
echo "
body { margin: 0; padding: 0; }
";
} else if($language == "other"){
// other language css code goes here
echo "
body { margin: 0; padding: 0; }
";
}
?>
修改强>
如果要加载单独的css文件,则需要将以下php代码添加到索引文件中:
<?php
session_start();
// get the language variable from active session
$language = $_SESSION['langvar'];
if($language == "en"){
// english css file load
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"english.css\">";
} else if($language == "fr"){
// french css file load
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"french.css\">";
} else if($language == "other"){
// other css file load
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"other.css\">";
}
?>
如果语言会话名称与css文件相同,您可以使用:
<?php
session_start();
// get the language variable from active session
$language = $_SESSION['langvar'];
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"".$language.".css\">";
?>