<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 --> <h2 id="internationalization--localization-i18nl10n" class="position-relative d-flex align-items-center group"> <span>Internationalization &amp;amp; Localization (i18n/l10n)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="internationalization--localization-i18nl10n" aria-haspopup="dialog" aria-label="Share link: Internationalization &amp;amp; Localization (i18n/l10n)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Geode provides comprehensive internationalization (i18n) and localization (l10n) support for building global applications. From full Unicode support to locale-aware string operations, Geode enables you to build graph applications that serve users worldwide with proper language, cultural, and regional conventions.</p> <h3 id="understanding-i18n-vs-l10n" class="position-relative d-flex align-items-center group"> <span>Understanding i18n vs l10n</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="understanding-i18n-vs-l10n" aria-haspopup="dialog" aria-label="Share link: Understanding i18n vs l10n"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="internationalization-i18n" class="position-relative d-flex align-items-center group"> <span>Internationalization (i18n)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="internationalization-i18n" aria-haspopup="dialog" aria-label="Share link: Internationalization (i18n)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>The process of designing software to support multiple languages and regions without code changes:</p> <ul> <li><strong>Unicode Support</strong>: Full UTF-8 encoding for all text data</li> <li><strong>Locale Independence</strong>: Core functionality works regardless of locale</li> <li><strong>Extensibility</strong>: Easy addition of new languages and regions</li> <li><strong>Data Separation</strong>: Content separated from code</li> </ul> <h4 id="localization-l10n" class="position-relative d-flex align-items-center group"> <span>Localization (l10n)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="localization-l10n" aria-haspopup="dialog" aria-label="Share link: Localization (l10n)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>The process of adapting software for specific languages and regions:</p> <ul> <li><strong>Translation</strong>: User interface and messages in local language</li> <li><strong>Cultural Adaptation</strong>: Date, time, number, and currency formats</li> <li><strong>Regional Compliance</strong>: Legal and regulatory requirements</li> <li><strong>Local Conventions</strong>: Sorting, collation, and comparison rules</li> </ul> <h3 id="unicode-support" class="position-relative d-flex align-items-center group"> <span>Unicode Support</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="unicode-support" aria-haspopup="dialog" aria-label="Share link: Unicode Support"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="utf-8-encoding" class="position-relative d-flex align-items-center group"> <span>UTF-8 Encoding</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="utf-8-encoding" aria-haspopup="dialog" aria-label="Share link: UTF-8 Encoding"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Geode uses UTF-8 encoding throughout:</p> <p><strong>String Storage</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Store</span><span class="w"> </span><span class="py">text</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">any</span><span class="w"> </span><span class="py">language</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Document</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_en</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Hello</span><span class="w"> </span><span class="py">World</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_zh</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">你好世界</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_ar</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">مرحبا</span><span class="w"> </span><span class="py">بالعالم</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_ru</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Привет</span><span class="w"> </span><span class="py">мир</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_ja</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">こんにちは世界</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_hi</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">नमस्ते</span><span class="w"> </span><span class="py">दुन</span><span class="err">ि</span><span class="py">य</span><span class="err">ा&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_emoji</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;👋🌍&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Query with Unicode</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Search</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">multiple</span><span class="w"> </span><span class="py">scripts</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">d</span><span class="p">:</span><span class="nc">Document</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">d</span><span class="err">.</span><span class="py">title_zh</span><span class="w"> </span><span class="py">CONTAINS</span><span class="w"> </span><span class="err">&#39;</span><span class="py">世界</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">d</span><span class="err">.</span><span class="py">title_ar</span><span class="w"> </span><span class="py">CONTAINS</span><span class="w"> </span><span class="err">&#39;</span><span class="py">العالم</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">d</span><span class="err">.</span><span class="py">title_emoji</span><span class="w"> </span><span class="py">CONTAINS</span><span class="w"> </span><span class="err">&#39;🌍&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">d</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="unicode-normalization" class="position-relative d-flex align-items-center group"> <span>Unicode Normalization</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="unicode-normalization" aria-haspopup="dialog" aria-label="Share link: Unicode Normalization"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Geode supports Unicode normalization for consistent string comparison:</p> <p><strong>Normalization Forms</strong>:</p> <ul> <li><strong>NFC (Canonical Composition)</strong>: Preferred for most text</li> <li><strong>NFD (Canonical Decomposition)</strong>: Separates combined characters</li> <li><strong>NFKC (Compatibility Composition)</strong>: For compatibility</li> <li><strong>NFKD (Compatibility Decomposition)</strong>: Full decomposition</li> </ul> <p><strong>Example</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">property</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">combining</span><span class="w"> </span><span class="py">characters</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Text</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">nfc</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">café</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">NFC</span><span class="w"> </span><span class="py">form</span><span class="w"> </span><span class="p">(</span><span class="py">é</span><span class="w"> </span><span class="py">as</span><span class="w"> </span><span class="py">single</span><span class="w"> </span><span class="py">character</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">nfd</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">café</span><span class="err">&#39;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">NFD</span><span class="w"> </span><span class="py">form</span><span class="w"> </span><span class="p">(</span><span class="py">e</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">combining</span><span class="w"> </span><span class="py">accent</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">normalization</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">t</span><span class="p">:</span><span class="nc">Text</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">normalize</span><span class="p">(</span><span class="py">t</span><span class="err">.</span><span class="py">nfc</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">NFC</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">normalize</span><span class="p">(</span><span class="py">t</span><span class="err">.</span><span class="py">nfd</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">NFC</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">t</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Returns</span><span class="w"> </span><span class="py">match</span><span class="w"> </span><span class="py">despite</span><span class="w"> </span><span class="py">different</span><span class="w"> </span><span class="py">encodings</span><span class="w"> </span></span></span></code></pre></div> <h4 id="character-classification" class="position-relative d-flex align-items-center group"> <span>Character Classification</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="character-classification" aria-haspopup="dialog" aria-label="Share link: Character Classification"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Unicode</span><span class="w"> </span><span class="py">character</span><span class="w"> </span><span class="py">properties</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">user</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">is_alphabetic</span><span class="p">(</span><span class="py">user</span><span class="err">.</span><span class="py">name</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">contains_emoji</span><span class="p">(</span><span class="py">user</span><span class="err">.</span><span class="py">name</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">user</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Case</span><span class="w"> </span><span class="py">conversion</span><span class="w"> </span><span class="p">(</span><span class="py">locale</span><span class="err">-</span><span class="py">aware</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">to_upper</span><span class="p">(</span><span class="err">&#39;</span><span class="py">straße</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">de_DE</span><span class="err">&#39;</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="err">&#39;</span><span class="py">STRASSE</span><span class="err">&#39;</span><span class="w"> </span><span class="p">(</span><span class="py">German</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">to_upper</span><span class="p">(</span><span class="err">&#39;</span><span class="py">i</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">tr_TR</span><span class="err">&#39;</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="err">&#39;</span><span class="py">İ</span><span class="err">&#39;</span><span class="w"> </span><span class="p">(</span><span class="py">Turkish</span><span class="w"> </span><span class="py">dotted</span><span class="w"> </span><span class="py">I</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div> <h3 id="collation-and-sorting" class="position-relative d-flex align-items-center group"> <span>Collation and Sorting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="collation-and-sorting" aria-haspopup="dialog" aria-label="Share link: Collation and Sorting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="locale-specific-collation" class="position-relative d-flex align-items-center group"> <span>Locale-Specific Collation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="locale-specific-collation" aria-haspopup="dialog" aria-label="Share link: Locale-Specific Collation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Geode supports ICU collation for culturally appropriate sorting:</p> <p><strong>Create Index with Collation</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">German</span><span class="w"> </span><span class="py">phonebook</span><span class="w"> </span><span class="py">sorting</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">user_name_de</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">:</span><span class="nc">User</span><span class="p">(</span><span class="py">name</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">de_DE</span><span class="nd">@collation</span><span class="p">=</span><span class="py">phonebook</span><span class="err">&#39;;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Swedish</span><span class="w"> </span><span class="py">sorting</span><span class="w"> </span><span class="p">(</span><span class="py">ä</span><span class="p">,</span><span class="w"> </span><span class="py">ö</span><span class="w"> </span><span class="py">after</span><span class="w"> </span><span class="py">z</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">user_name_sv</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">:</span><span class="nc">User</span><span class="p">(</span><span class="py">name</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">sv_SE</span><span class="err">&#39;;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Chinese</span><span class="w"> </span><span class="py">pinyin</span><span class="w"> </span><span class="py">sorting</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">user_name_zh</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">:</span><span class="nc">User</span><span class="p">(</span><span class="py">name</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">zh_CN</span><span class="nd">@collation</span><span class="p">=</span><span class="py">pinyin</span><span class="err">&#39;;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Query with Specific Collation</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Sort</span><span class="w"> </span><span class="py">using</span><span class="w"> </span><span class="py">German</span><span class="w"> </span><span class="py">rules</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">de_DE</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">100</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Case</span><span class="err">-</span><span class="py">insensitive</span><span class="w"> </span><span class="py">sorting</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Product</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">secondary</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">50</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="collation-strength-levels" class="position-relative d-flex align-items-center group"> <span>Collation Strength Levels</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="collation-strength-levels" aria-haspopup="dialog" aria-label="Share link: Collation Strength Levels"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Primary</strong>: Base character differences only</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="err">&#39;</span><span class="py">a</span><span class="err">&#39;</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">A</span><span class="err">&#39;</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">á</span><span class="err">&#39;</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Á</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">primary</span><span class="err">&#39;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Secondary</strong>: Accents matter</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="err">&#39;</span><span class="py">a</span><span class="err">&#39;</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">A</span><span class="err">&#39;</span><span class="w"> </span><span class="py">but</span><span class="w"> </span><span class="err">&#39;</span><span class="py">a</span><span class="err">&#39;</span><span class="w"> </span><span class="err">≠</span><span class="w"> </span><span class="err">&#39;</span><span class="py">á</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">secondary</span><span class="err">&#39;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Tertiary</strong>: Case matters</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="err">&#39;</span><span class="py">a</span><span class="err">&#39;</span><span class="w"> </span><span class="err">≠</span><span class="w"> </span><span class="err">&#39;</span><span class="py">A</span><span class="err">&#39;</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="err">&#39;</span><span class="py">a</span><span class="err">&#39;</span><span class="w"> </span><span class="err">≠</span><span class="w"> </span><span class="err">&#39;</span><span class="py">á</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">tertiary</span><span class="err">&#39;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Quaternary</strong>: Punctuation and spaces matter</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">All</span><span class="w"> </span><span class="py">differences</span><span class="w"> </span><span class="py">considered</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">quaternary</span><span class="err">&#39;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="language-specific-sorting-examples" class="position-relative d-flex align-items-center group"> <span>Language-Specific Sorting Examples</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="language-specific-sorting-examples" aria-haspopup="dialog" aria-label="Share link: Language-Specific Sorting Examples"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Swedish (å, ä, ö at end)</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">c</span><span class="p">:</span><span class="nc">City</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">c</span><span class="err">.</span><span class="py">country</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Sweden</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">c</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">c</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">sv_SE</span><span class="err">&#39;;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Result</span><span class="p">:</span><span class="w"> </span><span class="nc">Malmö</span><span class="p">,</span><span class="w"> </span><span class="py">Stockholm</span><span class="p">,</span><span class="w"> </span><span class="py">Västerås</span><span class="p">,</span><span class="w"> </span><span class="py">Örebro</span><span class="w"> </span></span></span></code></pre></div><p><strong>Czech (ch as single letter)</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">country</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Czech</span><span class="w"> </span><span class="py">Republic</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">surname</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">surname</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">cs_CZ</span><span class="err">&#39;;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Result</span><span class="p">:</span><span class="w"> </span><span class="nc">Havel</span><span class="p">,</span><span class="w"> </span><span class="py">Horak</span><span class="p">,</span><span class="w"> </span><span class="py">Chlup</span><span class="w"> </span><span class="p">(</span><span class="py">ch</span><span class="w"> </span><span class="py">after</span><span class="w"> </span><span class="py">h</span><span class="p">)</span><span class="w"> </span></span></span></code></pre></div><p><strong>Japanese (mixed scripts)</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">country</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Japan</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">name</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">ja_JP</span><span class="nd">@collation</span><span class="p">=</span><span class="py">unihan</span><span class="err">&#39;;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Sorts</span><span class="w"> </span><span class="py">hiragana</span><span class="p">,</span><span class="w"> </span><span class="py">katakana</span><span class="p">,</span><span class="w"> </span><span class="py">kanji</span><span class="w"> </span><span class="py">appropriately</span><span class="w"> </span></span></span></code></pre></div> <h3 id="locale-aware-operations" class="position-relative d-flex align-items-center group"> <span>Locale-Aware Operations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="locale-aware-operations" aria-haspopup="dialog" aria-label="Share link: Locale-Aware Operations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="date-and-time-formatting" class="position-relative d-flex align-items-center group"> <span>Date and Time Formatting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="date-and-time-formatting" aria-haspopup="dialog" aria-label="Share link: Date and Time Formatting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Store timestamps in UTC, display in local time</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Store</span><span class="w"> </span><span class="py">event</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">timezone</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Event</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Product</span><span class="w"> </span><span class="py">Launch</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">timestamp</span><span class="p">:</span><span class="w"> </span><span class="nc">datetime</span><span class="p">(</span><span class="err">&#39;</span><span class="py">2025</span><span class="err">-</span><span class="py">06</span><span class="err">-</span><span class="py">15T14</span><span class="p">:</span><span class="nc">00</span><span class="p">:</span><span class="nc">00Z</span><span class="err">&#39;</span><span class="p">),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">timezone</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">America</span><span class="err">/</span><span class="py">New_York</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">timezone</span><span class="w"> </span><span class="py">conversion</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">e</span><span class="p">:</span><span class="nc">Event</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">datetime_in_timezone</span><span class="p">(</span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">America</span><span class="err">/</span><span class="py">New_York</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">local_time</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">datetime_in_timezone</span><span class="p">(</span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Europe</span><span class="err">/</span><span class="py">London</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">london_time</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">datetime_in_timezone</span><span class="p">(</span><span class="py">e</span><span class="err">.</span><span class="py">timestamp</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Asia</span><span class="err">/</span><span class="py">Tokyo</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">tokyo_time</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Locale-Specific Formatting</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Format</span><span class="w"> </span><span class="py">dates</span><span class="w"> </span><span class="py">per</span><span class="w"> </span><span class="py">locale</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">order</span><span class="p">:</span><span class="nc">Order</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">order</span><span class="err">.</span><span class="py">id</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_date</span><span class="p">(</span><span class="py">order</span><span class="err">.</span><span class="py">created</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">us_date</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;06/15/2025&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_date</span><span class="p">(</span><span class="py">order</span><span class="err">.</span><span class="py">created</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_GB</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">uk_date</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;15/06/2025&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_date</span><span class="p">(</span><span class="py">order</span><span class="err">.</span><span class="py">created</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">de_DE</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">german_date</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;15.06.2025&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_date</span><span class="p">(</span><span class="py">order</span><span class="err">.</span><span class="py">created</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">zh_CN</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">chinese_date</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;2025年6月15日&#34;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="number-formatting" class="position-relative d-flex align-items-center group"> <span>Number Formatting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="number-formatting" aria-haspopup="dialog" aria-label="Share link: Number Formatting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Currency Formatting</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">product</span><span class="p">:</span><span class="nc">Product</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">product</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_currency</span><span class="p">(</span><span class="py">product</span><span class="err">.</span><span class="py">price</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">USD</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">us_price</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;$29.99&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_currency</span><span class="p">(</span><span class="py">product</span><span class="err">.</span><span class="py">price</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">EUR</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">de_DE</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">euro_price</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;29,99 €&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_currency</span><span class="p">(</span><span class="py">product</span><span class="err">.</span><span class="py">price</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">JPY</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">ja_JP</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">yen_price</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;¥2,999&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_currency</span><span class="p">(</span><span class="py">product</span><span class="err">.</span><span class="py">price</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">INR</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">hi_IN</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">rupee_price</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;₹2,499.00&#34;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Decimal Formatting</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">stat</span><span class="p">:</span><span class="nc">Statistics</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">stat</span><span class="err">.</span><span class="py">metric</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_number</span><span class="p">(</span><span class="py">stat</span><span class="err">.</span><span class="py">value</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">us_format</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;1,234.56&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_number</span><span class="p">(</span><span class="py">stat</span><span class="err">.</span><span class="py">value</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">de_DE</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">de_format</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;1.234,56&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">format_number</span><span class="p">(</span><span class="py">stat</span><span class="err">.</span><span class="py">value</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">fr_FR</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">fr_format</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="s">&#34;1 234,56&#34;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="string-comparison" class="position-relative d-flex align-items-center group"> <span>String Comparison</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="string-comparison" aria-haspopup="dialog" aria-label="Share link: String Comparison"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Case-Insensitive Comparison</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Turkish</span><span class="w"> </span><span class="py">locale</span><span class="w"> </span><span class="p">(</span><span class="py">special</span><span class="w"> </span><span class="py">I</span><span class="w"> </span><span class="py">handling</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">compare_locale</span><span class="p">(</span><span class="py">u</span><span class="err">.</span><span class="py">username</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">İbrahim</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">tr_TR</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">ignoreCase</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">0</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">u</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">General</span><span class="w"> </span><span class="py">case</span><span class="err">-</span><span class="py">insensitive</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">c</span><span class="p">:</span><span class="nc">Customer</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">compare_locale</span><span class="p">(</span><span class="py">c</span><span class="err">.</span><span class="py">email</span><span class="p">,</span><span class="w"> </span><span class="nv">$search_email</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en_US</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">ignoreCase</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">0</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">c</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Accent-Insensitive Comparison</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">French</span><span class="w"> </span><span class="py">names</span><span class="w"> </span><span class="p">(</span><span class="py">ignore</span><span class="w"> </span><span class="py">accents</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">compare_locale</span><span class="p">(</span><span class="py">p</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Francois</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">fr_FR</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="py">ignoreAccents</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">0</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Matches</span><span class="p">:</span><span class="w"> </span><span class="nc">François</span><span class="p">,</span><span class="w"> </span><span class="py">Francois</span><span class="p">,</span><span class="w"> </span><span class="py">FRANÇOIS</span><span class="w"> </span></span></span></code></pre></div> <h3 id="right-to-left-rtl-support" class="position-relative d-flex align-items-center group"> <span>Right-to-Left (RTL) Support</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="right-to-left-rtl-support" aria-haspopup="dialog" aria-label="Share link: Right-to-Left (RTL) Support"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="rtl-languages" class="position-relative d-flex align-items-center group"> <span>RTL Languages</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="rtl-languages" aria-haspopup="dialog" aria-label="Share link: RTL Languages"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Geode supports RTL languages (Arabic, Hebrew, Persian, Urdu):</p> <p><strong>Store Bidirectional Text</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Article</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_ar</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">مقالة</span><span class="w"> </span><span class="py">باللغة</span><span class="w"> </span><span class="py">العربية</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title_he</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">מאמר</span><span class="w"> </span><span class="py">בעברית</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">content_ar</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">محتوى</span><span class="w"> </span><span class="py">النص</span><span class="w"> </span><span class="py">العربي</span><span class="kd">...</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">direction</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">rtl</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Mixed LTR/RTL Text</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Store</span><span class="w"> </span><span class="py">text</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">embedded</span><span class="w"> </span><span class="py">numbers</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="py">Latin</span><span class="w"> </span><span class="py">text</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Product</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name_ar</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">منتج</span><span class="w"> </span><span class="py">رقم</span><span class="w"> </span><span class="py">123</span><span class="w"> </span><span class="py">في</span><span class="w"> </span><span class="py">category</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">description_ar</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">وصف</span><span class="w"> </span><span class="py">المنتج</span><span class="w"> </span><span class="py">مع</span><span class="w"> </span><span class="py">email</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">bidi_class</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">mixed</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">preserves</span><span class="w"> </span><span class="py">bidirectional</span><span class="w"> </span><span class="py">algorithm</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Product</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name_ar</span><span class="w"> </span><span class="py">CONTAINS</span><span class="w"> </span><span class="err">&#39;</span><span class="py">123</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name_ar</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Correct</span><span class="w"> </span><span class="py">visual</span><span class="w"> </span><span class="py">order</span><span class="w"> </span><span class="py">preserved</span><span class="w"> </span></span></span></code></pre></div> <h4 id="bidirectional-algorithm" class="position-relative d-flex align-items-center group"> <span>Bidirectional Algorithm</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="bidirectional-algorithm" aria-haspopup="dialog" aria-label="Share link: Bidirectional Algorithm"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Geode implements Unicode Bidirectional Algorithm (UBA):</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Explicit</span><span class="w"> </span><span class="py">direction</span><span class="w"> </span><span class="py">marks</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Message</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">text</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Hello</span><span class="w"> </span><span class="err">\</span><span class="py">u202Eمرحبا</span><span class="err">\</span><span class="py">u202C</span><span class="w"> </span><span class="py">World</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">RLE</span><span class="err">/</span><span class="py">PDF</span><span class="w"> </span><span class="py">marks</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">has_bidi_marks</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Direction</span><span class="w"> </span><span class="py">override</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">display</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">m</span><span class="p">:</span><span class="nc">Message</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">m</span><span class="err">.</span><span class="py">text</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">bidi_reorder</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">text</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">RTL</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">rtl_display</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">bidi_reorder</span><span class="p">(</span><span class="py">m</span><span class="err">.</span><span class="py">text</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">LTR</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">ltr_display</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="multilingual-data-modeling" class="position-relative d-flex align-items-center group"> <span>Multilingual Data Modeling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="multilingual-data-modeling" aria-haspopup="dialog" aria-label="Share link: Multilingual Data Modeling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="multiple-language-properties" class="position-relative d-flex align-items-center group"> <span>Multiple Language Properties</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="multiple-language-properties" aria-haspopup="dialog" aria-label="Share link: Multiple Language Properties"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Separate Properties Pattern</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Product</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">P123</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name_en</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Laptop</span><span class="w"> </span><span class="py">Computer</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name_es</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Computadora</span><span class="w"> </span><span class="py">Portátil</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name_fr</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Ordinateur</span><span class="w"> </span><span class="py">Portable</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name_de</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Laptop</span><span class="err">-</span><span class="py">Computer</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name_zh</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">笔记本电脑</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name_ja</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">ノートパソコン</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">description_en</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">High</span><span class="err">-</span><span class="py">performance</span><span class="w"> </span><span class="py">laptop</span><span class="kd">...</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">description_es</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Portátil</span><span class="w"> </span><span class="py">de</span><span class="w"> </span><span class="py">alto</span><span class="w"> </span><span class="py">rendimiento</span><span class="kd">...</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">default_lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">en</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Query with Language Fallback</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Product</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">id</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">COALESCE</span><span class="p">(</span><span class="py">p</span><span class="p">[</span><span class="err">&#39;</span><span class="py">name_</span><span class="err">&#39;</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="nv">$user_lang</span><span class="p">],</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">name_en</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">name</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">COALESCE</span><span class="p">(</span><span class="py">p</span><span class="p">[</span><span class="err">&#39;</span><span class="py">description_</span><span class="err">&#39;</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="nv">$user_lang</span><span class="p">],</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">description_en</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">description</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="translation-relationships" class="position-relative d-flex align-items-center group"> <span>Translation Relationships</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="translation-relationships" aria-haspopup="dialog" aria-label="Share link: Translation Relationships"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Linked Translations Pattern</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">base</span><span class="w"> </span><span class="py">content</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">base</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">en</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Welcome</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">Geode</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">body</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">This</span><span class="w"> </span><span class="py">is</span><span class="w"> </span><span class="py">an</span><span class="w"> </span><span class="py">introduction</span><span class="kd">...</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">en</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">translations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">es</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">es</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">-</span><span class="py">es</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Bienvenido</span><span class="w"> </span><span class="py">a</span><span class="w"> </span><span class="py">Geode</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">body</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Esta</span><span class="w"> </span><span class="py">es</span><span class="w"> </span><span class="py">una</span><span class="w"> </span><span class="py">introducción</span><span class="kd">...</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">es</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">fr</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">fr</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">-</span><span class="py">fr</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">title</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Bienvenue</span><span class="w"> </span><span class="py">à</span><span class="w"> </span><span class="py">Geode</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">body</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Ceci</span><span class="w"> </span><span class="py">est</span><span class="w"> </span><span class="py">une</span><span class="w"> </span><span class="py">introduction</span><span class="kd">...</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">fr</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Link</span><span class="w"> </span><span class="py">translations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">base</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">en</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">&#39;</span><span class="p">}),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">(</span><span class="py">es</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">es</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">-</span><span class="py">es</span><span class="err">&#39;</span><span class="p">}),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">(</span><span class="py">fr</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">fr</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">-</span><span class="py">fr</span><span class="err">&#39;</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">base</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">TRANSLATION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">es</span><span class="p">),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">(</span><span class="py">base</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">TRANSLATION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">fr</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Query Translations</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Get</span><span class="w"> </span><span class="py">content</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">user</span><span class="err">&#39;</span><span class="py">s</span><span class="w"> </span><span class="py">language</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">content</span><span class="p">:</span><span class="nc">Content</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$content_id</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">OPTIONAL</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">content</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">TRANSLATION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">trans</span><span class="p">:</span><span class="nc">Content</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">trans</span><span class="err">.</span><span class="py">lang</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nv">$user_lang</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">COALESCE</span><span class="p">(</span><span class="py">trans</span><span class="p">,</span><span class="w"> </span><span class="py">content</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">localized_content</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Get</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">available</span><span class="w"> </span><span class="py">translations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">base</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">en</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$content_id</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">OPTIONAL</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">base</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">TRANSLATION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">trans</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">base</span><span class="err">.</span><span class="py">lang</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">language</span><span class="p">,</span><span class="w"> </span><span class="py">base</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">content</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kc">UNION</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">base</span><span class="p">:</span><span class="nc">Content</span><span class="p">:</span><span class="nc">en</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$content_id</span><span class="p">})</span><span class="err">-</span><span class="p">[:</span><span class="nc">TRANSLATION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="nc">trans</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">trans</span><span class="err">.</span><span class="py">lang</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">language</span><span class="p">,</span><span class="w"> </span><span class="py">trans</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">content</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="timezone-handling" class="position-relative d-flex align-items-center group"> <span>Timezone Handling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="timezone-handling" aria-haspopup="dialog" aria-label="Share link: Timezone Handling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="timezone-storage" class="position-relative d-flex align-items-center group"> <span>Timezone Storage</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="timezone-storage" aria-haspopup="dialog" aria-label="Share link: Timezone Storage"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Store All Timestamps in UTC</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">Event</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">name</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Conference</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">start_utc</span><span class="p">:</span><span class="w"> </span><span class="nc">datetime</span><span class="p">(</span><span class="err">&#39;</span><span class="py">2025</span><span class="err">-</span><span class="py">09</span><span class="err">-</span><span class="py">15T14</span><span class="p">:</span><span class="nc">00</span><span class="p">:</span><span class="nc">00Z</span><span class="err">&#39;</span><span class="p">),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">end_utc</span><span class="p">:</span><span class="w"> </span><span class="nc">datetime</span><span class="p">(</span><span class="err">&#39;</span><span class="py">2025</span><span class="err">-</span><span class="py">09</span><span class="err">-</span><span class="py">15T18</span><span class="p">:</span><span class="nc">00</span><span class="p">:</span><span class="nc">00Z</span><span class="err">&#39;</span><span class="p">),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">venue_timezone</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">America</span><span class="err">/</span><span class="py">New_York</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Convert for Display</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">e</span><span class="p">:</span><span class="nc">Event</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">datetime_in_timezone</span><span class="p">(</span><span class="py">e</span><span class="err">.</span><span class="py">start_utc</span><span class="p">,</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">venue_timezone</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">local_start</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">datetime_in_timezone</span><span class="p">(</span><span class="py">e</span><span class="err">.</span><span class="py">start_utc</span><span class="p">,</span><span class="w"> </span><span class="nv">$user_timezone</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">user_start</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="timezone-aware-queries" class="position-relative d-flex align-items-center group"> <span>Timezone-Aware Queries</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="timezone-aware-queries" aria-haspopup="dialog" aria-label="Share link: Timezone-Aware Queries"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Find Events in User&rsquo;s Timezone</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Events</span><span class="w"> </span><span class="py">happening</span><span class="w"> </span><span class="s">&#34;today&#34;</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">user</span><span class="err">&#39;</span><span class="py">s</span><span class="w"> </span><span class="py">timezone</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">e</span><span class="p">:</span><span class="nc">Event</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">e</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">datetime_in_timezone</span><span class="p">(</span><span class="py">e</span><span class="err">.</span><span class="py">start_utc</span><span class="p">,</span><span class="w"> </span><span class="nv">$user_timezone</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">user_local</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">date</span><span class="p">(</span><span class="py">user_local</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">current_date</span><span class="p">()</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">e</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">user_local</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">user_local</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Business Hours Queries</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Find</span><span class="w"> </span><span class="py">stores</span><span class="w"> </span><span class="py">open</span><span class="w"> </span><span class="py">now</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">each</span><span class="w"> </span><span class="py">timezone</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">store</span><span class="p">:</span><span class="nc">Store</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">store</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">datetime_in_timezone</span><span class="p">(</span><span class="py">now</span><span class="p">(),</span><span class="w"> </span><span class="py">store</span><span class="err">.</span><span class="py">timezone</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">store_local_time</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">time</span><span class="p">(</span><span class="py">store_local_time</span><span class="p">)</span><span class="w"> </span><span class="err">&gt;</span><span class="p">=</span><span class="w"> </span><span class="py">store</span><span class="err">.</span><span class="py">open_time</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">time</span><span class="p">(</span><span class="py">store_local_time</span><span class="p">)</span><span class="w"> </span><span class="err">&lt;</span><span class="p">=</span><span class="w"> </span><span class="py">store</span><span class="err">.</span><span class="py">close_time</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">dayofweek</span><span class="p">(</span><span class="py">store_local_time</span><span class="p">)</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">[</span><span class="py">6</span><span class="p">,</span><span class="w"> </span><span class="py">7</span><span class="p">]</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Weekend</span><span class="w"> </span><span class="py">check</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">store</span><span class="err">.</span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">store</span><span class="err">.</span><span class="py">timezone</span><span class="p">,</span><span class="w"> </span><span class="py">store_local_time</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="translation-management" class="position-relative d-flex align-items-center group"> <span>Translation Management</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="translation-management" aria-haspopup="dialog" aria-label="Share link: Translation Management"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="translation-workflow" class="position-relative d-flex align-items-center group"> <span>Translation Workflow</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="translation-workflow" aria-haspopup="dialog" aria-label="Share link: Translation Workflow"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Track Translation Status</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">TranslationJob</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">content_id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">source_lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">en</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">target_lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">es</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">status</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">pending</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">created</span><span class="p">:</span><span class="w"> </span><span class="nc">datetime</span><span class="p">(),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">translator</span><span class="p">:</span><span class="w"> </span><span class="nc">null</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">completed</span><span class="p">:</span><span class="w"> </span><span class="nc">null</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Assign</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">translator</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">job</span><span class="p">:</span><span class="nc">TranslationJob</span><span class="w"> </span><span class="p">{</span><span class="py">status</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">pending</span><span class="err">&#39;</span><span class="p">}),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">(</span><span class="py">translator</span><span class="p">:</span><span class="nc">Translator</span><span class="w"> </span><span class="p">{</span><span class="py">languages</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="err">&#39;</span><span class="nc">en</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">es</span><span class="err">&#39;</span><span class="p">]})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">NOT</span><span class="w"> </span><span class="py">EXISTS</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">translator</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">ASSIGNED_TO</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">other</span><span class="p">:</span><span class="nc">TranslationJob</span><span class="w"> </span><span class="p">{</span><span class="py">status</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">in_progress</span><span class="err">&#39;</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">translator</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">ASSIGNED_TO</span><span class="w"> </span><span class="p">{</span><span class="py">assigned_at</span><span class="p">:</span><span class="w"> </span><span class="nc">datetime</span><span class="p">()}]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">job</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SET</span><span class="w"> </span><span class="py">job</span><span class="err">.</span><span class="py">status</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">in_progress</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">job</span><span class="err">.</span><span class="py">translator</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">translator</span><span class="err">.</span><span class="py">id</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Translation Memory</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Store</span><span class="w"> </span><span class="py">translation</span><span class="w"> </span><span class="py">segments</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">reuse</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">TranslationSegment</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">source_lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">en</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">target_lang</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">es</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">source_text</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Welcome</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">our</span><span class="w"> </span><span class="py">platform</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">target_text</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">Bienvenido</span><span class="w"> </span><span class="py">a</span><span class="w"> </span><span class="py">nuestra</span><span class="w"> </span><span class="py">plataforma</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">context</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">greeting</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">verified</span><span class="p">:</span><span class="w"> </span><span class="nc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Find</span><span class="w"> </span><span class="py">similar</span><span class="w"> </span><span class="py">translations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">seg</span><span class="p">:</span><span class="nc">TranslationSegment</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">seg</span><span class="err">.</span><span class="py">source_lang</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">en</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">seg</span><span class="err">.</span><span class="py">target_lang</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">es</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">similarity</span><span class="p">(</span><span class="py">seg</span><span class="err">.</span><span class="py">source_text</span><span class="p">,</span><span class="w"> </span><span class="nv">$new_text</span><span class="p">)</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">0</span><span class="mf">.8</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">seg</span><span class="err">.</span><span class="py">source_text</span><span class="p">,</span><span class="w"> </span><span class="py">seg</span><span class="err">.</span><span class="py">target_text</span><span class="p">,</span><span class="w"> </span><span class="py">similarity</span><span class="p">(</span><span class="py">seg</span><span class="err">.</span><span class="py">source_text</span><span class="p">,</span><span class="w"> </span><span class="nv">$new_text</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">score</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">score</span><span class="w"> </span><span class="py">DESC</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">5</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="locale-detection-and-selection" class="position-relative d-flex align-items-center group"> <span>Locale Detection and Selection</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="locale-detection-and-selection" aria-haspopup="dialog" aria-label="Share link: Locale Detection and Selection"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="user-locale-preferences" class="position-relative d-flex align-items-center group"> <span>User Locale Preferences</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="user-locale-preferences" aria-haspopup="dialog" aria-label="Share link: User Locale Preferences"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Store User Preferences</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="py">CREATE</span><span class="w"> </span><span class="p">(:</span><span class="nc">User</span><span class="w"> </span><span class="p">{</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">user123</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">preferred_language</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">es</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">preferred_region</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">MX</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">locale</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">es_MX</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">timezone</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">America</span><span class="err">/</span><span class="py">Mexico_City</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">date_format</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">dd</span><span class="err">/</span><span class="py">MM</span><span class="err">/</span><span class="py">yyyy</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">time_format</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">24h</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">currency</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">MXN</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">measurement_system</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">metric</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">})</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Fallback Chain</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Get</span><span class="w"> </span><span class="py">content</span><span class="w"> </span><span class="py">with</span><span class="w"> </span><span class="py">locale</span><span class="w"> </span><span class="py">fallback</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$user_id</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">WITH</span><span class="w"> </span><span class="py">u</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">[</span><span class="py">u</span><span class="err">.</span><span class="py">locale</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">es_MX</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">preferred_language</span><span class="p">,</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">es</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="err">&#39;</span><span class="py">en</span><span class="err">&#39;</span><span class="p">]</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">locale_chain</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">default</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">content</span><span class="p">:</span><span class="nc">Content</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$content_id</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">OPTIONAL</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">content</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">TRANSLATION</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">trans</span><span class="p">:</span><span class="nc">Content</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">trans</span><span class="err">.</span><span class="py">locale</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="py">locale_chain</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WITH</span><span class="w"> </span><span class="py">content</span><span class="p">,</span><span class="w"> </span><span class="py">trans</span><span class="p">,</span><span class="w"> </span><span class="py">locale_chain</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">indexOf</span><span class="p">(</span><span class="py">locale_chain</span><span class="p">,</span><span class="w"> </span><span class="py">COALESCE</span><span class="p">(</span><span class="py">trans</span><span class="err">.</span><span class="py">locale</span><span class="p">,</span><span class="w"> </span><span class="py">content</span><span class="err">.</span><span class="py">locale</span><span class="p">))</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">COALESCE</span><span class="p">(</span><span class="py">trans</span><span class="p">,</span><span class="w"> </span><span class="py">content</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">localized</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">1</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="browsersystem-detection" class="position-relative d-flex align-items-center group"> <span>Browser/System Detection</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="browsersystem-detection" aria-haspopup="dialog" aria-label="Share link: Browser/System Detection"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Accept-Language Header Processing</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python client example</span> </span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">geode_client</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">get_localized_content</span><span class="p">(</span><span class="n">accept_language</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">content_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Parse Accept-Language: &#34;en-US,en;q=0.9,es;q=0.8&#34;</span> </span></span><span class="line"><span class="cl"> <span class="n">locales</span> <span class="o">=</span> <span class="n">parse_accept_language</span><span class="p">(</span><span class="n">accept_language</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="n">client</span> <span class="o">=</span> <span class="n">geode_client</span><span class="o">.</span><span class="n">open_database</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (content:Content {id: $content_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (content)-[:TRANSLATION]-&gt;(trans:Content) </span></span></span><span class="line"><span class="cl"><span class="s2"> WHERE trans.locale IN $locales </span></span></span><span class="line"><span class="cl"><span class="s2"> WITH content, trans, $locales AS locale_list </span></span></span><span class="line"><span class="cl"><span class="s2"> ORDER BY indexOf(locale_list, COALESCE(trans.locale, content.locale)) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN COALESCE(trans, content) AS localized </span></span></span><span class="line"><span class="cl"><span class="s2"> LIMIT 1 </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="n">content_id</span><span class="o">=</span><span class="n">content_id</span><span class="p">,</span> <span class="n">locales</span><span class="o">=</span><span class="n">locales</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;localized&#39;</span><span class="p">]</span> </span></span></code></pre></div> <h3 id="performance-considerations" class="position-relative d-flex align-items-center group"> <span>Performance Considerations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="performance-considerations" aria-haspopup="dialog" aria-label="Share link: Performance Considerations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="index-optimization-for-i18n" class="position-relative d-flex align-items-center group"> <span>Index Optimization for i18n</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="index-optimization-for-i18n" aria-haspopup="dialog" aria-label="Share link: Index Optimization for i18n"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Separate Indexes per Language</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">More</span><span class="w"> </span><span class="py">efficient</span><span class="w"> </span><span class="py">than</span><span class="w"> </span><span class="py">single</span><span class="w"> </span><span class="py">multi</span><span class="err">-</span><span class="py">language</span><span class="w"> </span><span class="py">index</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">product_name_en</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">:</span><span class="nc">Product</span><span class="p">(</span><span class="py">name_en</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">product_name_es</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">:</span><span class="nc">Product</span><span class="p">(</span><span class="py">name_es</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">product_name_fr</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">:</span><span class="nc">Product</span><span class="p">(</span><span class="py">name_fr</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">With</span><span class="w"> </span><span class="py">collation</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">product_name_de</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">:</span><span class="nc">Product</span><span class="p">(</span><span class="py">name_de</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">COLLATE</span><span class="w"> </span><span class="err">&#39;</span><span class="py">de_DE</span><span class="err">&#39;;</span><span class="w"> </span></span></span></code></pre></div><p><strong>Language-Specific Full-Text Search</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Create</span><span class="w"> </span><span class="py">language</span><span class="err">-</span><span class="py">specific</span><span class="w"> </span><span class="py">full</span><span class="err">-</span><span class="py">text</span><span class="w"> </span><span class="py">indexes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">FULLTEXT</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">content_en</span><span class="w"> </span><span class="py">FOR</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Content</span><span class="p">)</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="err">.</span><span class="py">title_en</span><span class="p">,</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">body_en</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">OPTIONS</span><span class="w"> </span><span class="p">{</span><span class="py">analyzer</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">english</span><span class="err">&#39;</span><span class="p">}</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">FULLTEXT</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">content_es</span><span class="w"> </span><span class="py">FOR</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Content</span><span class="p">)</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="err">.</span><span class="py">title_es</span><span class="p">,</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">body_es</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">OPTIONS</span><span class="w"> </span><span class="p">{</span><span class="py">analyzer</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">spanish</span><span class="err">&#39;</span><span class="p">}</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">FULLTEXT</span><span class="w"> </span><span class="py">INDEX</span><span class="w"> </span><span class="py">content_zh</span><span class="w"> </span><span class="py">FOR</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">:</span><span class="nc">Content</span><span class="p">)</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="err">.</span><span class="py">title_zh</span><span class="p">,</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">body_zh</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">OPTIONS</span><span class="w"> </span><span class="p">{</span><span class="py">analyzer</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">chinese</span><span class="err">&#39;</span><span class="p">}</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="caching-strategies" class="position-relative d-flex align-items-center group"> <span>Caching Strategies</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="caching-strategies" aria-haspopup="dialog" aria-label="Share link: Caching Strategies"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Cache Translated Content</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Application-level caching</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">lru_cache</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nd">@lru_cache</span><span class="p">(</span><span class="n">maxsize</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">get_translation</span><span class="p">(</span><span class="n">content_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">locale</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">client</span> <span class="o">=</span> <span class="n">geode_client</span><span class="o">.</span><span class="n">open_database</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;&#34;&#34; </span></span></span><span class="line"><span class="cl"><span class="s2"> MATCH (content:Content {id: $content_id}) </span></span></span><span class="line"><span class="cl"><span class="s2"> OPTIONAL MATCH (content)-[:TRANSLATION]-&gt;(trans {locale: $locale}) </span></span></span><span class="line"><span class="cl"><span class="s2"> RETURN COALESCE(trans, content) AS localized </span></span></span><span class="line"><span class="cl"><span class="s2"> &#34;&#34;&#34;</span><span class="p">,</span> <span class="n">content_id</span><span class="o">=</span><span class="n">content_id</span><span class="p">,</span> <span class="n">locale</span><span class="o">=</span><span class="n">locale</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;localized&#39;</span><span class="p">]</span> </span></span></code></pre></div> <h3 id="best-practices" class="position-relative d-flex align-items-center group"> <span>Best Practices</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="best-practices" aria-haspopup="dialog" aria-label="Share link: Best Practices"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="data-modeling" class="position-relative d-flex align-items-center group"> <span>Data Modeling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="data-modeling" aria-haspopup="dialog" aria-label="Share link: Data Modeling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ol> <li><strong>UTF-8 Everywhere</strong>: Always use UTF-8 encoding</li> <li><strong>Normalize Input</strong>: Normalize to NFC before storage</li> <li><strong>Separate Languages</strong>: Use separate properties or nodes per language</li> <li><strong>Store Locale Metadata</strong>: Track language, region, script</li> <li><strong>UTC for Timestamps</strong>: Always store in UTC, display in local time</li> </ol> <h4 id="query-patterns" class="position-relative d-flex align-items-center group"> <span>Query Patterns</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-patterns" aria-haspopup="dialog" aria-label="Share link: Query Patterns"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ol> <li><strong>Locale-Specific Indexes</strong>: Create indexes with appropriate collation</li> <li><strong>Fallback Chains</strong>: Implement language fallback hierarchies</li> <li><strong>Case Handling</strong>: Use locale-aware case conversion</li> <li><strong>Collation in ORDER BY</strong>: Specify collation explicitly for sorting</li> </ol> <h4 id="application-integration" class="position-relative d-flex align-items-center group"> <span>Application Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="application-integration" aria-haspopup="dialog" aria-label="Share link: Application Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ol> <li><strong>Detect User Locale</strong>: From Accept-Language, user profile, or geolocation</li> <li><strong>Format at Display Time</strong>: Store raw values, format when presenting</li> <li><strong>Translation Memory</strong>: Reuse translations across content</li> <li><strong>Version Translations</strong>: Track translation versions with content versions</li> </ol> <h3 id="common-pitfalls" class="position-relative d-flex align-items-center group"> <span>Common Pitfalls</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="common-pitfalls" aria-haspopup="dialog" aria-label="Share link: Common Pitfalls"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="avoid" class="position-relative d-flex align-items-center group"> <span>Avoid</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="avoid" aria-haspopup="dialog" aria-label="Share link: Avoid"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li><strong>String Length Assumptions</strong>: &ldquo;Hello&rdquo; vs &ldquo;Zdravstvuyte&rdquo; (different lengths)</li> <li><strong>Case-Insensitive Without Locale</strong>: <code>UPPER()</code> without locale fails for Turkish</li> <li><strong>Naive Date Parsing</strong>: Use ISO 8601 or locale-aware parsing</li> <li><strong>Hardcoded Formats</strong>: Make date/number formats configurable</li> <li><strong>Single-Language Indexes</strong>: Create language-specific indexes</li> <li><strong>ASCII Assumptions</strong>: Expect any Unicode character</li> </ul> <h4 id="do" class="position-relative d-flex align-items-center group"> <span>Do</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="do" aria-haspopup="dialog" aria-label="Share link: Do"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><ul> <li><strong>Test with Real Data</strong>: Use actual multilingual content</li> <li><strong>Support RTL</strong>: Test with Arabic/Hebrew content</li> <li><strong>Validate Input</strong>: Check for proper Unicode encoding</li> <li><strong>Consider Length</strong>: Allow for text expansion in translations</li> <li><strong>Use ICU Collation</strong>: Leverage ICU for proper sorting</li> </ul> <h3 id="related-topics" class="position-relative d-flex align-items-center group"> <span>Related Topics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-topics" aria-haspopup="dialog" aria-label="Share link: Related Topics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong><a href="/tags/unicode/" >Unicode</a> </strong>: Unicode implementation details</li> <li><strong><a href="/tags/data-modeling/" >Data Modeling</a> </strong>: Graph schema design</li> <li><strong><a href="/tags/indexing/" >Indexing</a> </strong>: Index strategies for multilingual data</li> <li><strong><a href="/tags/performance/" >Performance</a> </strong>: Optimization for i18n workloads</li> <li><strong><a href="/tags/configuration/" >Configuration</a> </strong>: Server configuration options</li> </ul> <h3 id="further-reading" class="position-relative d-flex align-items-center group"> <span>Further Reading</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="further-reading" aria-haspopup="dialog" aria-label="Share link: Further Reading"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong>Unicode Reference</strong>: <code>/docs/reference/unicode-support/</code></li> <li><strong>Server Configuration</strong>: <code>/docs/configuration/server-configuration/</code></li> </ul> <h3 id="conclusion" class="position-relative d-flex align-items-center group"> <span>Conclusion</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="conclusion" aria-haspopup="dialog" aria-label="Share link: Conclusion"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Geode provides comprehensive internationalization and localization support enabling you to build truly global graph applications. From full Unicode support and locale-aware collation to timezone handling and multilingual data modeling, Geode gives you the tools to serve users worldwide with appropriate language and cultural conventions.</p> <p>Key capabilities:</p> <ul> <li><strong>Full UTF-8 Support</strong>: Store and query text in any language</li> <li><strong>ICU Collation</strong>: Culturally appropriate sorting and comparison</li> <li><strong>Locale-Aware Operations</strong>: Date, time, number formatting per locale</li> <li><strong>RTL Support</strong>: Proper handling of Arabic, Hebrew, and other RTL scripts</li> <li><strong>Timezone Management</strong>: Store UTC, display in user&rsquo;s timezone</li> <li><strong>Flexible Translation Models</strong>: Multiple approaches for multilingual content</li> </ul> <p>Build applications that respect linguistic and cultural diversity with Geode&rsquo;s i18n features.</p>

Related Articles