可以本地化的图形通常以 Adobe PhotoShop 文件(.psd 文件)进行处理。PhotoShop 提供对层的支持,这意味着可以本地化的文本可以存入单独的层中,文件中的其他组件则不必触及。
这些是可以本地化的文本的层:
在页面中,不是使用嵌入文本的 GIF,而使用只带背景的 GIF,并将文本置于背景之上。 下面是如何将文本置于图像之上的例子:
<IMG SRC="image.gif" WIDTH=100 HEIGHT=100>
<SPAN STYLE="position:relative;top:-50;left:-90;width:80">Text on Top</SPAN>
如果您的确必须包括嵌入文本的文件,则以下一些准则适用于您创建图形时:
• 提供一个说明完备的分层 PhotoShop 源文件。说明使用了何种字体和哪些颜色。
• 不要忘记图形中的本地化的文本可能要比英语文本长(平均 30%),因此应留出空间,以备文本扩充。
注:由于对图形进行操作需要另外的技能,所以对图形进行本地化的成本会较高。以下这些准则既适用于 HTML,也适用于软件项目。
表格:自动换行还是不自动换行
表格几乎肯定会导致本地化问题。由于本地化的文本平均比英语文本长 30%,在美国的 Web 页面上能够适合某一表格的文本可能因为过长而不适合本地化页面的表格。其结果是表格宽度将被扩展,表格中的所有文本也都将遵从这个新的宽度。在这种情况下,没有办法使表格保持其定义的大小。如果使用了表格(或表格中的其中一个单元)的背景图形,则该图形将不会延伸。这样将使用图像的新实例。
下面的图像是一个表格(重复背景)的屏幕捕捉图像,表格将被延伸,因为其中的一个字符串不适合表格:
以下代码显示了使用嵌套表格后延伸问题是怎样变得更糟的:
<TABLE>
<TR>
<TD>
<TABLE>
<TR>
<TD>
</TD>
<TD>
</TD>
<TD>
</TD>
</TR>
<TR>
<TD>
<TABLE>
<TR>
<TD>
</TD>
<TD>
</TD>
</TR>
</TABLE>
</TD>
<TD>
</TD>
<TD>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
在本示例中,要了解当某些内容自动换行(甚至我已经省去了多余的属性和值!)时如何更改代码是很困难的。组织代码可能会有所帮助:
<TABLE>
<TR>
<TD>
<TABLE>
<TR>
Etc.
尽管这样,嵌套结构依然是难以调试的。创建您的 Web 页面时,您可以做一些工作使事情变得容易一些。
• 加入 HTML 注释,以指定新的节何时开始。例如:
•<!-Start of toolbar ->
• 保持版面设计简洁。如果使用表格,则嵌套不要超过两层。
• 使用 DHTML 技术。使用 DHTML,您可以通过绝对或相对定位确定区域的位置。确保为本地化文本留出足够的空间;指定起点和终点以及所有的尺寸(顶点,左端,宽度)将使该区域不可扩展。
使用 DHTML 进行版面设计
您已经在上面了解到嵌套表格难以进行本地化。尽管如此,表格本身却一点也不困难。您可以结合 DHTML 单元使用它们,以生成 Web 页面的布局。这可以帮助您减少代码量,同时利用表格的强大功能。
下面是一个带有嵌套表格的三种颜色的布局的代码示例:
<TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD BGCOLOR="#FF0000">Who's afraid of</TD>
</TR>
<TR>
<TD>
<TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD WIDTH="100" BGCOLOR="#FFFF00">these </TD>
<TD BGCOLOR="#0000FF">colors?</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
下面是一个带有 DHTML 与表格的组合的三种颜色的布局的示例:
<DIV STYLE="width:100%; background-color: red">Who's afraid of</DIV>
<TABLE WIDTH="100%" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD WIDTH="100" BGCOLOR="#FFFF00">these </TD>
<TD BGCOLOR="#0000FF">colors?</TD>
</TR>
</TABLE>
表单和排序顺序
表单和排序顺序是密切相关的,这是由于排序所需大多数都应用于表单中的下拉列表中。对于二者,字符编码都可能导致问题。如果您希望发布数据并希望数据采用某一特定的字符格式,您需要在页面的元标记中设定正确的编码。因此,如果您希望向某一数据库发布 UTF-8 字符,您需要指定:
<META HTTP-EQUIV=Content-Type content="text/html; charset=UTF-8">
如果您不这样做,表单单元(如输入框)中的字符将不会转换为 UTF-8,它们将按照您在浏览器中的设置(在 Internet Explorer 中,您可以在“语言”下的“选项”对话框中更改本设置)保持为标准编码。当使用来自数据库中的数据填入表单时,也需要应用相同的机制。您需要设置页面中的编码,以确保表单中的所有数据能够正确显示。
排序顺序并不是对于所有语言都是相同的,特别是那些不使用西方字母的语言。例如,在瑞典,某些扩充字符排序在字母 Z 之后。经过本地化后,字的首字母也可能发生变化,因而改变其在排序顺序列表中的位置。例如,“The Hague”在荷兰被称为“Den Haag”,也可称为“s-Gravenhage。”不同的拼写将改变该城市在排序顺序中的位置。
如要构建一个全球化的 Web 站点,您需要要么找出一种自动排序项目(这可能是一项非常困难的任务)的方法,要么确保本地化人员在对代码进行本地化时可以改变排序顺序。在后端,SQL 中的排序顺序在 SQL 服务器安装期间确定。排序顺序中的任何改变都需要重建数据库。
一种可能的自动排序数据的方法就是通过一个针对所需语言使用正确的排序机制的控制进行分析。这仍然需要您在该控制中指定一种语言。在客户端决定这样做可能无效,因为用户正在运行的操作系统和浏览器可能与您对某一特定市场所期望的不同。使用类似这样的控制的另一个缺点就是性能将会降低。
通过在页面本地化阶段的手动交互,可以使用户体验到最快的速度。这需要本地化人员亲自对列表进行排序。例如,这可以通过使用 Microsoft Excel 来完成,或在涉及多种语言时使用 Microsoft Word。而在页面发布时,我们不知道有什么工具能够在 HTML 中完成此项工作。
层叠样式表
对于本地化而言,层叠样式表 (CSS) 最优异的功能之一在于容易全局更改 Web 页面的字体。正如我们在第一篇文章中提到的,字体对于在市场中展示您的团体的形象是至关重要的。大多数美国的 Web 站点都使用某些字体(Arial, Times New Roman 等)进行设计。尽管这些字体一般还可用于西欧的语言,它们没有包含日文、朝鲜文、繁体中文、简体中文、俄文或其他语言。
下面是一个典型的样式定义:
Body{
font-family: Verdana;
font-size:9pt;}
下面是一位日本本地化工作人员更改字体后的同一样式。只需在一个位置进行简单的改动,这个站点就变得对于数百万用户清晰易读了:
Body{
font-family: MS Pゴシック,MS P Gothic,MS Gothic;
font-size:9pt;}
注:如果您不能看到日语文本,这是由于您没有相应的 Microsoft Internet Explorer 多语言支持。您可以直接从我们的 Internet Explorer 站点 http://www.microsoft.com/windows/ie/global/newprodpop.htm (英文) 下载语言包。
文本大小调整
正如 HTML 表格需要设计为能够扩展,所有的对话框也是这样。例如,下面是 MSN.com 组发给我们进行本地化的一个对话框的原始代码:
<style>
INPUT{width:50px;margin:8px,3px;}
</style>
</HEAD>
<input type=button value=OK accesskey="o" onclick="go(true);">
<input type=button value=Cancel accesskey="c" onclick="go(false);">
在进行巴西葡萄牙语的本地化期间,工作人员发现“Cancelar”(取消)按钮被截短了。通过对 CSS 的简单的编辑,这个问题很轻松地解决了。行内样式和样式表是控制大小属性的一种有效的方法:
<style>
INPUT{width:75px;margin:8px,3px;}
</style>
<input type=button value=OK accesskey="o" onclick="go(true);">
<input type=button value=Cancelar accesskey="c" onclick="go(false);">
公共内容
为使站点在外观和感觉上保持一致,一些元素会在每个页面上重复出现。导航或拒绝及版权文本就是这种情况的例子。当您要将某一站点本地化时,您不希望为对相同的单词和字符串多次进行本地化而花费金钱。这就是引入 Include 文件的原因。您可以只对一个文件指定内容中的重复元素,然后在所有相应的页面中包含这个文件。
下面是一个 Web 页面上公共内容的例子:
![]()
Code (using ASP):
<!--#include virtual="/common/footer.inc"-->

