2026-10-02 00:03:48 +08:00
window . MESSAGES = {
2026-10-02 02:23:24 +08:00
zh : { INVALID_REQUEST : '霂瑟� � 䭾� 嚗諹窈璉� � 亥� � � ' , UNAUTHORIZED : 'API Token � 䭾� � 𡝗𧊋憛怠� ' , FORBIDDEN : '瘝⊥� � 扯� 甇斗� 雿𦦵� � � � ' , DEVICE_NOT_FOUND : '� 曆� � 啁𤌍� � 挽憭� ' , DEVICE_OFFLINE : '� 餅� 蝳餌瑪' , UNSUPPORTED_CAPABILITY : '霈曉� � 硋� 摰寧掩� 衤� � 舀� 甇文� � � ' , WRITE_RESULT_UNKNOWN : '� 坔� 蝏𤘪� � 芰䰻嚗諹窈� � 瓲撖寡挽憭� 𠶖� � ' , RATE_LIMITED : '霂瑟� 餈� � 憸𤑳� 嚗諹窈蝔滚� � 滩� ' , WRITE_DISABLED : '� 笔� 霈曉� � 坔� 撌脣� � � ' , CONFIG_REQUIRED : '霂瑕� � 滨蔭霈曉� ' , CLOUD_UNAVAILABLE : '霈曉� 鈭𤑳垢� � 𧒄銝滚虾� � ' , NOT_FOUND : '� 曆� � 啗窈瘙� � � � 捆' , CONFLICT : '� 滨蔭� 脩� � 硋� 摰嫣� 鋡急� 憭滢遙� ∪� � 剁� 霂瑕� 璉� � 亦𠶖� � ' , INTERNAL_ERROR : '� 滚𦛚� � � � 躰秤' , lastScheduled : '銝𦠜活靚� 漲' , displayByName : '� 㗇� 隞嗅� � 曄內' , QUEUED : '� 㘾� 銝� ' , RENDERING : '� � � 銝� ' , UPLOADING : '� 煾� � 葉' , SYNCING : '蝑匧� � 峕郊' , COMPLETED : '撌脣� � � ' , FAILED : '憭梯揖' , UNKNOWN : '蝏𤘪� � 芰䰻' , modelVerified : 'API 撌脤� 霂� ' , modelConfigured : '霈曉� � 滨蔭� � ' , dashboard : '� 餉� ' , gallery : '� 曉� ' , upload : '銝𠹺� � 曄� ' , templates : '璅⊥踎' , automation : '� 芸𢆡� � ' , playlists : '� 剜𦆮� 𡑒”' , history : '� � 蟮霈啣� ' , settings : '霈曄蔭' , refresh : '� 瑟鰵' , restore : '� W � 銝𠹺� 撘� ' , online : '� 函瑪' , offline : '蝳餌瑪' , battery : '� 菟� ' , firmware : '� 箔辣' , current : '敶枏� � 曄� ' , heartbeat : '� � 餈穃� 頝� ' , device : '霈曉� 靽⊥� ' , rotation : '� 贝蓮閫鍦漲' , timezone : '� 嗅躹' , sync : '� 峕郊� 嗆� � ' , synced : '撌脣� 甇� ' , syncing : '蝑匧� � 峕郊' , cloud : '鈭𤑳垢� 曉� ' , local : '� 砍𧑐� 曉� ' , preview : '憸� � ' , display : '� 曄內� 啁𤫇獢� ' , delete : '� 𣳇膄' , original : '� 亦� � 曄� ' , name : '� 滨妍' , created : '� 𥕦遣� 園𡢿' , save : '靽嘥� ' , cancel : '� 𡝗� ' , confirm : '蝖株恕' , loading : '甇� 銁� 㰘蝸� � ' , mode : '� � � � 孵� ' , profile : '皜脫� 璅∪� ' , contain : '摰峕㟲� 曄內 繚 � 嗵蒾' , cover : '� 箸說撅誩� 繚 銝剖� 鋆� � ' , smart : '� 箄� 鋆� � 繚 璉� � 仿� 閫� ' , color : '敶抵𠧧' , grayscale : '� 啣漲' , staging : '隞� � 摮睃� � 砍𧑐� 曉� ' , uploadHint : 'JPG� � NG� � ebP 繚 � � 憭� 20 MiB 繚 1200 � 1600' , uploadNotice : 'KoKonna 鈭𤑳垢銝𠹺� 隡𡁶� � 喳� � Y𤫇獢� � � � 靽嘥� � 曉� � 嗡蝙� 冽𧋦� 唳� 摮矋� 銝滢� � 孵� 霈曉� � � ' , selectFile : '� 㗇𥋘� 曄� ' , previewHint : '� � � 㗇𥋘� 曄� 撟園� 閫� � � 滚� 摰帋� 摮䀹� � 曄內� � mart 雿輻鍂� � 㦛� 臬� 撘𧶏� 銝滢� 霂� � � 思犖� 詻� � ' , mock : '瞍𠉛內璅∪� ' , readOnly : '� 笔� 霈曉� 繚 � 芾粉' , writable : '� 笔� 霈曉� 繚 撌脫� � � � � � ' , cloudRotation : '霈曉� 頧格偘' , queue : '憿箏� ' , random : '� 𤩺㦤' , minutes : '� � � ' , rotationNotice : '� 航粉� 𤥁挽憭� 蔭� 剜芋撘譍� � 湧� 嚗𥕦� � 寞𦻖� � � � 𣂷� � 瑚� 頧格偘� 𣂼� 嚗䔶� 銝齿𣈲� � 耨� 寡� � 踺� � � 蝡臬㦛摨㮖� � 臬歇蝖株恕� � 蔭� 剝� � 𨰜� � ' , playlistNotice : '隞乩� � � Frame Flow 蝞∠� � � 偘� 曉� 銵剁� 銝� KoKonna � � 蔭頧格偘� 祉� � � 葩� 嗅� 霅行� � 湔� � 頣� 蝏𤘪� � 𡒊誧蝏准� � 遣霈桀銁� � � App 銝剖� � 剖� 蝵株䌊� 刻蔭� 凋誑� 踹� 蝡硺� � � ' , newPlaylist : '� 啣遣� 剜𦆮� 𡑒”' , newJob : '� 啣遣隞餃𦛚' , interval : '� � 揢� 湧� 嚗� � � � � ' , imageIds : '� 曄� ID嚗� � 堒噡� � � 嚗� ' , enabled : '� 舐鍂' , disabled : '� � � ' , edit : '蝻𤥁� ' , remove : '蝘駁膄' , schedule : '� 園𡢿摰㗇� ' , source : '� � 捆� 交� ' , duration : '� 曄內� 園鵭嚗� � 嚗� ' , restoreAfter : '� 唳� � W � 銋见� � 曄� ' , priority : '隡睃� 蝥改� 0� � 100嚗� ' , cron : 'Cron' , daily : '瘥誩予' , weekdays : '撌乩� � � ' , weekends : '� 冽錰' , date : '� � � � 交� ' , temporary : '銝湔𧒄隞餃𦛚' , time : '� 園𡢿嚗� � 瘚瑟𧒄� 綽� ' , at : '� 扯� � 交� ' , lastRun : '銝𦠜活餈鞱� ' , nextRun : '銝𧢲活餈鞱� ' , result : '蝏𤘪� ' , templateData : '璅⊥踎� 唳旿嚗㇇SON嚗� ' , render : '� � � 憸� � ' , templateHint : '璅⊥踎銝擧㺭� 柴� � 挽憭� 店� 典� 蝳颯� � � 閫� � � 笔� � 齿綫� � � � 予瘞𥪯蛹� 𡒊&� � 扇� � Mock� � ' , template : '璅⊥踎' , operation : '� 滢� ' , action : '� 其� ' , requestId : '霂瑟� ID' , client : '靚� 鍂� � ' , noImages : '� 曉� 銝箇征' , emptyHint : '銝𠹺� � 曄� � 𣇉� � 鞉芋� 選� 撘� 憪见� 蝵桐� � � 𤫇獢� � � ' , noTasks : '餈䀹瓷� 劐遙� � ' , noHistory : '� � � � � 蟮霈啣� ' , connect : '餈墧𦻖 Frame Flow' , token : 'Frame Flow API Token' , rememberLogin : '� 冽迨瘚讛� � 刻扇雿讐蒈敶� 30 憭� ' , tokenHint : '颲枏� Frame Flow � 餃� Token嚗䔶� 閬� � � � KoKonna API Key� � 㗲� 匧� 撠� 蒈敶� Token 靽嘥� � 冽迨瘚讛� � � 30 憭抬� � 曹澈霈曉� 霂瑕� 瘨� 㗲� 剹� � 鱏撘� 餈墧𦻖隡𡁏� � 支� 摮塩� � ' , logout : '� 剖� 餈墧𦻖' , auth : '� 湔� 撌脣鍳� � ' , apiDocs : 'API � � �
en:{INVALID_REQUEST:' Invalid request ; check your input ',UNAUTHORIZED:' Missing or invalid API Token ',FORBIDDEN:' This token does not allow this action ',DEVICE_NOT_FOUND:' Device not found ',DEVICE_OFFLINE:' Target frame is offline ',UNSUPPORTED_CAPABILITY:' Unsupported device capability or content type ',WRITE_RESULT_UNKNOWN:' Write outcome unknown ; reconcile device state ',RATE_LIMITED:' Request budget exceeded ; try later ',WRITE_DISABLED:' Real device writes are disabled ',CONFIG_REQUIRED:' Device configuration required ',CLOUD_UNAVAILABLE:' Device cloud is unavailable ',NOT_FOUND:' Requested content not found ',CONFLICT:' Conflicting configuration or restore reference ; check current state ',INTERNAL_ERROR:' Internal service error ',lastScheduled:' Last scheduled ',displayByName:' Display by filename ',QUEUED:' Queued ',RENDERING:' Rendering ',UPLOADING:' Sending ',SYNCING:' Awaiting sync ',COMPLETED:' Completed ',FAILED:' Failed ',UNKNOWN:' Unknown outcome ',modelVerified:' API verified ',modelConfigured:' Configured model ',dashboard:' Dashboard ',gallery:' Gallery ',upload:' Upload ',templates:' Templates ',automation:' Automation ',playlists:' Playlists ',history:' History ',settings:' Settings ',refresh:' Refresh ',restore:' Restore previous ',online:' Online ',offline:' Offline ',battery:' Battery ',firmware:' Firmware ',current:' Current image ',heartbeat:' Last heartbeat ',device:' Device details ',rotation:' Rotation ',timezone:' Timezone ',sync:' Sync state ',synced:' Synced ',syncing:' Awaiting sync ',cloud:' Cloud gallery ',local:' Local gallery ',preview:' Preview ',display:' Display on frame ',delete:' Delete ',original:' View image ',name:' Name ',created:' Created ',save:' Save ',cancel:' Cancel ',confirm:' Confirm ',loading:' Loading � � ',mode:' Image fit ',profile:' Renderer profile ',contain:' Contain 繚 white margins ',cover:' Cover 繚 center crop ',smart:' Smart crop 繚 inspect preview ',color:' Color ',grayscale:' Grayscale ',staging:' Save to local gallery only ',uploadHint:' JPG , PNG , WebP 繚 up to 20 MiB 繚 1200 � 1600 ',uploadNotice:' KoKonna cloud uploads immediately activate the image . Gallery - only uploads are staged locally without changing the device . ',selectFile:' Choose an image ',previewHint:' Preview your image before saving or displaying it . Smart crop uses saliency heuristics and does not guarantee face detection . ',mock:' Demo mode ',readOnly:' Live device 繚 read only ',writable:' Live device 繚 writes authorized ',cloudRotation:' Device slideshow ',queue:' Sequential ',random:' Random ',minutes:' minutes ',rotationNotice:' Device slideshow mode and interval are readable . The official API does not expose slideshow membership or rule editing . Cloud gallery is not a verified playback queue . ',playlistNotice:' These playlists are managed by Frame Flow independently of KoKonna � 䏭 slideshow . Playback pauses during temporary overrides . Disable native slideshow in the vendor app to avoid competing switches . ',newPlaylist:' New playlist ',newJob:' New job ',interval:' Interval ( minutes ) ',imageIds:' Image IDs ( comma - separated ) ',enabled:' Enabled ',disabled:' Paused ',edit:' Edit ',remove:' Remove ',schedule:' Schedule ',source:' Content source ',duration:' Display duration ( seconds ) ',restoreAfter:' Restore previous when expired ',priority:' Priority ( 0 � � 100 ) ',cron:' Cron ',daily:' Daily ',weekdays:' Weekdays ',weekends:' Weekends ',date:' Specific date ',temporary:' One - time task ',time:' Time ( Shanghai ) ',at:' Run at ',lastRun:' Last run ',nextRun:' Next run ',result:' Result ',templateData:' Template data ( JSON ) ',render:' Generate preview ',templateHint:' Templates are independent of providers and device drivers . Preview before displaying . Weather uses explicitly labeled mock data . ',template:' Template ',operation:' Operation ',action:' Action ',requestId:' Request ID ',client:' Client ',noImages:' Your gallery is empty ',emptyHint:' Upload an image or render a template to make this frame yours . ',noTasks:' No jobs yet ',noHistory:' No history yet ',connect:' Connect to Frame Flow ',token:' Frame Flow API Token ',rememberLogin:' Remember this browser for 30 days ',tokenHint:' Use the Frame Flow login Token , not the KoKonna API Key . Remembering saves the login Token in this browser for 30 days . Uncheck on sha
2026-10-02 00:03:48 +08:00
};
2026-10-02 08:43:07 +08:00
Object . assign ( window . MESSAGES . zh ,{ username : '韐血噡' , password : '撖� � ' , connect : '� 餃� Frame Flow' , UNAUTHORIZED : '韐血噡� 硋� � � � 霂荔� � 𣇉蒈敶訫歇餈� � ' , tokenHint : '雿輻鍂韐血噡� � � � � 蒈敶𨰻� � 㗲� 㕑扇雿讐蒈敶訫� � 臭� � � 30 憭抬� � 曹澈霈曉� 霂琿� � � 箇蒈敶𨰻� � ' , logout : '� � � 箇蒈敶� ' , noToken : '霂瑞蒈敶閧恣� � 𤫇獢� ' , formEditor : '銵典� 蝻𤥁� ' , advanced : '擃条漣 JSON' , resetTemplate : '� W � 暺䁅恕璅⊥踎' , resetConfirm : '皜� 膄撌脖� 摮条� 璅⊥踎� 滨蔭嚗峕� 憭滚� 蝵桅� 霈文� 潘� ' , eventsHelp : '瘥讛� 銝� 銝芯� 憿� ' , photo : '摰嗅滬� 抒� ' , noPhoto : '雿輻鍂� 抒� � 牐� � 箏� ' , changePassword : '靽格㺿撖� � ' , currentPassword : '敶枏� 撖� � ' , newPassword : '� 啣� � � � � 喳� 8 雿㵪� ' , passwordChanged : '撖� � 撌脖耨� 對� 霂琿� � 啁蒈敶� ' , saveTemplate : '靽嘥� 璅⊥踎霈曄蔭' });
Object . assign ( window . MESSAGES . en ,{ username : 'Username' , password : 'Password' , connect : 'Sign in to Frame Flow' , UNAUTHORIZED : 'Invalid credentials or expired session' , tokenHint : 'Sign in with your account. Remember me keeps the session for 30 days; sign out on shared devices.' , logout : 'Sign out' , noToken : 'Sign in to manage frames' , formEditor : 'Form editor' , advanced : 'Advanced JSON' , resetTemplate : 'Reset template' , resetConfirm : 'Remove saved settings and restore built-in defaults?' , eventsHelp : 'One event per line' , photo : 'Family photo' , noPhoto : 'Use photo placeholder' , changePassword : 'Change password' , currentPassword : 'Current password' , newPassword : 'New password (at least 8 characters)' , passwordChanged : 'Password changed. Sign in again.' , saveTemplate : 'Save template settings' });