0

不知道如何命名这篇文章。

我只是继承了一组国际化文档,每个文档都包含一个键值对数组。我承认这种方法并不理想,但是,鉴于我的角色、时间和可用资源,我坚持使用这种方法。这些清单是手工创建的,并且项目不断地随意添加以跟上需求。下面的例子被简化了,有大约 21 个语言文件,每个有 100 多个条目。

一个文件中的数组将包含如下元素:

'download_high' => 'Vysoké',
'download_low' => 'Nízké',
'download_med' => 'Strední',
'download_video' => 'Stáhnout video',

而另一个文件将具有以下内容:

'download_video' => 'Descargar Video',
'download_high' => 'Alta',
'download_med' => 'Media',
'download_low' => 'Baja',

在大多数情况下,元素的顺序是一致的,但也有很多例外,而且它使维护文件变得复杂。我想知道是否有办法通过IDE或notepad ++插件等使这些数组的顺序/格式保持一致。我不想按字母顺序对它们进行排序,因为有些逻辑分组不能很好地转换为字母顺序排序,因为只有一些变量是命名空间的。手动操作几乎是不可能的,但如果有某种方法可以指定顺序并使用某种文本操作工具批量处理文件,那就太好了。我对php不是很熟悉,所以我不知道通过代码来做这件事对我来说是否值得,除非它非常简单。

4

5 回答 5

2

PHP 有一个函数叫做var_export. 您可以运行代码,然后使用该函数打印它。

就个人而言,我会在记事本++中运行一些正则表达式来做到这一点。

编辑:在记事本++中,您可以使用正则表达式进行查找/替换。

在“查找内容”字段中,输入\s*'(.+?)'\s*=>\s*'(.+?)'\s*(?:(,)|\s*$)\s*

在“替换为”字段中,输入'$1' => '$2'$3\n

这将变成这样:

'download_high'         =>  'Vysoké',
    'download_low'=>                    

    'Nízké',
'download_med'
=>
'Strední'
,
    'download_video'    =>  'Stáhnout video',
'filter_by' => 'Filtrovat podle'
,




'footer_contact' => 'Kontakt'

进入

'download_high' => 'Vysoké',
'download_low' => 'Nízké',
'download_med' => 'Strední',
'download_video' => 'Stáhnout video',
'filter_by' => 'Filtrovat podle',
'footer_contact' => 'Kontakt'

*注意:这是在假设所有键和值都使用单引号并且键和值都没有任何转义的单引号的情况下编写的。

于 2012-11-20T21:36:00.467 回答
1

鉴于这种情况,我会根据需要半自动进行。也就是说,在我看来,您负责维护这些文件,而在维护中,排序成为问题。

对于格式如下的每种语言文件:

<?php
$something = array(
  'download_video' => 'Descargar Video',
  'download_high' => 'Alta',
  ...
  'download_med' => 'Media',
  'download_low' => 'Baja',
);
  1. 在 bash 中发出sort lang.es.php命令,或者通过您喜欢的方式对某些内容进行排序。
  2. 打开文件进行编辑。
  3. 删除数组声明。
  4. 从#1 复制/粘贴已排序的行。

老实说,对于你的前任来说,有效地硬编码这样的东西是一个非常糟糕的主意。如果通过 CSV、XML、pg/mySQL 等方式存储它会更好,您至少可以调用理解数据格式的编辑器。

于 2012-11-20T23:43:39.800 回答
0

如果您要拥有一个不断增长的列表,我不建议使用数组和 php 文件等。现在花几分钟来设置 mysql 并使用您想要的参数从数据库中提取。整洁、快速、高效且可扩展。

于 2012-11-20T21:35:12.280 回答
0

我的建议是简单地构建一个脚本以将所有这些数组加载到数据库中,以便更轻松地维护它们。当然,您需要确保为 UTF-8 字符集和排序规则设置了数据库表/字段。

于 2012-11-20T21:36:01.360 回答
0

我是否正确理解您已经将数据放入 PHP 数组?此时,您可以这样做来对键进行排序。这将使排序一致:

ksort($array);
于 2012-11-20T21:38:00.493 回答