2010-03-08 54 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