【问题标题】:Efficient way to translate products in database在数据库中翻译产品的有效方法
【发布时间】:2026-01-09 20:05:01
【问题描述】:

我正在寻找一种快速有效的方式来通过短语翻译 osCommerce 中的所有产品。

目前,有几个语言文件会保留所有短语,然后它会简单地替换更新字段。烦人的是它的旧系统并且没有使用 UTF-8 编码,所以每当我想翻译某些东西时,我必须打开一个文件,更改编码,添加翻译,然后将其编码回以前的编码。此外,它通过行号确定哪些短语,例如,如果我要添加俄语短语而不是西班牙语,整个翻译就会搞砸。

我现在想出的是将所有内容都放入数据库中以便于访问。有两个表:

  1. 主要语言短语: translate_id,短语

  2. 其他语言: translate_id, 翻译, language_id

include('mysql.php'); set_time_limit(600);

$query=$db->prepare("SELECT phrase, translation, language_id FROM phrases AS f
LEFT JOIN translations AS v
ON f.translate_id = v.translate_id
WHERE v.language_id=9"); 
$query->execute(); 
$result = $query -> fetchAll();

for($n = 0; $n < count($result); $n++) {
    $phrase = htmlspecialchars($result[$n]['phrase']);
    $translation = htmlspecialchars($result[$n]['translation']);
    $query=$db->prepare('
    UPDATE products_description AS pd 
    LEFT JOIN products as p
    ON p.products_id = pd.products_id
    SET pd.products_name = REPLACE(pd.products_name, "'. $phrase .'","'. $translation .'")
    WHERE language_id = 9 AND p.products_status = 1
    '); 
$query->execute();

}

这是我到目前为止想出的。出于某种原因,它不能替代任何东西(某处有问题),但最大的问题是我只用一种语言测试它,它甚至比基于文件的翻译还要慢。

如何让它尽可能快?最好的方法是什么?也许有什么课程之类的?

【问题讨论】:

    标签: php mysql translation oscommerce


    【解决方案1】:

    您能指定您的 osCommerce 版本吗?

    我正在寻找一种快速有效的方式来通过短语翻译 osCommerce 中的所有产品。

    其实产品描述翻译在products_description数据库表上:考虑到这个,我不太明白你缺少什么,你需要什么。 “按短语”是什么意思?

    此外,管理员提供了一个表格来填写翻译,网址是这样的:

    http://[youhost]/catalog/admin/categories.php?cPath=55_129&pID=1000&action=new_product

    本页:

    • 使用您的 osC 版本的内部编码
    • 这是一个编辑产品描述的友好界面
    • 使用数据库,而不是文件。

    【讨论】:

    • 它是 v2.2。抱歉不清楚。问题是我们有超过 7 万种产品,不可能手动翻译每个产品。相反,我们所做的是遍历每个产品,然后替换翻译文件中的单词。