晚上全部。
这是我在这里发表的第一篇文章,所以我希望我能做到这一点。
我到处寻找(无论是在这个网站上还是其他地方),找到我遇到的问题的解决方案,但我找不到任何听起来像我的问题的东西,但我从逻辑上知道它应该是可行的!
我维护两个内部网站点 - 一个是英语,一个是威尔士语。它们是彼此的镜像,只有域名和站点名称发生变化:
实施例
http://english-site/news/item/003/170314.htm
http://welsh-site/newyddion/item/003/170314.htm
到目前为止,我只发现了这个:http://www.codingforums.com/javascript-programming/8523-how-do-i-switch-pages-automatically.html
这给了我一些希望,但我无法弄清楚如何将它应用到我的情况中。
所以,问题是这个 - 有没有办法编辑和重新加载超链接切换出来:
英语网站/消息/
为此:
welsh-site / newyddion /
但保持链接的其余部分相同,以便页面将加载威尔士语或英语等同于其自身。
我知道大多数现代CMS都可以自动执行此类操作...但我没有使用现代CMS ...我正在使用FrontPage ...我确信这是可能的但是无法找到任何地方同意我的意见!
提前为任何人提供的帮助干杯!
答案 0 :(得分:0)
FrontPage很古老,你真的不应该使用它。
话虽这么说,这一点JS应该做你想做的事情:
window.location.href = "http://welsh-site/newyddion" + window.location.pathname.substring(window.location.pathname.indexOf('/', 1));
可以使用window.location.pathname
访问当前页面的路径(域名后面的所有内容)。在{1}上使用indexOf('/', 1)
给出了第一个/
字符的字符串(从0开始)的位置(我们将1
作为第二个参数传递,以便忽略起始斜杠)。然后我们使用substring来获取该角色的所有内容。
最后,我们将新网址设置为window.location.href
,执行重定向。
您可以使用正则表达式执行此操作,但这也可以。
答案 1 :(得分:0)
我假设您的网页上有一个按钮/链接/选择事件,可以通过说出English
或Welsh
来触发您要投放的域名。鉴于这种情况,您可以进行如下所示的简单javascript替换:
if (selection === "blah blah"){
domain = "http://domainA...";
} else {
domain = "http://domainB...";
}
window.location.replace(domain);
答案 2 :(得分:0)
我不建议使用javascript生成网址,而是使用rel =“alternative”和hreflang =“code”使用与2个字母语言代码对应的语言代码将每个网页链接到相应的翻译页面http://googlewebmastercentral.blogspot.mx/2010/09/unifying-content-under-multilingual.html中描述的标准 指示机器人页面是不同语言的相同内容。
如果你可以使用一些php或服务器端代码,你可以通过用你想要用当前url创建的新url替换url来非常轻松地创建链接引用。这是通过使用完全符合您的网址重写标准的模式来完成的,也就是说,如果您没有任何模式,最好的方法是每页设置每个链接网址。
假设您只需要将英文网站域名转换为威尔士网站和新闻路径段。根据{{3}},威尔士语2字母标准将是'cy'。
<?php
$lang['cy']['domain'] = 'welsh-site';
$lang['cy']['lang'] = 'Welsh';
$lang['cy']['news_slug'] = 'newyddion';
$lang['en']['domain'] = 'english-site';
$lang['en']['lang'] = 'English';
$lang['en']['news_slug'] = 'news';
$lang['default'] = 'en';
说明:
我们正在定义一系列语言,我们将设置我们需要翻译的任何内容。这是一个多维数组映射,它按第一维中的键定义每种语言,然后在第二维中转换每个段。在第二个dimansion中,我们将设置以_slug结尾的特殊键,它将成为要翻译的url的一部分。除了其他任何内容之外,这个数组可以保存在一个特殊的文件中,我们可以轻松地进行编辑,而无需修改核心代码。
定义初始语言设置后,现在需要代码来识别当前语言和路径:
<?php
include('lang.php'); //this is the file where the language array is defined
$path = $_SERVER['REQUEST_URI'];
$host = isset($_SERVER['HTTP_HOST']) ? substr($_SERVER['HTTP_HOST'], 0, strpos($_SERVER['HTTP_HOST'], ':')) : $_SERVER['SERVER_NAME'];
foreach ($lang as $code => $l) {
if ($l['domain'] == $host) {
$current_lang = $code;
break;
}
}
if ( ! isset($current_lang)) {
$current_lang = $lang['default'];
}
$_ = $lang[$current_lang];
$segment_1 = reset(explode('/', trim($path, '/'));
foreach ($lang[$current_lang] as $section => $url_segment) {
if ($segment_1 == $url_segment && substr($section, -5) == '_slug')
$current_section = $section;
break;
}
}
说明:
此代码用作获取当前部分和语言的桥接代码。首先,我们获取主机(域名)和URL路径。在第一个循环中,我们匹配任何语言域以找到我们所使用的正确语言,然后在第二个循环中,我们尝试查找当前语言相关的当前部分。
现在使用已知信息编写链接的代码很少:
<head>
<?php foreach ($lang as $code => $l): ?><?php if ($code != $current_lang) : ?>
<?php $lang_path = isset($current_section) ? str_replace('/' . $_[$current_section] . '/', '/' . $l[$current_section] . '/', $path) : $path; ?>
<?php $lang_url = '//' . $l['domain'] . $lang_path; ?>
<link rel="alternative" hreflang="<?php echo $code; ?>" href="<?php echo $lang_url; ?>">
<?php endif; ?><?php endforeach; ?>
</head>
说明:
我们正在添加链接,告诉机器人页面中的其他链接只是用不同语言对此页面的不同表示。我们还在hreflang属性(http://reference.sitepoint.com/html/lang-codes)
中指定了lang代码然后以完全相同的方式创建链接(在主体部分中):
<ul>
<?php foreach ($lang as $code => $l): ?>
<?php if ($code != $current_lang) : ?>
<?php $lang_path = isset($current_section) ? str_replace('/' . $_[$current_section] . '/', '/' . $l[$current_section] . '/', $path) : $path; ?>
<?php $lang_url = '//' . $l['domain'] . $lang_path; ?>
<li><a href="<?php echo $lang_url; ?>"><?php echo $l['lang']; ?></a></li>
<?php else : ?>
<li class="active"><?php echo $l['lang']; ?></li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
要使所有这些工作,您的服务器必须支持PHP扩展。我使用PHP代码,因为这是最常见的代码支持。
您还需要更改文件扩展名,从.html更改为.php才能生效。
希望它适合你。这可能不是你想要的,而是你真正需要的。