2010-03-08 93 views

回答

2
  • 您可以从here下载ISO 639-1和639-2的代码。
  • 来自here的ISO 639-3。

Here是也包含本地语言名称的文本文件(由维基百科文章转换而来)。该文件是制表符分隔的UTF-8。它是1:1的转换,所以它可以包含错误!

+0

第一个链接中断 – 2016-01-01 13:21:55

+0

第一个和第三个链接中断 – 2016-02-10 13:27:50

2

你会想ISO 639-3如果你想先进日期列表。

+0

好了感谢,现在我注意到,该表是用英文字符完全建立,就在他们本国语言存在吗?这是为了让人们选择他们的语言,如果是用他们自己的语言与英语,我认为这会更有意义。 – user103219 2010-03-08 20:19:48

+0

@razass:关于本土lanugages看到我的答案。 – AxelEckenberger 2010-03-08 20:48:29

+0

我有一个404错误的链接。 – pvledoux 2015-04-14 12:48:36

0

增强Obalix答案,我创建了一个bash脚本,它将采用UTF-8 CSV文件并将其插入到数据库中。 请注意,Obalix提供的文件是UTF-16而非UTF-8。下面的脚本检查它的编码并建议用户如何转换它。

当然,您将需要根据您的模式修改插入语句。

#!/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