// ╔══════════════════════════════════════════════════════════╗ // ║ 六命解析 — LIFE CODE ENGINE v2 ║ // ╚══════════════════════════════════════════════════════════╝ // ═══ I18N(多言語化 v1: タイ語) ═══ // LANG は URL ?lang= → localStorage → 既定 ja の順で決まる。 // タイ語時のみ React.createElement をラップし、静的な日本語文字列 // (JSXテキスト・表示用props)を辞書 TH_DICT で置き換える。 // 辞書に無い文言は日本語のまま表示されるため、日本語版の挙動は不変。 const SUPPORTED_LANGS = ["ja", "th", "en"]; const LANG = (() => { try { const p = new URLSearchParams(window.location.search).get("lang"); if (p && SUPPORTED_LANGS.includes(p)) { window.localStorage.setItem("lc_lang", p); return p; } const saved = window.localStorage.getItem("lc_lang"); return saved && SUPPORTED_LANGS.includes(saved) ? saved : "ja"; } catch (e) { return "ja"; } })(); let TH_DICT = {}; const t = (s) => { if (LANG === "ja" || typeof s !== "string") return s; return TH_DICT[s] || TH_DICT[s.trim()] || s; }; const tf = (tpl, vars) => { let s = t(tpl); if (vars) for (const k of Object.keys(vars)) s = s.split("{" + k + "}").join(String(vars[k])); return s; }; // ヘッダーのログイン中ユーザー名(ja「{name} 様」/en 名前のみ/th「คุณ{name}」)。 // createElement ラッパーは文字列の子だけを t() に通すため、配列で返して // ユーザー名そのものが辞書で置き換わらないようにする。 const userHonorific = (name) => { const n = name || t("ユーザー"); if (LANG === "en") return [n]; if (LANG === "th") return ["คุณ" + n]; return [n + " 様"]; }; document.documentElement.lang = LANG; if (LANG !== "ja") { document.title = "Life Code — วิเคราะห์ลิขิตชีวิต"; if (LANG === "en") document.title = "Life Code — Six Destinies Reading"; const __origCreateElement = React.createElement; const __translatableProps = ["placeholder", "title", "aria-label", "alt", "label", "sub", "subtitle"]; React.createElement = function (type, props, ...children) { let nextProps = props; if (props) { let changed = false; const copy = { ...props }; for (const k of __translatableProps) { if (typeof copy[k] === "string" && /[ぁ-んァ-ヶ一-龠]/.test(copy[k])) { const tr = t(copy[k]); if (tr !== copy[k]) { copy[k] = tr; changed = true; } } } if (changed) nextProps = copy; } const nextChildren = children.map((c) => (typeof c === "string" ? t(c) : c)); return __origCreateElement(type, nextProps, ...nextChildren); }; } // タイ語表示時の仏暦(พ.ศ.)誤入力防止ヒント。内部値は常に西暦。 const BuddhistYearHint = ({ value }) => { if (LANG !== "th" || !value) return null; const m = /^(\d{4})/.exec(String(value)); if (!m) return null; const ce = parseInt(m[1], 10); if (!ce) return null; const looksBuddhist = ce > 2100; return (
生年月日に刻まれた六つの命の傾向を
古典占術と宇宙のリズムで解き明かす
六命解析は、複数の占術を組み合わせた占い。
自己理解や話題のきっかけとして、気軽に楽しんでね。
| {PLAN_COMPARISON_PLANS.map((plan) => ( |
{t(plan.name)}
{plan.key !== "calendar_next" &&
purchaseProductInfo(products, plan.key).price != null ? (
{formatPurchasePrice(purchaseProductInfo(products, plan.key).price)}
) : null}
|
))}
|---|---|
| {t(feature.label)} | {PLAN_COMPARISON_PLANS.map((plan) => ({plan.rights.indexOf(feature.key) !== -1 ? ( ○ ) : ( × )} | ))}
| {PLAN_COMPARISON_PLANS.map((plan) => ( | {(() => { // calendar_next は Phase D まで「近日公開」(D10=b)。 const comingSoon = plan.key === "calendar_next"; const owned = !comingSoon && !!(ownedProducts && ownedProducts[plan.key]); const enabled = !comingSoon && !owned && typeof onPurchase === "function"; return ( ); })()} | ))}
✦ {dayF.action}
{paragraph}
))} {narrative.affirmation && ({narrative.affirmation}
)} {narrative.closer && ({t("六命解析では、生年月日から6つの傾向スコアを出して、上から順に「主命」「副命」「内命」として読み解くよ。")}
{t("主命タイプは、あなたの力の出方の中心。意識しなくても、いちばん自然に出る動き方だよ。")}
{t("副命タイプは、その力の使い方。主命の力をどんな手順・どんな形にして外に出すかに表れやすいよ。")}
{t("内命タイプは、ふだんは目立ちにくい面。一人で考えるときや、追い込まれたときに出やすいよ。")}
{t("「主命の力 × 副命の使い方」で読むと、なぜその動き方になるのかが見えてくるはず。")}
>{t(ELEMENT_DATA[domEl]?.desc)} {t("あなたの本質的なエネルギーは")} {tf("{el}気", { el: t(domEl) })} {t("が握ってるよ。")}
{KYUSEI_NAMES[kyusei - 1]}の気質。恵方 {KYUSEI_DIRS[kyusei - 1]} を意識すると運気が整うよ。
{zodiac.name} {t("に生まれたあなたは、星々の配置が織りなす独自の運命の糸を持ってるよ。")}{" "} {t("本来の自分を信じて動くと、隠れた才能が開いていくよ。")}
{t("誕生から")}{" "} {bio.days.toLocaleString()} {" "} {tf("日。 肉体{p}期 · 感情{e}期 · 知性{i}期。", { p: t(bio.physical > 0 ? "上昇" : "調整"), e: t(bio.emotional > 0 ? "高揚" : "内省"), i: t(bio.intellectual > 0 ? "活性" : "蓄積"), })}
マヤ暦KIN {maya.kinNum}「 {maya.kin} 」。 {maya.tone}の波動があなたの使命を決めるよ。
六命解析は、四柱推命・数秘術・九星気学などの占術要素をもとに、独自のスコアリングで傾向を読み解いたものです。
結果は、自己理解や日々の行動を考えるための参考情報としてお楽しみください。
恋愛・仕事・お金・健康・法律などに関する重要な判断は、占い結果だけで決めず、必要に応じて専門家や信頼できる人に相談してください。
退会すると、以下のデータがすべて削除され、二度と元に戻すことはできません。
購入記録は会計上の理由で保管されます(お相手の情報は削除されます)。
この操作は取り消せません。
{hasPassword ? (パスワードを設定していないため、本人確認の確認コードをメールで送信します。
> ) : ( <>
{codeNotice}
メールに届いた確認コードを入力してください。
退会すると、アカウントに関するすべてのデータが完全に削除されます。この操作は取り消せません。