[{"data":1,"prerenderedAt":1960},["ShallowReactive",2],{"navigation":3,"content-translator-navigation":552,"content-translator-version":593,"mdc--4zkox4-key":705,"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Ftranslator":735,"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Ftranslator-surround":1955},[4,139,265,303,320,384,395,531],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":38},"Copilot","i-ri-sparkling-line","\u002Fdocs\u002Fcopilot","1.docs\u002F1.copilot",[10,21,39,60,85,122],{"title":11,"path":12,"stem":13,"children":14},"Getting Started","\u002Fdocs\u002Fcopilot\u002Fgetting-started","1.docs\u002F1.copilot\u002F1.getting-started\u002F1.index",[15,17],{"title":16,"path":12,"stem":13},"Introduction",{"title":18,"path":19,"stem":20},"Installation","\u002Fdocs\u002Fcopilot\u002Fgetting-started\u002Finstallation","1.docs\u002F1.copilot\u002F1.getting-started\u002F2.installation",{"title":22,"path":23,"stem":24,"children":25,"page":38},"Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration","1.docs\u002F1.copilot\u002F2.configuration",[26,30,34],{"title":27,"path":28,"stem":29},"Global Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Fglobal","1.docs\u002F1.copilot\u002F2.configuration\u002F1.global",{"title":31,"path":32,"stem":33},"View Button & Field Configuration","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Flocal","1.docs\u002F1.copilot\u002F2.configuration\u002F2.local",{"title":35,"path":36,"stem":37},"System Prompt","\u002Fdocs\u002Fcopilot\u002Fconfiguration\u002Fsystem-prompt","1.docs\u002F1.copilot\u002F2.configuration\u002F3.system-prompt",false,{"title":40,"path":41,"stem":42,"children":43,"page":38},"Usage","\u002Fdocs\u002Fcopilot\u002Fusage","1.docs\u002F1.copilot\u002F3.usage",[44,48,52,56],{"title":45,"path":46,"stem":47},"Panel View Button","\u002Fdocs\u002Fcopilot\u002Fusage\u002Fview-button","1.docs\u002F1.copilot\u002F3.usage\u002F1.view-button",{"title":49,"path":50,"stem":51},"Toolbar Buttons","\u002Fdocs\u002Fcopilot\u002Fusage\u002Ftoolbar-buttons","1.docs\u002F1.copilot\u002F3.usage\u002F2.toolbar-buttons",{"title":53,"path":54,"stem":55},"Inline Suggestions","\u002Fdocs\u002Fcopilot\u002Fusage\u002Finline-suggestions","1.docs\u002F1.copilot\u002F3.usage\u002F3.inline-suggestions",{"title":57,"path":58,"stem":59},"Copilot Section","\u002Fdocs\u002Fcopilot\u002Fusage\u002Fsection","1.docs\u002F1.copilot\u002F3.usage\u002F4.section",{"title":61,"path":62,"stem":63,"children":64,"page":38},"Prompt Dialog","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog","1.docs\u002F1.copilot\u002F4.prompt-dialog",[65,69,73,77,81],{"title":66,"path":67,"stem":68},"Field Placeholders","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fplaceholders","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F1.placeholders",{"title":70,"path":71,"stem":72},"Prompt Templates","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Ftemplates","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F2.templates",{"title":74,"path":75,"stem":76},"File Attachments","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Ffiles","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F3.files",{"title":78,"path":79,"stem":80},"Page References","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fpage-references","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F4.page-references",{"title":82,"path":83,"stem":84},"Skills","\u002Fdocs\u002Fcopilot\u002Fprompt-dialog\u002Fskills","1.docs\u002F1.copilot\u002F4.prompt-dialog\u002F5.skills",{"title":86,"path":87,"stem":88,"children":89},"PHP Classes","\u002Fdocs\u002Fcopilot\u002Fphp-classes","1.docs\u002F1.copilot\u002F5.php-classes\u002F1.index",[90,92,96,118],{"title":91,"path":87,"stem":88},"Overview",{"title":93,"path":94,"stem":95},"Client","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fclient","1.docs\u002F1.copilot\u002F5.php-classes\u002F2.client",{"title":97,"path":98,"stem":99,"children":100,"defaultOpen":38},"Providers","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F1.index",[101,102,106,110,114],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"OpenAIProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fopenai","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F2.openai",{"title":107,"path":108,"stem":109},"AnthropicProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fanthropic","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F3.anthropic",{"title":111,"path":112,"stem":113},"GeminiProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fgemini","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F4.gemini",{"title":115,"path":116,"stem":117},"MistralProvider","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fproviders\u002Fmistral","1.docs\u002F1.copilot\u002F5.php-classes\u002F3.providers\u002F5.mistral",{"title":119,"path":120,"stem":121},"Exceptions","\u002Fdocs\u002Fcopilot\u002Fphp-classes\u002Fexceptions","1.docs\u002F1.copilot\u002F5.php-classes\u002F4.exceptions",{"title":123,"path":124,"stem":125,"children":126,"page":38},"Advanced","\u002Fdocs\u002Fcopilot\u002Fadvanced","1.docs\u002F1.copilot\u002F6.advanced",[127,131,135],{"title":128,"path":129,"stem":130},"Blocks & Layouts","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Fblocks-and-layouts","1.docs\u002F1.copilot\u002F6.advanced\u002F1.blocks-and-layouts",{"title":132,"path":133,"stem":134},"Quick Reference","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Freference","1.docs\u002F1.copilot\u002F6.advanced\u002F2.reference",{"title":136,"path":137,"stem":138},"Troubleshooting","\u002Fdocs\u002Fcopilot\u002Fadvanced\u002Ftroubleshooting","1.docs\u002F1.copilot\u002F6.advanced\u002F3.troubleshooting",{"title":140,"icon":141,"path":142,"stem":143,"children":144,"page":38},"Content Translator","i-ri-translate","\u002Fdocs\u002Fcontent-translator","1.docs\u002F2.content-translator",[145,157,168,185,194,228,240],{"title":11,"path":146,"stem":147,"children":148},"\u002Fdocs\u002Fcontent-translator\u002Fgetting-started","1.docs\u002F2.content-translator\u002F1.getting-started\u002F1.index",[149,150,153],{"title":16,"path":146,"stem":147},{"title":18,"path":151,"stem":152},"\u002Fdocs\u002Fcontent-translator\u002Fgetting-started\u002Finstallation","1.docs\u002F2.content-translator\u002F1.getting-started\u002F2.installation",{"title":154,"path":155,"stem":156},"Migration","\u002Fdocs\u002Fcontent-translator\u002Fgetting-started\u002Fmigration","1.docs\u002F2.content-translator\u002F1.getting-started\u002F3.migration",{"title":22,"path":158,"stem":159,"children":160,"page":38},"\u002Fdocs\u002Fcontent-translator\u002Fconfiguration","1.docs\u002F2.content-translator\u002F2.configuration",[161,164],{"title":27,"path":162,"stem":163},"\u002Fdocs\u002Fcontent-translator\u002Fconfiguration\u002Fglobal","1.docs\u002F2.content-translator\u002F2.configuration\u002F1.global",{"title":165,"path":166,"stem":167},"View Button & Section Configuration","\u002Fdocs\u002Fcontent-translator\u002Fconfiguration\u002Flocal","1.docs\u002F2.content-translator\u002F2.configuration\u002F2.local",{"title":169,"path":170,"stem":171,"children":172,"page":38},"Translation Providers","\u002Fdocs\u002Fcontent-translator\u002Fproviders","1.docs\u002F2.content-translator\u002F3.providers",[173,177,181],{"title":174,"path":175,"stem":176},"DeepL","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fdeepl","1.docs\u002F2.content-translator\u002F3.providers\u002F1.deepl",{"title":178,"path":179,"stem":180},"AI Translation","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fai-translation","1.docs\u002F2.content-translator\u002F3.providers\u002F2.ai-translation",{"title":182,"path":183,"stem":184},"Custom Translator","\u002Fdocs\u002Fcontent-translator\u002Fproviders\u002Fcustom-translator","1.docs\u002F2.content-translator\u002F3.providers\u002F3.custom-translator",{"title":186,"path":187,"stem":188,"children":189,"page":38},"Panel","\u002Fdocs\u002Fcontent-translator\u002Fpanel","1.docs\u002F2.content-translator\u002F4.panel",[190],{"title":191,"path":192,"stem":193},"Translation Coverage","\u002Fdocs\u002Fcontent-translator\u002Fpanel\u002Ftranslation-coverage","1.docs\u002F2.content-translator\u002F4.panel\u002F1.translation-coverage",{"title":86,"path":195,"stem":196,"children":197},"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes","1.docs\u002F2.content-translator\u002F5.php-classes\u002F1.index",[198,199,203,221,224],{"title":91,"path":195,"stem":196},{"title":200,"path":201,"stem":202},"Translator","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Ftranslator","1.docs\u002F2.content-translator\u002F5.php-classes\u002F2.translator",{"title":204,"path":205,"stem":206,"children":207,"defaultOpen":38},"Strategies","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F1.index",[208,209,213,217],{"title":91,"path":205,"stem":206},{"title":210,"path":211,"stem":212},"DeepLStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fdeepl-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F2.deepl-strategy",{"title":214,"path":215,"stem":216},"CopilotAIStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fcopilot-ai-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F3.copilot-ai-strategy",{"title":218,"path":219,"stem":220},"CallableStrategy","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fstrategies\u002Fcallable-strategy","1.docs\u002F2.content-translator\u002F5.php-classes\u002F3.strategies\u002F4.callable-strategy",{"title":119,"path":222,"stem":223},"\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fexceptions","1.docs\u002F2.content-translator\u002F5.php-classes\u002F4.exceptions",{"title":225,"path":226,"stem":227},"DeepL Client","\u002Fdocs\u002Fcontent-translator\u002Fphp-classes\u002Fdeepl-client","1.docs\u002F2.content-translator\u002F5.php-classes\u002F5.deepl-client",{"title":123,"path":229,"stem":230,"children":231,"page":38},"\u002Fdocs\u002Fcontent-translator\u002Fadvanced","1.docs\u002F2.content-translator\u002F6.advanced",[232,236],{"title":233,"path":234,"stem":235},"KirbyTags","\u002Fdocs\u002Fcontent-translator\u002Fadvanced\u002Fkirbytags","1.docs\u002F2.content-translator\u002F6.advanced\u002F1.kirbytags",{"title":237,"path":238,"stem":239},"Hooks","\u002Fdocs\u002Fcontent-translator\u002Fadvanced\u002Fhooks","1.docs\u002F2.content-translator\u002F6.advanced\u002F2.hooks",{"title":241,"path":242,"stem":243,"children":244,"page":38},"CLI & Automation","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation","1.docs\u002F2.content-translator\u002F7.cli-automation",[245,249,253,257,261],{"title":246,"path":247,"stem":248},"Single Page","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fsingle-page","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F1.single-page",{"title":250,"path":251,"stem":252},"Batch Pages","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fbatch-pages","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F2.batch-pages",{"title":254,"path":255,"stem":256},"File Metadata","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Ffile-metadata","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F3.file-metadata",{"title":258,"path":259,"stem":260},"Janitor Integration","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fjanitor","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F4.janitor",{"title":262,"path":263,"stem":264},"AI Strategy Override","\u002Fdocs\u002Fcontent-translator\u002Fcli-automation\u002Fai-strategy","1.docs\u002F2.content-translator\u002F7.cli-automation\u002F5.ai-strategy",{"title":266,"icon":267,"path":268,"stem":269,"children":270,"page":38},"SEO Audit","i-ri-seo-line","\u002Fdocs\u002Fseo-audit","1.docs\u002F3.seo-audit",[271,279,290],{"title":11,"path":272,"stem":273,"children":274},"\u002Fdocs\u002Fseo-audit\u002Fgetting-started","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F1.index",[275,276],{"title":16,"path":272,"stem":273},{"title":18,"path":277,"stem":278},"\u002Fdocs\u002Fseo-audit\u002Fgetting-started\u002Finstallation","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F2.installation",{"title":22,"path":280,"stem":281,"children":282,"page":38},"\u002Fdocs\u002Fseo-audit\u002Fconfiguration","1.docs\u002F3.seo-audit\u002F2.configuration",[283,286],{"title":27,"path":284,"stem":285},"\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Fglobal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F1.global",{"title":287,"path":288,"stem":289},"View Button & Section","\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Flocal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F2.local",{"title":291,"path":292,"stem":293,"children":294,"page":38},"Guide","\u002Fdocs\u002Fseo-audit\u002Fguide","1.docs\u002F3.seo-audit\u002F3.guide",[295,299],{"title":296,"path":297,"stem":298},"Assessments for SEO and Readability","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fassessments","1.docs\u002F3.seo-audit\u002F3.guide\u002F1.assessments",{"title":300,"path":301,"stem":302},"Audit URL","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Faudit-url","1.docs\u002F3.seo-audit\u002F3.guide\u002F2.audit-url",{"title":304,"path":305,"stem":306,"children":307,"icon":319},"Live Preview","\u002Fdocs\u002Flive-preview","1.docs\u002F4.live-preview\u002F1.index",[308,309,312,316],{"title":11,"path":305,"stem":306},{"title":22,"path":310,"stem":311},"\u002Fdocs\u002Flive-preview\u002Fconfiguration","1.docs\u002F4.live-preview\u002F2.configuration",{"title":313,"path":314,"stem":315},"Preview Mode","\u002Fdocs\u002Flive-preview\u002Fpreview-mode","1.docs\u002F4.live-preview\u002F3.preview-mode",{"title":136,"path":317,"stem":318},"\u002Fdocs\u002Flive-preview\u002Ftroubleshooting","1.docs\u002F4.live-preview\u002F4.troubleshooting","i-ri-picture-in-picture-line",{"title":321,"icon":322,"path":323,"stem":324,"children":325,"page":38},"Headless","i-ri-code-block","\u002Fdocs\u002Fheadless","1.docs\u002F5.headless",[326,334,350,370,378],{"title":11,"path":327,"stem":328,"children":329},"\u002Fdocs\u002Fheadless\u002Fgetting-started","1.docs\u002F5.headless\u002F1.getting-started\u002F1.index",[330,331],{"title":16,"path":327,"stem":328},{"title":18,"path":332,"stem":333},"\u002Fdocs\u002Fheadless\u002Fgetting-started\u002Finstallation","1.docs\u002F5.headless\u002F1.getting-started\u002F2.installation",{"title":22,"path":335,"stem":336,"children":337,"page":38},"\u002Fdocs\u002Fheadless\u002Fconfiguration","1.docs\u002F5.headless\u002F2.configuration",[338,342,346],{"title":339,"path":340,"stem":341},"Authentication","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fauthentication","1.docs\u002F5.headless\u002F2.configuration\u002F1.authentication",{"title":343,"path":344,"stem":345},"CORS","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fcors","1.docs\u002F5.headless\u002F2.configuration\u002F2.cors",{"title":347,"path":348,"stem":349},"Panel Configuration","\u002Fdocs\u002Fheadless\u002Fconfiguration\u002Fpanel","1.docs\u002F5.headless\u002F2.configuration\u002F3.panel",{"title":40,"path":351,"stem":352,"children":353,"page":38},"\u002Fdocs\u002Fheadless\u002Fusage","1.docs\u002F5.headless\u002F3.usage",[354,358,362,366],{"title":355,"path":356,"stem":357},"KQL (Kirby Query Language)","\u002Fdocs\u002Fheadless\u002Fusage\u002Fkql","1.docs\u002F5.headless\u002F3.usage\u002F1.kql",{"title":359,"path":360,"stem":361},"JSON Templates","\u002Fdocs\u002Fheadless\u002Fusage\u002Fjson-templates","1.docs\u002F5.headless\u002F3.usage\u002F2.json-templates",{"title":363,"path":364,"stem":365},"Field Methods","\u002Fdocs\u002Fheadless\u002Fusage\u002Ffield-methods","1.docs\u002F5.headless\u002F3.usage\u002F3.field-methods",{"title":367,"path":368,"stem":369},"Page Methods","\u002Fdocs\u002Fheadless\u002Fusage\u002Fpage-methods","1.docs\u002F5.headless\u002F3.usage\u002F4.page-methods",{"title":123,"path":371,"stem":372,"children":373,"page":38},"\u002Fdocs\u002Fheadless\u002Fadvanced","1.docs\u002F5.headless\u002F4.advanced",[374],{"title":375,"path":376,"stem":377},"API Builder","\u002Fdocs\u002Fheadless\u002Fadvanced\u002Fapi-builder","1.docs\u002F5.headless\u002F4.advanced\u002F1.api-builder",{"title":154,"path":379,"stem":380,"children":381},"\u002Fdocs\u002Fheadless\u002Fmigration","1.docs\u002F5.headless\u002F5.migration\u002F1.index",[382],{"title":383,"path":379,"stem":380},"Version Migration",{"title":385,"path":386,"stem":387,"children":388,"icon":394},"Minimap","\u002Fdocs\u002Fminimap","1.docs\u002F6.minimap\u002F1.index",[389,390],{"title":11,"path":386,"stem":387},{"title":391,"path":392,"stem":393},"Fields Support","\u002Fdocs\u002Fminimap\u002Ffields-support","1.docs\u002F6.minimap\u002F2.fields-support","i-ri-timeline-view",{"title":396,"icon":397,"path":398,"stem":399,"children":400,"page":38},"Documentation","i-ri-book-open-line","\u002Fdocs","1.docs",[401,442,484,498,504,527],{"title":5,"icon":6,"path":7,"stem":8,"children":402,"page":38},[403,407,412,418,425,437],{"title":11,"path":12,"stem":13,"children":404},[405,406],{"title":16,"path":12,"stem":13},{"title":18,"path":19,"stem":20},{"title":22,"path":23,"stem":24,"children":408,"page":38},[409,410,411],{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":40,"path":41,"stem":42,"children":413,"page":38},[414,415,416,417],{"title":45,"path":46,"stem":47},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63,"children":419,"page":38},[420,421,422,423,424],{"title":66,"path":67,"stem":68},{"title":70,"path":71,"stem":72},{"title":74,"path":75,"stem":76},{"title":78,"path":79,"stem":80},{"title":82,"path":83,"stem":84},{"title":86,"path":87,"stem":88,"children":426},[427,428,429,436],{"title":91,"path":87,"stem":88},{"title":93,"path":94,"stem":95},{"title":97,"path":98,"stem":99,"children":430,"defaultOpen":38},[431,432,433,434,435],{"title":91,"path":98,"stem":99},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125,"children":438,"page":38},[439,440,441],{"title":128,"path":129,"stem":130},{"title":132,"path":133,"stem":134},{"title":136,"path":137,"stem":138},{"title":140,"icon":141,"path":142,"stem":143,"children":443,"page":38},[444,449,453,458,461,473,477],{"title":11,"path":146,"stem":147,"children":445},[446,447,448],{"title":16,"path":146,"stem":147},{"title":18,"path":151,"stem":152},{"title":154,"path":155,"stem":156},{"title":22,"path":158,"stem":159,"children":450,"page":38},[451,452],{"title":27,"path":162,"stem":163},{"title":165,"path":166,"stem":167},{"title":169,"path":170,"stem":171,"children":454,"page":38},[455,456,457],{"title":174,"path":175,"stem":176},{"title":178,"path":179,"stem":180},{"title":182,"path":183,"stem":184},{"title":186,"path":187,"stem":188,"children":459,"page":38},[460],{"title":191,"path":192,"stem":193},{"title":86,"path":195,"stem":196,"children":462},[463,464,465,471,472],{"title":91,"path":195,"stem":196},{"title":200,"path":201,"stem":202},{"title":204,"path":205,"stem":206,"children":466,"defaultOpen":38},[467,468,469,470],{"title":91,"path":205,"stem":206},{"title":210,"path":211,"stem":212},{"title":214,"path":215,"stem":216},{"title":218,"path":219,"stem":220},{"title":119,"path":222,"stem":223},{"title":225,"path":226,"stem":227},{"title":123,"path":229,"stem":230,"children":474,"page":38},[475,476],{"title":233,"path":234,"stem":235},{"title":237,"path":238,"stem":239},{"title":241,"path":242,"stem":243,"children":478,"page":38},[479,480,481,482,483],{"title":246,"path":247,"stem":248},{"title":250,"path":251,"stem":252},{"title":254,"path":255,"stem":256},{"title":258,"path":259,"stem":260},{"title":262,"path":263,"stem":264},{"title":266,"icon":267,"path":268,"stem":269,"children":485,"page":38},[486,490,494],{"title":11,"path":272,"stem":273,"children":487},[488,489],{"title":16,"path":272,"stem":273},{"title":18,"path":277,"stem":278},{"title":22,"path":280,"stem":281,"children":491,"page":38},[492,493],{"title":27,"path":284,"stem":285},{"title":287,"path":288,"stem":289},{"title":291,"path":292,"stem":293,"children":495,"page":38},[496,497],{"title":296,"path":297,"stem":298},{"title":300,"path":301,"stem":302},{"title":304,"path":305,"stem":306,"children":499,"icon":319},[500,501,502,503],{"title":11,"path":305,"stem":306},{"title":22,"path":310,"stem":311},{"title":313,"path":314,"stem":315},{"title":136,"path":317,"stem":318},{"title":321,"icon":322,"path":323,"stem":324,"children":505,"page":38},[506,510,515,521,524],{"title":11,"path":327,"stem":328,"children":507},[508,509],{"title":16,"path":327,"stem":328},{"title":18,"path":332,"stem":333},{"title":22,"path":335,"stem":336,"children":511,"page":38},[512,513,514],{"title":339,"path":340,"stem":341},{"title":343,"path":344,"stem":345},{"title":347,"path":348,"stem":349},{"title":40,"path":351,"stem":352,"children":516,"page":38},[517,518,519,520],{"title":355,"path":356,"stem":357},{"title":359,"path":360,"stem":361},{"title":363,"path":364,"stem":365},{"title":367,"path":368,"stem":369},{"title":123,"path":371,"stem":372,"children":522,"page":38},[523],{"title":375,"path":376,"stem":377},{"title":154,"path":379,"stem":380,"children":525},[526],{"title":383,"path":379,"stem":380},{"title":385,"path":386,"stem":387,"children":528,"icon":394},[529,530],{"title":11,"path":386,"stem":387},{"title":391,"path":392,"stem":393},{"title":532,"path":533,"stem":534,"children":535,"page":38},"Blog","\u002Fblog","blog",[536,540,544,548],{"title":537,"path":538,"stem":539},"Kirby Copilot v2.5 – Beyond Single Fields","\u002Fblog\u002Fcopilot-v25","blog\u002Fcopilot-v25",{"title":541,"path":542,"stem":543},"Kirby Copilot v3 – Your Quiet Co-Writer","\u002Fblog\u002Fcopilot-v3","blog\u002Fcopilot-v3",{"title":545,"path":546,"stem":547},"Going Open Source with Commercial Plugins","\u002Fblog\u002Fgoing-open-source","blog\u002Fgoing-open-source",{"title":549,"path":550,"stem":551},"Moving to Paddle","\u002Fblog\u002Fpaddle-migration","blog\u002Fpaddle-migration",[553,558,562,567,570,582,586],{"title":11,"path":146,"stem":147,"children":554},[555,556,557],{"title":16,"path":146,"stem":147},{"title":18,"path":151,"stem":152},{"title":154,"path":155,"stem":156},{"title":22,"path":158,"stem":159,"children":559,"page":38},[560,561],{"title":27,"path":162,"stem":163},{"title":165,"path":166,"stem":167},{"title":169,"path":170,"stem":171,"children":563,"page":38},[564,565,566],{"title":174,"path":175,"stem":176},{"title":178,"path":179,"stem":180},{"title":182,"path":183,"stem":184},{"title":186,"path":187,"stem":188,"children":568,"page":38},[569],{"title":191,"path":192,"stem":193},{"title":86,"path":195,"stem":196,"children":571},[572,573,574,580,581],{"title":91,"path":195,"stem":196},{"title":200,"path":201,"stem":202},{"title":204,"path":205,"stem":206,"children":575,"defaultOpen":38},[576,577,578,579],{"title":91,"path":205,"stem":206},{"title":210,"path":211,"stem":212},{"title":214,"path":215,"stem":216},{"title":218,"path":219,"stem":220},{"title":119,"path":222,"stem":223},{"title":225,"path":226,"stem":227},{"title":123,"path":229,"stem":230,"children":583,"page":38},[584,585],{"title":233,"path":234,"stem":235},{"title":237,"path":238,"stem":239},{"title":241,"path":242,"stem":243,"children":587,"page":38},[588,589,590,591,592],{"title":246,"path":247,"stem":248},{"title":250,"path":251,"stem":252},{"title":254,"path":255,"stem":256},{"title":258,"path":259,"stem":260},{"title":262,"path":263,"stem":264},{"id":594,"title":595,"body":596,"date":697,"description":694,"extension":698,"meta":699,"navigation":700,"path":701,"seo":702,"stem":703,"__hash__":704},"versions\u002F3.content-translator\u002Fchangelog\u002Fv3.11.0.md","v3.11.0",{"type":597,"value":598,"toc":693},"minimark",[599,621,627,669,674],[600,601,602],"tip",{},[603,604,605,606,610,611,616,617,620],"p",{},"Translation backends are now pluggable. The new ",[607,608,609],"code",{},"strategy"," config accepts DeepL, AI (via ",[612,613,615],"a",{"href":614},"\u002Fcopilot","Kirby Copilot","), or any custom ",[607,618,619],{},"Strategy"," implementation – including a closure for one-off integrations.",[603,622,623],{},[624,625,626],"strong",{},"🚀 Features",[628,629,630,660],"ul",{},[631,632,633,636,637,640,641,644,645,648,649,652,653,655,656,659],"li",{},[624,634,635],{},"Pluggable translation strategies",": New ",[607,638,639],{},"johannschopplich.content-translator.strategy"," config option accepts ",[607,642,643],{},"'deepl'",", ",[607,646,647],{},"'ai'",", a ",[607,650,651],{},"Closure",", or a custom ",[607,654,619],{}," instance. See the ",[612,657,658],{"href":205},"strategies documentation",".",[631,661,662,665,666,659],{},[624,663,664],{},"PHP classes",": First-class PHP API for programmatic translation. Run translations from CLI, hooks, or any custom workflow. See the ",[612,667,668],{"href":195},"PHP classes documentation",[603,670,671],{},[624,672,673],{},"⚠️ Deprecated",[628,675,676],{},[631,677,678,684,685,688,689,659],{},[624,679,680,683],{},[607,681,682],{},"translateFn"," config option",": Use ",[607,686,687],{},"'strategy' => $closure"," instead – the closure signature is identical. Will be removed in v4. See the ",[612,690,692],{"href":691},"\u002Fdocs\u002Fcontent-translator\u002Fgetting-started\u002Fmigration#translatefn--strategy","migration guide",{"title":694,"searchDepth":695,"depth":695,"links":696},"",2,[],"2026-05-03","md",{},true,"\u002Fcontent-translator\u002Fchangelog\u002Fv3.11.0",{"title":595,"description":694},"3.content-translator\u002Fchangelog\u002Fv3.11.0","g15HkUy6spEKsZAy_6y3Vb7JFY6PDYfN8WRGNEJna-A",{"data":706,"body":707},{},{"type":708,"children":709},"root",[710],{"type":711,"tag":603,"props":712,"children":713},"element",{},[714,717,725,727,734],{"type":715,"value":716},"text","We love Kirby – our plugins wouldn't exist without it. Help us improve: share feedback in ",{"type":711,"tag":612,"props":718,"children":722},{"href":719,"rel":720},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fdiscussions",[721],"nofollow",[723],{"type":715,"value":724},"Discussions",{"type":715,"value":726}," or report bugs via ",{"type":711,"tag":612,"props":728,"children":731},{"href":729,"rel":730},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fissues",[721],[732],{"type":715,"value":733},"Issues",{"type":715,"value":659},{"id":736,"title":200,"body":737,"description":1951,"extension":698,"meta":1952,"navigation":700,"path":201,"seo":1953,"stem":202,"__hash__":1954},"docs\u002F1.docs\u002F2.content-translator\u002F5.php-classes\u002F2.translator.md",{"type":597,"value":738,"toc":1940},[739,748,882,906,911,954,987,1063,1067,1073,1076,1109,1137,1147,1152,1159,1238,1241,1286,1298,1304,1356,1359,1386,1392,1444,1447,1474,1478,1509,1515,1619,1623,1626,1778,1785,1867,1881,1930,1936],[603,740,741,742,744,745,659],{},"Build a ",[607,743,200],{}," for any page, file, or site to copy and translate content from PHP. Mutate the model in place, then read the updated state back via ",[607,746,747],{},"model()",[749,750,754],"pre",{"className":751,"code":752,"language":753,"meta":694,"style":694},"language-php shiki shiki-themes github-light github-light github-dark","use JohannSchopplich\\ContentTranslator\\Translator;\n\n$translator = new Translator(page('blog\u002Farticle'));\n$translator->copyContent('de', 'en');\n$translator->translateContent('de', 'de', 'en');\n\n$page = $translator->model();\n","php",[607,755,756,773,778,809,834,858,863],{"__ignoreMap":694},[757,758,761,765,769],"span",{"class":759,"line":760},"line",1,[757,762,764],{"class":763},"s8jYJ","use",[757,766,768],{"class":767},"sBjJW"," JohannSchopplich\\ContentTranslator\\Translator",[757,770,772],{"class":771},"sxrX7",";\n",[757,774,775],{"class":759,"line":695},[757,776,777],{"emptyLinePlaceholder":700},"\n",[757,779,781,784,787,790,793,796,800,802,806],{"class":759,"line":780},3,[757,782,783],{"class":771},"$translator ",[757,785,786],{"class":763},"=",[757,788,789],{"class":763}," new",[757,791,792],{"class":767}," Translator",[757,794,795],{"class":771},"(",[757,797,799],{"class":798},"snPdu","page",[757,801,795],{"class":771},[757,803,805],{"class":804},"sIIMD","'blog\u002Farticle'",[757,807,808],{"class":771},"));\n",[757,810,812,815,818,821,823,826,828,831],{"class":759,"line":811},4,[757,813,814],{"class":771},"$translator",[757,816,817],{"class":763},"->",[757,819,820],{"class":798},"copyContent",[757,822,795],{"class":771},[757,824,825],{"class":804},"'de'",[757,827,644],{"class":771},[757,829,830],{"class":804},"'en'",[757,832,833],{"class":771},");\n",[757,835,837,839,841,844,846,848,850,852,854,856],{"class":759,"line":836},5,[757,838,814],{"class":771},[757,840,817],{"class":763},[757,842,843],{"class":798},"translateContent",[757,845,795],{"class":771},[757,847,825],{"class":804},[757,849,644],{"class":771},[757,851,825],{"class":804},[757,853,644],{"class":771},[757,855,830],{"class":804},[757,857,833],{"class":771},[757,859,861],{"class":759,"line":860},6,[757,862,777],{"emptyLinePlaceholder":700},[757,864,866,869,871,874,876,879],{"class":759,"line":865},7,[757,867,868],{"class":771},"$page ",[757,870,786],{"class":763},[757,872,873],{"class":771}," $translator",[757,875,817],{"class":763},[757,877,878],{"class":798},"model",[757,880,881],{"class":771},"();\n",[600,883,884],{},[603,885,886,887,644,890,893,894,897,898,901,902,905],{},"The same instance is exposed as a model method on ",[607,888,889],{},"Site",[607,891,892],{},"Page",", and ",[607,895,896],{},"File",": ",[607,899,900],{},"$page->translator()",". The ",[607,903,904],{},"translator()"," global helper mirrors the constructor.",[907,908,910],"h2",{"id":909},"construction","Construction",[749,912,914],{"className":751,"code":913,"language":753,"meta":694,"style":694},"public function __construct(Site|Page|File $model, array $options = [])\n",[607,915,916],{"__ignoreMap":694},[757,917,918,921,924,927,929,931,934,936,938,940,943,946,949,951],{"class":759,"line":760},[757,919,920],{"class":763},"public",[757,922,923],{"class":763}," function",[757,925,926],{"class":767}," __construct",[757,928,795],{"class":771},[757,930,889],{"class":767},[757,932,933],{"class":771},"|",[757,935,892],{"class":767},[757,937,933],{"class":771},[757,939,896],{"class":767},[757,941,942],{"class":771}," $model, ",[757,944,945],{"class":763},"array",[757,947,948],{"class":771}," $options ",[757,950,786],{"class":763},[757,952,953],{"class":771}," [])\n",[955,956,957,964],"field-group",{},[958,959,961],"field",{"name":878,"type":960},"Site | Page | File",[603,962,963],{},"The Kirby model whose content you want to translate.",[958,965,968],{"name":966,"type":967},"options","Array",[603,969,970,971,974,975,644,978,644,981,644,984,659],{},"Per-instance overrides for the same scoping options as the ",[612,972,973],{"href":162},"global config"," – ",[607,976,977],{},"fieldTypes",[607,979,980],{},"includeFields",[607,982,983],{},"excludeFields",[607,985,986],{},"kirbyTags",[749,988,990],{"className":751,"code":989,"language":753,"meta":694,"style":694},"$translator = translator(page('blog\u002Farticle'), [\n    'fieldTypes' => ['text', 'textarea', 'blocks'],\n    'excludeFields' => ['date', 'author'],\n]);\n",[607,991,992,1012,1039,1058],{"__ignoreMap":694},[757,993,994,996,998,1001,1003,1005,1007,1009],{"class":759,"line":760},[757,995,783],{"class":771},[757,997,786],{"class":763},[757,999,1000],{"class":798}," translator",[757,1002,795],{"class":771},[757,1004,799],{"class":798},[757,1006,795],{"class":771},[757,1008,805],{"class":804},[757,1010,1011],{"class":771},"), [\n",[757,1013,1014,1017,1020,1023,1026,1028,1031,1033,1036],{"class":759,"line":695},[757,1015,1016],{"class":804},"    'fieldTypes'",[757,1018,1019],{"class":763}," =>",[757,1021,1022],{"class":771}," [",[757,1024,1025],{"class":804},"'text'",[757,1027,644],{"class":771},[757,1029,1030],{"class":804},"'textarea'",[757,1032,644],{"class":771},[757,1034,1035],{"class":804},"'blocks'",[757,1037,1038],{"class":771},"],\n",[757,1040,1041,1044,1046,1048,1051,1053,1056],{"class":759,"line":780},[757,1042,1043],{"class":804},"    'excludeFields'",[757,1045,1019],{"class":763},[757,1047,1022],{"class":771},[757,1049,1050],{"class":804},"'date'",[757,1052,644],{"class":771},[757,1054,1055],{"class":804},"'author'",[757,1057,1038],{"class":771},[757,1059,1060],{"class":759,"line":811},[757,1061,1062],{"class":771},"]);\n",[907,1064,1066],{"id":1065},"instance-methods","Instance Methods",[1068,1069,1071],"h3",{"id":1070},"copycontent",[607,1072,820],{},[603,1074,1075],{},"Copy a source language's content over to a target language. Overwrites the target.",[749,1077,1079],{"className":751,"code":1078,"language":753,"meta":694,"style":694},"public function copyContent(string $toLanguageCode, string $fromLanguageCode): void\n",[607,1080,1081],{"__ignoreMap":694},[757,1082,1083,1085,1087,1090,1092,1095,1098,1100,1103,1106],{"class":759,"line":760},[757,1084,920],{"class":763},[757,1086,923],{"class":763},[757,1088,1089],{"class":798}," copyContent",[757,1091,795],{"class":771},[757,1093,1094],{"class":763},"string",[757,1096,1097],{"class":771}," $toLanguageCode, ",[757,1099,1094],{"class":763},[757,1101,1102],{"class":771}," $fromLanguageCode)",[757,1104,1105],{"class":763},":",[757,1107,1108],{"class":763}," void\n",[749,1110,1112],{"className":751,"code":1111,"language":753,"meta":694,"style":694},"$translator->copyContent('de', 'en'); \u002F\u002F Copy English → German\n",[607,1113,1114],{"__ignoreMap":694},[757,1115,1116,1118,1120,1122,1124,1126,1128,1130,1133],{"class":759,"line":760},[757,1117,814],{"class":771},[757,1119,817],{"class":763},[757,1121,820],{"class":798},[757,1123,795],{"class":771},[757,1125,825],{"class":804},[757,1127,644],{"class":771},[757,1129,830],{"class":804},[757,1131,1132],{"class":771},"); ",[757,1134,1136],{"class":1135},"sCsY4","\u002F\u002F Copy English → German\n",[1138,1139,1140],"note",{},[603,1141,1142,1143,1146],{},"When you copy from the default language to a secondary language on Kirby 5+, the target content file is ",[624,1144,1145],{},"deleted"," instead of overwritten – Kirby's built-in language inheritance keeps it in sync until you actually translate it.",[1068,1148,1150],{"id":1149},"translatecontent",[607,1151,843],{},[603,1153,1154,1155,1158],{},"Translate the content already stored in ",[607,1156,1157],{},"$contentLanguageCode"," and save it back. The fourth parameter overrides the configured strategy for this call only.",[749,1160,1162],{"className":751,"code":1161,"language":753,"meta":694,"style":694},"public function translateContent(\n    string $contentLanguageCode,\n    string $toLanguageCode,\n    string|null $fromLanguageCode = null,\n    Strategy|null $strategy = null,\n): void\n",[607,1163,1164,1176,1184,1191,1211,1229],{"__ignoreMap":694},[757,1165,1166,1168,1170,1173],{"class":759,"line":760},[757,1167,920],{"class":763},[757,1169,923],{"class":763},[757,1171,1172],{"class":798}," translateContent",[757,1174,1175],{"class":771},"(\n",[757,1177,1178,1181],{"class":759,"line":695},[757,1179,1180],{"class":763},"    string",[757,1182,1183],{"class":771}," $contentLanguageCode,\n",[757,1185,1186,1188],{"class":759,"line":780},[757,1187,1180],{"class":763},[757,1189,1190],{"class":771}," $toLanguageCode,\n",[757,1192,1193,1195,1197,1200,1203,1205,1208],{"class":759,"line":811},[757,1194,1180],{"class":763},[757,1196,933],{"class":771},[757,1198,1199],{"class":763},"null",[757,1201,1202],{"class":771}," $fromLanguageCode ",[757,1204,786],{"class":763},[757,1206,1207],{"class":767}," null",[757,1209,1210],{"class":771},",\n",[757,1212,1213,1216,1218,1220,1223,1225,1227],{"class":759,"line":836},[757,1214,1215],{"class":767},"    Strategy",[757,1217,933],{"class":771},[757,1219,1199],{"class":763},[757,1221,1222],{"class":771}," $strategy ",[757,1224,786],{"class":763},[757,1226,1207],{"class":767},[757,1228,1210],{"class":771},[757,1230,1231,1234,1236],{"class":759,"line":860},[757,1232,1233],{"class":771},")",[757,1235,1105],{"class":763},[757,1237,1108],{"class":763},[603,1239,1240],{},"Typical pattern – copy first, then translate the duplicated content:",[749,1242,1244],{"className":751,"code":1243,"language":753,"meta":694,"style":694},"$translator->copyContent('de', 'en');\n$translator->translateContent('de', 'de', 'en');\n",[607,1245,1246,1264],{"__ignoreMap":694},[757,1247,1248,1250,1252,1254,1256,1258,1260,1262],{"class":759,"line":760},[757,1249,814],{"class":771},[757,1251,817],{"class":763},[757,1253,820],{"class":798},[757,1255,795],{"class":771},[757,1257,825],{"class":804},[757,1259,644],{"class":771},[757,1261,830],{"class":804},[757,1263,833],{"class":771},[757,1265,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284],{"class":759,"line":695},[757,1267,814],{"class":771},[757,1269,817],{"class":763},[757,1271,843],{"class":798},[757,1273,795],{"class":771},[757,1275,825],{"class":804},[757,1277,644],{"class":771},[757,1279,825],{"class":804},[757,1281,644],{"class":771},[757,1283,830],{"class":804},[757,1285,833],{"class":771},[1287,1288,1289],"warning",{},[603,1290,1291,1292,1295,1296,659],{},"Throws ",[607,1293,1294],{},"TranslationException"," when the strategy fails for every collected unit. See ",[612,1297,119],{"href":222},[1068,1299,1301],{"id":1300},"translatetitle",[607,1302,1303],{},"translateTitle",[749,1305,1307],{"className":751,"code":1306,"language":753,"meta":694,"style":694},"public function translateTitle(\n    string $contentLanguageCode,\n    string $toLanguageCode,\n    string|null $fromLanguageCode = null,\n): void\n",[607,1308,1309,1320,1326,1332,1348],{"__ignoreMap":694},[757,1310,1311,1313,1315,1318],{"class":759,"line":760},[757,1312,920],{"class":763},[757,1314,923],{"class":763},[757,1316,1317],{"class":798}," translateTitle",[757,1319,1175],{"class":771},[757,1321,1322,1324],{"class":759,"line":695},[757,1323,1180],{"class":763},[757,1325,1183],{"class":771},[757,1327,1328,1330],{"class":759,"line":780},[757,1329,1180],{"class":763},[757,1331,1190],{"class":771},[757,1333,1334,1336,1338,1340,1342,1344,1346],{"class":759,"line":811},[757,1335,1180],{"class":763},[757,1337,933],{"class":771},[757,1339,1199],{"class":763},[757,1341,1202],{"class":771},[757,1343,786],{"class":763},[757,1345,1207],{"class":767},[757,1347,1210],{"class":771},[757,1349,1350,1352,1354],{"class":759,"line":836},[757,1351,1233],{"class":771},[757,1353,1105],{"class":763},[757,1355,1108],{"class":763},[603,1357,1358],{},"Translate the model title. Falls back to the source language when the target-language title is empty.",[749,1360,1362],{"className":751,"code":1361,"language":753,"meta":694,"style":694},"$translator->translateTitle('de', 'de', 'en');\n",[607,1363,1364],{"__ignoreMap":694},[757,1365,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384],{"class":759,"line":760},[757,1367,814],{"class":771},[757,1369,817],{"class":763},[757,1371,1303],{"class":798},[757,1373,795],{"class":771},[757,1375,825],{"class":804},[757,1377,644],{"class":771},[757,1379,825],{"class":804},[757,1381,644],{"class":771},[757,1383,830],{"class":804},[757,1385,833],{"class":771},[1068,1387,1389],{"id":1388},"translateslug",[607,1390,1391],{},"translateSlug",[749,1393,1395],{"className":751,"code":1394,"language":753,"meta":694,"style":694},"public function translateSlug(\n    string $contentLanguageCode,\n    string $toLanguageCode,\n    string|null $fromLanguageCode = null,\n): void\n",[607,1396,1397,1408,1414,1420,1436],{"__ignoreMap":694},[757,1398,1399,1401,1403,1406],{"class":759,"line":760},[757,1400,920],{"class":763},[757,1402,923],{"class":763},[757,1404,1405],{"class":798}," translateSlug",[757,1407,1175],{"class":771},[757,1409,1410,1412],{"class":759,"line":695},[757,1411,1180],{"class":763},[757,1413,1183],{"class":771},[757,1415,1416,1418],{"class":759,"line":780},[757,1417,1180],{"class":763},[757,1419,1190],{"class":771},[757,1421,1422,1424,1426,1428,1430,1432,1434],{"class":759,"line":811},[757,1423,1180],{"class":763},[757,1425,933],{"class":771},[757,1427,1199],{"class":763},[757,1429,1202],{"class":771},[757,1431,786],{"class":763},[757,1433,1207],{"class":767},[757,1435,1210],{"class":771},[757,1437,1438,1440,1442],{"class":759,"line":836},[757,1439,1233],{"class":771},[757,1441,1105],{"class":763},[757,1443,1108],{"class":763},[603,1445,1446],{},"Rename the page slug from the translated title. No-op for the homepage, the error page, and non-page models.",[749,1448,1450],{"className":751,"code":1449,"language":753,"meta":694,"style":694},"$translator->translateSlug('de', 'de', 'en');\n",[607,1451,1452],{"__ignoreMap":694},[757,1453,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472],{"class":759,"line":760},[757,1455,814],{"class":771},[757,1457,817],{"class":763},[757,1459,1391],{"class":798},[757,1461,795],{"class":771},[757,1463,825],{"class":804},[757,1465,644],{"class":771},[757,1467,825],{"class":804},[757,1469,644],{"class":771},[757,1471,830],{"class":804},[757,1473,833],{"class":771},[1068,1475,1476],{"id":878},[607,1477,878],{},[749,1479,1481],{"className":751,"code":1480,"language":753,"meta":694,"style":694},"public function model(): Site|Page|File\n",[607,1482,1483],{"__ignoreMap":694},[757,1484,1485,1487,1489,1492,1495,1497,1500,1502,1504,1506],{"class":759,"line":760},[757,1486,920],{"class":763},[757,1488,923],{"class":763},[757,1490,1491],{"class":798}," model",[757,1493,1494],{"class":771},"()",[757,1496,1105],{"class":763},[757,1498,1499],{"class":767}," Site",[757,1501,933],{"class":771},[757,1503,892],{"class":767},[757,1505,933],{"class":771},[757,1507,1508],{"class":767},"File\n",[603,1510,1511,1512,1514],{},"Mutating methods don't return the new model. Reach for ",[607,1513,747],{}," to grab the up-to-date instance:",[749,1516,1518],{"className":751,"code":1517,"language":753,"meta":694,"style":694},"$translator->translateContent('de', 'de');\n\n\u002F\u002F $page still holds the pre-translation model\necho $page->content()->get('text');\n\n\u002F\u002F Reassign to read the translation\n$page = $translator->model();\necho $page->content()->get('text');\n",[607,1519,1520,1538,1542,1547,1573,1577,1582,1596],{"__ignoreMap":694},[757,1521,1522,1524,1526,1528,1530,1532,1534,1536],{"class":759,"line":760},[757,1523,814],{"class":771},[757,1525,817],{"class":763},[757,1527,843],{"class":798},[757,1529,795],{"class":771},[757,1531,825],{"class":804},[757,1533,644],{"class":771},[757,1535,825],{"class":804},[757,1537,833],{"class":771},[757,1539,1540],{"class":759,"line":695},[757,1541,777],{"emptyLinePlaceholder":700},[757,1543,1544],{"class":759,"line":780},[757,1545,1546],{"class":1135},"\u002F\u002F $page still holds the pre-translation model\n",[757,1548,1549,1552,1555,1557,1560,1562,1564,1567,1569,1571],{"class":759,"line":811},[757,1550,1551],{"class":767},"echo",[757,1553,1554],{"class":771}," $page",[757,1556,817],{"class":763},[757,1558,1559],{"class":798},"content",[757,1561,1494],{"class":771},[757,1563,817],{"class":763},[757,1565,1566],{"class":798},"get",[757,1568,795],{"class":771},[757,1570,1025],{"class":804},[757,1572,833],{"class":771},[757,1574,1575],{"class":759,"line":836},[757,1576,777],{"emptyLinePlaceholder":700},[757,1578,1579],{"class":759,"line":860},[757,1580,1581],{"class":1135},"\u002F\u002F Reassign to read the translation\n",[757,1583,1584,1586,1588,1590,1592,1594],{"class":759,"line":865},[757,1585,868],{"class":771},[757,1587,786],{"class":763},[757,1589,873],{"class":771},[757,1591,817],{"class":763},[757,1593,878],{"class":798},[757,1595,881],{"class":771},[757,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617],{"class":759,"line":1598},8,[757,1600,1551],{"class":767},[757,1602,1554],{"class":771},[757,1604,817],{"class":763},[757,1606,1559],{"class":798},[757,1608,1494],{"class":771},[757,1610,817],{"class":763},[757,1612,1566],{"class":798},[757,1614,795],{"class":771},[757,1616,1025],{"class":804},[757,1618,833],{"class":771},[907,1620,1622],{"id":1621},"static-helpers","Static Helpers",[603,1624,1625],{},"Translate raw strings without a model. Both methods return the source unchanged for empty strings, pure numbers, and standalone URLs.",[749,1627,1629],{"className":751,"code":1628,"language":753,"meta":694,"style":694},"public static function translateText(\n    string $text,\n    string $targetLanguage,\n    string|null $sourceLanguage = null,\n    Strategy|null $strategy = null,\n): string\n\npublic static function translateTexts(\n    array $texts,\n    string $targetLanguage,\n    string|null $sourceLanguage = null,\n    Strategy|null $strategy = null,\n): array\n",[607,1630,1631,1645,1652,1659,1676,1692,1701,1705,1718,1727,1734,1751,1768],{"__ignoreMap":694},[757,1632,1633,1635,1638,1640,1643],{"class":759,"line":760},[757,1634,920],{"class":763},[757,1636,1637],{"class":763}," static",[757,1639,923],{"class":763},[757,1641,1642],{"class":798}," translateText",[757,1644,1175],{"class":771},[757,1646,1647,1649],{"class":759,"line":695},[757,1648,1180],{"class":763},[757,1650,1651],{"class":771}," $text,\n",[757,1653,1654,1656],{"class":759,"line":780},[757,1655,1180],{"class":763},[757,1657,1658],{"class":771}," $targetLanguage,\n",[757,1660,1661,1663,1665,1667,1670,1672,1674],{"class":759,"line":811},[757,1662,1180],{"class":763},[757,1664,933],{"class":771},[757,1666,1199],{"class":763},[757,1668,1669],{"class":771}," $sourceLanguage ",[757,1671,786],{"class":763},[757,1673,1207],{"class":767},[757,1675,1210],{"class":771},[757,1677,1678,1680,1682,1684,1686,1688,1690],{"class":759,"line":836},[757,1679,1215],{"class":767},[757,1681,933],{"class":771},[757,1683,1199],{"class":763},[757,1685,1222],{"class":771},[757,1687,786],{"class":763},[757,1689,1207],{"class":767},[757,1691,1210],{"class":771},[757,1693,1694,1696,1698],{"class":759,"line":860},[757,1695,1233],{"class":771},[757,1697,1105],{"class":763},[757,1699,1700],{"class":763}," string\n",[757,1702,1703],{"class":759,"line":865},[757,1704,777],{"emptyLinePlaceholder":700},[757,1706,1707,1709,1711,1713,1716],{"class":759,"line":1598},[757,1708,920],{"class":763},[757,1710,1637],{"class":763},[757,1712,923],{"class":763},[757,1714,1715],{"class":798}," translateTexts",[757,1717,1175],{"class":771},[757,1719,1721,1724],{"class":759,"line":1720},9,[757,1722,1723],{"class":763},"    array",[757,1725,1726],{"class":771}," $texts,\n",[757,1728,1730,1732],{"class":759,"line":1729},10,[757,1731,1180],{"class":763},[757,1733,1658],{"class":771},[757,1735,1737,1739,1741,1743,1745,1747,1749],{"class":759,"line":1736},11,[757,1738,1180],{"class":763},[757,1740,933],{"class":771},[757,1742,1199],{"class":763},[757,1744,1669],{"class":771},[757,1746,786],{"class":763},[757,1748,1207],{"class":767},[757,1750,1210],{"class":771},[757,1752,1754,1756,1758,1760,1762,1764,1766],{"class":759,"line":1753},12,[757,1755,1215],{"class":767},[757,1757,933],{"class":771},[757,1759,1199],{"class":763},[757,1761,1222],{"class":771},[757,1763,786],{"class":763},[757,1765,1207],{"class":767},[757,1767,1210],{"class":771},[757,1769,1771,1773,1775],{"class":759,"line":1770},13,[757,1772,1233],{"class":771},[757,1774,1105],{"class":763},[757,1776,1777],{"class":763}," array\n",[603,1779,1780,1781,1784],{},"Prefer ",[607,1782,1783],{},"translateTexts()"," over a loop – DeepL packs up to 50 texts per request, and the AI strategy chunks intelligently.",[749,1786,1788],{"className":751,"code":1787,"language":753,"meta":694,"style":694},"echo Translator::translateText('Hello world', 'de', 'en');\n\u002F\u002F \"Hallo Welt\"\n\n$translated = Translator::translateTexts(['Hello', 'Goodbye'], 'de', 'en');\n\u002F\u002F ['Hallo', 'Auf Wiedersehen']\n",[607,1789,1790,1817,1822,1826,1862],{"__ignoreMap":694},[757,1791,1792,1794,1796,1799,1802,1804,1807,1809,1811,1813,1815],{"class":759,"line":760},[757,1793,1551],{"class":767},[757,1795,792],{"class":767},[757,1797,1798],{"class":763},"::",[757,1800,1801],{"class":798},"translateText",[757,1803,795],{"class":771},[757,1805,1806],{"class":804},"'Hello world'",[757,1808,644],{"class":771},[757,1810,825],{"class":804},[757,1812,644],{"class":771},[757,1814,830],{"class":804},[757,1816,833],{"class":771},[757,1818,1819],{"class":759,"line":695},[757,1820,1821],{"class":1135},"\u002F\u002F \"Hallo Welt\"\n",[757,1823,1824],{"class":759,"line":780},[757,1825,777],{"emptyLinePlaceholder":700},[757,1827,1828,1831,1833,1835,1837,1840,1843,1846,1848,1851,1854,1856,1858,1860],{"class":759,"line":811},[757,1829,1830],{"class":771},"$translated ",[757,1832,786],{"class":763},[757,1834,792],{"class":767},[757,1836,1798],{"class":763},[757,1838,1839],{"class":798},"translateTexts",[757,1841,1842],{"class":771},"([",[757,1844,1845],{"class":804},"'Hello'",[757,1847,644],{"class":771},[757,1849,1850],{"class":804},"'Goodbye'",[757,1852,1853],{"class":771},"], ",[757,1855,825],{"class":804},[757,1857,644],{"class":771},[757,1859,830],{"class":804},[757,1861,833],{"class":771},[757,1863,1864],{"class":759,"line":836},[757,1865,1866],{"class":1135},"\u002F\u002F ['Hallo', 'Auf Wiedersehen']\n",[603,1868,1869,1870,1873,1874,644,1876,893,1878,1880],{},"The optional ",[607,1871,1872],{},"$strategy"," parameter on ",[607,1875,1801],{},[607,1877,1839],{},[607,1879,843],{}," overrides the configured strategy for one call:",[749,1882,1884],{"className":751,"code":1883,"language":753,"meta":694,"style":694},"use JohannSchopplich\\ContentTranslator\\Translation\\Strategies\\CopilotAIStrategy;\n\nTranslator::translateText('Hello', 'de', 'en', new CopilotAIStrategy());\n",[607,1885,1886,1895,1899],{"__ignoreMap":694},[757,1887,1888,1890,1893],{"class":759,"line":760},[757,1889,764],{"class":763},[757,1891,1892],{"class":767}," JohannSchopplich\\ContentTranslator\\Translation\\Strategies\\CopilotAIStrategy",[757,1894,772],{"class":771},[757,1896,1897],{"class":759,"line":695},[757,1898,777],{"emptyLinePlaceholder":700},[757,1900,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1924,1927],{"class":759,"line":780},[757,1902,200],{"class":767},[757,1904,1798],{"class":763},[757,1906,1801],{"class":798},[757,1908,795],{"class":771},[757,1910,1845],{"class":804},[757,1912,644],{"class":771},[757,1914,825],{"class":804},[757,1916,644],{"class":771},[757,1918,830],{"class":804},[757,1920,644],{"class":771},[757,1922,1923],{"class":763},"new",[757,1925,1926],{"class":767}," CopilotAIStrategy",[757,1928,1929],{"class":771},"());\n",[603,1931,1932,1933,1935],{},"See ",[612,1934,204],{"href":205}," for the full interface and built-in implementations.",[1937,1938,1939],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":694,"searchDepth":695,"depth":695,"links":1941},[1942,1943,1950],{"id":909,"depth":695,"text":910},{"id":1065,"depth":695,"text":1066,"children":1944},[1945,1946,1947,1948,1949],{"id":1070,"depth":780,"text":820},{"id":1149,"depth":780,"text":843},{"id":1300,"depth":780,"text":1303},{"id":1388,"depth":780,"text":1391},{"id":878,"depth":780,"text":878},{"id":1621,"depth":695,"text":1622},"Translate any page, file, or site model in place from PHP – with static helpers when you only have raw strings.",{},{"title":200,"description":1951},"K-qkfgUPdlBkSd43sSGk-mBb39CYxT34u3n8nsevLxQ",[1956,1958],{"title":91,"path":195,"stem":196,"description":1957,"children":-1},"Translate Kirby pages, files, and site content from PHP – the same pipeline the Panel uses, exposed as a public API.",{"title":91,"path":205,"stem":206,"description":1959,"children":-1},"Pluggable translation backends – pick DeepL, Copilot AI, or a callable, or implement your own to route through any service.",1778009921817]