php - 超级奇怪的 PHP 翻译解决方法
问题描述
所以,我不确定这是否以前做过。我刚刚在我的服务器上安装了一个 PHP 应用程序,我想翻译该站点。
该应用程序为每种语言使用一个language_name.php文件。每个语言文件都包含一个多维数组$_LANG
。
$_LANG
键范围从一级$_LANG['l1'] = "string";
到大约 5 级,$_LANG['l1']['l2']['l3']['l4']['l5'] = "string";
我想尝试什么
创建嵌套的 foreach 循环以循环并回显$key
-$value
对。之后我将编写一个翻译函数来翻译回显之前的值..
问题
原始文件包含超过 3,750 行。
我的回声版本只包含 3,387。
<?php
$_LANG['lang']['vars']['go'];
$_LANG['at']['the'];
$_LANG['top'];,
foreach ($_LANG as $key => $value) {
if (is_array($value)) {
foreach ($value as $key1 => $value1) {
if (is_array($value1)) {
foreach ($value1 as $key2 => $value2) {
if (is_array($value2)) {
foreach ($value2 as $key3 => $value3) {
if (is_array($value3)) {
foreach ($value3 as $key4 => $value4) {
if (is_array($value4)) {
foreach ($value4 as $key5 => $value5) {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'][\''.$key3.'\'][\''.$key4.'\'][\''.$key5.'\'] = "'.$value5.'";'.'<br>';
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'][\''.$key3.'\'][\''.$key4.'\'] = "'.$value4.'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'][\''.$key3.'\'] = "'.$value3.'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'] = "'.$value2.'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'] = "'.$value1.'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'] = "'.$value.'";'.'<br>';
}
}
?>
解决方案
所以,我在互联网上搜索并解决了我自己的问题。
我决定坚持使用foreach()
循环并使用该count()
函数来查看我是否回显了正确数量的变量。在确认它确实返回了所有key|value
对之后,我继续进行实际的翻译......更多解决方法......
我找到了一个 Git Repo Git Repo,它可以让我免费使用谷歌翻译服务,此时我将foreach()
循环修改为这样的东西。
foreach ($_LANG as $key => $value) {
if (is_array($value)) {
foreach ($value as $key1 => $value1) {
if (is_array($value1)) {
foreach ($value1 as $key2 => $value2) {
if (is_array($value2)) {
foreach ($value2 as $key3 => $value3) {
if (is_array($value3)) {
foreach ($value3 as $key4 => $value4) {
if (is_array($value4)) {
foreach ($value4 as $key5 => $value5) {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'][\''.$key3.'\'][\''.$key4.'\'][\''.$key5.'\'] = "'.$trans->translate('en', 'vi', $value5).'";'.'<br>';
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'][\''.$key3.'\'][\''.$key4.'\'] = "'.$trans->translate('en', 'vi', $value4).'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'][\''.$key3.'\'] = "'.$trans->translate('en', 'vi', $value3).'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'][\''.$key2.'\'] = "'.$trans->translate('en', 'vi', $value2).'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'][\''.$key1.'\'] = "'.$trans->translate('en', 'vi', $value1).'";'.'<br>';
}
}
}
else {
echo '$_LANG[\''.$key.'\'] = "'.$trans->translate('en', 'vi', $value).'";'.'<br>';
}
}
然而,由于谷歌翻译服务有很多限制,我一次只能收到大约 150对,因此我必须在每次请求时使用VPNkey|value
更改我的 IP 地址。
我知道这不是翻译网站内容的理想方式。
- 复制和粘贴 3700
values
绝对不是一种选择。 - 也绝对不会为 Google Cloud Translate API 付费。
推荐阅读
- google-cloud-storage - 如何使用 CDAP 创建从 BigQuery 到 Google Storage 的 ETL?
- python - np.save 有没有办法处理 MPI 文件对象?
- html - 无法让页脚左右对齐
- c# - 如何获取要发布到控制器的复选框值列表
- javascript - TS2339:“元素”类型上不存在属性“样式”
- reactjs - 为 Material-Table 创建自定义模态
- user-interface - 如何正确设计高 DPI 感知(4k 就绪)的 Delphi 应用程序 UI?
- amazon-s3 - S3 网络托管端点产生“无法访问此站点”
- python - 使用python进行一次热编码的快速方法
- python-3.x - 进行 for 循环,直到某个条件变为不真实