超级奇怪 PHP 翻译解决方法
Super weird PHP translation workaround
所以,我不确定以前是否有人这样做过。我刚刚在我的服务器上安装了一个 PHP 应用程序,我想翻译该站点。
该应用程序为每种语言使用一个 language_name.php 文件。每个语言文件包含一个多维数组$_LANG
.
$_LANG
键位从一级,$_LANG['l1'] = "string";
到大约 5 个级别,$_LANG['l1']['l2']['l3']['l4']['l5'] = "string";
我想尝试什么
创建嵌套的 foreach 循环以遍历并回显 $key
- $value
对。
之后我将编写一个翻译函数来翻译 echo 之前的值..
问题
原始文件包含 3,750 多行。
我的回显版本只有3387。
<?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,它允许我免费使用 Google 翻译服务,此时我修改了 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>';
}
}
然而,由于 Google 翻译服务有很多限制,我一次只能收到大约 150 key|value
对,因此我不得不用 VPN 对每个请求。
我知道这不是翻译网站内容的理想方式。
- 复制和粘贴 3700
values
绝对不是一个选项。
- 也绝对不会为 Google 云翻译付费 API。
所以,我不确定以前是否有人这样做过。我刚刚在我的服务器上安装了一个 PHP 应用程序,我想翻译该站点。
该应用程序为每种语言使用一个 language_name.php 文件。每个语言文件包含一个多维数组$_LANG
.
$_LANG
键位从一级,$_LANG['l1'] = "string";
到大约 5 个级别,$_LANG['l1']['l2']['l3']['l4']['l5'] = "string";
我想尝试什么
创建嵌套的 foreach 循环以遍历并回显 $key
- $value
对。
之后我将编写一个翻译函数来翻译 echo 之前的值..
问题
原始文件包含 3,750 多行。
我的回显版本只有3387。
<?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,它允许我免费使用 Google 翻译服务,此时我修改了 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>';
}
}
然而,由于 Google 翻译服务有很多限制,我一次只能收到大约 150 key|value
对,因此我不得不用 VPN 对每个请求。
我知道这不是翻译网站内容的理想方式。
- 复制和粘贴 3700
values
绝对不是一个选项。 - 也绝对不会为 Google 云翻译付费 API。