php - 根据用户在一个共享站点结构中的位置提供独特的内容(不是翻译)。 (PHP/MySQL)

标签 php mysql localization internationalization

一些上下文:
我们目前有 5 个版本的网站(美国、英国、加拿大、澳大利亚、新加坡),每个版本都有 TLD。我们刚刚决定将其扩展到 10-12 个站点,这些站点将代表 4 或 5 种语言(我们当前的站点只有英文)。

我们将使用每个国家/地区的 TLD(即 www.domain.fr)以及路径中包含国家/地区和语言的“.com”(即 www.domain.com/fr/fr),所有这些都指向相同的站点/文件,甚至希望使用相同的 CSS 文件。

我认为我们已经解决了如何根据用户区域设置(zend_translate 或者可能是 GetText)来提供不同的文本内容。然而,一些位置还需要在已建立的结构中托管独特的图像或其他特定于位置的内容(比如说,假设有 3 个 block /div,我们根据用户位置在其中放置不同的“广告”)。

问题:
是否有特定于 PHP/MySQL 的“最佳方式”来根据用户的位置提供一些独特的内容——所有这些都在一个共享站点结构中? (请注意这不是关于翻译,而是关于特定位置的内容)

示例:
ikea.com、ikea.pl、ikea.com/pl/pl 是我们想要实现的一个很好的例子

最佳答案

假设没有特定于 PHP/MySQL最佳方法

最好的方法就是思考它,这完全取决于您的需要。对于您的小型广告问题,如果您没有使用任何可以定位客户位置的大型广告公司,您可以使用MySQL 并创建特定的 block 每个 TLD 的区域,因此您可以在该数据 block 的每个域中运行不同的内容。

图像可以托管在同一个地方,如果它们具有唯一的名称,则可以在同一个目录中,而且您可以再次使用 MySQL 来跟踪您拥有的内容和位置。

例如:

$myTLD = $_SERVER['SERVER_NAME']; // get host
$myTLD = preg_replace('#^www\.(.+\.)#i', '$1', $myTLD); // remove www if exists
switch ($myTLD) {
    case 'example.org':
        include 'banners_for_org.php';
        break;
    case 'example.net':
        include 'banners_for_net.php';
        break;
    default:
        include 'banners_general.php';
}

(PS:我在 ikea.com 中没有看到任何与 ikea.pl 类似的东西,甚至连 Logo 都没有)

关于php - 根据用户在一个共享站点结构中的位置提供独特的内容(不是翻译)。 (PHP/MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117705/

相关文章:

php - 如何限制用户未登录就进入页面

php - 相同的 php 脚本、相同的 mysql 数据库、不同的显示或重音字符

php - Laravel 宅基地 IP 地址不工作

mysql - 第 1064 章

mysql - 为每个日期选择行的子集

asp.net-mvc - 对ASP.NET MVC应用程序使用.resx本地化有什么优势?

c# - 为 StringLength 属性使用参数

php - 从 53 个表返回 mysql 数据库的 p_id 和 t_id 记录?

mysql - 表中没有数据的日期的移动平均值

javascript - WordPress wp_localize_script 做什么?