Have ideas to improve npm?Join in the discussion! »

    langip

    1.1.7 • Public • Published

    Detect language with IP address [Updated Mar 2021]

    Demo


    ✔️ Free & No registration

    ✔️ Fast & No HTTP connection

    ✔️ Zero dependency & No limit

    ✔️ Ip2Location database & configable build

    ✔️ Includeds Arabic, Persian, Chinese, Spanish, French, Turkish, Korean as default


    Install

    • Npm
    npm install langip --save
    /* As multi language detector */
    const langip = require("langip")
    
    /* As specific language (recommended) */
    const isAr = require("langip/language/Ar")
    const isFa = require("langip/language/Fa")
    const isZh = require("langip/language/Zh")
    const isEs = require("langip/language/Es")
    const isFr = require("langip/language/Fr")
    const isTr = require("langip/language/Tr")
    const isKo = require("langip/language/Ko")
    • CDN
    <!-- As multi language detector  -->
    <script src="https://unpkg.com/langip@latest/dist/index.js"></script>
    
    <!-- As specific language (recommended) -->
    <script src="https://unpkg.com/langip@latest/dist/Ar.js"></script>
    <script src="https://unpkg.com/langip@latest/dist/Fa.js"></script>
    <script src="https://unpkg.com/langip@latest/dist/Zh.js"></script>
    <script src="https://unpkg.com/langip@latest/dist/Es.js"></script>
    <script src="https://unpkg.com/langip@latest/dist/Fr.js"></script>
    <script src="https://unpkg.com/langip@latest/dist/Tr.js"></script>
    <script src="https://unpkg.com/langip@latest/dist/Ko.js"></script>

    Usage

    • As multi language detector
    /*
        detect(
            ip,         (String)
                        (Required)
    
            fallback,   (String)
                        (Optional)
                        (Default:"En")
    
            target,     (Array)
                        (Optional)
                        (Priority)
                        (Default:["Ar", "Fa", "Zh", "Es", "Fr", "Tr", "Ko"])
        )
    */
    
    /* async await */
    var detect = async () => {
        let lang = await langip.detect("8.8.8.8") /* detect(ip, fallback, target) */
        console.log(lang) /* En */
    }
    
    /* promise */
    langip.detect("103.127.119.132").then((lang) => {
        console.log(lang) /* Fa */
    })
    • As specific language (recommended)
    • Arabic (Ar)
    /*
        Arabic [Ar]
        Countries [SA, IQ, KW, BH, AE, QA, OM, EG, SD]
    */
    
    /* async await */
    var check = async () => {
        let status = await isAr("194.31.220.14") /* isAr(ip) */
        console.log(status) /* true */
    }
    
    /* promise */
    isAr("1.1.1.1").then((status) => {
        console.log(status) /* false */
    })
    • Persian (Fa)
    /*
        Persian [Fa]
        Countries [IR, AF, TJ]
    */
    
    /* async await */
    var check = async () => {
        let status = await isFa("8.8.8.8") /* isFa(ip) */
        console.log(status) /* false */
    }
    
    /* promise */
    isFa("103.127.119.132").then((status) => {
        console.log(status) /* true */
    })
    • Chinese (Zh)
    /*
        Chinese [Zh]
        Countries [CN, SG, TW]
    */
    
    /* async await */
    var check = async () => {
        let status = await isZh("8.8.8.8") /* isZh(ip) */
        console.log(status) /* false */
    }
    
    /* promise */
    isZh("103.70.53.52").then((status) => {
        console.log(status) /* true */
    })
    • Spanish (Es)
    /*
        Spanish [Es]
        Countries [ES, MX]
    */
    
    /* async await */
    var check = async () => {
        let status = await isEs("8.8.8.8") /* isEs(ip) */
        console.log(status) /* false */
    }
    
    /* promise */
    isEs("192.148.167.205").then((status) => {
        console.log(status) /* true */
    })
    • French (Fr)
    /*
        French [Fr]
        Countries [FR, CD]
    */
    
    /* async await */
    var check = async () => {
        let status = await isFr("8.8.8.8") /* isFr(ip) */
        console.log(status) /* false */
    }
    
    /* promise */
    isFr("188.115.112.51").then((status) => {
        console.log(status) /* true */
    })
    • Turkish (Tr)
    /*
        Turkish [Tr]
        Countries [TR]
    */
    
    /* async await */
    var check = async () => {
        let status = await isTr("8.8.8.8") /* isTr(ip) */
        console.log(status) /* false */
    }
    
    /* promise */
    isTr("217.195.200.161").then((status) => {
        console.log(status) /* true */
    })
    • Korean (Ko)
    /*
        Korean [Ko]
        Countries [KR]
    */
    
    /* async await */
    var check = async () => {
        let status = await isKo("8.8.8.8") /* isKo(ip) */
        console.log(status) /* false */
    }
    
    /* promise */
    isKo("134.75.232.150").then((status) => {
        console.log(status) /* true */
    })

    Utility

    const { utility } = require("langip")
    
    /* ipTolong(ip) */
    let long = utility.ipTolong("2.16.158.255")
    console.log(long) /* 34643711 */
    
    /* longToip(long) */
    let ip = utility.longToip(42991616)
    console.log(ip) /* 2.144.0.0 */

    Build

    To update IP2Location database or add a new language detector

    {
        "file": "IP2LOCATION-LITE-DB1.CSV",
        "languages": {
            "Ar": ["SA", "IQ", "KW", "BH", "AE", "QA", "OM", "EG", "SD"],
            "Fa": ["IR", "AF", "TJ"],
            "Zh": ["CN", "SG", "TW"],
            "Es": ["ES", "MX"],
            "Fr": ["FR", "CD"],
            "Tr": ["TR"],
            "Ko": ["KR"]
        }
    }
    • Download latest database
    npm run download
    • Convert IP2Location database to small chunk files
    npm run build

    Test

    npm run test
    • Detect
     PASS  test/detect.test.js
      √ detect [195.16.171.140] => [Ar] (16 ms)
      √ detect [109.122.208.134] => [Fa] (4 ms)
      √ detect [103.70.53.52] => [Zh] (2 ms)
      √ detect [192.148.167.205] => [Es] (3 ms)
      √ detect [188.115.112.51] => [Fr] (3 ms)
      √ detect [217.195.200.161] => [Tr] (2 ms)
      √ detect [134.75.232.150] => [Ko] (2 ms)
      √ detect fallback [0.0.0.0] => [En] (1 ms)
      √ detect custom fallback [Fa] [0.0.0.0] => [Fa] (1 ms)
      √ detect custom target [Ar, Fa] [185.141.135.87] => [Fa] (1 ms)
      √ detect custom target [Ar] [185.141.135.87] => [En] (1 ms)
    • isAr
     PASS  test/isAr.test.js
      √ isAr [185.217.8.116] => [true] (3 ms)
      √ isAr [0.0.0.0] => [false]
    • isFa
     PASS  test/isFa.test.js
      √ isFa [185.78.234.76] => [true] (4 ms)
      √ isFa [0.0.0.0] => [false] (1 ms)
    • isZh
     PASS  test/isZh.test.js
      √ isZh [113.17.217.136] => [true] (16 ms)
      √ isZh [0.0.0.0] => [false] (1 ms)
    • isEs
     PASS  test/isEs.test.js
      √ isEs [216.251.66.182] => [true] (7 ms)
      √ isEs [0.0.0.0] => [false] (1 ms)
    • isFr
     PASS  test/isFr.test.js
      √ isFr [5.144.136.101] => [true] (9 ms)
      √ isFr [0.0.0.0] => [false] (2 ms)
    • isTr
     PASS  test/isTr.test.js
      √ isTr [185.160.114.220] => [true] (4 ms)
      √ isTr [0.0.0.0] => [false] (6 ms)
    • isKo
     PASS  test/isKo.test.js
      √ isKo [103.19.124.87] => [true] (9 ms)
      √ isKo [0.0.0.0] => [false] (1 ms)
    • Utility
     PASS  test/utility.test.js
      √ utility [Ar] [34643456] => [2.16.158.0] (2 ms)
      √ utility [Ar] [2.16.158.255] => [34643711]
      √ utility [Fa] [42991616] => [2.144.0.0]
      √ utility [Fa] [2.147.255.255] => [43253759]
      √ utility [Zh] [16777472] => [1.0.1.0]
      √ utility [Zh] [1.0.3.255] => [16778239]
      √ utility [Es] [34605056] => [2.16.8.0]
      √ utility [Es] [2.16.8.255] => [34605311] (1 ms)
      √ utility [Fr] [33554432] => [2.0.0.0]
      √ utility [Fr] [2.15.255.255] => [34603007] (17 ms)
      √ utility [Tr] [34625536] => [2.16.88.0]
      √ utility [Tr] [2.16.88.255] => [34625791] (1 ms)
      √ utility [Ko] [17498112] => [1.11.0.0]
      √ utility [Ko] [1.11.255.255] => [17563647]

    IP2Location

    This package includes IP2Location LITE data

    Install

    npm i langip

    DownloadsWeekly Downloads

    30

    Version

    1.1.7

    License

    MIT

    Unpacked Size

    2.25 MB

    Total Files

    48

    Last publish

    Collaborators

    • avatar