我正在寻找一个语言名称和代码表,如ISO 639-1集:http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
由于
答案 0 :(得分:2)
如果你想要最新的清单,你会想要ISO 639-3。
答案 1 :(得分:2)
Here是一个文本文件(从维基百科文章转换而来),其中还包含本机语言名称。该文件是制表符分隔的UTF-8。这是一个1:1的转换,因此它可能包含错误!
答案 2 :(得分:0)
增强Obalix答案,我创建了一个bash脚本,它将采用UTF-8 CSV文件并将其插入数据库。 请注意,Obalix提供的文件是UTF-16 NOT UTF-8。下面的脚本检查其编码并建议用户如何转换它。
当然,您需要根据您的架构修改insert语句。
#!/bin/bash
USAGE="Usage: $0 <csv-file>"
if [ $# -lt 1 ]
then
echo $USAGE
exit 1
fi
csv=$1
if [ ! -f $csv ]; then
echo "$csv: No such file"
exit 1
fi
file $csv | grep -q UTF-8
if [ $? -ne 0 ]
then
echo $csv: must be in UTF-8 format, use the following command to fix this:
echo "cat $csv | iconv -f UTF-16 -t UTF-8 | tr -d \"\r\" > utf8-$csv"
exit 1
fi
mysql=<PATH/TO/mysql/BINARY>
db=<DATABASE_NAME>
user=<USERNAME>
pass=<PASSWORD>
sql=insert-all-langs.sql
echo "-- Inserting all languages generated on `date`" > $sql
printf "Processing CSV file..."
# prepend _ to all lines so that no line starts by whitespace
sed 's/.*/_&/' $csv | while read l; do
iso6391=`echo "$l" | cut -f4`
name=`echo -e "$l" | cut -f3 | tr -d "\"" | sed 's/'\''/\\\\'\''/g'`
echo $iso6391:$name
# insert ignore supresses errors for duplicate locales (row still not inserted)
echo "insert ignore into languages (name, locale, rtl, created_at, updated_at) values ('$name', '$iso6391', 0, now(), now());" >> $sql
done
echo Done
printf "Executing SQL..."
cat $sql | $mysql -u$user -p$pass $db
echo Done