PHP-SQL - 国际化和本地化 - Gettext-POedit
PHP-SQL - Internationalization and Localization - Gettext-POedit
我正在创建一个网站,我想为不同的国家/地区以多种语言显示,但这是我第一次这样做,不确定最佳做法是什么。
所以对于我代码中的所有静态文本,我只是将其包装在翻译函数中,POedit 能够提取字符串。
然后,对于通过 PHP 从我的数据库生成的所有动态文本,当我在后端向我的数据库添加一些新内容时,我也会在 PO 中执行 file_put_contents()
文件也是如此,所以我要翻译这些字符串。
所以我数据库中的所有内容都是英文的,但已添加到我的 PO 文件中。问题是我还有一个搜索栏。这会在我的数据库中搜索各种项目,但只能搜索英文。
我现在想做的是这样的,我使用 Google 翻译 API 翻译实际输入并用英语搜索:
$term = $_POST['search_text'];
$result = $translate->translate($term, [
'target' => 'en'
]);
$translation = $result['text'];
$new_term = '%'.$translation.'%';
$params = [$new_term];
$sql = "SELECT * FROM products WHERE product_name LIKE ?";
$stmt = DB::run($sql,$params);
显然这并不完美,因为我依靠 Google 来翻译搜索词,但它通常会获得正确的结果。
有更好的方法吗?看来我走错路了。
我最后做的是用英语搜索并用翻译搜索并合并结果,这样它就有希望找到所有东西。
我正在创建一个网站,我想为不同的国家/地区以多种语言显示,但这是我第一次这样做,不确定最佳做法是什么。
所以对于我代码中的所有静态文本,我只是将其包装在翻译函数中,POedit 能够提取字符串。
然后,对于通过 PHP 从我的数据库生成的所有动态文本,当我在后端向我的数据库添加一些新内容时,我也会在 PO 中执行 file_put_contents()
文件也是如此,所以我要翻译这些字符串。
所以我数据库中的所有内容都是英文的,但已添加到我的 PO 文件中。问题是我还有一个搜索栏。这会在我的数据库中搜索各种项目,但只能搜索英文。
我现在想做的是这样的,我使用 Google 翻译 API 翻译实际输入并用英语搜索:
$term = $_POST['search_text'];
$result = $translate->translate($term, [
'target' => 'en'
]);
$translation = $result['text'];
$new_term = '%'.$translation.'%';
$params = [$new_term];
$sql = "SELECT * FROM products WHERE product_name LIKE ?";
$stmt = DB::run($sql,$params);
显然这并不完美,因为我依靠 Google 来翻译搜索词,但它通常会获得正确的结果。
有更好的方法吗?看来我走错路了。
我最后做的是用英语搜索并用翻译搜索并合并结果,这样它就有希望找到所有东西。