Като разработчици често трябва да определим местоположението на потребителя, за да предоставим по-добри услуги. Една ключова част от информацията, която може да бъде полезна, е телефонният код на страната на потребителя – префиксът, използван при набиране на международни телефонни номера. Един ефикасен и надежден начин за отгатване на кодовете за повикване на държави на потребителите в JavaScript е въз основа на тяхната часова зона. Можете да разгледате демото на този уебсайт.

Защо отгатването на кодовете за повикване на държави на потребителите е от значение

Отгатването на телефонните кодове на държавите на потребителите може да бъде полезно поради няколко причини:

  • Форматиране на телефонни номера: Автоматичното форматиране на телефонни номера въз основа на местоположението на потребителя може да подобри потребителското изживяване чрез добавяне на подходящ код за повикване на държава и форматиране на самия номер според местните конвенции.
  • Избор на префикси за набиране: Използването на правилния префикс за набиране при извършване на международни разговори може да бъде от решаващо значение. Като познаете кода за повикване на държавата на потребителя, можете автоматично да изберете подходящия префикс и да направите процеса на повикване по-гладък за потребителя.
  • Географско насочване: Може да искате да покажете конкретно съдържание или функции въз основа на местоположението на потребителя. Познаването на телефонния код на тяхната държава може да помогне при вземането на по-точни решения за географско насочване.

Представяме ви ново решение: отгатване въз основа на часовата зона

Току-що пуснах библиотека в NPM, наречена guess-calling-code, предлагаща рационализиран метод за отгатване на кодовете за повикване на държави на потребителите в JavaScript въз основа на тяхната часова зона. Тази библиотека използва Intl.DateTimeFormat API, за да получи града на часовата зона на потребителя, който след това препраща със списък от съпоставяния на телефонния код на часовата зона към държавата.

Използване

Ето примерна употреба на guess-calling-code:

import guessCallingCode from "guess-calling-code";
const callingCode = guessCallingCode();
if (callingCode) {
  console.log(`User's country calling code is ${callingCode}`);
} else {
  console.log("Unable to determine user's country calling code");
}

Виждате, че е лесен за използване.

Как работи

Първо, ето функция за извличане на града на часовата зона на потребителя с помощта на Intl.DateTimeFormat API:

function getUserTimeZoneCity(): string | undefined {
  try {
    const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
    if (!userTimezone) return;
    const timezoneArr = userTimezone.split("/");
    const result = timezoneArr[timezoneArr.length - 1];
    return result;
  } catch (error) {
    return;
  }
}

Тази функция връща потребителския низ за града на часовата зона като "Montreal" или undefined, ако средата за изпълнение не поддържа пространството от имена Intl.

След това дефинираме нашата основна функция, guessCallingCode, която извиква getUserTimeZoneCity и кръстосано препраща полученото име на град с нашия предварително попълнен JSON обект на известни съпоставяния на град към код за повикване:

function guessCallingCode(): string | undefined {
  const timezoneCity = getUserTimeZoneCity();
  if (!timezoneCity) return;
  const callingCode = timezoneCityToCallingCodeObj[timezoneCity];
  return callingCode;
}

Само с тези две функции можете лесно и точно да определите кода за повикване на държавата на потребителя.

Ако се интересувате как се генерира градът на часовата зона към кода за повикване JSON, вижте тази публикация, която въвежда начин за картографиране на градовете на часовата зона към държавите. Базирах кода си на този подход за картографиране на градовете в часовите зони към телефонните кодове на държавите.

Предимства на гадаенето въз основа на часовата зона

Защо да изберете да познаете кодовете за повикване на държавата на потребителите въз основа на тяхната часова зона? Ето някои от основните предимства:

  1. Решение от страна на клиента: За разлика от търсенето на IP адреси от страна на сървъра, отгатването въз основа на часовата зона може да се направи изцяло от страна на клиента, като се намалява забавянето и се освобождават ресурси на сървъра.
  2. Лек: Библиотеката, публикувана в npm, е малка (‹ 15 KB), което я прави лесна за интегриране в широк набор от проекти.
  3. Високо ниво на точност: Повечето устройства имат точни настройки за часова зона, което прави този подход много точен и надежден. Освен това, той е по-точен от методите, базирани на IP, които могат да бъдат изхвърлени от VPN или проксита.

В допълнение към тези предимства, тъй като Intl е API за интернационализация на ECMAScript, можете да го използвате както в модерни браузъри, така и в node.js.

Заключение

Отгатването на кодовете за повикване на държавата на потребителите въз основа на тяхната часова зона може да бъде ценно допълнение към инструментариума на всеки програмист. Независимо дали създавате приложение за съобщения, услуга за споделяне на превози или всяко друго приложение, включващо телефонни номера, помислете за използването на „код за познаване на обаждане“.

Връзки, свързани с разглежданите теми:

Надявам се, че тази статия е предоставила полезно обяснение за това как да се определят кодове за повикване на държави с помощта на JavaScript и предимствата на използването на часови зони като справка. Ако сте намерили „guess-calling-code“ полезен, любезно обмислете дали да му дадете звезда в „GitHub Repo“❤️. Моля, не се колебайте да споделите отзиви или въпроси в секцията за коментари по-долу. Вашата ангажираност е високо оценена!