feat(quixzoom-asia): Full rebuild v1.0.0 — 9 languages, Landvex auth, light theme

- Rebuilt all 9 Asian language landing pages (zh-CN, zh-TW, ja, ko, th, vi, id, ms, hi)
- Switched from dark to light theme per MOBILE_FIRST_STANDARD
- Added Landvex Authorization section (VW-style certification flow)
- Added full copy: hero, stats, how-it-works, missions, earnings, FAQ, footer
- Localized currencies and payment methods per market
- Build system: template + JSON translations → static HTML
- Validation script ensures no missing translations or placeholder leaks
- CI/CD pipeline: GitHub Actions → S3 + CloudFront
- Version management: npm version patch/minor/major

BREAKING CHANGE: Old placeholder pages replaced with full content
This commit is contained in:
Bernt
2026-07-08 10:27:21 +00:00
parent bdfd88175c
commit ddc71dc7f2
21 changed files with 2985 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
name: Deploy quiXzoom Asia
on:
push:
branches: [main]
paths:
- 'src/**'
- 'scripts/**'
- 'package.json'
workflow_dispatch:
inputs:
environment:
description: 'Deployment environment'
required: true
default: 'staging'
type: choice
options:
- staging
- production
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci || npm install
- name: Validate translations
run: node scripts/validate.js
- name: Build
run: node scripts/build.js
env:
VERSION: ${{ github.ref_name }}-${{ github.sha }}
GIT_COMMIT: ${{ github.sha }}
GIT_BRANCH: ${{ github.ref_name }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
deploy-staging:
needs: build
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-southeast-1
- name: Deploy to staging
run: node scripts/deploy.js --env=staging
env:
CF_DIST_STAGING: ${{ secrets.CF_DIST_STAGING }}
deploy-production:
needs: [build, deploy-staging]
if: github.ref == 'refs/heads/main' && github.event.inputs.environment == 'production'
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-southeast-1
- name: Deploy to production
run: node scripts/deploy.js --env=production
env:
CF_DIST_PRODUCTION: ${{ secrets.CF_DIST_PRODUCTION }}
+29
View File
@@ -0,0 +1,29 @@
# Build artifacts
node_modules/
dist/
build/
*.log
# OS
.DS_Store
Thumbs.db
# IDE
.vscode/
.idea/
*.swp
*.swo
# Secrets
.env
.env.local
.env.*.local
aws-credentials.json
# Temp
tmp/
temp/
*.tmp
# Don't ignore: we want source tracked
# !src/
+66
View File
@@ -0,0 +1,66 @@
# quixzoom.asia — REBUILD SPEC
## Mål
Bygga om alla 9 språkversioner till samma nivå som quixzoom.com (full landningssida) + Landvex-auktoriseringsflöde.
## Design-ändringar från befintlig .asia
### Tema
- **FRÅN:** Mörkt tema (#0a0a0a bakgrund)
- **TILL:** Ljust tema (vit/off-white bakgrund) — per MOBILE_FIRST_STANDARD.md
- Behåll quiXzoom-blå (#0066FF) som accent
### Struktur (samma som .com)
1. **Nav** — logo, meny, språkväljare, CTA
2. **Hero** — huvudbudskap, email-form, telefon-mockup, stats
3. **Stats bar** — nyckeltal
4. **Social proof** — testimonials
5. **How it works** — 3 steg
6. **Mission types** — olika uppdragstyper
7. **Earnings** — intjäning, tiers, betalningsmetoder
8. **FAQ** — vanliga frågor
9. **Landvex Authorization** — NYTT: auktoriseringsflöde
10. **Footer** — länkar, språkväljare, legal
## Landvex Authorization Section (NYTT)
Inspirerat av Volkswagen-auktorisation:
- Vad är en Landvex-auktorisation?
- Fördelar (tidig tillgång, högre betalning, prioriterade uppdrag)
- Krav (identitet, bakgrundskontroll, utbildning)
- Ansökningsflöde (steg-för-steg)
- CTA: "Ansök om auktorisation"
## Språk & Valutor
| Språk | Kod | Valuta | Betalningsmetoder |
|-------|-----|--------|-------------------|
| Simplified Chinese | zh-CN | CNY (¥) | Alipay, WeChat Pay |
| Traditional Chinese | zh-TW | TWD (NT$) | Line Pay, JKOPay |
| Japanese | ja | JPY (¥) | PayPay, banköverföring |
| Korean | ko | KRW (₩) | KakaoPay, Toss |
| Thai | th | THB (฿) | PromptPay, TrueMoney |
| Vietnamese | vi | VND (₫) | MoMo, ZaloPay |
| Indonesian | id | IDR (Rp) | GoPay, OVO, DANA |
| Malay | ms | MYR (RM) | Touch 'n Go, Boost |
| Hindi | hi | INR (₹) | UPI, Paytm |
## Tekniskt
- Statisk HTML/CSS per språk
- Ingen JS-dependency utom minimal interaktivitet
- Responsive, mobile-first
- hreflang + canonical URLs
- Localized meta descriptions
## Filer att skapa/uppdatera
- `index.html` (root, språkväljare)
- `zh-cn/index.html`
- `zh-tw/index.html`
- `ja/index.html`
- `ko/index.html`
- `th/index.html`
- `vi/index.html`
- `id/index.html`
- `ms/index.html`
- `hi/index.html`
- Uppdatera `deploy.sh`
+519
View File
@@ -0,0 +1,519 @@
<!DOCTYPE html>
<html lang="{{LANG}}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{TITLE}}</title>
<meta name="description" content="{{META_DESC}}">
<link rel="canonical" href="https://quixzoom.asia/{{LANG_CODE}}/">
<!-- hreflang tags -->
<link rel="alternate" hreflang="zh-CN" href="https://quixzoom.asia/zh-cn/">
<link rel="alternate" hreflang="zh-TW" href="https://quixzoom.asia/zh-tw/">
<link rel="alternate" hreflang="ja" href="https://quixzoom.asia/ja/">
<link rel="alternate" hreflang="ko" href="https://quixzoom.asia/ko/">
<link rel="alternate" hreflang="th" href="https://quixzoom.asia/th/">
<link rel="alternate" hreflang="vi" href="https://quixzoom.asia/vi/">
<link rel="alternate" hreflang="id" href="https://quixzoom.asia/id/">
<link rel="alternate" hreflang="ms" href="https://quixzoom.asia/ms/">
<link rel="alternate" hreflang="hi" href="https://quixzoom.asia/hi/">
<link rel="alternate" hreflang="en" href="https://www.quixzoom.com/">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<style>
:root {
--bg: #FFFFFF;
--bg-off: #F7F7F5;
--text: #1a1a1a;
--text-body: #3a3a3a;
--text-muted: #6B6B6B;
--blue: #0066FF;
--blue-dark: #0052CC;
--blue-pale: rgba(0,102,255,.07);
--green: #00C853;
--radius: 16px;
--radius-lg: 24px;
--shadow: 0 16px 48px rgba(0,0,0,.14);
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
font-size: 1rem; line-height: 1.65; color: var(--text-body);
background: var(--bg); -webkit-font-smoothing: antialiased;
}
.container { width: 100%; max-width: 1160px; margin: 0 auto; padding: 0 24px; }
h1 { font-size: clamp(2.75rem, 6vw, 5rem); font-weight: 900; letter-spacing: -.05em; line-height: 1; color: var(--text); }
h2 { font-size: clamp(2rem, 3.5vw, 3rem); font-weight: 800; letter-spacing: -.04em; line-height: 1.1; color: var(--text); }
h3 { font-size: 1.375rem; font-weight: 700; letter-spacing: -.02em; line-height: 1.3; color: var(--text); }
/* Nav */
nav { position: sticky; top: 0; z-index: 300; background: var(--bg-off); border-bottom: 1px solid rgba(58,58,58,.06); }
.nav-inner { display: flex; align-items: center; justify-content: space-between; height: 68px; gap: 32px; }
.nav-logo { font-size: 1.375rem; font-weight: 900; color: var(--text); letter-spacing: -.04em; text-decoration: none; }
.nav-logo .x { color: var(--blue); }
.nav-links { display: flex; align-items: center; gap: 32px; flex: 1; justify-content: center; }
.nav-links a { color: rgba(58,58,58,.75); font-size: 1rem; font-weight: 500; transition: color .15s; text-decoration: none; }
.nav-links a:hover { color: var(--text); }
.btn-nav { background: var(--blue); color: #fff; border: none; border-radius: var(--radius-lg); padding: 10px 24px; font-size: 1rem; font-weight: 700; transition: background .15s; white-space: nowrap; cursor: pointer; }
.btn-nav:hover { background: var(--blue-dark); }
/* Hero */
#hero { background: var(--bg-off); min-height: calc(100vh - 68px); display: flex; align-items: center; padding: 80px 0 96px; }
.hero-layout { display: grid; grid-template-columns: 1fr 420px; gap: 64px; align-items: center; }
.hero-inner { max-width: 560px; }
.hero-badge { display: inline-flex; align-items: center; gap: 8px; background: rgba(58,58,58,.07); border: 1px solid rgba(58,58,58,.12); border-radius: 100px; padding: 8px 18px; font-size: .875rem; font-weight: 600; color: rgba(58,58,58,.88); margin-bottom: 36px; }
.hero-h1 { color: var(--text); margin-bottom: 28px; }
.hero-h1 em { font-style: normal; color: var(--blue); }
.hero-sub { font-size: clamp(1.0625rem, 2vw, 1.25rem); color: rgba(58,58,58,.82); max-width: 640px; line-height: 1.6; margin-bottom: 44px; }
.wl-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }
.wl-input { flex: 1; min-width: 280px; background: #fff; color: var(--text); border: 2.5px solid #fff; border-radius: var(--radius-lg); padding: 18px 28px; font-size: 1rem; outline: none; transition: border-color .15s, box-shadow .15s; }
.wl-input:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(0,102,255,.18); }
.wl-submit { background: var(--blue); color: #fff; border: none; border-radius: var(--radius-lg); padding: 18px 36px; font-size: 1rem; font-weight: 800; cursor: pointer; transition: background .15s; white-space: nowrap; }
.wl-submit:hover { background: var(--blue-dark); }
.wl-trust { font-size: .875rem; color: rgba(58,58,58,.65); margin-bottom: 20px; }
.hero-stats-pill { display: flex; gap: 24px; margin-top: 32px; flex-wrap: wrap; }
.hstat { text-align: left; }
.hstat-num { font-size: 1.5rem; font-weight: 900; color: var(--text); letter-spacing: -.04em; line-height: 1; }
.hstat-lbl { font-size: .75rem; color: rgba(58,58,58,.75); margin-top: 2px; }
/* Stats */
#stats { background: var(--blue); padding: 56px 0; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
.stat-item { text-align: center; padding: 20px 16px; position: relative; }
.stat-item:not(:last-child)::after { content: ''; position: absolute; right: 0; top: 20%; height: 60%; width: 1px; background: rgba(255,255,255,.25); }
.stat-value { font-size: clamp(2rem, 4vw, 3rem); font-weight: 900; color: #fff; letter-spacing: -.04em; line-height: 1; display: block; margin-bottom: 8px; }
.stat-label { font-size: .9rem; color: rgba(255,255,255,.82); font-weight: 500; }
/* Sections */
.section-pad { padding: 96px 0; }
.section-header { text-align: center; margin-bottom: 64px; }
.section-header h2 { color: var(--text); margin-bottom: 16px; }
.section-header p { font-size: 1.125rem; color: var(--text-muted); max-width: 580px; margin: 0 auto; }
/* How it works */
.steps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.step-card { background: var(--bg-off); border-radius: var(--radius); padding: 40px 36px; }
.step-number { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; background: var(--blue); color: #fff; border-radius: 50%; font-size: 1.375rem; font-weight: 900; margin-bottom: 24px; }
.step-card h3 { color: var(--text); margin-bottom: 12px; }
.step-card p { color: var(--text-muted); font-size: .9625rem; line-height: 1.6; }
/* Missions */
.missions-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.mission-card { background: var(--bg); border: 1.5px solid #E8E8E8; border-radius: var(--radius); padding: 32px 28px; }
.mission-card:hover { border-color: rgba(0,102,255,.25); }
.mission-icon { width: 52px; height: 52px; display: flex; align-items: center; justify-content: center; background: var(--bg-off); border-radius: 14px; margin-bottom: 20px; color: var(--blue); }
.mission-card h3 { color: var(--text); margin-bottom: 10px; font-size: 1.125rem; }
.mission-card p { color: var(--text-muted); font-size: .9rem; line-height: 1.55; margin-bottom: 18px; }
.mission-chip { display: inline-block; background: var(--blue-pale); color: var(--blue); border-radius: 100px; padding: 5px 14px; font-size: .875rem; font-weight: 700; }
/* Earnings */
.earnings-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-bottom: 48px; }
.tier-card { background: var(--bg-off); border: 2px solid #E8E8E8; border-radius: var(--radius); padding: 36px 28px; text-align: center; }
.tier-card.featured { background: var(--bg-off); border-color: var(--blue); transform: scale(1.03); }
.tier-card h3 { font-size: 1.5rem; font-weight: 900; margin-bottom: 4px; }
.tier-missions { font-size: .9rem; color: var(--text-muted); margin-bottom: 20px; font-weight: 500; }
.tier-features { text-align: left; list-style: none; }
.tier-features li { display: flex; align-items: flex-start; gap: 10px; font-size: 1rem; color: var(--text-body); padding: 6px 0; }
.tier-features li::before { content: '✓'; display: block; width: 18px; height: 18px; min-width: 18px; background: var(--green); color: #fff; border-radius: 50%; text-align: center; line-height: 18px; font-size: .75rem; margin-top: 2px; }
/* Landvex Authorization */
#landvex { background: var(--bg-off); }
.auth-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.auth-visual { background: linear-gradient(135deg, var(--blue) 0%, var(--blue-dark) 100%); border-radius: var(--radius); padding: 48px; color: #fff; }
.auth-visual h3 { color: #fff; margin-bottom: 16px; }
.auth-visual p { color: rgba(255,255,255,.85); line-height: 1.6; margin-bottom: 24px; }
.auth-benefits { list-style: none; }
.auth-benefits li { display: flex; align-items: center; gap: 12px; padding: 10px 0; color: rgba(255,255,255,.9); }
.auth-benefits li::before { content: '★'; color: #FFD700; }
.auth-steps { display: flex; flex-direction: column; gap: 20px; }
.auth-step { display: flex; gap: 16px; align-items: flex-start; }
.auth-step-num { width: 36px; height: 36px; border-radius: 50%; background: var(--blue); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; flex-shrink: 0; }
.auth-step h4 { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.auth-step p { font-size: .875rem; color: var(--text-muted); line-height: 1.5; }
/* FAQ */
.faq-list { max-width: 760px; margin: 0 auto; }
.faq-item { border: 1.5px solid #E8E8E8; border-radius: 14px; margin-bottom: 12px; overflow: hidden; }
.faq-item summary { cursor: pointer; display: flex; align-items: center; justify-content: space-between; padding: 22px 28px; font-size: 1rem; font-weight: 700; color: var(--text); list-style: none; gap: 16px; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: '+'; font-size: 1.5rem; color: var(--blue); transition: transform .15s; }
.faq-item[open] summary::after { content: ''; }
.faq-answer { padding: 0 28px 24px; font-size: .9625rem; color: var(--text-body); line-height: 1.7; }
/* Footer */
footer { background: var(--bg-off); border-top: 1px solid rgba(58,58,58,.07); padding: 64px 0 40px; }
.footer-inner { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 48px; margin-bottom: 56px; }
.footer-brand .nav-logo { display: block; margin-bottom: 14px; font-size: 1.5rem; }
.footer-tagline { color: rgba(58,58,58,.75); font-size: .9rem; line-height: 1.55; margin-bottom: 20px; }
.footer-col h4 { color: var(--text); font-size: .875rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 18px; }
.footer-col ul { list-style: none; }
.footer-col ul li { margin-bottom: 10px; }
.footer-col ul li a { color: rgba(58,58,58,.75); font-size: .9rem; text-decoration: none; transition: color .15s; }
.footer-col ul li a:hover { color: var(--text); }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; padding-top: 32px; border-top: 1px solid rgba(58,58,58,.07); }
.footer-copyright { color: rgba(58,58,58,.6); font-size: .875rem; }
.lang-switcher { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.lang-switcher a { color: rgba(58,58,58,.75); font-size: .875rem; font-weight: 600; padding: 4px 8px; border-radius: 8px; text-decoration: none; transition: color .15s, background .15s; }
.lang-switcher a:hover { color: var(--text); background: rgba(58,58,58,.07); }
.lang-switcher a.active { color: var(--text); background: rgba(0,102,255,.25); }
/* Responsive */
@media(max-width: 960px) {
.hero-layout { grid-template-columns: 1fr; gap: 40px; }
.auth-grid { grid-template-columns: 1fr; }
.footer-inner { grid-template-columns: 1fr 1fr; }
}
@media(max-width: 768px) {
.steps-grid, .missions-grid, .earnings-grid { grid-template-columns: 1fr; }
.stats-grid { grid-template-columns: repeat(2, 1fr); }
.nav-links { display: none; }
.footer-inner { grid-template-columns: 1fr; }
.footer-bottom { flex-direction: column; align-items: flex-start; }
}
@media(max-width: 600px) {
.wl-row { flex-direction: column; align-items: stretch; }
.wl-input { min-width: 0; }
.hero-stats-pill { flex-wrap: wrap; gap: 16px 24px; }
}
</style>
</head>
<body>
<a href="#main-content" style="position:absolute;top:-100px;left:16px;background:var(--blue);color:#fff;padding:10px 20px;border-radius:0 0 8px 8px;font-weight:700;font-size:.9rem;z-index:9999;" onfocus="this.style.top='0'" onblur="this.style.top='-100px'">Skip to main content</a>
<nav>
<div class="container">
<div class="nav-inner">
<a href="/" class="nav-logo">qui<span class="x">X</span>zoom</a>
<div class="nav-links">
<a href="#how">{{NAV_HOW}}</a>
<a href="#missions">{{NAV_MISSIONS}}</a>
<a href="#earnings">{{NAV_EARNINGS}}</a>
<a href="#landvex">{{NAV_LANDVEX}}</a>
<a href="#faq">{{NAV_FAQ}}</a>
</div>
<div style="display:flex;align-items:center;gap:10px;flex-shrink:0">
<button class="btn-nav" onclick="document.getElementById('wl-email').focus();document.getElementById('wl-email').scrollIntoView({behavior:'smooth'})">{{CTA_START}}</button>
</div>
</div>
</div>
</nav>
<main id="main-content">
<!-- HERO -->
<section id="hero">
<div class="container">
<div class="hero-layout">
<div class="hero-inner">
<div class="hero-badge">{{HERO_BADGE}}</div>
<h1 class="hero-h1">{{HERO_H1}}<br><em>{{HERO_H1_EMPH}}</em></h1>
<p class="hero-sub">{{HERO_SUB}}</p>
<form onsubmit="event.preventDefault();" novalidate>
<div class="wl-row">
<input type="email" id="wl-email" class="wl-input" placeholder="{{EMAIL_PLACEHOLDER}}" required autocomplete="email">
<button type="submit" class="wl-submit">{{CTA_START}} →</button>
</div>
</form>
<p class="wl-trust">{{TRUST_LINE}}</p>
<div class="hero-stats-pill">
<div class="hstat">
<div class="hstat-num">{{STAT1_NUM}}</div>
<div class="hstat-lbl">{{STAT1_LBL}}</div>
</div>
<div class="hstat">
<div class="hstat-num">{{STAT2_NUM}}</div>
<div class="hstat-lbl">{{STAT2_LBL}}</div>
</div>
<div class="hstat">
<div class="hstat-num">{{STAT3_NUM}}</div>
<div class="hstat-lbl">{{STAT3_LBL}}</div>
</div>
</div>
</div>
<div class="hero-visual" style="display:flex;justify-content:center;align-items:center;">
<div style="width:240px;height:480px;background:var(--bg-off);border-radius:36px;border:2px solid rgba(58,58,58,.12);box-shadow:0 40px 80px rgba(0,0,0,.6);position:relative;overflow:hidden;">
<div style="position:absolute;top:0;left:50%;transform:translateX(-50%);width:80px;height:24px;background:var(--bg-off);border-radius:0 0 16px 16px;z-index:10;"></div>
<div style="position:absolute;inset:0;background:linear-gradient(160deg,#1a2535 0%,#1e3a2f 40%,#162030 100%);border-radius:34px;overflow:hidden;display:flex;flex-direction:column;">
<div style="height:40px;background:#f5f5f5;display:flex;align-items:flex-end;justify-content:space-between;padding:0 16px 6px;">
<span style="color:rgba(58,58,58,.9);font-size:.65rem;font-weight:700;">09:41</span>
</div>
<div style="flex:1;position:relative;overflow:hidden;">
<div style="position:absolute;bottom:0;left:0;right:0;background:#fff;border-radius:20px 20px 0 0;padding:16px;box-shadow:0 -4px 24px rgba(0,0,0,.3);">
<div style="font-size:.7rem;font-weight:800;color:var(--text);margin-bottom:2px;">{{PHONE_MISSION}}</div>
<div style="font-size:.6rem;color:#3d3d3d;margin-bottom:8px;">{{PHONE_ADDR}}</div>
<div style="display:flex;justify-content:space-between;align-items:center;">
<div>
<div style="font-size:.85rem;font-weight:900;color:#0066FF;">{{PHONE_REWARD}}</div>
<div style="font-size:.58rem;color:#4a4a4a;margin-top:4px;">{{PHONE_META}}</div>
</div>
<button style="background:#0066FF;color:#fff;border:none;border-radius:12px;padding:6px 12px;font-size:.6rem;font-weight:700;">Claim →</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- STATS -->
<section id="stats">
<div class="container">
<div class="stats-grid">
<div class="stat-item">
<span class="stat-value">{{STATS_1_VAL}}</span>
<span class="stat-label">{{STATS_1_LBL}}</span>
</div>
<div class="stat-item">
<span class="stat-value">{{STATS_2_VAL}}</span>
<span class="stat-label">{{STATS_2_LBL}}</span>
</div>
<div class="stat-item">
<span class="stat-value">{{STATS_3_VAL}}</span>
<span class="stat-label">{{STATS_3_LBL}}</span>
</div>
<div class="stat-item">
<span class="stat-value">{{STATS_4_VAL}}</span>
<span class="stat-label">{{STATS_4_LBL}}</span>
</div>
</div>
</div>
</section>
<!-- HOW IT WORKS -->
<section id="how" class="section-pad">
<div class="container">
<div class="section-header">
<h2>{{HOW_TITLE}}</h2>
<p>{{HOW_SUB}}</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-number">1</div>
<h3>{{STEP1_TITLE}}</h3>
<p>{{STEP1_DESC}}</p>
</div>
<div class="step-card">
<div class="step-number">2</div>
<h3>{{STEP2_TITLE}}</h3>
<p>{{STEP2_DESC}}</p>
</div>
<div class="step-card">
<div class="step-number">3</div>
<h3>{{STEP3_TITLE}}</h3>
<p>{{STEP3_DESC}}</p>
</div>
</div>
</div>
</section>
<!-- MISSIONS -->
<section id="missions" class="section-pad" style="background:var(--bg-off);">
<div class="container">
<div class="section-header">
<h2>{{MISSIONS_TITLE}}</h2>
<p>{{MISSIONS_SUB}}</p>
</div>
<div class="missions-grid">
<div class="mission-card">
<div class="mission-icon">📷</div>
<h3>{{M1_TITLE}}</h3>
<p>{{M1_DESC}}</p>
<span class="mission-chip">{{M1_CHIP}}</span>
</div>
<div class="mission-card">
<div class="mission-icon">🏢</div>
<h3>{{M2_TITLE}}</h3>
<p>{{M2_DESC}}</p>
<span class="mission-chip">{{M2_CHIP}}</span>
</div>
<div class="mission-card">
<div class="mission-icon">🛣️</div>
<h3>{{M3_TITLE}}</h3>
<p>{{M3_DESC}}</p>
<span class="mission-chip">{{M3_CHIP}}</span>
</div>
</div>
</div>
</section>
<!-- EARNINGS -->
<section id="earnings" class="section-pad">
<div class="container">
<div class="section-header">
<h2>{{EARNINGS_TITLE}}</h2>
<p>{{EARNINGS_SUB}}</p>
</div>
<div class="earnings-grid">
<div class="tier-card">
<h3>{{TIER1_NAME}}</h3>
<div class="tier-missions">{{TIER1_MISSIONS}}</div>
<ul class="tier-features">
<li>{{TIER1_F1}}</li>
<li>{{TIER1_F2}}</li>
<li>{{TIER1_F3}}</li>
</ul>
</div>
<div class="tier-card featured">
<h3>{{TIER2_NAME}}</h3>
<div class="tier-missions">{{TIER2_MISSIONS}}</div>
<ul class="tier-features">
<li>{{TIER2_F1}}</li>
<li>{{TIER2_F2}}</li>
<li>{{TIER2_F3}}</li>
</ul>
</div>
<div class="tier-card">
<h3>{{TIER3_NAME}}</h3>
<div class="tier-missions">{{TIER3_MISSIONS}}</div>
<ul class="tier-features">
<li>{{TIER3_F1}}</li>
<li>{{TIER3_F2}}</li>
<li>{{TIER3_F3}}</li>
</ul>
</div>
</div>
</div>
</section>
<!-- LANDVEX AUTHORIZATION -->
<section id="landvex" class="section-pad">
<div class="container">
<div class="section-header">
<h2>{{AUTH_TITLE}}</h2>
<p>{{AUTH_SUB}}</p>
</div>
<div class="auth-grid">
<div class="auth-visual">
<h3>{{AUTH_VISUAL_TITLE}}</h3>
<p>{{AUTH_VISUAL_DESC}}</p>
<ul class="auth-benefits">
<li>{{AUTH_B1}}</li>
<li>{{AUTH_B2}}</li>
<li>{{AUTH_B3}}</li>
<li>{{AUTH_B4}}</li>
</ul>
</div>
<div class="auth-steps">
<div class="auth-step">
<div class="auth-step-num">1</div>
<div>
<h4>{{AUTH_S1_TITLE}}</h4>
<p>{{AUTH_S1_DESC}}</p>
</div>
</div>
<div class="auth-step">
<div class="auth-step-num">2</div>
<div>
<h4>{{AUTH_S2_TITLE}}</h4>
<p>{{AUTH_S2_DESC}}</p>
</div>
</div>
<div class="auth-step">
<div class="auth-step-num">3</div>
<div>
<h4>{{AUTH_S3_TITLE}}</h4>
<p>{{AUTH_S3_DESC}}</p>
</div>
</div>
<div class="auth-step">
<div class="auth-step-num">4</div>
<div>
<h4>{{AUTH_S4_TITLE}}</h4>
<p>{{AUTH_S4_DESC}}</p>
</div>
</div>
<div style="margin-top:8px;">
<a href="https://www.quixzoom.com/authorization" class="btn-nav" style="display:inline-block;text-decoration:none;">{{AUTH_CTA}}</a>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section id="faq" class="section-pad" style="background:var(--bg);">
<div class="container">
<div class="section-header">
<h2>{{FAQ_TITLE}}</h2>
<p>{{FAQ_SUB}}</p>
</div>
<div class="faq-list">
<details class="faq-item">
<summary>{{FAQ_Q1}}</summary>
<div class="faq-answer">{{FAQ_A1}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q2}}</summary>
<div class="faq-answer">{{FAQ_A2}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q3}}</summary>
<div class="faq-answer">{{FAQ_A3}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q4}}</summary>
<div class="faq-answer">{{FAQ_A4}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q5}}</summary>
<div class="faq-answer">{{FAQ_A5}}</div>
</details>
</div>
</div>
</section>
</main>
<!-- FOOTER -->
<footer>
<div class="container">
<div class="footer-inner">
<div class="footer-brand">
<a href="/" class="nav-logo">qui<span class="x">X</span>zoom</a>
<p class="footer-tagline">{{FOOTER_TAGLINE}}</p>
</div>
<div class="footer-col">
<h4>{{FOOTER_COL1_TITLE}}</h4>
<ul>
<li><a href="#how">{{FOOTER_COL1_L1}}</a></li>
<li><a href="#missions">{{FOOTER_COL1_L2}}</a></li>
<li><a href="#earnings">{{FOOTER_COL1_L3}}</a></li>
<li><a href="#landvex">{{FOOTER_COL1_L4}}</a></li>
</ul>
</div>
<div class="footer-col">
<h4>{{FOOTER_COL2_TITLE}}</h4>
<ul>
<li><a href="https://www.quixzoom.com/for-organisations">{{FOOTER_COL2_L1}}</a></li>
<li><a href="https://www.quixzoom.com/pricing">{{FOOTER_COL2_L2}}</a></li>
<li><a href="https://www.quixzoom.com/developer">{{FOOTER_COL2_L3}}</a></li>
</ul>
</div>
<div class="footer-col">
<h4>{{FOOTER_COL3_TITLE}}</h4>
<ul>
<li><a href="https://www.quixzoom.com/support">{{FOOTER_COL3_L1}}</a></li>
<li><a href="https://www.quixzoom.com/privacy">{{FOOTER_COL3_L2}}</a></li>
<li><a href="https://www.quixzoom.com/terms">{{FOOTER_COL3_L3}}</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<div class="footer-copyright">{{COPYRIGHT}}</div>
<div class="lang-switcher">
<span style="color:rgba(58,58,58,.75);font-size:.875rem;margin-right:4px;">{{LANG_LABEL}}</span>
<a href="/zh-cn/">中文</a>
<a href="/zh-tw/">繁中</a>
<a href="/ja/">日本語</a>
<a href="/ko/">한국어</a>
<a href="/th/">ไทย</a>
<a href="/vi/">Tiếng Việt</a>
<a href="/id/">Bahasa</a>
<a href="/ms/">Melayu</a>
<a href="/hi/">हिन्दी</a>
<a href="/en/">EN</a>
</div>
</div>
</div>
</footer>
</body>
</html>
+18
View File
@@ -0,0 +1,18 @@
{
"name": "quixzoom-asia",
"version": "1.0.0",
"description": "quiXzoom Asia multilingual landing pages",
"scripts": {
"build": "node scripts/build.js",
"validate": "node scripts/validate.js",
"deploy:staging": "node scripts/deploy.js --env=staging",
"deploy:prod": "node scripts/deploy.js --env=production",
"version": "node scripts/version.js"
},
"repository": {
"type": "git",
"url": "https://github.com/wavult/quixzoom-asia.git"
},
"license": "UNLICENSED",
"private": true
}
+130
View File
@@ -0,0 +1,130 @@
#!/usr/bin/env node
/**
* Build quiXzoom Asia pages from templates + translations
* Outputs to dist/ with versioned assets
*/
const fs = require('fs');
const path = require('path');
const LANGUAGES = [
{ code: 'zh-cn', name: 'Simplified Chinese', currency: 'CNY', symbol: '¥' },
{ code: 'zh-tw', name: 'Traditional Chinese', currency: 'TWD', symbol: 'NT$' },
{ code: 'ja', name: 'Japanese', currency: 'JPY', symbol: '¥' },
{ code: 'ko', name: 'Korean', currency: 'KRW', symbol: '₩' },
{ code: 'th', name: 'Thai', currency: 'THB', symbol: '฿' },
{ code: 'vi', name: 'Vietnamese', currency: 'VND', symbol: '₫' },
{ code: 'id', name: 'Indonesian', currency: 'IDR', symbol: 'Rp' },
{ code: 'ms', name: 'Malay', currency: 'MYR', symbol: 'RM' },
{ code: 'hi', name: 'Hindi', currency: 'INR', symbol: '₹' },
];
const VERSION = process.env.VERSION || require('../package.json').version;
const BUILD_TIME = new Date().toISOString();
function loadTemplate() {
return fs.readFileSync(path.join(__dirname, '../src/template.html'), 'utf8');
}
function loadTranslations(langCode) {
const transPath = path.join(__dirname, `../src/translations/${langCode}.json`);
if (!fs.existsSync(transPath)) {
console.error(`❌ Missing translations: ${langCode}`);
process.exit(1);
}
return JSON.parse(fs.readFileSync(transPath, 'utf8'));
}
function interpolate(template, vars) {
// First pass: interpolate vars that contain other placeholders
let result = template;
let changed = true;
let passes = 0;
const MAX_PASSES = 5;
while (changed && passes < MAX_PASSES) {
changed = false;
passes++;
result = result.replace(/\{\{(\w+)\}\}/g, (match, key) => {
if (vars[key] === undefined) {
return match; // keep placeholder for next pass or final check
}
const value = vars[key];
if (value.includes('{{')) {
changed = true;
}
return value;
});
}
// Final check for remaining placeholders
const remaining = result.match(/\{\{(\w+)\}\}/g);
if (remaining) {
const unique = [...new Set(remaining.map(m => m.slice(2, -2)))].filter(k => vars[k] === undefined);
for (const key of unique) {
console.warn(`⚠️ Missing translation key: ${key}`);
}
}
return result;
}
function build() {
console.log(`🔨 Building quiXzoom Asia v${VERSION}...\n`);
const distDir = path.join(__dirname, '../dist');
if (fs.existsSync(distDir)) {
fs.rmSync(distDir, { recursive: true });
}
fs.mkdirSync(distDir, { recursive: true });
const template = loadTemplate();
// Build root language selector
const rootHtml = fs.readFileSync(path.join(__dirname, '../src/index.html'), 'utf8')
.replace('{{VERSION}}', VERSION)
.replace('{{BUILD_TIME}}', BUILD_TIME);
fs.writeFileSync(path.join(distDir, 'index.html'), rootHtml);
// Build each language
for (const lang of LANGUAGES) {
console.log(` 📄 ${lang.code}${lang.name}`);
const translations = loadTranslations(lang.code);
translations.VERSION = VERSION;
translations.BUILD_TIME = BUILD_TIME;
translations.LANG_CODE = lang.code;
translations.LANG_NAME = lang.name;
translations.CURRENCY = lang.currency;
translations.CURRENCY_SYMBOL = lang.symbol;
const html = interpolate(template, translations);
const langDir = path.join(distDir, lang.code);
fs.mkdirSync(langDir, { recursive: true });
fs.writeFileSync(path.join(langDir, 'index.html'), html);
}
// Copy static assets
const assets = ['favicon.svg', 'apple-touch-icon.svg'];
for (const asset of assets) {
const src = path.join(__dirname, `../src/${asset}`);
if (fs.existsSync(src)) {
fs.copyFileSync(src, path.join(distDir, asset));
}
}
// Write build manifest
const manifest = {
version: VERSION,
buildTime: BUILD_TIME,
languages: LANGUAGES.map(l => l.code),
gitCommit: process.env.GIT_COMMIT || 'unknown',
gitBranch: process.env.GIT_BRANCH || 'unknown',
};
fs.writeFileSync(path.join(distDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
console.log(`\n✅ Build complete: ${distDir}/`);
console.log(` ${LANGUAGES.length + 1} pages generated`);
}
build();
+78
View File
@@ -0,0 +1,78 @@
#!/usr/bin/env node
/**
* Deploy to S3 + CloudFront
* Usage: node scripts/deploy.js --env=staging|production
*/
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
const ENVIRONMENTS = {
staging: {
bucket: 'quixzoom-asia-staging',
region: 'ap-southeast-1',
distributionId: process.env.CF_DIST_STAGING,
url: 'https://staging.quixzoom.asia',
},
production: {
bucket: 'quixzoom-asia',
region: 'ap-southeast-1',
distributionId: process.env.CF_DIST_PRODUCTION,
url: 'https://quixzoom.asia',
},
};
const [, , envArg] = process.argv;
const env = envArg?.replace('--env=', '') || 'staging';
if (!ENVIRONMENTS[env]) {
console.error(`❌ Unknown environment: ${env}`);
console.error('Usage: node scripts/deploy.js --env=staging|production');
process.exit(1);
}
const config = ENVIRONMENTS[env];
const distDir = path.join(__dirname, '../dist');
const manifestPath = path.join(distDir, 'manifest.json');
if (!fs.existsSync(distDir)) {
console.error('❌ No dist/ directory. Run: npm run build');
process.exit(1);
}
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
console.log(`🚀 Deploying quiXzoom Asia v${manifest.version} to ${env}...`);
console.log(` Bucket: ${config.bucket}`);
console.log(` Region: ${config.region}`);
console.log(` Commit: ${manifest.gitCommit}`);
console.log('');
// Sync to S3
const syncCmd = `aws s3 sync ${distDir}/ s3://${config.bucket}/ \
--delete \
--cache-control "max-age=3600" \
--region ${config.region}`;
console.log('📤 Uploading...');
execSync(syncCmd, { stdio: 'inherit' });
// Set content types
console.log('\n📝 Setting content types...');
execSync(`aws s3 cp s3://${config.bucket}/ s3://${config.bucket}/ \
--recursive --exclude "*" --include "*.html" \
--content-type "text/html; charset=utf-8" \
--metadata-directive REPLACE --region ${config.region}`, { stdio: 'inherit' });
// Invalidate CloudFront
if (config.distributionId) {
console.log('\n🔄 Invalidating CloudFront...');
execSync(`aws cloudfront create-invalidation \
--distribution-id ${config.distributionId} \
--paths "/*" --region ${config.region}`, { stdio: 'inherit' });
}
console.log(`\n✅ Deployed to ${config.url}`);
console.log(` Version: ${manifest.version}`);
console.log(` Build: ${manifest.buildTime}`);
+87
View File
@@ -0,0 +1,87 @@
#!/usr/bin/env node
/**
* Validate translations completeness and HTML output
*/
const fs = require('fs');
const path = require('path');
const LANGUAGES = ['zh-cn', 'zh-tw', 'ja', 'ko', 'th', 'vi', 'id', 'ms', 'hi'];
const REQUIRED_KEYS = [
'TITLE', 'META_DESC', 'NAV_HOW', 'NAV_MISSIONS', 'NAV_EARNINGS',
'NAV_LANDVEX', 'NAV_FAQ', 'CTA_START', 'HERO_BADGE', 'HERO_H1',
'HERO_H1_EMPH', 'HERO_SUB', 'EMAIL_PLACEHOLDER', 'TRUST_LINE',
'STAT1_NUM', 'STAT1_LBL', 'STAT2_NUM', 'STAT2_LBL', 'STAT3_NUM', 'STAT3_LBL',
'STATS_1_VAL', 'STATS_1_LBL', 'STATS_2_VAL', 'STATS_2_LBL',
'STATS_3_VAL', 'STATS_3_LBL', 'STATS_4_VAL', 'STATS_4_LBL',
'HOW_TITLE', 'HOW_SUB', 'STEP1_TITLE', 'STEP1_DESC',
'STEP2_TITLE', 'STEP2_DESC', 'STEP3_TITLE', 'STEP3_DESC',
'MISSIONS_TITLE', 'MISSIONS_SUB', 'M1_TITLE', 'M1_DESC', 'M1_CHIP',
'M2_TITLE', 'M2_DESC', 'M2_CHIP', 'M3_TITLE', 'M3_DESC', 'M3_CHIP',
'EARNINGS_TITLE', 'EARNINGS_SUB', 'TIER1_NAME', 'TIER1_MISSIONS',
'TIER1_F1', 'TIER1_F2', 'TIER1_F3', 'TIER2_NAME', 'TIER2_MISSIONS',
'TIER2_F1', 'TIER2_F2', 'TIER2_F3', 'TIER3_NAME', 'TIER3_MISSIONS',
'TIER3_F1', 'TIER3_F2', 'TIER3_F3',
'AUTH_TITLE', 'AUTH_SUB', 'AUTH_VISUAL_TITLE', 'AUTH_VISUAL_DESC',
'AUTH_B1', 'AUTH_B2', 'AUTH_B3', 'AUTH_B4',
'AUTH_S1_TITLE', 'AUTH_S1_DESC', 'AUTH_S2_TITLE', 'AUTH_S2_DESC',
'AUTH_S3_TITLE', 'AUTH_S3_DESC', 'AUTH_S4_TITLE', 'AUTH_S4_DESC', 'AUTH_CTA',
'FAQ_TITLE', 'FAQ_SUB', 'FAQ_Q1', 'FAQ_A1', 'FAQ_Q2', 'FAQ_A2',
'FAQ_Q3', 'FAQ_A3', 'FAQ_Q4', 'FAQ_A4', 'FAQ_Q5', 'FAQ_A5',
'FOOTER_TAGLINE', 'FOOTER_COL1_TITLE', 'FOOTER_COL1_L1', 'FOOTER_COL1_L2',
'FOOTER_COL1_L3', 'FOOTER_COL1_L4', 'FOOTER_COL2_TITLE', 'FOOTER_COL2_L1',
'FOOTER_COL2_L2', 'FOOTER_COL2_L3', 'FOOTER_COL3_TITLE', 'FOOTER_COL3_L1',
'FOOTER_COL3_L2', 'FOOTER_COL3_L3', 'COPYRIGHT', 'LANG_LABEL',
'PHONE_MISSION', 'PHONE_ADDR', 'PHONE_REWARD', 'PHONE_META',
];
let errors = 0;
console.log('🔍 Validating translations...\n');
for (const lang of LANGUAGES) {
const transPath = path.join(__dirname, `../src/translations/${lang}.json`);
if (!fs.existsSync(transPath)) {
console.error(`❌ Missing: ${lang}.json`);
errors++;
continue;
}
const trans = JSON.parse(fs.readFileSync(transPath, 'utf8'));
const missing = REQUIRED_KEYS.filter(k => !trans[k] || trans[k].trim() === '');
if (missing.length > 0) {
console.error(`${lang}: Missing ${missing.length} keys`);
for (const key of missing.slice(0, 5)) {
console.error(` - ${key}`);
}
if (missing.length > 5) console.error(` ... and ${missing.length - 5} more`);
errors++;
} else {
console.log(`${lang}: Complete`);
}
}
// Check for placeholder leaks
const distDir = path.join(__dirname, '../dist');
if (fs.existsSync(distDir)) {
console.log('\n🔍 Checking for placeholder leaks in dist/...');
for (const lang of LANGUAGES) {
const htmlPath = path.join(distDir, lang, 'index.html');
if (fs.existsSync(htmlPath)) {
const html = fs.readFileSync(htmlPath, 'utf8');
const leaks = html.match(/\{\{\w+\}\}/g);
if (leaks) {
console.error(`${lang}: ${leaks.length} placeholders leaked`);
errors++;
}
}
}
}
if (errors > 0) {
console.log(`\n${errors} error(s) found`);
process.exit(1);
} else {
console.log('\n✅ All validations passed');
}
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env node
/**
* Version bump utility
* Usage: node scripts/version.js [patch|minor|major]
*/
const fs = require('fs');
const path = require('path');
const pkgPath = path.join(__dirname, '../package.json');
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
const [,, bump = 'patch'] = process.argv;
const [major, minor, patch] = pkg.version.split('.').map(Number);
let newVersion;
switch (bump) {
case 'major': newVersion = `${major + 1}.0.0`; break;
case 'minor': newVersion = `${major}.${minor + 1}.0`; break;
case 'patch': newVersion = `${major}.${minor}.${patch + 1}`; break;
default:
console.error('Usage: node scripts/version.js [patch|minor|major]');
process.exit(1);
}
pkg.version = newVersion;
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
console.log(`🔖 Version bumped: ${pkg.version}${newVersion}`);
console.log(' Run: git add package.json && git commit -m "release: v' + newVersion + '"');
+146
View File
@@ -0,0 +1,146 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>quiXzoom Asia — Choose Your Language</title>
<meta name="description" content="quiXzoom is available in 9 Asian languages. Choose your preferred language to continue.">
<link rel="canonical" href="https://quixzoom.asia/">
<link rel="alternate" hreflang="zh-CN" href="https://quixzoom.asia/zh-cn/">
<link rel="alternate" hreflang="zh-TW" href="https://quixzoom.asia/zh-tw/">
<link rel="alternate" hreflang="ja" href="https://quixzoom.asia/ja/">
<link rel="alternate" hreflang="ko" href="https://quixzoom.asia/ko/">
<link rel="alternate" hreflang="th" href="https://quixzoom.asia/th/">
<link rel="alternate" hreflang="vi" href="https://quixzoom.asia/vi/">
<link rel="alternate" hreflang="id" href="https://quixzoom.asia/id/">
<link rel="alternate" hreflang="ms" href="https://quixzoom.asia/ms/">
<link rel="alternate" hreflang="hi" href="https://quixzoom.asia/hi/">
<link rel="alternate" hreflang="en" href="https://www.quixzoom.com/">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<style>
:root {
--bg: #FFFFFF;
--bg-off: #F7F7F5;
--text: #1a1a1a;
--text-body: #3a3a3a;
--text-muted: #6B6B6B;
--blue: #0066FF;
--blue-dark: #0052CC;
--radius: 16px;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
font-size: 1rem; line-height: 1.65; color: var(--text-body);
background: var(--bg); -webkit-font-smoothing: antialiased;
min-height: 100vh; display: flex; flex-direction: column;
}
.container { width: 100%; max-width: 800px; margin: 0 auto; padding: 0 24px; }
header { padding: 32px 0; text-align: center; }
.logo { font-size: 2rem; font-weight: 900; color: var(--text); letter-spacing: -.04em; }
.logo .x { color: var(--blue); }
.hero { text-align: center; padding: 60px 0 40px; }
.hero h1 { font-size: clamp(2rem, 5vw, 3rem); font-weight: 800; color: var(--text); margin-bottom: 16px; letter-spacing: -.04em; }
.hero p { font-size: 1.125rem; color: var(--text-muted); max-width: 500px; margin: 0 auto 48px; }
.lang-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 64px; }
.lang-card {
display: flex; align-items: center; gap: 16px;
background: var(--bg-off); border: 2px solid transparent;
border-radius: var(--radius); padding: 20px 24px;
text-decoration: none; color: var(--text);
transition: all .2s; cursor: pointer;
}
.lang-card:hover { border-color: var(--blue); transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,102,255,.12); }
.lang-flag { font-size: 1.5rem; }
.lang-name { font-weight: 700; font-size: 1rem; }
.lang-native { font-size: .875rem; color: var(--text-muted); }
footer { margin-top: auto; padding: 32px 0; text-align: center; border-top: 1px solid rgba(58,58,58,.08); }
footer p { font-size: .875rem; color: var(--text-muted); }
.version { font-size: .75rem; color: rgba(107,107,107,.6); margin-top: 8px; }
</style>
</head>
<body>
<div class="container">
<header>
<div class="logo">qui<span class="x">X</span>zoom</div>
</header>
<section class="hero">
<h1>Choose your language</h1>
<p>Select your preferred language to continue. quiXzoom is available in 9 Asian languages.</p>
</section>
<div class="lang-grid">
<a href="/zh-cn/" class="lang-card">
<span class="lang-flag">🇨🇳</span>
<div>
<div class="lang-name">简体中文</div>
<div class="lang-native">Simplified Chinese — 中国大陆</div>
</div>
</a>
<a href="/zh-tw/" class="lang-card">
<span class="lang-flag">🇹🇼</span>
<div>
<div class="lang-name">繁體中文</div>
<div class="lang-native">Traditional Chinese — 台灣/香港</div>
</div>
</a>
<a href="/ja/" class="lang-card">
<span class="lang-flag">🇯🇵</span>
<div>
<div class="lang-name">日本語</div>
<div class="lang-native">Japanese — 日本</div>
</div>
</a>
<a href="/ko/" class="lang-card">
<span class="lang-flag">🇰🇷</span>
<div>
<div class="lang-name">한국어</div>
<div class="lang-native">Korean — 대한민국</div>
</div>
</a>
<a href="/th/" class="lang-card">
<span class="lang-flag">🇹🇭</span>
<div>
<div class="lang-name">ไทย</div>
<div class="lang-native">Thai — ประเทศไทย</div>
</div>
</a>
<a href="/vi/" class="lang-card">
<span class="lang-flag">🇻🇳</span>
<div>
<div class="lang-name">Tiếng Việt</div>
<div class="lang-native">Vietnamese — Việt Nam</div>
</div>
</a>
<a href="/id/" class="lang-card">
<span class="lang-flag">🇮🇩</span>
<div>
<div class="lang-name">Bahasa Indonesia</div>
<div class="lang-native">Indonesian — Indonesia</div>
</div>
</a>
<a href="/ms/" class="lang-card">
<span class="lang-flag">🇲🇾</span>
<div>
<div class="lang-name">Bahasa Melayu</div>
<div class="lang-native">Malay — Malaysia/Singapore</div>
</div>
</a>
<a href="/hi/" class="lang-card">
<span class="lang-flag">🇮🇳</span>
<div>
<div class="lang-name">हिन्दी</div>
<div class="lang-native">Hindi — भारत</div>
</div>
</a>
</div>
<footer>
<p>quiXzoom Asia covers: China, Japan, South Korea, Thailand, Vietnam, Indonesia, Malaysia, Singapore, India</p>
<p>Payments available in: CNY, JPY, KRW, THB, VND, IDR, MYR, INR</p>
<p class="version">v{{VERSION}} · Built {{BUILD_TIME}}</p>
</footer>
</div>
</body>
</html>
+520
View File
@@ -0,0 +1,520 @@
<!DOCTYPE html>
<html lang="{{LANG_CODE}}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{TITLE}}</title>
<meta name="description" content="{{META_DESC}}">
<link rel="canonical" href="https://quixzoom.asia/{{LANG_CODE}}/">
<link rel="alternate" hreflang="x-default" href="https://quixzoom.asia/">
<!-- hreflang tags -->
<link rel="alternate" hreflang="zh-CN" href="https://quixzoom.asia/zh-cn/">
<link rel="alternate" hreflang="zh-TW" href="https://quixzoom.asia/zh-tw/">
<link rel="alternate" hreflang="ja" href="https://quixzoom.asia/ja/">
<link rel="alternate" hreflang="ko" href="https://quixzoom.asia/ko/">
<link rel="alternate" hreflang="th" href="https://quixzoom.asia/th/">
<link rel="alternate" hreflang="vi" href="https://quixzoom.asia/vi/">
<link rel="alternate" hreflang="id" href="https://quixzoom.asia/id/">
<link rel="alternate" hreflang="ms" href="https://quixzoom.asia/ms/">
<link rel="alternate" hreflang="hi" href="https://quixzoom.asia/hi/">
<link rel="alternate" hreflang="en" href="https://www.quixzoom.com/">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<style>
:root {
--bg: #FFFFFF;
--bg-off: #F7F7F5;
--text: #1a1a1a;
--text-body: #3a3a3a;
--text-muted: #6B6B6B;
--blue: #0066FF;
--blue-dark: #0052CC;
--blue-pale: rgba(0,102,255,.07);
--green: #00C853;
--radius: 16px;
--radius-lg: 24px;
--shadow: 0 16px 48px rgba(0,0,0,.14);
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
font-size: 1rem; line-height: 1.65; color: var(--text-body);
background: var(--bg); -webkit-font-smoothing: antialiased;
}
.container { width: 100%; max-width: 1160px; margin: 0 auto; padding: 0 24px; }
h1 { font-size: clamp(2.75rem, 6vw, 5rem); font-weight: 900; letter-spacing: -.05em; line-height: 1; color: var(--text); }
h2 { font-size: clamp(2rem, 3.5vw, 3rem); font-weight: 800; letter-spacing: -.04em; line-height: 1.1; color: var(--text); }
h3 { font-size: 1.375rem; font-weight: 700; letter-spacing: -.02em; line-height: 1.3; color: var(--text); }
/* Nav */
nav { position: sticky; top: 0; z-index: 300; background: var(--bg-off); border-bottom: 1px solid rgba(58,58,58,.06); }
.nav-inner { display: flex; align-items: center; justify-content: space-between; height: 68px; gap: 32px; }
.nav-logo { font-size: 1.375rem; font-weight: 900; color: var(--text); letter-spacing: -.04em; text-decoration: none; }
.nav-logo .x { color: var(--blue); }
.nav-links { display: flex; align-items: center; gap: 32px; flex: 1; justify-content: center; }
.nav-links a { color: rgba(58,58,58,.75); font-size: 1rem; font-weight: 500; transition: color .15s; text-decoration: none; }
.nav-links a:hover { color: var(--text); }
.btn-nav { background: var(--blue); color: #fff; border: none; border-radius: var(--radius-lg); padding: 10px 24px; font-size: 1rem; font-weight: 700; transition: background .15s; white-space: nowrap; cursor: pointer; }
.btn-nav:hover { background: var(--blue-dark); }
/* Hero */
#hero { background: var(--bg-off); min-height: calc(100vh - 68px); display: flex; align-items: center; padding: 80px 0 96px; }
.hero-layout { display: grid; grid-template-columns: 1fr 420px; gap: 64px; align-items: center; }
.hero-inner { max-width: 560px; }
.hero-badge { display: inline-flex; align-items: center; gap: 8px; background: rgba(58,58,58,.07); border: 1px solid rgba(58,58,58,.12); border-radius: 100px; padding: 8px 18px; font-size: .875rem; font-weight: 600; color: rgba(58,58,58,.88); margin-bottom: 36px; }
.hero-h1 { color: var(--text); margin-bottom: 28px; }
.hero-h1 em { font-style: normal; color: var(--blue); }
.hero-sub { font-size: clamp(1.0625rem, 2vw, 1.25rem); color: rgba(58,58,58,.82); max-width: 640px; line-height: 1.6; margin-bottom: 44px; }
.wl-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }
.wl-input { flex: 1; min-width: 280px; background: #fff; color: var(--text); border: 2.5px solid #fff; border-radius: var(--radius-lg); padding: 18px 28px; font-size: 1rem; outline: none; transition: border-color .15s, box-shadow .15s; }
.wl-input:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(0,102,255,.18); }
.wl-submit { background: var(--blue); color: #fff; border: none; border-radius: var(--radius-lg); padding: 18px 36px; font-size: 1rem; font-weight: 800; cursor: pointer; transition: background .15s; white-space: nowrap; }
.wl-submit:hover { background: var(--blue-dark); }
.wl-trust { font-size: .875rem; color: rgba(58,58,58,.65); margin-bottom: 20px; }
.hero-stats-pill { display: flex; gap: 24px; margin-top: 32px; flex-wrap: wrap; }
.hstat { text-align: left; }
.hstat-num { font-size: 1.5rem; font-weight: 900; color: var(--text); letter-spacing: -.04em; line-height: 1; }
.hstat-lbl { font-size: .75rem; color: rgba(58,58,58,.75); margin-top: 2px; }
/* Stats */
#stats { background: var(--blue); padding: 56px 0; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }
.stat-item { text-align: center; padding: 20px 16px; position: relative; }
.stat-item:not(:last-child)::after { content: ''; position: absolute; right: 0; top: 20%; height: 60%; width: 1px; background: rgba(255,255,255,.25); }
.stat-value { font-size: clamp(2rem, 4vw, 3rem); font-weight: 900; color: #fff; letter-spacing: -.04em; line-height: 1; display: block; margin-bottom: 8px; }
.stat-label { font-size: .9rem; color: rgba(255,255,255,.82); font-weight: 500; }
/* Sections */
.section-pad { padding: 96px 0; }
.section-header { text-align: center; margin-bottom: 64px; }
.section-header h2 { color: var(--text); margin-bottom: 16px; }
.section-header p { font-size: 1.125rem; color: var(--text-muted); max-width: 580px; margin: 0 auto; }
/* How it works */
.steps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.step-card { background: var(--bg-off); border-radius: var(--radius); padding: 40px 36px; }
.step-number { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; background: var(--blue); color: #fff; border-radius: 50%; font-size: 1.375rem; font-weight: 900; margin-bottom: 24px; }
.step-card h3 { color: var(--text); margin-bottom: 12px; }
.step-card p { color: var(--text-muted); font-size: .9625rem; line-height: 1.6; }
/* Missions */
.missions-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.mission-card { background: var(--bg); border: 1.5px solid #E8E8E8; border-radius: var(--radius); padding: 32px 28px; }
.mission-card:hover { border-color: rgba(0,102,255,.25); }
.mission-icon { width: 52px; height: 52px; display: flex; align-items: center; justify-content: center; background: var(--bg-off); border-radius: 14px; margin-bottom: 20px; color: var(--blue); }
.mission-card h3 { color: var(--text); margin-bottom: 10px; font-size: 1.125rem; }
.mission-card p { color: var(--text-muted); font-size: .9rem; line-height: 1.55; margin-bottom: 18px; }
.mission-chip { display: inline-block; background: var(--blue-pale); color: var(--blue); border-radius: 100px; padding: 5px 14px; font-size: .875rem; font-weight: 700; }
/* Earnings */
.earnings-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-bottom: 48px; }
.tier-card { background: var(--bg-off); border: 2px solid #E8E8E8; border-radius: var(--radius); padding: 36px 28px; text-align: center; }
.tier-card.featured { background: var(--bg-off); border-color: var(--blue); transform: scale(1.03); }
.tier-card h3 { font-size: 1.5rem; font-weight: 900; margin-bottom: 4px; }
.tier-missions { font-size: .9rem; color: var(--text-muted); margin-bottom: 20px; font-weight: 500; }
.tier-features { text-align: left; list-style: none; }
.tier-features li { display: flex; align-items: flex-start; gap: 10px; font-size: 1rem; color: var(--text-body); padding: 6px 0; }
.tier-features li::before { content: '✓'; display: block; width: 18px; height: 18px; min-width: 18px; background: var(--green); color: #fff; border-radius: 50%; text-align: center; line-height: 18px; font-size: .75rem; margin-top: 2px; }
/* Landvex Authorization */
#landvex { background: var(--bg-off); }
.auth-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.auth-visual { background: linear-gradient(135deg, var(--blue) 0%, var(--blue-dark) 100%); border-radius: var(--radius); padding: 48px; color: #fff; }
.auth-visual h3 { color: #fff; margin-bottom: 16px; }
.auth-visual p { color: rgba(255,255,255,.85); line-height: 1.6; margin-bottom: 24px; }
.auth-benefits { list-style: none; }
.auth-benefits li { display: flex; align-items: center; gap: 12px; padding: 10px 0; color: rgba(255,255,255,.9); }
.auth-benefits li::before { content: '★'; color: #FFD700; }
.auth-steps { display: flex; flex-direction: column; gap: 20px; }
.auth-step { display: flex; gap: 16px; align-items: flex-start; }
.auth-step-num { width: 36px; height: 36px; border-radius: 50%; background: var(--blue); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; flex-shrink: 0; }
.auth-step h4 { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.auth-step p { font-size: .875rem; color: var(--text-muted); line-height: 1.5; }
/* FAQ */
.faq-list { max-width: 760px; margin: 0 auto; }
.faq-item { border: 1.5px solid #E8E8E8; border-radius: 14px; margin-bottom: 12px; overflow: hidden; }
.faq-item summary { cursor: pointer; display: flex; align-items: center; justify-content: space-between; padding: 22px 28px; font-size: 1rem; font-weight: 700; color: var(--text); list-style: none; gap: 16px; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: '+'; font-size: 1.5rem; color: var(--blue); transition: transform .15s; }
.faq-item[open] summary::after { content: ''; }
.faq-answer { padding: 0 28px 24px; font-size: .9625rem; color: var(--text-body); line-height: 1.7; }
/* Footer */
footer { background: var(--bg-off); border-top: 1px solid rgba(58,58,58,.07); padding: 64px 0 40px; }
.footer-inner { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 48px; margin-bottom: 56px; }
.footer-brand .nav-logo { display: block; margin-bottom: 14px; font-size: 1.5rem; }
.footer-tagline { color: rgba(58,58,58,.75); font-size: .9rem; line-height: 1.55; margin-bottom: 20px; }
.footer-col h4 { color: var(--text); font-size: .875rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 18px; }
.footer-col ul { list-style: none; }
.footer-col ul li { margin-bottom: 10px; }
.footer-col ul li a { color: rgba(58,58,58,.75); font-size: .9rem; text-decoration: none; transition: color .15s; }
.footer-col ul li a:hover { color: var(--text); }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; padding-top: 32px; border-top: 1px solid rgba(58,58,58,.07); }
.footer-copyright { color: rgba(58,58,58,.6); font-size: .875rem; }
.lang-switcher { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.lang-switcher a { color: rgba(58,58,58,.75); font-size: .875rem; font-weight: 600; padding: 4px 8px; border-radius: 8px; text-decoration: none; transition: color .15s, background .15s; }
.lang-switcher a:hover { color: var(--text); background: rgba(58,58,58,.07); }
.lang-switcher a.active { color: var(--text); background: rgba(0,102,255,.25); }
/* Responsive */
@media(max-width: 960px) {
.hero-layout { grid-template-columns: 1fr; gap: 40px; }
.auth-grid { grid-template-columns: 1fr; }
.footer-inner { grid-template-columns: 1fr 1fr; }
}
@media(max-width: 768px) {
.steps-grid, .missions-grid, .earnings-grid { grid-template-columns: 1fr; }
.stats-grid { grid-template-columns: repeat(2, 1fr); }
.nav-links { display: none; }
.footer-inner { grid-template-columns: 1fr; }
.footer-bottom { flex-direction: column; align-items: flex-start; }
}
@media(max-width: 600px) {
.wl-row { flex-direction: column; align-items: stretch; }
.wl-input { min-width: 0; }
.hero-stats-pill { flex-wrap: wrap; gap: 16px 24px; }
}
</style>
</head>
<body>
<a href="#main-content" style="position:absolute;top:-100px;left:16px;background:var(--blue);color:#fff;padding:10px 20px;border-radius:0 0 8px 8px;font-weight:700;font-size:.9rem;z-index:9999;" onfocus="this.style.top='0'" onblur="this.style.top='-100px'">Skip to main content</a>
<nav>
<div class="container">
<div class="nav-inner">
<a href="/" class="nav-logo">qui<span class="x">X</span>zoom</a>
<div class="nav-links">
<a href="#how">{{NAV_HOW}}</a>
<a href="#missions">{{NAV_MISSIONS}}</a>
<a href="#earnings">{{NAV_EARNINGS}}</a>
<a href="#landvex">{{NAV_LANDVEX}}</a>
<a href="#faq">{{NAV_FAQ}}</a>
</div>
<div style="display:flex;align-items:center;gap:10px;flex-shrink:0">
<button class="btn-nav" onclick="document.getElementById('wl-email').focus();document.getElementById('wl-email').scrollIntoView({behavior:'smooth'})">{{CTA_START}}</button>
</div>
</div>
</div>
</nav>
<main id="main-content">
<!-- HERO -->
<section id="hero">
<div class="container">
<div class="hero-layout">
<div class="hero-inner">
<div class="hero-badge">{{HERO_BADGE}}</div>
<h1 class="hero-h1">{{HERO_H1}}<br><em>{{HERO_H1_EMPH}}</em></h1>
<p class="hero-sub">{{HERO_SUB}}</p>
<form onsubmit="event.preventDefault();" novalidate>
<div class="wl-row">
<input type="email" id="wl-email" class="wl-input" placeholder="{{EMAIL_PLACEHOLDER}}" required autocomplete="email">
<button type="submit" class="wl-submit">{{CTA_START}} →</button>
</div>
</form>
<p class="wl-trust">{{TRUST_LINE}}</p>
<div class="hero-stats-pill">
<div class="hstat">
<div class="hstat-num">{{STAT1_NUM}}</div>
<div class="hstat-lbl">{{STAT1_LBL}}</div>
</div>
<div class="hstat">
<div class="hstat-num">{{STAT2_NUM}}</div>
<div class="hstat-lbl">{{STAT2_LBL}}</div>
</div>
<div class="hstat">
<div class="hstat-num">{{STAT3_NUM}}</div>
<div class="hstat-lbl">{{STAT3_LBL}}</div>
</div>
</div>
</div>
<div class="hero-visual" style="display:flex;justify-content:center;align-items:center;">
<div style="width:240px;height:480px;background:var(--bg-off);border-radius:36px;border:2px solid rgba(58,58,58,.12);box-shadow:0 40px 80px rgba(0,0,0,.6);position:relative;overflow:hidden;">
<div style="position:absolute;top:0;left:50%;transform:translateX(-50%);width:80px;height:24px;background:var(--bg-off);border-radius:0 0 16px 16px;z-index:10;"></div>
<div style="position:absolute;inset:0;background:linear-gradient(160deg,#1a2535 0%,#1e3a2f 40%,#162030 100%);border-radius:34px;overflow:hidden;display:flex;flex-direction:column;">
<div style="height:40px;background:#f5f5f5;display:flex;align-items:flex-end;justify-content:space-between;padding:0 16px 6px;">
<span style="color:rgba(58,58,58,.9);font-size:.65rem;font-weight:700;">09:41</span>
</div>
<div style="flex:1;position:relative;overflow:hidden;">
<div style="position:absolute;bottom:0;left:0;right:0;background:#fff;border-radius:20px 20px 0 0;padding:16px;box-shadow:0 -4px 24px rgba(0,0,0,.3);">
<div style="font-size:.7rem;font-weight:800;color:var(--text);margin-bottom:2px;">{{PHONE_MISSION}}</div>
<div style="font-size:.6rem;color:#3d3d3d;margin-bottom:8px;">{{PHONE_ADDR}}</div>
<div style="display:flex;justify-content:space-between;align-items:center;">
<div>
<div style="font-size:.85rem;font-weight:900;color:#0066FF;">{{PHONE_REWARD}}</div>
<div style="font-size:.58rem;color:#4a4a4a;margin-top:4px;">{{PHONE_META}}</div>
</div>
<button style="background:#0066FF;color:#fff;border:none;border-radius:12px;padding:6px 12px;font-size:.6rem;font-weight:700;">Claim →</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- STATS -->
<section id="stats">
<div class="container">
<div class="stats-grid">
<div class="stat-item">
<span class="stat-value">{{STATS_1_VAL}}</span>
<span class="stat-label">{{STATS_1_LBL}}</span>
</div>
<div class="stat-item">
<span class="stat-value">{{STATS_2_VAL}}</span>
<span class="stat-label">{{STATS_2_LBL}}</span>
</div>
<div class="stat-item">
<span class="stat-value">{{STATS_3_VAL}}</span>
<span class="stat-label">{{STATS_3_LBL}}</span>
</div>
<div class="stat-item">
<span class="stat-value">{{STATS_4_VAL}}</span>
<span class="stat-label">{{STATS_4_LBL}}</span>
</div>
</div>
</div>
</section>
<!-- HOW IT WORKS -->
<section id="how" class="section-pad">
<div class="container">
<div class="section-header">
<h2>{{HOW_TITLE}}</h2>
<p>{{HOW_SUB}}</p>
</div>
<div class="steps-grid">
<div class="step-card">
<div class="step-number">1</div>
<h3>{{STEP1_TITLE}}</h3>
<p>{{STEP1_DESC}}</p>
</div>
<div class="step-card">
<div class="step-number">2</div>
<h3>{{STEP2_TITLE}}</h3>
<p>{{STEP2_DESC}}</p>
</div>
<div class="step-card">
<div class="step-number">3</div>
<h3>{{STEP3_TITLE}}</h3>
<p>{{STEP3_DESC}}</p>
</div>
</div>
</div>
</section>
<!-- MISSIONS -->
<section id="missions" class="section-pad" style="background:var(--bg-off);">
<div class="container">
<div class="section-header">
<h2>{{MISSIONS_TITLE}}</h2>
<p>{{MISSIONS_SUB}}</p>
</div>
<div class="missions-grid">
<div class="mission-card">
<div class="mission-icon">📷</div>
<h3>{{M1_TITLE}}</h3>
<p>{{M1_DESC}}</p>
<span class="mission-chip">{{M1_CHIP}}</span>
</div>
<div class="mission-card">
<div class="mission-icon">🏢</div>
<h3>{{M2_TITLE}}</h3>
<p>{{M2_DESC}}</p>
<span class="mission-chip">{{M2_CHIP}}</span>
</div>
<div class="mission-card">
<div class="mission-icon">🛣️</div>
<h3>{{M3_TITLE}}</h3>
<p>{{M3_DESC}}</p>
<span class="mission-chip">{{M3_CHIP}}</span>
</div>
</div>
</div>
</section>
<!-- EARNINGS -->
<section id="earnings" class="section-pad">
<div class="container">
<div class="section-header">
<h2>{{EARNINGS_TITLE}}</h2>
<p>{{EARNINGS_SUB}}</p>
</div>
<div class="earnings-grid">
<div class="tier-card">
<h3>{{TIER1_NAME}}</h3>
<div class="tier-missions">{{TIER1_MISSIONS}}</div>
<ul class="tier-features">
<li>{{TIER1_F1}}</li>
<li>{{TIER1_F2}}</li>
<li>{{TIER1_F3}}</li>
</ul>
</div>
<div class="tier-card featured">
<h3>{{TIER2_NAME}}</h3>
<div class="tier-missions">{{TIER2_MISSIONS}}</div>
<ul class="tier-features">
<li>{{TIER2_F1}}</li>
<li>{{TIER2_F2}}</li>
<li>{{TIER2_F3}}</li>
</ul>
</div>
<div class="tier-card">
<h3>{{TIER3_NAME}}</h3>
<div class="tier-missions">{{TIER3_MISSIONS}}</div>
<ul class="tier-features">
<li>{{TIER3_F1}}</li>
<li>{{TIER3_F2}}</li>
<li>{{TIER3_F3}}</li>
</ul>
</div>
</div>
</div>
</section>
<!-- LANDVEX AUTHORIZATION -->
<section id="landvex" class="section-pad">
<div class="container">
<div class="section-header">
<h2>{{AUTH_TITLE}}</h2>
<p>{{AUTH_SUB}}</p>
</div>
<div class="auth-grid">
<div class="auth-visual">
<h3>{{AUTH_VISUAL_TITLE}}</h3>
<p>{{AUTH_VISUAL_DESC}}</p>
<ul class="auth-benefits">
<li>{{AUTH_B1}}</li>
<li>{{AUTH_B2}}</li>
<li>{{AUTH_B3}}</li>
<li>{{AUTH_B4}}</li>
</ul>
</div>
<div class="auth-steps">
<div class="auth-step">
<div class="auth-step-num">1</div>
<div>
<h4>{{AUTH_S1_TITLE}}</h4>
<p>{{AUTH_S1_DESC}}</p>
</div>
</div>
<div class="auth-step">
<div class="auth-step-num">2</div>
<div>
<h4>{{AUTH_S2_TITLE}}</h4>
<p>{{AUTH_S2_DESC}}</p>
</div>
</div>
<div class="auth-step">
<div class="auth-step-num">3</div>
<div>
<h4>{{AUTH_S3_TITLE}}</h4>
<p>{{AUTH_S3_DESC}}</p>
</div>
</div>
<div class="auth-step">
<div class="auth-step-num">4</div>
<div>
<h4>{{AUTH_S4_TITLE}}</h4>
<p>{{AUTH_S4_DESC}}</p>
</div>
</div>
<div style="margin-top:8px;">
<a href="https://www.quixzoom.com/authorization" class="btn-nav" style="display:inline-block;text-decoration:none;">{{AUTH_CTA}}</a>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section id="faq" class="section-pad" style="background:var(--bg);">
<div class="container">
<div class="section-header">
<h2>{{FAQ_TITLE}}</h2>
<p>{{FAQ_SUB}}</p>
</div>
<div class="faq-list">
<details class="faq-item">
<summary>{{FAQ_Q1}}</summary>
<div class="faq-answer">{{FAQ_A1}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q2}}</summary>
<div class="faq-answer">{{FAQ_A2}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q3}}</summary>
<div class="faq-answer">{{FAQ_A3}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q4}}</summary>
<div class="faq-answer">{{FAQ_A4}}</div>
</details>
<details class="faq-item">
<summary>{{FAQ_Q5}}</summary>
<div class="faq-answer">{{FAQ_A5}}</div>
</details>
</div>
</div>
</section>
</main>
<!-- FOOTER -->
<footer>
<div class="container">
<div class="footer-inner">
<div class="footer-brand">
<a href="/" class="nav-logo">qui<span class="x">X</span>zoom</a>
<p class="footer-tagline">{{FOOTER_TAGLINE}}</p>
</div>
<div class="footer-col">
<h4>{{FOOTER_COL1_TITLE}}</h4>
<ul>
<li><a href="#how">{{FOOTER_COL1_L1}}</a></li>
<li><a href="#missions">{{FOOTER_COL1_L2}}</a></li>
<li><a href="#earnings">{{FOOTER_COL1_L3}}</a></li>
<li><a href="#landvex">{{FOOTER_COL1_L4}}</a></li>
</ul>
</div>
<div class="footer-col">
<h4>{{FOOTER_COL2_TITLE}}</h4>
<ul>
<li><a href="https://www.quixzoom.com/for-organisations">{{FOOTER_COL2_L1}}</a></li>
<li><a href="https://www.quixzoom.com/pricing">{{FOOTER_COL2_L2}}</a></li>
<li><a href="https://www.quixzoom.com/developer">{{FOOTER_COL2_L3}}</a></li>
</ul>
</div>
<div class="footer-col">
<h4>{{FOOTER_COL3_TITLE}}</h4>
<ul>
<li><a href="https://www.quixzoom.com/support">{{FOOTER_COL3_L1}}</a></li>
<li><a href="https://www.quixzoom.com/privacy">{{FOOTER_COL3_L2}}</a></li>
<li><a href="https://www.quixzoom.com/terms">{{FOOTER_COL3_L3}}</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<div class="footer-copyright">{{COPYRIGHT}}</div>
<div class="lang-switcher">
<span style="color:rgba(58,58,58,.75);font-size:.875rem;margin-right:4px;">{{LANG_LABEL}}</span>
<a href="/zh-cn/">中文</a>
<a href="/zh-tw/">繁中</a>
<a href="/ja/">日本語</a>
<a href="/ko/">한국어</a>
<a href="/th/">ไทย</a>
<a href="/vi/">Tiếng Việt</a>
<a href="/id/">Bahasa</a>
<a href="/ms/">Melayu</a>
<a href="/hi/">हिन्दी</a>
<a href="/en/">EN</a>
</div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,127 @@
{
"_comment": "English base translations — use as reference for all other languages",
"TITLE": "quiXzoom Asia — Capture the World. Get Paid.",
"META_DESC": "Take photo missions near you. Get paid every week. No platform fee. Available across Asia in 9 languages.",
"NAV_HOW": "How it works",
"NAV_MISSIONS": "Missions",
"NAV_EARNINGS": "Earnings",
"NAV_LANDVEX": "Landvex Auth",
"NAV_FAQ": "FAQ",
"CTA_START": "Start Earning",
"HERO_BADGE": "Asia rollout · Coming 2026",
"HERO_H1": "Capture the world.",
"HERO_H1_EMPH": "Earn per mission.",
"HERO_SUB": "Take photo missions near you. Get paid every week. No platform fee. Launching across Asia in 2026.",
"EMAIL_PLACEHOLDER": "Your email address",
"TRUST_LINE": "No signup fee · No platform fee · Paid weekly · Identity verification required once",
"STAT1_NUM": "50500",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} per mission",
"STAT2_NUM": "Asia",
"STAT2_LBL": "9 countries launching",
"STAT3_NUM": "0%",
"STAT3_LBL": "platform fee",
"STATS_1_VAL": "~30 min",
"STATS_1_LBL": "Average mission time",
"STATS_2_VAL": "2026",
"STATS_2_LBL": "Launching across Asia",
"STATS_3_VAL": "Weekly",
"STATS_3_LBL": "Payout schedule",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "Paid on approval",
"HOW_TITLE": "How it works",
"HOW_SUB": "Three steps. Start earning today.",
"STEP1_TITLE": "Browse missions",
"STEP1_DESC": "Open the app and see available missions near you. Filter by type, distance, and reward.",
"STEP2_TITLE": "Claim & capture",
"STEP2_DESC": "Reserve a mission, go to the location, and follow the photo instructions. Submit through the app.",
"STEP3_TITLE": "Get paid",
"STEP3_DESC": "Our team reviews your submission within 24 hours. Once approved, payment is sent to your account.",
"MISSIONS_TITLE": "Mission types",
"MISSIONS_SUB": "From infrastructure to real estate — there's a mission for everyone.",
"M1_TITLE": "Infrastructure",
"M1_DESC": "Document roads, bridges, and public facilities. Help municipalities maintain accurate records.",
"M1_CHIP": "Most popular",
"M2_TITLE": "Real Estate",
"M2_DESC": "Photograph properties for valuation and insurance purposes. Indoor and outdoor shots.",
"M2_CHIP": "High reward",
"M3_TITLE": "Environment",
"M3_DESC": "Capture coastal erosion, green spaces, and environmental changes for research organizations.",
"M3_CHIP": "Flexible hours",
"EARNINGS_TITLE": "Your earnings",
"EARNINGS_SUB": "The more missions you complete, the more you earn. No caps, no limits.",
"TIER1_NAME": "Starter",
"TIER1_MISSIONS": "First 10 missions",
"TIER1_F1": "Standard mission rates",
"TIER1_F2": "Weekly payouts",
"TIER1_F3": "Email support",
"TIER2_NAME": "Pro Zoomer",
"TIER2_MISSIONS": "10+ missions completed",
"TIER2_F1": "10% bonus on all missions",
"TIER2_F2": "Priority mission access",
"TIER2_F3": "Faster review (12h)",
"TIER3_NAME": "Elite",
"TIER3_MISSIONS": "50+ missions + Landvex Auth",
"TIER3_F1": "25% bonus on all missions",
"TIER3_F2": "Exclusive high-value missions",
"TIER3_F3": "Direct hotline support",
"AUTH_TITLE": "Landvex Authorized Zoomer",
"AUTH_SUB": "Get certified. Unlock premium missions and higher earnings.",
"AUTH_VISUAL_TITLE": "Why get authorized?",
"AUTH_VISUAL_DESC": "Landvex Authorized Zoomers are trusted partners who get early access to high-value missions from governments, insurers, and enterprises.",
"AUTH_B1": "Early access to premium missions",
"AUTH_B2": "Higher base pay (+25% bonus)",
"AUTH_B3": "Priority customer support",
"AUTH_B4": "Verified badge on your profile",
"AUTH_S1_TITLE": "Apply online",
"AUTH_S1_DESC": "Fill out the authorization form with your details and experience.",
"AUTH_S2_TITLE": "Identity verification",
"AUTH_S2_DESC": "Upload your ID and complete a quick video verification call.",
"AUTH_S3_TITLE": "Background check",
"AUTH_S3_DESC": "We verify your record. Most checks complete within 2 business days.",
"AUTH_S4_TITLE": "Get certified",
"AUTH_S4_DESC": "Pass the quiz and receive your Landvex Authorized badge.",
"AUTH_CTA": "Apply for Authorization",
"FAQ_TITLE": "Frequently asked questions",
"FAQ_SUB": "Everything you need to know about becoming a Zoomer.",
"FAQ_Q1": "What is a Zoomer?",
"FAQ_A1": "A Zoomer is an independent contractor who completes photo missions using the quiXzoom app. You choose when and where you work.",
"FAQ_Q2": "How much can I earn?",
"FAQ_A2": "Earnings vary by mission type and location. Most missions pay between {{CURRENCY_SYMBOL}}50500. Pro and Elite Zoomers earn bonuses on top.",
"FAQ_Q3": "When do I get paid?",
"FAQ_A3": "Payments are processed every week for all approved missions from the previous week. Funds arrive in your local bank account or e-wallet.",
"FAQ_Q4": "What do I need to start?",
"FAQ_A4": "A smartphone with a good camera, a valid ID for verification, and a bank account or e-wallet to receive payments.",
"FAQ_Q5": "Is there a signup fee?",
"FAQ_A5": "No. Signing up as a Zoomer is completely free. We do not charge any platform fees or membership costs.",
"FOOTER_TAGLINE": "Capture the world. Get paid. quiXzoom is building the global infrastructure for field data collection.",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "How it works",
"FOOTER_COL1_L2": "Mission types",
"FOOTER_COL1_L3": "Earnings",
"FOOTER_COL1_L4": "Landvex Auth",
"FOOTER_COL2_TITLE": "Business",
"FOOTER_COL2_L1": "For Organisations",
"FOOTER_COL2_L2": "Pricing",
"FOOTER_COL2_L3": "Developer API",
"FOOTER_COL3_TITLE": "Support",
"FOOTER_COL3_L1": "Help Center",
"FOOTER_COL3_L2": "Privacy Policy",
"FOOTER_COL3_L3": "Terms of Service",
"COPYRIGHT": "© 2026 quiXzoom. All rights reserved.",
"LANG_LABEL": "Language:",
"PHONE_MISSION": "Road Survey",
"PHONE_ADDR": "Main Street, Downtown",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}285",
"PHONE_META": "3 photos · ~12 min"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom एशिया — दुनिया कैप्चर करें। कमाएं।",
"META_DESC": "आपके पास फोटो मिशन लें। हर हफ्ते भुगतान प्राप्त करें। कोई प्लेटफॉर्म शुल्क नहीं। एशिया में 9 भाषाओं में उपलब्ध।",
"NAV_HOW": "कैसे काम करता है",
"NAV_MISSIONS": "मिशन",
"NAV_EARNINGS": "कमाई",
"NAV_LANDVEX": "Landvex प्रमाणन",
"NAV_FAQ": "सामान्य प्रश्न",
"CTA_START": "शुरू करें",
"HERO_BADGE": "एशिया लॉन्च · 2026",
"HERO_H1": "दुनिया कैप्चर करें।",
"HERO_H1_EMPH": "प्रति मिशन कमाएं।",
"HERO_SUB": "आपके पास फोटो मिशन लें। हर हफ्ते भुगतान प्राप्त करें। कोई प्लेटफॉर्म शुल्क नहीं। 2026 में पूरे एशिया में लॉन्च।",
"EMAIL_PLACEHOLDER": "आपका ईमेल पता",
"TRUST_LINE": "कोई साइनअप शुल्क नहीं · कोई प्लेटफॉर्म शुल्क नहीं · साप्ताहिक भुगतान · एक बार पहचान सत्यापन",
"STAT1_NUM": "₹50500",
"STAT1_LBL": "प्रति मिशन",
"STAT2_NUM": "एशिया",
"STAT2_LBL": "9 देश",
"STAT3_NUM": "0%",
"STAT3_LBL": "प्लेटफॉर्म शुल्क",
"STATS_1_VAL": "~30 मिनट",
"STATS_1_LBL": "औसत मिशन समय",
"STATS_2_VAL": "2026",
"STATS_2_LBL": "एशिया में लॉन्च",
"STATS_3_VAL": "साप्ताहिक",
"STATS_3_LBL": "भुगतान अनुसूची",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "अनुमोदन पर भुगतान",
"HOW_TITLE": "कैसे काम करता है",
"HOW_SUB": "तीन चरण। आज से कमाना शुरू करें।",
"STEP1_TITLE": "मिशन ब्राउज़ करें",
"STEP1_DESC": "ऐप खोलें और अपने पास उपलब्ध मिशन देखें। प्रकार, दूरी और इनाम के अनुसार फ़िल्टर करें।",
"STEP2_TITLE": "दावा करें और कैप्चर करें",
"STEP2_DESC": "एक मिशन आरक्षित करें, स्थान पर जाएं, और फोटो निर्देशों का पालन करें। ऐप के माध्यम से सबमिट करें।",
"STEP3_TITLE": "भुगतान प्राप्त करें",
"STEP3_DESC": "हमारी टीम 24 घंटे के भीतर आपका सबमिशन समीक्षा करती है। अनुमोदन के बाद, भुगतान आपके खाते में भेज दिया जाता है।",
"MISSIONS_TITLE": "मिशन प्रकार",
"MISSIONS_SUB": "इंफ्रास्ट्रक्चर से रियल एस्टेट तक——हर किसी के लिए एक मिशन है।",
"M1_TITLE": "इंफ्रास्ट्रक्चर",
"M1_DESC": "सड़कें, पुल और सार्वजनिक सुविधाओं का दस्तावेजीकरण करें। नगर पालिकाओं को सटीक रिकॉर्ड बनाए रखने में मदद करें।",
"M1_CHIP": "सबसे लोकप्रिय",
"M2_TITLE": "रियल एस्टेट",
"M2_DESC": "मूल्यांकन और बीमा उद्देश्यों के लिए संपत्ति की तस्वीरें लें। इनडोर और आउटडोर शॉट।",
"M2_CHIP": "उच्च इनाम",
"M3_TITLE": "पर्यावरण",
"M3_DESC": "तटीय कटाव, हरित स्थान और पर्यावरण परिवर्तन को शोध संगठनों के लिए कैप्चर करें।",
"M3_CHIP": "लचीला समय",
"EARNINGS_TITLE": "आपकी कमाई",
"EARNINGS_SUB": "जितने अधिक मिशन आप पूरा करेंगे, उतना अधिक आप कमाएंगे। कोई सीमा नहीं, कोई प्रतिबंध नहीं।",
"TIER1_NAME": "स्टार्टर",
"TIER1_MISSIONS": "पहले 10 मिशन",
"TIER1_F1": "मानक मिशन दरें",
"TIER1_F2": "साप्ताहिक भुगतान",
"TIER1_F3": "ईमेल सहायता",
"TIER2_NAME": "प्रो Zoomer",
"TIER2_MISSIONS": "10+ मिशन पूरे",
"TIER2_F1": "सभी मिशन पर 10% बोनस",
"TIER2_F2": "प्राथमिकता मिशन पहुंच",
"TIER2_F3": "तेज़ समीक्षा (12 घंटे)",
"TIER3_NAME": "एलीट",
"TIER3_MISSIONS": "50+ मिशन + Landvex प्रमाणन",
"TIER3_F1": "सभी मिशन पर 25% बोनस",
"TIER3_F2": "विशेष उच्च-मूल्य मिशन",
"TIER3_F3": "सीधी हॉटलाइन सहायता",
"AUTH_TITLE": "Landvex प्रमाणित Zoomer",
"AUTH_SUB": "प्रमाणित हों। प्रीमियम मिशन और उच्च कमाई अनलॉक करें।",
"AUTH_VISUAL_TITLE": "प्रमाणित क्यों हों?",
"AUTH_VISUAL_DESC": "Landvex प्रमाणित Zoomer विश्वसनीय भागीदार हैं जो सरकारों, बीमा कंपनियों और उद्यमों से उच्च-मूल्य मिशन तक पहले पहुंच प्राप्त करते हैं।",
"AUTH_B1": "प्रीमियम मिशन तक पहले पहुंच",
"AUTH_B2": "उच्च बेस पे (+25% बोनस)",
"AUTH_B3": "प्राथमिकता ग्राहक सहायता",
"AUTH_B4": "आपकी प्रोफाइल पर सत्यापित बैज",
"AUTH_S1_TITLE": "ऑनलाइन आवेदन करें",
"AUTH_S1_DESC": "अपना विवरण और अनुभव के साथ प्रमाणन फॉर्म भरें।",
"AUTH_S2_TITLE": "पहचान सत्यापन",
"AUTH_S2_DESC": "अपना आईडी अपलोड करें और एक त्वरित वीडियो सत्यापन कॉल पूरा करें।",
"AUTH_S3_TITLE": "पृष्ठभूमि जांच",
"AUTH_S3_DESC": "हम आपका रिकॉर्ड सत्यापित करते हैं। अधिकांश जांच 2 कार्यदिवसों के भीतर पूरी हो जाती हैं।",
"AUTH_S4_TITLE": "प्रमाणित हों",
"AUTH_S4_DESC": "क्विज़ पास करें और अपना Landvex प्रमाणित बैज प्राप्त करें।",
"AUTH_CTA": "प्रमाणन के लिए आवेदन करें",
"FAQ_TITLE": "सामान्य प्रश्न",
"FAQ_SUB": "Zoomer बनने के बारे में आपको जो कुछ जानने की जरूरत है।",
"FAQ_Q1": "Zoomer क्या है?",
"FAQ_A1": "Zoomer एक स्वतंत्र ठेकेदार है जो quiXzoom ऐप का उपयोग करके फोटो मिशन पूरा करता है। आप चुनते हैं कि कब और कहां काम करना है।",
"FAQ_Q2": "मैं कितना कमा सकता हूं?",
"FAQ_A2": "कमाई मिशन के प्रकार और स्थान के अनुसार भिन्न होती है। अधिकांश मिशन ₹50–500 का भुगतान करते हैं। प्रो और एलीट Zoomer को अतिरिक्त बोनस मिलते हैं।",
"FAQ_Q3": "मुझे भुगतान कब मिलता है?",
"FAQ_A3": "पिछले सप्ताह के सभी अनुमोदित मिशन के लिए हर हफ्ते भुगतान संसाधित किया जाता है। धन आपके स्थानीय बैंक खाते या ई-वॉलेट में आता है।",
"FAQ_Q4": "शुरू करने के लिए मुझे क्या चाहिए?",
"FAQ_A4": "एक अच्छे कैमरे वाला स्मार्टफोन, सत्यापन के लिए एक वैध आईडी, और भुगतान प्राप्त करने के लिए एक बैंक खाता या ई-वॉलेट।",
"FAQ_Q5": "क्या कोई साइनअप शुल्क है?",
"FAQ_A5": "नहीं। Zoomer के रूप में साइन अप करना पूरी तरह से मुफ्त है। हम कोई प्लेटफॉर्म शुल्क या सदस्यता लागत नहीं लेते हैं।",
"FOOTER_TAGLINE": "दुनिया कैप्चर करें। कमाएं। quiXzoom फील्ड डेटा संग्रह के लिए वैश्विक इंफ्रास्ट्रक्चर बना रहा है।",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "कैसे काम करता है",
"FOOTER_COL1_L2": "मिशन प्रकार",
"FOOTER_COL1_L3": "कमाई",
"FOOTER_COL1_L4": "Landvex प्रमाणन",
"FOOTER_COL2_TITLE": "व्यवसाय",
"FOOTER_COL2_L1": "संगठनों के लिए",
"FOOTER_COL2_L2": "मूल्य निर्धारण",
"FOOTER_COL2_L3": "डेवलपर API",
"FOOTER_COL3_TITLE": "सहायता",
"FOOTER_COL3_L1": "सहायता केंद्र",
"FOOTER_COL3_L2": "गोपनीयता नीति",
"FOOTER_COL3_L3": "सेवा की शर्तें",
"COPYRIGHT": "© 2026 quiXzoom। सर्वाधिकार सुरक्षित।",
"LANG_LABEL": "भाषा:",
"PHONE_MISSION": "सड़क सर्वेक्षण",
"PHONE_ADDR": "मुख्य सड़क, शहर केंद्र",
"PHONE_REWARD": "₹285",
"PHONE_META": "3 फोटो · ~12 मिनट"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom Asia — Tangkap Dunia. Dapatkan Bayaran.",
"META_DESC": "Ambil misi foto di dekat Anda. Dibayar setiap minggu. Tanpa biaya platform. Tersedia di Asia dalam 9 bahasa.",
"NAV_HOW": "Cara Kerja",
"NAV_MISSIONS": "Misi",
"NAV_EARNINGS": "Penghasilan",
"NAV_LANDVEX": "Otorisasi Landvex",
"NAV_FAQ": "FAQ",
"CTA_START": "Mulai",
"HERO_BADGE": "Peluncuran Asia · 2026",
"HERO_H1": "Tangkap Dunia.",
"HERO_H1_EMPH": "Dapatkan Bayaran per Misi.",
"HERO_SUB": "Ambil misi foto di dekat Anda. Dibayar setiap minggu. Tanpa biaya platform. Meluncur di seluruh Asia pada tahun 2026.",
"EMAIL_PLACEHOLDER": "Alamat email Anda",
"TRUST_LINE": "Tanpa biaya pendaftaran · Tanpa biaya platform · Dibayar mingguan · Verifikasi identitas sekali saja",
"STAT1_NUM": "1.00010.000",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} per misi",
"STAT2_NUM": "Asia",
"STAT2_LBL": "9 negara",
"STAT3_NUM": "0%",
"STAT3_LBL": "biaya platform",
"STATS_1_VAL": "~30 menit",
"STATS_1_LBL": "Waktu misi rata-rata",
"STATS_2_VAL": "2026",
"STATS_2_LBL": "Meluncur di Asia",
"STATS_3_VAL": "Mingguan",
"STATS_3_LBL": "Jadwal pembayaran",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "Dibayar setelah disetujui",
"HOW_TITLE": "Cara Kerja",
"HOW_SUB": "Tiga langkah. Mulai menghasilkan hari ini.",
"STEP1_TITLE": "Jelajahi Misi",
"STEP1_DESC": "Buka aplikasi dan lihat misi yang tersedia di dekat Anda. Filter berdasarkan jenis, jarak, dan hadiah.",
"STEP2_TITLE": "Ambil & Tangkap",
"STEP2_DESC": "Pesan sebuah misi, pergi ke lokasi, dan ikuti instruksi foto. Kirimkan melalui aplikasi.",
"STEP3_TITLE": "Dapatkan Bayaran",
"STEP3_DESC": "Tim kami meninjau pengiriman Anda dalam 24 jam. Setelah disetujui, pembayaran dikirim ke akun Anda.",
"MISSIONS_TITLE": "Jenis Misi",
"MISSIONS_SUB": "Dari infrastruktur hingga real estat——ada misi untuk semua orang.",
"M1_TITLE": "Infrastruktur",
"M1_DESC": "Dokumentasikan jalan, jembatan, dan fasilitas umum. Bantu pemerintah daerah menjaga catatan yang akurat.",
"M1_CHIP": "Paling Populer",
"M2_TITLE": "Real Estat",
"M2_DESC": "Foto properti untuk tujuan penilaian dan asuransi. Foto dalam dan luar ruangan.",
"M2_CHIP": "Bayaran Tinggi",
"M3_TITLE": "Lingkungan",
"M3_DESC": "Tangkap erosi pantai, ruang hijau, dan perubahan lingkungan untuk organisasi penelitian.",
"M3_CHIP": "Waktu Fleksibel",
"EARNINGS_TITLE": "Penghasilan Anda",
"EARNINGS_SUB": "Semakin banyak misi yang Anda selesaikan, semakin banyak yang Anda hasilkan. Tanpa batas.",
"TIER1_NAME": "Pemula",
"TIER1_MISSIONS": "10 misi pertama",
"TIER1_F1": "Tarif misi standar",
"TIER1_F2": "Pembayaran mingguan",
"TIER1_F3": "Dukungan email",
"TIER2_NAME": "Zoomer Pro",
"TIER2_MISSIONS": "10+ misi selesai",
"TIER2_F1": "Bonus 10% untuk semua misi",
"TIER2_F2": "Akses misi prioritas",
"TIER2_F3": "Peninjauan lebih cepat (12j)",
"TIER3_NAME": "Elit",
"TIER3_MISSIONS": "50+ misi + Otorisasi Landvex",
"TIER3_F1": "Bonus 25% untuk semua misi",
"TIER3_F2": "Misi bernilai tinggi eksklusif",
"TIER3_F3": "Dukungan hotline langsung",
"AUTH_TITLE": "Zoomer Bersertifikat Landvex",
"AUTH_SUB": "Dapatkan sertifikasi. Buka kunci misi premium dan penghasilan lebih tinggi.",
"AUTH_VISUAL_TITLE": "Mengapa mendapatkan otorisasi?",
"AUTH_VISUAL_DESC": "Zoomer Bersertifikat Landvex adalah mitra tepercaya yang mendapatkan akses awal ke misi bernilai tinggi dari pemerintah, perusahaan asuransi, dan perusahaan.",
"AUTH_B1": "Akses awal ke misi premium",
"AUTH_B2": "Bayaran dasar lebih tinggi (+25% bonus)",
"AUTH_B3": "Dukungan pelanggan prioritas",
"AUTH_B4": "Lencana terverifikasi di profil Anda",
"AUTH_S1_TITLE": "Daftar Online",
"AUTH_S1_DESC": "Isi formulir otorisasi dengan detail dan pengalaman Anda.",
"AUTH_S2_TITLE": "Verifikasi Identitas",
"AUTH_S2_DESC": "Unggah ID Anda dan selesaikan panggilan verifikasi video singkat.",
"AUTH_S3_TITLE": "Pemeriksaan Latar Belakang",
"AUTH_S3_DESC": "Kami memverifikasi catatan Anda. Sebagian besar pemeriksaan selesai dalam 2 hari kerja.",
"AUTH_S4_TITLE": "Dapatkan Sertifikasi",
"AUTH_S4_DESC": "Lulus kuis dan terima lencana Bersertifikat Landvex Anda.",
"AUTH_CTA": "Ajukan Otorisasi",
"FAQ_TITLE": "Pertanyaan yang Sering Diajukan",
"FAQ_SUB": "Semua yang perlu Anda ketahui tentang menjadi Zoomer.",
"FAQ_Q1": "Apa itu Zoomer?",
"FAQ_A1": "Zoomer adalah kontraktor independen yang menyelesaikan misi foto menggunakan aplikasi quiXzoom. Anda memilih kapan dan di mana bekerja.",
"FAQ_Q2": "Berapa banyak yang bisa saya hasilkan?",
"FAQ_A2": "Penghasilan bervariasi berdasarkan jenis misi dan lokasi. Sebagian besar misi membayar antara {{CURRENCY_SYMBOL}}1.00010.000. Zoomer Pro dan Elit mendapatkan bonus tambahan.",
"FAQ_Q3": "Kapan saya dibayar?",
"FAQ_A3": "Pembayaran diproses setiap minggu untuk semua misi yang disetujui dari minggu sebelumnya. Dana tiba di rekening bank atau dompet elektronik lokal Anda.",
"FAQ_Q4": "Apa yang saya butuhkan untuk memulai?",
"FAQ_A4": "Ponsel cerdas dengan kamera bagus, ID yang valid untuk verifikasi, dan rekening bank atau dompet elektronik untuk menerima pembayaran.",
"FAQ_Q5": "Apakah ada biaya pendaftaran?",
"FAQ_A5": "Tidak. Mendaftar sebagai Zoomer sepenuhnya gratis. Kami tidak mengenakan biaya platform atau keanggotaan apa pun.",
"FOOTER_TAGLINE": "Tangkap Dunia. Dapatkan Bayaran. quiXzoom sedang membangun infrastruktur global untuk pengumpulan data lapangan.",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "Cara Kerja",
"FOOTER_COL1_L2": "Jenis Misi",
"FOOTER_COL1_L3": "Penghasilan",
"FOOTER_COL1_L4": "Otorisasi Landvex",
"FOOTER_COL2_TITLE": "Bisnis",
"FOOTER_COL2_L1": "Untuk Organisasi",
"FOOTER_COL2_L2": "Harga",
"FOOTER_COL2_L3": "API Pengembang",
"FOOTER_COL3_TITLE": "Dukungan",
"FOOTER_COL3_L1": "Pusat Bantuan",
"FOOTER_COL3_L2": "Kebijakan Privasi",
"FOOTER_COL3_L3": "Ketentuan Layanan",
"COPYRIGHT": "© 2026 quiXzoom. Hak Cipta Dilindungi.",
"LANG_LABEL": "Bahasa:",
"PHONE_MISSION": "Survei Jalan",
"PHONE_ADDR": "Jalan Utama, Pusat Kota",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}2.850",
"PHONE_META": "3 foto · ~12 menit"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom アジア — 世界を撮影。報酬を獲得。",
"META_DESC": "近くの撮影ミッションを受注。毎週報酬を受け取る。プラットフォーム手数料なし。アジア9言語で展開予定。",
"NAV_HOW": "仕組み",
"NAV_MISSIONS": "ミッション",
"NAV_EARNINGS": "報酬",
"NAV_LANDVEX": "Landvex認定",
"NAV_FAQ": "よくある質問",
"CTA_START": "はじめる",
"HERO_BADGE": "アジア展開 · 2026年ローンチ",
"HERO_H1": "世界を撮影。",
"HERO_H1_EMPH": "ミッションごとに報酬。",
"HERO_SUB": "近くの撮影ミッションを受注。毎週報酬を受け取る。プラットフォーム手数料なし。2026年にアジアで展開開始。",
"EMAIL_PLACEHOLDER": "メールアドレス",
"TRUST_LINE": "登録料なし · プラットフォーム手数料なし · 毎週支払い · 本人確認は1回のみ",
"STAT1_NUM": "1,00010,000",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} /ミッション",
"STAT2_NUM": "アジア",
"STAT2_LBL": "9カ国展開予定",
"STAT3_NUM": "0%",
"STAT3_LBL": "プラットフォーム手数料",
"STATS_1_VAL": "約30分",
"STATS_1_LBL": "平均ミッション時間",
"STATS_2_VAL": "2026年",
"STATS_2_LBL": "アジア展開開始",
"STATS_3_VAL": "毎週",
"STATS_3_LBL": "支払いサイクル",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "承認後に支払い",
"HOW_TITLE": "仕組み",
"HOW_SUB": "3ステップ。今日からはじめよう。",
"STEP1_TITLE": "ミッションを探す",
"STEP1_DESC": "アプリを開いて近くのミッションを確認。タイプ、距離、報酬で絞り込み。",
"STEP2_TITLE": "受注して撮影",
"STEP2_DESC": "ミッションを予約し、現地へ向かい、撮影指示に従って撮影。アプリから提出。",
"STEP3_TITLE": "報酬を受け取る",
"STEP3_DESC": "チームが24時間以内に提出内容を審査。承認後、指定口座へ振込。",
"MISSIONS_TITLE": "ミッションタイプ",
"MISSIONS_SUB": "インフラから不動産まで——あなたにぴったりのミッションがきっと見つかります。",
"M1_TITLE": "インフラ",
"M1_DESC": "道路、橋梁、公共施設を記録。自治体の正確な記録管理をサポート。",
"M1_CHIP": "人気No.1",
"M2_TITLE": "不動産",
"M2_DESC": "査定・保険目的の物件撮影。室内・室外の両方。",
"M2_CHIP": "高報酬",
"M3_TITLE": "環境",
"M3_DESC": "海岸侵食、緑地、環境変化を研究機関のために記録。",
"M3_CHIP": "時間自由",
"EARNINGS_TITLE": "あなたの報酬",
"EARNINGS_SUB": "完了したミッションが増えれば増えるほど、報酬も増えます。上限なし。",
"TIER1_NAME": "スターター",
"TIER1_MISSIONS": "初回10ミッション",
"TIER1_F1": "標準ミッション報酬",
"TIER1_F2": "毎週支払い",
"TIER1_F3": "メールサポート",
"TIER2_NAME": "プロZoomer",
"TIER2_MISSIONS": "10ミッション以上完了",
"TIER2_F1": "全ミッション10%ボーナス",
"TIER2_F2": "優先ミッションアクセス",
"TIER2_F3": "高速審査(12時間)",
"TIER3_NAME": "エリート",
"TIER3_MISSIONS": "50ミッション以上 + Landvex認定",
"TIER3_F1": "全ミッション25%ボーナス",
"TIER3_F2": "独占的高額ミッション",
"TIER3_F3": "専用ホットライン",
"AUTH_TITLE": "Landvex認定Zoomer",
"AUTH_SUB": "認定を取得。プレミアムミッションとより高い報酬をアンロック。",
"AUTH_VISUAL_TITLE": "なぜ認定を取得するのか?",
"AUTH_VISUAL_DESC": "Landvex認定Zoomerは信頼できるパートナーとして、政府・保険会社・企業からの高額ミッションに優先的にアクセスできます。",
"AUTH_B1": "プレミアムミッションへの優先アクセス",
"AUTH_B2": "より高い基本報酬(+25%ボーナス)",
"AUTH_B3": "優先カスタマーサポート",
"AUTH_B4": "プロフィールに認定バッジ表示",
"AUTH_S1_TITLE": "オンライン申請",
"AUTH_S1_DESC": "詳細と経験を記入して認定申請フォームを提出。",
"AUTH_S2_TITLE": "本人確認",
"AUTH_S2_DESC": "身分証明書をアップロードし、簡単なビデオ通話で確認。",
"AUTH_S3_TITLE": "背景調査",
"AUTH_S3_DESC": "記録を確認。ほとんどの調査は2営業日以内に完了。",
"AUTH_S4_TITLE": "認定取得",
"AUTH_S4_DESC": "テストに合格し、Landvex認定バッジを取得。",
"AUTH_CTA": "認定を申請する",
"FAQ_TITLE": "よくある質問",
"FAQ_SUB": "Zoomerになるために知っておくべきこと。",
"FAQ_Q1": "Zoomerとは?",
"FAQ_A1": "Zoomerとは、quiXzoomアプリを使って撮影ミッションをこなす独立請負業者です。いつどこで働くかは自分で決められます。",
"FAQ_Q2": "いくら稼げますか?",
"FAQ_A2": "報酬はミッションのタイプと場所によります。ほとんどのミッションは{{CURRENCY_SYMBOL}}1,00010,000。プロ・エリートZoomerは追加ボーナスも獲得できます。",
"FAQ_Q3": "いつ報酬を受け取れますか?",
"FAQ_A3": "前週の承認済みミッション分を毎週処理。資金は指定の銀行口座または電子マネーへ振り込まれます。",
"FAQ_Q4": "はじめるには何が必要ですか?",
"FAQ_A4": "カメラ性能の良いスマートフォン、本人確認用の有効な身分証明書、報酬受取用の銀行口座または電子マネー。",
"FAQ_Q5": "登録料はかかりますか?",
"FAQ_A5": "いいえ。Zoomerとしての登録は完全無料です。プラットフォーム手数料や会費も一切かかりません。",
"FOOTER_TAGLINE": "世界を撮影。報酬を獲得。quiXzoomはフィールドデータ収集のグローバルインフラを構築しています。",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "仕組み",
"FOOTER_COL1_L2": "ミッションタイプ",
"FOOTER_COL1_L3": "報酬",
"FOOTER_COL1_L4": "Landvex認定",
"FOOTER_COL2_TITLE": "ビジネス",
"FOOTER_COL2_L1": "法人向け",
"FOOTER_COL2_L2": "料金",
"FOOTER_COL2_L3": "開発者API",
"FOOTER_COL3_TITLE": "サポート",
"FOOTER_COL3_L1": "ヘルプセンター",
"FOOTER_COL3_L2": "プライバシーポリシー",
"FOOTER_COL3_L3": "利用規約",
"COPYRIGHT": "© 2026 quiXzoom. All rights reserved.",
"LANG_LABEL": "言語:",
"PHONE_MISSION": "道路調査",
"PHONE_ADDR": "ダウンタウン本通り",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}2,850",
"PHONE_META": "3枚 · 約12分"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom 아시아 — 세상을 촬영하세요. 보수를 받으세요.",
"META_DESC": "근처 촬영 미션을 받아보세요. 매주 보수를 받습니다. 플랫폼 수수료 없음. 아시아 9개 언어로 제공됩니다.",
"NAV_HOW": "이용 방법",
"NAV_MISSIONS": "미션",
"NAV_EARNINGS": "수익",
"NAV_LANDVEX": "Landvex 인증",
"NAV_FAQ": "자주 묻는 질문",
"CTA_START": "시작하기",
"HERO_BADGE": "아시아 론칭 · 2026년 출시",
"HERO_H1": "세상을 촬영하세요.",
"HERO_H1_EMPH": "미션당 보수를 받으세요.",
"HERO_SUB": "근처 촬영 미션을 받아보세요. 매주 보수를 받습니다. 플랫폼 수수료 없음. 2026년 아시아 전역에서 출시됩니다.",
"EMAIL_PLACEHOLDER": "이메일 주소",
"TRUST_LINE": "가입비 없음 · 플랫폼 수수료 없음 · 매주 지급 · 본인 확인 1회만 필요",
"STAT1_NUM": "1,00010,000",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} /미션",
"STAT2_NUM": "아시아",
"STAT2_LBL": "9개국 출시 예정",
"STAT3_NUM": "0%",
"STAT3_LBL": "플랫폼 수수료",
"STATS_1_VAL": "약 30분",
"STATS_1_LBL": "평균 미션 소요 시간",
"STATS_2_VAL": "2026년",
"STATS_2_LBL": "아시아 출시",
"STATS_3_VAL": "매주",
"STATS_3_LBL": "지급 주기",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "승인 후 지급",
"HOW_TITLE": "이용 방법",
"HOW_SUB": "3단계. 오늘부터 시작하세요.",
"STEP1_TITLE": "미션 둘러보기",
"STEP1_DESC": "앱을 열어 근처의 이용 가능한 미션을 확인하세요. 유형, 거리, 보수로 필터링하세요.",
"STEP2_TITLE": "수락 및 촬영",
"STEP2_DESC": "미션을 예약하고, 해당 위치로 이동하여, 촬영 지침에 따라 작업하세요. 앱을 통해 제출하세요.",
"STEP3_TITLE": "보수 받기",
"STEP3_DESC": "우리 팀이 24시간 이내에 제출물을 검토합니다. 승인되면 지정된 계좌로 입금됩니다.",
"MISSIONS_TITLE": "미션 유형",
"MISSIONS_SUB": "인프라부터 부동산까지——누구에게나 맞는 미션이 있습니다.",
"M1_TITLE": "인프라",
"M1_DESC": "도로, 교량, 공공 시설을 기록하세요. 지자체가 정확한 기록을 유지하도록 돕습니다.",
"M1_CHIP": "가장 인기",
"M2_TITLE": "부동산",
"M2_DESC": "감정 및 보험 목적의 부동산 사진을 촬영하세요. 실내 및 실외 촬영.",
"M2_CHIP": "고보수",
"M3_TITLE": "환경",
"M3_DESC": "해안 침식, 녹지 및 환경 변화를 연구 기관을 위해 촬영하세요.",
"M3_CHIP": "유연한 시간",
"EARNINGS_TITLE": "나의 수익",
"EARNINGS_SUB": "완료한 미션이 많을수록 더 많이 벌 수 있습니다. 상한선 없이, 제한 없이.",
"TIER1_NAME": "스타터",
"TIER1_MISSIONS": "첫 10개 미션",
"TIER1_F1": "표준 미션 보수",
"TIER1_F2": "매주 지급",
"TIER1_F3": "이메일 지원",
"TIER2_NAME": "프로 Zoomer",
"TIER2_MISSIONS": "10개 이상 미션 완료",
"TIER2_F1": "모든 미션 10% 별도 본너스",
"TIER2_F2": "우선 미션 접근 권한",
"TIER2_F3": "더 빠른 검토 (12시간)",
"TIER3_NAME": "엘리트",
"TIER3_MISSIONS": "50개 이상 미션 + Landvex 인증",
"TIER3_F1": "모든 미션 25% 별도 본너스",
"TIER3_F2": "독점 고가치 미션",
"TIER3_F3": "전용 핫라인 지원",
"AUTH_TITLE": "Landvex 인증 Zoomer",
"AUTH_SUB": "인증을 받으세요. 프리미엄 미션과 더 높은 수익을 잠금 해제하세요.",
"AUTH_VISUAL_TITLE": "왜 인증을 받아야 하나요?",
"AUTH_VISUAL_DESC": "Landvex 인증 Zoomer는 신뢰할 수 있는 파트너로서, 정부, 보험사 및 기업의 고가치 미션에 우선적으로 접근할 수 있습니다.",
"AUTH_B1": "프리미엄 미션 우선 접근",
"AUTH_B2": "더 높은 기본 보수 (+25% 본너스)",
"AUTH_B3": "우선 고객 지원",
"AUTH_B4": "프로필에 인증 배지 표시",
"AUTH_S1_TITLE": "온라인 신청",
"AUTH_S1_DESC": "세부 정보와 경험을 입력하여 인증 신청서를 작성하세요.",
"AUTH_S2_TITLE": "본인 확인",
"AUTH_S2_DESC": "신분증을 업로드하고 간단한 화상 통화로 확인을 완료하세요.",
"AUTH_S3_TITLE": "배경 조회",
"AUTH_S3_DESC": "기록을 확인합니다. 대부분의 조회는 2영업일 이내에 완료됩니다.",
"AUTH_S4_TITLE": "인증 획득",
"AUTH_S4_DESC": "퀴즈에 합격하고 Landvex 인증 배지를 받으세요.",
"AUTH_CTA": "인증 신청하기",
"FAQ_TITLE": "자주 묻는 질문",
"FAQ_SUB": "Zoomer가 되기 위해 알아야 할 모든 것.",
"FAQ_Q1": "Zoomer란 무엇인가요?",
"FAQ_A1": "Zoomer는 quiXzoom 앱을 사용하여 촬영 미션을 수행하는 독립 계약자입니다. 언제 어디서 일할지 스스로 결정합니다.",
"FAQ_Q2": "얼마나 벌 수 있나요?",
"FAQ_A2": "수익은 미션 유형과 지역에 따라 다릅니다. 대부분의 미션은 {{CURRENCY_SYMBOL}}1,00010,000입니다. 프로 및 엘리트 Zoomer는 추가 본너스를 받습니다.",
"FAQ_Q3": "언제 돈을 받나요?",
"FAQ_A3": "매주 지난주 승인된 모든 미션에 대한 지급이 처리됩니다. 자금은 지정된 은행 계좌 또는 전자지갑으로 입금됩니다.",
"FAQ_Q4": "시작하려면 무엇이 필요한가요?",
"FAQ_A4": "칼라가 좋은 스마트폰, 본인 확인용 유효한 신분증, 그리고 보수 수령용 은행 계좌 또는 전자지갑이 필요합니다.",
"FAQ_Q5": "가입비가 있나요?",
"FAQ_A5": "아니요. Zoomer로 가입하는 것은 완전히 물가입니다. 플랫폼 수수료나 회비를 일절 받지 않습니다.",
"FOOTER_TAGLINE": "세상을 촬영하세요. 보수를 받으세요. quiXzoom은 현장 데이터 수집을 위한 글로벌 인프라를 구축하고 있습니다.",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "이용 방법",
"FOOTER_COL1_L2": "미션 유형",
"FOOTER_COL1_L3": "수익",
"FOOTER_COL1_L4": "Landvex 인증",
"FOOTER_COL2_TITLE": "비즈니스",
"FOOTER_COL2_L1": "기관용",
"FOOTER_COL2_L2": "요금",
"FOOTER_COL2_L3": "개발자 API",
"FOOTER_COL3_TITLE": "지원",
"FOOTER_COL3_L1": "고객센터",
"FOOTER_COL3_L2": "개인정보처리방침",
"FOOTER_COL3_L3": "이용약관",
"COPYRIGHT": "© 2026 quiXzoom. All rights reserved.",
"LANG_LABEL": "언어:",
"PHONE_MISSION": "도로 조사",
"PHONE_ADDR": "시내 중심가",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}2,850",
"PHONE_META": "3장 · 약 12분"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom Asia — Tangkap Dunia. Dapatkan Bayaran.",
"META_DESC": "Ambil misi foto berhampiran anda. Dibayar setiap minggu. Tiada yuran platform. Tersedia di Asia dalam 9 bahasa.",
"NAV_HOW": "Cara Kerja",
"NAV_MISSIONS": "Misi",
"NAV_EARNINGS": "Pendapatan",
"NAV_LANDVEX": "Pengesahan Landvex",
"NAV_FAQ": "Soalan Lazim",
"CTA_START": "Mula",
"HERO_BADGE": "Pelancaran Asia · 2026",
"HERO_H1": "Tangkap Dunia.",
"HERO_H1_EMPH": "Dapatkan Bayaran per Misi.",
"HERO_SUB": "Ambil misi foto berhampiran anda. Dibayar setiap minggu. Tiada yuran platform. Dilancarkan di seluruh Asia pada tahun 2026.",
"EMAIL_PLACEHOLDER": "Alamat emel anda",
"TRUST_LINE": "Tiada yuran pendaftaran · Tiada yuran platform · Dibayar mingguan · Pengesahan identiti sekali sahaja",
"STAT1_NUM": "50500",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} per misi",
"STAT2_NUM": "Asia",
"STAT2_LBL": "9 negara",
"STAT3_NUM": "0%",
"STAT3_LBL": "yuran platform",
"STATS_1_VAL": "~30 minit",
"STATS_1_LBL": "Masa misi purata",
"STATS_2_VAL": "2026",
"STATS_2_LBL": "Dilancarkan di Asia",
"STATS_3_VAL": "Mingguan",
"STATS_3_LBL": "Jadual pembayaran",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "Dibayar selepas diluluskan",
"HOW_TITLE": "Cara Kerja",
"HOW_SUB": "Tiga langkah. Mula menjana pendapatan hari ini.",
"STEP1_TITLE": "Semak Misi",
"STEP1_DESC": "Buka aplikasi dan lihat misi yang tersedia berhampiran anda. Tapis mengikut jenis, jarak, dan ganjaran.",
"STEP2_TITLE": "Ambil & Tangkap",
"STEP2_DESC": "Tempah sebuah misi, pergi ke lokasi, dan ikut arahan foto. Hantar melalui aplikasi.",
"STEP3_TITLE": "Dapatkan Bayaran",
"STEP3_DESC": "Pasukan kami menilai penghantaran anda dalam masa 24 jam. Sebaik sahaja diluluskan, bayaran dihantar ke akaun anda.",
"MISSIONS_TITLE": "Jenis Misi",
"MISSIONS_SUB": "Dari infrastruktur hingga hartanah——terdapat misi untuk semua orang.",
"M1_TITLE": "Infrastruktur",
"M1_DESC": "Dokumenkan jalan, jambatan, dan kemudahan awam. Bantu pihak berkuasa tempatan mengekalkan rekod yang tepat.",
"M1_CHIP": "Paling Popular",
"M2_TITLE": "Hartanah",
"M2_DESC": "Ambil gambar hartanah untuk tujuan penilaian dan insurans. Gambar dalaman dan luaran.",
"M2_CHIP": "Bayaran Tinggi",
"M3_TITLE": "Alam Sekitar",
"M3_DESC": "Tangkap hakisan pantai, ruang hijau, dan perubahan alam sekitar untuk organisasi penyelidikan.",
"M3_CHIP": "Masa Fleksibel",
"EARNINGS_TITLE": "Pendapatan Anda",
"EARNINGS_SUB": "Lebih banyak misi yang anda selesaikan, lebih banyak yang anda peroleh. Tiada had.",
"TIER1_NAME": "Permulaan",
"TIER1_MISSIONS": "10 misi pertama",
"TIER1_F1": "Kadar misi standard",
"TIER1_F2": "Pembayaran mingguan",
"TIER1_F3": "Sokongan emel",
"TIER2_NAME": "Zoomer Pro",
"TIER2_MISSIONS": "10+ misi selesai",
"TIER2_F1": "Bonus 10% untuk semua misi",
"TIER2_F2": "Akses misi keutamaan",
"TIER2_F3": "Penilaian lebih pantas (12j)",
"TIER3_NAME": "Elit",
"TIER3_MISSIONS": "50+ misi + Pengesahan Landvex",
"TIER3_F1": "Bonus 25% untuk semua misi",
"TIER3_F2": "Misi bernilai tinggi eksklusif",
"TIER3_F3": "Sokongan hotline langsung",
"AUTH_TITLE": "Zoomer Bertauliah Landvex",
"AUTH_SUB": "Dapatkan pensijilan. Buka kunci misi premium dan pendapatan lebih tinggi.",
"AUTH_VISUAL_TITLE": "Mengapa mendapatkan pengesahan?",
"AUTH_VISUAL_DESC": "Zoomer Bertauliah Landvex adalah rakan kongsi dipercayai yang mendapat akses awal ke misi bernilai tinggi daripada kerajaan, syarikat insurans, dan perusahaan.",
"AUTH_B1": "Akses awal ke misi premium",
"AUTH_B2": "Bayaran asas lebih tinggi (+25% bonus)",
"AUTH_B3": "Sokongan pelanggan keutamaan",
"AUTH_B4": "Lencana disahkan pada profil anda",
"AUTH_S1_TITLE": "Mohon Dalam Talian",
"AUTH_S1_DESC": "Isi borang pengesahan dengan butiran dan pengalaman anda.",
"AUTH_S2_TITLE": "Pengesahan Identiti",
"AUTH_S2_DESC": "Muat naik ID anda dan lengkapkan panggilan pengesahan video ringkas.",
"AUTH_S3_TITLE": "Semakan Latar Belakang",
"AUTH_S3_DESC": "Kami mengesahkan rekod anda. Kebanyakan semakan selesai dalam 2 hari bekerja.",
"AUTH_S4_TITLE": "Dapatkan Pensijilan",
"AUTH_S4_DESC": "Lulus kuiz dan terima lencana Bertauliah Landvex anda.",
"AUTH_CTA": "Mohon Pengesahan",
"FAQ_TITLE": "Soalan Lazim",
"FAQ_SUB": "Semua yang anda perlu tahu tentang menjadi Zoomer.",
"FAQ_Q1": "Apakah Zoomer?",
"FAQ_A1": "Zoomer adalah kontraktor bebas yang menyelesaikan misi foto menggunakan aplikasi quiXzoom. Anda memilih bila dan di mana bekerja.",
"FAQ_Q2": "Berapa banyak yang boleh saya peroleh?",
"FAQ_A2": "Pendapatan berbeza mengikut jenis misi dan lokasi. Kebanyakan misi membayar antara {{CURRENCY_SYMBOL}}50500. Zoomer Pro dan Elit mendapat bonus tambahan.",
"FAQ_Q3": "Bila saya dibayar?",
"FAQ_A3": "Pembayaran diproses setiap minggu untuk semua misi yang diluluskan dari minggu sebelumnya. Dana tiba di akaun bank atau dompet elektronik tempatan anda.",
"FAQ_Q4": "Apa yang saya perlukan untuk mula?",
"FAQ_A4": "Telefon pintar dengan kamera yang baik, ID yang sah untuk pengesahan, dan akaun bank atau dompet elektronik untuk menerima pembayaran.",
"FAQ_Q5": "Adakah terdapat yuran pendaftaran?",
"FAQ_A5": "Tidak. Mendaftar sebagai Zoomer adalah percuma sepenuhnya. Kami tidak mengenakan sebarang yuran platform atau keahlian.",
"FOOTER_TAGLINE": "Tangkap Dunia. Dapatkan Bayaran. quiXzoom sedang membina infrastruktur global untuk pengumpulan data lapangan.",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "Cara Kerja",
"FOOTER_COL1_L2": "Jenis Misi",
"FOOTER_COL1_L3": "Pendapatan",
"FOOTER_COL1_L4": "Pengesahan Landvex",
"FOOTER_COL2_TITLE": "Perniagaan",
"FOOTER_COL2_L1": "Untuk Organisasi",
"FOOTER_COL2_L2": "Harga",
"FOOTER_COL2_L3": "API Pembangun",
"FOOTER_COL3_TITLE": "Sokongan",
"FOOTER_COL3_L1": "Pusat Bantuan",
"FOOTER_COL3_L2": "Dasar Privasi",
"FOOTER_COL3_L3": "Terma Perkhidmatan",
"COPYRIGHT": "© 2026 quiXzoom. Hak Cipta Terpelihara.",
"LANG_LABEL": "Bahasa:",
"PHONE_MISSION": "Tinjauan Jalan",
"PHONE_ADDR": "Jalan Utama, Pusat Bandar",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}285",
"PHONE_META": "3 gambar · ~12 minit"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom เอเชีย — ถ่ายภาพโลก รับรายได้",
"META_DESC": "รับภารกิจถ่ายภาพใกล้คุณ รับเงินทุกสัปดาห์ ไม่มีค่าธรรมเนียมแพลตฟอร์ม ให้บริการในเอเชีย 9 ภาษา",
"NAV_HOW": "วิธีใช้งาน",
"NAV_MISSIONS": "ภารกิจ",
"NAV_EARNINGS": "รายได้",
"NAV_LANDVEX": "การรับรอง Landvex",
"NAV_FAQ": "คำถามที่พบบ่อย",
"CTA_START": "เริ่มต้น",
"HERO_BADGE": "เปิดตัวเอเชีย · ปี 2026",
"HERO_H1": "ถ่ายภาพโลก",
"HERO_H1_EMPH": "รับรายได้ต่อภารกิจ",
"HERO_SUB": "รับภารกิจถ่ายภาพใกล้คุณ รับเงินทุกสัปดาห์ ไม่มีค่าธรรมเนียมแพลตฟอร์ม เปิดตัวทั่วเอเชียในปี 2026",
"EMAIL_PLACEHOLDER": "ที่อยู่อีเมลของคุณ",
"TRUST_LINE": "ไม่มีค่าสมัคร · ไม่มีค่าธรรมเนียมแพลตฟอร์ม · จ่ายทุกสัปดาห์ · ยืนยันตัวตนครั้งเดียว",
"STAT1_NUM": "50500",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} ต่อภารกิจ",
"STAT2_NUM": "เอเชีย",
"STAT2_LBL": "9 ประเทศ",
"STAT3_NUM": "0%",
"STAT3_LBL": "ค่าธรรมเนียมแพลตฟอร์ม",
"STATS_1_VAL": "ประมาณ 30 นาที",
"STATS_1_LBL": "เวลาภารกิจเฉลี่ย",
"STATS_2_VAL": "ปี 2026",
"STATS_2_LBL": "เปิดตัวทั่วเอเชีย",
"STATS_3_VAL": "ทุกสัปดาห์",
"STATS_3_LBL": "รอบการจ่ายเงิน",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "จ่ายเมื่ออนุมัติ",
"HOW_TITLE": "วิธีใช้งาน",
"HOW_SUB": "สามขั้นตอน เริ่มรับรายได้วันนี้",
"STEP1_TITLE": "ค้นหาภารกิจ",
"STEP1_DESC": "เปิดแอปและดูภารกิจที่มีใกล้คุณ กรองตามประเภท ระยะทาง และรางวัล",
"STEP2_TITLE": "รับและถ่ายภาพ",
"STEP2_DESC": "จองภารกิจ ไปยังสถานที่ และทำตามคำแนะนำการถ่ายภาพ ส่งผ่านแอป",
"STEP3_TITLE": "รับเงิน",
"STEP3_DESC": "ทีมของเราตรวจสอบการส่งของคุณภายใน 24 ชั่วโมง เมื่ออนุมัติแล้ว เงินจะเข้าบัญชีของคุณ",
"MISSIONS_TITLE": "ประเภทภารกิจ",
"MISSIONS_SUB": "จากโครงสร้างพื้นฐานไปจนถึงอสังหาริมทรัพย์——มีภารกิจสำหรับทุกคน",
"M1_TITLE": "โครงสร้างพื้นฐาน",
"M1_DESC": "บันทึกถนน สะพาน และสิ่งอำนวยความสะดวกสาธารณะ ช่วยเทศบาลรักษาบันทึกที่ถูกต้อง",
"M1_CHIP": "ยอดนิยม",
"M2_TITLE": "อสังหาริมทรัพย์",
"M2_DESC": "ถ่ายภาพอสังหาริมทรัพย์เพื่อการประเมินและประกันภัย ภายในและภายนอก",
"M2_CHIP": "รางวัลสูง",
"M3_TITLE": "สิ่งแวดล้อม",
"M3_DESC": "บันทึกการกัดเซาะชายฝั่ง พื้นที่สีเขียว และการเปลี่ยนแปลงสิ่งแวดล้อมเพื่อองค์กรวิจัย",
"M3_CHIP": "เวลายืดหยุ่น",
"EARNINGS_TITLE": "รายได้ของคุณ",
"EARNINGS_SUB": "ภารกิจที่เสร็จสมบูรณ์มากเท่าไหร่ รายได้ก็มากเท่านั้น ไม่มีเพดาน ไม่มีขีดจำกัด",
"TIER1_NAME": "มือใหม่",
"TIER1_MISSIONS": "10 ภารกิจแรก",
"TIER1_F1": "อัตราภารกิจมาตรฐาน",
"TIER1_F2": "จ่ายทุกสัปดาห์",
"TIER1_F3": "สนับสนุนทางอีเมล",
"TIER2_NAME": "Zoomer มืออาชีพ",
"TIER2_MISSIONS": "ทำภารกิจ 10+ ครั้ง",
"TIER2_F1": "โบนัส 10% ทุกภารกิจ",
"TIER2_F2": "เข้าถึงภารกิจก่อนใคร",
"TIER2_F3": "ตรวจสอบเร็วขึ้น (12 ชม.)",
"TIER3_NAME": "ระดับสูง",
"TIER3_MISSIONS": "ทำภารกิจ 50+ ครั้ง + การรับรอง Landvex",
"TIER3_F1": "โบนัส 25% ทุกภารกิจ",
"TIER3_F2": "ภารกิจมูลค่าสูงเฉพาะ",
"TIER3_F3": "สายด่วนโดยตรง",
"AUTH_TITLE": "Zoomer ที่ได้รับการรับรอง Landvex",
"AUTH_SUB": "รับการรับรอง ปลดล็อกภารกิจพรีเมียมและรายได้ที่สูงขึ้น",
"AUTH_VISUAL_TITLE": "ทำไมต้องรับการรับรอง?",
"AUTH_VISUAL_DESC": "Zoomer ที่ได้รับการรับรอง Landvex เป็นพันธมิตรที่เชื่อถือได้ ซึ่งสามารถเข้าถึงภารกิจมูลค่าสูงจากรัฐบาล บริษัทประกัน และองค์กรก่อนใคร",
"AUTH_B1": "เข้าถึงภารกิจพรีเมียมก่อนใคร",
"AUTH_B2": "ค่าตอบแทนพื้นฐานสูงขึ้น (+25% โบนัส)",
"AUTH_B3": "สนับสนุนลูกค้าก่อนใคร",
"AUTH_B4": "แสดงตรารับรองบนโปรไฟล์ของคุณ",
"AUTH_S1_TITLE": "สมัครออนไลน์",
"AUTH_S1_DESC": "กรอกแบบฟอร์มการรับรองด้วยรายละเอียดและประสบการณ์ของคุณ",
"AUTH_S2_TITLE": "ยืนยันตัวตน",
"AUTH_S2_DESC": "อัปโหลดบัตรประชาชนและทำการยืนยันทางวิดีโอคอลอย่างรวดเร็ว",
"AUTH_S3_TITLE": "ตรวจสอบประวัติ",
"AUTH_S3_DESC": "เราตรวจสอบประวัติของคุณ การตรวจสอบส่วนใหญ่เสร็จสิ้นภายใน 2 วันทำการ",
"AUTH_S4_TITLE": "รับการรับรอง",
"AUTH_S4_DESC": "ผ่านแบบทดสอบและรับตรารับรอง Landvex ของคุณ",
"AUTH_CTA": "สมัครขอรับการรับรอง",
"FAQ_TITLE": "คำถามที่พบบ่อย",
"FAQ_SUB": "ทุกสิ่งที่คุณต้องรู้เกี่ยวกับการเป็น Zoomer",
"FAQ_Q1": "Zoomer คืออะไร?",
"FAQ_A1": "Zoomer คือผู้รับเหมาอิสระที่ทำภารกิจถ่ายภาพโดยใช้แอป quiXzoom คุณเลือกได้ว่าจะทำงานเมื่อไหร่และที่ไหน",
"FAQ_Q2": "ฉันสามารถรับรายได้เท่าไหร่?",
"FAQ_A2": "รายได้ขึ้นอยู่กับประเภทภารกิจและสถานที่ ภารกิจส่วนใหญ่จ่ายระหว่าง {{CURRENCY_SYMBOL}}50500 Zoomer ระดับมืออาชีพและระดับสูงจะได้รับโบนัสเพิ่ม",
"FAQ_Q3": "ฉันจะได้รับเงินเมื่อไหร่?",
"FAQ_A3": "การจ่ายเงินจะดำเนินการทุกสัปดาห์สำหรับภารกิจที่อนุมัติแล้วในสัปดาห์ก่อนหน้า เงินจะเข้าบัญชีธนาคารหรือกระเป๋าเงินอิเล็กทรอนิกส์ของคุณ",
"FAQ_Q4": "ฉันต้องการอะไรเพื่อเริ่มต้น?",
"FAQ_A4": "สมาร์ทโฟนที่มีกล้องดี บัตรประชาชนที่ใช้งานได้สำหรับการยืนยันตัวตน และบัญชีธนาคารหรือกระเป๋าเงินอิเล็กทรอนิกส์สำหรับรับเงิน",
"FAQ_Q5": "มีค่าสมัครหรือไม่?",
"FAQ_A5": "ไม่มี การสมัครเป็น Zoomer ฟรีทั้งหมด เราไม่คิดค่าธรรมเนียมแพลตฟอร์มหรือค่าสมาชิกใดๆ",
"FOOTER_TAGLINE": "ถ่ายภาพโลก รับรายได้ quiXzoom กำลังสร้างโครงสร้างพื้นฐานระดับโลกสำหรับการรวบรวมข้อมูลภาคสนาม",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "วิธีใช้งาน",
"FOOTER_COL1_L2": "ประเภทภารกิจ",
"FOOTER_COL1_L3": "รายได้",
"FOOTER_COL1_L4": "การรับรอง Landvex",
"FOOTER_COL2_TITLE": "ธุรกิจ",
"FOOTER_COL2_L1": "สำหรับองค์กร",
"FOOTER_COL2_L2": "ราคา",
"FOOTER_COL2_L3": "API สำหรับนักพัฒนา",
"FOOTER_COL3_TITLE": "สนับสนุน",
"FOOTER_COL3_L1": "ศูนย์ช่วยเหลือ",
"FOOTER_COL3_L2": "นโยบายความเป็นส่วนตัว",
"FOOTER_COL3_L3": "ข้อกำหนดในการให้บริการ",
"COPYRIGHT": "© 2026 quiXzoom สงวนลิขสิทธิ์",
"LANG_LABEL": "ภาษา:",
"PHONE_MISSION": "สำรวจถนน",
"PHONE_ADDR": "ถนนสายหลัก ย่านธุรกิจ",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}285",
"PHONE_META": "3 รูป · ประมาณ 12 นาที"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom Châu Á — Chụp ảnh thế giới. Nhận thù lao.",
"META_DESC": "Nhận nhiệm vụ chụp ảnh gần bạn. Nhận tiền hàng tuần. Không phí nền tảng. Có sẵn tại Châu Á với 9 ngôn ngữ.",
"NAV_HOW": "Cách hoạt động",
"NAV_MISSIONS": "Nhiệm vụ",
"NAV_EARNINGS": "Thu nhập",
"NAV_LANDVEX": "Chứng nhận Landvex",
"NAV_FAQ": "Câu hỏi thường gặp",
"CTA_START": "Bắt đầu",
"HERO_BADGE": "Ra mắt Châu Á · 2026",
"HERO_H1": "Chụp ảnh thế giới.",
"HERO_H1_EMPH": "Nhận thù lao theo nhiệm vụ.",
"HERO_SUB": "Nhận nhiệm vụ chụp ảnh gần bạn. Nhận tiền hàng tuần. Không phí nền tảng. Ra mắt trên toàn Châu Á vào năm 2026.",
"EMAIL_PLACEHOLDER": "Địa chỉ email của bạn",
"TRUST_LINE": "Không phí đăng ký · Không phí nền tảng · Thanh toán hàng tuần · Xác minh danh tính một lần",
"STAT1_NUM": "50500",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} /nhiệm vụ",
"STAT2_NUM": "Châu Á",
"STAT2_LBL": "9 quốc gia",
"STAT3_NUM": "0%",
"STAT3_LBL": "phí nền tảng",
"STATS_1_VAL": "~30 phút",
"STATS_1_LBL": "Thờigian nhiệm vụ trung bình",
"STATS_2_VAL": "2026",
"STATS_2_LBL": "Ra mắt trên toàn Châu Á",
"STATS_3_VAL": "Hàng tuần",
"STATS_3_LBL": "Chu kỳ thanh toán",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "Thanh toán khi phê duyệt",
"HOW_TITLE": "Cách hoạt động",
"HOW_SUB": "Ba bước. Bắt đầu kiếm tiền ngay hôm nay.",
"STEP1_TITLE": "Tìm nhiệm vụ",
"STEP1_DESC": "Mở ứng dụng và xem các nhiệm vụ có sẵn gần bạn. Lọc theo loại, khoảng cách và phần thưởng.",
"STEP2_TITLE": "Nhận & chụp ảnh",
"STEP2_DESC": "Đặt trước một nhiệm vụ, đến địa điểm và làm theo hướng dẫn chụp ảnh. Gửi qua ứng dụng.",
"STEP3_TITLE": "Nhận tiền",
"STEP3_DESC": "Đội ngũ của chúng tôi xem xét bài gửi của bạn trong vòng 24 giờ. Sau khi phê duyệt, tiền sẽ được chuyển vào tài khoản của bạn.",
"MISSIONS_TITLE": "Loại nhiệm vụ",
"MISSIONS_SUB": "Từ cơ sở hạ tầng đến bất động sản——có nhiệm vụ phù hợp với mọi ngườii.",
"M1_TITLE": "Cơ sở hạ tầng",
"M1_DESC": "Ghi lại đường xá, cầu cống và cơ sở công cộng. Giúp chính quyền địa phương duy trì hồ sơ chính xác.",
"M1_CHIP": "Phổ biến nhất",
"M2_TITLE": "Bất động sản",
"M2_DESC": "Chụp ảnh bất động sản cho mục đích thẩm định và bảo hiểm. Ảnh trong nhà và ngoài trờii.",
"M2_CHIP": "Thù lao cao",
"M3_TITLE": "Môi trường",
"M3_DESC": "Ghi lại xói mòn bờ biển, không gian xanh và thay đổi môi trường cho các tổ chức nghiên cứu.",
"M3_CHIP": "Linh hoạt thờigian",
"EARNINGS_TITLE": "Thu nhập của bạn",
"EARNINGS_SUB": "Hoàn thành càng nhiều nhiệm vụ, bạn càng kiếm được nhiều. Không giới hạn, không ràng buộc.",
"TIER1_NAME": "Ngườii mới",
"TIER1_MISSIONS": "10 nhiệm vụ đầu tiên",
"TIER1_F1": "Mức thù lao nhiệm vụ tiêu chuẩn",
"TIER1_F2": "Thanh toán hàng tuần",
"TIER1_F3": "Hỗ trợ qua email",
"TIER2_NAME": "Zoomer chuyên nghiệp",
"TIER2_MISSIONS": "Hoàn thành 10+ nhiệm vụ",
"TIER2_F1": "Thưởng 10% cho mọi nhiệm vụ",
"TIER2_F2": "Ưu tiên tiếp cận nhiệm vụ",
"TIER2_F3": "Xem xét nhanh hơn (12h)",
"TIER3_NAME": "Tinh anh",
"TIER3_MISSIONS": "50+ nhiệm vụ + Chứng nhận Landvex",
"TIER3_F1": "Thưởng 25% cho mọi nhiệm vụ",
"TIER3_F2": "Nhiệm vụ giá trị cao độc quyền",
"TIER3_F3": "Đường dây nóng trực tiếp",
"AUTH_TITLE": "Zoomer được Chứng nhận Landvex",
"AUTH_SUB": "Nhận chứng nhận. Mở khóa nhiệm vụ cao cấp và thu nhập cao hơn.",
"AUTH_VISUAL_TITLE": "Tại sao nên nhận chứng nhận?",
"AUTH_VISUAL_DESC": "Zoomer được Chứng nhận Landvex là đối tác đáng tin cậy, được ưu tiên tiếp cận các nhiệm vụ giá trị cao từ chính phủ, công ty bảo hiểm và doanh nghiệp.",
"AUTH_B1": "Ưu tiên tiếp cận nhiệm vụ cao cấp",
"AUTH_B2": "Lương cơ bản cao hơn (+25% thưởng)",
"AUTH_B3": "Ưu tiên hỗ trợ khách hàng",
"AUTH_B4": "Huy hiệu chứng nhận trên hồ sơ của bạn",
"AUTH_S1_TITLE": "Đăng ký trực tuyến",
"AUTH_S1_DESC": "Điền vào mẫu đăng ký chứng nhận với thông tin chi tiết và kinh nghiệm của bạn.",
"AUTH_S2_TITLE": "Xác minh danh tính",
"AUTH_S2_DESC": "Tải lên giấy tờ tùy thân và hoàn thành cuộc gọi xác minh video nhanh chóng.",
"AUTH_S3_TITLE": "Kiểm tra lý lịch",
"AUTH_S3_DESC": "Chúng tôi xác minh hồ sơ của bạn. Hầu hết các kiểm tra hoàn thành trong vòng 2 ngày làm việc.",
"AUTH_S4_TITLE": "Nhận chứng nhận",
"AUTH_S4_DESC": "Vượt qua bài kiểm tra và nhận huy hiệu Chứng nhận Landvex của bạn.",
"AUTH_CTA": "Đăng ký Chứng nhận",
"FAQ_TITLE": "Câu hỏi thường gặp",
"FAQ_SUB": "Mọi thứ bạn cần biết về việc trở thành Zoomer.",
"FAQ_Q1": "Zoomer là gì?",
"FAQ_A1": "Zoomer là nhà thầu độc lập thực hiện các nhiệm vụ chụp ảnh bằng ứng dụng quiXzoom. Bạn chọn khi nào và ở đâu làm việc.",
"FAQ_Q2": "Tôi có thể kiếm được bao nhiêu?",
"FAQ_A2": "Thu nhập phụ thuộc vào loại nhiệm vụ và địa điểm. Hầu hết các nhiệm vụ trả từ {{CURRENCY_SYMBOL}}50500. Zoomer chuyên nghiệp và tinh anh nhận thêm thưởng.",
"FAQ_Q3": "Khi nào tôi nhận được tiền?",
"FAQ_A3": "Thanh toán được xử lý hàng tuần cho tất cả các nhiệm vụ đã phê duyệt từ tuần trước. Tiền sẽ đến tài khoản ngân hàng hoặc ví điện tử của bạn.",
"FAQ_Q4": "Tôi cần gì để bắt đầu?",
"FAQ_A4": "Một điện thoại thông minh có camera tốt, giấy tờ tùy thân hợp lệ để xác minh, và tài khoản ngân hàng hoặc ví điện tử để nhận tiền.",
"FAQ_Q5": "Có phí đăng ký không?",
"FAQ_A5": "Không. Đăng ký làm Zoomer hoàn toàn miễn phí. Chúng tôi không thu bất kỳ phí nền tảng hoặc phí thành viên nào.",
"FOOTER_TAGLINE": "Chụp ảnh thế giới. Nhận thù lao. quiXzoom đang xây dựng cơ sở hạ tầng toàn cầu để thu thập dữ liệu hiện trường.",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "Cách hoạt động",
"FOOTER_COL1_L2": "Loại nhiệm vụ",
"FOOTER_COL1_L3": "Thu nhập",
"FOOTER_COL1_L4": "Chứng nhận Landvex",
"FOOTER_COL2_TITLE": "Doanh nghiệp",
"FOOTER_COL2_L1": "Dành cho tổ chức",
"FOOTER_COL2_L2": "Giá cả",
"FOOTER_COL2_L3": "API nhà phát triển",
"FOOTER_COL3_TITLE": "Hỗ trợ",
"FOOTER_COL3_L1": "Trung tâm trợ giúp",
"FOOTER_COL3_L2": "Chính sách quyền riêng tư",
"FOOTER_COL3_L3": "Điều khoản dịch vụ",
"COPYRIGHT": "© 2026 quiXzoom. Đã đăng ký bản quyền.",
"LANG_LABEL": "Ngôn ngữ:",
"PHONE_MISSION": "Khảo sát đường",
"PHONE_ADDR": "Đường chính, Trung tâm",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}285",
"PHONE_META": "3 ảnh · ~12 phút"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom 亚洲 — 拍摄世界。赚取报酬。",
"META_DESC": "在附近接取拍摄任务。每周获得报酬。零平台费。亚洲9种语言可用。",
"NAV_HOW": "如何运作",
"NAV_MISSIONS": "任务类型",
"NAV_EARNINGS": "收入",
"NAV_LANDVEX": "Landvex认证",
"NAV_FAQ": "常见问题",
"CTA_START": "开始赚钱",
"HERO_BADGE": "亚洲上线 · 2026年推出",
"HERO_H1": "拍摄世界。",
"HERO_H1_EMPH": "按任务赚取报酬。",
"HERO_SUB": "在附近接取拍摄任务。每周获得报酬。零平台费。2026年在亚洲全面推出。",
"EMAIL_PLACEHOLDER": "您的电子邮箱",
"TRUST_LINE": "无注册费 · 无平台费 · 每周付款 · 仅需一次身份验证",
"STAT1_NUM": "50500",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} 每任务",
"STAT2_NUM": "亚洲",
"STAT2_LBL": "9个国家上线",
"STAT3_NUM": "0%",
"STAT3_LBL": "平台费",
"STATS_1_VAL": "约30分钟",
"STATS_1_LBL": "平均任务时长",
"STATS_2_VAL": "2026年",
"STATS_2_LBL": "亚洲全面推出",
"STATS_3_VAL": "每周",
"STATS_3_LBL": "付款周期",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "审核通过后付款",
"HOW_TITLE": "如何运作",
"HOW_SUB": "三个步骤。今天开始赚钱。",
"STEP1_TITLE": "浏览任务",
"STEP1_DESC": "打开应用,查看附近的可用任务。按类型、距离和报酬筛选。",
"STEP2_TITLE": "接取并拍摄",
"STEP2_DESC": "预订任务,前往地点,按照拍摄说明操作。通过应用提交。",
"STEP3_TITLE": "获得报酬",
"STEP3_DESC": "我们的团队在24小时内审核您的提交。审核通过后,款项将发送至您的账户。",
"MISSIONS_TITLE": "任务类型",
"MISSIONS_SUB": "从基础设施到房地产——总有一款任务适合您。",
"M1_TITLE": "基础设施",
"M1_DESC": "记录道路、桥梁和公共设施。帮助市政当局维护准确记录。",
"M1_CHIP": "最受欢迎",
"M2_TITLE": "房地产",
"M2_DESC": "为评估和保险目的拍摄房产照片。室内和室外拍摄。",
"M2_CHIP": "高报酬",
"M3_TITLE": "环境",
"M3_DESC": "为研究机构拍摄海岸侵蚀、绿地和环境变化。",
"M3_CHIP": "时间灵活",
"EARNINGS_TITLE": "您的收入",
"EARNINGS_SUB": "完成的任务越多,赚得越多。无上限,无限制。",
"TIER1_NAME": "新手",
"TIER1_MISSIONS": "前10个任务",
"TIER1_F1": "标准任务报酬",
"TIER1_F2": "每周付款",
"TIER1_F3": "邮件支持",
"TIER2_NAME": "专业Zoomer",
"TIER2_MISSIONS": "完成10个以上任务",
"TIER2_F1": "所有任务10%奖金",
"TIER2_F2": "优先任务权限",
"TIER2_F3": "更快审核(12小时)",
"TIER3_NAME": "精英",
"TIER3_MISSIONS": "完成50个以上任务 + Landvex认证",
"TIER3_F1": "所有任务25%奖金",
"TIER3_F2": "独家高价值任务",
"TIER3_F3": "专线支持",
"AUTH_TITLE": "Landvex认证Zoomer",
"AUTH_SUB": "获得认证。解锁高级任务和更高收入。",
"AUTH_VISUAL_TITLE": "为什么要获得认证?",
"AUTH_VISUAL_DESC": "Landvex认证Zoomer是值得信赖的合作伙伴,可以优先获得来自政府、保险公司和企业的高价值任务。",
"AUTH_B1": "优先获得高级任务",
"AUTH_B2": "更高的基本工资(+25%奖金)",
"AUTH_B3": "优先客户支持",
"AUTH_B4": "个人资料上显示认证徽章",
"AUTH_S1_TITLE": "在线申请",
"AUTH_S1_DESC": "填写授权表格,提供您的详细信息和经验。",
"AUTH_S2_TITLE": "身份验证",
"AUTH_S2_DESC": "上传您的身份证件并完成快速视频验证通话。",
"AUTH_S3_TITLE": "背景调查",
"AUTH_S3_DESC": "我们核实您的记录。大多数调查在2个工作日内完成。",
"AUTH_S4_TITLE": "获得认证",
"AUTH_S4_DESC": "通过测验并获得您的Landvex认证徽章。",
"AUTH_CTA": "申请认证",
"FAQ_TITLE": "常见问题",
"FAQ_SUB": "关于成为Zoomer,您需要了解的一切。",
"FAQ_Q1": "什么是Zoomer",
"FAQ_A1": "Zoomer是使用quiXzoom应用完成拍摄任务的独立承包商。您可以选择何时何地工作。",
"FAQ_Q2": "我能赚多少钱?",
"FAQ_A2": "收入因任务类型和地点而异。大多数任务报酬在{{CURRENCY_SYMBOL}}50500之间。专业和精英Zoomer还可获得额外奖金。",
"FAQ_Q3": "我什么时候能拿到钱?",
"FAQ_A3": "每周处理一次付款,涵盖上周所有已审核通过的任务。资金将到达您的本地银行账户或电子钱包。",
"FAQ_Q4": "开始需要什么?",
"FAQ_A4": "一部配备良好摄像头的智能手机、用于验证的有效身份证件,以及用于收款的银行账户或电子钱包。",
"FAQ_Q5": "有注册费吗?",
"FAQ_A5": "没有。注册成为Zoomer完全免费。我们不收取任何平台费或会员费。",
"FOOTER_TAGLINE": "拍摄世界。赚取报酬。quiXzoom正在构建全球现场数据采集基础设施。",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "如何运作",
"FOOTER_COL1_L2": "任务类型",
"FOOTER_COL1_L3": "收入",
"FOOTER_COL1_L4": "Landvex认证",
"FOOTER_COL2_TITLE": "商务",
"FOOTER_COL2_L1": "面向组织",
"FOOTER_COL2_L2": "定价",
"FOOTER_COL2_L3": "开发者API",
"FOOTER_COL3_TITLE": "支持",
"FOOTER_COL3_L1": "帮助中心",
"FOOTER_COL3_L2": "隐私政策",
"FOOTER_COL3_L3": "服务条款",
"COPYRIGHT": "© 2026 quiXzoom。保留所有权利。",
"LANG_LABEL": "语言:",
"PHONE_MISSION": "道路调查",
"PHONE_ADDR": "市中心主街",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}285",
"PHONE_META": "3张照片 · 约12分钟"
}
@@ -0,0 +1,126 @@
{
"TITLE": "quiXzoom 亞洲 — 拍攝世界。賺取報酬。",
"META_DESC": "在附近接取拍攝任務。每週獲得報酬。零平台費。亞洲9種語言可用。",
"NAV_HOW": "如何運作",
"NAV_MISSIONS": "任務類型",
"NAV_EARNINGS": "收入",
"NAV_LANDVEX": "Landvex認證",
"NAV_FAQ": "常見問題",
"CTA_START": "開始賺錢",
"HERO_BADGE": "亞洲上線 · 2026年推出",
"HERO_H1": "拍攝世界。",
"HERO_H1_EMPH": "按任務賺取報酬。",
"HERO_SUB": "在附近接取拍攝任務。每週獲得報酬。零平台費。2026年在亞洲全面推出。",
"EMAIL_PLACEHOLDER": "您的電子郵件",
"TRUST_LINE": "無註冊費 · 無平台費 · 每週付款 · 僅需一次身份驗證",
"STAT1_NUM": "50500",
"STAT1_LBL": "{{CURRENCY_SYMBOL}} 每任務",
"STAT2_NUM": "亞洲",
"STAT2_LBL": "9個國家上線",
"STAT3_NUM": "0%",
"STAT3_LBL": "平台費",
"STATS_1_VAL": "約30分鐘",
"STATS_1_LBL": "平均任務時長",
"STATS_2_VAL": "2026年",
"STATS_2_LBL": "亞洲全面推出",
"STATS_3_VAL": "每週",
"STATS_3_LBL": "付款週期",
"STATS_4_VAL": "100%",
"STATS_4_LBL": "審核通過後付款",
"HOW_TITLE": "如何運作",
"HOW_SUB": "三個步驟。今天開始賺錢。",
"STEP1_TITLE": "瀏覽任務",
"STEP1_DESC": "打開應用,查看附近的可用任務。按類型、距離和報酬篩選。",
"STEP2_TITLE": "接取並拍攝",
"STEP2_DESC": "預訂任務,前往地點,按照拍攝說明操作。通過應用提交。",
"STEP3_TITLE": "獲得報酬",
"STEP3_DESC": "我們的團隊在24小時內審核您的提交。審核通過後,款項將發送至您的帳戶。",
"MISSIONS_TITLE": "任務類型",
"MISSIONS_SUB": "從基礎設施到房地產——總有一款任務適合您。",
"M1_TITLE": "基礎設施",
"M1_DESC": "記錄道路、橋樑和公共設施。幫助市政當局維護準確記錄。",
"M1_CHIP": "最受歡迎",
"M2_TITLE": "房地產",
"M2_DESC": "為評估和保險目的拍攝房產照片。室內和室外拍攝。",
"M2_CHIP": "高報酬",
"M3_TITLE": "環境",
"M3_DESC": "為研究機構拍攝海岸侵蝕、綠地和環境變化。",
"M3_CHIP": "時間靈活",
"EARNINGS_TITLE": "您的收入",
"EARNINGS_SUB": "完成的任務越多,賺得越多。無上限,無限制。",
"TIER1_NAME": "新手",
"TIER1_MISSIONS": "前10個任務",
"TIER1_F1": "標準任務報酬",
"TIER1_F2": "每週付款",
"TIER1_F3": "郵件支援",
"TIER2_NAME": "專業Zoomer",
"TIER2_MISSIONS": "完成10個以上任務",
"TIER2_F1": "所有任務10%獎金",
"TIER2_F2": "優先任務權限",
"TIER2_F3": "更快審核(12小時)",
"TIER3_NAME": "精英",
"TIER3_MISSIONS": "完成50個以上任務 + Landvex認證",
"TIER3_F1": "所有任務25%獎金",
"TIER3_F2": "獨家高價值任務",
"TIER3_F3": "專線支援",
"AUTH_TITLE": "Landvex認證Zoomer",
"AUTH_SUB": "獲得認證。解鎖高級任務和更高收入。",
"AUTH_VISUAL_TITLE": "為什麼要獲得認證?",
"AUTH_VISUAL_DESC": "Landvex認證Zoomer是值得信賴的合作夥伴,可以優先獲得來自政府、保險公司和高價值企業的任務。",
"AUTH_B1": "優先獲得高級任務",
"AUTH_B2": "更高的基本報酬(+25%獎金)",
"AUTH_B3": "優先客戶支援",
"AUTH_B4": "個人資料上顯示認證徽章",
"AUTH_S1_TITLE": "在線申請",
"AUTH_S1_DESC": "填寫認證表格,提供您的詳細資訊和經驗。",
"AUTH_S2_TITLE": "身份驗證",
"AUTH_S2_DESC": "上傳您的身份證件並完成快速視頻驗證通話。",
"AUTH_S3_TITLE": "背景調查",
"AUTH_S3_DESC": "我們核實您的記錄。大多數調查在2個工作日內完成。",
"AUTH_S4_TITLE": "獲得認證",
"AUTH_S4_DESC": "通過測驗並獲得您的Landvex認證徽章。",
"AUTH_CTA": "申請認證",
"FAQ_TITLE": "常見問題",
"FAQ_SUB": "關於成為Zoomer,您需要了解的一切。",
"FAQ_Q1": "什麼是Zoomer",
"FAQ_A1": "Zoomer是使用quiXzoom應用完成拍攝任務的獨立承包商。您可以選擇何時何地工作。",
"FAQ_Q2": "我能賺多少錢?",
"FAQ_A2": "收入因任務類型和地點而異。大多數任務報酬在{{CURRENCY_SYMBOL}}50500之間。專業和精英Zoomer還可獲得額外獎金。",
"FAQ_Q3": "我什麼時候能拿到錢?",
"FAQ_A3": "每週處理一次付款,涵蓋上週所有已審核通過的任務。資金將到達您的本地銀行帳戶或電子錢包。",
"FAQ_Q4": "開始需要什麼?",
"FAQ_A4": "一部配備良好攝像頭的智能手機、用於驗證的有效身份證件,以及用於收款的銀行帳戶或電子錢包。",
"FAQ_Q5": "有註冊費嗎?",
"FAQ_A5": "沒有。註冊成為Zoomer完全免費。我們不收取任何平台費或會員費。",
"FOOTER_TAGLINE": "拍攝世界。賺取報酬。quiXzoom正在構建全球現場數據採集基礎設施。",
"FOOTER_COL1_TITLE": "Zoomer",
"FOOTER_COL1_L1": "如何運作",
"FOOTER_COL1_L2": "任務類型",
"FOOTER_COL1_L3": "收入",
"FOOTER_COL1_L4": "Landvex認證",
"FOOTER_COL2_TITLE": "商務",
"FOOTER_COL2_L1": "面向組織",
"FOOTER_COL2_L2": "定價",
"FOOTER_COL2_L3": "開發者API",
"FOOTER_COL3_TITLE": "支援",
"FOOTER_COL3_L1": "幫助中心",
"FOOTER_COL3_L2": "隱私政策",
"FOOTER_COL3_L3": "服務條款",
"COPYRIGHT": "© 2026 quiXzoom。保留所有權利。",
"LANG_LABEL": "語言:",
"PHONE_MISSION": "道路調查",
"PHONE_ADDR": "市中心主街",
"PHONE_REWARD": "{{CURRENCY_SYMBOL}}285",
"PHONE_META": "3張照片 · 約12分鐘"
}