2009-10-11 20 views
2

J'essaie d'obtenir CultureInfo avec le code du pays. J'utilise hostip.info pour obtenir le code du pays.get cultureinfo avec le code pays

Par exemple, "http://api.hostip.info/?ip=207.46.197.32&position=true" me renvoie "US" pour le code du pays ou http://api.hostip.info/?ip=82.151.131.196&position=true renvoie "TR".

Si je pouvais avoir "en-US", "tr-TR", c'est facile, mais je ne peux pas avoir ces noms de culture. J'ai des codes de pays.

Est-il possible d'obtenir CultureInfo avec des codes de pays ou avez-vous des suggestions pour obtenir CultureInfo avec une adresse IP?

Répondre

1

Je ne suis pas sûr que vous puissiez le faire en pratique.

Si vous avez la Suisse, le Canada ou l'Inde comme code de pays, quelle langue souhaitez-vous?

+0

Oui, vous avez raison, il est préférable que je puisse obtenir CultureName à partir de l'adresse IP? est-il possible ou quelle est la meilleure façon de localisation avec adresse IP? – Can

2

Si la requête est faite par un navigateur, le champ "Accept-Language" dans l'en-tête de la requête HTTP affichera la liste des cultures désirées. Certes, il ne s'agit pas d'une adresse IP, mais cela peut être une solution si vous avez des en-têtes de requête HTTP.

Par ex,

Accept-Language: fr-fr, en

1

Les normes publiques officielles est la plus meilleure à utiliser. Pour plus d'informations, reportez-vous à la section "CLDR - Référentiel de données locales communes Unicode" au http://cldr.unicode.org/.

Les fichiers de données sont disponibles en téléchargement. Une documentation et des recommandations intéressantes sont disponibles.

+0

la section "sous-étiquette probable" est ce que vous voulez, en particulier http://www.unicode.org/reports/tr35/#Likely_Subtags et http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/ likely_subtags.html –

0

J'ai rencontré le même problème, car j'ai obtenu le code de pays à partir d'une bibliothèque de localisation IP tierce. Donc, voici ma solution.

D'abord j'essaie d'obtenir les informations culturelles par le code du pays. Si cela échoue, je récupérai tous cultrure Infos et je recherche celui qui contient le nom du pays (également possible la voie est le code de pays (Etats-Unis) est contenu dans le champ CultureInfo.Name (en-US))

ci = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => c.EnglishName.Contains(loc.countryName)).FirstOrDefault(); 

Si le pays a plus d'une culture puis j'ai suivi l'approche suggérée par Doug Domeny