mirror of
https://github.com/umami-software/umami.git
synced 2025-12-06 01:18:00 +01:00
Merge branch 'umami-software:master' into Yashh56
This commit is contained in:
commit
dda0802220
29 changed files with 3950 additions and 936 deletions
2
.github/workflows/cd-cloud.yml
vendored
2
.github/workflows/cd-cloud.yml
vendored
|
|
@ -1,4 +1,4 @@
|
|||
name: Create docker images
|
||||
name: Create docker images (cloud)
|
||||
|
||||
on:
|
||||
push:
|
||||
|
|
|
|||
58
.github/workflows/cd-manual.yml
vendored
58
.github/workflows/cd-manual.yml
vendored
|
|
@ -1,58 +0,0 @@
|
|||
name: Create docker images (manual)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
type: string
|
||||
description: Version
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build, push, and deploy
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
db-type: [postgresql, mysql]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Extract version parts from input
|
||||
id: extract_version
|
||||
run: |
|
||||
echo "version=$(echo ${{ github.event.inputs.version }})" >> $GITHUB_ENV
|
||||
echo "major=$(echo ${{ github.event.inputs.version }} | cut -d. -f1)" >> $GITHUB_ENV
|
||||
echo "minor=$(echo ${{ github.event.inputs.version }} | cut -d. -f2)" >> $GITHUB_ENV
|
||||
|
||||
- name: Generate tags
|
||||
id: generate_tags
|
||||
run: |
|
||||
echo "tag_major=$(echo ${{ matrix.db-type }}-${{ env.major }})" >> $GITHUB_ENV
|
||||
echo "tag_minor=$(echo ${{ matrix.db-type }}-${{ env.major }}.${{ env.minor }})" >> $GITHUB_ENV
|
||||
echo "tag_patch=$(echo ${{ matrix.db-type }}-${{ env.version }})" >> $GITHUB_ENV
|
||||
echo "tag_latest=$(echo ${{ matrix.db-type }}-latest)" >> $GITHUB_ENV
|
||||
|
||||
- uses: mr-smithers-excellent/docker-build-push@v6
|
||||
name: Build & push Docker image to ghcr.io for ${{ matrix.db-type }}
|
||||
with:
|
||||
image: umami
|
||||
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }}, ${{ env.tag_latest }}
|
||||
buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
|
||||
registry: ghcr.io
|
||||
multiPlatform: true
|
||||
platform: linux/amd64,linux/arm64
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- uses: mr-smithers-excellent/docker-build-push@v6
|
||||
name: Build & push Docker image to docker.io for ${{ matrix.db-type }}
|
||||
with:
|
||||
image: umamisoftware/umami
|
||||
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }}, ${{ env.tag_latest }}
|
||||
buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
|
||||
registry: docker.io
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
90
.github/workflows/cd.yml
vendored
90
.github/workflows/cd.yml
vendored
|
|
@ -1,50 +1,80 @@
|
|||
name: Create docker images
|
||||
|
||||
on: [create]
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*.*.*'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build, push, and deploy
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
id-token: write
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
db-type: [postgresql, mysql]
|
||||
db-type: [postgresql]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Set env
|
||||
run: |
|
||||
echo "NOW=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV
|
||||
|
||||
- name: Generate tags
|
||||
id: generate_tags
|
||||
run: |
|
||||
echo "tag_patch=$(echo ${{ matrix.db-type }})-${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
|
||||
echo "tag_minor=$(echo ${{ matrix.db-type }})-$(echo ${GITHUB_REF#refs/tags/} | cut -d. -f1,2)" >> $GITHUB_ENV
|
||||
echo "tag_major=$(echo ${{ matrix.db-type }})-$(echo ${GITHUB_REF#refs/tags/} | cut -d. -f1)" >> $GITHUB_ENV
|
||||
echo "tag_latest=$(echo ${{ matrix.db-type }})-latest" >> $GITHUB_ENV
|
||||
# Install cosign (for image signing)
|
||||
- name: Install cosign
|
||||
uses: sigstore/cosign-installer@v3
|
||||
|
||||
- uses: mr-smithers-excellent/docker-build-push@v6
|
||||
name: Build & push Docker image to ghcr.io for ${{ matrix.db-type }}
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Log into Docker Hub
|
||||
if: github.repository == 'umami-software/umami'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: docker.io
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Log into GHCR
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
image: umami
|
||||
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }}, ${{ env.tag_latest }}
|
||||
buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
|
||||
registry: ghcr.io
|
||||
multiPlatform: true
|
||||
platform: linux/amd64,linux/arm64
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- uses: mr-smithers-excellent/docker-build-push@v6
|
||||
name: Build & push Docker image to docker.io for ${{ matrix.db-type }}
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
image: umamisoftware/umami
|
||||
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }}, ${{ env.tag_latest }}
|
||||
buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
|
||||
registry: docker.io
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
images: |
|
||||
umamisoftware/umami,enable=${{ github.repository == 'umami-software/umami' }}
|
||||
ghcr.io/${{ github.repository }}
|
||||
flavor: |
|
||||
latest=auto
|
||||
prefix=${{ matrix.db-type }}-
|
||||
tags: |
|
||||
type=semver,pattern={{version}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
|
||||
- name: Build and push Docker image
|
||||
id: build-and-push
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
build-args: DATABASE_TYPE=${{ matrix.db-type }}
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
# Sign the published image digest
|
||||
- name: Sign the published Docker image
|
||||
env:
|
||||
TAGS: ${{ steps.meta.outputs.tags }}
|
||||
DIGEST: ${{ steps.build-and-push.outputs.digest }}
|
||||
run: echo "${TAGS}" | xargs -I {} cosign sign --yes "{}@${DIGEST}"
|
||||
|
|
|
|||
16
.github/workflows/ci.yml
vendored
16
.github/workflows/ci.yml
vendored
|
|
@ -19,20 +19,26 @@ jobs:
|
|||
matrix:
|
||||
include:
|
||||
- node-version: 18.18
|
||||
pnpm-version: 10
|
||||
db-type: postgresql
|
||||
- node-version: 18.18
|
||||
pnpm-version: 10
|
||||
db-type: mysql
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: pnpm/action-setup@v4 # required so that setup-node will work
|
||||
with:
|
||||
version: ${{ matrix.pnpm-version }}
|
||||
run_install: false
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'yarn'
|
||||
cache: 'pnpm'
|
||||
env:
|
||||
DATABASE_TYPE: ${{ matrix.db-type }}
|
||||
- run: npm install --global yarn
|
||||
- run: yarn install
|
||||
- run: yarn test
|
||||
- run: yarn build
|
||||
- run: npm install --global pnpm
|
||||
- run: pnpm install
|
||||
- run: pnpm test
|
||||
- run: pnpm build
|
||||
|
|
|
|||
22
.github/workflows/delete-untagged-images.yml
vendored
Normal file
22
.github/workflows/delete-untagged-images.yml
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
name: Delete untagged GHCR images
|
||||
|
||||
on:
|
||||
workflow_dispatch: # Run manually from the Actions tab
|
||||
|
||||
jobs:
|
||||
cleanup:
|
||||
name: Delete all untagged images
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
packages: write
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Delete untagged GHCR images
|
||||
uses: actions/delete-package-versions@v5
|
||||
with:
|
||||
package-name: "umami" # 👈 change if your GHCR package name differs
|
||||
package-type: "container"
|
||||
delete-only-untagged-versions: true
|
||||
min-versions-to-keep: 0
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -4,6 +4,7 @@
|
|||
node_modules
|
||||
.pnp
|
||||
.pnp.js
|
||||
.pnpm-store
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -43,7 +43,7 @@ A detailed getting started guide can be found at [umami.is/docs](https://umami.i
|
|||
```bash
|
||||
git clone https://github.com/umami-software/umami.git
|
||||
cd umami
|
||||
npm install
|
||||
pnpm install
|
||||
```
|
||||
|
||||
### Configure Umami
|
||||
|
|
@ -64,7 +64,7 @@ mysql://username:mypassword@localhost:3306/mydb
|
|||
### Build the Application
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
_The build step will create tables in your database if you are installing for the first time. It will also create a login user with username **admin** and password **umami**._
|
||||
|
|
@ -72,7 +72,7 @@ _The build step will create tables in your database if you are installing for th
|
|||
### Start the Application
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
pnpm run start
|
||||
```
|
||||
|
||||
_By default, this will launch the application on `http://localhost:3000`. You will need to either [proxy](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) requests from your web server or change the [port](https://nextjs.org/docs/api-reference/cli#production) to serve the application directly._
|
||||
|
|
@ -107,8 +107,8 @@ To get the latest features, simply do a pull, install any new dependencies, and
|
|||
|
||||
```bash
|
||||
git pull
|
||||
npm install
|
||||
npm run build
|
||||
pnpm install
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
To update the Docker image, simply pull the new images and rebuild:
|
||||
|
|
|
|||
|
|
@ -149,6 +149,21 @@ describe('Website API tests', () => {
|
|||
});
|
||||
});
|
||||
|
||||
it('Updates a website with only shareId.', () => {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: `/api/websites/${websiteId}`,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: Cypress.env('authorization'),
|
||||
},
|
||||
body: { shareId: 'ABCDEF' },
|
||||
}).then(response => {
|
||||
expect(response.status).to.eq(200);
|
||||
expect(response.body).to.have.property('shareId', 'ABCDEF');
|
||||
});
|
||||
});
|
||||
|
||||
it('Resets a website by removing all data related to the website.', () => {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ services:
|
|||
umami:
|
||||
image: ghcr.io/umami-software/umami:postgresql-latest
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- '3000:3000'
|
||||
environment:
|
||||
DATABASE_URL: postgresql://umami:umami@db:5432/umami
|
||||
DATABASE_TYPE: postgresql
|
||||
|
|
@ -14,7 +14,7 @@ services:
|
|||
init: true
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl http://localhost:3000/api/heartbeat"]
|
||||
test: ['CMD-SHELL', 'curl http://localhost:3000/api/heartbeat']
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
|
@ -28,7 +28,7 @@ services:
|
|||
- umami-db-data:/var/lib/postgresql/data
|
||||
restart: always
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
test: ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}']
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@
|
|||
"kafkajs": "^2.1.0",
|
||||
"maxmind": "^4.3.24",
|
||||
"md5": "^2.3.0",
|
||||
"next": "15.3.3",
|
||||
"next": "15.4.7",
|
||||
"node-fetch": "^3.2.8",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"papaparse": "^5.5.3",
|
||||
|
|
|
|||
381
pnpm-lock.yaml
generated
381
pnpm-lock.yaml
generated
|
|
@ -123,8 +123,8 @@ importers:
|
|||
specifier: ^2.3.0
|
||||
version: 2.3.0
|
||||
next:
|
||||
specifier: 15.3.3
|
||||
version: 15.3.3(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
specifier: 15.4.7
|
||||
version: 15.4.7(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
|
||||
node-fetch:
|
||||
specifier: ^3.2.8
|
||||
version: 3.3.2
|
||||
|
|
@ -1317,8 +1317,8 @@ packages:
|
|||
'@emnapi/core@1.4.5':
|
||||
resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==}
|
||||
|
||||
'@emnapi/runtime@1.4.5':
|
||||
resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==}
|
||||
'@emnapi/runtime@1.5.0':
|
||||
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
|
||||
|
||||
'@emnapi/wasi-threads@1.0.4':
|
||||
resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==}
|
||||
|
|
@ -1589,124 +1589,128 @@ packages:
|
|||
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
|
||||
deprecated: Use @eslint/object-schema instead
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==}
|
||||
'@img/colour@1.0.0':
|
||||
resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.4':
|
||||
resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-darwin-x64@0.34.3':
|
||||
resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==}
|
||||
'@img/sharp-darwin-x64@0.34.4':
|
||||
resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.0':
|
||||
resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==}
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.3':
|
||||
resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-libvips-darwin-x64@1.2.0':
|
||||
resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==}
|
||||
'@img/sharp-libvips-darwin-x64@1.2.3':
|
||||
resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@img/sharp-libvips-linux-arm64@1.2.0':
|
||||
resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==}
|
||||
'@img/sharp-libvips-linux-arm64@1.2.3':
|
||||
resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-arm@1.2.0':
|
||||
resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==}
|
||||
'@img/sharp-libvips-linux-arm@1.2.3':
|
||||
resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.0':
|
||||
resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==}
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.3':
|
||||
resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-s390x@1.2.0':
|
||||
resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==}
|
||||
'@img/sharp-libvips-linux-s390x@1.2.3':
|
||||
resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linux-x64@1.2.0':
|
||||
resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==}
|
||||
'@img/sharp-libvips-linux-x64@1.2.3':
|
||||
resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
|
||||
resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==}
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.3':
|
||||
resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
|
||||
resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==}
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.3':
|
||||
resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==}
|
||||
'@img/sharp-linux-arm64@0.34.4':
|
||||
resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-arm@0.34.3':
|
||||
resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==}
|
||||
'@img/sharp-linux-arm@0.34.4':
|
||||
resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-ppc64@0.34.3':
|
||||
resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==}
|
||||
'@img/sharp-linux-ppc64@0.34.4':
|
||||
resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-s390x@0.34.3':
|
||||
resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==}
|
||||
'@img/sharp-linux-s390x@0.34.4':
|
||||
resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linux-x64@0.34.3':
|
||||
resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==}
|
||||
'@img/sharp-linux-x64@0.34.4':
|
||||
resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linuxmusl-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==}
|
||||
'@img/sharp-linuxmusl-arm64@0.34.4':
|
||||
resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-linuxmusl-x64@0.34.3':
|
||||
resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==}
|
||||
'@img/sharp-linuxmusl-x64@0.34.4':
|
||||
resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@img/sharp-wasm32@0.34.3':
|
||||
resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==}
|
||||
'@img/sharp-wasm32@0.34.4':
|
||||
resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [wasm32]
|
||||
|
||||
'@img/sharp-win32-arm64@0.34.3':
|
||||
resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==}
|
||||
'@img/sharp-win32-arm64@0.34.4':
|
||||
resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@img/sharp-win32-ia32@0.34.3':
|
||||
resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==}
|
||||
'@img/sharp-win32-ia32@0.34.4':
|
||||
resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@img/sharp-win32-x64@0.34.3':
|
||||
resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==}
|
||||
'@img/sharp-win32-x64@0.34.4':
|
||||
resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
|
@ -1826,56 +1830,56 @@ packages:
|
|||
resolution: {integrity: sha512-F+HiQaUpISBmooALpwDULoCCwUhI6MugEEBstjuxOL2rh2ROFhK4abv87f4GxVXRSmw0AtXAp2eiP8vHcZ3NKQ==}
|
||||
engines: {node: '>=18.0.0'}
|
||||
|
||||
'@next/env@15.3.3':
|
||||
resolution: {integrity: sha512-OdiMrzCl2Xi0VTjiQQUK0Xh7bJHnOuET2s+3V+Y40WJBAXrJeGA3f+I8MZJ/YQ3mVGi5XGR1L66oFlgqXhQ4Vw==}
|
||||
'@next/env@15.4.7':
|
||||
resolution: {integrity: sha512-PrBIpO8oljZGTOe9HH0miix1w5MUiGJ/q83Jge03mHEE0E3pyqzAy2+l5G6aJDbXoobmxPJTVhbCuwlLtjSHwg==}
|
||||
|
||||
'@next/eslint-plugin-next@14.2.30':
|
||||
resolution: {integrity: sha512-mvVsMIutMxQ4NGZEMZ1kiBNc+la8Xmlk30bKUmCPQz2eFkmsLv54Mha8QZarMaCtSPkkFA1TMD+FIZk0l/PpzA==}
|
||||
|
||||
'@next/swc-darwin-arm64@15.3.3':
|
||||
resolution: {integrity: sha512-WRJERLuH+O3oYB4yZNVahSVFmtxRNjNF1I1c34tYMoJb0Pve+7/RaLAJJizyYiFhjYNGHRAE1Ri2Fd23zgDqhg==}
|
||||
'@next/swc-darwin-arm64@15.4.7':
|
||||
resolution: {integrity: sha512-2Dkb+VUTp9kHHkSqtws4fDl2Oxms29HcZBwFIda1X7Ztudzy7M6XF9HDS2dq85TmdN47VpuhjE+i6wgnIboVzQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@next/swc-darwin-x64@15.3.3':
|
||||
resolution: {integrity: sha512-XHdzH/yBc55lu78k/XwtuFR/ZXUTcflpRXcsu0nKmF45U96jt1tsOZhVrn5YH+paw66zOANpOnFQ9i6/j+UYvw==}
|
||||
'@next/swc-darwin-x64@15.4.7':
|
||||
resolution: {integrity: sha512-qaMnEozKdWezlmh1OGDVFueFv2z9lWTcLvt7e39QA3YOvZHNpN2rLs/IQLwZaUiw2jSvxW07LxMCWtOqsWFNQg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@next/swc-linux-arm64-gnu@15.3.3':
|
||||
resolution: {integrity: sha512-VZ3sYL2LXB8znNGcjhocikEkag/8xiLgnvQts41tq6i+wql63SMS1Q6N8RVXHw5pEUjiof+II3HkDd7GFcgkzw==}
|
||||
'@next/swc-linux-arm64-gnu@15.4.7':
|
||||
resolution: {integrity: sha512-ny7lODPE7a15Qms8LZiN9wjNWIeI+iAZOFDOnv2pcHStncUr7cr9lD5XF81mdhrBXLUP9yT9RzlmSWKIazWoDw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-arm64-musl@15.3.3':
|
||||
resolution: {integrity: sha512-h6Y1fLU4RWAp1HPNJWDYBQ+e3G7sLckyBXhmH9ajn8l/RSMnhbuPBV/fXmy3muMcVwoJdHL+UtzRzs0nXOf9SA==}
|
||||
'@next/swc-linux-arm64-musl@15.4.7':
|
||||
resolution: {integrity: sha512-4SaCjlFR/2hGJqZLLWycccy1t+wBrE/vyJWnYaZJhUVHccpGLG5q0C+Xkw4iRzUIkE+/dr90MJRUym3s1+vO8A==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-x64-gnu@15.3.3':
|
||||
resolution: {integrity: sha512-jJ8HRiF3N8Zw6hGlytCj5BiHyG/K+fnTKVDEKvUCyiQ/0r5tgwO7OgaRiOjjRoIx2vwLR+Rz8hQoPrnmFbJdfw==}
|
||||
'@next/swc-linux-x64-gnu@15.4.7':
|
||||
resolution: {integrity: sha512-2uNXjxvONyRidg00VwvlTYDwC9EgCGNzPAPYbttIATZRxmOZ3hllk/YYESzHZb65eyZfBR5g9xgCZjRAl9YYGg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-linux-x64-musl@15.3.3':
|
||||
resolution: {integrity: sha512-HrUcTr4N+RgiiGn3jjeT6Oo208UT/7BuTr7K0mdKRBtTbT4v9zJqCDKO97DUqqoBK1qyzP1RwvrWTvU6EPh/Cw==}
|
||||
'@next/swc-linux-x64-musl@15.4.7':
|
||||
resolution: {integrity: sha512-ceNbPjsFgLscYNGKSu4I6LYaadq2B8tcK116nVuInpHHdAWLWSwVK6CHNvCi0wVS9+TTArIFKJGsEyVD1H+4Kg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@next/swc-win32-arm64-msvc@15.3.3':
|
||||
resolution: {integrity: sha512-SxorONgi6K7ZUysMtRF3mIeHC5aA3IQLmKFQzU0OuhuUYwpOBc1ypaLJLP5Bf3M9k53KUUUj4vTPwzGvl/NwlQ==}
|
||||
'@next/swc-win32-arm64-msvc@15.4.7':
|
||||
resolution: {integrity: sha512-pZyxmY1iHlZJ04LUL7Css8bNvsYAMYOY9JRwFA3HZgpaNKsJSowD09Vg2R9734GxAcLJc2KDQHSCR91uD6/AAw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@next/swc-win32-x64-msvc@15.3.3':
|
||||
resolution: {integrity: sha512-4QZG6F8enl9/S2+yIiOiju0iCTFd93d8VC1q9LZS4p/Xuk81W2QDjCFeoogmrWWkAD59z8ZxepBQap2dKS5ruw==}
|
||||
'@next/swc-win32-x64-msvc@15.4.7':
|
||||
resolution: {integrity: sha512-HjuwPJ7BeRzgl3KrjKqD2iDng0eQIpIReyhpF5r4yeAHFwWRuAhfW92rWv/r3qeQHEwHsLRzFDvMqRjyM5DI6A==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
|
@ -2151,9 +2155,6 @@ packages:
|
|||
resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
'@swc/counter@0.1.3':
|
||||
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
|
||||
|
||||
'@swc/helpers@0.5.15':
|
||||
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
|
||||
|
||||
|
|
@ -2802,10 +2803,6 @@ packages:
|
|||
buffer@5.7.1:
|
||||
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
||||
|
||||
busboy@1.6.0:
|
||||
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
|
||||
engines: {node: '>=10.16.0'}
|
||||
|
||||
cachedir@2.4.0:
|
||||
resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
|
@ -2845,8 +2842,8 @@ packages:
|
|||
caniuse-api@3.0.0:
|
||||
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
|
||||
|
||||
caniuse-lite@1.0.30001727:
|
||||
resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==}
|
||||
caniuse-lite@1.0.30001743:
|
||||
resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==}
|
||||
|
||||
caseless@0.12.0:
|
||||
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
|
||||
|
|
@ -2957,13 +2954,6 @@ packages:
|
|||
color-name@1.1.4:
|
||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||
|
||||
color-string@1.9.1:
|
||||
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
|
||||
|
||||
color@4.2.3:
|
||||
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
|
||||
engines: {node: '>=12.5.0'}
|
||||
|
||||
colord@2.9.3:
|
||||
resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
|
||||
|
||||
|
|
@ -3307,8 +3297,8 @@ packages:
|
|||
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
detect-libc@2.0.4:
|
||||
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
|
||||
detect-libc@2.1.0:
|
||||
resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
detect-newline@3.1.0:
|
||||
|
|
@ -4129,9 +4119,6 @@ packages:
|
|||
is-arrayish@0.2.1:
|
||||
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
|
||||
|
||||
is-arrayish@0.3.2:
|
||||
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
|
||||
|
||||
is-async-function@2.1.1:
|
||||
resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
|
@ -4940,13 +4927,13 @@ packages:
|
|||
natural-compare@1.4.0:
|
||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||
|
||||
next@15.3.3:
|
||||
resolution: {integrity: sha512-JqNj29hHNmCLtNvd090SyRbXJiivQ+58XjCcrC50Crb5g5u2zi7Y2YivbsEfzk6AtVI80akdOQbaMZwWB1Hthw==}
|
||||
next@15.4.7:
|
||||
resolution: {integrity: sha512-OcqRugwF7n7mC8OSYjvsZhhG1AYSvulor1EIUsIkbbEbf1qoE5EbH36Swj8WhF4cHqmDgkiam3z1c1W0J1Wifg==}
|
||||
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.1.0
|
||||
'@playwright/test': ^1.41.2
|
||||
'@playwright/test': ^1.51.1
|
||||
babel-plugin-react-compiler: '*'
|
||||
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
||||
react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
||||
|
|
@ -6033,8 +6020,8 @@ packages:
|
|||
setimmediate@1.0.5:
|
||||
resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
|
||||
|
||||
sharp@0.34.3:
|
||||
resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==}
|
||||
sharp@0.34.4:
|
||||
resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==}
|
||||
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||
|
||||
shebang-command@1.2.0:
|
||||
|
|
@ -6080,9 +6067,6 @@ packages:
|
|||
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
simple-swizzle@0.2.2:
|
||||
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
|
||||
|
||||
sisteransi@1.0.5:
|
||||
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
|
||||
|
||||
|
|
@ -6161,10 +6145,6 @@ packages:
|
|||
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
streamsearch@1.1.0:
|
||||
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
|
||||
engines: {node: '>=10.0.0'}
|
||||
|
||||
string-argv@0.3.2:
|
||||
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
|
||||
engines: {node: '>=0.6.19'}
|
||||
|
|
@ -7885,7 +7865,7 @@ snapshots:
|
|||
tslib: 2.8.1
|
||||
optional: true
|
||||
|
||||
'@emnapi/runtime@1.4.5':
|
||||
'@emnapi/runtime@1.5.0':
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
optional: true
|
||||
|
|
@ -8145,90 +8125,93 @@ snapshots:
|
|||
|
||||
'@humanwhocodes/object-schema@2.0.3': {}
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.3':
|
||||
'@img/colour@1.0.0':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-darwin-arm64@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.0
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-darwin-x64@0.34.3':
|
||||
'@img/sharp-darwin-x64@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.0
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.0':
|
||||
'@img/sharp-libvips-darwin-arm64@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-darwin-x64@1.2.0':
|
||||
'@img/sharp-libvips-darwin-x64@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-arm64@1.2.0':
|
||||
'@img/sharp-libvips-linux-arm64@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-arm@1.2.0':
|
||||
'@img/sharp-libvips-linux-arm@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.0':
|
||||
'@img/sharp-libvips-linux-ppc64@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-s390x@1.2.0':
|
||||
'@img/sharp-libvips-linux-s390x@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linux-x64@1.2.0':
|
||||
'@img/sharp-libvips-linux-x64@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.0':
|
||||
'@img/sharp-libvips-linuxmusl-arm64@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.0':
|
||||
'@img/sharp-libvips-linuxmusl-x64@1.2.3':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-arm64@0.34.3':
|
||||
'@img/sharp-linux-arm64@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-arm@0.34.3':
|
||||
'@img/sharp-linux-arm@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-arm': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-ppc64@0.34.3':
|
||||
'@img/sharp-linux-ppc64@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.0
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-s390x@0.34.3':
|
||||
'@img/sharp-linux-s390x@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.0
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linux-x64@0.34.3':
|
||||
'@img/sharp-linux-x64@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linux-x64': 1.2.0
|
||||
'@img/sharp-libvips-linux-x64': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linuxmusl-arm64@0.34.3':
|
||||
'@img/sharp-linuxmusl-arm64@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-linuxmusl-x64@0.34.3':
|
||||
'@img/sharp-linuxmusl-x64@0.34.4':
|
||||
optionalDependencies:
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.3
|
||||
optional: true
|
||||
|
||||
'@img/sharp-wasm32@0.34.3':
|
||||
'@img/sharp-wasm32@0.34.4':
|
||||
dependencies:
|
||||
'@emnapi/runtime': 1.4.5
|
||||
'@emnapi/runtime': 1.5.0
|
||||
optional: true
|
||||
|
||||
'@img/sharp-win32-arm64@0.34.3':
|
||||
'@img/sharp-win32-arm64@0.34.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-win32-ia32@0.34.3':
|
||||
'@img/sharp-win32-ia32@0.34.4':
|
||||
optional: true
|
||||
|
||||
'@img/sharp-win32-x64@0.34.3':
|
||||
'@img/sharp-win32-x64@0.34.4':
|
||||
optional: true
|
||||
|
||||
'@isaacs/balanced-match@4.0.1': {}
|
||||
|
|
@ -8447,40 +8430,40 @@ snapshots:
|
|||
'@napi-rs/wasm-runtime@0.2.12':
|
||||
dependencies:
|
||||
'@emnapi/core': 1.4.5
|
||||
'@emnapi/runtime': 1.4.5
|
||||
'@emnapi/runtime': 1.5.0
|
||||
'@tybys/wasm-util': 0.10.0
|
||||
optional: true
|
||||
|
||||
'@netlify/plugin-nextjs@5.11.6': {}
|
||||
|
||||
'@next/env@15.3.3': {}
|
||||
'@next/env@15.4.7': {}
|
||||
|
||||
'@next/eslint-plugin-next@14.2.30':
|
||||
dependencies:
|
||||
glob: 10.3.10
|
||||
|
||||
'@next/swc-darwin-arm64@15.3.3':
|
||||
'@next/swc-darwin-arm64@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-darwin-x64@15.3.3':
|
||||
'@next/swc-darwin-x64@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-arm64-gnu@15.3.3':
|
||||
'@next/swc-linux-arm64-gnu@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-arm64-musl@15.3.3':
|
||||
'@next/swc-linux-arm64-musl@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-x64-gnu@15.3.3':
|
||||
'@next/swc-linux-x64-gnu@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-linux-x64-musl@15.3.3':
|
||||
'@next/swc-linux-x64-musl@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-win32-arm64-msvc@15.3.3':
|
||||
'@next/swc-win32-arm64-msvc@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@next/swc-win32-x64-msvc@15.3.3':
|
||||
'@next/swc-win32-x64-msvc@15.4.7':
|
||||
optional: true
|
||||
|
||||
'@nodelib/fs.scandir@2.1.5':
|
||||
|
|
@ -8772,8 +8755,6 @@ snapshots:
|
|||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@swc/counter@0.1.3': {}
|
||||
|
||||
'@swc/helpers@0.5.15':
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
|
@ -9349,7 +9330,7 @@ snapshots:
|
|||
autoprefixer@10.4.21(postcss@8.5.6):
|
||||
dependencies:
|
||||
browserslist: 4.25.1
|
||||
caniuse-lite: 1.0.30001727
|
||||
caniuse-lite: 1.0.30001743
|
||||
fraction.js: 4.3.7
|
||||
normalize-range: 0.1.2
|
||||
picocolors: 1.1.1
|
||||
|
|
@ -9496,7 +9477,7 @@ snapshots:
|
|||
|
||||
browserslist@4.25.1:
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001727
|
||||
caniuse-lite: 1.0.30001743
|
||||
electron-to-chromium: 1.5.187
|
||||
node-releases: 2.0.19
|
||||
update-browserslist-db: 1.1.3(browserslist@4.25.1)
|
||||
|
|
@ -9520,10 +9501,6 @@ snapshots:
|
|||
base64-js: 1.5.1
|
||||
ieee754: 1.2.1
|
||||
|
||||
busboy@1.6.0:
|
||||
dependencies:
|
||||
streamsearch: 1.1.0
|
||||
|
||||
cachedir@2.4.0: {}
|
||||
|
||||
call-bind-apply-helpers@1.0.2:
|
||||
|
|
@ -9565,11 +9542,11 @@ snapshots:
|
|||
caniuse-api@3.0.0:
|
||||
dependencies:
|
||||
browserslist: 4.25.1
|
||||
caniuse-lite: 1.0.30001727
|
||||
caniuse-lite: 1.0.30001743
|
||||
lodash.memoize: 4.1.2
|
||||
lodash.uniq: 4.5.0
|
||||
|
||||
caniuse-lite@1.0.30001727: {}
|
||||
caniuse-lite@1.0.30001743: {}
|
||||
|
||||
caseless@0.12.0: {}
|
||||
|
||||
|
|
@ -9663,18 +9640,6 @@ snapshots:
|
|||
|
||||
color-name@1.1.4: {}
|
||||
|
||||
color-string@1.9.1:
|
||||
dependencies:
|
||||
color-name: 1.1.4
|
||||
simple-swizzle: 0.2.2
|
||||
optional: true
|
||||
|
||||
color@4.2.3:
|
||||
dependencies:
|
||||
color-convert: 2.0.1
|
||||
color-string: 1.9.1
|
||||
optional: true
|
||||
|
||||
colord@2.9.3: {}
|
||||
|
||||
colorette@1.4.0: {}
|
||||
|
|
@ -10075,7 +10040,7 @@ snapshots:
|
|||
|
||||
detect-indent@6.1.0: {}
|
||||
|
||||
detect-libc@2.0.4:
|
||||
detect-libc@2.1.0:
|
||||
optional: true
|
||||
|
||||
detect-newline@3.1.0: {}
|
||||
|
|
@ -11100,9 +11065,6 @@ snapshots:
|
|||
|
||||
is-arrayish@0.2.1: {}
|
||||
|
||||
is-arrayish@0.3.2:
|
||||
optional: true
|
||||
|
||||
is-async-function@2.1.1:
|
||||
dependencies:
|
||||
async-function: 1.0.0
|
||||
|
|
@ -12087,27 +12049,25 @@ snapshots:
|
|||
|
||||
natural-compare@1.4.0: {}
|
||||
|
||||
next@15.3.3(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
|
||||
next@15.4.7(@babel/core@7.28.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
|
||||
dependencies:
|
||||
'@next/env': 15.3.3
|
||||
'@swc/counter': 0.1.3
|
||||
'@next/env': 15.4.7
|
||||
'@swc/helpers': 0.5.15
|
||||
busboy: 1.6.0
|
||||
caniuse-lite: 1.0.30001727
|
||||
caniuse-lite: 1.0.30001743
|
||||
postcss: 8.4.31
|
||||
react: 19.1.0
|
||||
react-dom: 19.1.0(react@19.1.0)
|
||||
styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.1.0)
|
||||
optionalDependencies:
|
||||
'@next/swc-darwin-arm64': 15.3.3
|
||||
'@next/swc-darwin-x64': 15.3.3
|
||||
'@next/swc-linux-arm64-gnu': 15.3.3
|
||||
'@next/swc-linux-arm64-musl': 15.3.3
|
||||
'@next/swc-linux-x64-gnu': 15.3.3
|
||||
'@next/swc-linux-x64-musl': 15.3.3
|
||||
'@next/swc-win32-arm64-msvc': 15.3.3
|
||||
'@next/swc-win32-x64-msvc': 15.3.3
|
||||
sharp: 0.34.3
|
||||
'@next/swc-darwin-arm64': 15.4.7
|
||||
'@next/swc-darwin-x64': 15.4.7
|
||||
'@next/swc-linux-arm64-gnu': 15.4.7
|
||||
'@next/swc-linux-arm64-musl': 15.4.7
|
||||
'@next/swc-linux-x64-gnu': 15.4.7
|
||||
'@next/swc-linux-x64-musl': 15.4.7
|
||||
'@next/swc-win32-arm64-msvc': 15.4.7
|
||||
'@next/swc-win32-x64-msvc': 15.4.7
|
||||
sharp: 0.34.4
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- babel-plugin-macros
|
||||
|
|
@ -13229,34 +13189,34 @@ snapshots:
|
|||
|
||||
setimmediate@1.0.5: {}
|
||||
|
||||
sharp@0.34.3:
|
||||
sharp@0.34.4:
|
||||
dependencies:
|
||||
color: 4.2.3
|
||||
detect-libc: 2.0.4
|
||||
'@img/colour': 1.0.0
|
||||
detect-libc: 2.1.0
|
||||
semver: 7.7.2
|
||||
optionalDependencies:
|
||||
'@img/sharp-darwin-arm64': 0.34.3
|
||||
'@img/sharp-darwin-x64': 0.34.3
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.0
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm': 1.2.0
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.0
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.0
|
||||
'@img/sharp-libvips-linux-x64': 1.2.0
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.0
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.0
|
||||
'@img/sharp-linux-arm': 0.34.3
|
||||
'@img/sharp-linux-arm64': 0.34.3
|
||||
'@img/sharp-linux-ppc64': 0.34.3
|
||||
'@img/sharp-linux-s390x': 0.34.3
|
||||
'@img/sharp-linux-x64': 0.34.3
|
||||
'@img/sharp-linuxmusl-arm64': 0.34.3
|
||||
'@img/sharp-linuxmusl-x64': 0.34.3
|
||||
'@img/sharp-wasm32': 0.34.3
|
||||
'@img/sharp-win32-arm64': 0.34.3
|
||||
'@img/sharp-win32-ia32': 0.34.3
|
||||
'@img/sharp-win32-x64': 0.34.3
|
||||
'@img/sharp-darwin-arm64': 0.34.4
|
||||
'@img/sharp-darwin-x64': 0.34.4
|
||||
'@img/sharp-libvips-darwin-arm64': 1.2.3
|
||||
'@img/sharp-libvips-darwin-x64': 1.2.3
|
||||
'@img/sharp-libvips-linux-arm': 1.2.3
|
||||
'@img/sharp-libvips-linux-arm64': 1.2.3
|
||||
'@img/sharp-libvips-linux-ppc64': 1.2.3
|
||||
'@img/sharp-libvips-linux-s390x': 1.2.3
|
||||
'@img/sharp-libvips-linux-x64': 1.2.3
|
||||
'@img/sharp-libvips-linuxmusl-arm64': 1.2.3
|
||||
'@img/sharp-libvips-linuxmusl-x64': 1.2.3
|
||||
'@img/sharp-linux-arm': 0.34.4
|
||||
'@img/sharp-linux-arm64': 0.34.4
|
||||
'@img/sharp-linux-ppc64': 0.34.4
|
||||
'@img/sharp-linux-s390x': 0.34.4
|
||||
'@img/sharp-linux-x64': 0.34.4
|
||||
'@img/sharp-linuxmusl-arm64': 0.34.4
|
||||
'@img/sharp-linuxmusl-x64': 0.34.4
|
||||
'@img/sharp-wasm32': 0.34.4
|
||||
'@img/sharp-win32-arm64': 0.34.4
|
||||
'@img/sharp-win32-ia32': 0.34.4
|
||||
'@img/sharp-win32-x64': 0.34.4
|
||||
optional: true
|
||||
|
||||
shebang-command@1.2.0:
|
||||
|
|
@ -13305,11 +13265,6 @@ snapshots:
|
|||
|
||||
signal-exit@4.1.0: {}
|
||||
|
||||
simple-swizzle@0.2.2:
|
||||
dependencies:
|
||||
is-arrayish: 0.3.2
|
||||
optional: true
|
||||
|
||||
sisteransi@1.0.5: {}
|
||||
|
||||
slash@3.0.0: {}
|
||||
|
|
@ -13397,8 +13352,6 @@ snapshots:
|
|||
es-errors: 1.3.0
|
||||
internal-slot: 1.1.0
|
||||
|
||||
streamsearch@1.1.0: {}
|
||||
|
||||
string-argv@0.3.2: {}
|
||||
|
||||
string-hash@1.1.3: {}
|
||||
|
|
|
|||
251
public/intl/country/uz-UZ.json
Normal file
251
public/intl/country/uz-UZ.json
Normal file
|
|
@ -0,0 +1,251 @@
|
|||
{
|
||||
"AF": "Afg\u02bboniston",
|
||||
"AX": "Aland orollari",
|
||||
"AL": "Albaniya",
|
||||
"US": "Amerika Qo\u2018shma Shtatlari",
|
||||
"AS": "Amerika Samoasi",
|
||||
"AD": "Andorra",
|
||||
"AI": "Angilya",
|
||||
"AO": "Angola",
|
||||
"AQ": "Antarktida",
|
||||
"AG": "Antigua va Barbuda",
|
||||
"VI": "AQSH Virgin orollari",
|
||||
"UM": "AQSH yondosh orollari",
|
||||
"AR": "Argentina",
|
||||
"AM": "Armaniston",
|
||||
"AW": "Aruba",
|
||||
"AU": "Avstraliya",
|
||||
"AT": "Avstriya",
|
||||
"BS": "Bagama orollari",
|
||||
"BH": "Bahrayn",
|
||||
"BD": "Bangladesh",
|
||||
"BB": "Barbados",
|
||||
"BY": "Belarus",
|
||||
"BE": "Belgiya",
|
||||
"BZ": "Beliz",
|
||||
"BJ": "Benin",
|
||||
"BM": "Bermuda orollari",
|
||||
"AE": "Birlashgan Arab Amirliklari",
|
||||
"BG": "Bolgariya",
|
||||
"BO": "Boliviya",
|
||||
"BQ": "Boneyr, Sint-Estatius va Saba",
|
||||
"BA": "Bosniya va Gertsegovina",
|
||||
"BW": "Botsvana",
|
||||
"BR": "Braziliya",
|
||||
"VG": "Britaniya Virgin orollari",
|
||||
"IO": "Britaniyaning Hind okeanidagi hududi",
|
||||
"BN": "Bruney",
|
||||
"BF": "Burkina-Faso",
|
||||
"BI": "Burundi",
|
||||
"BT": "Butan",
|
||||
"BV": "Buve oroli",
|
||||
"GB": "Buyuk Britaniya",
|
||||
"DK": "Daniya",
|
||||
"DM": "Dominika",
|
||||
"DO": "Dominikan Respublikasi",
|
||||
"ET": "Efiopiya",
|
||||
"EC": "Ekvador",
|
||||
"GQ": "Ekvatorial Gvineya",
|
||||
"ER": "Eritreya",
|
||||
"IR": "Eron",
|
||||
"EE": "Estoniya",
|
||||
"PS": "Falastin hududlari",
|
||||
"FO": "Farer orollari",
|
||||
"FJ": "Fiji",
|
||||
"PH": "Filippin",
|
||||
"FI": "Finlandiya",
|
||||
"FK": "Folklend orollari",
|
||||
"FR": "Fransiya",
|
||||
"GF": "Fransuz Gvianasi",
|
||||
"TF": "Fransuz Janubiy hududlari",
|
||||
"PF": "Fransuz Polineziyasi",
|
||||
"GA": "Gabon",
|
||||
"HT": "Gaiti",
|
||||
"GM": "Gambiya",
|
||||
"GH": "Gana",
|
||||
"GY": "Gayana",
|
||||
"DE": "Germaniya",
|
||||
"GG": "Gernsi",
|
||||
"GI": "Gibraltar",
|
||||
"HN": "Gonduras",
|
||||
"HK": "Gonkong (Xitoy MMH)",
|
||||
"GD": "Grenada",
|
||||
"GL": "Grenlandiya",
|
||||
"GR": "Gretsiya",
|
||||
"GE": "Gruziya",
|
||||
"GU": "Guam",
|
||||
"GP": "Gvadelupe",
|
||||
"GT": "Gvatemala",
|
||||
"GN": "Gvineya",
|
||||
"GW": "Gvineya-Bisau",
|
||||
"IN": "Hindiston",
|
||||
"ID": "Indoneziya",
|
||||
"JO": "Iordaniya",
|
||||
"IE": "Irlandiya",
|
||||
"IQ": "Iroq",
|
||||
"IS": "Islandiya",
|
||||
"ES": "Ispaniya",
|
||||
"IL": "Isroil",
|
||||
"IT": "Italiya",
|
||||
"ZA": "Janubiy Afrika Respublikasi",
|
||||
"GS": "Janubiy Georgiya va Janubiy Sendvich orollari",
|
||||
"KR": "Janubiy Koreya",
|
||||
"SS": "Janubiy Sudan",
|
||||
"DZ": "Jazoir",
|
||||
"JE": "Jersi",
|
||||
"DJ": "Jibuti",
|
||||
"CV": "Kabo-Verde",
|
||||
"KH": "Kambodja",
|
||||
"CM": "Kamerun",
|
||||
"CA": "Kanada",
|
||||
"KY": "Kayman orollari",
|
||||
"KE": "Keniya",
|
||||
"CY": "Kipr",
|
||||
"KI": "Kiribati",
|
||||
"CC": "Kokos (Kiling) orollari",
|
||||
"CO": "Kolumbiya",
|
||||
"KM": "Komor orollari",
|
||||
"CG": "Kongo \u2013 Brazzavil",
|
||||
"CD": "Kongo \u2013 Kinshasa",
|
||||
"CR": "Kosta-Rika",
|
||||
"CI": "Kot-d\u2019Ivuar",
|
||||
"CU": "Kuba",
|
||||
"CK": "Kuk orollari",
|
||||
"CW": "Kyurasao",
|
||||
"LA": "Laos",
|
||||
"LV": "Latviya",
|
||||
"LS": "Lesoto",
|
||||
"LR": "Liberiya",
|
||||
"LT": "Litva",
|
||||
"LB": "Livan",
|
||||
"LY": "Liviya",
|
||||
"LI": "Lixtenshteyn",
|
||||
"LU": "Lyuksemburg",
|
||||
"MG": "Madagaskar",
|
||||
"MO": "Makao (Xitoy MMH)",
|
||||
"MW": "Malavi",
|
||||
"MY": "Malayziya",
|
||||
"MV": "Maldiv orollari",
|
||||
"ML": "Mali",
|
||||
"MT": "Malta",
|
||||
"CF": "Markaziy Afrika Respublikasi",
|
||||
"MA": "Marokash",
|
||||
"MQ": "Martinika",
|
||||
"MH": "Marshall orollari",
|
||||
"MU": "Mavrikiy",
|
||||
"MR": "Mavritaniya",
|
||||
"YT": "Mayotta",
|
||||
"MX": "Meksika",
|
||||
"IM": "Men oroli",
|
||||
"FM": "Mikroneziya",
|
||||
"EG": "Misr",
|
||||
"MD": "Moldova",
|
||||
"MC": "Monako",
|
||||
"MN": "Mongoliya",
|
||||
"MS": "Montserrat",
|
||||
"MZ": "Mozambik",
|
||||
"SH": "Muqaddas Yelena oroli",
|
||||
"MM": "Myanma (Birma)",
|
||||
"NA": "Namibiya",
|
||||
"NR": "Nauru",
|
||||
"NP": "Nepal",
|
||||
"NL": "Niderlandiya",
|
||||
"NE": "Niger",
|
||||
"NG": "Nigeriya",
|
||||
"NI": "Nikaragua",
|
||||
"NU": "Niue",
|
||||
"NF": "Norfolk oroli",
|
||||
"NO": "Norvegiya",
|
||||
"AZ": "Ozarbayjon",
|
||||
"PW": "Palau",
|
||||
"PA": "Panama",
|
||||
"PG": "Papua \u2013 Yangi Gvineya",
|
||||
"PY": "Paragvay",
|
||||
"PE": "Peru",
|
||||
"PN": "Pitkern orollari",
|
||||
"PK": "Pokiston",
|
||||
"PL": "Polsha",
|
||||
"PT": "Portugaliya",
|
||||
"PR": "Puerto-Riko",
|
||||
"QA": "Qatar",
|
||||
"KG": "Qirg\u02bbiziston",
|
||||
"KZ": "Qozog\u02bbiston",
|
||||
"KW": "Quvayt",
|
||||
"RE": "Reyunion",
|
||||
"CX": "Rojdestvo oroli",
|
||||
"RU": "Rossiya",
|
||||
"RW": "Ruanda",
|
||||
"RO": "Ruminiya",
|
||||
"SV": "Salvador",
|
||||
"WS": "Samoa",
|
||||
"SM": "San-Marino",
|
||||
"ST": "San-Tome va Prinsipi",
|
||||
"SA": "Saudiya Arabistoni",
|
||||
"BL": "Sen-Bartelemi",
|
||||
"PM": "Sen-Pyer va Mikelon",
|
||||
"SN": "Senegal",
|
||||
"KN": "Sent-Kits va Nevis",
|
||||
"LC": "Sent-Lyusiya",
|
||||
"MF": "Sent-Martin",
|
||||
"VC": "Sent-Vinsent va Grenadin",
|
||||
"RS": "Serbiya",
|
||||
"SC": "Seyshel orollari",
|
||||
"SG": "Singapur",
|
||||
"SX": "Sint-Marten",
|
||||
"SK": "Slovakiya",
|
||||
"SI": "Sloveniya",
|
||||
"SB": "Solomon orollari",
|
||||
"SO": "Somali",
|
||||
"SD": "Sudan",
|
||||
"SR": "Surinam",
|
||||
"SY": "Suriya",
|
||||
"SZ": "Svazilend",
|
||||
"SL": "Syerra-Leone",
|
||||
"TH": "Tailand",
|
||||
"TZ": "Tanzaniya",
|
||||
"TW": "Tayvan",
|
||||
"TL": "Timor-Leste",
|
||||
"TG": "Togo",
|
||||
"TJ": "Tojikiston",
|
||||
"TK": "Tokelau",
|
||||
"TO": "Tonga",
|
||||
"TT": "Trinidad va Tobago",
|
||||
"TN": "Tunis",
|
||||
"TR": "Turkiya",
|
||||
"TM": "Turkmaniston",
|
||||
"TC": "Turks va Kaykos orollari",
|
||||
"TV": "Tuvalu",
|
||||
"UG": "Uganda",
|
||||
"UA": "Ukraina",
|
||||
"OM": "Ummon",
|
||||
"WF": "Uollis va Futuna",
|
||||
"UY": "Urugvay",
|
||||
"VU": "Vanuatu",
|
||||
"VA": "Vatikan",
|
||||
"VE": "Venesuela",
|
||||
"HU": "Vengriya",
|
||||
"VN": "Vyetnam",
|
||||
"HM": "Xerd va Makdonald orollari",
|
||||
"CN": "Xitoy",
|
||||
"HR": "Xorvatiya",
|
||||
"YE": "Yaman",
|
||||
"JM": "Yamayka",
|
||||
"NC": "Yangi Kaledoniya",
|
||||
"NZ": "Yangi Zelandiya",
|
||||
"JP": "Yaponiya",
|
||||
"ZM": "Zambiya",
|
||||
"ZW": "Zimbabve",
|
||||
"UZ": "O\u02bbzbekiston",
|
||||
"EH": "G\u2018arbiy Sahroi Kabir",
|
||||
"KP": "Shimoliy Koreya",
|
||||
"MK": "Shimoliy Makedoniya",
|
||||
"MP": "Shimoliy Mariana orollari",
|
||||
"SJ": "Shpitsbergen va Yan-Mayen",
|
||||
"LK": "Shri-Lanka",
|
||||
"SE": "Shvetsiya",
|
||||
"CH": "Shveytsariya",
|
||||
"TD": "Chad",
|
||||
"ME": "Chernogoriya",
|
||||
"CZ": "Chexiya",
|
||||
"CL": "Chili"
|
||||
}
|
||||
611
public/intl/language/uz-UZ.json
Normal file
611
public/intl/language/uz-UZ.json
Normal file
|
|
@ -0,0 +1,611 @@
|
|||
{
|
||||
"ab": "abxazcha",
|
||||
"ace": "Achinese",
|
||||
"ach": "Acoli",
|
||||
"ada": "Adangme",
|
||||
"ady": "Adyghe",
|
||||
"aa": "Afar",
|
||||
"afh": "Afrihili",
|
||||
"af": "afrikancha",
|
||||
"agq": "ag\u2018emcha",
|
||||
"ain": "Ainu",
|
||||
"ak": "akancha",
|
||||
"akk": "Akkadian",
|
||||
"bss": "Akoose",
|
||||
"akz": "Alabama",
|
||||
"sq": "albancha",
|
||||
"ale": "Aleut",
|
||||
"arq": "Algerian Arabic",
|
||||
"en_US": "American English",
|
||||
"ase": "American Sign Language",
|
||||
"am": "amxarcha",
|
||||
"egy": "Ancient Egyptian",
|
||||
"grc": "Ancient Greek",
|
||||
"anp": "Angika",
|
||||
"zh_Hant": "an\u02bcanaviy xitoycha",
|
||||
"njo": "Ao Naga",
|
||||
"ar": "arabcha",
|
||||
"an": "Aragonese",
|
||||
"arc": "Aramaic",
|
||||
"aro": "Araona",
|
||||
"arp": "Arapaho",
|
||||
"arw": "Arawak",
|
||||
"hy": "armancha",
|
||||
"rup": "Aromanian",
|
||||
"frp": "Arpitan",
|
||||
"as": "assamcha",
|
||||
"ast": "Asturian",
|
||||
"asa": "asucha",
|
||||
"cch": "Atsam",
|
||||
"av": "Avaric",
|
||||
"ae": "Avestan",
|
||||
"en_AU": "Avstraliya inglizchasi",
|
||||
"de_AT": "Avstriya olmonchasi",
|
||||
"awa": "Awadhi",
|
||||
"ay": "Aymara",
|
||||
"bfq": "Badaga",
|
||||
"ksf": "bafiycha",
|
||||
"bfd": "Bafut",
|
||||
"bqi": "Bakhtiari",
|
||||
"ban": "Balinese",
|
||||
"bal": "Baluchi",
|
||||
"bm": "bambarcha",
|
||||
"bax": "Bamun",
|
||||
"bjn": "Banjar",
|
||||
"bas": "Basaa",
|
||||
"eu": "baskcha",
|
||||
"bbc": "Batak Toba",
|
||||
"bar": "Bavarian",
|
||||
"bej": "Beja",
|
||||
"be": "belaruscha",
|
||||
"bem": "bembacha",
|
||||
"bez": "benacha",
|
||||
"bn": "bengalcha",
|
||||
"bew": "Betawi",
|
||||
"bho": "Bhojpuri",
|
||||
"bik": "Bikol",
|
||||
"bin": "Bini",
|
||||
"my": "birmancha",
|
||||
"bpy": "Bishnupriya",
|
||||
"bi": "Bislama",
|
||||
"byn": "Blin",
|
||||
"zbl": "Blissymbols",
|
||||
"brx": "bodocha",
|
||||
"bg": "bolgarcha",
|
||||
"ba": "boshqircha",
|
||||
"bs": "bosniycha",
|
||||
"brh": "Brahui",
|
||||
"bra": "Braj",
|
||||
"pt_BR": "Braziliya portugalchasi",
|
||||
"br": "bretoncha",
|
||||
"en_GB": "Britaniya inglizchasi",
|
||||
"bug": "Buginese",
|
||||
"bum": "Bulu",
|
||||
"bua": "Buriat",
|
||||
"cad": "Caddo",
|
||||
"frc": "Cajun French",
|
||||
"yue": "Cantonese",
|
||||
"cps": "Capiznon",
|
||||
"car": "Carib",
|
||||
"cay": "Cayuga",
|
||||
"ceb": "Cebuano",
|
||||
"dtp": "Central Dusun",
|
||||
"esu": "Central Yupik",
|
||||
"shu": "Chadian Arabic",
|
||||
"chg": "Chagatai",
|
||||
"ch": "Chamorro",
|
||||
"ce": "Chechen",
|
||||
"chr": "cherokcha",
|
||||
"cs": "chexcha",
|
||||
"chy": "Cheyenne",
|
||||
"chb": "Chibcha",
|
||||
"cgg": "chigcha",
|
||||
"qug": "Chimborazo Highland Quichua",
|
||||
"chn": "Chinook Jargon",
|
||||
"chp": "Chipewyan",
|
||||
"cho": "Choctaw",
|
||||
"cu": "Church Slavic",
|
||||
"chk": "Chuukese",
|
||||
"cv": "Chuvash",
|
||||
"nwc": "Classical Newari",
|
||||
"syc": "Classical Syriac",
|
||||
"ksh": "Colognian",
|
||||
"swb": "Comorian",
|
||||
"cop": "Coptic",
|
||||
"cr": "Cree",
|
||||
"mus": "Creek",
|
||||
"crh": "Crimean Turkish",
|
||||
"dak": "Dakota",
|
||||
"dar": "Dargwa",
|
||||
"da": "datcha",
|
||||
"dzg": "Dazaga",
|
||||
"del": "Delaware",
|
||||
"din": "Dinka",
|
||||
"dv": "Divehi",
|
||||
"doi": "Dogri",
|
||||
"dgr": "Dogrib",
|
||||
"dua": "dualcha",
|
||||
"dyu": "Dyula",
|
||||
"frs": "Eastern Frisian",
|
||||
"efi": "Efik",
|
||||
"arz": "Egyptian Arabic",
|
||||
"eka": "Ekajuk",
|
||||
"elx": "Elamite",
|
||||
"ebu": "embucha",
|
||||
"egl": "Emilian",
|
||||
"myv": "Erzya",
|
||||
"eo": "esperantocha",
|
||||
"et": "estoncha",
|
||||
"ewo": "Ewondo",
|
||||
"ext": "Extremaduran",
|
||||
"fan": "Fang",
|
||||
"fat": "Fanti",
|
||||
"fo": "farercha",
|
||||
"fj": "fijcha",
|
||||
"hif": "Fiji Hindi",
|
||||
"fil": "filipincha",
|
||||
"fi": "fincha",
|
||||
"nl_BE": "flamandcha",
|
||||
"fon": "Fon",
|
||||
"fa": "forscha",
|
||||
"gur": "Frafra",
|
||||
"fr": "fransuzcha",
|
||||
"fur": "Friulian",
|
||||
"ff": "Fulah",
|
||||
"gaa": "Ga",
|
||||
"gag": "gagozcha",
|
||||
"ht": "gaitcha",
|
||||
"gl": "galitsiycha",
|
||||
"gan": "Gan Chinese",
|
||||
"lg": "gandcha",
|
||||
"haw": "gavaycha",
|
||||
"gay": "Gayo",
|
||||
"gba": "Gbaya",
|
||||
"gez": "Geez",
|
||||
"aln": "Gheg Albanian",
|
||||
"bbj": "Ghomala",
|
||||
"fy": "g\u02bbarbiy friziancha",
|
||||
"glk": "Gilaki",
|
||||
"gil": "Gilbertese",
|
||||
"gom": "Goan Konkani",
|
||||
"nl": "gollandcha",
|
||||
"gon": "Gondi",
|
||||
"gn": "gorancha",
|
||||
"gor": "Gorontalo",
|
||||
"got": "Gothic",
|
||||
"grb": "Grebo",
|
||||
"ka": "gruzincha",
|
||||
"gu": "gujoratcha",
|
||||
"guz": "guzcha",
|
||||
"gwi": "Gwich\u02bcin",
|
||||
"hai": "Haida",
|
||||
"hak": "Hakka Chinese",
|
||||
"hz": "Herero",
|
||||
"hil": "Hiligaynon",
|
||||
"hi": "hindcha",
|
||||
"ho": "Hiri Motu",
|
||||
"hit": "Hittite",
|
||||
"hmn": "Hmong",
|
||||
"hup": "Hupa",
|
||||
"iba": "Iban",
|
||||
"ibb": "Ibibio",
|
||||
"he": "ibroniy",
|
||||
"io": "Ido",
|
||||
"ig": "igbocha",
|
||||
"ilo": "Iloko",
|
||||
"smn": "inari semiycha",
|
||||
"id": "indoneyzcha",
|
||||
"en": "inglizcha",
|
||||
"izh": "Ingrian",
|
||||
"inh": "Ingush",
|
||||
"ia": "Interlingua",
|
||||
"ie": "Interlingue",
|
||||
"iu": "inuktitutcha",
|
||||
"ik": "Inupiaq",
|
||||
"ga": "irlandcha",
|
||||
"is": "islandcha",
|
||||
"es": "ispancha",
|
||||
"it": "italyancha",
|
||||
"ee": "ivicha",
|
||||
"jam": "Jamaican Creole English",
|
||||
"sma": "janubiy semiycha",
|
||||
"kaj": "Jju",
|
||||
"jrb": "Judeo-Arabic",
|
||||
"jpr": "Judeo-Persian",
|
||||
"jut": "Jutish",
|
||||
"kbd": "Kabardian",
|
||||
"kea": "kabuverdiancha",
|
||||
"kac": "Kachin",
|
||||
"kgp": "Kaingang",
|
||||
"kkj": "Kako",
|
||||
"kl": "kalallisutcha",
|
||||
"kln": "kalenjincha",
|
||||
"xal": "Kalmyk",
|
||||
"kam": "kambcha",
|
||||
"fr_CA": "Kanada fransuzchasi",
|
||||
"en_CA": "Kanada inglizchasi",
|
||||
"kbl": "Kanembu",
|
||||
"kn": "kannadcha",
|
||||
"kr": "Kanuri",
|
||||
"kaa": "Kara-Kalpak",
|
||||
"krc": "Karachay-Balkar",
|
||||
"krl": "Karelian",
|
||||
"ks": "kashmircha",
|
||||
"csb": "Kashubian",
|
||||
"ca": "katalancha",
|
||||
"kaw": "Kawi",
|
||||
"ken": "Kenyang",
|
||||
"kha": "Khasi",
|
||||
"kho": "Khotanese",
|
||||
"khw": "Khowar",
|
||||
"ki": "kikuycha",
|
||||
"kmb": "Kimbundu",
|
||||
"krj": "Kinaray-a",
|
||||
"rw": "kinyarvandcha",
|
||||
"kiu": "Kirmanjki",
|
||||
"tlh": "Klingon",
|
||||
"bkm": "Kom",
|
||||
"kv": "Komi",
|
||||
"koi": "komi-permyakcha",
|
||||
"kg": "Kongo",
|
||||
"swc": "kongo svahiliycha",
|
||||
"kok": "konkancha",
|
||||
"ko": "koreyscha",
|
||||
"kw": "kornishcha",
|
||||
"kfo": "Koro",
|
||||
"co": "korsiancha",
|
||||
"ses": "koryaboro senniycha",
|
||||
"kos": "Kosraean",
|
||||
"avk": "Kotava",
|
||||
"kpe": "Kpelle",
|
||||
"kri": "Krio",
|
||||
"kj": "Kuanyama",
|
||||
"kum": "Kumyk",
|
||||
"ku": "kurdcha",
|
||||
"kru": "Kurukh",
|
||||
"kut": "Kutenai",
|
||||
"nmg": "kvaziycha",
|
||||
"lad": "Ladino",
|
||||
"lah": "Lahnda",
|
||||
"lkt": "lakotcha",
|
||||
"lam": "Lamba",
|
||||
"lag": "langcha",
|
||||
"lo": "laoscha",
|
||||
"ltg": "Latgalian",
|
||||
"lv": "latishcha",
|
||||
"lzz": "Laz",
|
||||
"lez": "Lezghian",
|
||||
"lij": "Ligurian",
|
||||
"li": "Limburgish",
|
||||
"ln": "lingalcha",
|
||||
"lfn": "Lingua Franca Nova",
|
||||
"lzh": "Literary Chinese",
|
||||
"lt": "litovcha",
|
||||
"liv": "Livonian",
|
||||
"jbo": "Lojban",
|
||||
"lmo": "Lombard",
|
||||
"es_419": "Lotin Amerika ispanchasi",
|
||||
"la": "lotincha",
|
||||
"nds": "Low German",
|
||||
"sli": "Lower Silesian",
|
||||
"loz": "Lozi",
|
||||
"lu": "luba-katangcha",
|
||||
"lua": "Luba-Lulua",
|
||||
"lui": "Luiseno",
|
||||
"smj": "luli semiycha",
|
||||
"lun": "Lunda",
|
||||
"luo": "luocha",
|
||||
"luy": "luycha",
|
||||
"lb": "lyuksemburgcha",
|
||||
"mde": "Maba",
|
||||
"jmc": "machamcha",
|
||||
"mad": "Madurese",
|
||||
"maf": "Mafa",
|
||||
"mag": "Magahi",
|
||||
"vmf": "Main-Franconian",
|
||||
"mai": "Maithili",
|
||||
"mak": "Makasar",
|
||||
"mk": "makedoncha",
|
||||
"mgh": "makuva-mittocha",
|
||||
"mg": "malagasiycha",
|
||||
"ml": "malayamcha",
|
||||
"ms": "malaycha",
|
||||
"mt": "maltacha",
|
||||
"mnc": "Manchu",
|
||||
"mdr": "Mandar",
|
||||
"man": "Mandingo",
|
||||
"mni": "Manipuri",
|
||||
"mi": "maoriycha",
|
||||
"arn": "mapuchiycha",
|
||||
"kde": "maqondiy",
|
||||
"mr": "maratcha",
|
||||
"chm": "Mari",
|
||||
"tzm": "markaziy atlas vaqt zonasi",
|
||||
"mh": "Marshallese",
|
||||
"mwr": "Marwari",
|
||||
"mas": "masaycha",
|
||||
"mzn": "Mazanderani",
|
||||
"byv": "Medumba",
|
||||
"es_MX": "Meksika ispanchasi",
|
||||
"gv": "mencha",
|
||||
"men": "Mende",
|
||||
"mwv": "Mentawai",
|
||||
"mer": "merucha",
|
||||
"mgo": "metacha",
|
||||
"mic": "Micmac",
|
||||
"dum": "Middle Dutch",
|
||||
"enm": "Middle English",
|
||||
"frm": "Middle French",
|
||||
"gmh": "Middle High German",
|
||||
"mga": "Middle Irish",
|
||||
"nan": "Min Nan Chinese",
|
||||
"min": "Minangkabau",
|
||||
"xmf": "Mingrelian",
|
||||
"mwl": "Mirandese",
|
||||
"lus": "Mizo",
|
||||
"mn": "mo\u2018g\u2018ulcha",
|
||||
"moh": "mohaukcha",
|
||||
"mdf": "Moksha",
|
||||
"ro_MD": "moldovan rumincha",
|
||||
"lol": "Mongo",
|
||||
"mfe": "morisyencha",
|
||||
"ary": "Moroccan Arabic",
|
||||
"mos": "Mossi",
|
||||
"mul": "Multiple Languages",
|
||||
"mua": "mundangcha",
|
||||
"ttt": "Muslim Tat",
|
||||
"mye": "Myene",
|
||||
"naq": "namacha",
|
||||
"na": "Nauru",
|
||||
"nv": "Navajo",
|
||||
"ng": "Ndonga",
|
||||
"nap": "Neapolitan",
|
||||
"de": "nemischa",
|
||||
"ne": "nepalcha",
|
||||
"new": "Newari",
|
||||
"sba": "Ngambay",
|
||||
"nnh": "Ngiemboon",
|
||||
"jgo": "ngombcha",
|
||||
"yrl": "Nheengatu",
|
||||
"nia": "Nias",
|
||||
"niu": "Niuean",
|
||||
"nog": "Nogai",
|
||||
"und": "noma\u02bclum til",
|
||||
"frr": "Northern Frisian",
|
||||
"nso": "Northern Sotho",
|
||||
"nb": "norvegcha bokmal",
|
||||
"nn": "norvegcha ninorsk",
|
||||
"no": "Norwegian",
|
||||
"nov": "Novial",
|
||||
"nus": "noyrcha",
|
||||
"nqo": "nqoancha",
|
||||
"nym": "Nyamwezi",
|
||||
"ny": "Nyanja",
|
||||
"nyn": "nyankolcha",
|
||||
"tog": "Nyasa Tonga",
|
||||
"nyo": "Nyoro",
|
||||
"nzi": "Nzima",
|
||||
"oc": "Occitan",
|
||||
"uz": "o\u02bbzbekcha",
|
||||
"oj": "Ojibwa",
|
||||
"ang": "Old English",
|
||||
"fro": "Old French",
|
||||
"goh": "Old High German",
|
||||
"sga": "Old Irish",
|
||||
"non": "Old Norse",
|
||||
"peo": "Old Persian",
|
||||
"pro": "Old Proven\u00e7al",
|
||||
"or": "oriycha",
|
||||
"om": "oromocha",
|
||||
"osa": "Osage",
|
||||
"os": "Ossetic",
|
||||
"ota": "Ottoman Turkish",
|
||||
"az": "ozarbayjoncha",
|
||||
"pal": "Pahlavi",
|
||||
"pfl": "Palatine German",
|
||||
"pau": "Palauan",
|
||||
"pi": "Pali",
|
||||
"pam": "Pampanga",
|
||||
"pag": "Pangasinan",
|
||||
"pa": "panjobcha",
|
||||
"pap": "Papiamento",
|
||||
"pdc": "Pennsylvania German",
|
||||
"phn": "Phoenician",
|
||||
"pcd": "Picard",
|
||||
"pms": "Piedmontese",
|
||||
"pdt": "Plautdietsch",
|
||||
"pon": "Pohnpeian",
|
||||
"pl": "polyakcha",
|
||||
"pnt": "Pontic",
|
||||
"pt": "portugalcha",
|
||||
"prg": "Prussian",
|
||||
"ps": "pushtu tili",
|
||||
"quc": "qichiancha",
|
||||
"ky": "qirg\u02bbizcha",
|
||||
"kab": "qobilcha",
|
||||
"khq": "qoyra-chincha",
|
||||
"kk": "qozoqcha",
|
||||
"dsb": "quyi sorbcha",
|
||||
"qu": "qvechuancha",
|
||||
"raj": "Rajasthani",
|
||||
"rap": "Rapanui",
|
||||
"rar": "Rarotongan",
|
||||
"rif": "Riffian",
|
||||
"rgn": "Romagnol",
|
||||
"rm": "romancha",
|
||||
"rom": "Romany",
|
||||
"rof": "rombacha",
|
||||
"root": "Root",
|
||||
"rtm": "Rotuman",
|
||||
"rug": "Roviana",
|
||||
"rwk": "ruandcha",
|
||||
"ro": "rumincha",
|
||||
"rn": "rundcha",
|
||||
"ru": "ruscha",
|
||||
"rue": "Rusyn",
|
||||
"ssy": "Saho",
|
||||
"sah": "Sakha",
|
||||
"sam": "Samaritan Aramaic",
|
||||
"saq": "samburcha",
|
||||
"sm": "Samoan",
|
||||
"sgs": "Samogitian",
|
||||
"sad": "Sandawe",
|
||||
"sg": "sangoancha",
|
||||
"sbp": "sanguancha",
|
||||
"sa": "sanskritcha",
|
||||
"sat": "Santali",
|
||||
"sc": "Sardinian",
|
||||
"sas": "Sasak",
|
||||
"sdc": "Sassarese Sardinian",
|
||||
"stq": "Saterland Frisian",
|
||||
"saz": "Saurashtra",
|
||||
"sco": "Scots",
|
||||
"gd": "Scottish Gaelic",
|
||||
"sly": "Selayar",
|
||||
"sel": "Selkup",
|
||||
"see": "Seneca",
|
||||
"seh": "seniycha",
|
||||
"sr": "serbcha",
|
||||
"sh": "Serbo-Croatian",
|
||||
"srr": "Serer",
|
||||
"sei": "Seri",
|
||||
"ksb": "shambalacha",
|
||||
"shn": "Shan",
|
||||
"nd": "shimoliy ndebelcha",
|
||||
"se": "shimoliy semiycha",
|
||||
"sms": "shkolt semiycha",
|
||||
"sn": "shoniycha",
|
||||
"sv": "shvedcha",
|
||||
"fr_CH": "Shvesariya fransuzchasi",
|
||||
"de_CH": "Shvesariya olmonchasi",
|
||||
"gsw": "shveysariya nemischasi",
|
||||
"scn": "Sicilian",
|
||||
"sid": "Sidamo",
|
||||
"bla": "Siksika",
|
||||
"szl": "Silesian",
|
||||
"sd": "sindxiycha",
|
||||
"si": "sinholcha",
|
||||
"den": "Slave",
|
||||
"sk": "slovakcha",
|
||||
"sl": "slovencha",
|
||||
"zh_Hans": "soddalashtirilgan xitoycha",
|
||||
"xog": "sogancha",
|
||||
"sog": "Sogdien",
|
||||
"so": "somalicha",
|
||||
"snk": "Soninke",
|
||||
"ckb": "sorani kurd tili",
|
||||
"azb": "South Azerbaijani",
|
||||
"nr": "South Ndebele",
|
||||
"alt": "Southern Altai",
|
||||
"st": "Southern Sotho",
|
||||
"srn": "Sranan Tongo",
|
||||
"zgh": "standart marokash tamazit",
|
||||
"suk": "Sukuma",
|
||||
"sux": "Sumerian",
|
||||
"su": "sundancha",
|
||||
"sus": "Susu",
|
||||
"sw": "svahilcha",
|
||||
"ss": "Swati",
|
||||
"syr": "Syriac",
|
||||
"shi": "tachilgitcha",
|
||||
"tl": "Tagalog",
|
||||
"ty": "Tahitian",
|
||||
"dav": "taitcha",
|
||||
"tly": "Talysh",
|
||||
"tmh": "Tamashek",
|
||||
"ta": "tamilcha",
|
||||
"trv": "Taroko",
|
||||
"tt": "tatarcha",
|
||||
"th": "taycha",
|
||||
"te": "telugvancha",
|
||||
"ter": "Tereno",
|
||||
"teo": "tesoancha",
|
||||
"tet": "Tetum",
|
||||
"bo": "tibetcha",
|
||||
"tig": "Tigre",
|
||||
"ti": "tigrincha",
|
||||
"zxx": "til tarkibi yo\u02bbq",
|
||||
"tem": "Timne",
|
||||
"tiv": "Tiv",
|
||||
"tli": "Tlingit",
|
||||
"tg": "tojikcha",
|
||||
"tpi": "Tok Pisin",
|
||||
"tkl": "Tokelau",
|
||||
"to": "tongocha",
|
||||
"fit": "Tornedalen Finnish",
|
||||
"twq": "tosovoqcha",
|
||||
"tkr": "Tsakhur",
|
||||
"tsd": "Tsakonian",
|
||||
"tsi": "Tsimshian",
|
||||
"ts": "Tsonga",
|
||||
"tn": "Tswana",
|
||||
"tcy": "Tulu",
|
||||
"tum": "Tumbuka",
|
||||
"aeb": "Tunisian Arabic",
|
||||
"tr": "turkcha",
|
||||
"tk": "turkmancha",
|
||||
"tru": "Turoyo",
|
||||
"tvl": "Tuvalu",
|
||||
"tyv": "Tuvinian",
|
||||
"tw": "Twi",
|
||||
"kcg": "Tyap",
|
||||
"udm": "Udmurt",
|
||||
"cy": "uelscha",
|
||||
"uga": "Ugaritic",
|
||||
"uk": "ukraincha",
|
||||
"umb": "Umbundu",
|
||||
"ur": "urducha",
|
||||
"ug": "uyg\u02bburcha",
|
||||
"vai": "vayancha",
|
||||
"ve": "Venda",
|
||||
"vec": "Venetian",
|
||||
"hu": "vengrcha",
|
||||
"vep": "Veps",
|
||||
"vo": "Volap\u00fck",
|
||||
"wo": "volofcha",
|
||||
"vro": "V\u00f5ro",
|
||||
"vot": "Votic",
|
||||
"vun": "vunjoancha",
|
||||
"vi": "vyetnamcha",
|
||||
"wa": "Walloon",
|
||||
"wae": "Walser",
|
||||
"war": "Waray",
|
||||
"wbp": "Warlpiri",
|
||||
"was": "Washo",
|
||||
"guc": "Wayuu",
|
||||
"vls": "West Flemish",
|
||||
"mrj": "Western Mari",
|
||||
"wal": "Wolaytta",
|
||||
"wuu": "Wu Chinese",
|
||||
"ha": "xauscha",
|
||||
"hsn": "Xiang Chinese",
|
||||
"zh": "xitoycha",
|
||||
"km": "xmercha",
|
||||
"hr": "xorvatcha",
|
||||
"xh": "xosancha",
|
||||
"yav": "Yangben",
|
||||
"yao": "Yao",
|
||||
"yap": "Yapese",
|
||||
"ja": "yaponcha",
|
||||
"jv": "yavancha",
|
||||
"ybb": "Yemba",
|
||||
"es_ES": "Yevropa ispanchasi",
|
||||
"pt_PT": "Yevropa portugalchasi",
|
||||
"yi": "Yiddish",
|
||||
"dyo": "yola-fonyicha",
|
||||
"yo": "yorubcha",
|
||||
"dz": "yovoncha",
|
||||
"el": "yunoncha",
|
||||
"hsb": "yuqori sorbcha",
|
||||
"ar_001": "zamonavij standart arabcha",
|
||||
"zap": "Zapotec",
|
||||
"dje": "zarmacha",
|
||||
"zza": "Zaza",
|
||||
"zea": "Zeelandic",
|
||||
"zen": "Zenaga",
|
||||
"za": "Zhuang",
|
||||
"ii": "zichuan yicha",
|
||||
"gbz": "Zoroastrian Dari",
|
||||
"zu": "zuluancha",
|
||||
"zun": "Zuni"
|
||||
}
|
||||
|
|
@ -1766,7 +1766,7 @@
|
|||
"message.reset-website-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "سيتم اعادة تعيين كافة الإحصائيات لهذا الموقع، لكن لن يتم تعيير كود التتبع"
|
||||
"value": "سيتم اعادة تعيين كافة الإحصائيات لهذا الموقع، لكن لن يتم تغيير كود التتبع"
|
||||
}
|
||||
],
|
||||
"message.saved": [
|
||||
|
|
|
|||
|
|
@ -476,7 +476,7 @@
|
|||
"label.first-seen": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "First seen"
|
||||
"value": "Visto por primera vez"
|
||||
}
|
||||
],
|
||||
"label.funnel": [
|
||||
|
|
@ -656,7 +656,7 @@
|
|||
"label.last-seen": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Last seen"
|
||||
"value": "Visto por última vez"
|
||||
}
|
||||
],
|
||||
"label.leave": [
|
||||
|
|
@ -789,7 +789,7 @@
|
|||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "record"
|
||||
"value": "registro"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
@ -797,7 +797,7 @@
|
|||
"value": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "records"
|
||||
"value": "registros"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -922,7 +922,7 @@
|
|||
"label.properties": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Properties"
|
||||
"value": "Propiedades"
|
||||
}
|
||||
],
|
||||
"label.property": [
|
||||
|
|
@ -1042,19 +1042,19 @@
|
|||
"label.revenue": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Revenue"
|
||||
"value": "Ganancias"
|
||||
}
|
||||
],
|
||||
"label.revenue-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Look into your revenue across time."
|
||||
"value": "Analice sus ganancias a lo largo del tiempo."
|
||||
}
|
||||
],
|
||||
"label.revenue-property": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Revenue Property"
|
||||
"value": "Propiedad de ganancias"
|
||||
}
|
||||
],
|
||||
"label.role": [
|
||||
|
|
@ -1114,7 +1114,7 @@
|
|||
"label.session": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Session"
|
||||
"value": "Sesión"
|
||||
}
|
||||
],
|
||||
"label.sessions": [
|
||||
|
|
@ -1288,7 +1288,7 @@
|
|||
"label.transactions": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Transactions"
|
||||
"value": "Transacciones"
|
||||
}
|
||||
],
|
||||
"label.transfer": [
|
||||
|
|
@ -1330,7 +1330,7 @@
|
|||
"label.uniqueCustomers": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Unique Customers"
|
||||
"value": "Clientes únicos"
|
||||
}
|
||||
],
|
||||
"label.unknown": [
|
||||
|
|
@ -1372,7 +1372,7 @@
|
|||
"label.user-property": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "User Property"
|
||||
"value": "Propiedad de usuario"
|
||||
}
|
||||
],
|
||||
"label.username": [
|
||||
|
|
|
|||
|
|
@ -32,13 +32,13 @@
|
|||
"label.add-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Add member"
|
||||
"value": "Dodaj člana"
|
||||
}
|
||||
],
|
||||
"label.add-step": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Add step"
|
||||
"value": "Dodaj korak"
|
||||
}
|
||||
],
|
||||
"label.add-website": [
|
||||
|
|
@ -152,7 +152,7 @@
|
|||
"label.compare": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Compare"
|
||||
"value": "Primerjaj"
|
||||
}
|
||||
],
|
||||
"label.confirm": [
|
||||
|
|
@ -182,7 +182,7 @@
|
|||
"label.count": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Count"
|
||||
"value": "Število"
|
||||
}
|
||||
],
|
||||
"label.countries": [
|
||||
|
|
@ -200,7 +200,7 @@
|
|||
"label.create": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Create"
|
||||
"value": "Ustvari"
|
||||
}
|
||||
],
|
||||
"label.create-report": [
|
||||
|
|
@ -230,13 +230,13 @@
|
|||
"label.created-by": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Created By"
|
||||
"value": "Ustvaril"
|
||||
}
|
||||
],
|
||||
"label.current": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Current"
|
||||
"value": "Trenutno"
|
||||
}
|
||||
],
|
||||
"label.current-password": [
|
||||
|
|
@ -296,7 +296,7 @@
|
|||
"label.delete-report": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Delete report"
|
||||
"value": "Izbriši poročilo"
|
||||
}
|
||||
],
|
||||
"label.delete-team": [
|
||||
|
|
@ -386,25 +386,25 @@
|
|||
"label.edit-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit member"
|
||||
"value": "Uredi člana"
|
||||
}
|
||||
],
|
||||
"label.enable-share-url": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Uredi povezavo za deljenje"
|
||||
"value": "Omogoči povezavo za deljenje"
|
||||
}
|
||||
],
|
||||
"label.end-step": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "End Step"
|
||||
"value": "Končni korak"
|
||||
}
|
||||
],
|
||||
"label.entry": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Entry URL"
|
||||
"value": "Vstopni URL"
|
||||
}
|
||||
],
|
||||
"label.event": [
|
||||
|
|
@ -428,7 +428,7 @@
|
|||
"label.exit": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Exit URL"
|
||||
"value": "Izhodni URL"
|
||||
}
|
||||
],
|
||||
"label.false": [
|
||||
|
|
@ -476,7 +476,7 @@
|
|||
"label.first-seen": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "First seen"
|
||||
"value": "Prvič viden"
|
||||
}
|
||||
],
|
||||
"label.funnel": [
|
||||
|
|
@ -488,25 +488,25 @@
|
|||
"label.funnel-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Understand the conversion and drop-off rate of users."
|
||||
"value": "Razumite stopnjo konverzije in osipa uporabnikov."
|
||||
}
|
||||
],
|
||||
"label.goal": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Goal"
|
||||
"value": "Cilj"
|
||||
}
|
||||
],
|
||||
"label.goals": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Goals"
|
||||
"value": "Cilji"
|
||||
}
|
||||
],
|
||||
"label.goals-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Track your goals for pageviews and events."
|
||||
"value": "Spremljajte svoje cilje za oglede strani in dogodke."
|
||||
}
|
||||
],
|
||||
"label.greater-than": [
|
||||
|
|
@ -524,13 +524,13 @@
|
|||
"label.host": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Host"
|
||||
"value": "Gostitelj"
|
||||
}
|
||||
],
|
||||
"label.hosts": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Hosts"
|
||||
"value": "Gostitelji"
|
||||
}
|
||||
],
|
||||
"label.insights": [
|
||||
|
|
@ -542,7 +542,7 @@
|
|||
"label.insights-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Dive deeper into your data by using segments and filters."
|
||||
"value": "Poglobite se v podatke z uporabo segmentov in filtrov."
|
||||
}
|
||||
],
|
||||
"label.is": [
|
||||
|
|
@ -584,13 +584,13 @@
|
|||
"label.journey": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Journey"
|
||||
"value": "Uporabniška pot"
|
||||
}
|
||||
],
|
||||
"label.journey-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Understand how users navigate through your website."
|
||||
"value": "Razumite, kako uporabniki krmarijo po vašem spletnem mestu."
|
||||
}
|
||||
],
|
||||
"label.language": [
|
||||
|
|
@ -642,7 +642,7 @@
|
|||
"label.last-months": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Last "
|
||||
"value": "Zadnjih "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
|
@ -650,13 +650,13 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " months"
|
||||
"value": " mesecev"
|
||||
}
|
||||
],
|
||||
"label.last-seen": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Last seen"
|
||||
"value": "Nazadnje viden"
|
||||
}
|
||||
],
|
||||
"label.leave": [
|
||||
|
|
@ -698,13 +698,13 @@
|
|||
"label.manage": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Manage"
|
||||
"value": "Upravljaj"
|
||||
}
|
||||
],
|
||||
"label.manager": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Manager"
|
||||
"value": "Upravitelj"
|
||||
}
|
||||
],
|
||||
"label.max": [
|
||||
|
|
@ -716,7 +716,7 @@
|
|||
"label.member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Member"
|
||||
"value": "Član"
|
||||
}
|
||||
],
|
||||
"label.members": [
|
||||
|
|
@ -746,7 +746,7 @@
|
|||
"label.my-account": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "My account"
|
||||
"value": "Moj račun"
|
||||
}
|
||||
],
|
||||
"label.my-websites": [
|
||||
|
|
@ -876,13 +876,13 @@
|
|||
"label.path": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Path"
|
||||
"value": "Pot"
|
||||
}
|
||||
],
|
||||
"label.paths": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Paths"
|
||||
"value": "Poti"
|
||||
}
|
||||
],
|
||||
"label.powered-by": [
|
||||
|
|
@ -898,19 +898,19 @@
|
|||
"label.previous": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Previous"
|
||||
"value": "Prejšnji"
|
||||
}
|
||||
],
|
||||
"label.previous-period": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Previous period"
|
||||
"value": "Prejšnje obdobje"
|
||||
}
|
||||
],
|
||||
"label.previous-year": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Previous year"
|
||||
"value": "Prejšnje leto"
|
||||
}
|
||||
],
|
||||
"label.profile": [
|
||||
|
|
@ -922,13 +922,13 @@
|
|||
"label.properties": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Properties"
|
||||
"value": "Lastnosti"
|
||||
}
|
||||
],
|
||||
"label.property": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Property"
|
||||
"value": "Lastnost"
|
||||
}
|
||||
],
|
||||
"label.queries": [
|
||||
|
|
@ -1000,7 +1000,7 @@
|
|||
"label.remove-member": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Remove member"
|
||||
"value": "Odstrani člana"
|
||||
}
|
||||
],
|
||||
"label.reports": [
|
||||
|
|
@ -1036,25 +1036,25 @@
|
|||
"label.retention-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Measure your website stickiness by tracking how often users return."
|
||||
"value": "Merite uporabnikovo zadržanost s sledenjem, kako pogosto se vračajo."
|
||||
}
|
||||
],
|
||||
"label.revenue": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Revenue"
|
||||
"value": "Prihodki"
|
||||
}
|
||||
],
|
||||
"label.revenue-description": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Look into your revenue across time."
|
||||
"value": "Preglejte svoje prihodke skozi čas."
|
||||
}
|
||||
],
|
||||
"label.revenue-property": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Revenue Property"
|
||||
"value": "Lastnost prihodkov"
|
||||
}
|
||||
],
|
||||
"label.role": [
|
||||
|
|
@ -1084,13 +1084,13 @@
|
|||
"label.search": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Search"
|
||||
"value": "Išči"
|
||||
}
|
||||
],
|
||||
"label.select": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select"
|
||||
"value": "Izberi"
|
||||
}
|
||||
],
|
||||
"label.select-date": [
|
||||
|
|
@ -1102,7 +1102,7 @@
|
|||
"label.select-role": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select role"
|
||||
"value": "Izberi vlogo"
|
||||
}
|
||||
],
|
||||
"label.select-website": [
|
||||
|
|
@ -1114,7 +1114,7 @@
|
|||
"label.session": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Session"
|
||||
"value": "Seja"
|
||||
}
|
||||
],
|
||||
"label.sessions": [
|
||||
|
|
@ -1144,13 +1144,13 @@
|
|||
"label.start-step": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Start Step"
|
||||
"value": "Začetni korak"
|
||||
}
|
||||
],
|
||||
"label.steps": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Steps"
|
||||
"value": "Koraki"
|
||||
}
|
||||
],
|
||||
"label.sum": [
|
||||
|
|
@ -1180,7 +1180,7 @@
|
|||
"label.team-manager": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team manager"
|
||||
"value": "Upravitelj ekipe"
|
||||
}
|
||||
],
|
||||
"label.team-member": [
|
||||
|
|
@ -1204,7 +1204,7 @@
|
|||
"label.team-view-only": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Team view only"
|
||||
"value": "Ekipa samo za ogled"
|
||||
}
|
||||
],
|
||||
"label.team-websites": [
|
||||
|
|
@ -1468,7 +1468,7 @@
|
|||
"label.websites": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Spletnih mest"
|
||||
"value": "Spletna mesta"
|
||||
}
|
||||
],
|
||||
"label.window": [
|
||||
|
|
@ -1486,7 +1486,7 @@
|
|||
"message.action-confirmation": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Type "
|
||||
"value": "Za potrditev v spodnje polje vnesite "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
|
@ -1494,7 +1494,7 @@
|
|||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": " in the box below to confirm."
|
||||
"value": "."
|
||||
}
|
||||
],
|
||||
"message.active-users": [
|
||||
|
|
@ -1534,7 +1534,7 @@
|
|||
"message.collected-data": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Collected data"
|
||||
"value": "Zbrani podatki"
|
||||
}
|
||||
],
|
||||
"message.confirm-delete": [
|
||||
|
|
@ -1568,7 +1568,7 @@
|
|||
"message.confirm-remove": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to remove "
|
||||
"value": "Ali ste prepričani, da želite odstraniti "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
|
|
@ -1596,7 +1596,7 @@
|
|||
"message.delete-team-warning": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Deleting a team will also delete all team websites."
|
||||
"value": "Brisanje ekipe bo izbrisalo tudi vsa spletna mesta ekipe."
|
||||
}
|
||||
],
|
||||
"message.delete-website-warning": [
|
||||
|
|
@ -1792,25 +1792,25 @@
|
|||
"message.transfer-team-website-to-user": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Transfer this website to your account?"
|
||||
"value": "Želite prenesti to spletno mesto v svoj račun?"
|
||||
}
|
||||
],
|
||||
"message.transfer-user-website-to-team": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select the team to transfer this website to."
|
||||
"value": "Izberite ekipo, na katero želite prenesti to spletno mesto."
|
||||
}
|
||||
],
|
||||
"message.transfer-website": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Transfer website ownership to your account or another team."
|
||||
"value": "Prenesite lastništvo spletnega mesta na svoj račun ali drugo ekipo."
|
||||
}
|
||||
],
|
||||
"message.triggered-event": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Triggered event"
|
||||
"value": "Sprožen dogodek"
|
||||
}
|
||||
],
|
||||
"message.user-deleted": [
|
||||
|
|
@ -1822,7 +1822,7 @@
|
|||
"message.viewed-page": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Viewed page"
|
||||
"value": "Ogledana stran"
|
||||
}
|
||||
],
|
||||
"message.visitor-log": [
|
||||
|
|
@ -1862,7 +1862,7 @@
|
|||
"message.visitors-dropped-off": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Visitors dropped off"
|
||||
"value": "Osip obiskovalcev"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
1858
public/intl/messages/uz-UZ.json
Normal file
1858
public/intl/messages/uz-UZ.json
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -31,8 +31,8 @@ export async function POST(
|
|||
{ params }: { params: Promise<{ websiteId: string }> },
|
||||
) {
|
||||
const schema = z.object({
|
||||
name: z.string(),
|
||||
domain: z.string(),
|
||||
name: z.string().optional(),
|
||||
domain: z.string().optional(),
|
||||
shareId: z.string().regex(SHARE_ID_REGEX).nullable().optional(),
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@
|
|||
"label.filter-combined": "Combinado",
|
||||
"label.filter-raw": "En crudo",
|
||||
"label.filters": "Filtros",
|
||||
"label.first-seen": "First seen",
|
||||
"label.first-seen": "Visto por primera vez",
|
||||
"label.funnel": "Embudo",
|
||||
"label.funnel-description": "Comprender conversión y abandono de usuarios.",
|
||||
"label.goal": "Objetivo",
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
"label.last-days": "Últimos {x} días",
|
||||
"label.last-hours": "Últimas {x} horas",
|
||||
"label.last-months": "Últimos {x} meses",
|
||||
"label.last-seen": "Last seen",
|
||||
"label.last-seen": "Visto por última vez",
|
||||
"label.leave": "Abandonar",
|
||||
"label.leave-team": "Abandonar equipo",
|
||||
"label.less-than": "Menor que",
|
||||
|
|
@ -124,7 +124,7 @@
|
|||
"label.name": "Nombre",
|
||||
"label.new-password": "Nueva contraseña",
|
||||
"label.none": "Ninguno",
|
||||
"label.number-of-records": "{x} {x, plural, one {record} other {records}}",
|
||||
"label.number-of-records": "{x} {x, plural, one {registro} other {registros}}",
|
||||
"label.ok": "OK",
|
||||
"label.os": "Sistema",
|
||||
"label.overview": "Resumen",
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
"label.previous-period": "Periodo anterior",
|
||||
"label.previous-year": "Año anterior",
|
||||
"label.profile": "Perfil",
|
||||
"label.properties": "Properties",
|
||||
"label.properties": "Propiedades",
|
||||
"label.property": "Propiedad",
|
||||
"label.queries": "Consultas",
|
||||
"label.query": "Consulta",
|
||||
|
|
@ -161,9 +161,9 @@
|
|||
"label.reset-website": "Reiniciar analíticas",
|
||||
"label.retention": "Retención",
|
||||
"label.retention-description": "Medir la frecuencia con la que los usuarios vuelven a tu sitio web.",
|
||||
"label.revenue": "Revenue",
|
||||
"label.revenue-description": "Look into your revenue across time.",
|
||||
"label.revenue-property": "Revenue Property",
|
||||
"label.revenue": "Ganancias",
|
||||
"label.revenue-description": "Analice sus ganancias a lo largo del tiempo.",
|
||||
"label.revenue-property": "Propiedad de ganancias",
|
||||
"label.role": "Rol",
|
||||
"label.run-query": "Ejecutar consulta",
|
||||
"label.save": "Guardar",
|
||||
|
|
@ -173,7 +173,7 @@
|
|||
"label.select-date": "Seleccionar fecha",
|
||||
"label.select-role": "Seleccionar rol",
|
||||
"label.select-website": "Seleccionar sitio web",
|
||||
"label.session": "Session",
|
||||
"label.session": "Sesión",
|
||||
"label.sessions": "Sesiones",
|
||||
"label.settings": "Ajustes",
|
||||
"label.share-url": "Compartir URL",
|
||||
|
|
@ -202,21 +202,21 @@
|
|||
"label.total": "Total",
|
||||
"label.total-records": "Total de registros",
|
||||
"label.tracking-code": "Código de rastreo",
|
||||
"label.transactions": "Transactions",
|
||||
"label.transactions": "Transacciones",
|
||||
"label.transfer": "Transferir",
|
||||
"label.transfer-website": "Transferir sitio web",
|
||||
"label.true": "Verdadero",
|
||||
"label.type": "Tipo",
|
||||
"label.unique": "Único",
|
||||
"label.unique-visitors": "Visitantes únicos",
|
||||
"label.uniqueCustomers": "Unique Customers",
|
||||
"label.uniqueCustomers": "Clientes únicos",
|
||||
"label.unknown": "Desconocida",
|
||||
"label.untitled": "Sin título",
|
||||
"label.update": "Actualizar",
|
||||
"label.url": "URL",
|
||||
"label.urls": "URLs",
|
||||
"label.user": "Usuario",
|
||||
"label.user-property": "User Property",
|
||||
"label.user-property": "Propiedad de usuario",
|
||||
"label.username": "Nombre de usuario",
|
||||
"label.users": "Usuarios",
|
||||
"label.utm": "UTM",
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
"label.activity": "Dnevnik dejavnosti",
|
||||
"label.add": "Dodaj",
|
||||
"label.add-description": "Dodaj opis",
|
||||
"label.add-member": "Add member",
|
||||
"label.add-step": "Add step",
|
||||
"label.add-member": "Dodaj člana",
|
||||
"label.add-step": "Dodaj korak",
|
||||
"label.add-website": "Dodaj spletno mesto",
|
||||
"label.admin": "Administrator",
|
||||
"label.after": "Po",
|
||||
|
|
@ -24,21 +24,21 @@
|
|||
"label.cities": "Mesta",
|
||||
"label.city": "Mesto",
|
||||
"label.clear-all": "Počisti vse",
|
||||
"label.compare": "Compare",
|
||||
"label.compare": "Primerjaj",
|
||||
"label.confirm": "Potrdi",
|
||||
"label.confirm-password": "Potrdi geslo",
|
||||
"label.contains": "Vsebuje",
|
||||
"label.continue": "Nadaljuj",
|
||||
"label.count": "Count",
|
||||
"label.count": "Število",
|
||||
"label.countries": "Države",
|
||||
"label.country": "Država",
|
||||
"label.create": "Create",
|
||||
"label.create": "Ustvari",
|
||||
"label.create-report": "Ustvari poročilo",
|
||||
"label.create-team": "Ustvari ekipo",
|
||||
"label.create-user": "Ustvari uporabnika",
|
||||
"label.created": "Ustvarjeno",
|
||||
"label.created-by": "Created By",
|
||||
"label.current": "Current",
|
||||
"label.created-by": "Ustvaril",
|
||||
"label.current": "Trenutno",
|
||||
"label.current-password": "Trenutno geslo",
|
||||
"label.custom-range": "Obdobje po meri",
|
||||
"label.dashboard": "Nadzorna plošča",
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
"label.day": "Dan",
|
||||
"label.default-date-range": "Privzeto časovno obdobje",
|
||||
"label.delete": "Izbriši",
|
||||
"label.delete-report": "Delete report",
|
||||
"label.delete-report": "Izbriši poročilo",
|
||||
"label.delete-team": "Izbriši ekipo",
|
||||
"label.delete-user": "Izbriši uporabnika",
|
||||
"label.delete-website": "Izbriši spletno mesto",
|
||||
|
|
@ -63,14 +63,14 @@
|
|||
"label.dropoff": "Zapustitev",
|
||||
"label.edit": "Uredi",
|
||||
"label.edit-dashboard": "Uredi nadzorno ploščo",
|
||||
"label.edit-member": "Edit member",
|
||||
"label.enable-share-url": "Uredi povezavo za deljenje",
|
||||
"label.end-step": "End Step",
|
||||
"label.entry": "Entry URL",
|
||||
"label.edit-member": "Uredi člana",
|
||||
"label.enable-share-url": "Omogoči povezavo za deljenje",
|
||||
"label.end-step": "Končni korak",
|
||||
"label.entry": "Vstopni URL",
|
||||
"label.event": "Dogodek",
|
||||
"label.event-data": "Podatki dogodka",
|
||||
"label.events": "Dogodki",
|
||||
"label.exit": "Exit URL",
|
||||
"label.exit": "Izhodni URL",
|
||||
"label.false": "Napačno",
|
||||
"label.field": "Polje",
|
||||
"label.fields": "Polja",
|
||||
|
|
@ -78,48 +78,48 @@
|
|||
"label.filter-combined": "Skupaj",
|
||||
"label.filter-raw": "Neobdelano",
|
||||
"label.filters": "Filtri",
|
||||
"label.first-seen": "First seen",
|
||||
"label.first-seen": "Prvič viden",
|
||||
"label.funnel": "Prodajni lijak",
|
||||
"label.funnel-description": "Understand the conversion and drop-off rate of users.",
|
||||
"label.goal": "Goal",
|
||||
"label.goals": "Goals",
|
||||
"label.goals-description": "Track your goals for pageviews and events.",
|
||||
"label.funnel-description": "Razumite stopnjo konverzije in osipa uporabnikov.",
|
||||
"label.goal": "Cilj",
|
||||
"label.goals": "Cilji",
|
||||
"label.goals-description": "Spremljajte svoje cilje za oglede strani in dogodke.",
|
||||
"label.greater-than": "Večje od",
|
||||
"label.greater-than-equals": "Večje ali enako kot",
|
||||
"label.host": "Host",
|
||||
"label.hosts": "Hosts",
|
||||
"label.host": "Gostitelj",
|
||||
"label.hosts": "Gostitelji",
|
||||
"label.insights": "Vpogled",
|
||||
"label.insights-description": "Dive deeper into your data by using segments and filters.",
|
||||
"label.insights-description": "Poglobite se v podatke z uporabo segmentov in filtrov.",
|
||||
"label.is": "Je",
|
||||
"label.is-not": "Ni",
|
||||
"label.is-not-set": "Ni nastavljeno",
|
||||
"label.is-set": "Je nastavljeno",
|
||||
"label.join": "Pridruži se",
|
||||
"label.join-team": "Pridruži se ekipi",
|
||||
"label.journey": "Journey",
|
||||
"label.journey-description": "Understand how users navigate through your website.",
|
||||
"label.journey": "Uporabniška pot",
|
||||
"label.journey-description": "Razumite, kako uporabniki krmarijo po vašem spletnem mestu.",
|
||||
"label.language": "Jezik",
|
||||
"label.languages": "Jeziki",
|
||||
"label.laptop": "Prenosni računalnik",
|
||||
"label.last-days": "Zadnjih {x} dni",
|
||||
"label.last-hours": "Zadnjih {x} ur",
|
||||
"label.last-months": "Last {x} months",
|
||||
"label.last-seen": "Last seen",
|
||||
"label.last-months": "Zadnjih {x} mesecev",
|
||||
"label.last-seen": "Nazadnje viden",
|
||||
"label.leave": "Zapusti",
|
||||
"label.leave-team": "Zapusti ekipo",
|
||||
"label.less-than": "Manjše kot",
|
||||
"label.less-than-equals": "Manjše ali enako kot",
|
||||
"label.login": "Prijava",
|
||||
"label.logout": "Odjava",
|
||||
"label.manage": "Manage",
|
||||
"label.manager": "Manager",
|
||||
"label.manage": "Upravljaj",
|
||||
"label.manager": "Upravitelj",
|
||||
"label.max": "Največ",
|
||||
"label.member": "Member",
|
||||
"label.member": "Član",
|
||||
"label.members": "Člani",
|
||||
"label.min": "Najmanj",
|
||||
"label.mobile": "Mobilne naprave",
|
||||
"label.more": "Več",
|
||||
"label.my-account": "My account",
|
||||
"label.my-account": "Moj račun",
|
||||
"label.my-websites": "Moja spletna mesta",
|
||||
"label.name": "Ime",
|
||||
"label.new-password": "Novo geslo",
|
||||
|
|
@ -134,15 +134,15 @@
|
|||
"label.pageTitle": "Naslov strani",
|
||||
"label.pages": "Strani",
|
||||
"label.password": "Geslo",
|
||||
"label.path": "Path",
|
||||
"label.paths": "Paths",
|
||||
"label.path": "Pot",
|
||||
"label.paths": "Poti",
|
||||
"label.powered-by": "Poganja {name}",
|
||||
"label.previous": "Previous",
|
||||
"label.previous-period": "Previous period",
|
||||
"label.previous-year": "Previous year",
|
||||
"label.previous": "Prejšnji",
|
||||
"label.previous-period": "Prejšnje obdobje",
|
||||
"label.previous-year": "Prejšnje leto",
|
||||
"label.profile": "Profil",
|
||||
"label.properties": "Properties",
|
||||
"label.property": "Property",
|
||||
"label.properties": "Lastnosti",
|
||||
"label.property": "Lastnost",
|
||||
"label.queries": "Poizvedbe",
|
||||
"label.query": "Poizvedba",
|
||||
"label.query-parameters": "Parametri poizvedbe",
|
||||
|
|
@ -154,41 +154,41 @@
|
|||
"label.region": "Regija",
|
||||
"label.regions": "Regije",
|
||||
"label.remove": "Odstrani",
|
||||
"label.remove-member": "Remove member",
|
||||
"label.remove-member": "Odstrani člana",
|
||||
"label.reports": "Poročila",
|
||||
"label.required": "Zahtevano",
|
||||
"label.reset": "Ponastavi",
|
||||
"label.reset-website": "Ponastavi statistiko",
|
||||
"label.retention": "Ohranjanje uporabnikov",
|
||||
"label.retention-description": "Measure your website stickiness by tracking how often users return.",
|
||||
"label.revenue": "Revenue",
|
||||
"label.revenue-description": "Look into your revenue across time.",
|
||||
"label.revenue-property": "Revenue Property",
|
||||
"label.retention-description": "Merite uporabnikovo zadržanost s sledenjem, kako pogosto se vračajo.",
|
||||
"label.revenue": "Prihodki",
|
||||
"label.revenue-description": "Preglejte svoje prihodke skozi čas.",
|
||||
"label.revenue-property": "Lastnost prihodkov",
|
||||
"label.role": "Vloga",
|
||||
"label.run-query": "Izvedi poizvedbo",
|
||||
"label.save": "Shrani",
|
||||
"label.screens": "Zasloni",
|
||||
"label.search": "Search",
|
||||
"label.select": "Select",
|
||||
"label.search": "Išči",
|
||||
"label.select": "Izberi",
|
||||
"label.select-date": "Izberi datum",
|
||||
"label.select-role": "Select role",
|
||||
"label.select-role": "Izberi vlogo",
|
||||
"label.select-website": "Izberi spletno mesto",
|
||||
"label.session": "Session",
|
||||
"label.session": "Seja",
|
||||
"label.sessions": "Seje",
|
||||
"label.settings": "Nastavitve",
|
||||
"label.share-url": "Deli povezavo",
|
||||
"label.single-day": "En dan",
|
||||
"label.start-step": "Start Step",
|
||||
"label.steps": "Steps",
|
||||
"label.start-step": "Začetni korak",
|
||||
"label.steps": "Koraki",
|
||||
"label.sum": "Seštevek",
|
||||
"label.tablet": "Tablični računalnik",
|
||||
"label.team": "Ekipa",
|
||||
"label.team-id": "ID ekipe",
|
||||
"label.team-manager": "Team manager",
|
||||
"label.team-manager": "Upravitelj ekipe",
|
||||
"label.team-member": "Član ekipe",
|
||||
"label.team-name": "Ime ekipe",
|
||||
"label.team-owner": "Lastnik ekipe",
|
||||
"label.team-view-only": "Team view only",
|
||||
"label.team-view-only": "Ekipa samo za ogled",
|
||||
"label.team-websites": "Spletna mesta ekipe",
|
||||
"label.teams": "Ekipe",
|
||||
"label.theme": "Tema",
|
||||
|
|
@ -232,17 +232,17 @@
|
|||
"label.visits": "Visits",
|
||||
"label.website": "Spletno mesto",
|
||||
"label.website-id": "ID spletnega mesta",
|
||||
"label.websites": "Spletnih mest",
|
||||
"label.websites": "Spletna mesta",
|
||||
"label.window": "Okno",
|
||||
"label.yesterday": "Včeraj",
|
||||
"message.action-confirmation": "Type {confirmation} in the box below to confirm.",
|
||||
"message.action-confirmation": "Za potrditev v spodnje polje vnesite {confirmation}.",
|
||||
"message.active-users": "{x} trenutni {x, plural, one {obiskovalec} other {obiskovalcev}}",
|
||||
"message.collected-data": "Collected data",
|
||||
"message.collected-data": "Zbrani podatki",
|
||||
"message.confirm-delete": "Ste prepričani, da želite izbrisati {target}?",
|
||||
"message.confirm-leave": "Ste prepričani, da želite zapustiti {target}?",
|
||||
"message.confirm-remove": "Are you sure you want to remove {target}?",
|
||||
"message.confirm-remove": "Ali ste prepričani, da želite odstraniti {target}?",
|
||||
"message.confirm-reset": "Ste prepričani, da želite ponastaviti statistiko {target}?",
|
||||
"message.delete-team-warning": "Deleting a team will also delete all team websites.",
|
||||
"message.delete-team-warning": "Brisanje ekipe bo izbrisalo tudi vsa spletna mesta ekipe.",
|
||||
"message.delete-website-warning": "Izbrisani bodo tudi vsi pripadajoči podatki.",
|
||||
"message.error": "Nekaj je šlo narobe.",
|
||||
"message.event-log": "{event} na {url}",
|
||||
|
|
@ -268,12 +268,12 @@
|
|||
"message.team-not-found": "Ekipa ni bila najdena.",
|
||||
"message.team-websites-info": "Spletne strani si lahko ogleda vsak član ekipe.",
|
||||
"message.tracking-code": "Koda za sledenje",
|
||||
"message.transfer-team-website-to-user": "Transfer this website to your account?",
|
||||
"message.transfer-user-website-to-team": "Select the team to transfer this website to.",
|
||||
"message.transfer-website": "Transfer website ownership to your account or another team.",
|
||||
"message.triggered-event": "Triggered event",
|
||||
"message.transfer-team-website-to-user": "Želite prenesti to spletno mesto v svoj račun?",
|
||||
"message.transfer-user-website-to-team": "Izberite ekipo, na katero želite prenesti to spletno mesto.",
|
||||
"message.transfer-website": "Prenesite lastništvo spletnega mesta na svoj račun ali drugo ekipo.",
|
||||
"message.triggered-event": "Sprožen dogodek",
|
||||
"message.user-deleted": "Uporabnik je izbrisan.",
|
||||
"message.viewed-page": "Viewed page",
|
||||
"message.viewed-page": "Ogledana stran",
|
||||
"message.visitor-log": "Obiskovalec iz {country} uporablja {browser} na {os} {device}",
|
||||
"message.visitors-dropped-off": "Visitors dropped off"
|
||||
"message.visitors-dropped-off": "Osip obiskovalcev"
|
||||
}
|
||||
|
|
|
|||
279
src/lang/uz-UZ.json
Normal file
279
src/lang/uz-UZ.json
Normal file
|
|
@ -0,0 +1,279 @@
|
|||
{
|
||||
"label.access-code": "Kirish kodi",
|
||||
"label.actions": "Amallar",
|
||||
"label.activity": "Faoliyat",
|
||||
"label.add": "Qoʻshish",
|
||||
"label.add-description": "Tavsif qoʻshish",
|
||||
"label.add-member": "A'zo qoʻshish",
|
||||
"label.add-step": "Qadam qoʻshish",
|
||||
"label.add-website": "Veb-sayt qoʻshish",
|
||||
"label.admin": "Administrator",
|
||||
"label.after": "Keyin",
|
||||
"label.all": "Barchasi",
|
||||
"label.all-time": "Barcha vaqtlar",
|
||||
"label.analytics": "Tahlil",
|
||||
"label.average": "Oʻrtacha",
|
||||
"label.back": "Orqaga",
|
||||
"label.before": "Oldin",
|
||||
"label.bounce-rate": "Chiqib ketish darajasi",
|
||||
"label.breakdown": "Tahlil",
|
||||
"label.browser": "Brauzer",
|
||||
"label.browsers": "Brauzerlar",
|
||||
"label.cancel": "Bekor qilish",
|
||||
"label.change-password": "Parolni oʻzgartirish",
|
||||
"label.cities": "Shaharlar",
|
||||
"label.city": "Shahar",
|
||||
"label.clear-all": "Barchasini tozalash",
|
||||
"label.compare": "Taqqoslash",
|
||||
"label.confirm": "Tasdiqlash",
|
||||
"label.confirm-password": "Parolni tasdiqlash",
|
||||
"label.contains": "Oʻz ichiga oladi",
|
||||
"label.continue": "Davom etish",
|
||||
"label.count": "Soni",
|
||||
"label.countries": "Davlatlar",
|
||||
"label.country": "Davlat",
|
||||
"label.create": "Yaratish",
|
||||
"label.create-report": "Hisobot yaratish",
|
||||
"label.create-team": "Jamoa yaratish",
|
||||
"label.create-user": "Foydalanuvchi yaratish",
|
||||
"label.created": "Yaratilgan",
|
||||
"label.created-by": "Kim tomonidan yaratilgan",
|
||||
"label.current": "Joriy",
|
||||
"label.current-password": "Joriy parol",
|
||||
"label.custom-range": "Maxsus oraliq",
|
||||
"label.dashboard": "Boshqaruv paneli",
|
||||
"label.data": "Ma'lumotlar",
|
||||
"label.date": "Sana",
|
||||
"label.date-range": "Sana oraligʻi",
|
||||
"label.day": "Kun",
|
||||
"label.default-date-range": "Standart sana oraligʻi",
|
||||
"label.delete": "Oʻchirish",
|
||||
"label.delete-report": "Hisobotni oʻchirish",
|
||||
"label.delete-team": "Jamoani oʻchirish",
|
||||
"label.delete-user": "Foydalanuvchini oʻchirish",
|
||||
"label.delete-website": "Veb-saytni oʻchirish",
|
||||
"label.description": "Tavsif",
|
||||
"label.desktop": "Ish stoli",
|
||||
"label.details": "Batafsil ma'lumot",
|
||||
"label.device": "Qurilma",
|
||||
"label.devices": "Qurilmalar",
|
||||
"label.dismiss": "Yopish",
|
||||
"label.does-not-contain": "Oʻz ichiga olmaydi",
|
||||
"label.domain": "Domen",
|
||||
"label.dropoff": "Tashlab ketish",
|
||||
"label.edit": "Tahrirlash",
|
||||
"label.edit-dashboard": "Boshqaruv panelini tahrirlash",
|
||||
"label.edit-member": "A'zoni tahrirlash",
|
||||
"label.enable-share-url": "Ulashish URL'ini yoqish",
|
||||
"label.end-step": "Yakuniy qadam",
|
||||
"label.entry": "Kirish yoʻli",
|
||||
"label.event": "Hodisa",
|
||||
"label.event-data": "Hodisa ma'lumotlari",
|
||||
"label.events": "Hodisalar",
|
||||
"label.exit": "Chiqish yoʻli",
|
||||
"label.false": "Yolgʻon",
|
||||
"label.field": "Maydon",
|
||||
"label.fields": "Maydonlar",
|
||||
"label.filter": "Filtr",
|
||||
"label.filter-combined": "Birlashtirilgan",
|
||||
"label.filter-raw": "Xom",
|
||||
"label.filters": "Filtrlar",
|
||||
"label.first-seen": "Birinchi koʻrilgan",
|
||||
"label.funnel": "Voronka",
|
||||
"label.funnel-description": "Foydalanuvchilarning konversiya va tashlab ketish darajasini tushunish.",
|
||||
"label.goal": "Maqsad",
|
||||
"label.goals": "Maqsadlar",
|
||||
"label.goals-description": "Sahifa koʻrishlari va hodisalar uchun maqsadlaringizni kuzatib boring.",
|
||||
"label.greater-than": "Kattaroq",
|
||||
"label.greater-than-equals": "Kattaroq yoki teng",
|
||||
"label.host": "Xost",
|
||||
"label.hosts": "Xostlar",
|
||||
"label.insights": "Tushunchalar",
|
||||
"label.insights-description": "Segmentlar va filtrlardan foydalanib ma'lumotlaringizga chuqurroq kiring.",
|
||||
"label.is": "Teng",
|
||||
"label.is-not": "Teng emas",
|
||||
"label.is-not-set": "Oʻrnatilmagan",
|
||||
"label.is-set": "Oʻrnatilgan",
|
||||
"label.join": "Qoʻshilish",
|
||||
"label.join-team": "Jamoaga qoʻshilish",
|
||||
"label.journey": "Sayohat",
|
||||
"label.journey-description": "Foydalanuvchilar veb-saytingizda qanday harakat qilishlarini tushunish.",
|
||||
"label.language": "Til",
|
||||
"label.languages": "Tillar",
|
||||
"label.laptop": "Noutbuk",
|
||||
"label.last-days": "Oxirgi {x} kun",
|
||||
"label.last-hours": "Oxirgi {x} soat",
|
||||
"label.last-months": "Oxirgi {x} oy",
|
||||
"label.last-seen": "Oxirgi koʻrilgan",
|
||||
"label.leave": "Tark etish",
|
||||
"label.leave-team": "Jamoani tark etish",
|
||||
"label.less-than": "Kichikroq",
|
||||
"label.less-than-equals": "Kichikroq yoki teng",
|
||||
"label.login": "Kirish",
|
||||
"label.logout": "Chiqish",
|
||||
"label.manage": "Boshqarish",
|
||||
"label.manager": "Menejer",
|
||||
"label.max": "Maksimal",
|
||||
"label.member": "A'zo",
|
||||
"label.members": "A'zolar",
|
||||
"label.min": "Minimal",
|
||||
"label.mobile": "Mobil",
|
||||
"label.more": "Koʻproq",
|
||||
"label.my-account": "Mening hisobim",
|
||||
"label.my-websites": "Mening veb-saytlarim",
|
||||
"label.name": "Ism",
|
||||
"label.new-password": "Yangi parol",
|
||||
"label.none": "Hech biri",
|
||||
"label.number-of-records": "{x} yozuv",
|
||||
"label.ok": "OK",
|
||||
"label.os": "OT (Operatsion tizim)",
|
||||
"label.overview": "Umumiy koʻrinish",
|
||||
"label.owner": "Egasi",
|
||||
"label.page-of": "Sahifa {current} dan {total}",
|
||||
"label.page-views": "Sahifa koʻrishlari",
|
||||
"label.pageTitle": "Sahifa sarlavhasi",
|
||||
"label.pages": "Sahifalar",
|
||||
"label.password": "Parol",
|
||||
"label.path": "Yoʻl",
|
||||
"label.paths": "Yoʻllar",
|
||||
"label.powered-by": "{name} tomonidan quvvatlanadi",
|
||||
"label.previous": "Oldingi",
|
||||
"label.previous-period": "Oldingi davr",
|
||||
"label.previous-year": "Oldingi yil",
|
||||
"label.profile": "Profil",
|
||||
"label.properties": "Xususiyatlar",
|
||||
"label.property": "Xususiyat",
|
||||
"label.queries": "Soʻrovlar",
|
||||
"label.query": "Soʻrov",
|
||||
"label.query-parameters": "Soʻrov parametrlari",
|
||||
"label.realtime": "Haqiqiy vaqt",
|
||||
"label.referrer": "Tavsiya etuvchi",
|
||||
"label.referrers": "Tavsiya etuvchilar",
|
||||
"label.refresh": "Yangilash",
|
||||
"label.regenerate": "Qayta yaratish",
|
||||
"label.region": "Viloyat/Mintaqa",
|
||||
"label.regions": "Viloyatlar/Mintaqalar",
|
||||
"label.remove": "Olib tashlash",
|
||||
"label.remove-member": "A'zoni olib tashlash",
|
||||
"label.reports": "Hisobotlar",
|
||||
"label.required": "Majburiy",
|
||||
"label.reset": "Qayta tiklash",
|
||||
"label.reset-website": "Veb-saytni qayta tiklash",
|
||||
"label.retention": "Saqlanish",
|
||||
"label.retention-description": "Foydalanuvchilarning qaytish chastotasini kuzatib, veb-saytingizning jozibadorligini oʻlchang.",
|
||||
"label.revenue": "Daromad",
|
||||
"label.revenue-description": "Vaqt oʻtishi bilan daromadingizni tekshiring.",
|
||||
"label.revenue-property": "Daromad xususiyati",
|
||||
"label.role": "Rol",
|
||||
"label.run-query": "Soʻrovni ishga tushirish",
|
||||
"label.save": "Saqlash",
|
||||
"label.screens": "Ekranlar",
|
||||
"label.search": "Qidiruv",
|
||||
"label.select": "Tanlash",
|
||||
"label.select-date": "Sanani tanlash",
|
||||
"label.select-role": "Rolni tanlash",
|
||||
"label.select-website": "Veb-saytni tanlash",
|
||||
"label.session": "Sessiya",
|
||||
"label.sessions": "Sessiyalar",
|
||||
"label.settings": "Sozlamalar",
|
||||
"label.share-url": "Ulashish URL'i",
|
||||
"label.single-day": "Bir kun",
|
||||
"label.start-step": "Boshlanish qadami",
|
||||
"label.steps": "Qadamlar",
|
||||
"label.sum": "Yigʻindi",
|
||||
"label.tablet": "Planshet",
|
||||
"label.team": "Jamoa",
|
||||
"label.team-id": "Jamoa ID'si",
|
||||
"label.team-manager": "Jamoa menejeri",
|
||||
"label.team-member": "Jamoa a'zosi",
|
||||
"label.team-name": "Jamoa nomi",
|
||||
"label.team-owner": "Jamoa egasi",
|
||||
"label.team-view-only": "Jamoa faqat koʻrish",
|
||||
"label.team-websites": "Jamoa veb-saytlari",
|
||||
"label.teams": "Jamoalar",
|
||||
"label.theme": "Mavzu",
|
||||
"label.this-month": "Shu oy",
|
||||
"label.this-week": "Shu hafta",
|
||||
"label.this-year": "Shu yil",
|
||||
"label.timezone": "Vaqt zonasi",
|
||||
"label.title": "Sarlavha",
|
||||
"label.today": "Bugun",
|
||||
"label.toggle-charts": "Grafiklarni almashtirish",
|
||||
"label.total": "Jami",
|
||||
"label.total-records": "Jami yozuvlar",
|
||||
"label.tracking-code": "Kuzatuv kodi",
|
||||
"label.transactions": "Tranzaksiyalar",
|
||||
"label.transfer": "Oʻtkazish",
|
||||
"label.transfer-website": "Veb-saytni oʻtkazish",
|
||||
"label.true": "Rost",
|
||||
"label.type": "Tur",
|
||||
"label.unique": "Noyob",
|
||||
"label.unique-visitors": "Noyob tashrif buyuruvchilar",
|
||||
"label.uniqueCustomers": "Noyob mijozlar",
|
||||
"label.unknown": "Noma'lum",
|
||||
"label.untitled": "Sarlavhasiz",
|
||||
"label.update": "Yangilash",
|
||||
"label.url": "URL",
|
||||
"label.urls": "URL'lar",
|
||||
"label.user": "Foydalanuvchi",
|
||||
"label.user-property": "Foydalanuvchi xususiyati",
|
||||
"label.username": "Foydalanuvchi nomi",
|
||||
"label.users": "Foydalanuvchilar",
|
||||
"label.utm": "UTM",
|
||||
"label.utm-description": "UTM parametrlari orqali kampaniyalaringizni kuzatib boring.",
|
||||
"label.value": "Qiymat",
|
||||
"label.view": "Koʻrish",
|
||||
"label.view-details": "Batafsil koʻrish",
|
||||
"label.view-only": "Faqat koʻrish",
|
||||
"label.views": "Koʻrishlar",
|
||||
"label.views-per-visit": "Tashrifga koʻrishlar soni",
|
||||
"label.visit-duration": "Tashrif davomiyligi",
|
||||
"label.visitors": "Tashrif buyuruvchilar",
|
||||
"label.visits": "Tashriflar",
|
||||
"label.website": "Veb-sayt",
|
||||
"label.website-id": "Veb-sayt ID'si",
|
||||
"label.websites": "Veb-saytlar",
|
||||
"label.window": "Oyna",
|
||||
"label.yesterday": "Kecha",
|
||||
"message.action-confirmation": "Tasdiqlash uchun pastdagi qutiga **{confirmation}** yozing.",
|
||||
"message.active-users": "{x} joriy {x, plural, one {tashrif buyuruvchi} other {tashrif buyuruvchilar}}",
|
||||
"message.collected-data": "Yigʻilgan ma'lumotlar",
|
||||
"message.confirm-delete": "**{target}** ni oʻchirmoqchi ekanligingizga ishonchingiz komilmi?",
|
||||
"message.confirm-leave": "**{target}** ni tark etmoqchi ekanligingizga ishonchingiz komilmi?",
|
||||
"message.confirm-remove": "**{target}** ni olib tashlamoqchi ekanligingizga ishonchingiz komilmi?",
|
||||
"message.confirm-reset": "**{target}** ni qayta tiklamoqchi ekanligingizga ishonchingiz komilmi?",
|
||||
"message.delete-team-warning": "Jamoani oʻchirish, shuningdek, barcha jamoa veb-saytlarini ham oʻchiradi.",
|
||||
"message.delete-website-warning": "Barcha veb-sayt ma'lumotlari oʻchiriladi.",
|
||||
"message.error": "Nimadir xato ketdi.",
|
||||
"message.event-log": "**{url}** da **{event}** hodisasi",
|
||||
"message.go-to-settings": "Sozlamalarga oʻtish",
|
||||
"message.incorrect-username-password": "Notoʻgʻri foydalanuvchi nomi va/yoki parol.",
|
||||
"message.invalid-domain": "Notoʻgʻri domen. http/https qoʻshmang.",
|
||||
"message.min-password-length": "Minimal uzunligi {n} belgidan",
|
||||
"message.new-version-available": "Umami'ning yangi **{version}** versiyasi mavjud!",
|
||||
"message.no-data-available": "Ma'lumotlar mavjud emas.",
|
||||
"message.no-event-data": "Hodisa ma'lumotlari mavjud emas.",
|
||||
"message.no-match-password": "Parollar mos kelmadi.",
|
||||
"message.no-results-found": "Hech qanday natija topilmadi.",
|
||||
"message.no-team-websites": "Bu jamoada hech qanday veb-sayt yoʻq.",
|
||||
"message.no-teams": "Siz hech qanday jamoa yaratmagansiz.",
|
||||
"message.no-users": "Hech qanday foydalanuvchi yoʻq.",
|
||||
"message.no-websites-configured": "Sizda hech qanday veb-sayt sozlanmagan.",
|
||||
"message.page-not-found": "Sahifa topilmadi",
|
||||
"message.reset-website": "Bu veb-saytni qayta tiklash uchun tasdiqlash uchun pastdagi qutiga **{confirmation}** yozing.",
|
||||
"message.reset-website-warning": "Bu veb-sayt uchun barcha statistik ma'lumotlar oʻchiriladi, lekin sozlamalaringiz saqlanib qoladi.",
|
||||
"message.saved": "Saqlandi.",
|
||||
"message.share-url": "Sizning veb-sayt statistikalaringiz quyidagi URL'da ochiqdir:",
|
||||
"message.team-already-member": "Siz allaqachon jamoa a'zosisiz.",
|
||||
"message.team-not-found": "Jamoa topilmadi.",
|
||||
"message.team-websites-info": "Veb-saytlarni jamoaning har bir a'zosi koʻrishi mumkin.",
|
||||
"message.tracking-code": "Bu veb-sayt uchun statistikani kuzatish uchun quyidagi kodni HTML'ingizdagi **<head>...</head>** qismiga joylashtiring.",
|
||||
"message.transfer-team-website-to-user": "Bu veb-saytni oʻz hisobingizga oʻtkazasizmi?",
|
||||
"message.transfer-user-website-to-team": "Bu veb-saytni oʻtkazish uchun jamoani tanlang.",
|
||||
"message.transfer-website": "Veb-sayt egaligini oʻz hisobingizga yoki boshqa jamoaga oʻtkazish.",
|
||||
"message.triggered-event": "Hodisa ishga tushirildi",
|
||||
"message.user-deleted": "Foydalanuvchi oʻchirildi.",
|
||||
"message.viewed-page": "Sahifa koʻrildi",
|
||||
"message.visitor-log": "{os} {device} da {browser} dan foydalanayotgan {country} dan tashrif buyuruvchi",
|
||||
"message.visitors-dropped-off": "Tashrif buyuruvchilar tashlab ketishdi"
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ import * as detect from '../detect';
|
|||
import { expect } from '@jest/globals';
|
||||
|
||||
const IP = '127.0.0.1';
|
||||
const BAD_IP = '127.127.127.127';
|
||||
|
||||
test('getIpAddress: Custom header', () => {
|
||||
process.env.CLIENT_IP_HEADER = 'x-custom-ip-header';
|
||||
|
|
@ -17,6 +18,12 @@ test('getIpAddress: Standard header', () => {
|
|||
expect(detect.getIpAddress(new Headers({ 'x-forwarded-for': IP }))).toEqual(IP);
|
||||
});
|
||||
|
||||
test('getIpAddress: CloudFlare header is lower priority than standard header', () => {
|
||||
expect(
|
||||
detect.getIpAddress(new Headers({ 'cf-connecting-ip': BAD_IP, 'x-forwarded-for': IP })),
|
||||
).toEqual(IP);
|
||||
});
|
||||
|
||||
test('getIpAddress: No header', () => {
|
||||
expect(detect.getIpAddress(new Headers())).toEqual(null);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -154,12 +154,12 @@ export const KAFKA_TOPIC = {
|
|||
|
||||
export const ROLES = {
|
||||
admin: 'admin',
|
||||
user: 'user',
|
||||
viewOnly: 'view-only',
|
||||
teamOwner: 'team-owner',
|
||||
teamManager: 'team-manager',
|
||||
teamMember: 'team-member',
|
||||
teamOwner: 'team-owner',
|
||||
teamViewOnly: 'team-view-only',
|
||||
user: 'user',
|
||||
viewOnly: 'view-only',
|
||||
} as const;
|
||||
|
||||
export const PERMISSIONS = {
|
||||
|
|
@ -267,7 +267,7 @@ export const URL_LENGTH = 500;
|
|||
export const PAGE_TITLE_LENGTH = 500;
|
||||
export const EVENT_NAME_LENGTH = 50;
|
||||
|
||||
export const UTM_PARAMS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
|
||||
export const UTM_PARAMS = ['utm_campaign', 'utm_content', 'utm_medium', 'utm_source', 'utm_term'];
|
||||
|
||||
export const DESKTOP_OS = [
|
||||
'BeOS',
|
||||
|
|
@ -305,8 +305,8 @@ export const OS_NAMES = {
|
|||
export const BROWSERS = {
|
||||
android: 'Android',
|
||||
aol: 'AOL',
|
||||
beaker: 'Beaker',
|
||||
bb10: 'BlackBerry 10',
|
||||
beaker: 'Beaker',
|
||||
chrome: 'Chrome',
|
||||
'chromium-webview': 'Chrome (webview)',
|
||||
crios: 'Chrome (iOS)',
|
||||
|
|
@ -328,15 +328,17 @@ export const BROWSERS = {
|
|||
phantomjs: 'PhantomJS',
|
||||
safari: 'Safari',
|
||||
samsung: 'Samsung',
|
||||
silk: 'Silk',
|
||||
searchbot: 'Searchbot',
|
||||
silk: 'Silk',
|
||||
yandexbrowser: 'Yandex',
|
||||
};
|
||||
|
||||
// The order here is important and influences how IPs are detected by lib/detect.ts
|
||||
// Please do not change the order unless you know exactly what you're doing - read https://developers.cloudflare.com/fundamentals/reference/http-headers/
|
||||
export const IP_ADDRESS_HEADERS = [
|
||||
'cf-connecting-ip',
|
||||
'x-client-ip',
|
||||
'x-forwarded-for',
|
||||
'cf-connecting-ip', // This should be *after* x-forwarded-for, so that x-forwarded-for is respected if present
|
||||
'do-connecting-ip',
|
||||
'fastly-client-ip',
|
||||
'true-client-ip',
|
||||
|
|
@ -345,349 +347,348 @@ export const IP_ADDRESS_HEADERS = [
|
|||
'x-forwarded',
|
||||
'forwarded',
|
||||
'x-appengine-user-ip',
|
||||
'x-nf-client-connection-ip',
|
||||
'x-real-ip',
|
||||
];
|
||||
|
||||
export const SOCIAL_DOMAINS = [
|
||||
'bsky.app',
|
||||
'facebook.com',
|
||||
'fb.com',
|
||||
'instagram.com',
|
||||
'ig.com',
|
||||
'twitter.com',
|
||||
't.co',
|
||||
'x.com',
|
||||
'instagram.com',
|
||||
'linkedin.',
|
||||
'tiktok.',
|
||||
'reddit.',
|
||||
'threads.net',
|
||||
'bsky.app',
|
||||
'news.ycombinator.com',
|
||||
'snapchat.',
|
||||
'pinterest.',
|
||||
'reddit.',
|
||||
'snapchat.',
|
||||
't.co',
|
||||
'threads.net',
|
||||
'tiktok.',
|
||||
'twitter.com',
|
||||
'x.com',
|
||||
];
|
||||
|
||||
export const SEARCH_DOMAINS = [
|
||||
'google.',
|
||||
'baidu.com',
|
||||
'bing.com',
|
||||
'msn.com',
|
||||
'chatgpt.com',
|
||||
'duckduckgo.com',
|
||||
'ecosia.org',
|
||||
'google.',
|
||||
'msn.com',
|
||||
'perplexity.ai',
|
||||
'search.brave.com',
|
||||
'yandex.',
|
||||
'baidu.com',
|
||||
'ecosia.org',
|
||||
'chatgpt.com',
|
||||
'perplexity.ai',
|
||||
];
|
||||
|
||||
export const SHOPPING_DOMAINS = [
|
||||
'amazon.',
|
||||
'ebay.com',
|
||||
'walmart.com',
|
||||
'alibab.com',
|
||||
'alibaba.com',
|
||||
'aliexpress.com',
|
||||
'etsy.com',
|
||||
'amazon.',
|
||||
'bestbuy.com',
|
||||
'target.com',
|
||||
'ebay.com',
|
||||
'etsy.com',
|
||||
'newegg.com',
|
||||
'target.com',
|
||||
'walmart.com',
|
||||
];
|
||||
|
||||
export const EMAIL_DOMAINS = [
|
||||
'gmail.',
|
||||
'hotmail.',
|
||||
'mail.yahoo.',
|
||||
'outlook.',
|
||||
'hotmail.',
|
||||
'protonmail.',
|
||||
'proton.me',
|
||||
'protonmail.',
|
||||
];
|
||||
|
||||
export const VIDEO_DOMAINS = ['youtube.', 'twitch.'];
|
||||
export const VIDEO_DOMAINS = ['twitch.', 'youtube.'];
|
||||
|
||||
export const PAID_AD_PARAMS = [
|
||||
'utm_source=google',
|
||||
'gclid=',
|
||||
'fbclid=',
|
||||
'msclkid=',
|
||||
'dclid=',
|
||||
'twclid=',
|
||||
'li_fat_id=',
|
||||
'epik=',
|
||||
'ttclid=',
|
||||
'scid=',
|
||||
'aid=',
|
||||
'pc_id=',
|
||||
'ad_id=',
|
||||
'rdt_cid=',
|
||||
'aid=',
|
||||
'dclid=',
|
||||
'epik=',
|
||||
'fbclid=',
|
||||
'gclid=',
|
||||
'li_fat_id=',
|
||||
'msclkid=',
|
||||
'ob_click_id=',
|
||||
'pc_id=',
|
||||
'rdt_cid=',
|
||||
'scid=',
|
||||
'ttclid=',
|
||||
'twclid=',
|
||||
'utm_medium=cpc',
|
||||
'utm_medium=paid',
|
||||
'utm_medium=paid_social',
|
||||
'utm_source=google',
|
||||
];
|
||||
|
||||
export const GROUPED_DOMAINS = [
|
||||
{ name: 'Google', domain: 'google.com', match: 'google.' },
|
||||
{ name: 'Facebook', domain: 'facebook.com', match: 'facebook.' },
|
||||
{ name: 'Reddit', domain: 'reddit.com', match: 'reddit.' },
|
||||
{ name: 'LinkedIn', domain: 'linkedin.com', match: 'linkedin.' },
|
||||
{ name: 'GitHub', domain: 'github.com', match: 'github.' },
|
||||
{ name: 'Hacker News', domain: 'news.ycombinator.com', match: 'news.ycombinator.com' },
|
||||
{ name: 'Bing', domain: 'bing.com', match: 'bing.' },
|
||||
{ name: 'Brave', domain: 'brave.com', match: 'brave.' },
|
||||
{ name: 'DuckDuckGo', domain: 'duckduckgo.com', match: 'duckduckgo.' },
|
||||
{ name: 'Twitter', domain: 'twitter.com', match: ['twitter.', 't.co', 'x.com'] },
|
||||
{ name: 'Instagram', domain: 'instagram.com', match: ['instagram.', 'ig.com'] },
|
||||
{ name: 'Snapchat', domain: 'snapchat.com', match: 'snapchat.' },
|
||||
{ name: 'Pinterest', domain: 'pinterest.com', match: 'pinterest.' },
|
||||
{ name: 'ChatGPT', domain: 'chatgpt.com', match: 'chatgpt.' },
|
||||
{ name: 'DuckDuckGo', domain: 'duckduckgo.com', match: 'duckduckgo.' },
|
||||
{ name: 'Facebook', domain: 'facebook.com', match: 'facebook.' },
|
||||
{ name: 'GitHub', domain: 'github.com', match: 'github.' },
|
||||
{ name: 'Google', domain: 'google.com', match: 'google.' },
|
||||
{ name: 'Hacker News', domain: 'news.ycombinator.com', match: 'news.ycombinator.com' },
|
||||
{ name: 'Instagram', domain: 'instagram.com', match: ['instagram.', 'ig.com'] },
|
||||
{ name: 'LinkedIn', domain: 'linkedin.com', match: 'linkedin.' },
|
||||
{ name: 'Pinterest', domain: 'pinterest.com', match: 'pinterest.' },
|
||||
{ name: 'Reddit', domain: 'reddit.com', match: 'reddit.' },
|
||||
{ name: 'Snapchat', domain: 'snapchat.com', match: 'snapchat.' },
|
||||
{ name: 'Twitter', domain: 'twitter.com', match: ['twitter.', 't.co', 'x.com'] },
|
||||
];
|
||||
|
||||
export const MAP_FILE = '/datamaps.world.json';
|
||||
|
||||
export const ISO_COUNTRIES = {
|
||||
ABW: 'AW',
|
||||
AFG: 'AF',
|
||||
ALA: 'AX',
|
||||
ALB: 'AL',
|
||||
DZA: 'DZ',
|
||||
ASM: 'AS',
|
||||
AND: 'AD',
|
||||
AGO: 'AO',
|
||||
AIA: 'AI',
|
||||
ATA: 'AQ',
|
||||
ATG: 'AG',
|
||||
ALA: 'AX',
|
||||
ALB: 'AL',
|
||||
AND: 'AD',
|
||||
ANT: 'AN',
|
||||
ARE: 'AE',
|
||||
ARG: 'AR',
|
||||
ARM: 'AM',
|
||||
ABW: 'AW',
|
||||
ASM: 'AS',
|
||||
ATF: 'TF',
|
||||
ATG: 'AG',
|
||||
AUS: 'AU',
|
||||
AUT: 'AT',
|
||||
AZE: 'AZ',
|
||||
BHS: 'BS',
|
||||
BHR: 'BH',
|
||||
BGD: 'BD',
|
||||
BRB: 'BB',
|
||||
BLR: 'BY',
|
||||
BEL: 'BE',
|
||||
BLZ: 'BZ',
|
||||
BEN: 'BJ',
|
||||
BMU: 'BM',
|
||||
BTN: 'BT',
|
||||
BOL: 'BO',
|
||||
BIH: 'BA',
|
||||
BWA: 'BW',
|
||||
BVT: 'BV',
|
||||
BRA: 'BR',
|
||||
VGB: 'VG',
|
||||
IOT: 'IO',
|
||||
BRN: 'BN',
|
||||
BGR: 'BG',
|
||||
BFA: 'BF',
|
||||
BDI: 'BI',
|
||||
KHM: 'KH',
|
||||
CMR: 'CM',
|
||||
CAN: 'CA',
|
||||
CPV: 'CV',
|
||||
CYM: 'KY',
|
||||
BEL: 'BE',
|
||||
BEN: 'BJ',
|
||||
BFA: 'BF',
|
||||
BGD: 'BD',
|
||||
BGR: 'BG',
|
||||
BHR: 'BH',
|
||||
BHS: 'BS',
|
||||
BIH: 'BA',
|
||||
BLR: 'BY',
|
||||
BLZ: 'BZ',
|
||||
BLM: 'BL',
|
||||
BMU: 'BM',
|
||||
BOL: 'BO',
|
||||
BRA: 'BR',
|
||||
BRB: 'BB',
|
||||
BRN: 'BN',
|
||||
BTN: 'BT',
|
||||
BVT: 'BV',
|
||||
BWA: 'BW',
|
||||
CAF: 'CF',
|
||||
TCD: 'TD',
|
||||
CAN: 'CA',
|
||||
CCK: 'CC',
|
||||
CHE: 'CH',
|
||||
CHL: 'CL',
|
||||
CHN: 'CN',
|
||||
HKG: 'HK',
|
||||
MAC: 'MO',
|
||||
CXR: 'CX',
|
||||
CCK: 'CC',
|
||||
CIV: 'CI',
|
||||
CMR: 'CM',
|
||||
COD: 'CD',
|
||||
COG: 'CG',
|
||||
COK: 'CK',
|
||||
COL: 'CO',
|
||||
COM: 'KM',
|
||||
COG: 'CG',
|
||||
COD: 'CD',
|
||||
COK: 'CK',
|
||||
CPV: 'CV',
|
||||
CRI: 'CR',
|
||||
CIV: 'CI',
|
||||
HRV: 'HR',
|
||||
CUB: 'CU',
|
||||
CXR: 'CX',
|
||||
CYM: 'KY',
|
||||
CYP: 'CY',
|
||||
CZE: 'CZ',
|
||||
DNK: 'DK',
|
||||
DEU: 'DE',
|
||||
DJI: 'DJ',
|
||||
DMA: 'DM',
|
||||
DNK: 'DK',
|
||||
DOM: 'DO',
|
||||
DZA: 'DZ',
|
||||
ECU: 'EC',
|
||||
EGY: 'EG',
|
||||
SLV: 'SV',
|
||||
GNQ: 'GQ',
|
||||
ERI: 'ER',
|
||||
ESH: 'EH',
|
||||
ESP: 'ES',
|
||||
EST: 'EE',
|
||||
ETH: 'ET',
|
||||
FLK: 'FK',
|
||||
FRO: 'FO',
|
||||
FJI: 'FJ',
|
||||
FIN: 'FI',
|
||||
FJI: 'FJ',
|
||||
FLK: 'FK',
|
||||
FRA: 'FR',
|
||||
GUF: 'GF',
|
||||
PYF: 'PF',
|
||||
ATF: 'TF',
|
||||
FRO: 'FO',
|
||||
FSM: 'FM',
|
||||
GAB: 'GA',
|
||||
GMB: 'GM',
|
||||
GBR: 'GB',
|
||||
GEO: 'GE',
|
||||
DEU: 'DE',
|
||||
GGY: 'GG',
|
||||
GHA: 'GH',
|
||||
GIB: 'GI',
|
||||
GRC: 'GR',
|
||||
GRL: 'GL',
|
||||
GRD: 'GD',
|
||||
GLP: 'GP',
|
||||
GUM: 'GU',
|
||||
GTM: 'GT',
|
||||
GGY: 'GG',
|
||||
GIN: 'GN',
|
||||
GLP: 'GP',
|
||||
GMB: 'GM',
|
||||
GNB: 'GW',
|
||||
GNQ: 'GQ',
|
||||
GRC: 'GR',
|
||||
GRD: 'GD',
|
||||
GRL: 'GL',
|
||||
GTM: 'GT',
|
||||
GUF: 'GF',
|
||||
GUM: 'GU',
|
||||
GUY: 'GY',
|
||||
HTI: 'HT',
|
||||
HKG: 'HK',
|
||||
HMD: 'HM',
|
||||
VAT: 'VA',
|
||||
HND: 'HN',
|
||||
HRV: 'HR',
|
||||
HTI: 'HT',
|
||||
HUN: 'HU',
|
||||
ISL: 'IS',
|
||||
IND: 'IN',
|
||||
IDN: 'ID',
|
||||
IMN: 'IM',
|
||||
IND: 'IN',
|
||||
IOT: 'IO',
|
||||
IRL: 'IE',
|
||||
IRN: 'IR',
|
||||
IRQ: 'IQ',
|
||||
IRL: 'IE',
|
||||
IMN: 'IM',
|
||||
ISL: 'IS',
|
||||
ISR: 'IL',
|
||||
ITA: 'IT',
|
||||
JAM: 'JM',
|
||||
JPN: 'JP',
|
||||
JEY: 'JE',
|
||||
JOR: 'JO',
|
||||
JPN: 'JP',
|
||||
KAZ: 'KZ',
|
||||
KEN: 'KE',
|
||||
KGZ: 'KG',
|
||||
KHM: 'KH',
|
||||
KIR: 'KI',
|
||||
PRK: 'KP',
|
||||
KNA: 'KN',
|
||||
KOR: 'KR',
|
||||
KWT: 'KW',
|
||||
KGZ: 'KG',
|
||||
LAO: 'LA',
|
||||
LVA: 'LV',
|
||||
LBN: 'LB',
|
||||
LSO: 'LS',
|
||||
LBR: 'LR',
|
||||
LBY: 'LY',
|
||||
LCA: 'LC',
|
||||
LIE: 'LI',
|
||||
LKA: 'LK',
|
||||
LSO: 'LS',
|
||||
LTU: 'LT',
|
||||
LUX: 'LU',
|
||||
MKD: 'MK',
|
||||
LVA: 'LV',
|
||||
MAF: 'MF',
|
||||
MAR: 'MA',
|
||||
MCO: 'MC',
|
||||
MDA: 'MD',
|
||||
MDG: 'MG',
|
||||
MWI: 'MW',
|
||||
MYS: 'MY',
|
||||
MDV: 'MV',
|
||||
MEX: 'MX',
|
||||
MHL: 'MH',
|
||||
MKD: 'MK',
|
||||
MLI: 'ML',
|
||||
MLT: 'MT',
|
||||
MHL: 'MH',
|
||||
MTQ: 'MQ',
|
||||
MRT: 'MR',
|
||||
MUS: 'MU',
|
||||
MYT: 'YT',
|
||||
MEX: 'MX',
|
||||
FSM: 'FM',
|
||||
MDA: 'MD',
|
||||
MCO: 'MC',
|
||||
MNG: 'MN',
|
||||
MNE: 'ME',
|
||||
MSR: 'MS',
|
||||
MAR: 'MA',
|
||||
MOZ: 'MZ',
|
||||
MMR: 'MM',
|
||||
NAM: 'NA',
|
||||
NRU: 'NR',
|
||||
NPL: 'NP',
|
||||
NLD: 'NL',
|
||||
ANT: 'AN',
|
||||
NCL: 'NC',
|
||||
NZL: 'NZ',
|
||||
NIC: 'NI',
|
||||
NER: 'NE',
|
||||
NGA: 'NG',
|
||||
NIU: 'NU',
|
||||
NFK: 'NF',
|
||||
MNE: 'ME',
|
||||
MNG: 'MN',
|
||||
MNP: 'MP',
|
||||
MOZ: 'MZ',
|
||||
MRT: 'MR',
|
||||
MSR: 'MS',
|
||||
MTQ: 'MQ',
|
||||
MUS: 'MU',
|
||||
MWI: 'MW',
|
||||
MYS: 'MY',
|
||||
MYT: 'YT',
|
||||
NAM: 'NA',
|
||||
NCL: 'NC',
|
||||
NER: 'NE',
|
||||
NFK: 'NF',
|
||||
NGA: 'NG',
|
||||
NIC: 'NI',
|
||||
NIU: 'NU',
|
||||
NLD: 'NL',
|
||||
NOR: 'NO',
|
||||
NPL: 'NP',
|
||||
NRU: 'NR',
|
||||
NZL: 'NZ',
|
||||
OMN: 'OM',
|
||||
PAK: 'PK',
|
||||
PLW: 'PW',
|
||||
PSE: 'PS',
|
||||
PAN: 'PA',
|
||||
PNG: 'PG',
|
||||
PRY: 'PY',
|
||||
PCN: 'PN',
|
||||
PER: 'PE',
|
||||
PHL: 'PH',
|
||||
PCN: 'PN',
|
||||
PLW: 'PW',
|
||||
PNG: 'PG',
|
||||
POL: 'PL',
|
||||
PRT: 'PT',
|
||||
PRI: 'PR',
|
||||
PRK: 'KP',
|
||||
PRT: 'PT',
|
||||
PRY: 'PY',
|
||||
PSE: 'PS',
|
||||
PYF: 'PF',
|
||||
QAT: 'QA',
|
||||
REU: 'RE',
|
||||
ROU: 'RO',
|
||||
RUS: 'RU',
|
||||
RWA: 'RW',
|
||||
BLM: 'BL',
|
||||
SHN: 'SH',
|
||||
KNA: 'KN',
|
||||
LCA: 'LC',
|
||||
MAF: 'MF',
|
||||
SPM: 'PM',
|
||||
VCT: 'VC',
|
||||
WSM: 'WS',
|
||||
SMR: 'SM',
|
||||
STP: 'ST',
|
||||
SAU: 'SA',
|
||||
SDN: 'SD',
|
||||
SEN: 'SN',
|
||||
SRB: 'RS',
|
||||
SYC: 'SC',
|
||||
SLE: 'SL',
|
||||
SGP: 'SG',
|
||||
SGS: 'GS',
|
||||
SHN: 'SH',
|
||||
SJM: 'SJ',
|
||||
SLB: 'SB',
|
||||
SLE: 'SL',
|
||||
SLV: 'SV',
|
||||
SMR: 'SM',
|
||||
SOM: 'SO',
|
||||
SPM: 'PM',
|
||||
SRB: 'RS',
|
||||
SUR: 'SR',
|
||||
STP: 'ST',
|
||||
SVK: 'SK',
|
||||
SVN: 'SI',
|
||||
SLB: 'SB',
|
||||
SOM: 'SO',
|
||||
ZAF: 'ZA',
|
||||
SGS: 'GS',
|
||||
SSD: 'SS',
|
||||
ESP: 'ES',
|
||||
LKA: 'LK',
|
||||
SDN: 'SD',
|
||||
SUR: 'SR',
|
||||
SJM: 'SJ',
|
||||
SWZ: 'SZ',
|
||||
SWE: 'SE',
|
||||
CHE: 'CH',
|
||||
SWZ: 'SZ',
|
||||
SYC: 'SC',
|
||||
SYR: 'SY',
|
||||
TWN: 'TW',
|
||||
TJK: 'TJ',
|
||||
TZA: 'TZ',
|
||||
THA: 'TH',
|
||||
TLS: 'TL',
|
||||
TCA: 'TC',
|
||||
TCD: 'TD',
|
||||
TGO: 'TG',
|
||||
THA: 'TH',
|
||||
TJK: 'TJ',
|
||||
TKL: 'TK',
|
||||
TKM: 'TM',
|
||||
TLS: 'TL',
|
||||
TON: 'TO',
|
||||
TTO: 'TT',
|
||||
TUN: 'TN',
|
||||
TUR: 'TR',
|
||||
TKM: 'TM',
|
||||
TCA: 'TC',
|
||||
TUV: 'TV',
|
||||
TWN: 'TW',
|
||||
TZA: 'TZ',
|
||||
UGA: 'UG',
|
||||
UKR: 'UA',
|
||||
ARE: 'AE',
|
||||
GBR: 'GB',
|
||||
USA: 'US',
|
||||
UMI: 'UM',
|
||||
URY: 'UY',
|
||||
USA: 'US',
|
||||
UZB: 'UZ',
|
||||
VUT: 'VU',
|
||||
VAT: 'VA',
|
||||
VCT: 'VC',
|
||||
VEN: 'VE',
|
||||
VNM: 'VN',
|
||||
VGB: 'VG',
|
||||
VIR: 'VI',
|
||||
VNM: 'VN',
|
||||
VUT: 'VU',
|
||||
WLF: 'WF',
|
||||
ESH: 'EH',
|
||||
WSM: 'WS',
|
||||
XKX: 'XK',
|
||||
YEM: 'YE',
|
||||
ZAF: 'ZA',
|
||||
ZMB: 'ZM',
|
||||
ZWE: 'ZW',
|
||||
XKX: 'XK',
|
||||
};
|
||||
|
|
|
|||
|
|
@ -104,9 +104,18 @@ const DATE_FUNCTIONS = {
|
|||
},
|
||||
};
|
||||
|
||||
const TIMEZONE_MAPPINGS: Record<string, string> = {
|
||||
'Asia/Calcutta': 'Asia/Kolkata',
|
||||
};
|
||||
|
||||
export function normalizeTimezone(timezone: string): string {
|
||||
return TIMEZONE_MAPPINGS[timezone] || timezone;
|
||||
}
|
||||
|
||||
export function isValidTimezone(timezone: string) {
|
||||
try {
|
||||
Intl.DateTimeFormat(undefined, { timeZone: timezone });
|
||||
const normalizedTimezone = normalizeTimezone(timezone);
|
||||
Intl.DateTimeFormat(undefined, { timeZone: normalizedTimezone });
|
||||
return true;
|
||||
} catch (error) {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,27 @@ import { safeDecodeURIComponent } from '@/lib/url';
|
|||
|
||||
const MAXMIND = 'maxmind';
|
||||
|
||||
const PROVIDER_HEADERS = [
|
||||
// Cloudflare headers
|
||||
{
|
||||
countryHeader: 'cf-ipcountry',
|
||||
regionHeader: 'cf-region-code',
|
||||
cityHeader: 'cf-ipcity',
|
||||
},
|
||||
// Vercel headers
|
||||
{
|
||||
countryHeader: 'x-vercel-ip-country',
|
||||
regionHeader: 'x-vercel-ip-country-region',
|
||||
cityHeader: 'x-vercel-ip-city',
|
||||
},
|
||||
// CloudFront headers
|
||||
{
|
||||
countryHeader: 'cloudfront-viewer-country',
|
||||
regionHeader: 'cloudfront-viewer-country-region',
|
||||
cityHeader: 'cloudfront-viewer-city',
|
||||
},
|
||||
];
|
||||
|
||||
export function getIpAddress(headers: Headers) {
|
||||
const customHeader = process.env.CLIENT_IP_HEADER;
|
||||
|
||||
|
|
@ -87,6 +108,14 @@ function decodeHeader(s: string | undefined | null): string | undefined | null {
|
|||
return Buffer.from(s, 'latin1').toString('utf-8');
|
||||
}
|
||||
|
||||
function removePortFromIP(ip: string = "") {
|
||||
const split = ip.split(":");
|
||||
|
||||
// Assuming ip is a valid IPv4/IPv6 address, 3 colons is the minumum for IPv6
|
||||
const ipv4 = split.length - 1 < 3;
|
||||
return ipv4 ? split[0] : ip;
|
||||
}
|
||||
|
||||
export async function getLocation(ip: string = '', headers: Headers, hasPayloadIP: boolean) {
|
||||
// Ignore local ips
|
||||
if (await isLocalhost(ip)) {
|
||||
|
|
@ -94,30 +123,19 @@ export async function getLocation(ip: string = '', headers: Headers, hasPayloadI
|
|||
}
|
||||
|
||||
if (!hasPayloadIP && !process.env.SKIP_LOCATION_HEADERS) {
|
||||
// Cloudflare headers
|
||||
if (headers.get('cf-ipcountry')) {
|
||||
const country = decodeHeader(headers.get('cf-ipcountry'));
|
||||
const region = decodeHeader(headers.get('cf-region-code'));
|
||||
const city = decodeHeader(headers.get('cf-ipcity'));
|
||||
for (const provider of PROVIDER_HEADERS) {
|
||||
const countryHeader = headers.get(provider.countryHeader);
|
||||
if (countryHeader) {
|
||||
const country = decodeHeader(countryHeader);
|
||||
const region = decodeHeader(headers.get(provider.regionHeader));
|
||||
const city = decodeHeader(headers.get(provider.cityHeader));
|
||||
|
||||
return {
|
||||
country,
|
||||
region: getRegionCode(country, region),
|
||||
city,
|
||||
};
|
||||
}
|
||||
|
||||
// Vercel headers
|
||||
if (headers.get('x-vercel-ip-country')) {
|
||||
const country = decodeHeader(headers.get('x-vercel-ip-country'));
|
||||
const region = decodeHeader(headers.get('x-vercel-ip-country-region'));
|
||||
const city = decodeHeader(headers.get('x-vercel-ip-city'));
|
||||
|
||||
return {
|
||||
country,
|
||||
region: getRegionCode(country, region),
|
||||
city,
|
||||
};
|
||||
return {
|
||||
country,
|
||||
region: getRegionCode(country, region),
|
||||
city,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -131,7 +149,7 @@ export async function getLocation(ip: string = '', headers: Headers, hasPayloadI
|
|||
}
|
||||
|
||||
// When the client IP is extracted from headers, sometimes the value includes a port
|
||||
const cleanIp = ip?.split(':')[0];
|
||||
const cleanIp = removePortFromIP(ip);
|
||||
const result = global[MAXMIND].get(cleanIp);
|
||||
|
||||
if (result) {
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import {
|
|||
ca,
|
||||
hu,
|
||||
vi,
|
||||
uz,
|
||||
} from 'date-fns/locale';
|
||||
|
||||
export const languages = {
|
||||
|
|
@ -95,6 +96,7 @@ export const languages = {
|
|||
'tr-TR': { label: 'Türkçe', dateLocale: tr },
|
||||
'uk-UA': { label: 'українська', dateLocale: uk },
|
||||
'ur-PK': { label: 'Urdu (Pakistan)', dateLocale: uk, dir: 'rtl' },
|
||||
'uz-UZ': { label: 'O‘zbekcha', dateLocale: uz },
|
||||
'vi-VN': { label: 'Tiếng Việt', dateLocale: vi },
|
||||
'zh-CN': { label: '中文', dateLocale: zhCN },
|
||||
'zh-TW': { label: '中文(繁體)', dateLocale: zhTW },
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { z } from 'zod';
|
||||
import { isValidTimezone } from '@/lib/date';
|
||||
import { isValidTimezone, normalizeTimezone } from '@/lib/date';
|
||||
import { UNIT_TYPES } from './constants';
|
||||
|
||||
export const filterParams = {
|
||||
|
|
@ -28,9 +28,9 @@ export const pagingParams = {
|
|||
search: z.string().optional(),
|
||||
};
|
||||
|
||||
export const timezoneParam = z.string().refine(value => isValidTimezone(value), {
|
||||
export const timezoneParam = z.string().refine((value: string) => isValidTimezone(value), {
|
||||
message: 'Invalid timezone',
|
||||
});
|
||||
}).transform((value: string) => normalizeTimezone(value));
|
||||
|
||||
export const unitParam = z.string().refine(value => UNIT_TYPES.includes(value), {
|
||||
message: 'Invalid unit',
|
||||
|
|
|
|||
|
|
@ -38,6 +38,18 @@
|
|||
|
||||
/* Helper functions */
|
||||
|
||||
const normalize = raw => {
|
||||
if (!raw) return raw;
|
||||
try {
|
||||
const u = new URL(raw, location.href);
|
||||
if (excludeSearch) u.search = '';
|
||||
if (excludeHash) u.hash = '';
|
||||
return u.toString();
|
||||
} catch (e) {
|
||||
return raw;
|
||||
}
|
||||
};
|
||||
|
||||
const getPayload = () => ({
|
||||
website,
|
||||
screen,
|
||||
|
|
@ -61,11 +73,7 @@
|
|||
if (!url) return;
|
||||
|
||||
currentRef = currentUrl;
|
||||
currentUrl = new URL(url, location.href);
|
||||
|
||||
if (excludeSearch) currentUrl.search = '';
|
||||
if (excludeHash) currentUrl.hash = '';
|
||||
currentUrl = currentUrl.toString();
|
||||
currentUrl = normalize(new URL(url, location.href).toString());
|
||||
|
||||
if (currentUrl !== currentRef) {
|
||||
setTimeout(track, delayDuration);
|
||||
|
|
@ -210,8 +218,9 @@
|
|||
};
|
||||
}
|
||||
|
||||
let currentUrl = href;
|
||||
let currentRef = referrer.startsWith(origin) ? '' : referrer;
|
||||
let currentUrl = normalize(href);
|
||||
let currentRef = normalize(referrer.startsWith(origin) ? '' : referrer);
|
||||
|
||||
let initialized = false;
|
||||
let disabled = false;
|
||||
let cache;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue