<!-- 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; 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; 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">'</span><span class="nc">Hello</span><span class="w"> </span><span class="py">World</span><span class="err">'</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">'</span><span class="nc">你好世界</span><span class="err">'</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">'</span><span class="nc">مرحبا</span><span class="w"> </span><span class="py">بالعالم</span><span class="err">'</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">'</span><span class="nc">Привет</span><span class="w"> </span><span class="py">мир</span><span class="err">'</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">'</span><span class="nc">こんにちは世界</span><span class="err">'</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">'</span><span class="nc">नमस्ते</span><span class="w"> </span><span class="py">दुन</span><span class="err">ि</span><span class="py">य</span><span class="err">ा'</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">'👋🌍'</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">'</span><span class="py">世界</span><span class="err">'</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">'</span><span class="py">العالم</span><span class="err">'</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">'🌍'</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">'</span><span class="nc">café</span><span class="err">'</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">'</span><span class="nc">café</span><span class="err">'</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">'</span><span class="py">NFC</span><span class="err">'</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">'</span><span class="py">NFC</span><span class="err">'</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">'</span><span class="py">straße</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">de_DE</span><span class="err">'</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="err">'</span><span class="py">STRASSE</span><span class="err">'</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">'</span><span class="py">i</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">tr_TR</span><span class="err">'</span><span class="p">)</span><span class="err">;</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="err">'</span><span class="py">İ</span><span class="err">'</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">'</span><span class="py">de_DE</span><span class="nd">@collation</span><span class="p">=</span><span class="py">phonebook</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">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">'</span><span class="py">sv_SE</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">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">'</span><span class="py">zh_CN</span><span class="nd">@collation</span><span class="p">=</span><span class="py">pinyin</span><span class="err">';</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">'</span><span class="py">de_DE</span><span class="err">'</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">'</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">secondary</span><span class="err">'</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">'</span><span class="py">a</span><span class="err">'</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">'</span><span class="py">A</span><span class="err">'</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">'</span><span class="py">á</span><span class="err">'</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">'</span><span class="py">Á</span><span class="err">'</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">'</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">primary</span><span class="err">'</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">'</span><span class="py">a</span><span class="err">'</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">'</span><span class="py">A</span><span class="err">'</span><span class="w"> </span><span class="py">but</span><span class="w"> </span><span class="err">'</span><span class="py">a</span><span class="err">'</span><span class="w"> </span><span class="err">≠</span><span class="w"> </span><span class="err">'</span><span class="py">á</span><span class="err">'</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">'</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">secondary</span><span class="err">'</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">'</span><span class="py">a</span><span class="err">'</span><span class="w"> </span><span class="err">≠</span><span class="w"> </span><span class="err">'</span><span class="py">A</span><span class="err">'</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="err">'</span><span class="py">a</span><span class="err">'</span><span class="w"> </span><span class="err">≠</span><span class="w"> </span><span class="err">'</span><span class="py">á</span><span class="err">'</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">'</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">tertiary</span><span class="err">'</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">'</span><span class="py">en_US</span><span class="nd">@strength</span><span class="p">=</span><span class="py">quaternary</span><span class="err">'</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">'</span><span class="py">Sweden</span><span class="err">'</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">'</span><span class="py">sv_SE</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">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">'</span><span class="py">Czech</span><span class="w"> </span><span class="py">Republic</span><span class="err">'</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">'</span><span class="py">cs_CZ</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">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">'</span><span class="py">Japan</span><span class="err">'</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">'</span><span class="py">ja_JP</span><span class="nd">@collation</span><span class="p">=</span><span class="py">unihan</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">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">'</span><span class="nc">Product</span><span class="w"> </span><span class="py">Launch</span><span class="err">'</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">'</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">'</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">'</span><span class="nc">America</span><span class="err">/</span><span class="py">New_York</span><span class="err">'</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">'</span><span class="py">America</span><span class="err">/</span><span class="py">New_York</span><span class="err">'</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">'</span><span class="py">Europe</span><span class="err">/</span><span class="py">London</span><span class="err">'</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">'</span><span class="py">Asia</span><span class="err">/</span><span class="py">Tokyo</span><span class="err">'</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">'</span><span class="py">en_US</span><span class="err">'</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">"06/15/2025"</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">'</span><span class="py">en_GB</span><span class="err">'</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">"15/06/2025"</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">'</span><span class="py">de_DE</span><span class="err">'</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">"15.06.2025"</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">'</span><span class="py">zh_CN</span><span class="err">'</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">"2025年6月15日"</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">'</span><span class="py">USD</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">en_US</span><span class="err">'</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">"$29.99"</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">'</span><span class="py">EUR</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">de_DE</span><span class="err">'</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">"29,99 €"</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">'</span><span class="py">JPY</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">ja_JP</span><span class="err">'</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">"¥2,999"</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">'</span><span class="py">INR</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">hi_IN</span><span class="err">'</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">"₹2,499.00"</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">'</span><span class="py">en_US</span><span class="err">'</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">"1,234.56"</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">'</span><span class="py">de_DE</span><span class="err">'</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">"1.234,56"</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">'</span><span class="py">fr_FR</span><span class="err">'</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">"1 234,56"</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">'</span><span class="py">İbrahim</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">tr_TR</span><span class="err">'</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">'</span><span class="py">en_US</span><span class="err">'</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">'</span><span class="py">Francois</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">fr_FR</span><span class="err">'</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">'</span><span class="nc">مقالة</span><span class="w"> </span><span class="py">باللغة</span><span class="w"> </span><span class="py">العربية</span><span class="err">'</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">'</span><span class="nc">מאמר</span><span class="w"> </span><span class="py">בעברית</span><span class="err">'</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">'</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">'</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">'</span><span class="nc">rtl</span><span class="err">'</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">'</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">'</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">'</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">'</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">'</span><span class="nc">mixed</span><span class="err">'</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">'</span><span class="py">123</span><span class="err">'</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">'</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">'</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">'</span><span class="py">RTL</span><span class="err">'</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">'</span><span class="py">LTR</span><span class="err">'</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">'</span><span class="nc">P123</span><span class="err">'</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">'</span><span class="nc">Laptop</span><span class="w"> </span><span class="py">Computer</span><span class="err">'</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">'</span><span class="nc">Computadora</span><span class="w"> </span><span class="py">Portátil</span><span class="err">'</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">'</span><span class="nc">Ordinateur</span><span class="w"> </span><span class="py">Portable</span><span class="err">'</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">'</span><span class="nc">Laptop</span><span class="err">-</span><span class="py">Computer</span><span class="err">'</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">'</span><span class="nc">笔记本电脑</span><span class="err">'</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">'</span><span class="nc">ノートパソコン</span><span class="err">'</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">'</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">'</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">'</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">'</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">'</span><span class="nc">en</span><span class="err">'</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">'</span><span class="py">name_</span><span class="err">'</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">'</span><span class="py">description_</span><span class="err">'</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">'</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">'</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">'</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">'</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">'</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">'</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">'</span><span class="nc">en</span><span class="err">'</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">'</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">'</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">'</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">'</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">'</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">'</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">'</span><span class="nc">es</span><span class="err">'</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">'</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">'</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">'</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">'</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">'</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">'</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">'</span><span class="nc">fr</span><span class="err">'</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">'</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">'</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">'</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">'</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">'</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">'</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">-></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">-></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">'</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">-></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">-></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">-></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">'</span><span class="nc">Conference</span><span class="err">'</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">'</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">'</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">'</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">'</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">'</span><span class="nc">America</span><span class="err">/</span><span class="py">New_York</span><span class="err">'</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’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">"today"</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">user</span><span class="err">'</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">></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"><</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">'</span><span class="nc">article</span><span class="err">-</span><span class="py">123</span><span class="err">'</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">'</span><span class="nc">en</span><span class="err">'</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">'</span><span class="nc">es</span><span class="err">'</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">'</span><span class="nc">pending</span><span class="err">'</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">'</span><span class="nc">pending</span><span class="err">'</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">'</span><span class="nc">en</span><span class="err">'</span><span class="p">,</span><span class="w"> </span><span class="err">'</span><span class="py">es</span><span class="err">'</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">-></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">'</span><span class="nc">in_progress</span><span class="err">'</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">-></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">'</span><span class="py">in_progress</span><span class="err">'</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">'</span><span class="nc">en</span><span class="err">'</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">'</span><span class="nc">es</span><span class="err">'</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">'</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">'</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">'</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">'</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">'</span><span class="nc">greeting</span><span class="err">'</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">'</span><span class="py">en</span><span class="err">'</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">'</span><span class="py">es</span><span class="err">'</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">></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">'</span><span class="nc">user123</span><span class="err">'</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">'</span><span class="nc">es</span><span class="err">'</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">'</span><span class="nc">MX</span><span class="err">'</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">'</span><span class="nc">es_MX</span><span class="err">'</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">'</span><span class="nc">America</span><span class="err">/</span><span class="py">Mexico_City</span><span class="err">'</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">'</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">'</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">'</span><span class="nc">24h</span><span class="err">'</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">'</span><span class="nc">MXN</span><span class="err">'</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">'</span><span class="nc">metric</span><span class="err">'</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">'</span><span class="py">en</span><span class="err">'</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">-></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: "en-US,en;q=0.9,es;q=0.8"</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">"""
</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]->(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"> """</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">'localized'</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">'</span><span class="py">de_DE</span><span class="err">';</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">'</span><span class="nc">english</span><span class="err">'</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">'</span><span class="nc">spanish</span><span class="err">'</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">'</span><span class="nc">chinese</span><span class="err">'</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">"""
</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]->(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"> """</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">'localized'</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>: “Hello” vs “Zdravstvuyte” (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’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’s i18n features.</p>
Tag
1 article
Internationalization & Localization (i18n/l10n)
Complete guide to internationalization and localization in Geode. Covers Unicode support, collation, locale-specific features, RTL support, timezone handling, and translation strategies.