2016-02-16 34 views
2

我试图让我的用户按国家搜索数据。用户将用他们的母语输入国名。 但是,我的数据库只包含每个国家的alpha2代码。用pycountry和gettext将翻译的国家名称转换为alpha2

我目前的做法:

user_input = "France" 
country_code = pycountry.countries.get(name=user_input).alpha2 # u'FR' 

如果用户输入的英语有了这工作得很好。由于数据以用户首选语言显示,因此她希望以其首选语言进行搜索。

使用的gettext与pycountry的语言环境,我能展现国家的名称在用户的首选语言:

# example for a German user 
gettext.translation('iso3166', pycountry.LOCALES_DIR, languages=['de']).install() 
country_code = 'FR' 
country = _(pycountry.countries.get(alpha2=country_code).name) # 'Frankreich' 

现在我在寻找一种方式给用户输入翻译回英文(假设没有拼写错误)并从中获取国家代码:

user_input = "Frankreich" 
translated_user_input = ??? # 'France' 
country_code = pycountry.countries.get(name=translated_user_input).alpha2 # u'FR' 

有没有人有个好主意,如何实现这个目标?理想的情况是只使用gettext和pycountry?

回答

2

我找到了解决办法,这可能不是确切的性能进行了优化,但作品,而不是太丑:

user_input = "Frankreich" 
country_code = ''.join([country.alpha2 for country in pycountry.countries if _(country.name) == user_input]) # u'FR' 
+0

BTW。我在这里使用'''.join()'将结果列表平坦化为一个字符串,并在同一步骤中捕获空结果。 – Tim

相关问题