commit 09ef1f000f5c6b2ca8ed26d66eb726430d2ed601 Author: OpenCode Date: Fri May 29 19:07:56 2026 +0800 Initial commit: WordPress wp-content (themes, plugins, languages) - Theme: momentry (custom theme with REST API routes) - Plugins: code-snippets (contains all API proxies) - Languages: zh_TW translations - Excludes: cache, backups, uploads, logs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ce2db9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# WordPress directories to exclude +cache/ +ai1wm-backups/ +updraft/ +upgrade/ +uploads/ +wp-cache/ + +# WordPress files +debug.log +error_log + +# Generated files +*.sql +*.log + +# OS files +.DS_Store +Thumbs.db + +# IDE +.idea/ +*.swp +*.swo + +# Temporary files +*.tmp +*.bak +*.backup diff --git a/index.php b/index.php new file mode 100755 index 0000000..6220032 --- /dev/null +++ b/index.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2025-12-02 00:32:44+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'WordPress - 7.0.x - Development - Administration - Network Admin','language'=>'zh_TW','messages'=>['Site flagged for deletion.'=>'網站已標示為刪除。','Site deletion flag removed.'=>'網站刪除標幟已移除。','Site permanently deleted.'=>'網站已永久刪除。','Sites permanently deleted.'=>'網站已永久刪除。','Delete these sites permanently'=>'永久刪除這些網站','Flagging a site for deletion makes the site unavailable to its users and visitors. This is a reversible action. A super admin can permanently delete the site at a later date.'=>'將網站標示為刪除會使網站的使用者及訪客無法使用網站。這是可還原的操作。多站網站管理員可以在一段時間之後永久刪除網站。','Archiving a site makes the site unavailable to its users and visitors. This is a reversible action.'=>'封存網站會使網站的使用者及訪客無法使用網站。這是可還原的操作。','You are about to flag the site %s for deletion.'=>'這項操作會將網站 %s 標示為刪除。','You are about to remove the deletion flag from the site %s.'=>'這項操作會移除網站 %s 的刪除標幟。','Flag for Deletion'=>'標示為刪除','siteRemove Deletion Flag'=>'移除刪除標幟','Flagged for Deletion (%s)'=>'已標示為刪除 (%s)','Flagged for Deletion'=>'已標示為刪除','Documentation on Upgrade Network'=>'〈升級多站網路〉線上說明','Deleting a site is a permanent action that cannot be undone. This will delete the entire site and its uploads directory.'=>'刪除網站是無法復原的永久性操作。這項操作會刪除整個網站及該網站的 uploads 目錄。','Delete this site permanently'=>'永久刪除這個網站','Visit to go to the front-end of the live site.'=>'點擊 [造訪] 便能前往指定網站的前端檢視網站內容。','Documentation on Network Settings'=>'〈多站網路設定〉線上說明','Documentation on the Network Admin'=>'〈多站網路管理中心〉線上說明','Documentation on Creating a Network'=>'〈建立多站網路〉線上說明','https://developer.wordpress.org/advanced-administration/server/web-server/nginx/'=>'https://developer.wordpress.org/advanced-administration/server/web-server/nginx/','Missing site title.'=>'缺少網站標題。','Table ordered by User Registered Date.'=>'清單資料依據使用者註冊日期排序。','Table ordered by Theme Name.'=>'清單資料依據佈景主題名稱排序。','Table ordered by Site Registered Date.'=>'清單資料依據網站註冊日期排序。','Table ordered by Last Updated.'=>'清單資料依據最近更新日期排序。','Table ordered by Site Path.'=>'清單資料依據網站路徑排序。','Table ordered by Site Domain Name.'=>'清單資料依據網站網域名稱排序。','Network configuration authentication keys'=>'多站網路組態驗證金鑰','Network configuration rules for %s'=>'%s 的多站網路組態規則','WordPress has been updated! Next and final step is to individually upgrade the sites in your network.'=>'WordPress 已完成更新!接下來的步驟,系統需要為這個多站網路中的網站進行個別升級。','Cannot create an empty site.'=>'無法建立空網站。','You should back up your existing %s file.'=>'多站網路管理員應該備份現有的 %s 檔案。','You should back up your existing %1$s and %2$s files.'=>'多站網路管理員應該備份現有的 %1$s 及 %2$s 檔案。','Visit theme site for %s'=>'造訪佈景主題 %s 的網站','Child theme of %s'=>'%s 的子佈景主題','sitePublic'=>'公開網站','siteNot spam'=>'標示為非濫用網站','%s theme will no longer be auto-updated.'=>'%s 個佈景主題不會再自動進行更新。','%s theme will be auto-updated.'=>'%s 個佈景主題會自動進行更新。','Sorry, you are not allowed to change themes automatic update settings.'=>'很抱歉,目前的登入身分沒有變更佈景主題自動更新設定的權限。','No themes are currently available.'=>'目前沒有任何可供使用的佈景主題。','Y/m/d g:i:s a'=>'Y/n/j a g:i:s','It seems your network is running with Nginx web server. Learn more about further configuration.'=>'這個多站網路執行於 NGINX 網頁伺服器。進一步了解後續組態','sitesSpam (%s)'=>'濫用網站 (%s)','Mature (%s)'=>'成人內容 (%s)','Archived (%s)'=>'已封存 (%s)','Public (%s)'=>'已公開 (%s)','sitesAll (%s)'=>'全部 (%s)','themesUpdate Available (%s)'=>'已有更新可供安裝 (%s)','Main'=>'主要網站','Documentation on the Network Screen'=>'〈多站網路畫面〉線上說明','The constant %s cannot be defined when creating a network.'=>'建立多站網路時,無法定義常數 %s。','You are about to delete the following sites:'=>'這項操作會刪除以下網站:','User could not be added to this site.'=>'無法將使用者加入這個網站。','The username and a link to set the password will be mailed to this email address.'=>'使用者名稱及設定密碼的連結會傳送到這個電子郵件地址。','There is a pending change of the network admin email to %s.'=>'多站網路管理員電子郵件地址變更為 %s 的要求,仍在等候確認。','Sub-domain Installation'=>'安裝於子網域','Sub-directory Installation'=>'安裝於子目錄','Active Child Theme'=>'已啟用的子佈景主題','%s KB'=>'%s KB','%s Sites'=>'多站網路《%s》的網站','Sorry, you are not allowed to delete themes for this site.'=>'很抱歉,目前的登入身分沒有為這個網站刪除佈景主題的權限。','Sorry, you are not allowed to manage network themes.'=>'很抱歉,目前的登入身分沒有管理多站網路佈景主題的權限。','Sorry, you are not allowed to delete that site.'=>'很抱歉,目前的登入身分沒有刪除這個網站的權限。','Sorry, you are not allowed to manage themes for this site.'=>'很抱歉,目前的登入身分沒有為這個網站管理佈景主題的權限。','Sorry, you are not allowed to add sites to this network.'=>'很抱歉,目前的登入身分沒有在這個多站網路中新增網站的權限。','Sorry, you are not allowed to edit this site.'=>'很抱歉,目前的登入身分沒有編輯這個網站的權限。','The email address of the first comment author on a new site.'=>'新網站第一則留言的留言者電子郵件地址。','First Comment Email'=>'第一則留言的留言者電子郵件地址','That’s all, stop editing! Happy publishing.'=>'That’s all, stop editing! Happy publishing.','Add the following to your %1$s file in %2$s above the line reading %3$s:'=>'請將以下程式碼加入位於 %2$s 的 %1$s 檔案中,且必須加在 %3$s 這行的上方:','theme%1$s by %2$s'=>'由 %2$s 開發的 %1$s','Only lowercase letters (a-z), numbers, and hyphens are allowed.'=>'只能使用小寫英文字母 (a-z)、數字及連字號 -。','These unique authentication keys are also missing from your %s file.'=>'在檔案 %s 中也缺少這些唯一驗證金鑰。','This unique authentication key is also missing from your %s file.'=>'在檔案 %s 中也缺少這個唯一驗證金鑰。','Because you are using %1$s, the sites in your WordPress network must use sub-directories. Consider using %2$s if you wish to use sub-domains.'=>'由於目前使用的是 %1$s,這個 WordPress 多站網路的網站必須安裝於子目錄。如果需要安裝於子網域,請考慮使用 %2$s。','The internet address of your network will be %s.'=>'用於建置多站網路的網際網路位址為 %s。','You should consider changing your site domain to %1$s before enabling the network feature. It will still be possible to visit your site using the %3$s prefix with an address like %2$s but any links will not have the %3$s prefix.'=>'在啟用多站網路的功能前,多站網路管理員應該考慮將網站網域變更為 %1$s。將來仍然可以使用 %3$s.%2$s 網址造訪這個網站,但任何連結均不包含前置詞 %3$s。','You cannot change this later.'=>'這項設定之後無法進行變更。','Please choose whether you would like sites in your WordPress network to use sub-domains or sub-directories.'=>'請選取在 WordPress 多站網路中要以子網域或子目錄方式建立網站。','If %1$s is disabled, ask your administrator to enable that module, or look at the Apache documentation or elsewhere for help setting it up.'=>'如果 %1$s 已停用,請要求主機管理員啟用這個模組,或查閱 Apache 線上說明進行必要的搜尋以了解如何進行設定。','It looks like the Apache %s module is not installed.'=>'網站主機並未安裝 Apache 的 %s 模組。','Please make sure the Apache %s module is installed as it will be used at the end of this installation.'=>'請確認 Apache 的 %s 模組已安裝,以便在安裝完成後可以使用。','userRegistered'=>'註冊時間','Super Admin (%s)'=>'多站網路管理員 (%s)','userNot spam'=>'標示為非濫用使用者','userMark as spam'=>'標示為濫用使用者','Visit Theme Site'=>'造訪佈景主題網站','Broken Theme:'=>'不完整的佈景主題:','Network Disable %s'=>'於多站網路中停用 %s','Disable %s'=>'停用 %s','Network Enable %s'=>'於多站網路中啟用 %s','Enable %s'=>'啟用 %s','Network Disable'=>'於多站網路中停用','themesBroken (%s)'=>'不完整 (%s)','themesDisabled (%s)'=>'已停用 (%s)','themesEnabled (%s)'=>'已啟用 (%s)','themesAll (%s)'=>'全部 (%s)','No themes found.'=>'找不到符合條件的佈景主題。','verb; siteArchive'=>'封存','Unarchive'=>'取消封存','Never'=>'尚無更新','%1$s – %2$s'=>'%1$s – %2$s','siteRegistered'=>'註冊時間','Last Updated'=>'最後更新','siteNot Spam'=>'標示為非濫用網站','siteMark as spam'=>'標示為濫用網站','No sites found.'=>'找不到符合條件的網站。','Mature'=>'成人內容','siteSpam'=>'濫用網站','Archived'=>'已封存','A password reset link will be sent to the user via email.'=>'系統會傳送一封包含密碼重設連結的電子郵件給這位使用者。','If registration is disabled, please set %1$s in %2$s to a URL you will redirect visitors to if they visit a non-existent site.'=>'停用註冊功能後,請為 %2$s 檔案內的 %1$s 參數設定一個網址,這樣能讓使用者在造訪不存在的網站時,將使用者重新導向至指定的網址。','You must define the %1$s constant as true in your %2$s file to allow creation of a Network.'=>'必須將 %2$s 檔案中的常數 %1$s 設為 true,才能建立多站網路。','Themes list navigation'=>'佈景主題清單導覽','Sites list'=>'網站清單','Sites list navigation'=>'網站清單導覽','Site users list'=>'網站使用者清單','Site users list navigation'=>'網站使用者清單導覽','Filter site users list'=>'篩選網站使用者清單','Site themes list'=>'網站佈景主題清單','Site themes list navigation'=>'網站佈景主題清單導覽','Filter site themes list'=>'篩選網站佈景主題清單','The domain or path entered conflicts with an existing username.'=>'輸入的網域名稱或路徑與現有的使用者名稱發生衝突。','The requested action is not valid.'=>'要求的操作無效。','You are about to mark the site %s as not mature.'=>'這項操作會將網站 %s 標示為非成人內容。','You are about to mark the site %s as mature.'=>'這項操作會將網站 %s 標示為成人內容。','You are about to delete the site %s.'=>'這項操作會刪除網站 %s。','You are about to mark the site %s as spam.'=>'這項操作會將網站 %s 標示為濫用網站。','You are about to unspam the site %s.'=>'這項操作會將網站 %s 標示為非濫用網站。','You are about to archive the site %s.'=>'這項操作會封存網站 %s。','You are about to unarchive the site %s.'=>'這項操作會取消網站 %s 的封存。','The requested site does not exist.'=>'要求的網站不存在。','Path'=>'網站路徑','Domain'=>'網域名稱','Documentation on Network Users'=>'〈多站網路使用者〉線上說明','Documentation on Network Themes'=>'〈多站網路佈景主題〉線上說明','Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: %2$s'=>'警告!更新 %1$s 時發生問題。這台伺服器可能無法連線至執行於其上的網站。錯誤訊息: %2$s','%s theme deleted.'=>'%s 個佈景主題已刪除。','%s theme disabled.'=>'%s 個佈景主題已停用。','%s theme enabled.'=>'%s 個佈景主題已啟用。','Yes, delete these themes'=>'是,刪除這些佈景主題','You are about to remove the following themes:'=>'這項操作會移除以下佈景主題:','These themes may be active on other sites in the network.'=>'這些佈景主題或許目前正由多站網路中的其他網站使用。','Delete Themes'=>'刪除佈景主題','Size in kilobytes'=>'檔案大小以 KB 為單位','Allowed file types. Separate types by spaces.'=>'開放上傳的檔案類型。請使用空格分隔檔案副檔名。','Add the following to your %1$s file in %2$s, replacing other WordPress rules:'=>'請將以下程式碼加入位於 %2$s 的 %1$s 檔案中,並取代其他 WordPress 規則:','Confirm your action'=>'確認操作','Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to their Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site.'=>'將游標暫留於使用者名稱上,便會顯示 [編輯] 連結。點擊左側的 [編輯] 連結會進入 [編輯使用者] 或編輯 [個人資料] 的畫面,點擊右側網站名稱的 [編輯] 連結則會進入該網站的 [編輯網站] 畫面。','To search for a site, enter the path or domain.'=>'如需搜尋網站,請輸入路徑或網域名稱。','To search for a user, enter an email address or username. Use a wildcard to search for a partial username, such as user*.'=>'如需搜尋使用者,請輸入電子郵件地址或使用者名稱。輸入萬用字元可使用部分使用者名稱進行模糊搜尋,例如使用 user* 代表搜尋全部以 user 起始的使用者名稱。','To add a new site, click Create a New Site.'=>'如需新增網站,請點擊 [新增網站]。','To add a new user, click Create a New User.'=>'如需新增使用者,請點擊 [新增使用者]。','Quick Tasks'=>'快速任務','To search for a user or site, use the search boxes.'=>'如需搜尋使用者或網站,請使用搜尋框。','The Right Now widget on this screen provides current user and site counts on your network.'=>'這個畫面的 [目前狀況] 小工具會顯示這個多站網路目前的使用者及網站數量。','Modify global network settings'=>'修改多站網路全域設定','Update your network'=>'為這個多站網路進行更新','Install and activate themes or plugins'=>'安裝並啟用佈景主題或外掛','Add and manage sites or users'=>'新增及管理網站/使用者','From here you can:'=>'多站網路管理員可以在這個畫面執行以下任務:','Welcome to your Network Admin. This area of the Administration Screens is used for managing all aspects of your Multisite Network.'=>'歡迎使用 [多站網路管理中心]。這個管理畫面區域用來管理這個多站網路。','Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Upgrade Network button will step through each site in the network, five at a time, and make sure any database updates are applied.'=>'透過 [多站網路管理中心] 導覽選單或工具列完成 WordPress 核心程式的升級後,僅需要使用這個畫面一次。點擊 [升級多站網路] 按鈕後,便會為這個多站網路的網站進行批次升級,每次升級 5 個網站直到全部完成,並確保每個網站的資料庫均完成升級。','Upgrade Network'=>'升級多站網路','Subdirectory networks may not be fully compatible with custom wp-content directories.'=>'以子目錄方式建立網站的多站網路可能與自訂的 wp-content 目錄無法完全相容。','Add the designated lines of code to wp-config.php (just before /*...stop editing...*/) and .htaccess (replacing the existing WordPress rules).'=>'請將專屬程式碼加入 wp-config.php 檔案 (就在 /*...stop editing...*/ 這行之前) 及 .htaccess 檔案中 (取代現有的 WordPress 規則)。','Language Settings'=>'網站介面語言設定','Allow site administrators to add new users to their site via the "Users → Add User" page'=>'開放網站管理員使用自有網站的 [新增使用者] 頁面新增使用者','Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.'=>'這個畫面不提供新增多站網路管理員的功能,必須在 [多站網路管理中心] 的 [使用者] 頁面中點擊使用者清單的使用者名稱或名稱下方的 [編輯] 操作連結,進入 [編輯使用者] 頁面啟用 [授予這個使用者多站網路管理員的權限],便能將指定使用者提升至多站網路管理員權限。','Enter the username and email.'=>'輸入使用者名稱及電子郵件地址。','User created.'=>'使用者已新增。','Select a user to remove.'=>'選取使用者以移除。','Select a user to change role.'=>'選取使用者以變更使用者角色。','Enter the username of an existing user.'=>'輸入的使用者名稱已存在。','User is already a member of this site.'=>'使用者已是這個網站的成員。','Site options updated.'=>'網站設定已儲存。','Site added. Visit Dashboard or Edit Site'=>'網站已新增。造訪 [控制台]編輯網站','This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings.'=>'這個畫面提供多站網路管理員新增網站至多站網路的功能,這項功能不受註冊設定影響。','Site info updated.'=>'網站資訊已更新。','You cannot delete a theme while it is active on the main site.'=>'由於這個佈景主題已在主要網站中啟用,因此無法刪除。','Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes.'=>'多站網路管理員可以透過點擊 [全部網站] 畫面中網站名稱下方的 [編輯] 連結,進入 [編輯網站] 畫面的 [佈景主題] 分頁為個別網站啟用佈景主題。只有多站網路管理員可以安裝或編輯佈景主題。','No, return me to the theme list'=>'否,返回佈景主題清單','Yes, delete this theme'=>'是,刪除這個佈景主題','Are you sure you want to delete these themes?'=>'確定要刪除這些佈景主題?','You are about to remove the following theme:'=>'這項操作會移除以下佈景主題:','This theme may be active on other sites in the network.'=>'這個佈景主題或許目前正由多站網路中的其他網站使用。','Delete Theme'=>'刪除佈景主題','Network enabled themes are not shown on this screen.'=>'已在多站網路管理中心上啟用的佈景主題不會顯示在這個畫面。','No theme selected.'=>'尚未選取佈景主題。','Theme disabled.'=>'佈景主題已停用。','Theme enabled.'=>'佈景主題已啟用。','Edit Site: %s'=>'編輯網站: %s','Invalid site ID.'=>'無效的網站 ID。','Sorry, you are not allowed to delete the site %s.'=>'很抱歉,目前的登入身分沒有刪除網址為 %s 的網站的權限。','Delete Permanently which is a permanent action after the confirmation screen.'=>'[永久刪除] 是永久性操作,網站會在確認後刪除。','Dashboard leads to the Dashboard for that site.'=>'點擊 [控制台] 便會進入指定網站的 [控制台] 畫面。','An Edit link to a separate Edit Site screen.'=>'點擊 [編輯] 連結便會進入 [編輯網站] 畫面。','Add Site takes you to the screen for adding a new site to the network. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page.'=>'點擊 [新增網站] 按鈕便會進入為多站網路新增網站的畫面。多站網路管理員可透過網站名稱、ID 或 IP 位址搜尋網站。在 [顯示項目設定] 分頁中,多站網路管理員可以設定每頁要顯示的網站數量。','Add Users'=>'新增使用者','Cannot add user.'=>'無法新增使用者。','Add User will set up a new user account on the network and send that person an email with username and password.'=>'[新增使用者] 將在多站網路中設定新使用者帳號,並傳送一封內容包含使用者名稱及密碼的電子郵件給這位使用者。','Updates'=>'更新','Network Settings'=>'多站網路設定','Installed Themes'=>'已安裝的佈景主題','All Sites'=>'全部網站','Once you complete these steps, your network is enabled and configured. You will have to log in again.'=>'完成這些步驟後,多站網路便完成啟用及組態。多站網路管理員必須重新登入。','To make your installation more secure, you should also add:'=>'為了使 WordPress 網站更加安全,請加入以下程式碼:','Complete the following steps to enable the features for creating a network of sites.'=>'請完成以下步驟,以啟用建立多站網路網站的功能。','Enabling the Network'=>'啟用多站網路','Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables.'=>'請完成相關組態步驟。如需建立新的多站網路,必須先清空或移除多站網路的資料表。','An existing WordPress network was detected.'=>'已偵測到現有的 WordPress 多站網路。','The original configuration steps are shown here for reference.'=>'以下顯示原始組態步驟以供參考。','Your email address.'=>'多站網路管理員的電子郵件地址。','What would you like to call your network?'=>'請為這個多站網路進行命名。','Network Title'=>'多站網路標題','Because your installation is not new, the sites in your WordPress network must use sub-domains.'=>'由於這個多站網路並非全新安裝,因此這個 WordPress 多站網路中的網站必須使用子網域方式建立。','Because your installation is in a directory, the sites in your WordPress network must use sub-directories.'=>'由於這個多站網路安裝於子目錄中,因此這個 WordPress 多站網路中的網站必須使用子目錄方式建立。','The main site in a sub-directory installation will need to use a modified permalink structure, potentially breaking existing links.'=>'安裝於子目錄的主要網站需要使用修改過的永久連結結構,有可能影響現有的連結。','Network Details'=>'多站網路詳細資料','Server Address'=>'伺服器位址','subdirectory exampleslike %1$s/site1 and %1$s/site2'=>'例如 %1$s/site1%1$s/site2','Sub-directories'=>'子目錄','subdomain exampleslike site1.%1$s and site2.%1$s'=>'例如 site1.%1$ssite2.%1$s','Sub-domains'=>'子網域','You will need a wildcard DNS record if you are going to use the virtual host (sub-domain) functionality.'=>'如果要在虛擬主機上使用子網域方式建立網站,必須建立一筆萬用字元 DNS 記錄。','Addresses of Sites in your Network'=>'網站在這個多站網路中的位址','Fill in the information below and you’ll be on your way to creating a network of WordPress sites. Configuration files will be created in the next step.'=>'請填寫以下資訊,便可建立 WordPress 多站網路的網站。系統會在下一個步驟中建立組態檔案。','Welcome to the Network installation process!'=>'歡迎使用多站網路安裝程式!','The network could not be created.'=>'無法建立多站網路。','Once the network is created, you may reactivate your plugins.'=>'多站網路成功建立後,多站網路管理員便可以重新啟用外掛。','Please deactivate your plugins before enabling the Network feature.'=>'在啟用多站網路功能前,請先停用全部外掛。','Network'=>'多站網路','The choice of subdirectory sites is disabled if this setup is more than a month old because of permalink problems with “/blog/” from the main site. This disabling will be addressed in a future version.'=>'多站網路設定完畢使用超過一個月後,由於變更設定會造成主要網站 /blog/ 的永久連結產生問題,因此會自動停用以子目錄方式建立網站的功能。這項功能停用的問題,會在未來版本中解決。','Once you add this code and refresh your browser, multisite should be enabled. This screen, now in the Network Admin navigation menu, will keep an archive of the added code. You can toggle between Network Admin and Site Admin by clicking on the Network Admin or an individual site name under the My Sites dropdown in the Toolbar.'=>'加入專屬程式碼並在瀏覽器中重新整理頁面後,多站網路便會完成啟用;這個畫面會成為 [多站網路管理中心] 導覽選單的一部份,會保留專屬程式碼以供後續參考取用。多站網站管理員可以點擊工具列中的 [多站網路管理中心] 或 [我的網站] 下拉式選單中的網站名稱,藉以在 [多站網路管理中心] 及 [網站管理中心] 兩者間切換。','The next screen for Network Setup will give you individually-generated lines of code to add to your wp-config.php and .htaccess files. Make sure the settings of your FTP client make files starting with a dot visible, so that you can find .htaccess; you may have to create this file if it really is not there. Make backup copies of those two files.'=>'[多站網路組態] 的下一個畫面會提供這個多站網路專屬的程式碼,且必須將這些程式碼加入 wp-config.php 及 .htaccess 檔案中。請確定 FTP 客戶端程式能顯示檔案名稱以點 . 開頭的檔案,這樣才能夠找到 .htaccess;如果這個檔案不存在,務必建立一個新的 .htaccess 檔案。變更這兩個檔案前,請為這兩個檔案進行備份。','Choose subdomains or subdirectories; this can only be switched afterwards by reconfiguring your installation. Fill out the network details, and click Install. If this does not work, you may have to add a wildcard DNS record (for subdomains) or change to another setting in Permalinks (for subdirectories).'=>'多站網路的網站可選擇要以子網域或子目錄方式建立,除非重新安裝多站網路,否則無法變更這項設定。填寫多站網路的詳細資料,然後點擊 [安裝]。如果多站網路無法運作,多站網路管理員便會需要新增一筆萬用字元 DNS 記錄 (用於使用子網域建立網站),或是變更永久連結 (使用子目錄建立網站)。','This screen allows you to configure a network as having subdomains (site1.example.com) or subdirectories (example.com/site1). Subdomains require wildcard subdomains to be enabled in Apache and DNS records, if your host allows it.'=>'這個畫面能設定多站網路要採用子網域 (site1.example.com) 或子目錄 (example.com/site1) 方式建立新網站。如果採用子網域建立網站,多站網路管理員必須在 Apache 及 DNS 記錄中啟用萬用字元子網域;如果無法啟用萬用字元子網域,請聯絡網站主機服務提供商。','Create a Network of WordPress Sites'=>'建立 WordPress 網站的多站網路','The Network creation panel is not for WordPress MU networks.'=>'多站網路建立面板無法使用於 WordPress 多站網路集合。','Warning! User cannot be modified. The user %s is a network administrator.'=>'警告!無法修改這個使用者的資料。使用者「%s」是多站網路管理員。','If the admin email for the new site does not exist in the database, a new user will also be created.'=>'如果新網站的網站管理員電子郵件地址在資料庫中查無記錄,便會新增一個新使用者。','Flag for Deletion, Archive, and Spam which lead to confirmation screens. These actions can be reversed later.'=>'點擊 [標示為刪除]、[封存] 及 [濫用網站] 會進入對應的確認畫面。這幾項操作之後可以還原。','Hovering over each site reveals seven options (three for the primary site):'=>'將游標暫留於網站名稱上,會出現 7 項設定 (主要網站則會出現 3 個):','Operational settings has fields for the network’s name and admin email.'=>'[一般運作設定] 中可設定多站網路名稱及多站網路管理員電子郵件地址。','The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses.'=>'透過 [批次操作] 可永久刪除選取的使用者,或將選取的使用者標示濫用使用者或非濫用使用者。系統會移除濫用使用者所發佈的文章,並且無法使用相同的電子郵件地址進行註冊。','You can also go to the user’s profile page by clicking on the individual username.'=>'多站網路管理員可以點擊個別使用者名稱,前往這位使用者的 [個人資料] 頁面。','Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).'=>'[上傳設定] 可控制上傳檔案大小上限及每個網站可用的上傳空間,多站網站管理員可以在編輯特定網站時變更這幾項預設值。這裡也可以設定可上傳的檔案類型,請以空格分隔多個檔案類型。','You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege.'=>'在現有的使用者的 [編輯使用者] 頁面中,多站網路管理員可以將核取 [授予這個使用者多站網路管理員的權限] 這項設定,將多站網路管理員的權限授予這個使用者。','Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them.'=>'已在多站網路中完成註冊、但尚未擁有網站的使用者,會以訂閱者使用者角色新增至主要網站控制台,因此他們能在自己的 [個人資料] 頁面管理帳號資料。這些使用者在建立自己的網站前,只能在導覽選單中看到 [控制台] 及 [我的網站]。','You can sort the table by clicking on any of the table headings and switch between list and excerpt views by using the icons above the users list.'=>'點擊清單標題便能為清單資料進行排序,點擊使用者清單上方圖示,便能在清單檢視及內容摘要檢視兩種模式間切換。','This table shows all users across the network and the sites to which they are assigned.'=>'這份清單列出多站網路內的所有使用者,以及指派給他們的網站。','If this process fails for any reason, users logging in to their sites will force the same update.'=>'如果更新程序因故中斷或失敗,使用者登入網站後便會強制進行同一項更新。','If a version update to core has not happened, clicking this button will not affect anything.'=>'如果多站網路的 WordPress 核心程式並未更新,點擊 [升級多站網路] 按鈕不會有任何影響。','If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen.'=>'如果多站網路管理員停用了某個網站使用中的佈景主題,該網站上的這個佈景主題可以繼續使用;如果這個網站變更了佈景主題,早前已停用的佈景主題便不會再次顯示該網站的 [外觀] > [佈景主題] 中。','This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using.'=>'這個畫面用於啟用及停用可供每個網站在 [外觀] 選單使用的佈景主題,但無法啟用或停用已有網站使用的佈景主題。','This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table.'=>'這個畫面列出這個多站網路中的全部網站。請點擊清單右上方的圖示,便能在清單檢視及內容摘要檢視兩種模式間切換。','Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.'=>'[選單設定] 可為非多站網路管理員啟用/停用所屬網站的 [外掛] 選單。停用所屬網站的 [外掛] 選單時,網站管理員無法管理網站外掛,僅有多站網路管理員可以進行管理。','New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL.'=>'在這個多站網路中建立新網站,便會套用 [新增網站設定] 中的預設設定,這些設定包含使用者註冊帳號的歡迎電子郵件、網站的首篇文章、頁面、示範留言及示範留言者相關資料。','Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.'=>'[註冊設定] 可以停用/啟用公開註冊功能。如果開放使用者註冊,建議為多站網路安裝阻擋垃圾留言的外掛。如果需要設定多個禁用的網站名稱,請使用空格分隔這些名稱,而不是使用逗號。','This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options.'=>'這個畫面可以設定及變更整個多站網路。第一個網站是多站網路的主要網站,而多站網路會繼承原始網站的設定。','The following words are reserved for use by WordPress functions and cannot be used as site names: %s'=>'下列保留字詞僅供 WordPress 函式使用,因此無法作為網站名稱: %s','If your browser does not start loading the next page automatically, click this link:'=>'如果使用的瀏覽器沒有自動載入下一個頁面,請點擊這個連結:','If you want to ban domains from site registrations. One domain per line.'=>'這項設定可封鎖特定網域名稱的電子郵件地址註冊網站。請每行輸入一個網域名稱。','If you want to limit site registrations to certain domains. One domain per line.'=>'這項設定可限制僅有特定網域名稱的電子郵件地址才能註冊網站。請每行輸入一個網域名稱。','Users removed from spam.'=>'選取的使用者已從濫用使用者中移除。','Site marked as spam.'=>'網站已標示為濫用網站。','Site removed from spam.'=>'網站已從濫用網站中移除。','Sites marked as spam.'=>'網站已標示為濫用網站。','Sites removed from spam.'=>'網站已從濫用網站中移除。','Users deleted.'=>'使用者已刪除。','Users marked as spam.'=>'使用者已標示為濫用使用者。','Site unarchived.'=>'網站已取消封存。','Site archived.'=>'網站已封存。','Sorry, you are not allowed to change the current site.'=>'很抱歉,目前的登入身分沒有變更目前網站的權限。','There was an error creating the user.'=>'新增使用者時發生錯誤。','Upload file types'=>'可上傳的檔案類型','Limit total size of files uploaded to %s MB'=>'檔案上傳空間配額: %s MB','The URL for the first comment on a new site.'=>'新網站第一則留言的留言者網址。','The author of the first comment on a new site.'=>'新網站第一則留言的留言者名稱。','The first comment on a new site.'=>'新網站第一則留言的內容。','The first page on a new site.'=>'新網站第一個頁面的內容。','The first post on a new site.'=>'新網站第一篇文章的內容。','All done!'=>'全部完成!','Both sites and user accounts can be registered'=>'開放註冊新使用者帳號及新網站','Logged in users may register new sites'=>'開放已登入的使用者註冊新網站','User accounts may be registered'=>'開放註冊使用者帳號','Registration is disabled'=>'停用註冊功能','Enable administration menus'=>'啟用管理選單','Upload Settings'=>'上傳設定','New Site Settings'=>'新增網站設定','Registration Settings'=>'註冊設定','Operational Settings'=>'一般運作設定','Missing email address.'=>'缺少電子郵件地址。','Missing or invalid site address.'=>'缺少或無效的網站位址。','Next Sites'=>'下一批網站','Site upload space'=>'網站上傳空間','The welcome email sent to new site owners.'=>'傳送給新網站擁有者的歡迎電子郵件內容。','Users are not allowed to register these sites. Separate names by spaces.'=>'使用者無法使用這個欄位中的網站名稱註冊網站。請使用空格分隔網站名稱。','Send the network admin an email notification every time someone registers a site or user account'=>'有人註冊新網站或新使用者帳號,便傳送電子郵件通知給多站網路管理員','Network Admin Email'=>'多站網路管理員電子郵件地址','A new user will be created if the above email address is not in the database.'=>'如果在上方欄位中輸入的電子郵件地址在資料庫中查無記錄,便會新增一個新使用者。','Admin Email'=>'網站管理員電子郵件地址','Add Site'=>'新增網站','Default Language'=>'網站介面預設語言','Max upload file size'=>'上傳檔案大小上限','First Comment URL'=>'第一則留言的留言者網址','First Comment Author'=>'第一則留言的留言者名稱','First Comment'=>'第一則留言','First Page'=>'第一個頁面','The welcome email sent to new users.'=>'傳送給新使用者的歡迎電子郵件內容。','Welcome User Email'=>'歡迎新使用者電子郵件','Welcome Email'=>'歡迎電子郵件','Banned Email Domains'=>'封鎖的電子郵件網域名稱','Limited Email Registrations'=>'電子郵件註冊網域名稱限制','Banned Names'=>'禁用的網站名稱','Add New User'=>'新增使用者','Registration notification'=>'註冊通知','Allow new registrations'=>'註冊開放範圍','Duplicated username or email address.'=>'重複的使用者名稱或電子郵件地址。','Cannot create an empty user.'=>'無法新增沒有資料內容的使用者。','Confirm'=>'確認']]; \ No newline at end of file diff --git a/languages/admin-network-zh_TW.mo b/languages/admin-network-zh_TW.mo new file mode 100644 index 0000000..9e01e07 Binary files /dev/null and b/languages/admin-network-zh_TW.mo differ diff --git a/languages/admin-network-zh_TW.po b/languages/admin-network-zh_TW.po new file mode 100644 index 0000000..99aa730 --- /dev/null +++ b/languages/admin-network-zh_TW.po @@ -0,0 +1,1438 @@ +# Translation of WordPress - 7.0.x - Development - Administration - Network Admin in Chinese (Taiwan) +# This file is distributed under the same license as the WordPress - 7.0.x - Development - Administration - Network Admin package. +msgid "" +msgstr "" +"PO-Revision-Date: 2025-12-02 00:32:44+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: WordPress - 7.0.x - Development - Administration - Network Admin\n" + +#: wp-admin/network/sites.php:361 +msgid "Site flagged for deletion." +msgstr "網站已標示為刪除。" + +#: wp-admin/network/sites.php:358 +msgid "Site deletion flag removed." +msgstr "網站刪除標幟已移除。" + +#: wp-admin/network/sites.php:346 +msgid "Site permanently deleted." +msgstr "網站已永久刪除。" + +#: wp-admin/network/sites.php:343 +msgid "Sites permanently deleted." +msgstr "網站已永久刪除。" + +#: wp-admin/network/sites.php:237 +msgid "Delete these sites permanently" +msgstr "永久刪除這些網站" + +#: wp-admin/network/sites.php:137 +msgid "Flagging a site for deletion makes the site unavailable to its users and visitors. This is a reversible action. A super admin can permanently delete the site at a later date." +msgstr "將網站標示為刪除會使網站的使用者及訪客無法使用網站。這是可還原的操作。多站網站管理員可以在一段時間之後永久刪除網站。" + +#: wp-admin/network/sites.php:131 +msgid "Archiving a site makes the site unavailable to its users and visitors. This is a reversible action." +msgstr "封存網站會使網站的使用者及訪客無法使用網站。這是可還原的操作。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:66 +msgid "You are about to flag the site %s for deletion." +msgstr "這項操作會將網站 %s 標示為刪除。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:64 +msgid "You are about to remove the deletion flag from the site %s." +msgstr "這項操作會移除網站 %s 的刪除標幟。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:796 +msgid "Flag for Deletion" +msgstr "標示為刪除" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:785 +msgctxt "site" +msgid "Remove Deletion Flag" +msgstr "移除刪除標幟" + +#. translators: %s: Number of sites. +#: wp-admin/includes/class-wp-ms-sites-list-table.php:265 +msgid "Flagged for Deletion (%s)" +msgid_plural "Flagged for Deletion (%s)" +msgstr[0] "已標示為刪除 (%s)" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:40 +#: wp-admin/network/site-info.php:205 +msgid "Flagged for Deletion" +msgstr "已標示為刪除" + +#: wp-admin/network/upgrade.php:37 +msgid "Documentation on Upgrade Network" +msgstr "〈升級多站網路〉線上說明" + +#: wp-admin/network/sites.php:125 wp-admin/network/sites.php:220 +msgid "Deleting a site is a permanent action that cannot be undone. This will delete the entire site and its uploads directory." +msgstr "刪除網站是無法復原的永久性操作。這項操作會刪除整個網站及該網站的 uploads 目錄。" + +#: wp-admin/network/sites.php:122 +msgid "Delete this site permanently" +msgstr "永久刪除這個網站" + +#: wp-admin/network/sites.php:38 +msgid "Visit to go to the front-end of the live site." +msgstr "點擊 [造訪] 便能前往指定網站的前端檢視網站內容。" + +#: wp-admin/network/settings.php:64 +msgid "Documentation on Network Settings" +msgstr "〈多站網路設定〉線上說明" + +#: wp-admin/network/index.php:56 +msgid "Documentation on the Network Admin" +msgstr "〈多站網路管理中心〉線上說明" + +#: wp-admin/network.php:68 wp-admin/network.php:81 +msgid "Documentation on Creating a Network" +msgstr "〈建立多站網路〉線上說明" + +#: wp-admin/includes/network.php:683 +msgid "https://developer.wordpress.org/advanced-administration/server/web-server/nginx/" +msgstr "https://developer.wordpress.org/advanced-administration/server/web-server/nginx/" + +#: wp-admin/network/site-new.php:87 +msgid "Missing site title." +msgstr "缺少網站標題。" + +#: wp-admin/includes/class-wp-ms-users-list-table.php:218 +msgid "Table ordered by User Registered Date." +msgstr "清單資料依據使用者註冊日期排序。" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:358 +msgid "Table ordered by Theme Name." +msgstr "清單資料依據佈景主題名稱排序。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:427 +msgid "Table ordered by Site Registered Date." +msgstr "清單資料依據網站註冊日期排序。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:426 +msgid "Table ordered by Last Updated." +msgstr "清單資料依據最近更新日期排序。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:421 +msgid "Table ordered by Site Path." +msgstr "清單資料依據網站路徑排序。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:418 +msgid "Table ordered by Site Domain Name." +msgstr "清單資料依據網站網域名稱排序。" + +#: wp-admin/includes/network.php:591 +msgid "Network configuration authentication keys" +msgstr "多站網路組態驗證金鑰" + +#. translators: %s: File name (wp-config.php, .htaccess or web.config). +#: wp-admin/includes/network.php:528 wp-admin/includes/network.php:667 +#: wp-admin/includes/network.php:729 +msgid "Network configuration rules for %s" +msgstr "%s 的多站網路組態規則" + +#: wp-admin/network/upgrade.php:142 +msgid "WordPress has been updated! Next and final step is to individually upgrade the sites in your network." +msgstr "WordPress 已完成更新!接下來的步驟,系統需要為這個多站網路中的網站進行個別升級。" + +#: wp-admin/network/site-new.php:40 +msgid "Cannot create an empty site." +msgstr "無法建立空網站。" + +#. translators: %s: wp-config.php +#: wp-admin/includes/network.php:499 +msgid "You should back up your existing %s file." +msgstr "多站網路管理員應該備份現有的 %s 檔案。" + +#. translators: 1: wp-config.php, 2: .htaccess +#. translators: 1: wp-config.php, 2: web.config +#: wp-admin/includes/network.php:485 wp-admin/includes/network.php:492 +msgid "You should back up your existing %1$s and %2$s files." +msgstr "多站網路管理員應該備份現有的 %1$s 及 %2$s 檔案。" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:759 +msgid "Visit theme site for %s" +msgstr "造訪佈景主題 %s 的網站" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:772 +msgid "Child theme of %s" +msgstr "%s 的子佈景主題" + +#: wp-admin/network/site-info.php:201 +msgctxt "site" +msgid "Public" +msgstr "公開網站" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:308 +msgctxt "site" +msgid "Not spam" +msgstr "標示為非濫用網站" + +#. translators: %s: Number of themes. +#: wp-admin/network/themes.php:438 +msgid "%s theme will no longer be auto-updated." +msgid_plural "%s themes will no longer be auto-updated." +msgstr[0] "%s 個佈景主題不會再自動進行更新。" + +#. translators: %s: Number of themes. +#: wp-admin/network/themes.php:427 +msgid "%s theme will be auto-updated." +msgid_plural "%s themes will be auto-updated." +msgstr[0] "%s 個佈景主題會自動進行更新。" + +#: wp-admin/network/themes.php:240 +msgid "Sorry, you are not allowed to change themes automatic update settings." +msgstr "很抱歉,目前的登入身分沒有變更佈景主題自動更新設定的權限。" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:328 +msgid "No themes are currently available." +msgstr "目前沒有任何可供使用的佈景主題。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:526 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:551 +#: wp-admin/includes/class-wp-ms-users-list-table.php:346 +msgid "Y/m/d g:i:s a" +msgstr "Y/n/j a g:i:s" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/network.php:682 +msgid "It seems your network is running with Nginx web server. Learn more about further configuration." +msgstr "這個多站網路執行於 NGINX 網頁伺服器。進一步了解後續組態" + +#. translators: %s: Number of sites. +#: wp-admin/includes/class-wp-ms-sites-list-table.php:258 +msgctxt "sites" +msgid "Spam (%s)" +msgid_plural "Spam (%s)" +msgstr[0] "濫用網站 (%s)" + +#. translators: %s: Number of sites. +#: wp-admin/includes/class-wp-ms-sites-list-table.php:252 +msgid "Mature (%s)" +msgid_plural "Mature (%s)" +msgstr[0] "成人內容 (%s)" + +#. translators: %s: Number of sites. +#: wp-admin/includes/class-wp-ms-sites-list-table.php:246 +msgid "Archived (%s)" +msgid_plural "Archived (%s)" +msgstr[0] "已封存 (%s)" + +#. translators: %s: Number of sites. +#: wp-admin/includes/class-wp-ms-sites-list-table.php:240 +msgid "Public (%s)" +msgid_plural "Public (%s)" +msgstr[0] "已公開 (%s)" + +#. translators: %s: Number of sites. +#: wp-admin/includes/class-wp-ms-sites-list-table.php:233 +msgctxt "sites" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#. translators: %s: Number of themes. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:420 +msgctxt "themes" +msgid "Update Available (%s)" +msgid_plural "Update Available (%s)" +msgstr[0] "已有更新可供安裝 (%s)" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:675 +msgid "Main" +msgstr "主要網站" + +#: wp-admin/network.php:69 wp-admin/network.php:82 +msgid "Documentation on the Network Screen" +msgstr "〈多站網路畫面〉線上說明" + +#. translators: %s: DO_NOT_UPGRADE_GLOBAL_TABLES +#: wp-admin/includes/network.php:120 +msgid "The constant %s cannot be defined when creating a network." +msgstr "建立多站網路時,無法定義常數 %s。" + +#: wp-admin/network/sites.php:222 +msgid "You are about to delete the following sites:" +msgstr "這項操作會刪除以下網站:" + +#: wp-admin/network/site-users.php:269 +msgid "User could not be added to this site." +msgstr "無法將使用者加入這個網站。" + +#: wp-admin/network/site-new.php:288 +msgid "The username and a link to set the password will be mailed to this email address." +msgstr "使用者名稱及設定密碼的連結會傳送到這個電子郵件地址。" + +#. translators: %s: New network admin email. +#: wp-admin/network/settings.php:177 +msgid "There is a pending change of the network admin email to %s." +msgstr "多站網路管理員電子郵件地址變更為 %s 的要求,仍在等候確認。" + +#: wp-admin/includes/network.php:355 +msgid "Sub-domain Installation" +msgstr "安裝於子網域" + +#: wp-admin/includes/network.php:324 wp-admin/includes/network.php:342 +msgid "Sub-directory Installation" +msgstr "安裝於子目錄" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:965 +msgid "Active Child Theme" +msgstr "已啟用的子佈景主題" + +#. translators: %s: File size in kilobytes. +#: wp-admin/network/settings.php:438 +msgid "%s KB" +msgstr "%s KB" + +#. translators: %s: Default network title. +#: wp-admin/includes/network.php:179 +msgid "%s Sites" +msgstr "多站網路《%s》的網站" + +#: wp-admin/network/themes.php:102 +msgid "Sorry, you are not allowed to delete themes for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站刪除佈景主題的權限。" + +#: wp-admin/network/themes.php:14 +msgid "Sorry, you are not allowed to manage network themes." +msgstr "很抱歉,目前的登入身分沒有管理多站網路佈景主題的權限。" + +#: wp-admin/network/sites.php:349 +msgid "Sorry, you are not allowed to delete that site." +msgstr "很抱歉,目前的登入身分沒有刪除這個網站的權限。" + +#: wp-admin/network/site-themes.php:14 +msgid "Sorry, you are not allowed to manage themes for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站管理佈景主題的權限。" + +#: wp-admin/network/site-new.php:17 +msgid "Sorry, you are not allowed to add sites to this network." +msgstr "很抱歉,目前的登入身分沒有在這個多站網路中新增網站的權限。" + +#: wp-admin/network/site-info.php:14 wp-admin/network/site-settings.php:14 +#: wp-admin/network/site-users.php:14 +msgid "Sorry, you are not allowed to edit this site." +msgstr "很抱歉,目前的登入身分沒有編輯這個網站的權限。" + +#: wp-admin/network/settings.php:385 +msgid "The email address of the first comment author on a new site." +msgstr "新網站第一則留言的留言者電子郵件地址。" + +#: wp-admin/network/settings.php:381 +msgid "First Comment Email" +msgstr "第一則留言的留言者電子郵件地址" + +#. translators: This string should only be translated if wp-config-sample.php +#. is localized. You can check the localized release package or +#. https://i18n.svn.wordpress.org//branches//dist/wp-config-sample.php +#: wp-admin/includes/network.php:520 +msgid "That’s all, stop editing! Happy publishing." +msgstr "That’s all, stop editing! Happy publishing." + +#. translators: 1: wp-config.php, 2: Location of wp-config file, 3: Translated +#. version of "That's all, stop editing! Happy publishing." +#: wp-admin/includes/network.php:512 +msgid "Add the following to your %1$s file in %2$s above the line reading %3$s:" +msgstr "請將以下程式碼加入位於 %2$s 的 %1$s 檔案中,且必須加在 %3$s 這行的上方:" + +#. translators: 1: Theme name, 2: Theme author. +#: wp-admin/network/themes.php:164 +msgctxt "theme" +msgid "%1$s by %2$s" +msgstr "由 %2$s 開發的 %1$s" + +#: wp-admin/network/site-new.php:230 +msgid "Only lowercase letters (a-z), numbers, and hyphens are allowed." +msgstr "只能使用小寫英文字母 (a-z)、數字及連字號 -。" + +#. translators: %s: wp-config.php +#: wp-admin/includes/network.php:584 +msgid "These unique authentication keys are also missing from your %s file." +msgstr "在檔案 %s 中也缺少這些唯一驗證金鑰。" + +#. translators: %s: wp-config.php +#: wp-admin/includes/network.php:578 +msgid "This unique authentication key is also missing from your %s file." +msgstr "在檔案 %s 中也缺少這個唯一驗證金鑰。" + +#. translators: 1: localhost, 2: localhost.localdomain +#: wp-admin/includes/network.php:329 +msgid "Because you are using %1$s, the sites in your WordPress network must use sub-directories. Consider using %2$s if you wish to use sub-domains." +msgstr "由於目前使用的是 %1$s,這個 WordPress 多站網路的網站必須安裝於子目錄。如果需要安裝於子網域,請考慮使用 %2$s。" + +#. translators: %s: Host name. +#: wp-admin/includes/network.php:311 wp-admin/includes/network.php:371 +msgid "The internet address of your network will be %s." +msgstr "用於建置多站網路的網際網路位址為 %s。" + +#. translators: 1: Site URL, 2: Host name, 3: www. +#: wp-admin/includes/network.php:297 +msgid "You should consider changing your site domain to %1$s before enabling the network feature. It will still be possible to visit your site using the %3$s prefix with an address like %2$s but any links will not have the %3$s prefix." +msgstr "在啟用多站網路的功能前,多站網路管理員應該考慮將網站網域變更為 %1$s。將來仍然可以使用 %3$s.%2$s 網址造訪這個網站,但任何連結均不包含前置詞 %3$s。" + +#: wp-admin/includes/network.php:245 +msgid "You cannot change this later." +msgstr "這項設定之後無法進行變更。" + +#: wp-admin/includes/network.php:244 +msgid "Please choose whether you would like sites in your WordPress network to use sub-domains or sub-directories." +msgstr "請選取在 WordPress 多站網路中要以子網域或子目錄方式建立網站。" + +#. translators: 1: mod_rewrite, 2: mod_rewrite documentation URL, 3: Google +#. search for mod_rewrite. +#: wp-admin/includes/network.php:225 +msgid "If %1$s is disabled, ask your administrator to enable that module, or look at the Apache documentation or elsewhere for help setting it up." +msgstr "如果 %1$s 已停用,請要求主機管理員啟用這個模組,或查閱 Apache 線上說明進行必要的搜尋以了解如何進行設定。" + +#. translators: %s: mod_rewrite +#: wp-admin/includes/network.php:217 +msgid "It looks like the Apache %s module is not installed." +msgstr "網站主機並未安裝 Apache 的 %s 模組。" + +#. translators: %s: mod_rewrite +#: wp-admin/includes/network.php:209 +msgid "Please make sure the Apache %s module is installed as it will be used at the end of this installation." +msgstr "請確認 Apache 的 %s 模組已安裝,以便在安裝完成後可以使用。" + +#: wp-admin/includes/class-wp-ms-users-list-table.php:196 +#: wp-admin/includes/class-wp-ms-users-list-table.php:218 +msgctxt "user" +msgid "Registered" +msgstr "註冊時間" + +#. translators: Number of users. +#: wp-admin/includes/class-wp-ms-users-list-table.php:159 +msgid "Super Admin (%s)" +msgid_plural "Super Admins (%s)" +msgstr[0] "多站網路管理員 (%s)" + +#: wp-admin/includes/class-wp-ms-users-list-table.php:117 +msgctxt "user" +msgid "Not spam" +msgstr "標示為非濫用使用者" + +#: wp-admin/includes/class-wp-ms-users-list-table.php:116 +msgctxt "user" +msgid "Mark as spam" +msgstr "標示為濫用使用者" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:765 +msgid "Visit Theme Site" +msgstr "造訪佈景主題網站" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:722 +msgid "Broken Theme:" +msgstr "不完整的佈景主題:" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:628 +msgid "Network Disable %s" +msgstr "於多站網路中停用 %s" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:625 +msgid "Disable %s" +msgstr "停用 %s" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:602 +msgid "Network Enable %s" +msgstr "於多站網路中啟用 %s" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:599 +msgid "Enable %s" +msgstr "啟用 %s" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:487 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:635 +msgid "Network Disable" +msgstr "於多站網路中停用" + +#. translators: %s: Number of themes. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:429 +msgctxt "themes" +msgid "Broken (%s)" +msgid_plural "Broken (%s)" +msgstr[0] "不完整 (%s)" + +#. translators: %s: Number of themes. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:411 +msgctxt "themes" +msgid "Disabled (%s)" +msgid_plural "Disabled (%s)" +msgstr[0] "已停用 (%s)" + +#. translators: %s: Number of themes. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:402 +msgctxt "themes" +msgid "Enabled (%s)" +msgid_plural "Enabled (%s)" +msgstr[0] "已啟用 (%s)" + +#. translators: %s: Number of themes. +#: wp-admin/includes/class-wp-ms-themes-list-table.php:393 +msgctxt "themes" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:326 +msgid "No themes found." +msgstr "找不到符合條件的佈景主題。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:820 +msgctxt "verb; site" +msgid "Archive" +msgstr "封存" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:809 +msgid "Unarchive" +msgstr "取消封存" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:530 +msgid "Never" +msgstr "尚無更新" + +#. translators: 1: Site title, 2: Site tagline. +#: wp-admin/includes/class-wp-ms-sites-list-table.php:502 +msgid "%1$s – %2$s" +msgstr "%1$s – %2$s" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:388 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:427 +#: wp-admin/network/site-info.php:191 +msgctxt "site" +msgid "Registered" +msgstr "註冊時間" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:387 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:426 +#: wp-admin/network/site-info.php:195 +msgid "Last Updated" +msgstr "最後更新" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:833 +msgctxt "site" +msgid "Not Spam" +msgstr "標示為非濫用網站" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:307 +msgctxt "site" +msgid "Mark as spam" +msgstr "標示為濫用網站" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:218 +msgid "No sites found." +msgstr "找不到符合條件的網站。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:41 +#: wp-admin/network/site-info.php:207 +msgid "Mature" +msgstr "成人內容" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:39 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:844 +#: wp-admin/network/site-info.php:204 +msgctxt "site" +msgid "Spam" +msgstr "濫用網站" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:38 +#: wp-admin/network/site-info.php:203 +msgid "Archived" +msgstr "已封存" + +#: wp-admin/network/site-users.php:396 wp-admin/network/user-new.php:149 +msgid "A password reset link will be sent to the user via email." +msgstr "系統會傳送一封包含密碼重設連結的電子郵件給這位使用者。" + +#. translators: 1: NOBLOGREDIRECT, 2: wp-config.php +#: wp-admin/network/settings.php:223 +msgid "If registration is disabled, please set %1$s in %2$s to a URL you will redirect visitors to if they visit a non-existent site." +msgstr "停用註冊功能後,請為 %2$s 檔案內的 %1$s 參數設定一個網址,這樣能讓使用者在造訪不存在的網站時,將使用者重新導向至指定的網址。" + +#. translators: 1: WP_ALLOW_MULTISITE, 2: wp-config.php +#: wp-admin/network.php:44 +msgid "You must define the %1$s constant as true in your %2$s file to allow creation of a Network." +msgstr "必須將 %2$s 檔案中的常數 %1$s 設為 true,才能建立多站網路。" + +#: wp-admin/network/themes.php:346 +msgid "Themes list navigation" +msgstr "佈景主題清單導覽" + +#: wp-admin/network/sites.php:51 +msgid "Sites list" +msgstr "網站清單" + +#: wp-admin/network/sites.php:50 +msgid "Sites list navigation" +msgstr "網站清單導覽" + +#: wp-admin/network/site-users.php:27 +msgid "Site users list" +msgstr "網站使用者清單" + +#: wp-admin/network/site-users.php:26 +msgid "Site users list navigation" +msgstr "網站使用者清單導覽" + +#: wp-admin/network/site-users.php:25 +msgid "Filter site users list" +msgstr "篩選網站使用者清單" + +#: wp-admin/network/site-themes.php:24 +msgid "Site themes list" +msgstr "網站佈景主題清單" + +#: wp-admin/network/site-themes.php:23 +msgid "Site themes list navigation" +msgstr "網站佈景主題清單導覽" + +#: wp-admin/network/site-themes.php:22 +msgid "Filter site themes list" +msgstr "篩選網站佈景主題清單" + +#: wp-admin/network/site-new.php:125 +msgid "The domain or path entered conflicts with an existing username." +msgstr "輸入的網域名稱或路徑與現有的使用者名稱發生衝突。" + +#: wp-admin/network/sites.php:88 +msgid "The requested action is not valid." +msgstr "要求的操作無效。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:80 +msgid "You are about to mark the site %s as not mature." +msgstr "這項操作會將網站 %s 標示為非成人內容。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:78 +msgid "You are about to mark the site %s as mature." +msgstr "這項操作會將網站 %s 標示為成人內容。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:76 +msgid "You are about to delete the site %s." +msgstr "這項操作會刪除網站 %s。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:74 +msgid "You are about to mark the site %s as spam." +msgstr "這項操作會將網站 %s 標示為濫用網站。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:72 +msgid "You are about to unspam the site %s." +msgstr "這項操作會將網站 %s 標示為非濫用網站。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:70 +msgid "You are about to archive the site %s." +msgstr "這項操作會封存網站 %s。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:68 +msgid "You are about to unarchive the site %s." +msgstr "這項操作會取消網站 %s 的封存。" + +#: wp-admin/network/site-info.php:28 wp-admin/network/site-settings.php:28 +#: wp-admin/network/site-themes.php:53 wp-admin/network/site-users.php:46 +msgid "The requested site does not exist." +msgstr "要求的網站不存在。" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:420 +msgid "Path" +msgstr "網站路徑" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:417 +msgid "Domain" +msgstr "網域名稱" + +#: wp-admin/network/user-new.php:29 wp-admin/network/users.php:270 +msgid "Documentation on Network Users" +msgstr "〈多站網路使用者〉線上說明" + +#: wp-admin/network/themes.php:338 +msgid "Documentation on Network Themes" +msgstr "〈多站網路佈景主題〉線上說明" + +#. translators: 1: Site URL, 2: Server error message. +#: wp-admin/network/upgrade.php:100 +msgid "Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: %2$s" +msgstr "警告!更新 %1$s 時發生問題。這台伺服器可能無法連線至執行於其上的網站。錯誤訊息: %2$s" + +#. translators: %s: Number of themes. +#: wp-admin/network/themes.php:416 +msgid "%s theme deleted." +msgid_plural "%s themes deleted." +msgstr[0] "%s 個佈景主題已刪除。" + +#. translators: %s: Number of themes. +#: wp-admin/network/site-themes.php:214 wp-admin/network/themes.php:405 +msgid "%s theme disabled." +msgid_plural "%s themes disabled." +msgstr[0] "%s 個佈景主題已停用。" + +#. translators: %s: Number of themes. +#: wp-admin/network/site-themes.php:197 wp-admin/network/themes.php:394 +msgid "%s theme enabled." +msgid_plural "%s themes enabled." +msgstr[0] "%s 個佈景主題已啟用。" + +#: wp-admin/network/themes.php:190 +msgid "Yes, delete these themes" +msgstr "是,刪除這些佈景主題" + +#: wp-admin/network/themes.php:157 +msgid "You are about to remove the following themes:" +msgstr "這項操作會移除以下佈景主題:" + +#: wp-admin/network/themes.php:151 +msgid "These themes may be active on other sites in the network." +msgstr "這些佈景主題或許目前正由多站網路中的其他網站使用。" + +#: wp-admin/network/themes.php:148 +msgid "Delete Themes" +msgstr "刪除佈景主題" + +#. translators: Hidden accessibility text. +#: wp-admin/network/settings.php:445 +msgid "Size in kilobytes" +msgstr "檔案大小以 KB 為單位" + +#: wp-admin/network/settings.php:427 +msgid "Allowed file types. Separate types by spaces." +msgstr "開放上傳的檔案類型。請使用空格分隔檔案副檔名。" + +#. translators: 1: File name (.htaccess or web.config), 2: File path. +#: wp-admin/includes/network.php:654 wp-admin/includes/network.php:716 +msgid "Add the following to your %1$s file in %2$s, replacing other WordPress rules:" +msgstr "請將以下程式碼加入位於 %2$s 的 %1$s 檔案中,並取代其他 WordPress 規則:" + +#: wp-admin/network/sites.php:114 wp-admin/network/sites.php:214 +msgid "Confirm your action" +msgstr "確認操作" + +#: wp-admin/network/users.php:260 +msgid "Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to their Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site." +msgstr "將游標暫留於使用者名稱上,便會顯示 [編輯] 連結。點擊左側的 [編輯] 連結會進入 [編輯使用者] 或編輯 [個人資料] 的畫面,點擊右側網站名稱的 [編輯] 連結則會進入該網站的 [編輯網站] 畫面。" + +#: wp-admin/network/index.php:44 +msgid "To search for a site, enter the path or domain." +msgstr "如需搜尋網站,請輸入路徑或網域名稱。" + +#: wp-admin/network/index.php:43 +msgid "To search for a user, enter an email address or username. Use a wildcard to search for a partial username, such as user*." +msgstr "如需搜尋使用者,請輸入電子郵件地址或使用者名稱。輸入萬用字元可使用部分使用者名稱進行模糊搜尋,例如使用 user* 代表搜尋全部以 user 起始的使用者名稱。" + +#: wp-admin/network/index.php:41 +msgid "To add a new site, click Create a New Site." +msgstr "如需新增網站,請點擊 [新增網站]。" + +#: wp-admin/network/index.php:40 +msgid "To add a new user, click Create a New User." +msgstr "如需新增使用者,請點擊 [新增使用者]。" + +#: wp-admin/network/index.php:49 +msgid "Quick Tasks" +msgstr "快速任務" + +#: wp-admin/network/index.php:42 +msgid "To search for a user or site, use the search boxes." +msgstr "如需搜尋使用者或網站,請使用搜尋框。" + +#: wp-admin/network/index.php:39 +msgid "The Right Now widget on this screen provides current user and site counts on your network." +msgstr "這個畫面的 [目前狀況] 小工具會顯示這個多站網路目前的使用者及網站數量。" + +#: wp-admin/network/index.php:29 +msgid "Modify global network settings" +msgstr "修改多站網路全域設定" + +#: wp-admin/network/index.php:28 +msgid "Update your network" +msgstr "為這個多站網路進行更新" + +#: wp-admin/network/index.php:27 +msgid "Install and activate themes or plugins" +msgstr "安裝並啟用佈景主題或外掛" + +#: wp-admin/network/index.php:26 +msgid "Add and manage sites or users" +msgstr "新增及管理網站/使用者" + +#: wp-admin/network/index.php:25 +msgid "From here you can:" +msgstr "多站網路管理員可以在這個畫面執行以下任務:" + +#: wp-admin/network/index.php:24 +msgid "Welcome to your Network Admin. This area of the Administration Screens is used for managing all aspects of your Multisite Network." +msgstr "歡迎使用 [多站網路管理中心]。這個管理畫面區域用來管理這個多站網路。" + +#: wp-admin/network/upgrade.php:29 +msgid "Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Upgrade Network button will step through each site in the network, five at a time, and make sure any database updates are applied." +msgstr "透過 [多站網路管理中心] 導覽選單或工具列完成 WordPress 核心程式的升級後,僅需要使用這個畫面一次。點擊 [升級多站網路] 按鈕後,便會為這個多站網路的網站進行批次升級,每次升級 5 個網站直到全部完成,並確保每個網站的資料庫均完成升級。" + +#: wp-admin/network/menu.php:51 wp-admin/network/upgrade.php:21 +#: wp-admin/network/upgrade.php:48 wp-admin/network/upgrade.php:146 +msgid "Upgrade Network" +msgstr "升級多站網路" + +#: wp-admin/includes/network.php:280 wp-admin/includes/network.php:660 +#: wp-admin/includes/network.php:722 +msgid "Subdirectory networks may not be fully compatible with custom wp-content directories." +msgstr "以子目錄方式建立網站的多站網路可能與自訂的 wp-content 目錄無法完全相容。" + +#: wp-admin/network.php:64 +msgid "Add the designated lines of code to wp-config.php (just before /*...stop editing...*/) and .htaccess (replacing the existing WordPress rules)." +msgstr "請將專屬程式碼加入 wp-config.php 檔案 (就在 /*...stop editing...*/ 這行之前) 及 .htaccess 檔案中 (取代現有的 WordPress 規則)。" + +#: wp-admin/network/settings.php:457 +msgid "Language Settings" +msgstr "網站介面語言設定" + +#: wp-admin/network/settings.php:249 +msgid "Allow site administrators to add new users to their site via the \"Users → Add User\" page" +msgstr "開放網站管理員使用自有網站的 [新增使用者] 頁面新增使用者" + +#: wp-admin/network/settings.php:58 +msgid "Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges." +msgstr "這個畫面不提供新增多站網路管理員的功能,必須在 [多站網路管理中心] 的 [使用者] 頁面中點擊使用者清單的使用者名稱或名稱下方的 [編輯] 操作連結,進入 [編輯使用者] 頁面啟用 [授予這個使用者多站網路管理員的權限],便能將指定使用者提升至多站網路管理員權限。" + +#: wp-admin/network/site-users.php:293 +msgid "Enter the username and email." +msgstr "輸入使用者名稱及電子郵件地址。" + +#: wp-admin/network/site-users.php:290 +msgid "User created." +msgstr "使用者已新增。" + +#: wp-admin/network/site-users.php:286 +msgid "Select a user to remove." +msgstr "選取使用者以移除。" + +#: wp-admin/network/site-users.php:279 +msgid "Select a user to change role." +msgstr "選取使用者以變更使用者角色。" + +#: wp-admin/network/site-users.php:272 +msgid "Enter the username of an existing user." +msgstr "輸入的使用者名稱已存在。" + +#: wp-admin/network/site-users.php:266 +msgid "User is already a member of this site." +msgstr "使用者已是這個網站的成員。" + +#: wp-admin/network/site-settings.php:78 +msgid "Site options updated." +msgstr "網站設定已儲存。" + +#. translators: 1: Dashboard URL, 2: Network admin edit URL. +#: wp-admin/network/site-new.php:174 +msgid "Site added. Visit Dashboard or Edit Site" +msgstr "網站已新增。造訪 [控制台]編輯網站" + +#: wp-admin/network/site-new.php:25 +msgid "This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings." +msgstr "這個畫面提供多站網路管理員新增網站至多站網路的功能,這項功能不受註冊設定影響。" + +#: wp-admin/network/site-info.php:129 +msgid "Site info updated." +msgstr "網站資訊已更新。" + +#: wp-admin/network/themes.php:446 +msgid "You cannot delete a theme while it is active on the main site." +msgstr "由於這個佈景主題已在主要網站中啟用,因此無法刪除。" + +#: wp-admin/network/themes.php:316 +msgid "Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes." +msgstr "多站網路管理員可以透過點擊 [全部網站] 畫面中網站名稱下方的 [編輯] 連結,進入 [編輯網站] 畫面的 [佈景主題] 分頁為個別網站啟用佈景主題。只有多站網路管理員可以安裝或編輯佈景主題。" + +#: wp-admin/network/themes.php:197 +msgid "No, return me to the theme list" +msgstr "否,返回佈景主題清單" + +#: wp-admin/network/themes.php:188 +msgid "Yes, delete this theme" +msgstr "是,刪除這個佈景主題" + +#: wp-admin/network/themes.php:174 +msgid "Are you sure you want to delete these themes?" +msgstr "確定要刪除這些佈景主題?" + +#: wp-admin/network/themes.php:146 +msgid "You are about to remove the following theme:" +msgstr "這項操作會移除以下佈景主題:" + +#: wp-admin/network/themes.php:140 +msgid "This theme may be active on other sites in the network." +msgstr "這個佈景主題或許目前正由多站網路中的其他網站使用。" + +#: wp-admin/network/themes.php:137 +msgid "Delete Theme" +msgstr "刪除佈景主題" + +#: wp-admin/network/site-themes.php:237 +msgid "Network enabled themes are not shown on this screen." +msgstr "已在多站網路管理中心上啟用的佈景主題不會顯示在這個畫面。" + +#: wp-admin/network/site-themes.php:227 wp-admin/network/themes.php:443 +msgid "No theme selected." +msgstr "尚未選取佈景主題。" + +#: wp-admin/network/site-themes.php:211 wp-admin/network/themes.php:401 +msgid "Theme disabled." +msgstr "佈景主題已停用。" + +#: wp-admin/network/site-themes.php:194 wp-admin/network/themes.php:390 +msgid "Theme enabled." +msgstr "佈景主題已啟用。" + +#. translators: %s: Site title. +#: wp-admin/network/site-info.php:135 wp-admin/network/site-settings.php:84 +#: wp-admin/network/site-themes.php:171 wp-admin/network/site-users.php:220 +msgid "Edit Site: %s" +msgstr "編輯網站: %s" + +#: wp-admin/network/site-info.php:23 wp-admin/network/site-settings.php:23 +#: wp-admin/network/site-themes.php:46 wp-admin/network/site-users.php:41 +msgid "Invalid site ID." +msgstr "無效的網站 ID。" + +#. translators: %s: Site URL. +#: wp-admin/network/sites.php:189 +msgid "Sorry, you are not allowed to delete the site %s." +msgstr "很抱歉,目前的登入身分沒有刪除網址為 %s 的網站的權限。" + +#: wp-admin/network/sites.php:37 +msgid "Delete Permanently which is a permanent action after the confirmation screen." +msgstr "[永久刪除] 是永久性操作,網站會在確認後刪除。" + +#: wp-admin/network/sites.php:35 +msgid "Dashboard leads to the Dashboard for that site." +msgstr "點擊 [控制台] 便會進入指定網站的 [控制台] 畫面。" + +#: wp-admin/network/sites.php:34 +msgid "An Edit link to a separate Edit Site screen." +msgstr "點擊 [編輯] 連結便會進入 [編輯網站] 畫面。" + +#: wp-admin/network/sites.php:31 +msgid "Add Site takes you to the screen for adding a new site to the network. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page." +msgstr "點擊 [新增網站] 按鈕便會進入為多站網路新增網站的畫面。多站網路管理員可透過網站名稱、ID 或 IP 位址搜尋網站。在 [顯示項目設定] 分頁中,多站網路管理員可以設定每頁要顯示的網站數量。" + +#: wp-admin/network/settings.php:247 +msgid "Add Users" +msgstr "新增使用者" + +#: wp-admin/network/user-new.php:55 +msgid "Cannot add user." +msgstr "無法新增使用者。" + +#: wp-admin/network/user-new.php:22 +msgid "Add User will set up a new user account on the network and send that person an email with username and password." +msgstr "[新增使用者] 將在多站網路中設定新使用者帳號,並傳送一封內容包含使用者名稱及密碼的電子郵件給這位使用者。" + +#: wp-admin/network/menu.php:46 +msgid "Updates" +msgstr "更新" + +#: wp-admin/network/menu.php:116 wp-admin/network/settings.php:21 +msgid "Network Settings" +msgstr "多站網路設定" + +#: wp-admin/network/menu.php:85 +msgid "Installed Themes" +msgstr "已安裝的佈景主題" + +#: wp-admin/network/menu.php:57 +msgid "All Sites" +msgstr "全部網站" + +#: wp-admin/includes/network.php:743 +msgid "Once you complete these steps, your network is enabled and configured. You will have to log in again." +msgstr "完成這些步驟後,多站網路便完成啟用及組態。多站網路管理員必須重新登入。" + +#: wp-admin/includes/network.php:589 +msgid "To make your installation more secure, you should also add:" +msgstr "為了使 WordPress 網站更加安全,請加入以下程式碼:" + +#: wp-admin/includes/network.php:474 +msgid "Complete the following steps to enable the features for creating a network of sites." +msgstr "請完成以下步驟,以啟用建立多站網路網站的功能。" + +#: wp-admin/includes/network.php:473 +msgid "Enabling the Network" +msgstr "啟用多站網路" + +#: wp-admin/includes/network.php:462 +msgid "Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables." +msgstr "請完成相關組態步驟。如需建立新的多站網路,必須先清空或移除多站網路的資料表。" + +#: wp-admin/includes/network.php:456 +msgid "An existing WordPress network was detected." +msgstr "已偵測到現有的 WordPress 多站網路。" + +#: wp-admin/includes/network.php:450 +msgid "The original configuration steps are shown here for reference." +msgstr "以下顯示原始組態步驟以供參考。" + +#: wp-admin/includes/network.php:392 +msgid "Your email address." +msgstr "多站網路管理員的電子郵件地址。" + +#: wp-admin/includes/network.php:383 +msgid "What would you like to call your network?" +msgstr "請為這個多站網路進行命名。" + +#: wp-admin/includes/network.php:379 wp-admin/network/settings.php:159 +msgid "Network Title" +msgstr "多站網路標題" + +#: wp-admin/includes/network.php:358 +msgid "Because your installation is not new, the sites in your WordPress network must use sub-domains." +msgstr "由於這個多站網路並非全新安裝,因此這個 WordPress 多站網路中的網站必須使用子網域方式建立。" + +#: wp-admin/includes/network.php:345 +msgid "Because your installation is in a directory, the sites in your WordPress network must use sub-directories." +msgstr "由於這個多站網路安裝於子目錄中,因此這個 WordPress 多站網路中的網站必須使用子目錄方式建立。" + +#: wp-admin/includes/network.php:335 wp-admin/includes/network.php:348 +#: wp-admin/includes/network.php:359 +msgid "The main site in a sub-directory installation will need to use a modified permalink structure, potentially breaking existing links." +msgstr "安裝於子目錄的主要網站需要使用修改過的永久連結結構,有可能影響現有的連結。" + +#: wp-admin/includes/network.php:320 +msgid "Network Details" +msgstr "多站網路詳細資料" + +#: wp-admin/includes/network.php:292 wp-admin/includes/network.php:306 +#: wp-admin/includes/network.php:366 +msgid "Server Address" +msgstr "伺服器位址" + +#. translators: 1: Host name. +#: wp-admin/includes/network.php:267 +msgctxt "subdirectory examples" +msgid "like %1$s/site1 and %1$s/site2" +msgstr "例如 %1$s/site1%1$s/site2" + +#: wp-admin/includes/network.php:262 +msgid "Sub-directories" +msgstr "子目錄" + +#. translators: 1: Host name. +#: wp-admin/includes/network.php:255 +msgctxt "subdomain examples" +msgid "like site1.%1$s and site2.%1$s" +msgstr "例如 site1.%1$ssite2.%1$s" + +#: wp-admin/includes/network.php:250 +msgid "Sub-domains" +msgstr "子網域" + +#: wp-admin/includes/network.php:246 +msgid "You will need a wildcard DNS record if you are going to use the virtual host (sub-domain) functionality." +msgstr "如果要在虛擬主機上使用子網域方式建立網站,必須建立一筆萬用字元 DNS 記錄。" + +#: wp-admin/includes/network.php:243 +msgid "Addresses of Sites in your Network" +msgstr "網站在這個多站網路中的位址" + +#: wp-admin/includes/network.php:189 +msgid "Fill in the information below and you’ll be on your way to creating a network of WordPress sites. Configuration files will be created in the next step." +msgstr "請填寫以下資訊,便可建立 WordPress 多站網路的網站。系統會在下一個步驟中建立組態檔案。" + +#: wp-admin/includes/network.php:188 +msgid "Welcome to the Network installation process!" +msgstr "歡迎使用多站網路安裝程式!" + +#: wp-admin/includes/network.php:161 +msgid "The network could not be created." +msgstr "無法建立多站網路。" + +#: wp-admin/includes/network.php:146 +msgid "Once the network is created, you may reactivate your plugins." +msgstr "多站網路成功建立後,多站網路管理員便可以重新啟用外掛。" + +#. translators: %s: URL to Plugins screen. +#: wp-admin/includes/network.php:141 +msgid "Please deactivate your plugins before enabling the Network feature." +msgstr "在啟用多站網路功能前,請先停用全部外掛。" + +#: wp-admin/network.php:74 +msgid "Network" +msgstr "多站網路" + +#: wp-admin/network.php:66 +msgid "The choice of subdirectory sites is disabled if this setup is more than a month old because of permalink problems with “/blog/” from the main site. This disabling will be addressed in a future version." +msgstr "多站網路設定完畢使用超過一個月後,由於變更設定會造成主要網站 /blog/ 的永久連結產生問題,因此會自動停用以子目錄方式建立網站的功能。這項功能停用的問題,會在未來版本中解決。" + +#: wp-admin/network.php:65 +msgid "Once you add this code and refresh your browser, multisite should be enabled. This screen, now in the Network Admin navigation menu, will keep an archive of the added code. You can toggle between Network Admin and Site Admin by clicking on the Network Admin or an individual site name under the My Sites dropdown in the Toolbar." +msgstr "加入專屬程式碼並在瀏覽器中重新整理頁面後,多站網路便會完成啟用;這個畫面會成為 [多站網路管理中心] 導覽選單的一部份,會保留專屬程式碼以供後續參考取用。多站網站管理員可以點擊工具列中的 [多站網路管理中心] 或 [我的網站] 下拉式選單中的網站名稱,藉以在 [多站網路管理中心] 及 [網站管理中心] 兩者間切換。" + +#: wp-admin/network.php:63 +msgid "The next screen for Network Setup will give you individually-generated lines of code to add to your wp-config.php and .htaccess files. Make sure the settings of your FTP client make files starting with a dot visible, so that you can find .htaccess; you may have to create this file if it really is not there. Make backup copies of those two files." +msgstr "[多站網路組態] 的下一個畫面會提供這個多站網路專屬的程式碼,且必須將這些程式碼加入 wp-config.php 及 .htaccess 檔案中。請確定 FTP 客戶端程式能顯示檔案名稱以點 . 開頭的檔案,這樣才能夠找到 .htaccess;如果這個檔案不存在,務必建立一個新的 .htaccess 檔案。變更這兩個檔案前,請為這兩個檔案進行備份。" + +#: wp-admin/network.php:62 +msgid "Choose subdomains or subdirectories; this can only be switched afterwards by reconfiguring your installation. Fill out the network details, and click Install. If this does not work, you may have to add a wildcard DNS record (for subdomains) or change to another setting in Permalinks (for subdirectories)." +msgstr "多站網路的網站可選擇要以子網域或子目錄方式建立,除非重新安裝多站網路,否則無法變更這項設定。填寫多站網路的詳細資料,然後點擊 [安裝]。如果多站網路無法運作,多站網路管理員便會需要新增一筆萬用字元 DNS 記錄 (用於使用子網域建立網站),或是變更永久連結 (使用子目錄建立網站)。" + +#: wp-admin/network.php:61 +msgid "This screen allows you to configure a network as having subdomains (site1.example.com) or subdirectories (example.com/site1). Subdomains require wildcard subdomains to be enabled in Apache and DNS records, if your host allows it." +msgstr "這個畫面能設定多站網路要採用子網域 (site1.example.com) 或子目錄 (example.com/site1) 方式建立新網站。如果採用子網域建立網站,多站網路管理員必須在 Apache 及 DNS 記錄中啟用萬用字元子網域;如果無法啟用萬用字元子網域,請聯絡網站主機服務提供商。" + +#: wp-admin/network.php:57 +msgid "Create a Network of WordPress Sites" +msgstr "建立 WordPress 網站的多站網路" + +#: wp-admin/network.php:29 +msgid "The Network creation panel is not for WordPress MU networks." +msgstr "多站網路建立面板無法使用於 WordPress 多站網路集合。" + +#. translators: %s: User login. +#: wp-admin/network/users.php:87 wp-admin/network/users.php:126 +msgid "Warning! User cannot be modified. The user %s is a network administrator." +msgstr "警告!無法修改這個使用者的資料。使用者「%s」是多站網路管理員。" + +#: wp-admin/network/site-new.php:26 +msgid "If the admin email for the new site does not exist in the database, a new user will also be created." +msgstr "如果新網站的網站管理員電子郵件地址在資料庫中查無記錄,便會新增一個新使用者。" + +#: wp-admin/network/sites.php:36 +msgid "Flag for Deletion, Archive, and Spam which lead to confirmation screens. These actions can be reversed later." +msgstr "點擊 [標示為刪除]、[封存] 及 [濫用網站] 會進入對應的確認畫面。這幾項操作之後可以還原。" + +#: wp-admin/network/sites.php:33 +msgid "Hovering over each site reveals seven options (three for the primary site):" +msgstr "將游標暫留於網站名稱上,會出現 7 項設定 (主要網站則會出現 3 個):" + +#: wp-admin/network/settings.php:52 +msgid "Operational settings has fields for the network’s name and admin email." +msgstr "[一般運作設定] 中可設定多站網路名稱及多站網路管理員電子郵件地址。" + +#: wp-admin/network/users.php:263 +msgid "The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses." +msgstr "透過 [批次操作] 可永久刪除選取的使用者,或將選取的使用者標示濫用使用者或非濫用使用者。系統會移除濫用使用者所發佈的文章,並且無法使用相同的電子郵件地址進行註冊。" + +#: wp-admin/network/users.php:261 +msgid "You can also go to the user’s profile page by clicking on the individual username." +msgstr "多站網路管理員可以點擊個別使用者名稱,前往這位使用者的 [個人資料] 頁面。" + +#: wp-admin/network/settings.php:55 +msgid "Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only)." +msgstr "[上傳設定] 可控制上傳檔案大小上限及每個網站可用的上傳空間,多站網站管理員可以在編輯特定網站時變更這幾項預設值。這裡也可以設定可上傳的檔案類型,請以空格分隔多個檔案類型。" + +#: wp-admin/network/users.php:264 +msgid "You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege." +msgstr "在現有的使用者的 [編輯使用者] 頁面中,多站網路管理員可以將核取 [授予這個使用者多站網路管理員的權限] 這項設定,將多站網路管理員的權限授予這個使用者。" + +#: wp-admin/network/user-new.php:23 +msgid "Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them." +msgstr "已在多站網路中完成註冊、但尚未擁有網站的使用者,會以訂閱者使用者角色新增至主要網站控制台,因此他們能在自己的 [個人資料] 頁面管理帳號資料。這些使用者在建立自己的網站前,只能在導覽選單中看到 [控制台] 及 [我的網站]。" + +#: wp-admin/network/users.php:262 +msgid "You can sort the table by clicking on any of the table headings and switch between list and excerpt views by using the icons above the users list." +msgstr "點擊清單標題便能為清單資料進行排序,點擊使用者清單上方圖示,便能在清單檢視及內容摘要檢視兩種模式間切換。" + +#: wp-admin/network/users.php:259 +msgid "This table shows all users across the network and the sites to which they are assigned." +msgstr "這份清單列出多站網路內的所有使用者,以及指派給他們的網站。" + +#: wp-admin/network/upgrade.php:31 +msgid "If this process fails for any reason, users logging in to their sites will force the same update." +msgstr "如果更新程序因故中斷或失敗,使用者登入網站後便會強制進行同一項更新。" + +#: wp-admin/network/upgrade.php:30 +msgid "If a version update to core has not happened, clicking this button will not affect anything." +msgstr "如果多站網路的 WordPress 核心程式並未更新,點擊 [升級多站網路] 按鈕不會有任何影響。" + +#: wp-admin/network/themes.php:315 +msgid "If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen." +msgstr "如果多站網路管理員停用了某個網站使用中的佈景主題,該網站上的這個佈景主題可以繼續使用;如果這個網站變更了佈景主題,早前已停用的佈景主題便不會再次顯示該網站的 [外觀] > [佈景主題] 中。" + +#: wp-admin/network/themes.php:314 +msgid "This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using." +msgstr "這個畫面用於啟用及停用可供每個網站在 [外觀] 選單使用的佈景主題,但無法啟用或停用已有網站使用的佈景主題。" + +#: wp-admin/network/sites.php:32 +msgid "This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table." +msgstr "這個畫面列出這個多站網路中的全部網站。請點擊清單右上方的圖示,便能在清單檢視及內容摘要檢視兩種模式間切換。" + +#: wp-admin/network/settings.php:57 +msgid "Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins." +msgstr "[選單設定] 可為非多站網路管理員啟用/停用所屬網站的 [外掛] 選單。停用所屬網站的 [外掛] 選單時,網站管理員無法管理網站外掛,僅有多站網路管理員可以進行管理。" + +#: wp-admin/network/settings.php:54 +msgid "New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL." +msgstr "在這個多站網路中建立新網站,便會套用 [新增網站設定] 中的預設設定,這些設定包含使用者註冊帳號的歡迎電子郵件、網站的首篇文章、頁面、示範留言及示範留言者相關資料。" + +#: wp-admin/network/settings.php:53 +msgid "Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network." +msgstr "[註冊設定] 可以停用/啟用公開註冊功能。如果開放使用者註冊,建議為多站網路安裝阻擋垃圾留言的外掛。如果需要設定多個禁用的網站名稱,請使用空格分隔這些名稱,而不是使用逗號。" + +#: wp-admin/network/settings.php:51 +msgid "This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options." +msgstr "這個畫面可以設定及變更整個多站網路。第一個網站是多站網路的主要網站,而多站網路會繼承原始網站的設定。" + +#. translators: %s: Reserved names list. +#: wp-admin/network/site-new.php:59 +msgid "The following words are reserved for use by WordPress functions and cannot be used as site names: %s" +msgstr "下列保留字詞僅供 WordPress 函式使用,因此無法作為網站名稱: %s" + +#: wp-admin/network/upgrade.php:126 +msgid "If your browser does not start loading the next page automatically, click this link:" +msgstr "如果使用的瀏覽器沒有自動載入下一個頁面,請點擊這個連結:" + +#: wp-admin/network/settings.php:312 +msgid "If you want to ban domains from site registrations. One domain per line." +msgstr "這項設定可封鎖特定網域名稱的電子郵件地址註冊網站。請每行輸入一個網域名稱。" + +#: wp-admin/network/settings.php:292 +msgid "If you want to limit site registrations to certain domains. One domain per line." +msgstr "這項設定可限制僅有特定網域名稱的電子郵件地址才能註冊網站。請每行輸入一個網域名稱。" + +#: wp-admin/network/users.php:294 +msgid "Users removed from spam." +msgstr "選取的使用者已從濫用使用者中移除。" + +#: wp-admin/network/sites.php:367 +msgid "Site marked as spam." +msgstr "網站已標示為濫用網站。" + +#: wp-admin/network/sites.php:364 +msgid "Site removed from spam." +msgstr "網站已從濫用網站中移除。" + +#: wp-admin/network/sites.php:340 +msgid "Sites marked as spam." +msgstr "網站已標示為濫用網站。" + +#: wp-admin/network/sites.php:337 +msgid "Sites removed from spam." +msgstr "網站已從濫用網站中移除。" + +#: wp-admin/network/users.php:297 +msgid "Users deleted." +msgstr "使用者已刪除。" + +#: wp-admin/network/users.php:291 +msgid "Users marked as spam." +msgstr "使用者已標示為濫用使用者。" + +#: wp-admin/network/sites.php:355 +msgid "Site unarchived." +msgstr "網站已取消封存。" + +#: wp-admin/network/sites.php:352 +msgid "Site archived." +msgstr "網站已封存。" + +#: wp-admin/network/sites.php:104 wp-admin/network/sites.php:252 +msgid "Sorry, you are not allowed to change the current site." +msgstr "很抱歉,目前的登入身分沒有變更目前網站的權限。" + +#: wp-admin/network/site-new.php:130 +msgid "There was an error creating the user." +msgstr "新增使用者時發生錯誤。" + +#: wp-admin/network/settings.php:423 +msgid "Upload file types" +msgstr "可上傳的檔案類型" + +#. translators: %s: Number of megabytes to limit uploads to. +#: wp-admin/network/settings.php:408 +msgid "Limit total size of files uploaded to %s MB" +msgstr "檔案上傳空間配額: %s MB" + +#: wp-admin/network/settings.php:394 +msgid "The URL for the first comment on a new site." +msgstr "新網站第一則留言的留言者網址。" + +#: wp-admin/network/settings.php:376 +msgid "The author of the first comment on a new site." +msgstr "新網站第一則留言的留言者名稱。" + +#: wp-admin/network/settings.php:367 +msgid "The first comment on a new site." +msgstr "新網站第一則留言的內容。" + +#: wp-admin/network/settings.php:357 +msgid "The first page on a new site." +msgstr "新網站第一個頁面的內容。" + +#: wp-admin/network/settings.php:347 +msgid "The first post on a new site." +msgstr "新網站第一篇文章的內容。" + +#: wp-admin/network/upgrade.php:75 +msgid "All done!" +msgstr "全部完成!" + +#: wp-admin/network/settings.php:217 +msgid "Both sites and user accounts can be registered" +msgstr "開放註冊新使用者帳號及新網站" + +#: wp-admin/network/settings.php:216 +msgid "Logged in users may register new sites" +msgstr "開放已登入的使用者註冊新網站" + +#: wp-admin/network/settings.php:215 +msgid "User accounts may be registered" +msgstr "開放註冊使用者帳號" + +#: wp-admin/network/settings.php:214 +msgid "Registration is disabled" +msgstr "停用註冊功能" + +#: wp-admin/network/settings.php:509 +msgid "Enable administration menus" +msgstr "啟用管理選單" + +#: wp-admin/network/settings.php:399 +msgid "Upload Settings" +msgstr "上傳設定" + +#: wp-admin/network/settings.php:318 +msgid "New Site Settings" +msgstr "新增網站設定" + +#: wp-admin/network/settings.php:200 +msgid "Registration Settings" +msgstr "註冊設定" + +#: wp-admin/network/settings.php:156 +msgid "Operational Settings" +msgstr "一般運作設定" + +#: wp-admin/network/site-new.php:95 +msgid "Missing email address." +msgstr "缺少電子郵件地址。" + +#: wp-admin/network/site-new.php:91 +msgid "Missing or invalid site address." +msgstr "缺少或無效的網站位址。" + +#: wp-admin/network/upgrade.php:126 +msgid "Next Sites" +msgstr "下一批網站" + +#: wp-admin/network/settings.php:402 +msgid "Site upload space" +msgstr "網站上傳空間" + +#: wp-admin/network/settings.php:327 +msgid "The welcome email sent to new site owners." +msgstr "傳送給新網站擁有者的歡迎電子郵件內容。" + +#: wp-admin/network/settings.php:267 +msgid "Users are not allowed to register these sites. Separate names by spaces." +msgstr "使用者無法使用這個欄位中的網站名稱註冊網站。請使用空格分隔網站名稱。" + +#: wp-admin/network/settings.php:242 +msgid "Send the network admin an email notification every time someone registers a site or user account" +msgstr "有人註冊新網站或新使用者帳號,便傳送電子郵件通知給多站網路管理員" + +#: wp-admin/includes/network.php:388 wp-admin/network/settings.php:166 +msgid "Network Admin Email" +msgstr "多站網路管理員電子郵件地址" + +#: wp-admin/network/site-new.php:288 +msgid "A new user will be created if the above email address is not in the database." +msgstr "如果在上方欄位中輸入的電子郵件地址在資料庫中查無記錄,便會新增一個新使用者。" + +#: wp-admin/network/site-new.php:280 +msgid "Admin Email" +msgstr "網站管理員電子郵件地址" + +#: wp-admin/network/menu.php:58 wp-admin/network/site-new.php:182 +#: wp-admin/network/site-new.php:192 wp-admin/network/site-new.php:300 +#: wp-admin/network/sites.php:405 +msgid "Add Site" +msgstr "新增網站" + +#: wp-admin/network/settings.php:460 +msgid "Default Language" +msgstr "網站介面預設語言" + +#: wp-admin/network/settings.php:433 +msgid "Max upload file size" +msgstr "上傳檔案大小上限" + +#: wp-admin/network/settings.php:390 +msgid "First Comment URL" +msgstr "第一則留言的留言者網址" + +#: wp-admin/network/settings.php:372 +msgid "First Comment Author" +msgstr "第一則留言的留言者名稱" + +#: wp-admin/network/settings.php:362 +msgid "First Comment" +msgstr "第一則留言" + +#: wp-admin/network/settings.php:352 +msgid "First Page" +msgstr "第一個頁面" + +#: wp-admin/network/settings.php:337 +msgid "The welcome email sent to new users." +msgstr "傳送給新使用者的歡迎電子郵件內容。" + +#: wp-admin/network/settings.php:332 +msgid "Welcome User Email" +msgstr "歡迎新使用者電子郵件" + +#: wp-admin/network/settings.php:322 +msgid "Welcome Email" +msgstr "歡迎電子郵件" + +#: wp-admin/network/settings.php:298 +msgid "Banned Email Domains" +msgstr "封鎖的電子郵件網域名稱" + +#: wp-admin/network/settings.php:273 +msgid "Limited Email Registrations" +msgstr "電子郵件註冊網域名稱限制" + +#: wp-admin/network/settings.php:254 +msgid "Banned Names" +msgstr "禁用的網站名稱" + +#: wp-admin/network/site-users.php:373 +msgid "Add New User" +msgstr "新增使用者" + +#: wp-admin/network/settings.php:235 +msgid "Registration notification" +msgstr "註冊通知" + +#: wp-admin/network/settings.php:202 +msgid "Allow new registrations" +msgstr "註冊開放範圍" + +#: wp-admin/network/site-users.php:296 +msgid "Duplicated username or email address." +msgstr "重複的使用者名稱或電子郵件地址。" + +#: wp-admin/network/user-new.php:41 +msgid "Cannot create an empty user." +msgstr "無法新增沒有資料內容的使用者。" + +#: wp-admin/network/sites.php:109 +msgid "Confirm" +msgstr "確認" \ No newline at end of file diff --git a/languages/admin-zh_TW.l10n.php b/languages/admin-zh_TW.l10n.php new file mode 100644 index 0000000..bbc6dd1 --- /dev/null +++ b/languages/admin-zh_TW.l10n.php @@ -0,0 +1,164 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2026-03-30 17:20:15+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'WordPress - 7.0.x - Development - Administration','language'=>'zh_TW','messages'=>['start of week1'=>'1','default GMT offset or timezone string0'=>'Asia/Taipei','Sorry, you cannot remove your own role.'=>'很抱歉,目前的登入身分沒有移除所屬使用者角色的權限。','To delete media items, click the Bulk select button at the top of the screen. Select any items you wish to delete, then click the Delete permanently button. Clicking the Cancel button takes you back to viewing your media.'=>'如需刪除媒體檔案,請先點擊畫面頂端的 [批次選取] 按鈕並選取要刪除的項目,然後點擊 [永久刪除] 即可刪除媒體檔案。點擊 [取消] 便會返回檢視媒體檔案的畫面。','On this screen, you can update to the latest version of WordPress, as well as update your themes, plugins, and translations.'=>'在這個畫面中,網站管理員可以將 WordPress 核心程式更新至最新版本,同時也能為佈景主題、外掛及語言套件進行更新。','Compatibility with WordPress %s: Not tested'=>'與 WordPress %s 版的相容性: 尚未測試','The Connectors page requires build files. Please run npm install to build the necessary files.'=>'[連接器] 頁面需要 build 資料夾的檔案。請執行 npm install 以建置必要的檔案。','Connectors are not available.'=>'連接器無法使用。','Menu location'=>'選單位置','Upload Media'=>'上傳媒體檔案','%s Published page'=>'%s 個已發佈的頁面','%s Published post'=>'%s 篇已發佈的文章','Opcode cache is not enabled'=>'Opcode 快取尚未啟用','Learn more about OPcache.'=>'進一步了解 OPcache','Opcode cache is enabled'=>'Opcode 快取已啟用','Change these settings'=>'變更這些設定','Unable to determine server time'=>'無法確認主機的伺服器時間','Your site is using a static %s file. WordPress cannot dynamically serve one.'=>'由於這個網站正在使用靜態的 %s 檔案,因此 WordPress 無法動態提供這個檔案。','%s%%'=>'%s%%','%1$s%% of %2$s (%3$s free)'=>'總計 %2$s 的記憶體使用了 %1$s%% (還有 %3$s 可用記憶體)','Opcode cache memory usage'=>'Opcode 快取記憶體使用量','Disabled by configuration'=>'依據組態而停用','Opcode cache'=>'Opcode 快取','Font Library admin page titleFonts'=>'字型','The Font Library requires Gutenberg build files. Please run npm install to build the necessary files.'=>'[字型庫] 需要 Gutenberg 的 build 資料夾的檔案。請執行 npm install 以建置必要的檔案。','Font Library is not available.'=>'[字型庫] 無法使用。','It is likely that this unminified stylesheet will not be served to visitors.'=>'這通常是由於未最小化的樣式表不提供給網站訪客所造成。','There is a minified version of this stylesheet.'=>'這個樣式表具備最小化版本。','Color (Generated)'=>'隨機色彩 (自動產生)','Initials (Generated)'=>'名稱縮寫 (自動產生)','Anyone posts a note'=>'有人發佈注意事項時','Administration Color Scheme'=>'管理後台色彩配置','Search Engine Visibility'=>'搜尋引擎可見度','Your site is hidden from search engines. Consider enabling indexing if this is a public site.'=>'這個網站已在搜尋引擎中隱藏。如果這是公開網站,請考慮啟用搜尋引擎索引功能。','Search engines are discouraged from indexing this site.'=>'這個網站已阻擋搜尋引擎進行索引','Review your visibility settings'=>'查看這個網站的可見度設定','Search engines can crawl and index your site. No action needed.'=>'搜尋引擎可以檢索及索引這個網站。不需進行其他操作。','Search engine indexing is enabled.'=>'搜尋引擎索引功能已啟用','Unable to access the WordPress.org API for Serve Happy.'=>'無法存取 WordPress.org 的 Serve Happy API。','Unable to determine the status of the current PHP version (%s)'=>'無法確認目前 PHP %s 的狀態','Your site is running PHP %s'=>'這個網站執行於 PHP %s 執行環境','Image format transforms'=>'圖片格式轉換','No format transforms defined'=>'沒有定義格式轉換','%s has failed to upload.'=>'上傳 %s 時發生錯誤。','You cannot upgrade because WordPress %2$s requires the %3$s PHP extension.'=>'由於 WordPress %2$s 需要 PHP 的 %3$s 擴充功能,因此無法進行升級。','An error occurred while deleting the theme.'=>'刪除佈景主題時發生錯誤。','Add Theme'=>'安裝佈景主題','WordPress.org takes privacy and transparency very seriously. To learn more about what data is collected, and how it is used, please visit the WordPress.org Privacy Policy.'=>'WordPress.org 非常注重隱私權及資訊透明度。如需進一步了解收集了哪些資料及其使用方式,請造訪 WordPress.org 的〈隱私權政策〉頁面。','WordPress.org takes privacy and transparency very seriously'=>'WordPress.org 非常注重隱私權及資訊透明度','File: %s'=>'檔案: %s','Add User'=>'新增使用者','Add Plugin'=>'安裝外掛','design menu itemDesign'=>'設計','Collapse Main Menu'=>'收合主要選單','Invalid item ID. You can view all media items in the Media Library.'=>'無效的項目 ID。使用者可以在 [媒體庫] 中檢視全部媒體項目。','An error occurred during the upload process.'=>'上傳時發生錯誤。','You cannot install because WordPress %2$s requires the %3$s PHP extension.'=>'由於 WordPress %2$s 需要 PHP 的 %3$s 擴充功能,因此無法進行安裝。','Add Custom Field:'=>'新增自訂欄位:','An error occurred while loading the comparison. Please refresh the page and try again.'=>'載入比較資料時發生錯誤。請重新整理頁面並再試一次。','+ Add Category'=>'+ 新增分類','Does not exist'=>'不存在','robots.txt'=>'robots.txt','WordPress cannot dynamically serve a %s file due to a lack of rewrite rule support.'=>'由於缺少對重新寫入規則的支援,因此 WordPress 無法動態提供 %s 檔案。','Your site is using the dynamic %s file which is generated by WordPress.'=>'這個網站正在使用由 WordPress 產生的動態 %s 檔案。','The active theme does not support uploading a custom header image. Please ensure your theme supports custom headers and try again.'=>'目前使用的佈景主題不支援上傳自訂頁首圖片。請確認要使用的佈景主題支援自訂頁首,然後再試一次。','An error occurred while processing your header image.'=>'處理頁首圖片時發生錯誤。','Please try again or start a new changeset. This changeset cannot be further modified.'=>'請再試一次或開始新的變更集。無法進一步修改這個變更集。','An error occurred while saving your changeset.'=>'儲存變更集時發生錯誤。','Triage Lead'=>'分級團隊負責人','Tech Lead'=>'技術團隊負責人','Default Theme Development Lead'=>'預設佈景主題開發團隊負責人','Default Theme Design Lead'=>'預設佈景主題設計團隊負責人','Performance Lead'=>'效能團隊負責人','Design Lead'=>'設計團隊負責人','Test Lead'=>'測試團隊負責人','Documentation Lead'=>'文件團隊負責人','Editor Triage Lead'=>'編輯分級團隊負責人','Editor Tech Lead'=>'編輯技術團隊負責人','Core Triage Lead'=>'核心程式分級團隊負責人','Core Tech Lead'=>'核心程式技術團隊負責人','Minor Release Lead'=>'產品次要版本發佈負責人','Release Coordination'=>'產品發佈協調','If a dependent plugin is missing some dependencies, its activation button will be disabled until the required dependencies are activated.'=>'當提出相依性要求的項目缺少必須安裝的相依性項目,在必須安裝的相依性項目安裝並啟用前,系統會停用它的 [啟用] 按鈕。','If a required plugin is deleted, a notice will be displayed on the Plugin administration screen informing the user that there is some missing dependencies to install and/or activate. Additionally, each plugin whose dependencies are not met will have an error notice on their plugin row.'=>'一旦刪除附加元件所需的外掛,[外掛] 管理頁面便會顯示相關通知,告知使用者找不到必須安裝的相依性項目必須安裝並啟用。此外,未滿足必須安裝的相依性項目條件的外掛會在外掛資訊列顯示錯誤通知。','Plugin Dependencies aims to make the process of installing and activating add-ons (dependents) and the plugins they rely on (dependencies) consistent and easy.'=>'外掛相依性項目能協助安裝及啟用附加元件 (提出相依性要求的項目) 及附加元件所需的外掛 (必須安裝的相依性項目) 的流程變的一致及簡易。','Dependencies'=>'相依性項目','Comments to display at the top of each page'=>'每頁要顯示於上方的留言','Comments page to display by default'=>'預設顯示的留言頁面','Top level comments per page'=>'每頁最上層留言數量','Break comments into pages'=>'將留言進行分頁','Comment Pagination'=>'留言分頁','Number of levels for threaded (nested) comments'=>'啟用最高等於設定階層數的階層式 (巢狀) 留言功能','Enable threaded (nested) comments'=>'啟用階層式 (巢狀) 留言功能','Close comments when post is how many days old'=>'關閉已超過設定發佈天數的文章中的留言功能','Automatically close comments on old posts'=>'自動關閉舊文章中的留言功能','Menu order updated'=>'選單順序已更新。','Menu parent updated'=>'選單上層項目已更新。','Change revision by using the left and right arrow keys'=>'使用向左鍵及向右鍵變更內容修訂','Select a revision'=>'選取內容修訂','A directory could not be read.'=>'無法讀取目錄。','Database Extension'=>'資料庫擴充功能','Empty value'=>'空值','Max simultaneous file uploads'=>'檔案同時上傳數量上限','Menu Order'=>'選單排序','Menu Parent'=>'選單上層項目','Skip to Editor'=>'前往 [編輯器]','WordPress %s Field Guide'=>'WordPress %s 詳解指南','WordPress %s Release Notes'=>'WordPress %s 版本資訊','The directory does not exist.'=>'目錄不存在。','Common Errors'=>'〈常見錯誤〉線上說明','Documentation on Editing Files'=>'〈編輯檔案〉線上說明','Documentation on Editing Plugins'=>'〈編輯外掛〉線上說明','https://developer.wordpress.org/plugins/settings/settings-api/'=>'https://developer.wordpress.org/plugins/settings/settings-api/','The %1$s setting is unregistered. Unregistered settings are deprecated. See documentation on the Settings API.'=>'[%1$s] 設定已取消註冊。系統會將取消註冊的設定功能淘汰不用。請參考〈Settings API〉線上說明。','https://developer.wordpress.org/advanced-administration/wordpress/update-services/'=>'https://developer.wordpress.org/advanced-administration/wordpress/update-services/','https://developer.wordpress.org/advanced-administration/wordpress/feeds/'=>'https://developer.wordpress.org/advanced-administration/wordpress/feeds/','Documentation on Nginx configuration.'=>'〈NGINX 組態〉線上說明','https://developer.wordpress.org/advanced-administration/server/wordpress-in-directory/'=>'https://developer.wordpress.org/advanced-administration/server/wordpress-in-directory/','Documentation on Site Management'=>'〈網站管理〉線上說明','Type of relationnone'=>'沒有這項關係 (none)','No URL Provided.'=>'沒有提供網址。','https://developer.wordpress.org/advanced-administration/server/file-permissions/'=>'https://developer.wordpress.org/advanced-administration/server/file-permissions/','Package not available.'=>'套件無法使用。','Autoloaded options'=>'自動載入選項','More info about optimizing autoloaded options'=>'進一步了解最佳化選項自動載入','https://developer.wordpress.org/advanced-administration/performance/optimization/#autoloaded-options'=>'https://developer.wordpress.org/advanced-administration/performance/optimization/#autoloaded-options','Your site has %1$s autoloaded options (size: %2$s) in the options table, which could cause your site to be slow. You can review the options being autoloaded in your database and remove any options that are no longer needed by your site.'=>'這個網站在 options 資料表中有 %1$s 自動載入選項 (大小: %2$s),這會造成網站速度變慢。網站管理員可以檢視資料庫中已自動載入的選項,並移除網站不再使用的選項。','Autoloaded options could affect performance'=>'自動載入選項會影響效能','Your site has %1$s autoloaded options (size: %2$s) in the options table, which is acceptable.'=>'這個網站的 options 資料表中有 %1$s 個自動載入選項 (大小: %2$s),仍在可接受範圍內。','Autoloaded options are acceptable'=>'自動載入選項在可接受範圍內','Autoloaded options are configuration settings for plugins and themes that are automatically loaded with every page load in WordPress. Having too many autoloaded options can slow down your site.'=>'自動載入選項是 WordPress 網站會在每個頁面自動載入的外掛及佈景主題的組態設定。如果網站有過多的自動載入選項,會降低這個網站的速度。','https://developer.wordpress.org/advanced-administration/performance/optimization/#persistent-object-cache'=>'https://developer.wordpress.org/advanced-administration/performance/optimization/#persistent-object-cache','https://developer.wordpress.org/advanced-administration/performance/optimization/#caching'=>'https://developer.wordpress.org/advanced-administration/performance/optimization/#caching','Fonts directory size'=>'字型安裝目錄大小','Fonts directory location'=>'字型安裝目錄位置','The fonts directory'=>'fonts 目錄','The following plugins failed to update. If there was a fatal error in the update, the previously installed version has been restored.'=>'下列外掛更新失敗。如果更新時發生嚴重錯誤,便會還原至安裝更新前的版本。','The update for \'%s\' contained a fatal error. The previously installed version has been restored.'=>'代稱為 %s 的外掛其更新包含嚴重錯誤,已還原為之前安裝的版本。','The update for \'%s\' contained a fatal error. The previously installed version could not be restored.'=>'%s 的更新包含嚴重錯誤。無法還原至安裝更新前的版本。','https://developer.wordpress.org/advanced-administration/security/backup/'=>'https://developer.wordpress.org/advanced-administration/security/backup/','If you are a plugin author, you can learn more about how to add the Personal Data Exporter to a plugin.'=>'外掛開發者請參考這篇文章,以進一步了解將使用者個人資料匯出程式加入外掛的方式。','If you are a plugin author, you can learn more about how to add the Personal Data Eraser to a plugin.'=>'外掛開發者請參考這篇文章,以進一步了解將使用者個人資料清除程式加入外掛的方式。','See everything new'=>'查看全部改進項目','https://wordpress.org/download/releases/%s/'=>'https://tw.wordpress.org/download/releases/%s/','For a comprehensive overview of all the new features and enhancements in WordPress %s, please visit the feature-showcase website.'=>'如需進一步了解 WordPress %s 的新功能及改進項目的全面性概觀,請造訪功能展示網站。','And much more'=>'還有更多改進','patterns menu itemPatterns'=>'區塊版面配置','Change Site Icon'=>'變更網站圖示','Error: %1$s requires %2$d plugin to be installed and activated: %3$s.'=>'錯誤: %1$s 需要安裝並啟用 %2$d 個外掛: %3$s。','pluginUpdate Now'=>'立即更新','themeInstall Now'=>'立即安裝','This plugin cannot be activated because required plugins are missing or inactive.'=>'由於必須安裝的相依性外掛找不到或未啟用,因此無法啟用這個外掛。','This plugin is active but may not function correctly because required plugins are missing or inactive.'=>'由於必須安裝的相依性外掛找不到或未啟用,因此這個外掛即使已啟用也無法正確執行。','Requires: %s'=>'必須安裝的相依性項目: %s','Required by: %s'=>'提出相依性要求的項目: %s','Note: This plugin cannot be deactivated or deleted until the plugins that require it are deactivated or deleted.'=>'注意: 在提出相依性要求的外掛停用或刪除前,無法停用或刪除這個外掛。','You cannot deactivate this plugin as other plugins depend on it.'=>'這個外掛是其他外掛的相依性項目,因此無法停用這個外掛。','You cannot delete this plugin as other plugins require it.'=>'這個外掛是其他外掛必須安裝的相依性項目,因此無法刪除這個外掛。','You cannot activate this plugin as it has unmet requirements.'=>'這個外掛未滿足相依性需求,因此無法啟用這個外掛。','You cannot deactivate this plugin as other plugins require it.'=>'這個外掛是其他外掛必須安裝的相依性項目,因此無法停用這個外掛。','pluginDeactivate'=>'停用','pluginNetwork Deactivate'=>'於多站網路中停用','pluginActivate'=>'啟用','Additional plugins are required'=>'需要其他外掛','Site ID'=>'網站 ID','The PHP version on your server is %1$s, however the new theme version requires %2$s.'=>'這個網站的伺服器執行的是 PHP %1$s,但新佈景主題的 PHP 版本需求為 %2$s。','Your WordPress version is %1$s, however the new theme version requires %2$s.'=>'這個網站執行的是 WordPress %1$s,但新佈景主題的 WordPress 版本需求為 %2$s。','pluginNetwork Activate'=>'於多站網路中啟用','%s is already active.'=>'%s 已完成啟用。','pluginInstall Now'=>'立即安裝','Created by a worldwide team of passionate individuals'=>'由許多熱情的社群成員組成的全球團隊所一手打造','Only .zip archives may be uploaded.'=>'僅能上傳 .zip 壓縮檔。','The block widgets require JavaScript. Please enable JavaScript in your browser settings, or activate the Classic Widgets plugin.'=>'區塊小工具需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或啟用傳統小工具外掛。','The block editor requires JavaScript. Please enable JavaScript in your browser settings, or install the Classic Editor plugin.'=>'區塊編輯器需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或安裝傳統編輯器外掛。','The block editor requires JavaScript. Please enable JavaScript in your browser settings, or activate the Classic Editor plugin.'=>'區塊編輯器需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或啟用傳統編輯器外掛。','Add New Site'=>'新增網站','Rotate 180°'=>'旋轉 180 度','Rotate 90° right'=>'向右旋轉 90 度','Rotate 90° left'=>'向左旋轉 90 度','%s pattern moved to the Trash.'=>'%s 個區塊版面配置已移至回收桶。','%s pattern permanently deleted.'=>'%s 個區塊版面配置已永久刪除。','%s pattern updated.'=>'%s 個區塊版面配置已更新。','When using Bulk Edit, you can change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the %sremove button next to its name in the Bulk Edit area that appears.'=>'使用者使用 [批次編輯] 功能時,可以一次變更所選文章的中繼資料 (分類及作者等)。如需將某篇文章從批次編輯群組中移除,請點擊 [批次編輯] 區域中文章標題旁的 %s[移除] 按鈕。','Read the WordPress %s Release Notes for information on installation, enhancements, fixed issues, release contributors, learning resources, and the list of file changes.'=>'閱讀 WordPress %s 版本資訊以進一步了解這個版本的安裝資訊、包含哪些增強功能、問題修正、發佈參與人員、學習資源及檔案變更清單。','Explore the WordPress %s Field Guide. Learn about the changes in this release with detailed developer notes to help you build with WordPress.'=>'請參考最新版 WordPress %s 詳解指南,這份指南列舉了每一項開發者需要了解的注意事項,協助開發者使用 WordPress 建置程式。','Invalid URL format.'=>'無效的網址格式。','The PHP version on your server is %1$s, however the new plugin version requires %2$s.'=>'這個網站的伺服器執行的是 PHP %1$s,但新外掛的 PHP 版本需求為 %2$s。','Your WordPress version is %1$s, however the new plugin version requires %2$s.'=>'這個網站執行的是 WordPress %1$s,但新外掛的 WordPress 版本需求為 %2$s。','https://make.wordpress.org/contribute/'=>'https://make.wordpress.org/contribute/','Updates may take several minutes to complete. If there is no feedback after 5 minutes, or if there are errors please refer to the Help section above.'=>'更新通常需要幾分鐘才能完成。如果開始更新 5 分鐘後系統沒有任何回應,或是發生錯誤,請參考上方的 [使用說明] 區段。','Restore Plugin or Theme'=>'還原外掛或佈景主題','On systems with fewer resources, this may lead to server timeouts or resource limits being reached. If you encounter an issue during the update process, please create a support forum topic and reference Rollback in the issue title.'=>'在資源較少的系統上,這個功能可能會造成伺服器逾時或達到資源限制的上限。如果在更新時遇到問題,請前往技術支援論壇提出協助需求,並參考標題中含有 Rollback (復原) 字彙的問題。','This feature will create a temporary backup of a plugin or theme before it is upgraded. This backup is used to restore the plugin or theme back to its previous state if there is an error during the update process.'=>'這個功能會在升級外掛或佈景主題前,建立外掛或佈景主題暫存備份。更新程序發生錯誤時,這個備份便能將外掛或佈景主題還原至之前的狀態。','The site editor requires JavaScript. Please enable JavaScript in your browser settings.'=>'網站編輯器需要啟用 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定。','https://wordpress.org/documentation/article/customize-permalinks/'=>'https://wordpress.org/documentation/article/customize-permalinks/','In a few words, explain what this site is about. Example: “%s.”'=>'請簡單說明這個網站的內容。範例: %s','Note: Discouraging search engines does not block access to your site — it is up to search engines to honor your request.'=>'注意: 阻擋搜尋引擎進行索引無法阻擋搜尋引擎存取網站,完全取決於搜尋引擎是否遵守相關設定的要求。','New custom field name'=>'新增自訂欄位名稱','Search Media:'=>'搜尋媒體:','Clear Crop'=>'清除裁剪設定','Apply Crop'=>'套用裁剪設定','vertical start position'=>'垂直起始位置','horizontal start position'=>'水平起始位置','Starting Coordinates:'=>'起始座標:','Crop Image'=>'裁剪圖片','Images cannot be scaled to a size larger than the original.'=>'無法將圖片調整至超過原始尺寸。','Save Edits'=>'儲存編輯結果','Cancel Editing'=>'取消編輯','Could not create the destination directory.'=>'無法建立目標目錄。','Table ordered by E-mail.'=>'清單資料依據電子郵件地址排序。','Table ordered by Username.'=>'清單資料依據使用者名稱排序。','Could not delete the temporary backup directory for %s.'=>'無法刪除 %s 的暫存備份目錄。','Could not restore the original version of %s.'=>'無法還原 %s 的原始版本。','Could not move the old version to the %s directory.'=>'無法將舊版移動至 %s 目錄。','Could not create the %s directory.'=>'無法建立 %s 目錄。','Table ordered by Links.'=>'清單資料依據連結排序。','Table ordered by Posts Count.'=>'清單資料依據文章計數排序。','Table ordered by Slug.'=>'清單資料依據代稱排序。','Table ordered by Description.'=>'清單資料依據內容說明排序。','Table ordered hierarchically.'=>'資料清單以階層式方式排序。','Available disk space'=>'可供使用的磁碟空間','Plugin and theme temporary backup directory access'=>'外掛及佈景主題的暫存備份目錄可存取','The %1$s directory does not exist, and the server does not have write permissions in %2$s to create it. This directory is used for plugin and theme updates. Please make sure the server has write permissions in %2$s.'=>'%1$s 目錄不存在。伺服器對 %2$s 沒有寫入權限,因此無法建立這個目錄。這個目錄用於外掛及佈景主題的更新,請確定伺服器對 %2$s 目錄有寫入權限。','The upgrade directory cannot be created'=>'upgrade 目錄無法建立','The %s directory exists but is not writable. This directory is used for plugin and theme updates. Please make sure the server has write permissions to this directory.'=>'%s 目錄已存在但不可寫入。這個目錄用於外掛及佈景主題的更新,請確認伺服器對這個目錄有寫入權限。','The upgrade directory exists but is not writable'=>'upgrade 目錄已存在但不可寫入','The %s directory exists but is not writable. This directory is used to improve the stability of plugin and theme updates. Please make sure the server has write permissions to this directory.'=>'%s 目錄已存在但不可寫入。這個目錄用於改善外掛及佈景主題更新穩定性,請確認伺服器對這個目錄有寫入權限。','The temporary backup directory exists but is not writable'=>'暫存備份目錄已存在但不可寫入','The %s directory exists but is not writable. This directory is used to improve the stability of theme updates. Please make sure the server has write permissions to this directory.'=>'%s 目錄已存在但不可寫入。這個目錄用於改善佈景主題更新穩定性,請確認伺服器對這個目錄有寫入權限。','Theme temporary backup directory exists but is not writable'=>'佈景主題暫存備份目錄已存在但不可寫入','The %s directory exists but is not writable. This directory is used to improve the stability of plugin updates. Please make sure the server has write permissions to this directory.'=>'%s 目錄已存在但不可寫入。這個目錄用於改善外掛更新穩定性,請確認伺服器對這個目錄有寫入權限。','Plugin temporary backup directory exists but is not writable'=>'外掛暫存備份目錄已存在但不可寫入','The %1$s and %2$s directories exist but are not writable. These directories are used to improve the stability of plugin updates. Please make sure the server has write permissions to these directories.'=>'%1$s 及 %2$s 目錄已存在但不可寫入。這個目錄用於改善外掛及佈景主題更新穩定性,請確認伺服器對這些目錄有寫入權限。','Plugin and theme temporary backup directories exist but are not writable'=>'外掛及佈景主題的暫存備份目錄已存在但不可寫入','The %s directory cannot be located.'=>'找不到 %s 目錄。','The %s directory used to improve the stability of plugin and theme updates is writable.'=>'用於改善外掛及佈景主題更新穩定性的 %s 目錄可寫入。','Plugin and theme temporary backup directory is writable'=>'外掛及佈景主題的暫存備份目錄可寫入','Could not determine available disk space for updates.'=>'無法確定是否有可供更新使用的磁碟空間。','Available disk space is critically low, less than %s available. Proceed with caution, updates may fail.'=>'可用的磁碟空間嚴重不足,低於 %s。請小心執行更新,很可能會失敗。','Available disk space is low, less than %s available.'=>'可用的磁碟空間不足,低於 %s。','%s available disk space was detected, update routines can be performed safely.'=>'已偵測到 %s 的可用磁碟空間,可安全執行常規更新。','Disk space available to safely perform updates'=>'可供安全執行更新使用的磁碟空間','Table ordered by Hierarchical Menu Order and Title.'=>'清單資料依據階層式選單順序及標題排序。','Table ordered by Title.'=>'清單資料依據標題排序。','Table ordered by Date.'=>'清單資料依據日期排序。','Table ordered by Comments.'=>'清單資料依據留言排序。','Table ordered by Uploaded To.'=>'清單資料依據關聯內容排序。','Table ordered by Author.'=>'清單資料依據作者名稱排序。','Table ordered by File Name.'=>'清單資料依據檔案名稱排序。','Descending.'=>'遞減','Ascending.'=>'遞增','Sort descending.'=>'遞減排序','Sort ascending.'=>'遞增排序','Table ordered by Rating.'=>'清單資料依據評分排序。','Table ordered by Visibility.'=>'清單資料依據可見度排序。','Table ordered by URL.'=>'清單資料依據網址排序。','Table ordered by Name.'=>'清單資料依據名稱排序。','Current Server time'=>'目前伺服器時間','Current UTC time'=>'目前 UTC 時間','Current time'=>'目前時間','Ordered by Comment Date, descending.'=>'依留言發佈日期遞減排序','Table ordered by Post Replied To.'=>'資料清單依據回應目標排序。','Table ordered by Comment Author.'=>'清單資料依據留言者名稱排序。','Attempting to restore the previous version.'=>'正在嘗試還原至先前版本。','More details.'=>'更多詳細資料','Find your team →'=>'參與合適的團隊 →','Finding the area that aligns with your skills and interests is the first step toward meaningful contribution. With more than 20 Make WordPress teams working on different parts of the open source WordPress project, there’s a place for everyone, no matter what your skill set is.'=>'找到與個人能力及興趣相符的領域,是讓參與更有意義的第一步。WordPress 的開放原始碼專案,總計有超過 20 個不同領域的 Make WordPrees 團隊參與其中,無論個人具備的能力為何,都能在其中找到歸屬之地。','Shape the future of the web with WordPress'=>'使用 WordPress 塑造網路的未來','WordPress app: Kotlin, Java, Swift, Objective-C, Vue, Python, and TypeScript.'=>'WordPress 的 App: Kotlin、Java、Swift、Objective-C、Vue、Python 及 TypeScript。','WordPress Core and Block Editor: HTML, CSS, PHP, SQL, JavaScript, and React.'=>'WordPress 核心程式及區塊編輯器: HTML、CSS、PHP、SQL、JavaScript 及 React。','WordPress embraces new technologies, while being committed to backward compatibility. The WordPress project uses the following languages and libraries:'=>'WordPress 引進新技術的同時,也致力於維護回溯相容性。WordPress 開發專案使用以下程式語言及程式庫:','Contribute to the code, improve the UX, and test the WordPress app.'=>'參與程式碼開發專案、改進使用者體驗,並測試 WordPress 的 App。','Write and submit patches to fix bugs or help build new features.'=>'撰寫並提交能修正程式碼錯誤的修補程式或協助建置新功能。','Test new releases and proposed features for the Block Editor.'=>'測試新版區塊編輯器及建議功能。','Find and report bugs in the WordPress core software.'=>'尋找並回報 WordPress 核心程式的程式碼錯誤。','If you do code, or want to learn how, you can contribute technically in numerous ways:'=>'如果你具備撰寫程式碼的能力,或是想要學習撰寫程式碼,可以透過以下方式實際參與:','Code-based contribution'=>'可能需要撰寫程式碼的參與方式','Explore ways to reduce the environmental impact of websites.'=>'研究並探討減少網站對環境產生影響的方法。','Edit videos and add captions to WordPress.tv.'=>'編輯 WordPress.tv 上的影片或為影片加上字幕。','Lend your creative imagination to the WordPress UI design.'=>'將你極具創意的想像力發揮在 WordPress 使用者介面的設計上。','Organize or participate in local Meetups and WordCamps.'=>'舉辦或參與 WordPress 的當地 Meetup 小聚或 WordCamp 活動。','Curate submissions or take photos for the Photo Directory.'=>'為 WordPress 相片目錄整理現有的照片或提供新照片。','Promote the WordPress project to your community.'=>'向所屬社群推廣 WordPress 專案。','Create and improve WordPress educational materials.'=>'建立並改進 WordPress 的教材。','Translate WordPress into your local language.'=>'將 WordPress 本地化為你的母語。','Write or improve documentation for WordPress.'=>'撰寫或改進 WordPress 的線上說明文件。','Share your knowledge in the WordPress support forums.'=>'在 WordPress 技術支援論壇公開分享你的所知所學。','WordPress may thrive on technical contributions, but you don’t have to code to contribute. Here are some of the ways you can make an impact without writing a single line of code:'=>'WordPress 透過社群的技術貢獻成長茁壯,但你不必具備撰寫程式碼的能力便能參與其中。以下便是不需撰寫任何程式碼便能帶來影響的方式:','No-code contribution'=>'不需撰寫程式碼的參與方式','Grow your network and make friends.'=>'拓展人際關係並結交朋友。','Apply your skills or learn new ones.'=>'發揮個人所長或學習新技能。','Be part of a global open source community.'=>'成為全球開放原始碼社群的一分子。','Join the diverse WordPress contributor community and connect with other people who are passionate about maintaining a free and open web.'=>'加入 WordPress 多樣化的社群參與者的行列,便能與致力於維護自由開放網路的成員產生聯繫。','Do you use WordPress for work, for personal projects, or even just for fun? You can help shape the long-term success of the open source project that powers millions of websites around the world.'=>'當你在工作上、個人專案中、甚至只是興趣使然使用了 WordPress,就協助了這個用於建置全球無數網站的開放原始碼專案達成長期成功的目標。','Be the future of WordPress'=>'WordPress 的未來,有你的參與','Learn WordPress is a free resource for new and experienced WordPress users. Learn is stocked with how-to videos on using various features in WordPress, interactive workshops for exploring topics in-depth, and lesson plans for diving deep into specific areas of WordPress.'=>'Learn WordPress 是適合剛入門及已具備一定程度經驗的 WordPress 使用者的開放資源,它的網站資源包含使用 WordPress 各項功能的操作影片、深度探討各種主題的互動式研討會,以及可供深入研究 WordPress 特定領域的教學方案。','Support forums'=>'技術支援論壇','Documentation on Widgets'=>'〈小工具〉線上說明','View takes you to a public author archive which lists all the posts published by the user.'=>'檢視 — 點擊 [檢視] 連結便會進入列出這位使用者發佈的全部文章的作者彙整頁面。','Download file downloads the original media file to your device.'=>'複製檔案 — 點擊 [下載檔案] 便會將原始媒體檔案下載至目前使用的裝置。','site editor title tagEditor'=>'編輯器','Documentation on Auto-updates'=>'〈自動更新外掛及佈景主題〉線上說明','Documentation on date and time formatting.'=>'〈日期及時間格式〉線上說明','You can set the language, and WordPress will automatically download and install the translation files (available if your filesystem is writable).'=>'網站管理員可為網站的前後端介面設定預設語言,語言套件會在設定完成後自動下載安裝。請注意,網站主機的檔案系統必須設定為可寫入。','If you want site visitors to be able to register themselves, check the membership box. If you want the site administrator to register every new user, leave the box unchecked. In either case, you can set a default user role for all new users.'=>'如果網站管理員願意開放讓網站訪客自行註冊帳號,請選取 [成員資格] 核取方塊;如果需要經由網站管理員手動註冊新使用者,請取消選取 [成員資格] 核取方塊。無論是訪客自行註冊或由網站管理員手動註冊,新使用者均會套用在這個頁面中設定的預設使用者角色。','Both WordPress URL and site URL can start with either %1$s or %2$s. A URL starting with %2$s requires an SSL certificate, so be sure that you have one before changing to %2$s. With %2$s, a padlock will appear next to the address in the browser address bar. Both %2$s and the padlock signal that your site meets some basic security requirements, which can build trust with your visitors and with search engines.'=>'[WordPress 位址] 及 [網站位址] 都可以以 %1$s 或 %2$s 開頭。開頭為 %2$s 的網址需要 SSL 憑證,將網址的開頭變更為 %2$s 前,請確認已安裝屬於該網址的 SSL 憑證。開頭為 %2$s 的網址,會在瀏覽器網址列的網址旁顯示鎖頭符號。%2$s 及鎖頭符號都代表這個網站符合某些基本安全性需求,可與網站訪客及搜尋引擎建立可信任的連線。','Though the terms refer to two different concepts, in practice, they can be the same address or different. For example, you can have the core WordPress installation files in the root directory (https://example.com), in which case the two URLs would be the same. Or the WordPress files can be in a subdirectory (https://example.com/wordpress). In that case, the WordPress URL and the site URL would be different.'=>'這 2 個詞彙分屬 2 個不同概念,但在實作中,這兩者可以是相同位址,也可以是不同位址。舉例來說,如果將 WordPress 核心程式檔案安裝於網站根目錄 (https://example.com),這兩個位址就會是相同網址;如果將 WordPress 核心程式檔案安裝於子目錄 (https://example.com/wordpress),[WordPress 位址] 及 [網站位址] 就會是不同網址。','Two terms you will want to know are the WordPress URL and the site URL. The WordPress URL is where the core WordPress installation files are, and the site URL is the address a visitor uses in the browser to go to your site.'=>'網站管理員必須了解 [WordPress 位址] 及 [網站位址] 這 2 個詞彙的定義。[WordPress 位址] 是 WordPress 核心程式檔案的安裝位置,而 [網站位址] 是網站訪客使用瀏覽器瀏覽這個網站的網址。','RoboHash (Generated)'=>'RoboHash (自動產生)','site editor menu itemEditor'=>'編輯器','Allow trackbacks and pingbacks'=>'開放引用通知及自動引用通知','https://wordpress.org/documentation/article/assign-custom-fields/'=>'https://wordpress.org/documentation/article/assign-custom-fields/','https://wordpress.org/documentation/article/what-is-an-excerpt-classic-editor/'=>'https://wordpress.org/documentation/article/what-is-an-excerpt-classic-editor/','%s expects a non-empty string.'=>'%s 必須是非空白字串。','The destination directory already exists and could not be removed.'=>'目的地目錄已存在且無法移除。','The destination folder already exists.'=>'目的資料夾已存在。','The source and destination are the same.'=>'來源位置及目標位置相同。','Expand or collapse the elements by clicking on their headings, and arrange them by dragging their headings or by clicking on the up and down arrows.'=>'點擊畫面元素的標題便可展開或收合,拖放標題或點擊向上或向下箭號即可重新排列順序。','Download “%s”'=>'下載〈%s〉','The "%s" argument must be a non-empty string.'=>'%s 引數必須是非空白字串。','Documentation on Writing and Editing Posts'=>'〈寫作及編輯文章〉線上說明','Documentation on Keyboard Shortcuts'=>'〈鍵盤快捷鍵〉線上說明','Documentation on Comment Spam'=>'〈垃圾留言〉線上說明','Documentation on Customizer'=>'〈外觀自訂器〉線上說明','https://wordpress.org/download/'=>'https://tw.wordpress.org/download/','This is the final release of WordPress %s'=>'這是 WordPress %s 的最後一個發佈版本','Site Editor'=>'網站編輯器','Send password reset sends the user an email with a link to set a new password.'=>'傳送密碼重設連結 — 點擊 [傳送密碼重設連結] 便會傳送一封用於設定新密碼連結的電子郵件給對應的使用者。','https://developer.wordpress.org/apis/wp-config-php/#wp-environment-type'=>'https://developer.wordpress.org/apis/wp-config-php/#wp-environment-type','Copy URL copies the URL for the media file to your clipboard.'=>'複製網址 — 點擊 [複製網址] 便會將媒體檔案的網址複製至剪貼簿。','View will take you to a public display page for that file.'=>'檢視 — 點擊 [檢視] 便會進入這個檔案的公開顯示頁面。','Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached).'=>'永久刪除 — 點擊 [永久刪除] 便會將這個檔案從媒體庫中刪除,與這個檔案有內容關聯的文章也會解除關聯。','Edit takes you to a simple screen to edit that individual file’s metadata. You can also reach that screen by clicking on the media file name or thumbnail.'=>'編輯 — 點擊 [編輯] 便會出現編輯檔案中繼資料的畫面,點擊媒體檔案名稱或縮圖也有一樣的效果。','Hovering over a row reveals action links that allow you to manage media items. You can perform the following actions:'=>'將游標暫留於資料列上,便會顯示能管理媒體項目的操作連結。可以執行的操作如下:','themesBlock Themes'=>'區塊佈景主題','Documentation on Block Themes'=>'〈區塊佈景主題〉線上說明','Block themes'=>'區塊佈景主題','With a block theme, you can place and edit blocks without affecting your content by customizing or creating new templates.'=>'使用區塊佈景主題,便能透過自訂範本或建立新範本放置及編輯區塊,而不會影響網站內容。','A block theme is a theme that uses blocks for all parts of a site including navigation menus, header, content, and site footer. These themes are built for the features that allow you to edit and customize all parts of your site.'=>'區塊佈景主題代表網站全部組件均使用區塊,這些組件包含導覽選單、頁首、內容及網站頁尾。建置區塊佈景主題的目的,是為了讓使用者能編輯及自訂網站的全部組件。','Recommended items are considered beneficial to your site, although not as important to prioritize as a critical issue. They may include improvements in areas such as security, performance, and user experience.'=>'[建議改進項目] 是對這個網站有益的項目,雖然不像 [重大問題] 所列項目那麼亟需解決,但 [建議改進項目] 可能包含如網站安全性、效能及使用者體驗等項目的改進。','Critical issues are items that may have a high impact on your site’s performance or security. Resolving these issues should be prioritized.'=>'[重大問題] 所列的項目,會對這個網站的效能或安全性產生重大影響,應該優先解決這些問題。','Configuration rules for %s:'=>'%s 的組態規則:','Customize permalink structure by selecting available tags'=>'選取可供使用的標籤以自訂永久連結結構','Select the permalink structure for your website. Including the %s tag makes links easy to understand, and can help your posts rank higher in search engines.'=>'選取這個網站要採用的永久連結結構。納入 %s 標籤能讓連結更容易了解,並能協助網站內容在搜尋引擎中有更好的排名。','%s removed from permalink structure'=>'%s 已從永久連結結構中移除','Site Health %s'=>'網站狀態 %s','Theme Styles & Block Settings'=>'佈景主題樣式及區塊設定','The minimum recommended version of PHP is %s.'=>'建議的最低版本需求為 PHP %s。','PHP is one of the programming languages used to build WordPress. Newer versions of PHP receive regular security updates and may increase your site’s performance.'=>'PHP 是用於建置 WordPress 的其中一種程式語言。較新版本的 PHP 能接收定期安全性更新,並且能增進網站效能。','Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress.'=>'這個網站執行於過時版本、WordPress 即將不支援的 PHP %s 執行環境。請確保網站伺服器會儘快更新 PHP 執行環境,否則會無法升級 WordPress。','Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress.'=>'這個網站執行於過時版本、無法接收安全性更新且 WordPress 即將不支援的 PHP %s 執行環境。請確保網站伺服器會儘快更新 PHP 執行環境,否則會無法升級 WordPress。','Persistent object cache'=>'持續物件快取','Page cache'=>'頁面快取','You should use a persistent object cache'=>'這個網站應該使用持續物件快取','Your host appears to support the following object caching services: %s.'=>'這個網站的主機支援所列物件快取服務: %s。','Your hosting provider can tell you if a persistent object cache can be enabled on your site.'=>'這個網站的主機服務提供商可以向網站管理員說明是否有在這個網站上啟用持續物件快取。','A persistent object cache is not required'=>'持續物件快取不是必要項目','Learn more about persistent object caching.'=>'進一步了解持續物件快取','A persistent object cache makes your site’s database more efficient, resulting in faster load times because WordPress can retrieve your site’s content and settings much more quickly.'=>'持續物件快取能提升這個網站的資料庫執行效率,讓 WordPress 可以更快的擷取這個網站的內容及設定,進而縮短載入時間。','A persistent object cache is being used'=>'已使用持續物件快取','A page cache plugin was not detected.'=>'沒有偵測到頁面快取外掛。','A page cache plugin was detected.'=>'已偵測到頁面快取外掛。','There was %d client caching response header detected:'=>'已偵測到 %d 個用戶端快取回應標頭:','No client caching response headers were detected.'=>'沒有偵測到用戶端快取回應標頭。','Median server response time was %1$s milliseconds. It should be less than the recommended %2$s milliseconds threshold.'=>'這個網站的伺服器回應時間中位數為 %1$s 毫秒,這項數值應該要小於建議臨界值 %2$s 毫秒。','Median server response time was %1$s milliseconds. This is less than the recommended %2$s milliseconds threshold.'=>'這個網站的伺服器回應時間中位數為 %1$s 毫秒,小於建議臨界值 %2$s 毫秒。','Server response time could not be determined. Verify that loopback requests are working.'=>'無法判定伺服器回應時間。請確認回送要求是否正常執行。','Page cache is detected but the server response time is still slow'=>'已偵測到這個網站的頁面快取,但伺服器回應時間依舊緩慢','Page cache is not detected and the server response time is slow'=>'沒有偵測到這個網站的頁面快取,且伺服器回應時間緩慢','Page cache is detected and the server response time is good'=>'已偵測到這個網站的頁面快取,且伺服器回應時間良好','Page cache is not detected but the server response time is OK'=>'沒有偵測到這個網站的頁面快取,但伺服器回應時間正常','Unable to detect page cache due to possible loopback request problem. Please verify that the loopback request test is passing. Error: %1$s (Code: %2$s)'=>'由於發生回送要求的問題,因此無法偵測到這個網站的頁面快取。請確認是否通過回送要求測試。錯誤: %1$s (代碼: %2$s)','Unable to detect the presence of page cache'=>'無法偵測到這個網站是否有頁面快取','Learn more about page cache'=>'進一步了解頁面快取','Page cache is detected by looking for an active page cache plugin as well as making three requests to the homepage and looking for one or more of the following HTTP client caching response headers:'=>'透過查詢使用中的頁面快取外掛並向首頁發出 3 個要求,以及查詢以下一或多個 HTTP 用戶端快取回應標頭,便能偵測頁面快取是否存在:','Page cache enhances the speed and performance of your site by saving and serving static pages instead of calling for a page every time a user visits.'=>'頁面快取不需要使用者每次造訪網頁都呼叫對應頁面,而是透過儲存及提供靜態頁面加強這個網站速度及效能。','If you are still seeing this warning after having tried the actions below, you may need to contact your hosting provider for further assistance.'=>'如果在嘗試以下操作後,這個網站仍出現這個警告訊息,請聯絡這個網站的主機服務提供商以取得進一步的協助。','The Authorization header is used by third-party applications you have approved for this site. Without this header, those apps cannot connect to your site.'=>'授權標頭用於網站管理員在這個網站核准使用的第三方應用程式。如果沒有這個標頭,這些應用程式無法連線至這個網站。','When testing the REST API, an unexpected result was returned:'=>'測試 REST API 時傳回未預期的結果:','REST API Response: (%1$s) %2$s'=>'REST API 回應: (%1$s) %2$s','REST API Endpoint: %s'=>'REST API 端點: %s','When testing the REST API, an error was encountered:'=>'測試 REST API 時發生錯誤:','Your site is running on an outdated version of PHP (%s), which does not receive security updates. It should be updated.'=>'這個網站執行於過時版本、無法接收安全性更新的 PHP %s 執行環境。伺服器管理員應該更新 PHP 執行環境。','Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress.'=>'這個網站執行於過時版本、無法接收安全性更新且 WordPress 即將不支援的 PHP %s 執行環境。','Requirements'=>'環境需求','Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress.'=>'這個網站執行於過時版本、WordPress 即將不支援的 PHP %s 執行環境。','Your site does not have any installed themes.'=>'這個網站尚未安裝任何佈景主題。','Your site does not have any active plugins.'=>'這個網站沒有任何已啟用的外掛。','Another attempt will be made with the next release.'=>'下一個版本發佈時會進行另一次嘗試。','The %1$s constant is defined as %2$s'=>'%1$s 常數已定義為 %2$s。','The %1$s argument must be a non-empty string for %2$s.'=>'[%2$s] 的 %1$s 必須是非空白字串。','The %s argument must be an array.'=>'%s 引數必須是陣列。','- %1$s version %2$s%3$s'=>'- %1$s %2$s,網址為 %3$s','- %1$s (from version %2$s to %3$s)%4$s'=>'- %1$s (從 %2$s 到 %3$s),網址為 %4$s','Reach out to WordPress Core developers to ensure you\'ll never have this problem again.'=>'聯絡 WordPress 核心程式開發者以確保這個網站不會再遇到這個問題。','Important! Your version of WordPress (%1$s) will stop receiving security updates in the near future. To keep your site secure, please update to the latest version of WordPress.'=>'重要通知!這個網站的 WordPress %1$s 在不久後會停止接收安全性更新,如需持續維護網站安全性,請更新至最新版本的 WordPress。','Important! Your version of WordPress (%1$s) is no longer supported, you will not receive any security updates for your website. To keep your site secure, please update to the latest version of WordPress.'=>'重要通知!這個網站的 WordPress %1$s 已不再受到支援,且無法再接收任何安全性更新。如需持續維護網站安全性,請更新至最新版本的 WordPress。','https://make.wordpress.org/core/wordpress-%s-field-guide/'=>'https://make.wordpress.org/core/wordpress-%s-field-guide/','Learn more about WordPress %s'=>'進一步了解 WordPress %s 版的相關資訊','Please type your comment text.'=>'請輸入留言內容。','You cannot remove users.'=>'目前的登入身分沒有移除使用者的權限。','Application passwords grant access to the %2$s site on the network as you have Super Admin rights.'=>'應用程式密碼會將存取權授予多站網路中你有多站網路管理員權限的全部 %2$s 個網站。','WordPress has been updated! Next and final step is to update your database to the newest version.'=>'WordPress 已完成更新!接下來的最後一步,系統必須將這個網站的資料庫更新至最新版本。','Documentation on Managing Themes'=>'〈管理佈景主題〉線上說明','This information is being used to create a %s file.'=>'這些資訊會用於建立 %s 檔案。','Welcome to WordPress. Before getting started, you will need to know the following items.'=>'歡迎使用 WordPress。進行安裝時,安裝人員必須能夠提供安裝程式下列資訊。','Settings save failed.'=>'設定儲存失敗。','After your Privacy Policy page is set, you should edit it.'=>'透過系統功能建立隱私權政策頁面後,請進行必要的內容編輯。','Error: Your %1$s file is not writable, so updating it automatically was not possible. These are the mod_rewrite rules you should have in your %1$s file. Click in the field and press %3$s (or %4$s on Mac) to select all.'=>'錯誤: 這個網站的 %1$s 檔案不是可寫入狀態,導致系統無法自動更新檔案,因此網站管理員必須手動在 %1$s 檔案中加入 mod_rewrite 規則。請點擊下方文字欄位並按下 %3$s (macOS 為按下 %4$s) 進行全選。','Error: Your %1$s file is not writable, so updating it automatically was not possible. This is the URL rewrite rule you should have in your %1$s file. Click in the field and press %3$s (or %4$s on Mac) to select all. Then insert this rule inside of the %5$s element in %1$s file.'=>'錯誤: 這個網站的 %1$s 檔案不是可寫入狀態,導致系統無法自動更新檔案,因此網站管理員必須手動在 %1$s 檔案中加入網址重新寫入規則。請點擊下方文字欄位並按下 %3$s (macOS 為按下 %4$s) 進行全選,然後將這個規則插入 %1$s 檔案的 %5$s 元素中。','An avatar is an image that can be associated with a user across multiple websites. In this area, you can choose to display avatars of users who interact with the site.'=>'個人頭像就是跨網站與使用者能產生關聯的圖片。網站管理員可以在這裡選取使用者與網站互動時要顯示的個人頭像。','Change Permalink Structure'=>'變更永久連結結構','Howdy, + +A site administrator (###USERNAME###) recently requested to have the +administration email address changed on this site: +###SITEURL### + +To confirm this change, please click on the following link: +###ADMIN_URL### + +You can safely ignore and delete this email if you do not want to +take this action. + +This email has been sent to ###EMAIL### + +Regards, +All at ###SITENAME### +###SITEURL###'=>'你好, + +使用者名稱為 ###USERNAME### 的網站管理員最近要求變更這個網站的網站管理員電子郵件地址: +###SITEURL### + +如需確認這項變更,請點擊以下連結: +###ADMIN_URL### + +如果不想進行變更操作,可以直接忽略並刪除這封電子郵件。 + +這封電子郵件已傳送至 ###EMAIL### + +敬祝安好, +《###SITENAME###》網站管理員 +###SITEURL###','Where your data is sent'=>'這個網站會將使用者資料傳送至何處','Copy “%s” URL to clipboard'=>'複製〈%s〉的網址至剪貼簿','Some data that describes the error your site encountered has been put together.'=>'說明這個網站遇到的問題的資料已整合在一起。','An attempt was made, but your site could not be updated automatically.'=>'系統已進行嘗試,但是這個網站無法自動更新。','The update cannot be installed because some files could not be copied. This is usually due to inconsistent file permissions.'=>'由於無法複製某些檔案,因此無法安裝更新。這個狀況通常是由不正確的檔案權限所造成。','Media — A list of URLs for media files the user uploads.'=>'媒體 — 由使用者上傳的全部媒體的網址清單。','Community Events Location — The IP Address of the user, which populates the Upcoming Community Events dashboard widget with relevant information.'=>'社群活動位置 — 使用者用於即將舉辦的社群活動顯示相關資訊的 IP 位址 (顯示於控制台小工具)。','WordPress collects (but never publishes) a limited amount of data from registered users who have logged in to the site. Generally, these users are people who contribute to the site in some way -- content, store management, and so on. With rare exceptions, these users do not include occasional visitors who might have registered to comment on articles or buy products. The data WordPress retains can include:'=>'WordPress 會從註冊並登入網站的使用者處收集 (但 絕對不會發佈) 有限度的資料。一般來說,網站使用者就是以某種方式 (例如內容、商店管理等) 貢獻內容的人;除了少數例外,這些使用者不包含可能會註冊發佈留言、發佈文章或購買商品的一般訪客。WordPress 會保留的資料列舉如下:','Note: Since this tool only gathers data from WordPress and participating plugins, you may need to do more to comply with export requests. For example, you should also send the requester some of the data collected from or stored with the 3rd party services your organization uses.'=>'注意: 由於這個工具僅會收集 WordPress 及符合規範的外掛的資料,因此網站管理員有可能需要完成更多工作才能符合匯出要求。舉例來說,網站管理員也應該將組織使用的第三方服務收集或儲存的資料傳送給申請者。','Privacy Laws around the world require businesses and online services to provide an export of some of the data they collect about an individual, and to deliver that export on request. The rights those laws enshrine are sometimes called the "Right of Data Portability". It allows individuals to obtain and reuse their personal data for their own purposes across different services. It allows them to move, copy or transfer personal data easily from one IT environment to another.'=>'全世界許多隱私權相關法律會要求企業或線上服務提供匯出已收集使用者個人資料的功能,並依照要求傳送這些資料給使用者;這些法律賦予的權利有時候稱為「資料可攜權」,能讓使用者在不同服務間依照需求獲得並重複使用他們的個人資料,並能輕易讓這些個人資料從某個 IT 環境移動、複製或傳輸至另一個環境。','Comments — WordPress does not delete comments. The software does anonymize (but, again, never publishes) the associated Email Address, IP Address, and User Agent (Browser/OS).'=>'留言 — WordPress 不會刪除使用者發佈的留言,但使用者資料會完成匿名化 (重申一次,絕對不會發佈),包含電子郵件地址、IP 位址及使用者代理程式 (瀏覽器/作業系統)。','WordPress collects (but never publishes) a limited amount of data from logged-in users but then deletes it or anonymizes it. That data can include:'=>'WordPress 會從註冊並登入網站的使用者處收集 (但 絕對不會發佈) 有限度的資料,但隨後會刪除資料或將資料匿名化。這些資料列舉如下:','Note: As this tool only gathers data from WordPress and participating plugins, you may need to do more to comply with erasure requests. For example, you are also responsible for ensuring that data collected by or stored with the 3rd party services your organization uses gets deleted.'=>'注意: 由於這個工具僅會收集 WordPress 及符合規範的外掛的資料,因此網站管理員有可能需要完成更多工作才能符合清除要求。舉例來說,網站管理員也要負責確保刪除由組織使用的第三方服務收集或儲存的資料。','Privacy Laws around the world require businesses and online services to delete, anonymize, or forget the data they collect about an individual. The rights those laws enshrine are sometimes called the "Right to be Forgotten".'=>'全世界許多隱私權相關法律會要求企業或線上服務提供刪除、匿名化或抹除已收集使用者個人資料的功能,這些由法律賦予的權利稱為「被遺忘權」。','This screen is where you manage requests to erase personal data.'=>'這個畫面可以讓網站管理員管理清除使用者個人資料的要求。','This post is being backed up in your browser, just in case.'=>'正在瀏覽器中備份這篇內容,以防萬一。','This will grant access to the %2$s site on the network as you have Super Admin rights.'=>'這項操作會將存取權授予多站網路中你有多站網路管理員權限的全部 %2$s 個網站。','Learn about block themes'=>'進一步了解區塊佈景主題','There is a new kind of WordPress theme, called a block theme, that lets you build the site you’ve always wanted — with blocks and styles.'=>'全新推出的 WordPress 區塊佈景主題,能讓使用者使用區塊及樣式依據需求建置網站。','Discover a new way to build your site.'=>'深入了解建置網站的全新方式','Edit styles'=>'編輯樣式','Tweak your site, or give it a whole new look! Get creative — how about a new color palette or font?'=>'調整網站或賦予全新外觀!使用全新調色盤或字型發揮無限創意!','Switch up your site’s look & feel with Styles'=>'使用 [樣式] 功能變更網站的外觀與風格','Open the Customizer'=>'開啟外觀自訂器','Configure your site’s logo, header, menus, and more in the Customizer.'=>'在外觀自訂器中設定網站標誌、頁首、選單等項目。','Start Customizing'=>'自訂網站外觀','Open site editor'=>'開啟網站編輯器','Design everything on your site — from the header down to the footer, all using blocks and patterns.'=>'上從頁首、下至頁尾,整個網站都可以使用區塊及區塊版面配置設計任何項目。','Customize your entire site with block themes'=>'使用區塊佈景主題自訂整個網站','Add a new page'=>'新增頁面','Block patterns are pre-configured block layouts. Use them to get inspired or create new pages in a flash.'=>'區塊版面配置是預先設計好的區塊外觀樣式。使用區塊版面配置取得靈感或在極短時間內建立全新頁面。','Author rich content with blocks and patterns'=>'使用區塊及區塊版面配置創作豐富的內容','Learn more about the %s version.'=>'進一步了解 %s 版','WordPress is free and open source software'=>'WordPress 是可以自由使用的開放原始碼軟體','Plugin File Editor'=>'外掛檔案編輯器','Theme File Editor'=>'佈景主題檔案編輯器','If this is a development website, you can set the environment type accordingly to enable application passwords.'=>'如果這是開發網站,請設定對應的環境類型以啟用應用程式密碼。','The application password feature requires HTTPS, which is not enabled on this site.'=>'應用程式密碼功能需要 HTTPS 連線,但這個網站並未啟用 HTTPS 連線。','g:i a T'=>'a g:i T','Documentation on Editing Themes'=>'〈編輯佈景主題〉線上說明','Documentation on Site Health tool'=>'〈[網站狀態] 工具〉線上說明','In the Info tab, you will find all the details about the configuration of your WordPress site, server, and database. There is also an export feature that allows you to copy all of the information about your site to the clipboard, to help solve problems on your site when obtaining support.'=>'在 [網站狀態資訊] 分頁中,會顯示這個 WordPress 網站的組態、伺服器及資料庫的全部詳細資訊,同時也提供讓網站管理員可以複製網站資訊至剪貼簿的匯出功能,讓網站需要技術支援時,能提供必要的資訊解決問題。','In the Status tab, you can see critical information about your WordPress configuration, along with anything else that requires your attention.'=>'在 [網站狀態] 分頁中,網站管理員可以檢視這個 WordPress 網站的組態的關鍵資訊,以及需要注意的其他相關資訊。','This screen allows you to obtain a health diagnosis of your site, and displays an overall rating of the status of your installation.'=>'這個畫面可以讓網站管理員取得這個網站的狀態診斷資料,並顯示這個網站狀態的整體評等。','Documentation on Privacy Settings'=>'〈隱私權政策設定〉線上說明','This screen includes suggestions to help you write your own privacy policy. However, it is your responsibility to use these resources correctly, to provide the information required by your privacy policy, and to keep this information current and accurate.'=>'這個畫面包含協助網站管理員撰寫網站專屬隱私權政策的建議。請注意,網站管理員有責任正確使用這些資源,以提供這個網站的隱私權政策所需的‪資訊,並確保資訊的時效性及正確性。','The Privacy screen lets you either build a new privacy-policy page or choose one you already have to show.'=>'[隱私權] 畫面能讓網站管理員建立新的隱私權政策頁面,或選取並使用這個網站已有的隱私權政策頁面。','Individual posts may override these settings. Changes here will only be applied to new posts.'=>'這些設定可於編輯內容時個別設定,內容中的獨立設定值會優先於這裡的全域設定。如果變更這裡的設定,僅會套用至變更後的新文章。','Menu item moved to the top'=>'選單項目已移至頂端。','Menu item removed'=>'選單項目已移除。','The Dashboard is the first place you will come to every time you log into your site. It is where you will find all your WordPress tools. If you need help, just click the “Help” tab above the screen title.'=>'[控制台] 是使用者每次登入網站後會看見的第一個畫面,這個畫面能讓使用者找到 WordPress 網站的全部工具。如需取得協助,請點擊任何頁面標題上方的 [使用說明] 分頁。','Welcome to your WordPress Dashboard!'=>'歡迎使用 WordPress 控制台!','The application ID must be a UUID.'=>'應用程式 ID 必須是 UUID。','Select location'=>'選取位置','Visit plugin site for %s'=>'造訪外掛 %s 的網站','pluginCannot Activate'=>'無法啟用','Max connections number'=>'連線數上限','Max allowed packet size'=>'允許的封包大小上限','Your website appears to use Basic Authentication, which is not currently compatible with application passwords.'=>'這個網站使用基本驗證,這種驗證方式與應用程式密碼不相容。','%1$s “%2$s”'=>'%1$s - %2$s','Template Editing'=>'編輯範本','WordPress comes with some awesome, worldview-changing rights courtesy of its license, the GPL.'=>'WordPress 使用的授權方式為令人驚嘆、改變這個世界對軟體授權看法的 GPL 授權。','Want to see your name in lights on this page?'=>'想要名列這個頁面?','Get involved in WordPress.'=>'了解如何參與 WordPress 專案','WordPress is created by a worldwide team of passionate individuals.'=>'WordPress 是由許多熱情的社群成員組成的全球團隊所一手打造。','%s plugin deactivated during WordPress upgrade.'=>'WordPress 更新期間停用了 %s 外掛。','%1$s %2$s was deactivated due to incompatibility with WordPress %3$s.'=>'由於與 WordPress %3$s 不相容,因此停用了 %1$s %2$s。','%1$s %2$s was deactivated due to incompatibility with WordPress %3$s, please upgrade to %1$s %4$s or later.'=>'由於與 WordPress %3$s 不相容,因此停用了 %1$s %2$s,請升級至 %1$s %4$s 或更新版本。','The Four Freedoms'=>'四項使用自由','themeDelete %s'=>'刪除 %s','themeLive Preview %s'=>'即時預覽 %s','themeCustomize %s'=>'自訂 %s','themeView Theme Details for %s'=>'檢視 %s 佈景主題的詳細資料','Toggle extra menu items'=>'開啟/關閉額外的選單項目','Site Health - %s'=>'網站狀態 - %s','You need to make the file %1$s writable before you can save your changes. See Changing File Permissions for more information.'=>'儲存變更前,請確認 %1$s 檔案為可寫入。請參閱〈變更檔案權限〉,以進一步了解相關資訊。','Rewrite rules:'=>'重新寫入規則:','List of menu items selected for deletion:'=>'已選取的選單項目刪除清單:','Remove Selected Items'=>'移除已選取的項目','Bulk Select'=>'批次選取','Deleted menu item: %s.'=>'已刪除的選單項目: %s。','item %s'=>'[%s] 項目','Themes %s'=>'佈景主題 %s','Unable to encode the personal data for export. Error: %s'=>'無法為匯出的使用者個人資料進行編碼。錯誤: %s','The %s post meta must be an array.'=>'%s 文章中繼資料必須是陣列。','Your site’s health is looking good, but there is still one thing you can do to improve its performance and security.'=>'這個網站的網站狀態良好,但仍有需要網站管理員執行、可改善效能及安全性的項目。','Your site has a critical issue that should be addressed as soon as possible to improve its performance and security.'=>'這個網站有需要盡快解決的重大問題,解決後便能提升網站效能及安全性。','Learn how to browse happy'=>'進一步了解如何獲得優異的瀏覽體驗','Internet Explorer does not give you the best WordPress experience. Switch to Microsoft Edge, or another more modern browser to get the most from your site.'=>'Internet Explorer 無法讓使用者有最佳的 WordPress 體驗。請切換至 Microsoft Edge,或其他更新式的瀏覽器,以便從這個網站獲得最佳體驗。','GD supported file formats'=>'GD 支援的檔案格式','Unable to determine'=>'無法確認','ImageMagick supported file formats'=>'ImageMagick 支援的檔案格式','Imagick version'=>'Imagick 版本','themeUploaded'=>'已上傳版本','pluginReplace current with uploaded'=>'使用已上傳版本取代現有版本','pluginUploaded'=>'已上傳版本','pluginCurrent'=>'目前版本','Please activate the Link Manager plugin to use the link manager.'=>'如需使用連結管理程式,請啟用 Link Manager 外掛。','Create a new Privacy Policy page'=>'建立新的隱私權政策頁面','Send personal data export confirmation email.'=>'傳送使用者個人資料匯出確認電子郵件','This tool helps site owners comply with local laws and regulations by exporting known data for a given user in a .zip file.'=>'這個工具能將提出要求的使用者的現有資料以 ZIP 檔案格式匯出,藉以協助網站擁有者遵守當地法律及法規。','Documentation on Export Personal Data'=>'〈匯出使用者個人資料〉線上說明','Many plugins may collect or store personal data either in the WordPress database or remotely. Any Export Personal Data request should include data from plugins as well.'=>'許多外掛會利用 WordPress 資料庫或遠端方式,進行使用者個人資料的收集或儲存。任何使用者個人資料匯出要求,都應該包含外掛收集的資料。','If you are not sure, check the plugin documentation or contact the plugin author to see if the plugin collects data and if it supports the Data Exporter tool. This information may be available in the Privacy Policy Guide.'=>'如果網站管理員不確定實際狀況,請查閱外掛相關文件或聯絡外掛開發者,以便了解外掛是否收集資料及是否支援資料匯出程式。這項資訊可能會在 [隱私權政策指南] 中提供。','Comments — For user comments, Email Address, IP Address, User Agent (Browser/OS), Date/Time, Comment Content, and Content URL.'=>'留言 — 使用者發佈的留言、電子郵件地址、IP 位址、使用者代理程式 (瀏覽器/作業系統)、日期/時間、留言內容及內容網址。','This screen is where you manage requests for an export of personal data.'=>'這個畫面可以讓網站管理員管理匯出使用者個人資料的要求。','Site URLs could not be switched to HTTPS.'=>'網站網址無法切換至 HTTPS。','Site URLs switched to HTTPS.'=>'網站網址已切換至 HTTPS。','It looks like HTTPS is not supported for your website at this point.'=>'這個網站目前似乎不支援 HTTPS。','Sorry, you are not allowed to update this site to HTTPS.'=>'很抱歉,目前的登入身分沒有將這個網站更新至 HTTPS 的權限。','Password reset links sent to %s user.'=>'密碼重設連結已傳送給 %s 個使用者。','Password reset link sent.'=>'密碼重設連結已傳送。','Send %s a link to reset their password. This will not change their password, nor will it force a change.'=>'將密碼重設連結傳送給「%s」以重設密碼。這不會變更使用者密碼,也不會強制進行變更。','Send Reset Link'=>'傳送重設連結','Policies'=>'政策內容','The Privacy Settings require JavaScript.'=>'隱私權政策設定需要 JavaScript。','Privacy SettingsPolicy Guide'=>'隱私權政策指南','Privacy SettingsSettings'=>'設定','Re-install version %s'=>'重新安裝 %s','Update to latest %s nightly'=>'更新至 %s 版最新每日發佈版本','Send personal data erasure confirmation email.'=>'傳送使用者個人資料清除確認電子郵件','Confirmation email'=>'確認電子郵件','This tool helps site owners comply with local laws and regulations by deleting or anonymizing known data for a given user.'=>'這個工具能刪除或匿名化處理提出要求的使用者的現有資料,藉以協助網站擁有者遵守當地法律及法規。','Documentation on Erase Personal Data'=>'〈清除使用者個人資料〉線上說明','Many plugins may collect or store personal data either in the WordPress database or remotely. Any Erase Personal Data request should delete data from plugins as well.'=>'許多外掛會利用 WordPress 資料庫或遠端方式,進行使用者個人資料的收集或儲存。任何使用者個人資料清除要求,都應該刪除外掛收集的資料。','Plugin Data'=>'外掛資料','If you are not sure, check the plugin documentation or contact the plugin author to see if the plugin collects data and if it supports the Data Eraser tool. This information may be available in the Privacy Policy Guide.'=>'如果網站管理員不確定實際狀況,請查閱外掛相關文件或聯絡外掛開發者,以便了解外掛是否收集資料及是否支援資料清除程式。這項資訊可能會在 [隱私權政策指南] 中提供。','Media — A list of URLs for all media file uploads made by the user.'=>'媒體 — 由使用者上傳的全部媒體的網址清單。','Session Tokens — User login information, IP Addresses, Expiration Date, User Agent (Browser/OS), and Last Login.'=>'工作階段權杖 — 使用者登入資訊、IP 位址、工作階段到期日、使用者代理程式 (瀏覽器/作業系統) 及最後登入時間。','Community Events Location — The IP Address of the user which is used for the Upcoming Community Events shown in the dashboard widget.'=>'社群活動位置 — 使用者用於即將舉辦的社群活動的 IP 位址 (顯示於控制台小工具)。','Profile Information — user email address, username, display name, nickname, first name, last name, description/bio, and registration date.'=>'個人資料相關資訊 — 使用者電子郵件地址、使用者名稱、顯示名稱、暱稱、姓氏、名字、自傳資訊及帳號註冊日期。','Default Data'=>'預設資料','The tool associates data stored in WordPress with a supplied email address, including profile data and comments.'=>'這個工具透過提供的電子郵件地址,將儲存於 WordPress 網站資料庫的資料進行關聯,包含使用者個人資料及留言。','https://make.wordpress.org/community/organize-event-landing-page/'=>'https://make.wordpress.org/community/organize-event-landing-page/','Want more events? Help organize the next one!'=>'想參加更多活動?協助社群舉辦活動','A password reset link was emailed to %s.'=>'密碼重設連結已透過電子郵件傳送給「%s」。','Cannot send password reset, permission denied.'=>'無法傳送密碼重設連結,權限遭拒。','The setting for %1$s is currently configured as 0, this could cause some problems when trying to upload files through plugin or theme features that rely on various upload methods. It is recommended to configure this setting to a fixed value, ideally matching the value of %2$s, as some upload methods read the value 0 as either unlimited, or disabled.'=>'目前 %1$s 的設定值設定為 0,這會造成透過依賴各種上傳方法的外掛或佈景主題上傳檔案時的問題。建議將這項設定變更為固定值,最佳方式是與 %2$s 的設定值保持一致,因為某些上傳方法讀取到設定值為 0 的話,會造成沒有上傳上限或停用上傳功能。','Talk to your web host about supporting HTTPS for your website.'=>'請與網站主機商聯絡,討論關於這個網站的 HTTPS 支援。','Update your site to use HTTPS'=>'更新這個網站以使用 HTTPS','However, your WordPress Address is currently controlled by a PHP constant and therefore cannot be updated. You need to edit your %1$s and remove or update the definitions of %2$s and %3$s.'=>'但是這個網站的 [WordPress 位址] 目前由 PHP 常數控制,因此無法更新。網站管理員必須編輯這個網站的 %1$s,然後移除或更新 %2$s 及 %3$s 的定義。','HTTPS is already supported for your website.'=>'這個網站已支援 HTTPS。','Your WordPress Address and Site Address are not set up to use HTTPS.'=>'這個網站的 [WordPress 位址] 及 [網站位址] 並未設定為 HTTPS。','You are accessing this website using HTTPS, but your WordPress Address and Site Address are not set up to use HTTPS by default.'=>'目前你正以 HTTPS 存取這個網站,但這個網站的 [WordPress 位址] 及 [網站位址] 卻仍為預設值,並未設定為 HTTPS。','Your Site Address is not set up to use HTTPS.'=>'這個網站的 [網站位址] 並未設定為 HTTPS。','Learn more about debugging in WordPress.'=>'進一步了解 WordPress 中的偵錯方式','Send password reset'=>'傳送密碼重設連結','Contact information'=>'聯絡資訊','Copy suggested policy text to clipboard'=>'複製建議的隱私權政策內容至剪貼簿','Directory listing failed.'=>'無法列出目錄。','Search Results'=>'搜尋結果','Invalid request ID when processing personal data to erase.'=>'用於處理清除使用者個人資料的要求 ID 無效。','Invalid request ID when merging personal data to export.'=>'用於合併匯出使用者個人資料的要求 ID 無效。','Unable to archive the personal data export file (HTML format).'=>'無法壓縮使用者個人資料匯出檔 (HTML 格式)。','Unable to archive the personal data export file (JSON format).'=>'無法壓縮使用者個人資料匯出檔 (JSON 格式)。','Unable to open personal data export (HTML report) for writing.'=>'無法開啟使用者個人資料匯出檔 (HTML 報告) 進行資料寫入。','Unable to create personal data export folder.'=>'無法建立使用者個人資料匯出資料夾。','Request added successfully.'=>'要求已成功新增。','Invalid personal data action.'=>'無效的使用者個人資料操作。','Unable to initiate confirmation for personal data request.'=>'無法為使用者個人資料要求初始化資訊。','Your site is running on an outdated version of PHP (%s), which should be updated.'=>'這個網站執行於過時版本、需要進行更新的 PHP %s 執行環境。','PHP Update Recommended'=>'PHP 執行環境建議更新','Your website appears to use Basic Authentication, which is not currently compatible with Application Passwords.'=>'這個網站使用基本驗證,這種驗證方式與應用程式密碼不相容。','https://developer.wordpress.org/rest-api/frequently-asked-questions/#why-is-authentication-not-working'=>'https://developer.wordpress.org/rest-api/frequently-asked-questions/#why-is-authentication-not-working','This site appears to be under version control. Automatic updates are disabled.'=>'由於這個網站由版本控制功能管理,因此自動更新功能已停用。','You are using a development version of WordPress.'=>'這個網站使用了 WordPress 的開發版本。','You can update to the latest nightly build manually:'=>'這個網站可以手動更新至最新版的每日發佈版本組建。','Enable automatic updates for all new versions of WordPress.'=>'啟用 WordPress 全部新版本的自動更新','Switch to automatic updates for maintenance and security releases only.'=>'切換至僅會安裝安全性維護版本的自動更新','Current version: %s'=>'目前版本: %s','This site will not receive automatic updates for new versions of WordPress.'=>'這個網站不會接收 WordPress 新版本的自動更新。','This site is automatically kept up to date with maintenance and security releases of WordPress only.'=>'這個網站僅會自動更新至 WordPress 安全性維護版本。','This site is automatically kept up to date with each new version of WordPress.'=>'這個網站會自動更新至 WordPress 每個最新版本。','WordPress will only receive automatic security and maintenance releases from now on.'=>'WordPress 從現在開始僅會自動接收安全性維護版本。','Automatic updates for all WordPress versions have been enabled. Thank you!'=>'WordPress 全部版本的自動更新已啟用。感謝啟用這項設定。','Site Health Status — Informs you of any potential issues that should be addressed to improve the performance or security of your website.'=>'網站狀態 — 這項功能會通知網站管理員需要進行處理的潛在問題,藉以改善網站的效能或安全性。','Your new password for %s is:'=>'[%s] 的應用程式密碼:','Add Application Password'=>'新增應用程式密碼','Required to create an Application Password, but not to update the user.'=>'這是建立應用程式密碼的必填項目,但這項設定不會變更使用者個人資料。','Go to Updates'=>'前往 [更新]','← Go to Users'=>'← 前往 [使用者]','← Go to editor'=>'← 前往編輯器','Go to Plugin Installer'=>'前往 [安裝外掛]','Go to Importers'=>'前往 [匯入程式]','Go to Theme Installer'=>'前往 [安裝佈景主題]','Go to top'=>'返回頂端','%s could not be located. Please try another nearby city. For example: Kansas City; Springfield; Portland.'=>'系統找不到「%s」這個城市,請試試另一個附近城市的中文或英文名稱。例如: 台中、Taichung、新竹、Hsinchu 等。','You will be returned to the WordPress Dashboard, and no changes will be made.'=>'你將會返回 WordPress 控制台,並且不會產生任何變更。','No, I do not approve of this connection'=>'否,不核准這個連線','You will be given a password to manually enter into the application in question.'=>'你將會取得需要手動輸入的應用程式密碼。','You will be sent to %s'=>'你將會重新導向至 %s','Yes, I approve of this connection'=>'是,核准這個連線','This will grant access to the %2$s site in this installation that you have permissions on.'=>'這項操作會將存取權授予多站網路中你有相關權限的全部 %2$s 個網站。','Would you like to give this application access to your account? You should only do this if you trust the application in question.'=>'是否要授予這個應用程式存取你的帳號的權限?僅有在信任這個應用程式時,才進行這項操作。','Would you like to give the application identifying itself as %s access to your account? You should only do this if you trust the application in question.'=>'是否要授予名為 [%s] 的應用程式存取你的帳號的權限?僅有在信任這個應用程式時,才進行這項操作。','An application would like to connect to your account.'=>'有個應用程式想要連線至你的帳號。','Cannot Authorize Application'=>'無法授權應用程式','The Authorize Application request is not allowed.'=>'目前的登入身分沒有授權應用程式要求的權限。','Authorize Application'=>'授權應用程式','Be sure to save this in a safe location. You will not be able to retrieve it.'=>'請務必將應用程式密碼儲存於安全位置,這個密碼不會再次顯示。','New Application Password Name'=>'請輸入應用程式密碼名稱','Application passwords grant access to the %2$s site in this installation that you have permissions on.'=>'應用程式密碼會將存取權授予多站網路中你有相關權限的全部 %2$s 個網站。','Application passwords allow authentication via non-interactive systems, such as XML-RPC or the REST API, without providing your actual password. Application passwords can be easily revoked. They cannot be used for traditional logins to your website.'=>'應用程式密碼讓非互動式系統如 XML-RPC 或 REST API,可在不須提供個人密碼的狀況下進行驗證,並可隨時撤銷。這個網站的傳統登入方式無法使用應用程式密碼。','Application Passwords'=>'應用程式密碼','Type the new password again.'=>'請再次輸入新密碼。','Set New Password'=>'設定新密碼','Type the password again.'=>'請再次輸入密碼。','You can update from WordPress %1$s to WordPress %3$s manually:'=>'這個網站可以從 WordPress %1$s 手動更新至 WordPress %3$s。','Revoke all application passwords'=>'撤銷全部應用程式密碼','Revoke "%s"'=>'撤銷 [%s]','Revoke'=>'撤銷','Last IP'=>'最後使用 IP 位址','Last Used'=>'最後使用時間','The Site Health check for %1$s has been replaced with %2$s.'=>'%1$s 的 [網站狀態] 檢查已由 %2$s 取代。','Erase personal data'=>'清除個人資料','- %1$s (from version %2$s to %3$s)'=>'- %1$s (從 %2$s 更新至 %3$s)','Current Header Video'=>'目前的頁首視訊','Authorization header'=>'授權標頭','Learn how to configure the Authorization header.'=>'進一步了解如何設定授權標頭','Flush permalinks'=>'重新整理永久連結','The authorization header is invalid'=>'無效的授權標頭','The authorization header is missing'=>'缺少授權標頭','The Authorization header is working as expected'=>'授權標頭如預期般正常執行','Some screen elements can be shown or hidden by using the checkboxes.'=>'使用核取方塊可以顯示或隱藏某些畫面元素。','Screen elements'=>'畫面元素','The URL must be served over a secure connection.'=>'網址必須以安全連線提供。','If you request a password reset, your IP address will be included in the reset email.'=>'如果你提出密碼重設要求,你目前進行連線的 IP 位址會顯示於密碼重設電子郵件中。','No plugins found for: %s.'=>'找不到符合「%s」的外掛。','Complete request'=>'完成要求','Mark export request for “%s” as completed.'=>'標示 %s 的匯出要求為完成。','%d request deleted successfully.'=>'%d 個要求已成功刪除。','%d request failed to delete.'=>'%d 個要求無法刪除。','%d request marked as complete.'=>'%d 個要求已標示為完成。','%d confirmation request re-sent successfully.'=>'%d 個確認要求已成功重新傳送。','%d confirmation request failed to resend.'=>'%d 個確認要求無法重新傳送。','Mark requests as completed'=>'標示要求為完成','Next steps'=>'下一步','Unable to open personal data export file (archive) for writing.'=>'無法開啟使用者個人資料匯出檔 (壓縮檔) 進行資料寫入。','Unable to open personal data export file (JSON report) for writing.'=>'無法開啟使用者個人資料匯出檔 (JSON 報告) 進行資料寫入。','Unable to protect personal data export folder from browsing.'=>'無法保護使用者個人資料匯出資料夾不受瀏覽。','Invalid email address when generating personal data export file.'=>'用於產生使用者個人資料匯出檔的電子郵件地址無效。','Invalid request ID when generating personal data export file.'=>'用於產生使用者個人資料匯出檔的要求 ID 無效。','Unable to generate personal data export file. ZipArchive not available.'=>'無法產生使用者個人資料匯出檔。無法使用 ZipArchive。','Search results for: %s'=>'「%s」的搜尋結果','Note that even when set to discourage search engines, your site is still visible on the web and not all search engines adhere to this directive.'=>'請注意,即使這個網站設定為阻擋搜尋引擎進行檢索,這個網站仍會在網路上公開顯示網站內容,且並非全部搜尋引擎均會遵守這項設定的要求。','You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the checkbox next to “Discourage search engines from indexing this site” and click the Save Changes button at the bottom of the screen.'=>'網站管理員可以決定網站是否要開放漫遊器、內容更新通知服務及自動尋檢程式檢索網站內容。如果需要這些服務忽略這個網站,請啟用 [阻擋搜尋引擎索引這個網站] 這項設定,然後點擊畫面最下方的 [儲存設定] 按鈕。','The "%1$s" value is smaller than "%2$s"'=>'%1$s 的值小於 %2$s','Environment type'=>'環境類型','Auto-updates are only available for plugins recognized by WordPress.org, or that include a compatible update system.'=>'自動更新功能僅適用於 WordPress.org 外掛目錄或相容的更新系統所提供的外掛。','Update Incompatible'=>'更新套件與現有執行環境不相容','This update does not work with your version of WordPress.'=>'這項更新無法執行於目前版本的 WordPress。','This update does not work with your versions of WordPress and PHP.'=>'這項更新無法執行於目前版本的 WordPress 及 PHP 執行環境。','Disallowed Comment Keys'=>'禁止使用的留言關鍵字','Plugin and theme auto-updates'=>'外掛及佈景主題自動更新','There appear to be no issues with plugin and theme auto-updates.'=>'外掛及佈景主題自動更新一切如常。','Auto-updates for themes appear to be disabled. This will prevent your site from receiving new versions automatically when available.'=>'佈景主題自動更新已停用。這個狀況會阻擋這個網站自動接收可用的更新套件。','Auto-updates for plugins appear to be disabled. This will prevent your site from receiving new versions automatically when available.'=>'外掛自動更新已停用。這個狀況會阻擋這個網站自動接收可用的更新套件。','Auto-updates for plugins and themes appear to be disabled. This will prevent your site from receiving new versions automatically when available.'=>'外掛及佈景主題自動更新已停用。這個狀況會阻擋這個網站自動接收可用的更新套件。','Auto-updates for plugins and/or themes appear to be disabled, but settings are still set to be displayed. This could cause auto-updates to not work as expected.'=>'外掛/佈景主題自動更新已停用,但仍設定為顯示更新。這個狀況會造成自動更新執行不如預期。','Your site may have problems auto-updating plugins and themes'=>'這個網站的外掛及佈景主題自動更新發生問題','Plugin and theme auto-updates ensure that the latest versions are always installed.'=>'外掛及佈景主題更新能確保永遠安裝最新版程式碼。','Plugin and theme auto-updates appear to be configured correctly'=>'外掛及佈景主題自動更新設定正確','themeActivate “%s”'=>'啟用 %s','Sorry, you are not allowed to modify plugins.'=>'很抱歉,目前的登入身分沒有修改外掛的權限。','The setting for %1$s is smaller than %2$s, this could cause some problems when trying to upload files.'=>'%1$s 的設定值小於 %2$s,上傳檔案時可能會發生問題。','%1$s is set to %2$s. You won\'t be able to upload files on your site.'=>'%1$s 的值設定為 %2$s。這項設定會導致無法在這個網站上傳檔案。','The %s function has been disabled, some media settings are unavailable because of this.'=>'%s 函式已停用,這會導致某些媒體設定無法使用。','The %1$s directive in %2$s determines if uploading files is allowed on your site.'=>'在 %2$s 中的指示詞 %1$s 的值,決定了這個網站是否能上傳檔案。','Files can be uploaded'=>'檔案可上傳','Max effective file size'=>'有效檔案大小上限','Max size of an uploaded file'=>'上傳單一檔案大小上限','Max size of post data allowed'=>'單次上傳全部檔案大小總計上限','File uploads'=>'檔案上傳','File upload settings'=>'檔案上傳設定','themeCannot Install %s'=>'無法安裝 %s','pluginInstall %s'=>'安裝 %s','themeInstall %s'=>'安裝 %s','themeUpdate %s now'=>'立即更新 %s','- %1$s version %2$s'=>'- %1$s %2$s 版','themeActivated'=>'已啟用','Sorry, you are not allowed to enable themes automatic updates.'=>'很抱歉,目前的登入身分沒有啟用佈景主題自動更新的權限。','This plugin is already installed.'=>'這個外掛已安裝。','pluginUpdate %s now'=>'立即更新 %s','pluginInstall %s now'=>'立即安裝 %s','Dismiss this notice.'=>'關閉這項通知','themeCannot Activate %s'=>'無法啟用 %s','Theme will no longer be auto-updated.'=>'佈景主題不會再自動進行更新。','Theme will be auto-updated.'=>'佈景主題會自動進行更新。','Auto-updates can be enabled or disabled for each individual theme. Themes with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system.'=>'每個佈景主題均可個別啟用或停用自動更新功能。自動更新功能能否正確執行,取決於 WP-Cron 工作排程系統,而已啟用自動更新功能的佈景主題會顯示下次自動更新的預估日期。','Sorry, you are not allowed to disable themes automatic updates.'=>'很抱歉,目前的登入身分沒有停用佈景主題自動更新的權限。','Sorry, you are not allowed to manage plugins automatic updates.'=>'很抱歉,目前的登入身分沒有管理外掛自動更新的權限。','Error in deleting the item.'=>'刪除項目時發生錯誤。','Error in restoring the item from Trash.'=>'從回收桶還原項目時發生錯誤。','Error in moving the item to Trash.'=>'項目移至回收桶時發生錯誤。','Selected plugins will no longer be auto-updated.'=>'選取的外掛不會再自動進行更新。','Selected plugins will be auto-updated.'=>'選取的外掛會自動進行更新。','Plugin will no longer be auto-updated.'=>'外掛不會再自動進行更新。','Plugin will be auto-updated.'=>'外掛會自動進行更新。','Auto-updates can be enabled or disabled for each individual plugin. Plugins with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system.'=>'每個外掛均可個別啟用或停用自動更新功能。自動更新功能能否正確執行,取決於 WP-Cron 工作排程系統,而已啟用自動更新功能的外掛會顯示下次自動更新的預估日期。','Please connect to your network admin to manage plugins automatic updates.'=>'請聯絡這個多站網路的多站網路管理員以管理外掛的自動更新。','The admin email verification page will reappear after %s.'=>'網站管理員電子郵件地址驗證頁面會在 %s後重新出現。','Auto-updates'=>'自動更新','Please note: Third-party themes and plugins, or custom code, may override WordPress scheduling.'=>'請注意,第三方佈景主題、外掛或自訂程式碼,均有可能覆寫 WordPress 的排程工作。','Auto-updates can be enabled or disabled for WordPress major versions and for each individual theme or plugin. Themes or plugins with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system.'=>'WordPress 主要版本、每個佈景主題或外掛均可個別啟用或停用自動更新功能。自動更新功能能否正確執行,取決於 WP-Cron 工作排程系統,而已啟用自動更新功能的佈景主題或外掛會顯示下次自動更新的預估日期。','Important: Before updating, please back up your database and files. For help with updates, visit the Updating WordPress documentation page.'=>'重要提示: 在進行更新前,請先備份這個網站的資料庫及檔案。如需進一步了解更新核心程式相關說明,請參考〈更新 WordPress〉線上說明。','themeCannot Activate'=>'無法啟用','You cannot edit this comment because the associated post is in the Trash. Please restore the post first, then try again.'=>'由於關聯的文章已移至 [回收桶],因此無法編輯這則留言。請先還原這篇文章,然後再試一次。','media itemSuccess'=>'已完成','pluginError: Current WordPress version (%1$s) does not meet minimum requirements for %2$s. The plugin requires WordPress %3$s.'=>'錯誤: 目前使用的 WordPress %1$s 不符合 %2$s 的最低版本需求。這個外掛需要 WordPress %3$s。','pluginError: Current PHP version (%1$s) does not meet minimum requirements for %2$s. The plugin requires PHP %3$s.'=>'錯誤: 目前使用的 PHP %1$s 不符合 %2$s 的最低版本需求。這個外掛需要 PHP %3$s。','pluginError: Current versions of WordPress (%1$s) and PHP (%2$s) do not meet minimum requirements for %3$s. The plugin requires WordPress %4$s and PHP %5$s.'=>'錯誤: 目前使用的 WordPress %1$s 及 PHP %2$s 不符合 %3$s 的最低版本需求。這個外掛需要 WordPress %4$s 及 PHP %5$s。','Invalid data. The item does not exist.'=>'無效的資料。項目不存在。','Invalid data. Unknown type.'=>'無效的資料。未知的類型。','Invalid data. Unknown state.'=>'無效的資料。未知的狀態。','Invalid data. No selected item.'=>'無效的資料。沒有選取的項目。','You cannot reply to a comment on a draft post.'=>'無法回覆發佈狀態為 [草稿] 的文章中的留言。','To manage themes on your site, visit the Themes page: %s'=>'如需管理這個網站的佈景主題,請前往 [佈景主題] 頁面:%s','To manage plugins on your site, visit the Plugins page: %s'=>'如需管理這個網站的外掛,請前往 [外掛] 頁面:%s','These themes are now up to date:'=>'下列佈景主題均為最新版本:','These plugins are now up to date:'=>'下列外掛均為最新版本:','These themes failed to update:'=>'下列佈景主題更新失敗:','Please check your site now. It’s possible that everything is working. If there are updates available, you should update.'=>'請立即檢查這個網站。網站目前仍正常執行,但如有可用的更新,則必須完成更新。','Howdy! Themes failed to update on your site at %s.'=>'你好,網址為 %s 的網站佈景主題更新失敗。','[%s] Some themes have failed to update'=>'《%s》通知:某些佈景主題無法更新','Howdy! Plugins failed to update on your site at %s.'=>'你好,網址為 %s 的網站外掛更新失敗。','[%s] Some plugins have failed to update'=>'《%s》通知:某些外掛無法更新','Howdy! Plugins and themes failed to update on your site at %s.'=>'你好,網址為 %s 的網站外掛及佈景主題更新失敗。','[%s] Some plugins and themes have failed to update'=>'《%s》通知:某些外掛及佈景主題無法更新','Howdy! Some themes have automatically updated to their latest versions on your site at %s. No further action is needed on your part.'=>'你好,網址為 %s 的網站的某些佈景主題已更新至最新版本。你不需要進行任何操作。','[%s] Some themes were automatically updated'=>'《%s》通知:某些佈景主題已自動更新','Howdy! Some plugins have automatically updated to their latest versions on your site at %s. No further action is needed on your part.'=>'你好,網址為 %s 的網站的某些外掛已更新至最新版本。你不需要進行任何操作。','[%s] Some plugins were automatically updated'=>'《%s》通知:某些外掛已自動更新','Howdy! Some plugins and themes have automatically updated to their latest versions on your site at %s. No further action is needed on your part.'=>'你好,網址為 %s 的網站的某些外掛及佈景主題已更新至最新版本。你不需要進行任何操作。','[%s] Some plugins and themes have automatically updated'=>'《%s》通知:某些外掛及佈景主題已自動更新','Move %s box down'=>'將 [%s] 中繼資料區塊下移一位','Move %s box up'=>'將 [%s] 中繼資料區塊上移一位','commentNot spam'=>'標示為非垃圾留言','PHP Sessions'=>'PHP 工作階段','A PHP session was created by a %1$s function call. This interferes with REST API and loopback requests. The session should be closed by %2$s before making any HTTP requests.'=>'%1$s 函式的呼叫建立了一個的 PHP 工作階段,這個 PHP 工作階段可能會影響 REST API 及回送要求。在進行任何 HTTP 要求前,應由 %2$s 關閉這個工作階段。','An active PHP session was detected'=>'已偵測到執行中的 PHP 工作階段','PHP sessions created by a %1$s function call may interfere with REST API and loopback requests. An active session should be closed by %2$s before making any HTTP requests.'=>'由 %1$s 函式呼叫所建立的 PHP 工作階段,可能會影響 REST API 及回送要求。在進行任何 HTTP 要求前,應由 %2$s 關閉使用中的工作階段。','No PHP sessions detected'=>'沒有偵測到 PHP 工作階段','Extended view'=>'延伸檢視','Compact view'=>'精簡檢視','Error: Passwords do not match. Please enter the same password in both password fields.'=>'錯誤: 兩次輸入的密碼不相符。請在兩個密碼欄中輸入相同密碼。','post action/button labelSchedule'=>'排程','No plugins found. Try a different search.'=>'找不到符合條件的外掛,請改用其他條件進行搜尋。','Automatic update scheduled in %s.'=>'自動更新排程會在 %s後執行。','Automatic update overdue by %s. There may be a problem with WP-Cron.'=>'WP-Cron 可能發生問題,導致自動更新已延遲執行,下次執行時間為 %s後。','Automatic update not scheduled. There may be a problem with WP-Cron.'=>'WP-Cron 可能發生問題,導致自動更新無法進行排程。','You are updating a plugin. Be sure to back up your database and files first.'=>'即將更新外掛。請確認已先備份這個網站的資料庫及檔案。','You are uploading an older version of a current plugin. You can continue to install the older version, but be sure to back up your database and files first.'=>'目前上傳的是舊版外掛檔案。網站管理員可以繼續安裝較舊版本,但請確認已先備份這個網站的資料庫及檔案。','Your WordPress version is %1$s, however the uploaded plugin requires %2$s.'=>'這個網站執行的是 WordPress %1$s,但上傳的外掛的 WordPress 版本需求為 %2$s。','The PHP version on your server is %1$s, however the uploaded plugin requires %2$s.'=>'這個網站的伺服器執行的是 PHP %1$s,但上傳的外掛的 PHP 版本需求為 %2$s。','The plugin cannot be updated due to the following:'=>'外掛無法升級。原因:','Plugin name'=>'外掛名稱','Theme downgraded successfully.'=>'佈景主題已成功降級。','Theme downgrade failed.'=>'佈景主題降級失敗。','Downgrading the theme…'=>'正在降級佈景主題...','Updating the theme…'=>'正在升級佈景主題...','The active theme has the following error: "%s".'=>'目前使用的佈景主題發生錯誤: %s。','Enable auto-updates'=>'啟用自動更新','Disable auto-updates'=>'停用自動更新','Disable Auto-updates'=>'停用自動更新','Enable Auto-updates'=>'啟用自動更新','Auto-updates Disabled (%s)'=>'自動更新已停用 (%s)','Auto-updates Enabled (%s)'=>'自動更新已啟用 (%s)','Automatic Updates'=>'自動更新','No plugins are currently available.'=>'目前沒有任何可供使用的外掛。','Restore original image'=>'還原原始圖片','The uploaded file has expired. Please go back and upload it again.'=>'上傳的檔案已到期。請返回並重新上傳檔案。','Cancel and go back'=>'取消並返回','themeReplace installed with uploaded'=>'使用已上傳版本取代已安裝版本','You are updating a theme. Be sure to back up your database and files first.'=>'即將更新佈景主題。請確認已先備份這個網站的資料庫及檔案。','You are uploading an older version of the installed theme. You can continue to install the older version, but be sure to back up your database and files first.'=>'目前上傳的是已安裝的佈景主題舊版檔案。網站管理員可以繼續安裝較舊版本,但請確認已先備份這個網站的資料庫及檔案。','Your WordPress version is %1$s, however the uploaded theme requires %2$s.'=>'這個網站執行的是 WordPress %1$s,但上傳的佈景主題的 WordPress 版本需求為 %2$s。','The PHP version on your server is %1$s, however the uploaded theme requires %2$s.'=>'這個網站的伺服器執行的是 PHP %1$s,但上傳的佈景主題的 PHP 版本需求為 %2$s。','The theme cannot be updated due to the following:'=>'佈景主題無法升級。原因:','(not found)'=>'(找不到上層佈景主題)','Required PHP version'=>'PHP 最低版本需求','Required WordPress version'=>'WordPress 最低版本需求','Theme name'=>'佈景主題名稱','themeCannot Install'=>'無法安裝','Block Editor Patterns'=>'區塊編輯器版面配置','Plugin downgraded successfully.'=>'外掛已成功降級。','Plugin downgrade failed.'=>'外掛降級失敗。','Downgrading the plugin…'=>'正在降級外掛...','Updating the plugin…'=>'正在更新外掛...','Could not remove the current plugin.'=>'無法移除目前版本外掛。','Removing the current plugin…'=>'正在移除目前版本外掛...','Auto-update'=>'自動更新','Auto-updates disabled'=>'自動更新已停用','Auto-updates enabled'=>'自動更新已啟用','Are pretty permalinks supported?'=>'是否支援易於辨識的永久連結','PHP memory limit (only for admin screens)'=>'PHP 可存取的記憶體上限 (僅供管理後台)','Is this site discouraging search engines?'=>'這個網站是否阻擋搜尋引擎進行索引','Wide Blocks'=>'寬幅區塊','Block Editor Styles'=>'區塊編輯器樣式','Spam'=>'垃圾留言','Unable to write to %s file.'=>'無法寫入 %s 檔案。','Error: The %s options page is not in the allowed options list.'=>'錯誤: 在選項允許清單中找不到 [%s] 選項頁面。','Error:'=>'錯誤:','You should update your %s file now.'=>'網站管理員應該立即更新這個網站的 %s 檔案。','This localized version contains both the translation and various other localization fixes.'=>'這個本地化版本包含了語言套件及其他本地化的修正。','Take a look at the %1$d item on the Site Health screen.'=>'請查看在 [網站狀態] 頁面中所列的 %1$d 個項目。','Your site’s health is looking good, but there are still some things you can do to improve its performance and security.'=>'這個網站的網站狀態良好,但仍有一些需要網站管理員執行、可改善效能及安全性的項目。','Great job! Your site currently passes all site health checks.'=>'非常好!這個網站通過目前全部網站狀態檢查。','Your site has critical issues that should be addressed as soon as possible to improve its performance and security.'=>'這個網站有需要盡快解決的重大問題,解決後便能提升網站效能及安全性。','Site health checks will automatically run periodically to gather information about your site. You can also visit the Site Health screen to gather information about your site now.'=>'網站狀態檢查會自動定期執行以收集這個網站的資訊。網站管理員也可以前往 [網站狀態] 頁面,便能立即收集這個網站的資訊。','No information yet…'=>'尚無資訊...','The uploaded file exceeds the %1$s directive in %2$s.'=>'上傳的檔案超過了 %2$s 中 %1$s 參數的設定值。','No comments found in Trash.'=>'在回收桶中找不到符合條件的留言。','File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your %1$s file or by %2$s being defined as smaller than %3$s in %1$s.'=>'檔案內容為空。請上傳含有必要內容的檔案。這個錯誤的成因可能是因為上傳功能已於 %1$s 中停用,或 %1$s 中單次上傳檔案大小總計上限 (%2$s) 的設定值小於上傳單一檔案大小上限 (%3$s) 的設定值。','A test is unavailable'=>'測試功能無法使用','Error: %1$s (%2$s)'=>'錯誤: %2$s (錯誤代碼 %1$s)','Your site is running on an older version of PHP (%s), which should be updated'=>'這個網站執行於較舊版本、需要進行更新的 PHP %s 執行環境','Your site is running on an older version of PHP (%s)'=>'這個網站執行於較舊版本的 PHP %s 執行環境','Your site is running a recommended version of PHP (%s)'=>'這個網站執行於建議版本的 PHP %s 執行環境','No media files found in Trash.'=>'在回收桶中找不到符合條件的媒體檔案。','%1$s %2$d – %3$s %4$d, %5$d'=>'%5$s %1$s %2$s – %3$s %4$s','upcoming events year formatY'=>'Y 年','upcoming events day formatj'=>'j 日','%1$s %2$d–%3$d, %4$d'=>'%4$s %1$s %2$s – %3$s','upcoming events month formatF'=>'n 月','Resend confirmation requests'=>'重新傳送確認要求','Delete requests'=>'刪除要求','Table prefix'=>'資料表前置詞','PHP Default Timezone'=>'PHP 預設時區','PHP default timezone was changed after WordPress loading by a %s function call. This interferes with correct calculations of dates and times.'=>'在 WordPress 系統載入後,%s 函式呼叫的 PHP 預設時區遭到變更,這會影響日期與時間的正確計算。','PHP default timezone is invalid'=>'PHP 預設時區無效','PHP default timezone was configured by WordPress on loading. This is necessary for correct calculations of dates and times.'=>'WordPress 系統載入時完成了 PHP 預設時區的設定,這是日期與時間能正確計算的必要條件。','PHP default timezone is valid'=>'PHP 預設時區有效','The seventh parameter passed to %s should be numeric representing menu position.'=>'傳遞至 %s 的第 7 個參數應該為代表選單位置的數值。','The update cannot be installed because WordPress %1$s requires the %2$s PHP extension.'=>'由於 WordPress %1$s 需要 PHP 的 %2$s 擴充功能,因此無法進行更新。','https://wordpress.org/about/stats/'=>'https://tw.wordpress.org/about/stats/','Documentation on Export'=>'〈匯出〉線上說明','Documentation on Installing Plugins'=>'〈安裝外掛〉線上說明','Documentation on Managing Pages'=>'〈管理頁面〉線上說明','Documentation on Managing Posts'=>'〈管理文章〉線上說明','Documentation on Discussion Settings'=>'〈討論設定〉線上說明','Documentation on Adding New Themes'=>'〈安裝佈景主題〉線上說明','Documentation on Uploading Media Files'=>'〈上傳媒體檔案〉線上說明','Descriptions of Roles and Capabilities'=>'〈使用者角色及其權限〉線上說明','Documentation on Managing Users'=>'〈管理使用者〉線上說明','Documentation on User Profiles'=>'〈使用者個人資料〉線上說明','Documentation on Media Settings'=>'〈媒體設定〉線上說明','Documentation on Import'=>'〈匯入〉線上說明','Documentation on Tools'=>'〈工具〉線上說明','This page allows direct access to your site settings. You can break things here. Please be cautious!'=>'這個頁面能直接存取這個網站的設定,同時也代表設定錯誤會造成網站停擺。請審慎使用!','Format — Post Formats designate how your theme will display a specific post. For example, you could have a standard blog post with a title and paragraphs, or a short aside that omits the title and contains a short text blurb. Your theme could enable all or some of 10 possible formats. Learn more about each post format.'=>'文章格式 — 文章格式決定了佈景主題顯示指定文章的方式。舉例來說,使用者可以撰寫含有標題及段落的標準格式文章,也可以撰寫省略標題、僅有簡短文字簡介的記事格式文章。目前使用的佈景主題可以啟用全部 10 種或其中部分的文章格式。請參閱〈文章格式說明〉以進一步了解相關資訊。','Documentation on Editing Pages'=>'〈編輯頁面〉線上說明','Documentation on Adding New Pages'=>'〈新增頁面〉線上說明','Documentation on Media Library'=>'〈媒體庫〉線上說明','Revisions Management'=>'〈內容修訂管理方式〉線上說明','Documentation on Edit Media'=>'〈編輯媒體檔案〉線上說明','Documentation on Managing Plugins'=>'〈管理外掛〉線上說明','Documentation on Dashboard'=>'〈控制台〉線上說明','Documentation on Adding New Users'=>'〈新增使用者〉線上說明','This page can show you every detail about the configuration of your WordPress website. For any improvements that could be made, see the Site Health Status page.'=>'這個頁面顯示 WordPress 網站組態的各項詳細資料。網站如有需要改進的項目,請參照 [網站狀態] 頁面所列資訊進行。','Results are still loading…'=>'正在載入結果...','Documentation on Using Permalinks'=>'〈使用永久連結〉線上說明','Documentation on Permalinks Settings'=>'〈永久連結設定〉線上說明','Documentation on Updating WordPress'=>'〈更新 WordPress〉線上說明','Documentation on Menus'=>'〈選單〉線上說明','Documentation on Writing Plugins'=>'〈開發外掛〉線上說明','Documentation on Template Tags'=>'〈範本標籤〉線上說明','Documentation on Using Themes'=>'〈使用佈景主題〉線上說明','Documentation on Theme Development'=>'〈佈景主題開發〉線上說明','Documentation on Comments'=>'〈留言〉線上說明','Universal time is %s.'=>'目前的國際標準時間為 %s。','Choose either a city in the same timezone as you or a %s (Coordinated Universal Time) time offset.'=>'請選取與居地同一時區的城市或國際標準時間 (%s) 時區。','Administration Email Address'=>'網站管理員電子郵件地址','Documentation on General Settings'=>'〈一般設定〉線上說明','You need to make this file writable before you can save your changes. See Changing File Permissions for more information.'=>'儲存變更前,請確認這個檔案為可寫入。請參閱〈變更檔案權限〉,以進一步了解相關資訊。','Upload failed. Please reload and try again.'=>'上傳失敗,請再試一次。','Data erasure has failed.'=>'清除個人資料時發生錯誤。','Erasure completed.'=>'個人資料清除已完成。','The attached file cannot be found.'=>'找不到已產生關聯的檔案。','page labelPrivacy Policy Page'=>'隱私權政策頁面','page labelPosts Page'=>'文章頁面','page labelFront Page'=>'靜態首頁','post statusSticky'=>'置頂文章','post statusCustomization Draft'=>'自訂外觀草稿','post statusPassword protected'=>'受密碼保護','The scheduled event, %s, is late to run. Your site still works, but this may indicate that scheduling posts or automated updates may not work as intended.'=>'排程事件 %s 已延遲執行。這個網站仍能如常運作,但這也代表文章排程發佈或自動更新無法如預期般運作。','A scheduled event is late'=>'排程事件已延遲','An HTTPS connection is a more secure way of browsing the web. Many services now have HTTPS as a requirement. HTTPS allows you to take advantage of new features that can increase site speed, improve search rankings, and gain the trust of your visitors by helping to protect their online privacy.'=>'由於 HTTPS 連線是瀏覽網站更安全的方式,因此現在有許多服務都將 HTTPS 設定為必要條件。HTTPS 的新特性能讓網站提供網站訪客線上隱私權保護,藉以提升速度、改善搜尋排名並獲得訪客的信任。','Your version of WordPress (%s) is up to date'=>'這個網站的 WordPress %s 已是最新版本','https://wordpress.org/documentation/article/introduction-to-blogging/#managing-comments'=>'https://wordpress.org/documentation/article/introduction-to-blogging/#managing-comments','https://wordpress.org/documentation/article/introduction-to-blogging/#comments'=>'https://wordpress.org/documentation/article/introduction-to-blogging/#comments','https://wordpress.org/documentation/article/block-themes/'=>'https://wordpress.org/documentation/article/block-themes/','Publish on: %s'=>'發佈時間: %s','Schedule for: %s'=>'預先排程發佈時間: %s','Published on: %s'=>'發佈時間: %s','Scheduled for: %s'=>'排程發佈時間: %s','publish box time formatH:i'=>'a g:i','publish box date formatM j, Y'=>'Y 年 n 月 j 日','The directives (lines) between "BEGIN %1$s" and "END %1$s" are +dynamically generated, and should only be modified via WordPress filters. +Any changes to the directives between these markers will be overwritten.'=>'在含有 BEGIN %1$s 及 END %1$s 標記的這兩行間的指示詞內容為動態產生, +且應僅有 WordPress 篩選器能進行修改。對這兩行間任何指示詞內容的變更, +都會遭到系統覆寫。','All automatic updates are disabled.'=>'全部自動更新已停用。','Database collation'=>'資料庫定序','Database charset'=>'資料庫字元集','Inactive Themes'=>'未啟用的佈景主題','Parent Theme'=>'上層佈景主題','Drop-ins are single files, found in the %s directory, that replace or enhance WordPress features in ways that are not possible for traditional plugins.'=>'檔案位置在 %s 目錄的強化外掛,是用來取代或加強 WordPress 無法透過傳統外掛加入功能的獨立檔案。','personal data group descriptionOverview of export report.'=>'匯出報告概觀','Documentation on Writing Settings'=>'〈寫作設定〉線上說明','Documentation on Tags'=>'〈標籤〉線上說明','Documentation on Categories'=>'〈分類〉線上說明','Your theme determines how content is displayed in browsers. Learn more about feeds.'=>'使用中的佈景主題掌控了內容在瀏覽器中的顯示方式。進一步了解資訊提供','For each post in a feed, include'=>'資訊提供中的文章顯示方式','Warning: these pages should not be the same as your Privacy Policy page!'=>'警告: 不能將隱私權政策頁面設定為靜態頁面。','Documentation on Reading Settings'=>'〈閱讀設定〉線上說明','[%s] Delete My Site'=>'《%s》通知:刪除我的網站','Allow people to submit comments on new posts'=>'開放使用者在新文章中發佈留言','Default post settings'=>'預設文章設定','You can change your profile picture on Gravatar.'=>'使用者可以在 Gravatar 變更個人資料圖片。','Plugin resumed.'=>'外掛已恢復使用。','Selected plugins deactivated.'=>'選取的外掛已完成停用。','Plugin deactivated.'=>'外掛已停用。','Selected plugins activated.'=>'選取的外掛已完成啟用。','Plugin activated.'=>'外掛已啟用。','The selected plugins have been deleted.'=>'選取的外掛已刪除。','The selected plugin has been deleted.'=>'選取的外掛已刪除。','The plugin %1$s has been deactivated due to an error: %2$s'=>'外掛 %1$s 已停用。錯誤原因: %2$s','If you need to tweak more than your theme’s CSS, you might want to try making a child theme.'=>'如果需要修改的項目超過佈景主題 CSS 所能控制的範圍,請先建立子佈景主題再進行修改。','You appear to be making direct edits to your theme in the WordPress dashboard. It is not recommended! Editing your theme directly could break your site and your changes may be lost in future updates.'=>'目前要進行的這項操作可以讓使用者在 WordPress 控制台中直接編輯佈景主題的程式碼,但建議不要進行這項操作。直接修改佈景主題有可能造成網站停擺,且經由修改所得的全部變更均會在佈景主題更新後消失。','draft_length10'=>'10','File does not exist! Please double check the name and try again.'=>'這個檔案不存在!請確認檔案名稱後再試一次。','%1$s needs to be a %2$s object.'=>'%1$s 必須是 %2$s 物件。','You are in recovery mode. This means there may be an error with a theme or plugin. To exit recovery mode, log out or use the Exit button. Exit Recovery Mode'=>'這個網站已進入 [復原模式],這通常代表已啟用的外掛或佈景主題執行時產生錯誤。如需結束 [復原模式],請登出網站或使用離開按鈕。離開復原模式','Site HealthInfo'=>'網站狀態資訊','Site HealthStatus'=>'網站狀態','Themes directory location'=>'佈景主題安裝目錄位置','comment statusClosed'=>'已關閉','%s critical issue'=>'%s 個重大問題','https://wordpress.org/documentation/article/updating-wordpress/'=>'https://wordpress.org/documentation/article/updating-wordpress/','Get help resolving this issue.'=>'取得解決這個問題的相關說明','Learn more about what WordPress requires to run.'=>'進一步了解執行 WordPress 的環境需求','https://wordpress.org/about/requirements/'=>'https://tw.wordpress.org/about/requirements/','The SQL server is a required piece of software for the database WordPress uses to store all your site’s content and settings.'=>'SQL 伺服器是 WordPress 用來儲存這個網站內容及設定的必要資料庫軟體。','PHP modules perform most of the tasks on the server that make your site run. Any changes to these must be made by your server administrator.'=>'PHP 模組執行了在這台伺服器上讓這個網站能夠運作的大多數工作。如需為 PHP 模組進行任何變更,都必須透過這個網站的伺服器管理員進行。','Manage your themes'=>'管理佈景主題','Manage inactive plugins'=>'管理未啟用的外掛','Update your plugins'=>'更新外掛','Manage your plugins'=>'管理外掛','View Privacy Policy Guide.'=>'檢視隱私權政策指南','User Language'=>'使用者偏好的介面語言','The value, %1$s, has either been enabled by %2$s or added to your configuration file. This will make errors display on the front end of your site.'=>'常數 %1$s 已伴隨常數 %2$s 啟用,或已加入這個網站的組態檔案中,這會將錯誤訊息顯示於網站前端。','[%s] Background Update Finished'=>'《%s》通知:背景更新已完成','[%s] Background Update Failed'=>'《%s》通知:背景更新失敗','Plugin could not be resumed because it triggered a fatal error.'=>'由於這個外掛會觸發嚴重錯誤,因此外掛並未恢復使用。','You should remove inactive themes'=>'網站管理員應該移除未啟用的佈景主題','Your site has 1 installed theme, and it is up to date.'=>'這個網站安裝了 1 個佈景主題,且為最新版本。','Your site has 1 active plugin, and it is up to date.'=>'這個網站安裝了 1 個外掛,且為最新版本。','Passed tests'=>'已通過的測試','Sorry, you are not allowed to access site health information.'=>'很抱歉,目前的登入身分沒有存取網站狀態資訊的權限。','Copy site info to clipboard'=>'複製網站狀態資訊至剪貼簿','If you want to export a handy list of all the information on this page, you can use the button below to copy it to the clipboard. You can then paste it in a text file and save it to your device, or paste it in an email exchange with a support engineer or theme/plugin developer for example.'=>'如果網站管理員想要將這個頁面的全部資訊匯出為方便使用的清單,請點擊下方按鈕便能將資訊複製至剪貼簿中。舉例來說,網站管理員可以將這些資訊貼上至文字檔案並儲存於裝置的儲存空間,或是將這些資訊貼上至與技術支援工程師、佈景主題/外掛開發者交換意見的電子郵件中。','The Site Health check requires JavaScript.'=>'[網站狀態] 檢查功能需要啟用瀏覽器的 JavaScript 功能。','Site Health Info'=>'網站狀態資訊','This update does not work with your version of PHP.'=>'這項更新無法執行於目前版本的 PHP 執行環境。','All formats'=>'全部文章格式','Filter by post format'=>'依文章格式篩選','Go to the Plugins screen'=>'前往 [外掛] 頁面','The authenticity of %s could not be verified.'=>'無法驗證 %s 的真實性。','The authenticity of %s could not be verified as no signature was found.'=>'由於找不到簽章,因此無法驗證 %s 的真實性。','The authenticity of %s could not be verified as signature verification is unavailable on this system.'=>'由於在這個系統無法使用簽章驗證,因此無法驗證 %s 的真實性。','Eraser callback is not valid: %s.'=>'清除程式的回呼無效: %s。','Eraser does not include a callback: %s.'=>'清除程式不包含的回呼: %s。','Sorry, you are not allowed to perform this action.'=>'很抱歉,目前的登入身分沒有執行這項操作的權限。','HTTP requests have been blocked by the %1$s constant, with some allowed hosts: %2$s.'=>'HTTP 要求已由常數 %1$s 封鎖,這個網站會封鎖來自外部主機的全部要求,但允許清單內的主機要求不在此限: %2$s。','HTTP requests have been blocked by the %s constant, with no allowed hosts.'=>'%s 常數已封鎖來自外部主機的 HTTP 要求。','You are using a %1$s drop-in which might mean that a %2$s database is not being used.'=>'這個網站目前使用了 %1$s 強化外掛,這代表這個網站可能沒有使用 %2$s 資料庫。','https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions'=>'https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions','The WordPress Hosting Team maintains a list of those modules, both recommended and required, in the team handbook%3$s.'=>'WordPress 主機團隊會在團隊手冊%3$s中維護一份包含建議模組及必要模組的清單。','Performance'=>'效能','Your site has %1$d inactive theme, other than %2$s, the default WordPress theme, and %3$s, your active theme.'=>'除了 WordPress 預設佈景主題 %2$s 及目前使用的佈景主題 %3$s 外,這個網站有 %1$d 個未使用的佈景主題。','You should consider removing any unused themes to enhance your site’s security.'=>'建議移除全部未使用的佈景主題以增加網站安全性。','Your site has %1$d inactive theme, other than %2$s, your active theme.'=>'除了目前使用的佈景主題 %2$s 外,這個網站有 %1$d 個未使用的佈景主題。','Your site has %d inactive theme.'=>'這個網站有 %d 個未使用的佈景主題。','Inactive plugins are tempting targets for attackers. If you are not going to use a plugin, you should consider removing it.'=>'未啟用的外掛對攻擊者而言是相當具有吸引力的目標。如果這個網站有不再使用的外掛,建議將它移除。','Your site has %d inactive plugin.'=>'這個網站有 %d 個未啟用的外掛。','Security'=>'安全性','Erase personal data list'=>'清除個人資料清單','Erase personal data list navigation'=>'清除個人資料清單導覽','Filter erase personal data list'=>'篩選個人資料清單','Export personal data list'=>'匯出個人資料清單','Export personal data list navigation'=>'匯出個人資料清單導覽','Filter export personal data list'=>'篩選匯出個人資料清單','There is a new version of %1$s available, but it does not work with your version of PHP. View version %4$s details or learn more about updating PHP.'=>'%1$s 已有新版本可供下載安裝,但無法執行於目前版本的 PHP 執行環境。檢視 %4$s 版的詳細資料進一步了解更新 PHP 執行環境。','This plugin failed to load properly and is paused during recovery mode.'=>'網站進入 [復原模式] 期間,這個外掛無法正確載入並會遭到系統暫停。','Go to the Themes screen'=>'前往 [佈景主題] 頁面','Total size is not available. Some errors were encountered when determining the size of your installation.'=>'確認網站大小總計時發生錯誤,因此無法顯示正確資料。','The size cannot be calculated. The directory is not accessible. Usually caused by invalid permissions.'=>'由於無法存取目錄,因此無法計算目錄大小,發生這種狀況通常是由不正確的權限所造成。','The directory size calculation has timed out. Usually caused by a very large number of sub-directories and files.'=>'目錄大小計算已逾時,發生這種狀況通常是由大量子目錄及檔案所造成。','These settings alter where and how parts of WordPress are loaded.'=>'下列常數及其設定值會更改 WordPress 的載入位置及方式。','%s item with no issues detected'=>'%s 個未偵測到問題的項目','%s recommended improvement'=>'%s 個建議改進項目','The site health check shows information about your WordPress configuration and items that may need your attention.'=>'[網站狀態] 檢查功能顯示了這個 WordPress 網站的設定及需要注意的項目的相關資訊。','Site Health Status'=>'網站狀態','Everything is running smoothly here.'=>'一切功能均正常執行。','Great job!'=>'非常好!','Secondary menu'=>'次要選單','The loopback request to your site completed successfully.'=>'這個網站的回送要求已成功完成。','The loopback request returned an unexpected http status code, %d, it was not possible to determine if this will prevent features from working as expected.'=>'回送要求傳回未預期的 HTTP 狀態代碼 %d,因此無法確定這是否會導致各項功能無法如預期般運作。','The loopback request to your site failed, this means features relying on them are not currently working as expected.'=>'這個網站的回送要求無法完成,這代表依靠回送要求的功能目前無法如預期般運作。','No scheduled events exist on this site.'=>'這個網站並不包含任何排程事件。','REST API availability'=>'REST API 可用性','Loopback request'=>'回送要求','Debugging enabled'=>'偵錯模式已啟用','HTTP Requests'=>'HTTP 要求','Scheduled events'=>'排程事件','Secure communication'=>'安全通訊','HTTPS status'=>'HTTPS 狀態','PHP Extensions'=>'PHP 擴充功能','Database Server version'=>'資料庫伺服器版本','PHP Version'=>'PHP 版本','Theme Versions'=>'佈景主題版本','Plugin Versions'=>'外掛版本','WordPress Version'=>'WordPress 版本','The REST API did not process the %s query parameter correctly.'=>'REST API 無法正確處理 %s 查詢參數。','The REST API did not behave correctly'=>'REST API 運作不正確','The REST API encountered an unexpected result'=>'REST API 發生未預期的結果','The REST API encountered an error'=>'REST API 發生錯誤','The REST API is one way that WordPress and other applications communicate with the server. For example, the block editor screen relies on the REST API to display and save your posts and pages.'=>'REST API 是 WordPress 及其他應用程式與伺服器進行通訊的一種方式。以區塊編輯器畫面為例,它便是依賴 REST API 顯示及儲存網站上的文章及頁面。','The REST API is available'=>'REST API 目前可供使用','HTTP requests are partially blocked'=>'HTTP 要求已部分封鎖','HTTP requests are blocked'=>'HTTP 要求已封鎖','It is possible for site maintainers to block all, or some, communication to other sites and services. If set up incorrectly, this may prevent plugins and themes from working as intended.'=>'網站維護人員可以封鎖這個網站與其他網站或服務的全部或部分通訊。如果設定不正確,會導致外掛及佈景主題無法如預期般運作。','HTTP requests seem to be working as expected'=>'HTTP 要求如預期般正常執行','Your site could not complete a loopback request'=>'這個網站的回送要求無法完成','Loopback requests are used to run scheduled events, and are also used by the built-in editors for themes and plugins to verify code stability.'=>'回送要求用於執行排程事件,而內建的編輯器使用回送要求驗證佈景主題及外掛的程式碼穩定性。','Your site can perform loopback requests'=>'這個網站能執行回送要求','Background updates may not be working properly'=>'背景更新可能無法正常執行','Background updates are not working as expected'=>'背景更新無法如預期般正常執行','Passed'=>'已通過','Background updates ensure that WordPress can auto-update if a security update is released for the version you are currently using.'=>'當 WordPress 網站採用的核心程式版本有安全性更新發佈時,背景更新可以讓 WordPress 核心程式自動完成更新。','Background updates are working'=>'背景更新正常執行','The scheduled event, %s, failed to run. Your site still works, but this may indicate that scheduling posts or automated updates may not work as intended.'=>'排程事件 %s 執行失敗。這個網站仍能如常運作,但這也代表文章排程發佈或自動更新無法如預期般運作。','A scheduled event has failed'=>'排程事件執行失敗','While trying to test your site’s scheduled events, the following error was returned: %s'=>'測試這個網站的排程事件時,傳回所列錯誤: %s','It was not possible to check your scheduled events'=>'目前無法檢測這個網站的排程事件','Scheduled events are what periodically looks for updates to plugins, themes and WordPress itself. It is also what makes sure scheduled posts are published on time. It may also be used by various plugins to make sure that planned actions are executed.'=>'排程事件會定期為外掛、佈景主題及 WordPress 核心程式檢查有無更新可供使用,它同時也讓排程文章能準時發佈。','Scheduled events are running'=>'排程事件正在執行','Talk to your web host about OpenSSL support for PHP.'=>'請與網站主機商聯絡,討論關於 PHP 的 OpenSSL 支援。','Your site is unable to communicate securely with other services'=>'這個網站無法與其他服務進行安全通訊','Your site can communicate securely with other services'=>'這個網站能與其他服務進行安全通訊','Securely communicating between servers are needed for transactions such as fetching files, conducting sales on store sites, and much more.'=>'伺服器間的安全通訊是擷取檔案、在網路商店進行商品銷售等異動所需要的必要條件。','Learn more about why you should use HTTPS'=>'進一步了解為什麼網站該採用 HTTPS','Your website does not use HTTPS'=>'這個網站並未使用 HTTPS','Your website is using an active HTTPS connection'=>'這個網站正在使用有效的 HTTPS 連線','You are accessing this website using HTTPS, but your Site Address is not set up to use HTTPS by default.'=>'目前你正以 HTTPS 存取這個網站,但這個網站的 [網站位址] 卻仍為預設值,並未設定為 HTTPS。','Your site is set to display errors to site visitors'=>'這個網站設定為會向網站訪客顯示錯誤訊息','The value, %s, has been added to this website’s configuration file. This means any errors on the site will be written to a file which is potentially available to all users.'=>'已將常數 %s 及其設定值加入這個網站的組態檔案中,這代表這個網站的任何錯誤訊息將會記錄在全部使用者可能會存取到的檔案中。','Your site is set to log errors to a potentially public file'=>'這個網站會將錯誤訊息記錄在可能可公開存取的檔案中','Debug mode is often enabled to gather more details about an error or site failure, but may contain sensitive information which should not be available on a publicly available website.'=>'啟用偵錯模式通常用來收集錯誤訊息或網站故障的相關詳細資料,但可能會包含不適合放在公共網站上的敏感資訊。','Your site is not set to output debug information'=>'這個網站設定為不輸出偵錯資訊','Your site is unable to reach WordPress.org at %1$s, and returned the error: %2$s'=>'這個網站無法連線至位於 %1$s 的 WordPress.org。傳回的錯誤訊息: %2$s','Could not reach WordPress.org'=>'這個網站無法連線至 WordPress.org','Communicating with the WordPress servers is used to check for new versions, and to both install and update WordPress core, themes or plugins.'=>'與 WordPress 伺服器進行通訊的目的在於檢查是否有新版本,並可進行安裝及更新 WordPress 核心程式、佈景主題及外掛。','Can communicate with WordPress.org'=>'這個網站可與 WordPress.org 進行連線','WordPress requires %1$s version %2$s or higher. Contact your web hosting company to correct this.'=>'WordPress 需要 %1$s %2$s 或更新版本。請聯絡這個網站的主機服務提供商修正這個問題。','Severely outdated SQL server'=>'嚴重過時的 SQL 伺服器','For optimal performance and security reasons, you should consider running %1$s version %2$s or higher. Contact your web hosting company to correct this.'=>'為了效能最佳化及安全性考量,系統建議執行 %1$s %2$s 或更新版本。請聯絡這個網站的主機服務提供商修正這個問題。','Outdated SQL server'=>'過時的 SQL 伺服器','SQL server is up to date'=>'SQL 伺服器為最新版本','One or more required modules are missing'=>'找不到一或多個必要模組','One or more recommended modules are missing'=>'找不到一或多個建議模組','The optional module, %s, is not installed, or has been disabled.'=>'選用的 %s 模組並未安裝,或是已遭停用。','The required module, %s, is not installed, or has been disabled.'=>'必要的 %s 模組並未安裝,或是已遭停用。','Error'=>'發生錯誤','Required and recommended modules are installed'=>'必須安裝及建議安裝的模組均已安裝','Your site does not have any default theme. Default themes are used by WordPress automatically if anything is wrong with your chosen theme.'=>'這個網站並未安裝預設佈景主題。預設佈景主題的用途,是使用中的佈景主題發生問題時,WordPress 可以自動套用預設佈景主題避免網站停擺。','Have a default theme available'=>'這個網站有可用的預設佈景主題','To enhance your site’s security, you should consider removing any themes you are not using. You should keep %1$s, the default WordPress theme, %2$s, your active theme, and %3$s, its parent theme.'=>'建議移除全部未使用的佈景主題以增加網站安全性。請保留 WordPress 預設佈景主題 %1$s、目前使用的佈景主題 %2$s 及其上層佈景主題 %3$s。','To enhance your site’s security, you should consider removing any themes you are not using. You should keep your active theme, %1$s, and %2$s, its parent theme.'=>'建議移除全部未使用的佈景主題以增加網站安全性。請保留目前使用的佈景主題 %1$s 及其上層佈景主題 %2$s。','You should remove inactive plugins'=>'網站管理員應該移除未啟用的外掛','Your site has %d installed theme, and it is up to date.'=>'這個網站安裝了 %d 個佈景主題,且均為最新版本。','Your site has %d theme waiting to be updated.'=>'這個網站有 %d 個佈景主題需要更新。','You have themes waiting to be updated'=>'這個網站有佈景主題需要進行更新','Themes add your site’s look and feel. It’s important to keep them up to date, to stay consistent with your brand and keep your site secure.'=>'佈景主題控制了網站的外觀與風格。持續為網站更新佈景主題、讓網站外觀與品牌精神保持一致及確保網站安全至關重要。','Your themes are all up to date'=>'這個網站的全部佈景主題均為最新版本','Your site has %d active plugin, and it is up to date.'=>'這個網站有 %d 個已啟用的外掛,且均為最新版本。','Your site has %d plugin waiting to be updated.'=>'這個網站有 %d 個外掛需要進行更新。','You have plugins waiting to be updated'=>'這個網站有外掛需要進行更新','Plugins extend your site’s functionality with things like contact forms, ecommerce and much more. That means they have deep access to your site, so it’s vital to keep them up to date.'=>'外掛能擴充這個網站如聯絡表單、電子商務等功能,這同時代表外掛可以深度存取這個網站,因此持續為網站更新外掛至關重要。','Your plugins are all up to date'=>'這個網站的全部外掛均為最新版本','You are currently running the latest version of WordPress available, keep it up!'=>'這個網站目前執行的是 WordPress 最新版本,請持續為核心程式進行更新。','A new minor update is available for your site. Because minor updates often address security, it’s important to install them.'=>'已有可供這個網站使用的新版次要更新。由於次要更新通常用於解決安全性問題,因此安裝次要更新有其必要性。','A new version of WordPress is available.'=>'新版本的 WordPress 已可供下載安裝。','Install the latest version of WordPress'=>'安裝最新版本的 WordPress','WordPress update available (%s)'=>'WordPress 有可用更新 (%s)','Check for updates manually'=>'手動檢查更新','Unable to check if any new versions of WordPress are available.'=>'目前無法檢查 WordPress 是否有可用的新版本。','WordPress security and maintenance releases are blocked by the %s filter.'=>'WordPress 安全性維護版本已由 %s 篩選器所封鎖。','WordPress security and maintenance releases are blocked by %s.'=>'WordPress 安全性維護版本已由 %s 常數所封鎖。','WordPress development updates are blocked by the %s filter.'=>'WordPress 開發版更新已由 %s 篩選器所封鎖。','WordPress development updates are blocked by the %s constant.'=>'WordPress 開發版更新已由 %s 常數所封鎖。','All of your WordPress files are writable.'=>'這個 WordPress 網站的檔案均可寫入。','Some files are not writable by WordPress:'=>'WordPress 無法寫入的檔案:','This could mean that connections are failing to WordPress.org.'=>'這代表目前無法與 WordPress.org 進行連線。','Couldn\'t retrieve a list of the checksums for WordPress %s.'=>'無法擷取 WordPress %s 版的總和檢查碼清單。','Your installation of WordPress does not require FTP credentials to perform updates.'=>'這個 WordPress 網站執行更新時無須進行 FTP 認證。','(Your site is performing updates over FTP due to file ownership. Talk to your hosting company.)'=>'(由於檔案擁有權的因素,這個網站正透過 FTP 方式進行更新。請與網站主機服務商洽詢。)','Your installation of WordPress prompts for FTP credentials to perform updates.'=>'這個 WordPress 網站執行更新時會提示需要進行 FTP 認證。','No version control systems were detected.'=>'在這個網站上並未偵測到任何版本控制系統。','The folder %1$s was detected as being under version control (%2$s).'=>'偵測到 %1$s 資料夾已納入版本控制 (目錄為 %2$s)。','The folder %1$s was detected as being under version control (%2$s), but the %3$s filter is allowing updates.'=>'偵測到 %1$s 資料夾已納入版本控制 (目錄為 %2$s),而 %3$s 篩選器允許對其進行更新。','A previous automatic background update could not occur.'=>'前次自動背景更新無法順利執行。','The error code was %s.'=>'錯誤代碼為 %s。','When you\'ve been able to update using the "Update now" button on Dashboard > Updates, this error will be cleared for future update attempts.'=>'當網站管理員能在 [控制台]→[更新] 中透過點擊 [立即更新] 按鈕進行更新時,系統會為將來的更新嘗試清除這項錯誤。','You would have received an email because of this.'=>'網站管理員會因此而收到一封電子郵件。','A previous automatic background update ended with a critical failure, so updates are now disabled.'=>'前次自動背景更新因嚴重錯誤而停止,因此更新功能目前已停用。','The %s filter is enabled.'=>'%s 篩選器已啟用。','A plugin has prevented updates by disabling %s.'=>'停用 %s 篩選器便能禁止外掛更新。','The must use plugins directory'=>'mu-plugins 目錄','Theme features'=>'佈景主題特色','Parent theme'=>'上層佈景主題','Author website'=>'開發者網站','(Latest version: %s)'=>'(目前最新版本為 %s 版)','Version %1$s by %2$s'=>'%1$s 版,開發者為 %2$s','No version or author information is available.'=>'沒有可用的版本或開發者資訊。','Server version'=>'伺服器版本','Your %s file contains only core WordPress features.'=>'這個網站的 %s 檔案僅包含 WordPress 核心程式功能。','Custom rules have been added to your %s file.'=>'自訂規則已加入這個網站的 %s 檔案中。','.htaccess rules'=>'.htaccess 規則','Is the Imagick library available?'=>'主機是否提供 Imagick 程式庫','Is SUHOSIN installed?'=>'主機是否已安裝 SUHOSIN','cURL version'=>'cURL 版本','PHP post max size'=>'PHP 單次上傳檔案大小總計上限','Upload max filesize'=>'上傳單一檔案大小上限','Max input time'=>'輸入資料剖析時間上限','PHP memory limit'=>'PHP 可存取的記憶體上限','PHP time limit'=>'PHP 執行時間上限','PHP max input variables'=>'PHP 輸入變數上限','Unable to determine some settings, as the %s function has been disabled.'=>'無法確認某些設定 (例如 %s 函式) 是否遭到停用','Server settings'=>'伺服器設定','PHP SAPI'=>'PHP SAPI','(Does not support 64bit values)'=>'(不支援 64 位元值)','(Supports 64bit values)'=>'(支援 64 位元值)','PHP version'=>'PHP 版本','Unable to determine what web server software is used'=>'無法確認這個網站所採用的網頁伺服器軟體','Web server'=>'網頁伺服器軟體','Unable to determine server architecture'=>'無法確認主機的伺服器架構','Server architecture'=>'伺服器架構','Ghostscript version'=>'Ghostscript 版本','Unable to determine if Ghostscript is installed'=>'無法確認主機是否安裝了 Ghostscript','GD version'=>'GD 版本','Imagick Resource Limits'=>'Imagick 資源限制','ImageMagick version string'=>'ImageMagick 版本字串','ImageMagick version number'=>'ImageMagick 版本號碼','Active editor'=>'已啟用的圖片編輯程式','Total installation size'=>'網站大小總計','Database size'=>'資料庫大小','WordPress directory size'=>'WordPress 安裝目錄大小','WordPress directory location'=>'WordPress 安裝目錄位置','Plugins directory size'=>'外掛安裝目錄大小','Plugins directory location'=>'外掛安裝目錄位置','Themes directory size'=>'佈景主題目錄大小','Theme directory location'=>'佈景主題安裝目錄位置','Uploads directory size'=>'已上傳檔案目錄大小','Uploads directory location'=>'已上傳檔案目錄位置','Unable to reach WordPress.org at %1$s: %2$s'=>'這個網站無法連線至位於 %1$s 的 WordPress.org (%2$s)','WordPress.org is reachable'=>'這個網站可順利連線至 WordPress.org','Communication with WordPress.org'=>'與 WordPress.org 間的通訊狀況','Network count'=>'多站網路數量','Site count'=>'網站數量','User count'=>'可登入使用者人數','The themes directory'=>'themes 目錄','The plugins directory'=>'plugins 目錄','The uploads directory'=>'uploads 目錄','The wp-content directory'=>'wp-content 目錄','Not writable'=>'不可寫入','Writable'=>'可寫入','The main WordPress directory'=>'WordPress 主目錄','Shows whether WordPress is able to write to the directories it needs access to.'=>'下列資訊顯示 WordPress 是否能對需要存取的目錄進行寫入。','Filesystem Permissions'=>'檔案系統權限','Undefined'=>'未定義','WordPress Constants'=>'WordPress 常數','Database'=>'資料庫','The options shown below relate to your server setup. If changes are required, you may need your web host’s assistance.'=>'這個網站的伺服器設定值已顯示於下方。如需變更,請洽詢網站主機服務商要求提供協助。','Server'=>'伺服器','Media Handling'=>'媒體處理','Inactive Plugins'=>'未啟用的外掛','Active Plugins'=>'已啟用的外掛','Must Use Plugins'=>'強制使用的外掛','Active Theme'=>'目前使用的佈景主題','Drop-ins'=>'強化外掛','Directories and Sizes'=>'目錄位置及大小','Is this a multisite?'=>'是否啟用多站網路功能','Default comment status'=>'留言功能目前狀態','Can anyone register on this site?'=>'這個網站是否開放註冊','Is this site using HTTPS?'=>'這個網站是否使用 HTTPS','No permalink structure set'=>'尚未設定永久連結結構','Permalink structure'=>'永久連結結構','Site URL'=>'網站網址','Home URL'=>'首頁網址','Site Health'=>'網站狀態','requestsAll (%s)'=>'全部 (%s)','Show comments cookies opt-in checkbox, allowing comment author cookies to be set'=>'顯示接受留言功能 Cookie 的核取方塊,以便讓系統設定留言者 Cookie','Next theme'=>'下一個佈景主題','Previous theme'=>'上一個佈景主題','If you change this, an email will be sent at your new address to confirm it. The new address will not become active until confirmed.'=>'如果變更了這項設定,系統會傳送一封電子郵件至新地址進行確認。在完成確認前,無法使用新的電子郵件地址。','Theme resumed.'=>'佈景主題已恢復使用。','Theme could not be resumed because it triggered a fatal error.'=>'由於這個佈景主題會觸發嚴重錯誤,因此佈景主題並未恢復使用。','If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'=>'如果網站顯示「headers already sent」訊息、內容訂閱資訊提供產生問題或發生其他問題,請試著停用或移除這個外掛。','The plugin generated %d character of unexpected output during activation.'=>'這個外掛在啟用時產生了 %d 個未預期輸出字元。','Sorry, you are not allowed to resume this plugin.'=>'很抱歉,目前的登入身分沒有恢復使用這個外掛的權限。','WordPress Events and News — Upcoming events near you as well as the latest news from the official WordPress project and the WordPress Planet.'=>'WordPress 活動及新聞 — 這個區塊會顯示使用者居住城市附近是否有即將舉辦的 WordPress 活動、來自 WordPress 官方專案及 WordPress Planet 的最新消息。','You cannot update because WordPress %2$s requires MySQL version %3$s or higher. You are running version %4$s.'=>'由於 WordPress %2$s 需要 MySQL %3$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %4$s 版。','You cannot update because WordPress %2$s requires PHP version %3$s or higher. You are running version %4$s.'=>'由於 WordPress %2$s 需要 PHP %3$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %4$s 版。','Add menu items'=>'新增選單項目','or create a new menu. Do not forget to save your changes!'=>'或為這個網站建立選單。請記得要儲存已進行的變更。','Click the Save Menu button to save your changes.'=>'點擊 [儲存選單] 按鈕以儲存變更。','Edit your menu below, or create a new menu. Do not forget to save your changes!'=>'請在下方編輯這個網站的選單,或為這個網站建立選單。請記得要儲存已進行的變更。','Fill in the Menu Name and click the Create Menu button to create your first menu.'=>'輸入選單名稱並點擊 [建立選單] 按鈕便能建立這個網站的第一個選單。','Create your first menu below.'=>'請在下方建立第一個選單。','You cannot install because WordPress %2$s requires MySQL version %3$s or higher. You are running version %4$s.'=>'由於 WordPress %2$s 需要 MySQL %3$s 或更新版本,因此無法進行安裝。這個網站目前執行的是 %4$s 版。','You cannot install because WordPress %2$s requires PHP version %3$s or higher. You are running version %4$s.'=>'由於 WordPress %2$s 需要 PHP %3$s 或更新版本,因此無法進行安裝。這個網站目前執行的是 %4$s 版。','Learn more about updating PHP'=>'進一步了解更新 PHP 執行環境','What is PHP and how does it affect my site?'=>'什麼是 PHP 執行環境,以及它對網站的影響?','PHP Update Required'=>'PHP 執行環境必須更新','You can find more details and make changes on the Plugins screen.'=>'在 [外掛] 畫面可以找到進一步詳細資料並進行變更。','One or more plugins failed to load properly.'=>'一或多個外掛無法正確載入。','Could not resume the plugin.'=>'無法恢復使用外掛','Custom PHP fatal error handler.'=>'自訂 PHP 嚴重錯誤處理常式。','Custom PHP error message.'=>'自訂 PHP 錯誤訊息。','Could not remove the old translation.'=>'無法移除舊版語言套件。','Removing the old version of the translation…'=>'正在移除舊版語言套件...','Click here to update WordPress.'=>'點擊這裡以更新 WordPress。','Error: This plugin requires a newer version of WordPress.'=>'錯誤: 這個外掛需要較新版本的 WordPress。','Click here to learn more about updating PHP.'=>'點擊這裡以進一步了解更新 PHP 執行環境。','Error: This plugin requires a newer version of PHP.'=>'錯誤: 這個外掛需要較新版本的 PHP 執行環境。','Add widget: %s'=>'新增小工具: %s','Add to: %s'=>'新增至 [%s]','Track %s.'=>'音軌 %s。','My Network'=>'我的多站網路','This plugin does not work with your version of PHP.'=>'這個外掛無法執行於目前版本的 PHP 執行環境。','This plugin does not work with your version of WordPress.'=>'這個外掛無法執行於目前版本的 WordPress。','This plugin does not work with your versions of WordPress and PHP.'=>'這個外掛無法執行於目前版本的 WordPress 及 PHP 執行環境。','https://wordpress.org/documentation/wordpress-version/version-%s/'=>'https://wordpress.org/documentation/wordpress-version/version-%s/','Resume'=>'恢復使用','pluginResume %s'=>'恢復使用 %s','You can find more details and make changes on the Themes screen.'=>'在 [佈景主題] 畫面可以找到進一步詳細資料並進行變更。','One or more themes failed to load properly.'=>'一或多個佈景主題無法正確載入。','Could not resume the theme.'=>'無法恢復使用佈景主題。','Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the default category %s. The default category cannot be deleted.'=>'刪除分類時,不會刪除隸屬於該分類的文章,但是會將這些已無分類的文章指派為〈%s〉這項預設分類。預設分類無法刪除。','The block widgets require JavaScript. Please enable JavaScript in your browser settings, or install the Classic Widgets plugin.'=>'區塊小工具需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或安裝傳統小工具外掛。','A post type mismatch has been detected.'=>'系統偵測到不相符的內容類型。','A post ID mismatch has been detected.'=>'系統偵測到不相符的文章 ID。','Please open the classic editor to use this meta box.'=>'請開啟傳統編輯器以使用這個中繼資料區塊。','Please activate the Classic Editor plugin to use this meta box.'=>'請啟用傳統編輯器以使用這個中繼資料區塊。','Please install the Classic Editor plugin to use this meta box.'=>'請安裝傳統編輯器以使用這個中繼資料區塊。','This meta box is not compatible with the block editor.'=>'這個中繼資料區塊與區塊編輯器不相容。','To distribute copies of your modified versions to others.'=>'將經過修改的版本發佈共享給其他人。','The 4th Freedom'=>'第四項自由','To redistribute.'=>'可重新發佈。','The 3rd Freedom'=>'第三項自由','To study how the program works and change it to make it do what you wish.'=>'學習程式運作原理,並對它加以變更以使它按照個人規劃方式執行。','The 2nd Freedom'=>'第二項自由','To run the program for any purpose.'=>'可將程式執行於任何用途。','The 1st Freedom'=>'第一項自由','Created'=>'建立日期','Welcome to WordPress. This is your first post. Edit or delete it, then start writing!'=>'歡迎使用 WordPress。這是這個網站的第一篇文章,試試為這篇文章進行編輯或直接刪除,然後開始撰寫新文章!','As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!'=>'身為一位新的 WordPress 使用者,請前往控制台刪除這個頁面,並建立屬於自己的頁面。祝使用愉快!','The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.'=>'XYZ Doohickey Comany 成立於 1971 年,公司成立以來,我們一直為大眾提供高品質的網站客製化服務。目前公司位於台北市,有超過 2,000 名員工,並持續為開源社群提供資源及場地。','...or something like this:'=>'或是像這樣:','Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.)'=>'嗨,你好!白天我是一位郵差,晚上則是個滿懷抱負的演員,這是用來展現自我的網站。我住在高雄,養了一隻極通人性的狗叫小黑;最愛喝啤酒,目標是為市面上買的到的所有啤酒都寫一篇評論。','This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:'=>'這是一個範例頁面。頁面與網站文章不同,因為它顯示的位置為固定位置,並且大多數的佈景主題會將它顯示在網站導覽選單中。大多數人會新增一個〈關於〉頁面,以便向網站訪客介紹自己。〈關於〉頁面的內容類似以下示範:','Export “%s” as JSON'=>'將〈%s〉匯出為 JSON 檔案','1 pattern not updated, somebody is editing it.'=>'由於某個使用者正在進行編輯,所以有 1 個區塊版面配置未更新。','%s pattern restored from the Trash.'=>'%s 個區塊版面配置已從回收桶還原。','Error: "Table Prefix" must not be empty.'=>'錯誤: 資料表前置詞不得留空。','This meta box, from the %s plugin, is not compatible with the block editor.'=>'%s 外掛的中繼資料欄位與區塊編輯器不相容。','personal data group labelAbout'=>'關於這份個人資料','page titleAbout'=>'關於 WordPress','Edit or preview your Privacy Policy page content.'=>'編輯預覽這個網站的隱私權政策頁面內容。','Privacy Policy Page'=>'隱私權政策頁面','%s (Draft)'=>'%s (草稿)','Privacy Policy page updated successfully.'=>'隱私權政策頁面已成功更新。','The suggested privacy policy content should be added by using the %s (or later) action. Please see the inline documentation.'=>'建議的隱私權內容必須使用 %s (或更新) 動作加入。請查看檔案內的註解。','The suggested privacy policy content should be added only in wp-admin by using the %s (or later) action.'=>'建議的隱私權內容僅可在 wp-admin 使用 %s (或更新) 動作加入。','The suggested privacy policy text has changed. Please review the guide and update your privacy policy.'=>'隱私權政策的建議內容已變更,請檢閱這份指南並更新這個網站的隱私權政策。','There are no pages.'=>'這個網站尚無任何頁面。','Need help putting together your new Privacy Policy page? Check out the privacy policy guide%3$s for recommendations on what content to include, along with policies suggested by your plugins and theme.'=>'制訂隱私權政策時如需協助,請參考這份隱私權政策指南%3$s,以便了解必要內容的建議,以及針對網站採用的外掛及佈景主題的建議政策。','Privacy Policy Guide'=>'隱私權政策指南','Visitor comments may be checked through an automated spam detection service.'=>'使用者留言資料會傳送至垃圾留言自動偵測服務進行檢查。','In this subsection you should note what analytics package you use, how users can opt out of analytics tracking, and a link to your analytics provider’s privacy policy, if any.'=>'在這個小節中,站方應該說明這個網站使用的使用者資料分析工具、使用者退出分析追蹤的方式,以及指向使用者資料分析服務提供商隱私權政策的連結 (如果有的話)。','In this subsection you should note what information may be disclosed by users who can upload media files. All uploaded files are usually publicly accessible.'=>'在這個小節中,站方應該說明使用者上傳媒體檔案後會公開哪些資訊。一般來說,全部上傳至網站的檔案都可以公開存取。','In this subsection you should note what information is captured through comments. We have noted the data which WordPress collects by default.'=>'在這個小節中,站方應該說明網站會透過使用者留言擷取哪些個人資訊。以下內容說明了 WordPress 預設會收集的個人資訊。','In this section you should note what personal data you collect from users and site visitors. This may include personal data, such as name, email address, personal account preferences; transactional data, such as purchase information; and technical data, such as information about cookies.'=>'在這個章節中,站方應該注意的是從使用者及網站訪客收集了哪些個人資料。這些個人資料可能包含如姓名、電子郵件地址、個人帳戶偏好設定、交易資料 (如購買資訊) 及技術資料 (如 Cookie 中的資訊)。','Suggested text:'=>'建議內容:','The template contains a suggestion of sections you most likely will need. Under each section heading, you will find a short summary of what information you should provide, which will help you to get started. Some sections include suggested policy content, others will have to be completed with information from your theme and plugins.'=>'這份範本包含這個網站的隱私權政策頁面最可能需要的建議章節。在各個章節標題下方,會列出隱私權頁面應該提供哪些資訊的簡短摘要,這對撰寫相關內容應會有所幫助。某些章節會包含建議的隱私權政策內容,其他不含內容的章節則必須使用佈景主題及外掛所提供的內容。','Updated %s.'=>'已於 %s更新','You deactivated this plugin on %s and may no longer need this policy.'=>'這個外掛已在 %s 停用,因此這個網站不再需要這項隱私權政策。','Removed %s.'=>'已於 %s移除。','Introduction'=>'簡介','Need help putting together your new Privacy Policy page? Check out the guide for recommendations on what content to include, along with policies suggested by your plugins and theme.'=>'制訂隱私權政策時如需協助,請參考這份指南,以便了解必要內容的建議,以及針對網站採用的外掛及佈景主題的建議政策。','Erasing data...'=>'正在清除個人資料...','Add Data Erasure Request'=>'新增個人資料清除要求','Send export link'=>'傳送匯出資料連結','If you are a member of a regulated industry, or if you are subject to additional privacy laws, you may be required to disclose that information here.'=>'如果貴單位經營的是受監管行業,或貴單位需要遵守其他隱私權法規的規範,請在這裡公開這些資訊。','Industry regulatory disclosure requirements'=>'監管行業揭露需求','If your website provides a service which includes automated decision making - for example, allowing customers to apply for credit, or aggregating their data into an advertising profile - you must note that this is taking place, and include information about how that information is used, what decisions are made with that aggregated data, and what rights users have over decisions made without human intervention.'=>'如果這個網站提供的服務包含自動化決策 (例如能讓客戶申請信用貸款或將使用者資料進行廣告資料歸戶),站方必須說明網站正在執行這些工作,並說明站方如何使用這些資訊、使用這些歸戶資料做出哪些決策,以及使用者能在沒有人為干預的情況下做出決策的權利。','What automated decision making and/or profiling we do with user data'=>'這個網站對使用者個人資料進行了哪些自動化決策或分析','If your website receives data about users from third parties, including advertisers, this information must be included within the section of your privacy policy dealing with third party data.'=>'如果這個網站會從第三方 (包含廣告客戶) 處收到使用者相關資料,在如何處理第三方資訊的隱私權政策章節中必須說明相關資訊。','What third parties we receive data from'=>'這個網站會從第三方接收哪些個人資料','In this section you should explain what procedures you have in place to deal with data breaches, either potential or real, such as internal reporting systems, contact mechanisms, or bug bounties.'=>'在這個章節中,站方應該說明網站已採取哪些措施處理潛在或實際的資料外洩,例如內部報告系統、相關聯絡機制或資安弱點獎金計畫。','What data breach procedures we have in place'=>'這個網站會採取的個人資料外洩處理程序','In this section you should explain what measures you have taken to protect your users’ data. This could include technical measures such as encryption; security measures such as two factor authentication; and measures such as staff training in data protection. If you have carried out a Privacy Impact Assessment, you can mention it here too.'=>'在這個章節中,站方應該說明為保護使用者資料所採取的措施,這些措施包含資料加密、兩步驟驗證、以及對員工進行資料保護訓練。如果貴單位已經進行過隱私風險評估,也可以在這裡簡短說明。','How we protect your data'=>'這個網站保護個人資料的方式','If you use your site for commercial purposes and you engage in more complex collection or processing of personal data, you should note the following information in your privacy policy in addition to the information we have already discussed.'=>'如果站方將這個網站用於商業目的,並且站方對個人資料進行更複雜的收集或處理,除了上述已經討論過的資訊外,站方還應該在隱私權政策中說明以下資訊。','Additional information'=>'其他資訊','In this section you should provide a contact method for privacy-specific concerns. If you are required to have a Data Protection Officer, list their name and full contact details here as well.'=>'在這個章節中,站方應該提供針對隱私特定問題的聯絡方式。如果貴單位設有資料保護長,請在這裡列出其姓名及完整的聯絡方式。','European data protection law requires data about European residents which is transferred outside the European Union to be safeguarded to the same standards as if the data was in Europe. So in addition to listing where data goes, you should describe how you ensure that these standards are met either by yourself or by your third party providers, whether that is through an agreement such as Privacy Shield, model clauses in your contracts, or binding corporate rules.'=>'如需將歐盟居民的資料移轉到歐盟境外,歐盟資料保護法規要求其資料保護必須採用與歐盟相同的標準。因此除了必須列出資料儲存位置之外,站方還必須說明自己或第三方服務提供商達到這些標準的方式,無論這些標準是通過隱私盾協議、模型合約條文或具備法律效力的公司規則。','In this section you should list all transfers of your site data outside the European Union and describe the means by which that data is safeguarded to European data protection standards. This could include your web hosting, cloud storage, or other third party services.'=>'在這個章節中,站方應該列出這個網站在歐盟境外的全部網站資料傳輸,並說明這些資料受歐洲資料保護標準保護的方式。這些資訊包含這個網站使用的虛擬主機、雲端儲存或第三方服務。','If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.'=>'如果使用者在這個網站擁有帳戶或曾發佈留言,便可以要求下載使用者在這個網站上的個人資料的資料匯出檔,這個檔案包含使用者提供給這個網站的全部個人資料。使用者也可以要求清除曾提供給這個網站的全部個人資料,但這項要求不包含站方為了管理、法律或安全目的而必須保留的相關資料。','In this section you should explain what rights your users have over their data and how they can invoke those rights.'=>'在這個章節中,站方應該解釋使用者對其個人資料所擁有的權利及如何行使這些權利的方式。','What rights you have over your data'=>'使用者對個人資料擁有哪些權利','For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.'=>'針對在這個網站上註冊的使用者,這個網站還會儲存他們在使用者 [個人資料] 頁面中提供的個人資訊。全部使用者都可以隨時查看、編輯或刪除自己的個人資訊 (無法變更的使用者名稱除外)。請注意,網站管理員也可以查看及編輯這些個人資訊。','If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.'=>'當使用者在這個網站發佈留言後,該則留言及其中繼資料將會無限期保留。這樣系統便可以自動辨識及核准任何後續留言,而不須將其保留在待審核的佇列中。','In this section you should explain how long you retain personal data collected or processed by the website. While it is your responsibility to come up with the schedule of how long you keep each dataset for and why you keep it, that information does need to be listed here. For example, you may want to say that you keep contact form entries for six months, analytics records for a year, and customer purchase records for ten years.'=>'在這個章節中,站方應該解釋這個網站收集或處理個人資料的保留期限。站方有責任列出每項資料集的保留時間表及保留資料集的原因,這些資訊必須在這裡列出。舉例來說,站方希望保留 6 個月的聯絡表單資料、1 年的分析記錄及 10 年的客戶購買記錄。','How long we retain your data'=>'這個網站的個人資料保留期限','By default WordPress does not share any personal data with anyone.'=>'WordPress 預設不會與任何單位分享網站上的個人資料。','In this section you should name and list all third party providers with whom you share site data, including partners, cloud-based services, payment processors, and third party service providers, and note what data you share with them and why. Link to their own privacy policies if possible.'=>'在這個章節中,應列出與站方分享網站資料的全部第三方服務提供商,包含合作夥伴、雲端服務提供商、付款處理服務提供商及第三方服務提供商,並說明站方與他們分享了哪些資料及其原因。如果這些第三方服務商提供了自己的隱私權政策內容,請在這裡加入這些內容的連結。','Who we share your data with'=>'這個網站的個人資料分享對象','By default WordPress does not collect any analytics data. However, many web hosting accounts collect some anonymous analytics data. You may also have installed a WordPress plugin that provides analytics services. In that case, add information from that plugin here.'=>'WordPress 預設不會收集任何分析資料,但是許多虛擬主機帳號會收集匿名分析數據。如果站方為網站上安裝了提供分析服務的 WordPress 外掛,請針對這種狀況在這裡加入外掛所提供的資訊。','Analytics'=>'使用者資料分析','These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.'=>'無論使用者是否有這些第三方網站的帳號或是否登入網站,他們都會以各種方式收集與使用者相關的資料,如 Cookie、嵌入第三方追蹤程式碼、監視使用者與嵌入內容的互動等。','Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.'=>'這個網站上的文章可能會嵌入視訊、圖片、文章等內容,而來自第三方網站的嵌入內容,其隱私權處理方式與使用者造訪這些網站時的規定完全相同。','Embedded content from other websites'=>'來自第三方網站的嵌入內容','If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.'=>'使用者編輯或發佈文章時,會在瀏覽器中儲存其他 Cookie。這個 Cookie 不包含任何個人資料,僅記錄表示使用者撰寫的文章的文章 ID,並會在一天後到期。','When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.'=>'使用者登入網站後,系統會設定幾個 Cookie 以儲存使用者的登入資訊及顯示項目設定;登入資訊 Cookie 會保留兩天,顯示項目設定 Cookie 則會保留一年。如果登入時核取了 [保持登入] 這項設定,使用者的登入狀態會維持兩週;帳號登出後,便會移除使用者裝置上的登入資訊 Cookie。','If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.'=>'如果使用者造訪這個網站的登入頁面,系統會設定一個臨時 Cookie 以確定使用者的瀏覽器是否接受 Cookie;這個 Cookie 不包含任何個人資料,並會在使用者關閉瀏覽器時捨棄。','If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.'=>'使用者在這個網站發佈留言時,可以選擇是否在 Cookie 中儲存使用者姓名、電子郵件地址及網站網址;儲存這些資料是為了使用者更加方便,以便讓使用者發佈其他留言時,無需再次填寫個人資料。在使用者不自行清除裝置 Cookie 的狀況下,這些 Cookie 在個人裝置上保留一年。','In this subsection you should list the cookies your website uses, including those set by your plugins, social media, and analytics. We have provided the cookies which WordPress installs by default.'=>'在這個小節中,站方應該列出這個網站所使用的 Cookie,包含這個網站安裝的外掛、社交網路服務媒體及使用者資料分析工具會使用到的 Cookie。以下內容說明了 WordPress 預設會使用的 Cookie。','Cookies'=>'Cookie','An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.'=>'這個網站會依據使用者的電子郵件地址建立匿名化字串 (亦稱為雜湊值),並提供給 Gravatar 個人頭像服務以查詢這個使用者是否為這項服務的使用者。如需了解 Gravatar 個人頭像服務的隱私權政策,請造訪 https://automattic.com/privacy/。網站管理員核准使用者發佈的留言後,使用者的個人資料圖片便會在留言內容中公開顯示。','When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.'=>'使用者在這個網站發佈留言後,我們會收集顯示於留言表單中的資料、使用者的來源 IP 位址及瀏覽器的使用者代理程式字串,以協助網站偵測垃圾留言。','By default, WordPress does not include a contact form. If you use a contact form plugin, use this subsection to note what personal data is captured when someone submits a contact form, and how long you keep it. For example, you may note that you keep contact form submissions for a certain period for customer service purposes, but you do not use the information submitted through them for marketing purposes.'=>'WordPress 預設沒有內建聯絡表單功能。如果這個網站使用了聯絡表單外掛,請在這個小節說明使用者傳送聯絡表單至站方後,網站會擷取哪些個人資料及相關資料保存週期。舉例來說,站方需要說明基於客戶服務的目的,站方將保留聯絡表單內的個人資料一段時間,但不會將這些資料用於行銷用途。','Contact forms'=>'聯絡表單','If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.'=>'如需將圖片上傳至這個網站,請避免上傳內嵌 EXIF GPS 位置資料的圖片,因為其他使用者可以從網站上下載圖片並擷取當中的位置資料。','By default WordPress does not collect any personal data about visitors, and only collects the data shown on the User Profile screen from registered users. However some of your plugins may collect personal data. You should add the relevant information below.'=>'WordPress 預設不會收集任何訪客的個人資料,僅會收集註冊使用者填寫於 [個人資料] 頁面的資料。需要注意的是,網站上安裝的某些外掛可能會收集個人資料,站方應於下方加入相關資訊。','Personal data is not just created by a user’s interactions with your site. Personal data is also generated from technical processes such as contact forms, comments, cookies, analytics, and third party embeds.'=>'個人資料不僅僅只會由使用者與網站之間的互動所建立,也會產生自技術流程,例如聯絡表單、留言、Cookie、分析及第三方嵌入內容。','In addition to listing what personal data you collect, you need to note why you collect it. These explanations must note either the legal basis for your data collection and retention or the active consent the user has given.'=>'除了列出網站會收集的個人資料外,站方還需要說明收集這些資料的原因,而這些內容必須說明站方收集及保留個人資料/使用者主動提供的內容的法律依據。','You should also note any collection and retention of sensitive personal data, such as data concerning health.'=>'同時也要注意任何敏感個人資料的收集及保留,例如個人健康狀況的相關資料。','What personal data we collect and why we collect it'=>'這個網站收集了哪些個人資訊,以及為什麼要收集這些資訊','Our website address is: %s.'=>'我們的網站網址為 %s。','The amount of information you may be required to show will vary depending on your local or national business regulations. You may, for example, be required to display a physical address, a registered address, or your company registration number.'=>'需要顯示的資訊會依據各個地區或國家的商業法規而有所不同。舉例來說,網站可能需要顯示站方營運地點的真實地址,註冊地址或公司統一編號。','In this section you should note your site URL, as well as the name of the company, organization, or individual behind it, and some accurate contact information.'=>'在這個章節中,請提供網站網址、公司名稱、組織名稱或管理團隊成員的全名,以及其他必要的聯絡資訊。','Who we are'=>'我們是誰','It is your responsibility to write a comprehensive privacy policy, to make sure it reflects all national and international legal requirements on privacy, and to keep your policy current and accurate.'=>'站方有責任提供完整的隱私權政策,確保相關內容能符合全部國家及國際隱私權法規的要求,以及內容的時效性及正確性。','Please edit your privacy policy content, making sure to delete the summaries, and adding any information from your theme and plugins. Once you publish your policy page, remember to add it to your navigation menu.'=>'請編輯隱私權政策頁面內容、刪除範本提供的摘要內容,並加入佈景主題及外掛所提供的相關資訊。發佈隱私權政策頁面後,請將其新增至網站導覽選單中。','This text template will help you to create your website’s privacy policy.'=>'這份內容範本能協助網站管理員建立這個網站專屬的隱私權政策。','As a website owner, you may need to follow national or international privacy laws. For example, you may need to create and display a privacy policy.'=>'身為網站擁有者/站長,有責任讓網站符合國家或國際隱私權法規。舉例來說,建立並顯示網站的隱私權政策頁面有其必要性。','Force erasure has failed.'=>'強制清除個人資料時發生錯誤。','Email could not be sent.'=>'無法傳送電子郵件。','date/timeOn'=>'資料產生時間','website URLAt URL'=>'資料來源網站網址','website nameFor site'=>'資料來源網站名稱','email addressReport generated for'=>'製表傳送目標','Exporter array at index %s does not include a friendly name.'=>'匯出程式在索引 %s 中的陣列不包含易記名稱。','Sorry, you are not allowed to erase personal data on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上清除個人資料的權限。','Sorry, you are not allowed to export personal data on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上匯出個人資料的權限。','Eraser index is out of range.'=>'清除程式索引超出範圍。','Missing eraser index.'=>'找不到清除程式索引。','Expected done (boolean) in response array from exporter: %s.'=>'匯出程式 %s 必須完成回應陣列中的布林值。','Expected data array in response array from exporter: %s.'=>'匯出程式 %s 的回應陣列中必須有資料陣列。','Expected data in response array from exporter: %s.'=>'匯出程式 %s 的回應陣列中必須有資料。','Expected response as an array from exporter: %s.'=>'匯出程式 %s 必須回應為一組陣列。','Exporter callback is not a valid callback: %s.'=>'匯出程式 %s 的回呼不是有效的回呼。','Exporter does not include a callback: %s.'=>'匯出程式 %s 不包含回呼。','Expected an array describing the exporter at index %s.'=>'必須有一組陣列描述在索引 %s 中的匯出程式。','Exporter index is out of range.'=>'匯出程式索引超出範圍。','Exporter index cannot be negative.'=>'匯出程式索引不能為負數。','An exporter has improperly used the registration filter.'=>'匯出程式不當使用註冊篩選器。','Missing page index.'=>'找不到頁面索引。','Missing exporter index.'=>'找不到匯出程式索引。','Invalid request type.'=>'無效的要求類型。','Use This Page'=>'使用這個頁面','Select a Privacy Policy page'=>'選取隱私權政策頁面','Change your Privacy Policy page'=>'變更隱私權政策頁面','Edit or view your Privacy Policy page content.'=>'編輯檢視這個網站的隱私權政策頁面內容。','You should also review your privacy policy from time to time, especially after installing or updating any themes or plugins. There may be changes or new suggested information for you to consider adding to your policy.'=>'站方應該定期檢閱隱私權政策,尤其在安裝或更新任何佈景主題或外掛之後,這兩者可能會有相關變更或建議資訊需要加入網站的隱私權政策中。','However, it is your responsibility to use those resources correctly, to provide the information that your privacy policy requires, and to keep that information current and accurate.'=>'請注意,貴單位有責任正確使用這些資源,以提供這個網站的隱私權政策所需的資訊,並確保資訊的時效性及正確性。','The new page will include help and suggestions for your privacy policy.'=>'隱私權政策頁面的內容應該包含這個網站對隱私權政策的相關說明及建議。','If you already have a Privacy Policy page, please select it below. If not, please create one.'=>'如果這個網站已有隱私權政策頁面,請於下方選取這個頁面;如果尚未建立隱私權政策頁面,建議及早建立。','The currently selected Privacy Policy page is in the Trash. Please create or select a new Privacy Policy page or restore the current page.'=>'之前設定的隱私權政策頁面目前在回收桶中,請新增頁面或還原之前設定的頁面。','The currently selected Privacy Policy page does not exist. Please create or select a new page.'=>'之前設定的隱私權政策頁面目前不存在,請新增頁面或選取其他頁面。','Unable to create a Privacy Policy page.'=>'無法建立隱私權政策頁面。','privacy-policy'=>'privacy-policy','Privacy Policy page setting updated successfully. Remember to update your menus!'=>'隱私權政策頁面已成功更新,請記得更新網站選單。','Copy suggested policy text from %s.'=>'從 %s 複製建議的隱私權政策內容。','Howdy, + +Your request for an export of personal data has been completed. You may +download your personal data by clicking on the link below. For privacy +and security, we will automatically delete the file on ###EXPIRATION###, +so please download it before then. + +###LINK### + +Regards, +All at ###SITENAME### +###SITEURL###'=>'你好, + +你的個人資料匯出要求已完成。請點擊下方的連結下載個人資料。基於保護隱私權及安全性,系統將會於 ###EXPIRATION###自動刪除檔案,請在到期前完成下載。 +###LINK### + +敬祝安好, +《###SITENAME###》網站管理員 +###SITEURL###','Email sent.'=>'電子郵件已傳送。','Sending email...'=>'正在傳送電子郵件...','Download personal data again'=>'再次下載個人資料','Unable to send personal data export email.'=>'無法傳送個人資料匯出通知電子郵件。','[%s] Personal Data Export'=>'《%s》通知:個人資料匯出','Invalid request ID when sending personal data export email.'=>'傳送個人資料匯出電子郵件時的要求 ID 無效。','Personal Data Export'=>'個人資料匯出','Personal Data Export for %s'=>'個人資料匯出: %s','A valid email address must be given.'=>'必須輸入有效的電子郵件地址。','Force erase personal data'=>'強制清除個人資料','Remove request'=>'移除要求','Waiting for confirmation'=>'等待使用者確認','Downloading data...'=>'正在下載個人資料...','Download personal data'=>'下載個人資料','Requested'=>'要求提出時間','Requester'=>'申請者','Send Request'=>'傳送要求','Username or email address'=>'使用者名稱或電子郵件地址','Add Data Export Request'=>'新增個人資料匯出要求','Confirmation request initiated successfully.'=>'確認要求已成功初始化。','Unable to add this request. A valid email address or username must be supplied.'=>'無法新增這項要求。必須提供有效的電子郵件地址或使用者名稱。','Confirmation request sent again successfully.'=>'確認要求已成功重新傳送。','Unable to initiate confirmation request.'=>'確認要求無法初始化。','Invalid request ID.'=>'無效的要求 ID。','Expected done flag in response array from %1$s eraser (index %2$d).'=>'清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的旗標。','Expected messages key to reference an array in response array from %1$s eraser (index %2$d).'=>'清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的訊息索引鍵以進行參照。','Expected messages key in response array from %1$s eraser (index %2$d).'=>'清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的訊息索引鍵。','Expected items_retained key in response array from %1$s eraser (index %2$d).'=>'清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的 items_retained 索引鍵。','Expected items_removed key in response array from %1$s eraser (index %2$d).'=>'清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的 items_removed 索引鍵。','Did not receive array from %1$s eraser (index %2$d).'=>'無法從 %1$s 清除程式收到陣列 (索引 %2$d)。','Eraser array at index %d does not include a friendly name.'=>'清除程式在索引 %d 中的陣列不包含易記名稱。','Expected an array describing the eraser at index %d.'=>'必須有一組陣列描述在索引 %d 中的清除程式。','Page index cannot be less than one.'=>'頁面索引不能小於 1。','Eraser index cannot be less than one.'=>'清除程式索引不能小於 1。','Invalid email address in request.'=>'要求中的電子郵件地址無效。','Requires PHP Version:'=>'PHP 版本需求:','This data is used to provide general enhancements to WordPress, which includes helping to protect your site by finding and automatically installing new updates. It is also used to calculate statistics, such as those shown on the WordPress.org stats page.'=>'這些資料用於提供 WordPress 一般增強功能,其中包含尋找及自動安裝更新以保護這個網站。這些資料也用於計算統計資料,例如顯示於 WordPress.org 統計資料頁面中的相關資訊。','There is no need to change your CSS here — you can edit and live preview CSS changes in the built-in CSS editor.'=>'其實無需在這裡修改 CSS,請使用系統內建的 CSS 編輯器進行修改,並可以即時預覽修改結果。','Did you know?'=>'你知道嗎?','Noteworthy Contributors'=>'貢獻卓著的參與者','If you decide to go ahead with direct edits anyway, use a file manager to create a copy with a new name and hang on to the original. That way, you can re-enable a functional version if something goes wrong.'=>'如果決定繼續直接編輯相關檔案,請使用檔案管理程式先複製需要修改的檔案,並修改檔案名稱以進行備份,這是網站因修改檔案發生錯誤時藉以恢復正常運作的方式。','If you absolutely have to make direct edits to this plugin, use a file manager to create a copy with a new name and hang on to the original. That way, you can re-enable a functional version if something goes wrong.'=>'如果決定繼續直接編輯外掛檔案,請使用檔案管理程式先複製需要修改的檔案,並修改檔案名稱以進行備份,這是網站因修改檔案發生錯誤時藉以恢復正常運作的方式。','You appear to be making direct edits to your plugin in the WordPress dashboard. Editing plugins directly is not recommended as it may introduce incompatibilities that break your site and your changes may be lost in future updates.'=>'目前要進行的這項操作可以讓使用者在 WordPress 控制台中直接編輯外掛的程式碼,但建議不要進行這項操作。直接修改外掛所產生的不相容有可能造成網站停擺,且經由修改所得的全部變更均會在外掛更新後消失。','WordPress is not notifying any Update Services because of your site’s visibility settings.'=>'依據這個網站目前的可見度設定,WordPress 不會向任何服務更新傳送通知。','Error: The root directory of your site is not writable, so creating a file automatically was not possible. This is the URL rewrite rule you should have in your %2$s file. Create a new file called %2$s in the root directory of your site. Click in the field and press %3$s (or %4$s on Mac) to select all. Then insert this code into the %2$s file.'=>'錯誤: 這個網站的根目錄權限不是可寫入狀態,導致系統無法自動建立檔案,因此網站管理員必須手動在 %2$s 檔案中加入網址重新寫入規則。請在這個網站的根目錄中建立一個名為 %2$s 的新檔案,點擊下方文字欄位並按下 %3$s (macOS 為按下 %4$s) 進行全選,然後將這些程式碼插入 %2$s 檔案中。','Enter the same address here unless you want your site home page to be different from your WordPress installation directory.'=>'除非網站首頁網址需要與 WordPress 安裝目錄不同,否則請在這裡輸入相同位址。','https://wordpress.org/about/license/'=>'https://tw.wordpress.org/about/license/','From time to time, your WordPress site may send data to WordPress.org — including, but not limited to — the version you are using, and a list of installed plugins and themes.'=>'WordPress 網站會不定期傳送資料至 WordPress.org,這些資料包含 (但不限於) 網站目前使用的 WordPress 版本,以及網站上已安裝的外掛及佈景主題清單。','Uploaded on: %s'=>'上傳時間: %s','Downloading installation package from %s…'=>'正在從 %s 下載安裝套件...','Downloading translation from %s…'=>'正在從 %s 下載語言套件...','Downloading update from %s…'=>'正在從 %s 下載更新套件...','Likely direct inclusion of %1$s in order to use %2$s. This is very wrong. Hook the %2$s call into the %3$s action instead.'=>'為了使用 %2$s 而直接包含 %1$s 並不是正確的方式,請改用勾點 %2$s 以呼叫 %3$s 動作。','Customization Draft'=>'自訂外觀草稿','This draft comes from your unpublished customization changes. You can edit, but there is no need to publish now. It will be published automatically with those changes.'=>'這份草稿與這個網站尚未發佈的自訂外觀變更相關聯。網站管理員可以編輯這份草稿,但無須立即發佈,因為它會與這些自訂外觀變更一起自動發佈。','Theme Files'=>'佈景主題檔案','folder'=>'資料夾','Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.'=>'由於無法連線至網站檢查嚴重錯誤,因此已將 PHP 的變更還原;網站管理員必須使用其它方式上傳 PHP 檔案,例如改用 SFTP。','Installation Required'=>'安裝需求','Could not fully remove the plugin %s.'=>'無法完整移除外掛 %s。','User has been created, but could not be added to this site.'=>'使用者已新增,但無法加入至這個網站。','That user could not be added to this site.'=>'無法將這個使用者加入這個網站。','Disable syntax highlighting when editing code'=>'停用編輯程式碼時的語法醒目提示功能','Syntax Highlighting'=>'語法醒目提示','Run the installation'=>'執行安裝程式','https://wordpress.org/about/privacy/'=>'https://tw.wordpress.org/about/privacy/','Press This is not available. Please contact your site administrator.'=>'[發佈至網站] 外掛無法使用,請聯絡這個網站的網站管理員。','Press This is not installed. Please install Press This from the main site.'=>'[發佈至網站] 外掛尚未安裝,請前往主要網站進行安裝。','Activate Press This'=>'啟用 [發佈至網站]','I understand'=>'已了解這項操作的風險','Heads up!'=>'注意!','Warning: Making changes to active plugins is not recommended.'=>'警告: 不建議修改已啟用的外掛。','Selected file content:'=>'選取的檔案內容:','There was an error while trying to update the file. You may need to fix something and try updating again.'=>'更新檔案時發生錯誤,請修正相關錯誤然後再次更新。','Homepage: %s'=>'靜態首頁: %s','Available tags:'=>'可用於永久連結結構的標籤:','%s (already used in permalink structure)'=>'%s (已使用於永久連結結構中)','%s added to permalink structure'=>'%s 已新增至永久連結結構中','%s (A sanitized version of the author name.)'=>'%s (已處理過的作者名稱版本)','%s (Category slug. Nested sub-categories appear as nested directories in the URL.)'=>'%s (分類代稱,在網址中將巢狀子分類顯示為巢狀目錄)','%s (The sanitized post title (slug).)'=>'%s (已處理過的文章標題,也就是文章代稱)','%s (The unique ID of the post, for example 423.)'=>'%s (文章唯一 ID,例如 423)','%s (Second of the minute, for example 33.)'=>'%s (秒數,例如 33)','%s (Minute of the hour, for example 43.)'=>'%s (分鐘,例如 43)','%s (Hour of the day, for example 15.)'=>'%s (小時,例如 15)','%s (Day of the month, for example 28.)'=>'%s (日期,例如 28)','%s (Month of the year, for example 05.)'=>'%s (月份,例如 05)','%s (The year of the post, four digits, for example 2004.)'=>'%s (文章的四位數年份,例如 2004)','Theme Installation'=>'佈景主題安裝','%s is currently editing this post.'=>'「%s」正在編輯這篇文章。','%s is currently editing this post. Do you want to take over?'=>'「%s」正在編輯這篇文章,是否要接管編輯工作?','Custom installation script.'=>'自訂安裝指令碼。','Active Installations:'=>'啟用安裝數:','Plugin Installation'=>'外掛安裝','Settings — This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.'=>'設定 — 這個分頁會顯示全部與選取網站相關的設定項目,這些設定項目分別由 WordPress 核心程式及已啟用的外掛所建立。請注意,變灰的欄位代表該項設定值為序列化資料;由於這些設定值以序列化資料方式儲存於資料庫中,所以無法手動修改。','Themes — This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen.'=>'佈景主題 — 這個分頁顯示尚未在整個多站網路中啟用的佈景主題。可以在這邊為特定站點顯示可用的佈景主題,只會顯示而不會啟用。如需為整個多站網路啟用佈景主題,請參考 多站網路佈景主題。','Users — This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.'=>'使用者 — 這個分頁顯示與指定網站相關的使用者。多站網路管理員可以變更他們使用者角色、為他們重設密碼,或從指定網站移除使用者,將使用者從指定網站移除,不會影響這個使用者在多站網路的使用者身分。','Info — The site URL is rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.'=>'資訊 — 多站網路管理員可以在這個分頁中變更網站網址,但可能會造成網站無法正常連線,因此網站網址不該經常變更;多站網路網站管理員還可以將網站標示為 [已封存]、[濫用網站]、[已刪除] 及 [成人內容],藉此將網站從公開清單中移除或停用網站。此外,這個分頁還會顯示網站的 [註冊時間] 及 [最後更新] 日期。','The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.'=>'這個畫面可以編輯個別網站的指定資訊,特別適用於發生無法進入管理後台狀況的網站。','Unable to write to file.'=>'無法寫入檔案。','Your PHP code changes were not applied due to an error on line %1$s of file %2$s. Please fix and try saving again.'=>'由於檔案 %2$s 中第 %1$s 行的程式碼發生錯誤,因此相關的 PHP 程式碼變更並未套用,請修復後再重新儲存一次。','Events and News dashboard widgethttps://wordpress.org/news/'=>'https://wordpress.org/news/','Your Recent Drafts'=>'個人近期草稿','nameUnknown'=>'未知','View posts by %s'=>'檢視「%s」的文章','No description'=>'沒有內容說明','%s Active Installations'=>'啟用安裝數: %s','Theme installation failed.'=>'佈景主題安裝失敗。','Plugin installation failed.'=>'外掛安裝失敗。','Activate Plugin & Go to Press This'=>'啟用外掛並前往 [發佈至網站]','Your scheduled changes just published'=>'排程的變更剛剛發佈','themeActivate'=>'啟用','Allow link notifications from other blogs (pingbacks and trackbacks) on new posts'=>'開放其他網站對新文章傳送連結通知 (即自動引用通知及引用通知)','pluginNetwork Activate %s'=>'於多站網路中啟用 %s','pluginActivate %s'=>'啟用 %s','No media files found.'=>'找不到符合條件的媒體檔案。','Run Importer'=>'執行匯入程式','Run %s'=>'執行 [%s]','comment statusOpen'=>'開放','Image Rotation'=>'旋轉圖片','There are no events scheduled near you at the moment. Would you like to organize a WordPress event?'=>'近期沒有任何在你的居地附近舉辦的活動。如果想自己舉辦一場活動,請參考這份線上說明。','Edit User %s'=>'編輯使用者「%s」','Edit widget: %s'=>'編輯小工具: %s','https://make.wordpress.org/community/handbook/meetup-organizer/welcome/'=>'https://make.wordpress.org/community/handbook/meetup-organizer/welcome/','There are no events scheduled near %1$s at the moment. Would you like to organize a WordPress event?'=>'近期沒有任何在「%1$s」附近舉辦的活動。如果想自己舉辦一場活動,請參考這份線上說明。','Attend an upcoming event near %s.'=>'參加在「%s」附近即將舉辦的活動。','Cincinnati'=>'台北','City:'=>'城市名稱:','WordCamps'=>'WordCamp 活動','Meetups'=>'Meetup 小聚','An error occurred. Please try again.'=>'發生錯誤。請再試一次。','WordPress Events and News'=>'WordPress 活動及新聞','l, M j, Y'=>'Y 年 n 月 j 日l','Unknown API error.'=>'未知的 API 錯誤。','Invalid API response code (%d).'=>'無效的 API 回應碼 (%d)。','Sorry, you are not allowed to delete users.'=>'很抱歉,目前的登入身分沒有刪除使用者的權限。','Sorry, you are not allowed to create users.'=>'很抱歉,目前的登入身分沒有新增使用者的權限。','short (~12 characters) label for hide controls buttonHide Controls'=>'隱藏控制項','Expand Sidebar'=>'展開資訊欄','ID #%1$s: %2$s Sorry, you are not allowed to remove this user.'=>'ID 為 %1$s 的使用者 %2$s 很抱歉,目前的登入身分沒有移除這個使用者的權限。','You can select the language you wish to use while using the WordPress administration screen without affecting the language site visitors see.'=>'使用者可以選取個人偏好的 WordPress 後台管理畫面的介面語言,這項設定不會影響訪客看到的網站前端介面語言。','Edit Filters'=>'編輯篩選條件','Clear current filters'=>'清除目前的篩選條件','Select one or more Theme features to filter by'=>'選取一或多個佈景主題特色篩選條件','(%s ratings)'=>'(%s 筆評分資訊)','Current Background Image'=>'目前背景圖片','Current Header Image'=>'目前頁首圖片','Set status'=>'設定狀態','“%s” is locked'=>'〈%s〉已鎖定','Active plugin installationsLess Than 10'=>'少於 10','Sorry, you are not allowed to attach files to this post.'=>'很抱歉,目前的登入身分沒有將檔案關聯至這篇文章的權限。','https://wordpress.org/plugins/'=>'https://tw.wordpress.org/plugins/','The Customizer allows you to preview changes to your site before publishing them. You can navigate to different pages on your site within the preview. Edit shortcuts are shown for some editable elements. The Customizer is intended for use with non-block themes.'=>'外觀自訂器讓網站管理員能在發佈網站前預覽變更,還可以在進行預覽時瀏覽網站的不同頁面。某些可編輯元素會顯示編輯捷徑。外觀自訂器適用於與非區塊佈景主題 (傳統佈景主題) 搭配使用。','Customize New Changes'=>'自訂新變更','Background ScrollScroll'=>'隨頁面捲動','Background RepeatRepeat'=>'重複背景圖片','%1$s of %2$s'=>'已使用 %1$s,總計 %2$s','You can find new plugins to install by searching or browsing the directory right here in your own Plugins section.'=>'網站管理員可於網站的 [安裝外掛] 頁面中,透過搜尋或瀏覽外掛目錄的方式安裝新外掛。','Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from the core WordPress application by thousands of developers all over the world. All plugins in the official WordPress Plugin Directory are compatible with the license WordPress uses.'=>'外掛可透過勾點 (英文原文為 Hook) 為 WordPress 擴充自訂功能,外掛也是世界各地無數開發者以 WordPress 核心程式為基礎所獨立開發的擴充功能。官方 WordPress 外掛目錄中的全部外掛均相容於 WordPress 所採用的授權方式。','Search plugins by:'=>'搜尋外掛的方式:','Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.'=>'從 WordPress 資料匯出檔匯入文章、頁面、留言、自訂欄位、分類及標籤。','Import posts & media from Tumblr using their API.'=>'透過 Tumblr 的 API 匯入 Tumblr 網站的文章及媒體檔案。','Import posts from an RSS feed.'=>'透過 RSS 資訊提供匯入文章。','Import posts and comments from a Movable Type or TypePad blog.'=>'從 Movable Type 或 TypepPad 網站匯入文章及留言。','Import posts from LiveJournal using their API.'=>'透過 LiveJournal 提供的 API 匯入文章。','Convert existing categories to tags or tags to categories, selectively.'=>'選擇性地將現有分類轉換成標籤,或將現有標籤轉換成分類。','Import posts, comments, and users from a Blogger blog.'=>'從 Blogger 網站匯入文章、留言及使用者。','pluginDeactivate %s'=>'停用 %s','pluginDelete %s'=>'刪除 %s','pluginNetwork Deactivate %s'=>'於多站網路中停用 %s','By default, new users will receive an email letting them know they’ve been added as a user for your site. This email will also contain a password reset link. Uncheck the box if you do not want to send the new user a welcome email.'=>'依照預設,新使用者會收到一封電子郵件,通知他們已成為這個網站的使用者,且電子郵件內容中會包含一個密碼重設連結。如果不需要將歡迎電子郵件傳送給新使用者,請停用這項設定。','New users are automatically assigned a password, which they can change after logging in. You can view or edit the assigned password by clicking the Show Password button. The username cannot be changed once the user has been added.'=>'系統會自動為新使用者指派一組密碼,新使用者使用這組密碼登入後便可變更密碼。網站管理員可以點擊 [顯示密碼] 按鈕以檢視或編輯這組要指派給新使用者的密碼。使用者名稱在完成新增使用者操作後便無法修改。','plugin%s was successfully deleted.'=>'%s 已成功刪除。','The search for installed plugins will search for terms in their name, description, or author.'=>'搜尋已安裝的外掛時,會一併以相同關鍵字在外掛名稱、說明內容或開發者中進行搜尋。','Custom Logo'=>'自訂標誌','Sorry, you are not allowed to remove users.'=>'很抱歉,目前的登入身分沒有移除使用者的權限。','Sorry, you are not allowed to add users to this network.'=>'很抱歉,目前的登入身分沒有新增使用者至這個多站網路的權限。','Sorry, you are not allowed to edit this changeset.'=>'很抱歉,目前的登入身分沒有編輯這個變更集的權限。','Sorry, you are not allowed to update themes for this site.'=>'很抱歉,目前的登入身分沒有為這個網站更新佈景主題的權限。','Sorry, you are not allowed to update this site.'=>'很抱歉,目前的登入身分沒有更新這個網站的權限。','New version available. '=>'已有新版本可供更新。','The Theme Installer screen requires JavaScript.'=>'佈景主題安裝程式需要 JavaScript 才能使用。','Sorry, you are not allowed to edit templates for this site.'=>'很抱歉,目前的登入身分沒有為這個網站編輯範本的權限。','Error: "Table Prefix" is invalid.'=>'錯誤: 無效的資料表前置詞。','Sorry, you are not allowed to deactivate plugins for this site.'=>'很抱歉,目前的登入身分沒有為這個網站停用外掛的權限。','Sorry, you are not allowed to activate plugins for this site.'=>'很抱歉,目前的登入身分沒有為這個網站啟用外掛的權限。','Sorry, you are not allowed to edit plugins for this site.'=>'很抱歉,目前的登入身分沒有為這個網站編輯外掛的權限。','Sorry, you are not allowed to modify unregistered settings for this site.'=>'很抱歉,目前的登入身分沒有為這個網站修改未註冊設定的權限。','Sorry, you are not allowed to manage options for this site.'=>'很抱歉,目前的登入身分沒有為這個網站管理設定的權限。','Manage with Live Preview'=>'透過即時預覽進行管理','Sorry, you are not allowed to delete this site.'=>'很抱歉,目前的登入身分沒有刪除這個網站的權限。','Sorry, you are not allowed to add links to this site.'=>'很抱歉,目前的登入身分沒有新增連結至這個網站的權限。','Hi, this is a comment. +To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard. +Commenter avatars come from Gravatar.'=>'網站管理員你好,這是一則預留內容留言。 +如需開始審閱、編輯及刪除留言,請前往 [控制台] 的 [留言] 頁面進行必要的操作。 +留言者個人頭像來源為 Gravatar。','theme%s was successfully deleted.'=>'%s 佈景主題已成功刪除。','WordPress %2$s is available! Please notify the site administrator.'=>'WordPress %2$s 已可供下載安裝!請通知網站管理員。','Please update WordPress now'=>'請立即更新 WordPress','WordPress %2$s is available! Please update now.'=>'WordPress %2$s 已可供下載安裝!請立即更新。','Portfolio'=>'作品集','Photography'=>'攝影','News'=>'新聞','Food & Drink'=>'美食','Entertainment'=>'娛樂','Education'=>'教育','E-Commerce'=>'電子商務','Blog'=>'部落格','Footer Widgets'=>'頁尾小工具','Grid Layout'=>'格狀版面配置','This will replace the current editor content with the last backup version. You can use undo and redo in the editor to get the old content back or to return to the restored version.'=>'這項操作會將目前編輯器中的內容取代為最後備份的內容。你可以使用編輯器內的 [復原] 和 [重做] 以取回舊版內容或返回已還原的版本。','Close media attachment panel'=>'關閉媒體附件面板','Info'=>'網站資訊','Need help? Use the Help tab above the screen title.'=>'如需協助,請點擊畫面標題上方的 [使用說明] 分頁。','Sorry, you are not allowed to access this page.'=>'很抱歉,目前的登入身分沒有存取這個頁面的權限。','Embed Footer Template'=>'嵌入頁尾範本','Embed Header Template'=>'嵌入頁首範本','Embed Content Template'=>'嵌入內容範本','Embed 404 Template'=>'嵌入 404 錯誤範本','Embed Template'=>'嵌入範本','pluginActive'=>'已啟用','(Private post)'=>'(私密內容)','Sorry, you are not allowed to edit the links for this site.'=>'很抱歉,目前的登入身分沒有為這個網站編輯連結的權限。','Sorry, you are not allowed to manage privacy options on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上管理隱私權設定的權限。','Sorry, you are not allowed to manage connectors on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上管理連接器的權限。','Plugin could not be deleted.'=>'外掛無法刪除。','Sorry, you are not allowed to update plugins for this site.'=>'很抱歉,目前的登入身分沒有為這個網站更新外掛的權限。','Sorry, you are not allowed to activate plugins on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上啟用外掛的權限。','Theme could not be deleted.'=>'佈景主題無法刪除。','Sorry, you are not allowed to delete themes on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上刪除佈景主題的權限。','Sorry, you are not allowed to install themes on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上安裝佈景主題的權限。','No theme specified.'=>'找不到指定的佈景主題。','Sorry, you are not allowed to import content into this site.'=>'很抱歉,目前的登入身分沒有將內容匯入至這個網站的權限。','Sorry, you are not allowed to export the content of this site.'=>'很抱歉,目前的登入身分沒有匯出這個網站內容的權限。','You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts.'=>'使用者可以點擊文章清單上方的各個狀態連結,便會列出對應狀態的文章。預設檢視為顯示全部文章。','Close the Customizer and go back to the previous page'=>'關閉 [外觀自訂器] 並返回上一頁','Sorry, you are not allowed to customize headers.'=>'很抱歉,目前的登入身分沒有自訂頁首的權限。','Release Deputy'=>'產品發行代表','Release Design Lead'=>'產品發行設計負責人','Custom fields can be used to add extra metadata to a post that you can use in your theme.'=>'自訂欄位可以為內容新增額外的中繼資料,而這些包含自訂欄位的內容可以使用於佈景主題中。','Trackbacks are a way to notify legacy blog systems that you’ve linked to them. If you link other WordPress sites, they’ll be notified automatically using pingbacks, no other action necessary.'=>'引用通知 (英文原文為 Trackback) 是種通知舊式網站系統在這個網站的文章中已連結它們的方式。當這個網站的文章連結至其他 WordPress 網站時,系統便會以自動引用通知 (英文原文為 Pingback) 的方式通知他們,不須進行其他操作。','Excerpts are optional hand-crafted summaries of your content that can be used in your theme. Learn more about manual excerpts.'=>'[內容摘要] 是一項選用功能,它是佈景主題可以自由運用的手動擷取內容。進一步了解手動輸入內容摘要。','The Code mode allows you to enter HTML along with your post text. Note that <p> and <br> tags are converted to line breaks when switching to the Code editor to make it less cluttered. When you type, a single line break can be used instead of typing <br>, and two line breaks instead of paragraph tags. The line breaks are converted back to tags automatically.'=>'[程式碼] 模式讓使用者輸入含有 HTML 程式碼的內容。請注意,切換至 [程式碼] 模式時,<p><br> 標籤會轉換成分行符號以避免版面雜亂。輸入內容時,輸入一次分行符號便可取代 <br> 標籤,而連續輸入兩次分行符號則可取代段落標籤。切換回 [預覽] 模式後,分行符號會自動轉換回對應的標籤。','Visual mode gives you an editor that is similar to a word processor. Click the Toolbar Toggle button to get a second row of controls.'=>'[預覽] 模式提供使用者類似文字處理程式 (例如 Word) 的編輯器功能。點擊 [工具列開關] 按鈕以顯示第二列功能控制項。','Error saving media file.'=>'儲存媒體檔案時發生錯誤。','%s media file restored from the Trash.'=>'%s 個媒體檔案已從回收桶還原。','%s media file moved to the Trash.'=>'%s 個媒體檔案已移至回收桶。','%s media file permanently deleted.'=>'%s 個媒體檔案已永久刪除。','%s media file detached.'=>'%s 個媒體檔案已解除關聯。','Media file detached.'=>'媒體檔案已解除關聯。','%s media file attached.'=>'%s 個媒體檔案已產生關聯。','Media file attached.'=>'媒體檔案已產生關聯。','Media file updated.'=>'媒體檔案已更新。','View %1$s version %2$s details'=>'檢視 %1$s %2$s 的詳細資料','dashboard%1$s, %2$s'=>'%1$s%2$s','Publish — You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). The Password protected option allows you to set an arbitrary password for each post. The Private option hides the post from everyone except editors and administrators. Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.'=>'發佈 — 作者可以在文章的 [發佈] 區塊中進行多項設定,包含 [狀態]、[可見度] 及 [發佈] (立即發佈),也可以點擊 [編輯] 連結以顯示更多進階設定。可見度包含以密碼保護文章,或讓文章在網站上置頂的設定。[密碼保護] 功能讓作者可以為每篇文章設定自訂密碼,而 [私密] 功能能讓文章作者本人、具備 [編輯] 及 [網站管理員] 的使用者以外的全部人都無法看到該篇文章。[發佈] (立即發佈) 功能能讓作者設定某個未來或過去的日期及時間,這樣作者便能為文章排程,讓文章在未來發佈或將發佈時間回溯至過去。','There is a pending change of your email to %s.'=>'將你的電子郵件地址變更為 %s 的要求仍待確認。','Error while saving the new email address. Please try again.'=>'儲存新的電子郵件地址時發生錯誤。請再試一次。','You can narrow the list by file type/status or by date using the dropdown menus above the media table.'=>'使用者可以在媒體清單上方的下拉式選單中選取檔案類型/狀態或檔案上傳日期 (可進行交集篩選),藉以篩選出媒體清單中符合條件的媒體檔案。','The following themes are installed but incomplete.'=>'下列佈景主題已安裝但不完整。','New theme activated.'=>'新的佈景主題已啟用。','Settings saved and theme activated.'=>'設定已儲存且佈景主題已啟用。','https://wordpress.org/themes/'=>'https://tw.wordpress.org/themes/','Sorry, you are not allowed to delete that user.'=>'很抱歉,目前的登入身分沒有刪除這個使用者的權限。','Your database password.'=>'WordPress 網站資料庫的密碼。','Your database username.'=>'WordPress 網站資料庫的使用者名稱。','The name of the database you want to use with WordPress.'=>'使用於 WordPress 的網站資料庫名稱。','plugin%1$s by %2$s'=>'由 %2$s 開發的 %1$s','%1$s by %2$s (will also delete its data)'=>'由 %2$s 開發的 %1$s (同時也會刪除這個外掛的資料)','There is a pending change of the admin email to %s.'=>'將網站管理員的電子郵件地址變更為 %s 的要求仍待確認。','WordPress has been installed. Thank you, and enjoy!'=>'WordPress 已完成安裝。感謝採用 WordPress,請享用它所帶來的無窮魅力!','The constant %s cannot be defined when installing WordPress.'=>'安裝 WordPress 時,無法定義常數 %s。','Your %s file has an empty database table prefix, which is not supported.'=>'這個網站的 %s 檔案中的資料表前置詞設定為空,系統不支援這樣的設定。','Dismiss the welcome panel'=>'關閉 [歡迎使用] 面板','Theme zip file'=>'佈景主題 ZIP 檔案','Attach to existing content'=>'關聯至現有內容','Click the image to edit or update'=>'點擊圖片以編輯或更新','Reviews with %1$d star: %2$s. Opens in a new tab.'=>'%2$s 篇 %1$d 星使用者評論。在新分頁中開啟。','Read all reviews on WordPress.org or write your own!'=>'在 WordPress.org 上查看全部使用者評論或發佈個人評論!','Reviews'=>'使用者評論','You are using a development version of WordPress. These feature plugins are also under development. Learn more.'=>'這個網站使用了 WordPress 的開發版本,目前主要功能外掛仍處於開發階段。進一步了解。','Thumbnail Settings Help'=>'縮圖設定說明','selection height'=>'保留範圍高度','selection width'=>'保留範圍寬度','crop ratio height'=>'裁剪保留範圍比例高度','crop ratio width'=>'裁剪保留範圍比例寬度','Image Crop Help'=>'圖片裁剪說明','scale height'=>'調整高度尺寸','New dimensions:'=>'新尺寸:','Scale Image Help'=>'調整圖片尺寸說明','Single Page'=>'單篇頁面','Singular Template'=>'單篇內容範本','Date Template'=>'日期範本','Taxonomy Template'=>'分類法範本','Dismiss the browser warning panel'=>'關閉瀏覽器警告面板','View more comments'=>'檢視更多留言','dashboard%1$s on %2$s %3$s'=>'在〈%2$s〉,%1$s %3$s','View this comment'=>'檢視這則留言','Another update is currently in progress.'=>'目前正在執行另一項更新程序。','Update progress'=>'更新進度','View “%s” archive'=>'檢視〈%s〉的彙整','Delete “%s”'=>'刪除〈%s〉','Quick edit “%s” inline'=>'快速編輯〈%s〉','Search for plugins in the WordPress Plugin Directory.'=>'在 WordPress 外掛目錄搜尋外掛','Restore “%s” from the Trash'=>'從回收桶還原〈%s〉','Delete “%s” permanently'=>'永久刪除〈%s〉','Move “%s” to the Trash'=>'將〈%s〉移至回收桶','Attach “%s” to existing content'=>'將〈%s〉關聯至現有的內容','Detach from “%s”'=>'解除與〈%s〉的關聯','attachment filterTrash'=>'回收桶','Quick edit this comment inline'=>'快速編輯這則留言','Edit this comment'=>'編輯這則留言','Restore this comment from the spam'=>'將這則留言從垃圾留言中還原','user autocomplete result%1$s (%2$s)'=>'%1$s (%2$s)','The %s importer is invalid or is not installed.'=>'匯入程式 %s 無效或尚未安裝。','comment statusPending'=>'待審閱','Suggested height is %s.'=>'建議高度為 %s。','Suggested width is %s.'=>'建議寬度為 %s。','Images should be at least %s tall.'=>'圖片高度至少要為 %s px。','%d pixels'=>'%d 像素','Images should be at least %s wide.'=>'圖片寬度至少要為 %s px。','Send the new user an email about their account'=>'傳送一封網站帳號資訊的電子郵件給新使用者','Send User Notification'=>'傳送使用者通知','menu location(Currently set to: %s)'=>'(目前選單: %s)','Version %s addressed one security issue.'=>'%s 版修正了 1 個安全性問題。','https://gravatar.com/'=>'https://zh-tw.gravatar.com/','Profile Picture'=>'個人資料圖片','Maintenance and Security Releases'=>'維護及安全性更新版本','Security Releases'=>'安全性更新版本','Maintenance Releases'=>'維護版本','Plain'=>'預設','WordPress offers you the ability to create a custom URL structure for your permalinks and archives. Custom URL structures can improve the aesthetics, usability, and forward-compatibility of your links. A number of tags are available, and here are some examples to get you started.'=>'WordPress 提供網站管理員為永久連結及彙整建立自訂網址結構的設定。自訂網址結構能為網站連結增進可讀性、可用性及向前相容性 (與更新版本具備相容性)。〈使用永久連結〉線上說明中提供了可用於永久連結結構的標籤說明,以及對應的範例以供參考。','Permalinks can contain useful information, such as the post date, title, or other elements. You can choose from any of the suggested permalink formats, or you can craft your own if you select Custom Structure.'=>'永久連結可以包含相關實用資訊,例如文章日期、標題或其他元素。網站管理員可以在這個頁面中從中選取其中一項建議的永久連結格式,也可以透過 [自訂結構] 功能自行建立專屬格式。','You can create the %s file manually and paste the following text into it.'=>'網站管理員可以手動建立 %s 檔案,然後在檔案中貼上以下文字。','You should be able to get this info from your web host, if %s does not work.'=>'如果因故無法使用 %s 進行連線,請要求網站主機服務商提供正確對應資訊。','If for any reason this automatic file creation does not work, do not worry. All this does is fill in the database information to a configuration file. You may also simply open %1$s in a text editor, fill in your information, and save it as %2$s.'=>'如果因故導致無法自動建立檔案,請不必擔心,這時只需要將資料庫相關資訊填入網站組態檔案中即可。安裝人員也可以在文字編輯器中開啟 %1$s 並填寫必要的資訊,然後將檔案另存為 %2$s。','Default is %s'=>'預設上傳路徑為 %s','The language pack is missing either the %1$s, %2$s, or %3$s files.'=>'語言套件缺少 %1$s、%2$s 或 %3$s 其中一個檔案。','The %s stylesheet does not contain a valid theme header.'=>'%s 樣式表沒有包含有效的佈景主題標頭。','The theme is missing the %s stylesheet.'=>'這個佈景主題的安裝套件中缺少 %s 樣式表。','If you have marked themes as favorites on WordPress.org, you can browse them here.'=>'如果你曾在 WordPress.org 將佈景主題標示為 [我的最愛],便可以在這裡瀏覽整份清單。','themesFavorites'=>'我的最愛','Database repair results'=>'資料庫修復結果','Allow automatic database repair'=>'允許自動修復資料庫','Successful database connection'=>'資料庫連線成功','Set up your database connection'=>'設定網站的資料庫連線','Before getting started'=>'開始之前','WordPress database repair'=>'WordPress 資料庫修復','Check secret keys'=>'檢查祕密金鑰','%s has been updated.'=>'選單 [%s] 已更新。','The Walker class named %s does not exist.'=>'名為 %s 的 Walker 類別不存在。','Requires %1$s in %2$s file.'=>'檔案 %2$s 中需要有 %1$s。','Standard time begins on: %s.'=>'標準時間開始日期: %s。','Daylight saving time begins on: %s.'=>'日光節約時間開始日期: %s。','You are about to delete %s.'=>'即將刪除 %s。','Files in the %s directory are executed automatically.'=>'在 %s 目錄中的檔案已自動執行。','This will clear all items from the inactive widgets list. You will not be able to restore any customizations.'=>'這項操作會清除 [未啟用的小工具] 清單中的全部項目。未啟用的小工具內包含之前的自訂設定,這些設定在清除之後便無法還原。','Clear Inactive Widgets'=>'清除未啟用的小工具','One of the selected users is not a member of this site.'=>'其中一個選取的使用者並不是這個網站的成員。','Users list'=>'使用者清單','Users list navigation'=>'使用者清單導覽','Filter users list'=>'篩選使用者清單','Media items list'=>'媒體項目清單','Media items list navigation'=>'媒體項目清單導覽','Filter media items list'=>'篩選媒體項目清單','Install Parent Theme'=>'安裝上層佈景主題','Themes list'=>'佈景主題清單','Filter themes list'=>'篩選佈景主題清單','All selected plugins are up to date.'=>'選取的全部外掛均為最新版本。','Plugins list'=>'外掛清單','Plugins list navigation'=>'外掛清單導覽','Filter plugins list'=>'篩選外掛清單','Browsing %s (inactive)'=>'瀏覽 %s (未啟用)','Editing %s (inactive)'=>'編輯 %s (未啟用)','Browsing %s (active)'=>'瀏覽 %s (已啟用)','Editing %s (active)'=>'編輯 %s (已啟用)','Local time is %s.'=>'本地時間為 %s。','Links list'=>'連結清單','Get Version %s'=>'取得 %s 版','Toggle panel: %s'=>'切換面板: %s','Saving revision…'=>'正在儲存內容修訂...','Edit permalink'=>'編輯永久連結','The %1$s plugin header is deprecated. Use %2$s instead.'=>'外掛標頭 %1$s 已淘汰不用,請改用 %2$s。','Warning'=>'警告','Warning:'=>'警告:','Once you hit “Confirm Deletion”, these users will be permanently removed.'=>'當網站管理員點擊 [確認刪除] 後,便會永久移除這些使用者。','Once you hit “Confirm Deletion”, the user will be permanently removed.'=>'當網站管理員點擊 [確認刪除] 後,便會永久移除這個使用者。','User has no sites or content and will be deleted.'=>'使用者沒有任何網站或撰寫過內容,且即將進行刪除。','Site: %s'=>'網站: %s','Select a user'=>'選取使用者','What should be done with content owned by %s?'=>'如何處理屬於「%s」的內容?','Warning! User cannot be deleted. The user %s is a network administrator.'=>'警告!由於使用者「%s」是多站網路管理員,因此無法刪除。','Warning! User %s cannot be deleted.'=>'警告!無法刪除使用者「%s」。','You have chosen to delete the following users from all networks and sites.'=>'下方所列出的使用者將會從全部多站網路及相關網站中刪除。','You have chosen to delete the user from all networks and sites.'=>'下方所列出的使用者將會從全部多站網路及相關網站中刪除。','Invalid image URL.'=>'無效的圖片網址。','Theme Header'=>'佈景主題頁首','Theme Footer'=>'佈景主題頁尾','M jS Y'=>'Y 年 n 月 j 日','From %1$s %2$s'=>'由「%1$s」發佈 %2$s','View all drafts'=>'檢視全部草稿','no user rolesNone'=>'未獲指派','No role'=>'未獲指派使用者角色','An error occurred while updating %1$s: %2$s'=>'更新 %1$s 時發生錯誤: %2$s','View mode'=>'檢視模式','%s column'=>'%s 欄','Additional settings'=>'其他設定','Items list'=>'項目清單','Items list navigation'=>'項目清單導覽','Filter items list'=>'篩選項目清單','Network Only'=>'僅能由多站網路管理員啟用','Network Active'=>'已於多站網路中啟用','No pending comments'=>'沒有待審閱的留言','Failed to initialize a SFTP subsystem session with the SSH2 Server %s'=>'無法透過 SSH2 伺服器 %s 初始化 SFTP 子系統工作階段','column nameSubmitted on'=>'發佈日期','commentsTrash (%s)'=>'回收桶 (%s)','commentsSpam (%s)'=>'垃圾留言 (%s)','commentsApproved (%s)'=>'已核准 (%s)','commentsPending (%s)'=>'待審閱 (%s)','commentsAll (%s)'=>'全部 (%s)','User %s added'=>'已新增使用者「%s」','End date:'=>'結束日期:','Content to export'=>'匯出內容','You can view posts in a simple title list or with an excerpt using the Screen Options tab.'=>'使用者可以在 [顯示項目設定] 分頁中設定要單純以標題顯示文章清單,或是以標題含內容摘要的方式顯示文章清單。','Submitted on: %s'=>'發佈日期: %s','commentPermalink:'=>'永久連結:','Page draft updated.'=>'頁面草稿已更新。','Page scheduled for: %s.'=>'頁面排程發佈時間: %s。','Page submitted.'=>'頁面已提交。','Post draft updated.'=>'文章草稿已更新。','Post scheduled for: %s.'=>'文章排程發佈時間: %s。','Post submitted.'=>'文章已提交。','View page'=>'檢視頁面','Preview page'=>'預覽頁面','Preview post'=>'預覽文章','Comments list'=>'留言清單','Comments list navigation'=>'留言清單導覽','Filter comments list'=>'篩選留言清單','In the Submitted on column, the date and time the comment was left on your site appears. Clicking on the date/time link will take you to that comment on your live site.'=>'[發佈日期] 欄位會顯示該則留言發佈於網站上的日期及時間。點擊留言的發佈日期/時間,便會進入該則留言在網站前端頁面的位置。','In the Comment column, hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.'=>'將游標暫留於 [留言資訊] 欄位中的任何留言,便能進行核准、回覆 (及核准回覆留言)、快速編輯、編輯、標示為垃圾留言或將留言移至回收桶等多項操作。','Comments (%s)'=>'留言 (%s)','Comments (%1$s) on “%2$s”'=>'在〈%2$s〉中有 %1$s 則留言','Sorry, you are not allowed to modify themes.'=>'很抱歉,目前的登入身分沒有修改佈景主題的權限。','The active theme does not support a flexible sized header image.'=>'目前使用的佈景主題不支援可變尺寸頁首圖片。','You are using the auto-generated password for your account. Would you like to change it?'=>'你目前登入所使用的是系統之前自動產生的密碼,是否需要變更密碼?','You have specified this user for removal:'=>'目前指定移除的使用者如下所列:','Log %s out of all locations.'=>'將使用者「%s」從全部裝置登出。','Did you lose your phone or leave your account logged in at a public computer? You can log out everywhere else, and stay logged in here.'=>'是否遺失手機或曾在公用電腦上進行登入?執行這項操作便可從全部裝置登出,只保留這台裝置的登入階段。','Log Out Everywhere Else'=>'從除了這台裝置之外的全部裝置登出','Sessions'=>'登入工作階段','Cancel password change'=>'取消密碼變更','Generate password'=>'產生密碼','Account Management'=>'帳號管理','You will need this password to log in. Please store it in a secure location.'=>'這是安裝完成後用於登入網站的密碼,請將它儲存在安全的位置。','No approved comments'=>'沒有已核准的留言','%s pending comment'=>'%s 則待審閱留言','%s approved comment'=>'%s 則已核准留言','Image could not be processed.'=>'圖片無法進行處理。','Confirm Password'=>'確認密碼','Remove Site Icon'=>'移除網站圖示','While you are editing your %1$s file, take a moment to make sure you have all 8 keys and that they are unique. You can generate these using the WordPress.org secret key service.'=>'編輯這個網站的 %1$s 檔案時,請用一點時間確認網站目前 8 個金鑰的唯一性。網站管理員可以使用 WordPress.org 秘密金鑰服務自動產生秘密金鑰。','Set as Site Icon'=>'設定為網站圖示','Choose a Site Icon'=>'選取網站圖示','Show more details'=>'顯示更多詳細資料','Your theme supports %s menu. Select which menu appears in each location.'=>'目前使用的佈景主題提供 %s 個位置顯示選單,請選取指定位置要顯示的選單。','%s post by this author'=>'這個作者已發佈 %s 篇文章','Live Preview “%s”'=>'即時預覽 %s','last page'=>'最末頁','first page'=>'第一頁','In response to: %s'=>'回應目標: %s','Date and time'=>'日期及時間','You can also embed media from many popular websites including Twitter, YouTube, Flickr and others by pasting the media URL on its own line into the content of your post/page. Learn more about embeds.'=>'使用者還可以透過將媒體檔案網址貼上至文章/頁面的內容中的方式,藉以嵌入來自包含 Twitter、YouTube、Flickr 等熱門網站的內容。進一步了解嵌入內容。','Documentation on Custom Background'=>'〈自訂背景〉線上說明','Documentation on Link Categories'=>'〈連結分類〉線上說明','Documentation on Creating Links'=>'〈建立連結〉線上說明','Documentation on Managing Links'=>'〈管理連結〉線上說明','Documentation on Custom Header'=>'〈自訂頁首〉線上說明','Documentation on My Sites'=>'〈我的網站〉線上說明','The theme you are currently using is not widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please follow these instructions.'=>'這個網站目前使用的佈景主題不支援小工具功能,這代表它沒有內建任何可供網站管理員進行設定的資訊欄。如需進一步了解如何製作支援小工具功能的佈景主題,請參考這篇線上文件。','When you publish a new post, WordPress automatically notifies the following site update services. For more about this, see the Update Services documentation article. Separate multiple service URLs with line breaks.'=>'使用者發佈新文章後,WordPress 會自動向下列網站更新服務傳送通知。如需進一步了解相關資訊,請參閱〈更新服務〉線上說明。請以每行一個服務網址的方式分隔多個更新服務。','The character encoding of your site (UTF-8 is recommended)'=>'這個網站的字元編碼方式 (建議使用 UTF-8)','example: www.wordpress.org'=>'範例: tw.wordpress.org','The search for installed themes will search for terms in their name, description, author, or tag.'=>'搜尋已安裝的佈景主題時,會一併以相同關鍵字在佈景主題名稱、內容說明、開發者或標籤中進行搜尋。','Alternately, you can browse the themes that are Popular or Latest. When you find a theme you like, you can preview it or install it.'=>'此外,網站管理員也可以在 [熱門] 或 [最新上架] 分類分頁中瀏覽佈景主題;找到屬意的佈景主題後,便可以進行預覽或安裝。','You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter.'=>'網站管理員可以使用關鍵字、開發者、標籤作為條件搜尋佈景主題,也可以依特色篩選條件中列出的條件進行更精準的搜尋。','Number of Themes found: %d'=>'已找到的佈景主題數量: %d','Custom time format:'=>'自訂時間格式:','enter a custom time format in the following field'=>'在下方欄位輸入自訂時間格式','Custom date format:'=>'自訂日期格式:','enter a custom date format in the following field'=>'在下方欄位輸入自訂日期格式','Plugins updated successfully.'=>'外掛已成功更新。','Active plugin installations%s+ Million'=>'超過 %s 百萬','XML Error: %1$s at line %2$s'=>'XML 錯誤: %1$s (發生於第 %2$s 行)','Main menu'=>'主要選單','Enter the location on the server where the public and private keys are located. If a passphrase is needed, enter that in the password field above.'=>'請輸入公開金鑰及私密金鑰在伺服器上的位置。如果需要密碼,請在上方密碼欄位中輸入必要的密碼。','%s user deleted.'=>'%s 個使用者已刪除。','What should be done with content owned by these users?'=>'如何處理屬於這些使用者的內容?','You have specified these users for deletion:'=>'目前指定刪除的使用者如下所列:','You are about to remove the following plugins:'=>'即將移除以下外掛:','These plugins may be active on other sites in the network.'=>'這些外掛已於多站網路的其他網站中啟用。','Delete Plugins'=>'刪除外掛','1 page not updated, somebody is editing it.'=>'由於某個使用者正在進行編輯,所以有 1 個頁面未更新。','1 post not updated, somebody is editing it.'=>'由於某個使用者正在進行編輯,所以有 1 篇文章未更新。','You can log out of other devices, such as your phone or a public computer, by clicking the Log Out Everywhere Else button.'=>'使用者可以在這裡統一登出其他裝置。舉例來說,如果要從手機或公用電腦登出,僅需點擊 [從除了這台裝置之外的全部裝置登出] 按鈕即可。','New translations are available.'=>'已有新版語言套件可供更新。','This theme has not been rated yet.'=>'這個佈景主題尚無任何評分。','timezone date formatY-m-d H:i:s'=>'Y 年 n 月 j 日a g:i:s','To add a custom link, expand the Custom Links section, enter a URL and link text, and click Add to Menu'=>'如需新增自訂連結,請展開 [自訂連結] 區段並輸入網址及連結文字,然後點擊 [新增至選單] 便可完成。','Howdy ###USERNAME###, + +You recently clicked the \'Delete Site\' link on your site and filled in a +form on that page. + +If you really want to delete your site, click the link below. You will not +be asked to confirm again so only click this link if you are absolutely certain: +###URL_DELETE### + +If you delete your site, please consider opening a new site here some time in +the future! (But remember that your current site and username are gone forever.) + +Thank you for using the site, +All at ###SITENAME### +###SITEURL###'=>'###USERNAME### 你好, + +你最近在你的網站上點擊了 [刪除網站] 連結,並且在該頁面上完成表單填寫。 + +如果確定要刪除網站,請點擊下方連結,之後便不會再次要求進行刪除確認: +###URL_DELETE### + +刪除網站後,將來還可以再建立一個新網站!需要注意的是,目前的網站及使用者名稱會永遠消失。 + +感謝你的使用, +《###SITENAME###》網站管理員敬上 +###SITEURL###','Close details dialog'=>'關閉詳細資料對話方塊','You are currently editing the page that shows your latest posts.'=>'目前正在編輯顯示這個網站最新文章的頁面。','Number of items per page:'=>'每頁顯示項目數量:','revision date short formatj M @ H:i'=>'n 月 j 日a g:i','Size in megabytes'=>'網站儲存空間大小 (單位為 MB)','Site Upload Space Quota'=>'網站上傳空間配額','UPDATE LOG +=========='=>'更新記錄 +==========','BETA TESTING? +============= + +This debugging email is sent when you are using a development version of WordPress. + +If you think these failures might be due to a bug in WordPress, could you report it? + * Open a thread in the support forums: https://wordpress.org/support/forum/alphabeta + * Or, if you\'re comfortable writing a bug report: https://core.trac.wordpress.org/ + +Thanks! -- The WordPress Team'=>'網站正在進行 BETA 版測試? +============= + +當網站執行的是 WordPress 開發版本時,系統便會將這封偵錯電子郵件傳送給網站管理員。 + +如果你認為網站發生的問題肇因於 WordPress 的程式碼錯誤,可否請你回報這些錯誤? + * 請在技術支援論壇建立一個新的討論串:https://wordpress.org/support/forum/alphabeta + * 或撰寫一份程式碼錯誤報告:https://core.trac.wordpress.org/ + +由衷感謝! -- WordPress 團隊','M j, Y @ H:i'=>'Y 年 n 月 j 日a g:i','Submitted on'=>'發佈日期','In response to'=>'回應目標','%1$s %2$s, %3$s at %4$s:%5$s'=>'%3$s 年 %1$s %2$s 日 %4$s:%5$s','Sorry, you are not allowed to manage fonts on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上管理字型的權限。','You are only logged in at this location.'=>'執行這項操作後,僅會保留這台裝置的登入工作階段。','These suggestions are based on the plugins you and other users have installed.'=>'這些建議是依據這個網站及其他使用者安裝過的外掛所產生的結果。','You can enable distraction-free writing mode using the icon to the right. This feature is not available for old browsers or devices with small screens, and requires that the full-height editor be enabled in Screen Options.'=>'使用者可以點擊位於右側的圖示以啟用 [專注模式]。這項功能不適用於舊版瀏覽器或小螢幕裝置,且必須先在 [顯示項目設定] 中啟用全版高度編輯器。','Log Out Everywhere'=>'從全部裝置登出','Plugin InstallerRecommended'=>'推薦','Your new WordPress site has been successfully set up at: + +%1$s + +You can log in to the administrator account with the following information: + +Username: %2$s +Password: %3$s +Log in here: %4$s + +We hope you enjoy your new site. Thanks! + +--The WordPress Team +https://wordpress.org/ +'=>'新的 WordPress 網站已成功建立,網址如下: + +%1$s + +請使用以下資訊登入網站管理員帳號: + +使用者名稱:%2$s +密碼:%3$s +登入頁面網址:%4$s + +希望你會喜歡這個新網站,感謝使用! + +-- WordPress 團隊 +https://tw.wordpress.org/ +','You cannot delete a theme while it has an active child theme.'=>'無法刪除使用中的子佈景主題的上層佈景主題。','Mystery Person'=>'神秘人士','Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol.'=>'使用者名稱只能使用數字、英文字母、空白、底線、連字號、句號及 @ 符號。','Enable full-height editor and distraction-free functionality.'=>'啟用全版高度編輯器及 [專注模式]','https://planet.wordpress.org/feed/'=>'https://planet.wordpress.org/feed/','https://planet.wordpress.org/'=>'https://planet.wordpress.org/','Untested with your version of WordPress'=>'尚未與這個網站的 WordPress 版本進行相容性測試','All categories'=>'全部分類','Filter by comment type'=>'依留言類型篩選','%s has been logged out.'=>'「%s」已登出。','You are now logged out everywhere else.'=>'已在除了這台裝置之外的全部裝置登出。','Could not log out user sessions. Please try again.'=>'無法登出使用者工作階段,請再試一次。','This preview is unavailable in the editor.'=>'無法在編輯器中預覽。','You can insert media files by clicking the button above the post editor and following the directions. You can align or edit images using the inline formatting toolbar available in Visual mode.'=>'使用者可以點擊文章編輯器上方的按鈕並依照指示以插入媒體檔案,還可以在 [預覽] 模式中使用格式化工具列以對齊或編輯圖片。','Post editor — Enter the text for your post. There are two modes of editing: Visual and Code. Choose the mode by clicking on the appropriate tab.'=>'文章編輯器 — 作者撰寫文章內容的區域。文章編輯器提供 [預覽] 及 [程式碼] 兩種編輯模式,可透過點擊對應的編輯模式分頁進行切換。','You can now manage and live-preview Custom Header in the Customizer.'=>'網站管理員可以在外觀自訂器中管理並即時預覽自訂頁首。','You can now manage and live-preview Custom Backgrounds in the Customizer.'=>'網站管理員可以在外觀自訂器中進行管理並即時預覽自訂背景。','Welcome panelWelcome'=>'歡迎使用','usersAll (%s)'=>'全部 (%s)','link nameName'=>'連結名稱','If you like, you may enter custom structures for your category and tag URLs here. For example, using topics as your category base would make your category links like %s/topics/uncategorized/. If you leave these blank the defaults will be used.'=>'如有需要,網站管理員可以為這個網站自訂分類及標籤的網址結構。舉例來說,將 topics 設定為這個網站的分類目錄起點,則分類彙整網址會成為 %s/topics/uncategorized/。如果在 [分類目錄起點] 及 [標籤目錄起點] 欄位留空,代表使用系統預設值。','Release Lead'=>'產品發佈負責人','Use the arrow buttons at the top of the dialog, or the left and right arrow keys on your keyboard, to navigate between media items quickly.'=>'使用對話方塊頂端的箭號按鈕或鍵盤上的向左/向右鍵,便能快速瀏覽媒體檔案內容。','You can also delete individual items and access the extended edit screen from the details dialog.'=>'在 [附件詳細資料] 對話方塊中也可以刪除單一項目,或存取進階編輯畫面。','Clicking an item will display an Attachment Details dialog, which allows you to preview media and make quick edits. Any changes you make to the attachment details will be automatically saved.'=>'點擊媒體檔案便會出現 [附件詳細資料] 對話方塊,在這個對話方塊中使用者可以預覽媒體並進行快速編輯。使用者對附件詳細資料所進行的變更均會自動儲存。','You can view your media in a simple visual grid or a list with columns. Switch between these views using the icons to the left above the media.'=>'使用者可以透過簡潔的 [格狀檢視] 或 [清單檢視] 進行媒體檔案的視覺化檢視。請使用媒體清單上方檢視方式左側的圖示切換檢視方式。','All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first.'=>'使用者上傳的全部檔案均會顯示於 [媒體庫],並會依上傳時間排序列出。','If you just want to get an idea of what’s available, you can browse Featured and Popular plugins by using the links above the plugins list. These sections rotate regularly.'=>'如果只想了解有哪些不錯的外掛可供選用,請使用外掛清單上方的 [精選] 及 [熱門] 分頁來瀏覽外掛,這兩項分類的內容會常態新更新。','Browse Plugins'=>'瀏覽外掛','Add Plugins'=>'安裝外掛','The %1$s constant in your %2$s file is no longer needed.'=>'這個網站的 %2$s 檔案中的常數 %1$s 已不再需要。','Invalid translation type.'=>'無效的語言套件類型。','Welcome to the famous five-minute WordPress installation process! Just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world.'=>'歡迎使用著名的 WordPress 五分鐘安裝程式!僅需填寫以下資訊,便能開始使用這個世界上最具擴充性、功能最強大的個人發佈平台。','Compatible with your version of WordPress'=>'相容於這個網站的 WordPress 版本','Incompatible with your version of WordPress'=>'不相容於這個網站的 WordPress 版本','%d star'=>'%d 星','Select bulk action'=>'選取批次操作','Add the user without sending an email that requires their confirmation'=>'不須傳送使用者確認郵件,直接新增使用者','The grid view for the Media Library requires JavaScript. Switch to the list view.'=>'媒體庫的格狀檢視需要 JavaScript 才能使用。切換至清單檢視。','Contributors'=>'參與者','Donate to this plugin »'=>'贊助這個外掛 »','Plugin installer section titleReviews'=>'使用者評論','The WordPress team is willing to help you. Forward this email to %s and the team will work with you to make sure your site is working.'=>'WordPress 團隊非常願意協助你。請將這封電子郵件轉寄至 %s,我們的團隊將會協助你以確保網站正常運作。','themesRecently Updated'=>'最近更新','Number/count of itemsCount'=>'項目數量','View details'=>'檢視詳細資料','More Details'=>'更多詳細資料','Plugin installer group titleTools'=>'工具','Plugin installer group titleSocial'=>'社交','Plugin installer group titlePerformance'=>'效能','Plugin InstallerBeta Testing'=>'Beta 版測試','%s failed to embed.'=>'無法嵌入來自 %s 的內容。','Filtering by:'=>'篩選條件:','Displayed on attachment pages.'=>'[內容說明] 欄位的資料會顯示於附件頁面。','You can edit the image while preserving the thumbnail. For example, you may wish to have a square thumbnail that displays just a section of the image.'=>'編輯圖片後仍會保留原始圖片的縮圖。也就是說,圖片在經過編輯後,仍能保留一張僅顯示原始圖片部分畫面的正方形縮圖。','Once you have made your selection, you can adjust it by entering the size in pixels. The minimum selection size is the thumbnail size as set in the Media settings.'=>'選取裁剪保留範圍後,便可以透過直接輸入尺寸值進行調整 (單位為 px)。請注意,圖片裁剪保留範圍尺寸不要小於 [設定]→[媒體] 中的 [縮圖尺寸] 設定。','The aspect ratio is the relationship between the width and height. You can preserve the aspect ratio by holding down the shift key while resizing your selection. Use the input box to specify the aspect ratio, e.g. 1:1 (square), 4:3, 16:9, etc.'=>'外觀比例就是圖片的寬度及高度比例。調整裁剪保留範圍時按住 Shift 鍵,便可保持保留範圍的長寬比。輸入數值便能直接指定外觀比例,例如 1:1 (正方形)、4:3、16:9 等等。','To crop the image, click on it and drag to make your selection.'=>'如需裁剪圖片,請點擊圖片並拖曳出裁剪保留範圍。','You can proportionally scale the original image. For best results, scaling should be done before you crop, flip, or rotate. Images can only be scaled down, not up.'=>'這項操作可以按比例調整圖片尺寸。為達到最佳效果,請在圖片進行裁剪、翻轉、旋轉前完成圖片尺寸調整。請注意,這項操作只能縮小圖片尺寸,無法將圖片放大。','Keyboard users: When you are working in the visual editor, you can use %s to access the toolbar.'=>'鍵盤使用者請注意,在編輯器的 [預覽] 模式中,使用者可以按下 %s 以存取工具列。','A red bar on the left means the comment is waiting for you to moderate it.'=>'留言左方出現紅色粗線代表該則留言需要進行審閱。','All comment types'=>'全部留言類型','themesLatest'=>'最新上架','themesPopular'=>'熱門','themesFeatured'=>'精選','Attribute all content to:'=>'將全部內容指派給指定使用者:','Delete all content.'=>'刪除全部內容','What should be done with content owned by this user?'=>'如何處理屬於這個使用者的內容?','Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their content. You can also delete multiple users at once by using bulk actions.'=>'刪除 — 點擊 [刪除] 連結便會進入 [刪除使用者] 頁面以進行確認。在 [刪除使用者] 頁面中,網站管理員可以從網站中永久刪除使用者及其撰寫的內容,也可以使用 [批次操作] 一次刪除多個使用者。','Remove allows you to remove a user from your site. It does not delete their content. You can also remove multiple users at once by using bulk actions.'=>'移除 — 點擊 [移除] 連結便可將使用者從這個網站中移除,也可以使用 [批次操作] 批次移除多個使用者。這項操作不會刪除他們所建立的內容。','themeDetails & Preview'=>'詳細資料及預覽','Search Themes'=>'搜尋佈景主題','Add Themes'=>'安裝佈景主題','https://wordpress.org/support/forum/how-to-and-troubleshooting'=>'https://wordpress.org/support/forum/how-to-and-troubleshooting/','At a Glance — Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.'=>'網站概況 — 顯示目前網站狀況的內容摘要,例如網站所使用的佈景主題及 WordPress 版本等資訊。','Box Controls — Click the title bar of the box to expand or collapse it. Some boxes added by plugins may have configurable content, and will show a “Configure” link in the title bar if you hover over it.'=>'區塊控制項 — 點擊區塊的標題列便能展開或收合該區塊。由外掛所加入的區塊包含相關設定項目,游標暫留於這類區塊的標題列時,便會顯示 [設定] 連結。','Sorry, you are not allowed to resume this theme.'=>'很抱歉,目前的登入身分沒有恢復使用這個佈景主題的權限。','Edit date and time'=>'編輯日期及時間','Browse revisions'=>'瀏覽內容修訂','Edit visibility'=>'編輯可見度','Edit status'=>'編輯狀態','Support forums'=>'技術支援論壇','Thank you for creating with WordPress.'=>'感謝採用 WordPress 進行創作','Translations — The files translating WordPress into your language are updated for you whenever any other updates occur. But if these files are out of date, you can click the “Update Translations” button.'=>'語言套件 — WordPress 的語言套件在其他項目進行更新時會一併更新。當新版語言套件可供安裝時,請點擊 [更新語言套件] 按鈕進行更新。','In most cases, WordPress will automatically apply maintenance and security updates in the background for you.'=>'在大多數情況下,WordPress 會在背景自動安裝維護及安全性更新版本。','WordPress — Updating your WordPress installation is a simple one-click procedure: just click on the “Update now” button when you are notified that a new version is available.'=>'WordPress 核心程式 — 更新 WordPress 網站的核心程式的方式非常簡便,有新版本可供下載安裝時,點擊 [立即更新] 按鈕即可。','If an update is available, you᾿ll see a notification appear in the Toolbar and navigation menu.'=>'如有更新可供下載安裝,網站管理員會在工具列及導覽選單接收到通知。','Themes and Plugins — To update individual themes or plugins from this screen, use the checkboxes to make your selection, then click on the appropriate “Update” button. To update all of your themes or plugins at once, you can check the box at the top of the section to select all before clicking the update button.'=>'佈景主題及外掛 — 如需在這個畫面更新個別佈景主題或外掛,請先核取需要更新的項目,然後點擊外掛或佈景主題區段下方的 [更新] 按鈕。如需更新全部外掛或佈景主題,請核取對應區段上方的全選方塊,然後點擊 [更新] 按鈕。','If you would like to see more themes to choose from, click on the “Add Theme” button and you will be able to browse or search for additional themes from the WordPress Theme Directory. Themes in the WordPress Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they are free!'=>'如需查看更多佈景主題並進行選取及安裝,點擊 [安裝佈景主題] 便可以在 WordPress 佈景主題目錄中瀏覽或搜尋佈景主題。WordPress 佈景主題目錄內的佈景主題是由第三方設計與開發,且相容於 WordPress 所採用的授權方式。最棒的是,他們都是免費佈景主題!','%1$s MB (%2$s%%) Space Used'=>'已使用 %1$s MB (%2$s%%) 的儲存空間','%s MB Space Allowed'=>'%s MB 可用儲存空間','M jS'=>'n 月 j 日','When this setting is in effect, a reminder is shown in the At a Glance box of the Dashboard that says, “Search engines discouraged”, to remind you that you have directed search engines to not crawl your site.'=>'啟用這項設定後,控制台上的 [網站概況] 區塊將會出現 [已阻擋搜尋引擎進行索引] 提示訊息,以提醒網站管理員這個網站已通知搜尋引擎不要進行檢索。','At a Glance'=>'網站概況','themeActive:'=>'目前使用的佈景主題:','Accessibility Ready'=>'無障礙支援','This is a child theme of %s.'=>'這是 %s 的子佈景主題。','When previewing on smaller monitors, you can use the collapse icon at the bottom of the left-hand pane. This will hide the pane, giving you more room to preview your site in the new theme. To bring the pane back, click on the collapse icon again.'=>'使用者在較小螢幕的裝置上進行預覽時,點擊左下方的 [收合選單] 小圖示便能隱藏左側窗格,以便有較大的檢視範圍預覽這個網站套用新佈景主題後的外觀。如需展開左側窗格,請再次點擊 [收合選單] 小圖示即可。','The theme being previewed is fully interactive — navigate to different pages to see how the theme handles posts, archives, and other page templates. The settings may differ depending on what theme features the theme being previewed supports. To accept the new settings and activate the theme all in one step, click the Activate & Publish button above the menu.'=>'網站管理員即時預覽佈景主題時,可以進行完整的互動式操作;透過瀏覽不同頁面,網站管理員查看這個佈景主題如何顯示文章、彙整頁面或其他頁面範本。不同的佈景主題,在預覽畫面能提供的設定也不同;點擊選單上方的 [啟用並發佈] 按鈕,便能一鍵啟用佈景主題並套用已完成的設定。','Tap or hover on any theme then click the Live Preview button to see a live preview of that theme and change theme options in a separate, full-screen view. You can also find a Live Preview button at the bottom of the theme details screen. Any installed theme can be previewed and customized in this way.'=>'輕觸或將游標暫留於已安裝的佈景主題上,點擊 [即時預覽] 按鈕便可進行即時預覽,並可於個別頁面檢視這個佈景主題及變更佈景主題選項。未啟用的佈景主題的 [佈景主題詳細資料] 畫面,最底部也有 [即時預覽] 按鈕;任何已安裝的佈景主題,都能透過這個方式進行預覽及自訂。','The active theme is displayed highlighted as the first theme.'=>'以醒目方式標示、且排序第一的佈景主題,就是這個網站目前使用的佈景主題。','Click Customize for the active theme or Live Preview for any other theme to see a live preview'=>'點擊目前使用的佈景主題的 [自訂] 或其他佈景主題的 [即時預覽] 按鈕,便能即時預覽佈景主題外觀。','Click on the theme to see the theme name, version, author, description, tags, and the Delete link'=>'點擊佈景主題便能查看佈景主題名稱、版本、開發者、內容說明、標籤及 [刪除] 連結。','Hover or tap to see Activate and Live Preview buttons'=>'輕觸或將游標暫留於已安裝的佈景主題上,便會顯示 [啟用] 及 [即時預覽] 按鈕。','This screen is used for managing your installed themes. Aside from the default theme(s) included with your WordPress installation, themes are designed and developed by third parties.'=>'這個畫面用來管理已安裝的佈景主題。除了 WordPress 安裝時一併安裝的預設佈景主題外,其他佈景主題均由第三方設計開發。','To activate a widget drag it to a sidebar or click on it. To deactivate a widget and delete its settings, drag it back.'=>'如需啟用指定的小工具,將它拖放至資訊欄或點擊小工具標題;如需停用指定的小工具並刪除原有設定,將指定小工具拖放回 [可用的小工具] 區域即可。','%s rating'=>'%s 分','%1$s rating based on %2$s rating'=>'%1$s 分 (依據 %2$s 次評分)','This screen shows an individual user all of their sites in this network, and also allows that user to set a primary site. They can use the links under each site to visit either the front end or the dashboard for that site.'=>'這個畫面顯示個別使用者在這個多站網路中所擁有的全部網站站台,並可讓使用者將其中一個設定為主要網站。他們可以點擊個別網站下方的連結以造訪網站首頁或控制台。','Error: [%1$s] %2$s'=>'錯誤:%2$s (錯誤代碼 %1$s)','Rollback Error: [%1$s] %2$s'=>'復原錯誤:%2$s (錯誤代碼 %1$s)','The following translations failed to update:'=>'下列語言套件更新失敗:','The following themes failed to update:'=>'下列佈景主題更新失敗:','The following plugins failed to update:'=>'下列外掛更新失敗:','The following translations were successfully updated:'=>'下列語言套件已成功更新:','The following themes were successfully updated:'=>'下列佈景主題已成功更新:','The following plugins were successfully updated:'=>'下列外掛已成功更新:','Add Widget'=>'新增小工具','Show next theme'=>'顯示下一個佈景主題','Show previous theme'=>'顯示上一個佈景主題','Update Available'=>'已有更新可供安裝','Are you sure you want to delete this theme? + +Click \'Cancel\' to go back, \'OK\' to confirm the delete.'=>'確定要刪除這個佈景主題? + +點擊 [取消] 以返回,點擊 [確定] 以確認刪除。','Unable to submit this form, please refresh and try again.'=>'無法提交這份表單,請重新整理後再試一次。','Quick Draft — Allows you to create a new post and save it as a draft. Also displays links to the 3 most recent draft posts you\'ve started.'=>'快速草稿 — 這個區塊能讓使用者新增文章並儲存為草稿,還能顯示屬於使用者的最近 3 篇草稿的連結,以供草稿作者完成文章。','Activity — Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them.'=>'網站活動 — 除了顯示即將發佈及最新發佈的文章外,還會顯示文章的近期留言,讓具備留言管理權限的使用者能夠進行審閱。','Screen Options — Use the Screen Options tab to choose which Dashboard boxes to show.'=>'顯示項目設定 — 使用 [顯示項目設定] 分頁以選擇要於控制台顯示的區塊。','Manage Uploads'=>'管理上傳','Popular Plugin'=>'熱門外掛','Tomorrow'=>'明天','No activity yet!'=>'目前沒有活動。','Recently Published'=>'最新發佈','Publishing Soon'=>'即將發佈的內容','What’s on your mind?'=>'簡單記錄心中所思所想','WordPress %1$s running %2$s theme.'=>'這個網站以 WordPress %1$s 建置,目前使用的佈景主題為 %2$s。','Quick Draft'=>'快速草稿','FAILED: %s'=>'發生錯誤:%s','SUCCESS: %s'=>'已完成:%s','FAILED: WordPress failed to update to %s'=>'發生錯誤:WordPress 無法更新至 %s','SUCCESS: WordPress was successfully updated to %s'=>'已完成:WordPress 已成功更新至 %s','WordPress site: %s'=>'WordPress 網站:%s','Your site was running version %s.'=>'這個網站執行於 WordPress %s。','Your site at %1$s experienced a critical failure while trying to update WordPress to version %2$s.'=>'在嘗試更新至 WordPress %2$s 時,網址為 %1$s 的網站發生嚴重錯誤。','WordPress %s is also now available.'=>'WordPress %s 已可供下載安裝。','The update cannot be installed because your site is unable to copy some files. This is usually due to inconsistent file permissions.'=>'由於無法複製某些檔案,因此無法安裝更新。這個狀況通常是由不正確的檔案權限所造成。','Your translations are all up to date.'=>'這個網站的全部語言套件均為最新版本。','Translations'=>'語言套件','Error code: %s'=>'錯誤代碼:%s','Your hosting company, support forum volunteers, or a friendly developer may be able to use this information to help you:'=>'提供以下資訊給這個網站的主機服務提供商、WordPress 技術支援論壇成員或相關開發者,他們便能使用這些資訊提供協助:','The WordPress Team'=>'WordPress 團隊','You also have some plugins or themes with updates available. Update them now:'=>'這個網站的某些外掛或佈景主題已有更新可供安裝。立即更新這些項目:','If you experience any issues or need support, the volunteers in the WordPress.org support forums may be able to help.'=>'如果你遇到任何問題或需要技術支援,請前往 WordPress.org 技術支援論壇,論壇中的社群成員或許能夠提供協助。','Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers.'=>'持續為網站進行更新對網站安全性而言至關重要,持續更新也會讓這個網站及網站使用者更加安全。','Please check out your site now. It\'s possible that everything is working. If it says you need to update, you should do so:'=>'請立即查看這個網站,網站可能仍一切如常。如果提示要為網站進行更新,請依照指示進行:','This means your site may be offline or broken. Don\'t panic; this can be fixed.'=>'這代表這個網站發生離線或無法使用。別擔心,這是可以修復的狀況。','Your site at %1$s experienced a critical failure while trying to update to the latest version of WordPress, %2$s.'=>'在嘗試更新至最新的 WordPress %2$s 時,網址為 %1$s 的網站發生嚴重錯誤。','Updating is easy and only takes a few moments:'=>'更新網站的方式很簡單,且僅需一點時間即可完成:','Please update your site at %1$s to WordPress %2$s.'=>'請將網址為 %1$s 的網站更新至 WordPress %2$s。','For more on version %s, see the About WordPress screen:'=>'如需進一步了解 %s 版的資訊,請參閱〈關於 WordPress〉頁面:','No further action is needed on your part.'=>'你不需要進行任何操作。','Howdy! Your site at %1$s has been updated automatically to WordPress %2$s.'=>'你好,你的網站 (網址為 %1$s) 已自動更新至 WordPress %2$s。','[%1$s] URGENT: Your site may be down due to a failed update'=>'《%1$s》緊急通知:網站因更新失敗導致無法正常運作','[%1$s] WordPress %2$s is available. Please update!'=>'《%1$s》通知:WordPress %2$s 已可供下載更新,請完成更新!','[%1$s] Your site has updated to WordPress %2$s'=>'《%1$s》通知:網站已更新至 WordPress %2$s','Translations for %s'=>'%s 的語言套件','Updating translations for %1$s (%2$s)…'=>'正在更新 %1$s (%2$s) 的語言套件...','Update Translations'=>'更新語言套件','Background updates'=>'背景更新','There is not enough free disk space to complete the update.'=>'沒有足夠的磁碟空間進行更新。','Updating plugin: %s'=>'正在更新外掛 %s','Updating theme: %s'=>'正在更新佈景主題 %s','Translation updated successfully.'=>'語言套件已成功更新。','Translation update failed.'=>'語言套件更新失敗。','Some of your translations need updating. Sit tight for a few more seconds while they are updated as well.'=>'語言套件需要進行更新。更新需時,請稍候片刻。','Create a brand new user and add them to this site.'=>'新增一個全新的使用者,並將使用者加入這個網站。','Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead.'=>'更新佈景主題後的新檔案會覆寫既有的客製化變更。要避免這種狀況發生,請先建立子佈景主題,然後才在子佈景主題中進行客製化變更。','The sizes listed below determine the maximum dimensions in pixels to use when adding an image to the Media Library.'=>'下方所列出的尺寸,決定了將圖片新增至 [媒體庫] 後會產生的各式圖片最大尺寸 (單位為 px)。','Comment must be manually approved'=>'留言必須由相關站務人員手動核准','Clicking the arrow to the right of any menu item in the editor will reveal a standard group of settings. Additional settings such as link target, CSS classes, link relationships, and link descriptions can be enabled and disabled via the Screen Options tab.'=>'在 [編輯選單] 分頁中點擊任一選單項目右側的箭頭,便會顯示一組標準設定。其他設定例如連結目標開啟方式、CSS 類別、連結目標的人際關係及連結內容說明等,均可在 [顯示項目設定] 分頁裡啟用或停用。','Menus can be displayed in locations defined by your theme, even used in sidebars by adding a “Navigation Menu” widget on the Widgets screen. If your theme does not support the navigation menus feature (the default themes, %2$s and %3$s, do), you can learn about adding this support by following the documentation link to the side.'=>'每個佈景主題提供的選單位置不盡相同,而選單除了可以顯示於佈景主題提供的位置外,還可以透過 [小工具] 頁面的 [導覽選單] 小工具顯示於資訊欄。如果這個網站使用的佈景主題不支援導覽選單功能 (預設佈景主題 %2$s 和 %3$s 均支援),請查閱側邊的說明文件以進一步了解如何為佈景主題加入這項功能的支援。','Your theme does not natively support menus, but you can use them in sidebars by adding a “Navigation Menu” widget on the Widgets screen.'=>'目前使用的佈景主題無法以原生方式支援選單功能,但你可以在 [小工具] 頁面中新增 [導覽選單] 小工具。','Sorry, that is not a valid email address. Email addresses look like username@example.com.'=>'很抱歉,這是無效的電子郵件地址,電子郵件地址的正確格式應為 username@example.com。','You must provide an email address.'=>'請務必提供你的電子郵件地址。','Your passwords do not match. Please try again.'=>'輸入的密碼不相符。請再試一次。','The username you provided has invalid characters.'=>'輸入的使用者名稱包含無效的字元。','Please provide a valid username.'=>'請提供正確的使用者名稱。','Copying the required files…'=>'正在複製必要的檔案...','Preparing to install the latest version…'=>'正在準備安裝最新版本...','This password will not be stored on the server.'=>'密碼不會儲存於伺服器上。','The checksum of the file (%1$s) does not match the expected checksum value (%2$s).'=>'檔案的總和檢查碼 (%1$s) 與預期的總和檢查碼值 (%2$s) 不相符。','WordPress %s'=>'WordPress %s','Updating to WordPress %s'=>'正在更新至 WordPress %s','Due to an error during updating, WordPress has been restored to your previous version.'=>'由於更新時發生錯誤,因此 WordPress 已還原至安裝更新前的版本。','Looking for %1$s in %2$s'=>'正在資料夾 %2$s 中尋找 %1$s','%s page restored from the Trash.'=>'%s 個頁面已從回收桶還原。','%s page moved to the Trash.'=>'%s 個頁面已移至回收桶。','%s page permanently deleted.'=>'%s 個頁面已永久刪除。','%s page not updated, somebody is editing it.'=>'由於某個使用者正在進行編輯,所以有 %s 個頁面未更新。','%s page updated.'=>'%s 個頁面已更新。','%s post restored from the Trash.'=>'%s 篇文章已從回收桶還原。','%s post moved to the Trash.'=>'%s 篇文章已移至回收桶。','%s post permanently deleted.'=>'%s 篇文章已永久刪除。','%s post not updated, somebody is editing it.'=>'由於某個使用者正在進行編輯,所以有 %s 篇文章未更新。','Tags deleted.'=>'標籤已刪除。','Tag not updated.'=>'標籤未更新。','Tag not added.'=>'標籤未新增。','Tag updated.'=>'標籤已更新。','Tag deleted.'=>'標籤已刪除。','Tag added.'=>'標籤已新增。','Categories deleted.'=>'分類已刪除。','Category not updated.'=>'分類未更新。','Category not added.'=>'分類未新增。','Category updated.'=>'分類已更新。','Category deleted.'=>'分類已刪除。','Category added.'=>'分類已新增。','Compare two different revisions by selecting the “Compare any two revisions” box to the side.'=>'啟用 [比較任意兩份內容修訂] 功能便能比較兩個不同版本的內容修訂。','Compare any two revisions'=>'比較任意兩份內容修訂','Restore This Autosave'=>'還原這份自動儲存','Current Revision by %s'=>'目前內容修訂的作者為「%s」','Autosave by %s'=>'自動儲存的作者為「%s」','revisionsBrowse'=>'瀏覽','Revisions: %s'=>'內容修訂: %s 個版本','"%s".'=>'〈%s〉。','"%1$s" by %2$s.'=>'由「%2$s」創作的〈%1$s〉。','"%1$s" from %2$s.'=>'來自《%2$s》專輯中的〈%1$s〉。','"%1$s" from %2$s by %3$s.'=>'來自由「%3$s」創作的《%2$s》專輯中的〈%1$s〉。','Revision by %s'=>'內容修訂的作者為「%s」','Connection lost. Saving has been disabled until you are reconnected.'=>'與網站伺服器失去連線。在恢復連線前,儲存功能為停用狀態。','Repeat Password'=>'重複輸入密碼','Repeat New Password'=>'重複輸入新密碼','Add menu items from the column on the left.'=>'請從左側欄位新增選單項目。','Plugins extend and expand the functionality of WordPress. You may install plugins from the WordPress Plugin Directory right on this page, or upload a plugin in .zip format by clicking the button above.'=>'外掛可以擴充及增強 WordPress 的功能。網站管理員可以在這個頁面自動安裝來源為 WordPress 外掛目錄的外掛,或點擊上方的 [上傳外掛] 按鈕上傳 ZIP 格式的外掛安裝套件壓縮檔進行手動安裝。','http://wordpress.org/plugins/hello-dolly/'=>'https://tw.wordpress.org/plugins/hello-dolly/','The theme contains no files.'=>'這個佈景主題的安裝套件中不包含任何檔案。','The package contains no files.'=>'這個安裝套件不包含任何檔案。','To navigate between revisions, drag the slider handle left or right or use the Previous or Next buttons.'=>'如需瀏覽不同版本的內容修訂,請左右拖曳滑桿點擊 [上一版]、[下一版] 按鈕。','Loading…'=>'正在載入...','This item has already been deleted.'=>'這個項目已刪除。','The item you are trying to restore from the Trash no longer exists.'=>'嘗試從回收桶還原的項目已不存在。','The item you are trying to move to the Trash no longer exists.'=>'嘗試移至回收桶的項目已不存在。','Drag the items into the order you prefer. Click the arrow on the right of the item to reveal additional configuration options.'=>'請在下方將各個選單項目拖放至合適的順序。點擊選單項目右側的箭號,便會顯示更多組態設定。','If you have not yet created any menus, click the ’create a new menu’ link to get started'=>'如果這個網站尚未建立任何選單,點擊 [建立選單] 連結便能開始建立選單。','To restore a revision, click Restore This Revision.'=>'如需還原某個版本的內容修訂,請瀏覽至該版本並點擊 [還原這份內容修訂]。','From this screen you can review, compare, and restore revisions:'=>'作者在這個畫面可以檢視、比較及還原內容修訂:','Revisions are saved copies of your post or page, which are periodically created as you update your content. The red text on the left shows the content that was removed. The green text on the right shows the content that was added.'=>'內容修訂是編輯文章或頁面時定時產生的副本。左側以紅色標示的文字為刪除的內容,右側以綠色標示的文字為新增的內容。','This screen is used for managing your content revisions.'=>'這個畫面用來管理這個網站的內容修訂。','Followed by post revision infoTo:'=>'第二份:','Button label for a next revisionNext'=>'下一版','Button label for a previous revisionPrevious'=>'上一版','Followed by post revision infoFrom:'=>'第一份:','menuUse new menu'=>'建立選單','menuEdit'=>'編輯','Select a Menu'=>'選取選單','Assigned Menu'=>'指派的選單','Manage Locations'=>'管理選單位置','Edit Menus'=>'編輯選單','To add a new menu instead of assigning an existing one, click the ’Use new menu’ link. Your new menu will be automatically assigned to that location in the theme.'=>'如需為佈景主題選單位置新增選單而不是指派現有選單,請點擊 [建立選單] 連結。新選單建立完畢後,會自動指派至對應的佈景主題選單位置。','To edit a menu currently assigned to a theme menu location, click the adjacent ’Edit’ link'=>'如需編輯已指派至佈景主題選單位置的選單,請點擊選單旁邊的 [編輯] 連結。','To assign menus to one or more theme menu locations, select a menu from each location’s dropdown. When you are finished, click Save Changes'=>'如需將選單指派至一或多個佈景主題選單位置,請從各別選單位置的下拉式選單中選取選單。設定完畢後,請點擊 [儲存設定]。','This screen is used for globally assigning menus to locations defined by your theme.'=>'這個畫面用來將選單直接指派至佈景主題所提供的選單位置。','Editing Menus'=>'編輯選單','Delete a menu item by expanding it and clicking the Remove link'=>'展開選單項目並點擊 [移除] 連結,便能刪除選單項目。','To reorganize menu items, drag and drop items with your mouse or use your keyboard. Drag or move a menu item a little to the right to make it a submenu'=>'如需重新排列選單項目,請以滑鼠拖放選單項目或使用鍵盤進行操作。此外,將選單項目稍往右側拖放或移動,便可使其成為子選單項目。','Add one or several items at once by selecting the checkbox next to each item and clicking Add to Menu'=>'如需一次新增一個 (含) 以上的項目,請選取個別項目的核取方塊,然後點擊 [新增至選單] 便可完成。','Each navigation menu may contain a mix of links to pages, categories, custom URLs or other content types. Menu links are added by selecting items from the expanding boxes in the left-hand column below.'=>'每個導覽選單均可包含頁面、分類、自訂網址或其他內容類型的連結。展開畫面左側的區塊,便可從中選取項目並新增為選單連結。','Menu Management'=>'選單管理','You can assign individual menus to the theme’s menu locations by selecting the desired settings at the bottom of the menu editor. To assign menus to all theme menu locations at once, visit the Manage Locations tab at the top of the screen.'=>'網站管理員可以在選單編輯器底部選取合適的設定,將特定選單指派至佈景主題提供的選單位置。如需一次將多個選單指派至佈景主題提供的全部選單位置,請至 [管理選單位置] 分頁中進行設定。','To edit an existing menu, choose a menu from the dropdown and click Select'=>'如需編輯現有的選單,請從下拉式選單選取要進行編輯的選單,然後點擊 [選取] 按鈕。','The menu management box at the top of the screen is used to control which menu is opened in the editor below.'=>'畫面頂端的選單管理框,用於選取要在下方選單編輯器進行編輯的選單。','Add, organize, and modify individual menu items'=>'新增、管理及修改個別選單項目','Create, edit, and delete menus'=>'新增、編輯及刪除選單','From this screen you can:'=>'網站管理員在這個畫面可以進行以下操作:','This screen is used for managing your navigation menus.'=>'這個畫面用來管理網站的導覽選單。','Menu locations updated.'=>'選單位置已更新。','Your latest changes were saved as a revision.'=>'你最後進行的修改已儲存為內容修訂。','Audio Codec:'=>'音訊轉碼器:','Audio Format:'=>'音訊格式:','Genre: %s.'=>'內容類型: %s。','Track %1$s of %2$s.'=>'這是專輯的音軌 %1$s,總計 %2$s 軌。','Released: %d.'=>'發行年份: %d 年。','%1$s by %2$s.'=>'由「%2$s」創作的《%1$s》。','revision date short formatj M Y @ H:i'=>'Y/n/j a g:i','Restore This Revision'=>'還原這份內容修訂','Denied: %s'=>'拒絕: %s','Capabilities'=>'權限','Menu Settings'=>'選單設定','Menu structure'=>'選單結構','To the top'=>'成為第一個選單項目','Down one'=>'下移一位','Up one'=>'上移一位','Move'=>'移動選單項目','Draft created on %1$s at %2$s'=>'草稿建立時間為 %1$s%2$s','You cannot move this item to the Trash. %s is currently editing.'=>'無法這個項目移至回收桶。「%s」目前正在編輯。','%s has taken over and is currently editing.'=>'「%s」已接管編輯工作且正在進行編輯。','Select a menu to edit:'=>'選取需要編輯的選單:','Thank you for Updating! Please visit the Upgrade Network page to update all your sites.'=>'感謝進行更新!請造訪 [升級多站網路] 頁面以更新全部網站。','All right, sparky! You’ve made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to…'=>'安裝過程相當順利!目前已完成安裝程序中重要的一步,WordPress 現在已可連線至指定資料庫。當一切準備就緒後,便請...','Client version'=>'用戶端版本','Auto add pages'=>'自動新增頁面','Give your menu a name, then click Create Menu.'=>'請輸入選單名稱,然後點擊 [建立選單]。','Edit your default menu by adding or removing items. Drag the items into the order you prefer. Click Create Menu to save your changes.'=>'透過新增或移除選單項目的方式編輯網站的預設選單,並將選單項目拖放至合適的順序,然後點擊 [儲存選單] 以儲存變更。','Menu 1'=>'選單 1','Selected menus have been successfully deleted.'=>'選取的選單已成功刪除。','For PHP files, you can use the documentation dropdown to select from functions recognized in that file. Look Up takes you to a web page with reference material about that particular function.'=>'如果編輯的是 PHP 檔案,可以先在編輯區塊下方的 [線上說明] 下拉式選單中選取檔案中的函式名稱,然後點擊 [查詢] 按鈕便會開啟這個指定函式的參考資料網頁。','Look Up'=>'查詢','The documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Look Up takes you to a web page about that particular function.'=>'編輯器下方的 [線上說明] 下拉式選單,會列出目前編輯器所載入的外掛檔案中可識別的 PHP 函式;選取函式名稱後點擊 [查詢] 按鈕,便會開啟這個指定函式的參考資料網頁。','%s is currently editing'=>'「%s」正在編輯','You can upload and insert media (images, audio, documents, etc.) by clicking the Add Media button. You can select from the images and files already uploaded to the Media Library, or upload new media to add to your page or post. To create an image gallery, select the images to add and click the “Create a new gallery” button.'=>'使用者可以點擊 [新增媒體] 按鈕以上傳或插入媒體檔案 (包含圖片、音訊、文件等等),也可以從 [媒體庫] 中選取已上傳的圖片或檔案,或將新的媒體檔案新增至頁面或文章中。如需建立圖庫,請選取要加入圖庫的圖片,然後點擊 [建立圖庫]。','Image rotation is not supported by your web host.'=>'目前使用的網站主機不支援圖片旋轉。','If you are looking to use the link manager, please install the Link Manager plugin.'=>'如需使用連結管理程式,請安裝 Link Manager 外掛。','When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive Widgets area, where all of your widgets and their settings will have been saved.'=>'為網站更換佈景主題後,小工具區域/資訊欄的數量及設定常常會發生變化,而這些不同佈景主題間的差異往往會造成佈景主題轉換過程不甚流暢。如果為網站更換佈景主題後發現找不到某些小工具,請將畫面向下捲動至 [未啟用的小工具] 區域;出現在這個區域中的小工具,便是使用於前一個佈景主題,但因為新舊佈景主題間的差異成為未啟用的小工具,這些小工具會保留之前的設定。','Parent — Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.'=>'上層分類 — 分類具備階層架構,這是它與標籤的不同之處。舉例來說,這個網站可以有個〈影集〉分類,而其下還有〈美劇〉及〈日劇〉等子分類,網站管理員可依實際使用目的規劃分類的階層架構。如需建立子分類,請先在 [上層分類] 下拉式選單中選取任一分類再進行其他操作。','Several boxes on this screen contain settings for how your content will be published, including:'=>'這個畫面包含數個設定區塊,這些設定能讓使用者決定該如何發佈內容,項目如下:','Inserting Media'=>'插入媒體檔案','The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop. You can also minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.'=>'標題欄位及文章編輯區域為固定位置,但使用者可以透過拖放方式重新排列其他區塊,還可以點擊各個區塊的標題列以收合或展開區塊。使用 [顯示項目設定] 分頁便能顯示更多區塊,例如 [內容摘要]、[傳送引用通知]、[自訂欄位]、[討論]、[代稱] 及 [作者],或設定這個畫面的版面配置為 [1 欄] 或 [2 欄]。','Do not forget to click “Save Changes” when you are done!'=>'完成設定後,請記得點擊 [儲存設定]。','To use a background image, simply upload it or choose an image that has already been uploaded to your Media Library by clicking the “Choose Image” button. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.'=>'如果網站想使用背景圖片,僅需將圖片上傳,或在點擊 [選取圖片] 按鈕後從 [媒體庫] 中選取一張已上傳的圖片。網站可以將背景圖片顯示為單張圖片,也能設定將背景圖片填滿整個畫面。背景圖片可以設定為捲動網站內容時,圖片位置固定不動,也能設定為背景圖片隨著內容捲動。','media itemEdit'=>'編輯','colorDefault: %s'=>'預設色彩: %s','column nameUploaded to'=>'關聯內容','The uploaded file is not a valid image. Please try again.'=>'上傳的檔案不是有效圖片。請再試一次。','Choose a Custom Header'=>'取自訂頁首','Choose a Background Image'=>'選取擇背景圖片','In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker.'=>'網站管理員在這個頁面的 [首頁文字] 區段中,可以設定要將頁首文字予以顯示或隱藏。網站管理員也可以點擊 [選取色彩] 按鈕為頁首文字設定色彩、輸入有效的 HTML 十六進位值 (例如紅色是 #ff0000),或使用色彩選擇器選取需要的頁首文字色彩。','You can also choose a background color by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker.'=>'網站管理員也可以點擊 [選取色彩] 按鈕選取背景色彩、輸入有效的 HTML 十六進位值 (例如紅色是 #ff0000),或使用色彩選擇器選取需要的背景色彩。','In the In response to column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows the number of approved comments that post has received. If there are pending comments, a red notification circle with the number of pending comments is displayed. Clicking the notification circle will filter the comments screen to show only pending comments on that post.'=>'[回應目標] 欄位包含三項資訊。文章標題代表留言發佈於哪篇文章,點擊文章標題會進入該篇文章的編輯畫面,而點擊 [檢視文章] 連結則會進入該篇文章在網站前端的內容頁面。文章中有多少則已核准的留言會以帶有數字的小泡泡表示,而等候審閱的留言則會以帶有數字的紅色圓圈表示。點擊小泡泡或紅色圓圈,會進入該篇文章對應狀態的留言的管理畫面。','ID #%1$s: %2$s'=>'ID 為 %1$s 的使用者 %2$s','ID #%1$s: %2$s The current user will not be deleted.'=>'ID 為 %1$s 的使用者 %2$s 目前登入的使用者不會遭到刪除。','Used: %1$s%% of %2$s'=>'已使用: 全部 %2$s 的 %1$s%%','Please select an option.'=>'請選取必要的設定。','After you’ve done that, click “Run the installation”.'=>'完成後請點擊 [執行安裝程式]。','If you want to install a plugin that you’ve downloaded elsewhere, click the Upload Plugin button above the plugins list. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin.'=>'如需安裝從其他地方取得的外掛,點擊外掛清單上方的 [上傳外掛] 按鈕,便會出現上傳 ZIP 格式的外掛壓縮檔的功能;外掛壓縮檔完成上傳及安裝後,便可以啟用這個手動安裝的新外掛。','You can also browse a user’s favorite plugins, by using the Favorites link above the plugins list and entering their WordPress.org username.'=>'網站管理員也可以在外掛清單上方的 [我的最愛] 分頁中,輸入 WordPress.org 使用者名稱以瀏覽這個指定使用者標示為 [我的最愛] 的外掛。','If you know what you are looking for, Search is your best bet. The Search screen has options to search the WordPress Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting popular tags. Tags in larger type mean more plugins have been labeled with that tag.'=>'如果非常明確的知道網站所需要的功能,搜尋便是最佳選擇。在搜尋畫面中,可透過輸入關鍵字、開發者或標籤搜尋 WordPress 外掛目錄。網站管理員也可以透過選取最受歡迎的標籤以瀏覽外掛目錄,其中以較大字體顯示的標籤代表有更多的外掛使用這個標籤進行標示。','It is up to search engines to honor this request.'=>'這項設定的效力並非絕對,完全取決於搜尋引擎是否遵守這項設定的要求。','Discourage search engines from indexing this site'=>'阻擋搜尋引擎索引這個網站','Allow search engines to index this site'=>'開放搜尋引擎為這個網站進行索引','Search engine visibility'=>'搜尋引擎可見度','Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click here.'=>'歡迎使用 WordPress %1$s,接下來將會重新導向至〈關於 WordPress〉畫面。如果並未重新導向,請點擊這個連結前往。','Get Favorites'=>'取得 [我的最愛] 清單','Your WordPress.org username:'=>'請輸入 WordPress.org 使用者名稱:','If you have marked plugins as favorites on WordPress.org, you can browse them here.'=>'如果你曾在 WordPress.org 將外掛標示為 [我的最愛],便可以在這裡瀏覽整份清單。','Welcome to WordPress!'=>'歡迎使用 WordPress!','Search engines discouraged'=>'已阻擋搜尋引擎進行索引','This child theme requires its parent theme, %2$s.'=>'這個子佈景主題需要安裝上層佈景主題 %2$s 才能使用。','Plugin InstallerFavorites'=>'我的最愛','To install the theme so you can preview it with your site’s content and customize its theme options, click the "Install" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the "Activate" link, or by navigating to your Manage Themes screen and clicking the "Live Preview" link under any installed theme’s thumbnail image.'=>'如需安裝佈景主題以透過 [即時預覽] 功能使用網站實際內容進行預覽並自訂佈景主題選項,請點擊佈景主題預覽畫面左側窗格上方的 [安裝] 按鈕進行安裝。安裝佈景主題時會自動下載安裝套件至這個網站,佈景主題安裝完畢後便隨時可供啟用;網站管理員可以在 [管理佈景主題] 頁面點擊任何已安裝佈景主題縮圖下方的 [啟用] 按鈕啟用佈景主題,或是點擊 [即時預覽] 按鈕進行即時預覽。','widgetAdd'=>'新增','widgetEdit'=>'編輯','Search by tag'=>'以標籤為條件進行搜尋','Search by author'=>'以開發者為條件進行搜尋','Search by keyword'=>'以關鍵字為條件進行搜尋','Type of search'=>'搜尋類型','Screen Options Tab'=>'[顯示項目設定] 分頁','Contextual Help Tab'=>'關聯式使用說明分頁','Select comment'=>'選取留言','Tags can be selectively converted to categories using the tag to category converter.'=>'使用分類與標籤轉換程式可將標籤選擇性地轉換成分類。','You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category.'=>'透過 [批次操作] 下拉式選單中便可刪除連結分類,這項操作不會刪除隸屬於該分類的連結,但是會將這些已無分類的連結指派至預設分類。','Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and Code modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box.'=>'建立頁面與建立文章非常相似,畫面同樣可以透過拖放、[顯示項目設定] 分頁,以及選取可展開/收合的區塊進行自訂。這個畫面一樣提供可透過按鈕切換至全螢幕的 [專注模式],並可在內容編輯器的 [預覽] 及 [程式碼] 模式進行切換。頁面編輯器與文章編輯器大同小異,差別在於頁面有它專屬的 [頁面屬性] 區塊。','You can select an image to be shown at the top of your site by uploading from your computer or choosing from your media library. After selecting an image you will be able to crop it.'=>'網站管理員可以從個人裝置上傳圖片或選取媒體庫中的圖片,然後為圖片進行裁剪。選取並完成裁剪的圖片會顯示於這個網站的頂端。','Skip to main content'=>'跳至主要內容','You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately. Alternatively, you can use an image that has already been uploaded to your Media Library by clicking the “Choose Image” button.'=>'網站管理員可以為這個網站自訂頁首圖片,僅需要上傳並裁剪圖片,新的頁首便立即生效。此外,網站管理員還可以點擊 [選取圖片] 按鈕,選取已上傳至媒體庫的圖片並設定為頁首圖片。','Skip Cropping, Publish Image as Is'=>'略過裁剪,直接發佈原始圖片','Choose Image'=>'選取圖片','Or choose an image from your media library:'=>'或從網站媒體庫中選取一張圖片:','Select Image'=>'選取圖片','If you do not want a header image to be displayed on your site at all, click the “Remove Header Image” button at the bottom of the Header Image section of this page. If you want to re-enable the header image later, you just have to select one of the other image options and click “Save Changes”.'=>'如果網站不需要顯示頁首圖片,請點擊這個頁面 [頁首圖片] 區段底部的 [移除頁首圖片] 按鈕。如果稍後需要為這個網站重新啟用頁首圖片,只需要選取其中一個圖片選項並點擊 [儲存設定]。','pluginInstalled'=>'已安裝','Previewing and Customizing'=>'預覽及自訂','Previewing and Installing'=>'預覽及安裝','Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you are interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look.'=>'網站管理員在這個畫面中,可以預覽及安裝清單中的任何一款佈景主題。點擊屬意的佈景主題縮圖便會開啟全螢幕頁面進行預覽,讓網站管理員能更加了解佈景主題套用後的實際外觀。','You are using the browser’s built-in file uploader. The WordPress uploader includes multiple file selection and drag and drop capability. .'=>'目前使用的是瀏覽器內建的檔案上傳程式。WordPress 上傳程式內建多檔案選取及拖放上傳功能。請。','The Categories and Tags Converter link on this screen will take you to the Import screen, where that Converter is one of the plugins you can install. Once that plugin is installed, the Activate Plugin & Run Importer link will take you to a screen where you can choose to convert tags into categories or vice versa.'=>'這個畫面中的 [分類與標籤轉換程式] 連結會將使用者導向至 [匯入程式] 畫面,在 [匯入程式] 畫面中,[分類與標籤轉換程式] 是可安裝的外掛之一。[分類與標籤轉換程式] 外掛完成安裝後,點擊 [啟用外掛並執行匯入程式] 便會進入選擇標籤與分類雙向轉換的畫面。','Categories have hierarchy, meaning that you can nest sub-categories. Tags do not have hierarchy and cannot be nested. Sometimes people start out using one on their posts, then later realize that the other would work better for their content.'=>'分類具備階層架構,這代表使用者可以使用巢狀子分類;標籤不具備階層架構,也無法使用巢狀子項目。使用者有時候只會在文章中使用其中一種,之後便會了解到另外一種更適合他們的內容。','For most themes, the header text is your Site Title and Tagline, as defined in the General Settings section.'=>'對大多數佈景主題而言,頁首文字就是這個網站的 [網站標題] 及 [網站說明],這兩項均可在 [設定]→[一般] 中進行設定。','If your theme has more than one default header image, or you have uploaded more than one custom header image, you have the option of having WordPress display a randomly different image on each page of your site. Click the “Random” radio button next to the Uploaded Images or Default Images section to enable this feature.'=>'如果目前使用的佈景主題可以有超過一張預設頁首圖片,或網站管理員曾經上傳超過一張頁首圖片,便會出現讓 WordPress 網站每個頁面隨機顯示不同圖片的選項。點擊 [已上傳的圖片] 或 [預設圖片] 區段旁的 [隨機] 選項按鈕以啟用這項功能。','Some themes come with additional header images bundled. If you see multiple images displayed, select the one you would like and click the “Save Changes” button.'=>'某些佈景主題會內建額外的頁首圖片。如果頁首圖片設定處顯示了多張圖片,請選取其中一張並點擊 [儲存設定] 按鈕。','You can choose from the theme’s default header images, or use one of your own. You can also customize how your Site Title and Tagline are displayed.'=>'網站管理員可以選取佈景主題內建的預設頁首圖片,或是使用已上傳至媒體庫的圖片,還可以自訂網站標題與網站說明的顯示方式。','This screen is used to customize the header section of your theme.'=>'這個畫面用來自訂目前使用的佈景主題的頁首區段。','Configuration Error'=>'組態發生錯誤','Revert to the Browser Uploader by clicking the link below the drag and drop box.'=>'點擊檔案上傳區下方的連結,即可返回瀏覽器上傳介面進行檔案上傳。','User deleted.'=>'使用者已刪除。','Could not copy files. You may have run out of disk space.'=>'無法複製檔案。這個網站已無足夠的磁碟空間。','Find a theme based on specific features.'=>'透過指定特色尋找佈景主題。','Search for themes by keyword.'=>'以關鍵字為條件搜尋佈景主題。','In all likelihood, these items were supplied to you by your web host. If you do not have this information, then you will need to contact them before you can continue. If you are ready…'=>'在多數的狀況中,這些資訊應由網站主機服務商提供。如果安裝人員並未獲得這些資訊,請在繼續安裝前先行聯絡廠商。當一切準備就緒後...','This theme is broken.'=>'這個佈景主題不完整。','Set as header'=>'設定為頁首','Set as background'=>'設定為背景','Customize “%s”'=>'自訂 %s','(required)'=>'(必填)','Edit Link'=>'編輯連結','Error: This email is already registered. Please choose another one.'=>'錯誤: 這個電子郵件地址已由其他使用者註冊使用,請使用不同的電子郵件地址註冊。','Error: Please enter a nickname.'=>'錯誤: 請輸入暱稱。','https://wordpress.org/about/'=>'https://tw.wordpress.org/about/','Select All'=>'全部選取','Public, Sticky'=>'公開、置頂','Privately Published'=>'已私密發佈','Save as Pending'=>'儲存為待審閱內容','Enter a link URL or click above for presets.'=>'輸入連結網址或點擊上方的預設集。','Link URL'=>'連結網址','No comments yet.'=>'尚無留言。','Version:'=>'版本:','Collapse Sidebar'=>'收合資訊欄','Plugin'=>'外掛名稱','All'=>'全部','Word count: %s'=>'字數統計: %s','Edit comment'=>'編輯留言','Preview:'=>'預覽:','E-mail'=>'電子郵件地址','The parent theme could not be found. You will need to install the parent theme, %s, before you can use this child theme.'=>'找不到上層佈景主題。請先安裝上層佈景主題 %s,才能使用它的子佈景主題。','Successfully installed the parent theme, %1$s %2$s.'=>'上層佈景主題 %1$s %2$s 已完成安裝。','The parent theme, %1$s %2$s, is currently installed.'=>'上層佈景主題 %1$s %2$s 版已安裝。','Preparing to install %1$s %2$s…'=>'正在準備安裝 %1$s %2$s...','This theme requires a parent theme. Checking if it is installed…'=>'這個佈景主題需要上層佈景主題。正在檢查是否已完成安裝...','Show header text with your image.'=>'與圖片一起顯示的頁首文字。','Header Text'=>'頁首文字','There is a new version of %1$s available. View version %4$s details or update now.'=>'%1$s 已有新版本可供下載安裝。請檢視 %4$s 版的詳細資料立即更新。','By %s.'=>'由 %s 開發。','Add Comment'=>'新增留言','http://ma.tt/'=>'https://ma.tt/','This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from Hello, Dolly in the upper right of your admin screen on every page.'=>'Hello Dolly 不僅是一款外掛,這兩個字更是由 Louis Armstrong 演唱的著名歌曲,同時也象徵了整整一個世代的希望和熱情。啟用這個外掛後,網站管理後台各個頁面的右上角便會隨機出現〈Hello, Dolly〉這首歌曲的歌詞。','Hello Dolly'=>'Hello Dolly','Welcome — Shows links for some of the most common tasks when setting up a new site.'=>'歡迎使用 — 新網站安裝完畢後,這個區塊會在控制台顯示最常用的任務連結。','There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this theme.'=>'%1$s 已有新版本可供下載安裝。請檢視 %4$s 版的詳細資料這個佈景主題無法自動更新。','HowdyWelcome'=>'你好','Delete My Site Permanently'=>'永久刪除我的網站','I\'m sure I want to permanently delete my site, and I am aware I can never get it back or use %s again.'=>'確定永久刪除這個網站,並清楚了解無法取回已刪除的網站或再次使用 %s。','Remember, once deleted your site cannot be restored.'=>'請注意,這個網站一經刪除便無法還原。','If you do not want to use your %s site any more, you can delete it using the form below. When you click Delete My Site Permanently you will be sent an email with a link in it. Click on this link to delete your site.'=>'如果不想再使用《%s》這個網站,可以透過下方的功能刪除網站。網站管理員點擊 [永久刪除我的網站] 後,便會收到一封內含網站刪除連結的電子郵件,點擊這個連結便能刪除這個網站。','Thank you. Please check your email for a link to confirm your action. Your site will not be deleted until this link is clicked.'=>'感謝你。請檢查是否收到一封內含確認操作連結的電子郵件。在點擊這個連結前,系統不會刪除你的網站。','Sorry, the link you clicked is stale. Please select another option.'=>'很抱歉,目前點擊的連結已失效。請選取其他設定。','Thank you for using %s, your site has been deleted. Happy trails to you until we meet again.'=>'感謝使用《%s》,你的網站已刪除。敬祝一切順利。','Primary Site'=>'主要網站','British English'=>'英國英文','American English'=>'美國英文','View Site'=>'檢視網站','Visit Dashboard'=>'造訪 [控制台]','Your Sites'=>'你的網站','If you reached this screen by accident and meant to visit one of your own sites, here are some shortcuts to help you find your way.'=>'如果是因為操作問題進入這個畫面,並打算造訪自己的網站,以下是協助你返回正確目的地的快速連結。','You attempted to access the "%1$s" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the "%1$s" dashboard, please contact your network administrator.'=>'你嘗試存取《%1$s》的控制台,但你卻沒有這個網站的管理存取權限。如果你確定自己具備存取《%1$s》控制台的權限,請聯絡多站網路管理員。','MB (Leave blank for network default)'=>'MB (欄位留空代表使用多站網路預設值)','[%s] New Admin Email Address'=>'《%s》通知:新增網站管理員電子郵件地址','Disabled'=>'已停用','Paused (%s)'=>'暫停使用 (%s)','Global Settings'=>'全域設定','You must be a member of at least one site to use this page.'=>'你必須至少是其中一個網站的成員才能使用這個頁面。','The primary site you chose does not exist.'=>'選取的主要網站不存在。','If you want to run multiple WordPress installations in a single database, change this.'=>'如需在同一個資料庫中安裝多個 WordPress,請修改這個欄位中的預設設定。','Table Prefix'=>'資料表前置詞','Database Host'=>'資料庫主機位址','example passwordpassword'=>'password','example usernameusername'=>'username','Database Name'=>'資料庫名稱','Below you should enter your database connection details. If you are not sure about these, contact your host.'=>'安裝人員應於下方輸入資料庫連線詳細資料。如果不清楚以下欄位代表的意義,請洽詢網站主機服務商。','Let’s go!'=>'開始安裝吧!','Table prefix (if you want to run more than one WordPress in a single database)'=>'資料表前置詞 (用於在單一資料庫中安裝多個 WordPress)','Database host'=>'資料庫主機位址','Database password'=>'資料庫密碼','Database username'=>'資料庫使用者名稱','Database name'=>'資料庫名稱','WordPress › Setup Configuration File'=>'WordPress › 設定網站組態檔案','The file %1$s already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now.'=>'檔案 %1$s 已存在於 WordPress 安裝目錄的上層目錄中。如需重設這個檔案內的任何組態項目,請直接刪除這個檔案,然後開始進行全新安裝。','The file %1$s already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now.'=>'檔案 %1$s 已存在。如需重設這個檔案內的任何組態項目,請直接刪除這個檔案,然後開始進行全新安裝。','Sorry, I need a %s file to work from. Please re-upload this file to your WordPress installation.'=>'很抱歉,系統需要 %s 檔案才能藉以執行。請重新上傳這個檔案至 WordPress 網站的安裝根目錄。','To allow use of this page to automatically repair database problems, please add the following line to your %s file. Once this line is added to your config, reload this page.'=>'如需允許這個頁面自動修復資料庫問題,請將下列程式碼加入這個網站的 %s 檔案。程式碼加入設定檔後,請重新載入這個頁面。','No comments awaiting moderation.'=>'目前沒有待審閱的留言。','Plugin installer section titleOther Notes'=>'其他注意事項','Plugin installer section titleChangelog'=>'變更記錄','Plugin installer section titleScreenshots'=>'螢幕擷圖','Plugin installer section titleFAQ'=>'常見問題集','Plugin installer section titleInstallation'=>'安裝方式','Plugin installer section titleDescription'=>'內容說明','Plugin Homepage »'=>'外掛首頁 »','You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.'=>'如需在其他 WordPress 網站或內容平台匯入這個網站的內容,網站管理員可將這個網站的內容匯出為單一檔案。資料匯出檔的格式是稱為 WXR 的 XML 檔案,匯出的內容會包含文章、頁面、留言、自訂欄位、分類及標籤。網站管理員可在下拉式選單中設定篩選條件,透過設定分類、作者、發佈月份或發佈狀態等篩選條件,便能讓 WXR 匯出檔僅包含符合篩選條件的內容。','Failed to repair the %1$s table. Error: %2$s'=>'無法修復資料表 %1$s。錯誤: %2$s','New users will receive an email letting them know they’ve been added as a user for your site. This email will also contain their password. Check the box if you do not want the user to receive a welcome email.'=>'新使用者會收到一封電子郵件,通知他們已新增為這個網站的使用者,郵件內容同時包含使用者的密碼。如果使用者不需要收到歡迎電子郵件,請啟用這項設定。','There are unsaved changes that will be lost. \'OK\' to continue, \'Cancel\' to return to the Image Editor.'=>'不進行儲存便會失去已完成的變更。點擊 [確定] 以繼續,點擊 [取消] 以返回圖片編輯器。','Post via email settings allow you to send your WordPress installation an email with the content of your post. You must set up a secret email account with POP3 access to use this, and any mail received at this address will be posted, so it’s a good idea to keep this address very secret.'=>'[透過電子郵件發佈文章] 設定能讓網站管理員以傳送包含文章內容電子郵件方式,將電子郵件內容在 WordPress 網站發佈為文章。網站管理員必須建立一個可透過 POP 3 通訊協定存取的秘密電子郵件帳號才能使用這項功能,而這個電子郵件地址收到的任何電子郵件都會將其內容發佈為網站文章,因此務必對這個電子郵件地址嚴加保密。','You can filter the list of users by User Role using the text links above the users list to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed.'=>'使用者可以點擊使用者清單上方的使用者角色文字連結,便會列出對應使用者角色的使用者 (全部、網站管理員、編輯、作者、投稿者或訂閱者)。預設檢視會列出全部使用者,但不會列出尚無使用者的使用者角色。','In previous versions of WordPress, all importers were built-in. They have been turned into plugins since most people only use them once or infrequently.'=>'在舊版的 WordPress 中,全部匯入程式都是內建功能。目前已將匯入程式改寫為外掛,主要是因為匯入程式多半僅需執行一次,使用率也不高。','There is an autosave of this post that is more recent than the version below. View the autosave'=>'這篇內容的自動儲存版本比目前編輯區的內容更新。檢視這份自動儲存','Image could not be processed. Please go back and try again.'=>'圖片無法進行處理。請返回,然後再試一次。','The active theme is broken. Reverting to the default theme.'=>'啟用中的佈景主題不完整。還原至預設的佈景主題。','WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing.'=>'WordPress 也會嘗試最佳化資料庫,這在某些狀況下可以增進效能。修復並最佳化資料庫會需要較長的執行時間,而進行最佳化時會鎖定資料庫。','WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient.'=>'WordPress 會自動檢查並修復某些常見的資料庫問題。修復過程需要一點時間,請耐心等候。','Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.'=>'資料庫修復完畢。請從 wp-config.php 檔案中移除下列程式碼,以避免這個頁面遭到未經授權的使用者誤用。','The %1$s table is not okay. It is reporting the following error: %2$s. WordPress will attempt to repair this table…'=>'%1$s 資料表發生問題。這個資料表的錯誤: %2$s。WordPress 會嘗試修復這個資料表...','Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.'=>'輸入這個多站網路中已存在的使用者電子郵件地址或使用者名稱,便能邀請他們加入這個網站。受到邀請的使用者將會收到一封電子郵件,要求確認這項邀請。','Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.'=>'輸入這個多站網路中已存在的使用者電子郵件地址,便能邀請他們加入這個網站。受到邀請的使用者將會收到一封電子郵件,要求確認這項邀請。','Show Toolbar when viewing site'=>'檢視網站前端時顯示工具列','For more information, see the release notes.'=>'如需進一步了解相關資訊,請參閱版本資訊。','Version %1$s addressed some security issues and fixed %2$s bug.'=>'%1$s 版修正了多個安全性問題,同時也修正了 %2$s 個程式碼錯誤。','Version %1$s addressed a security issue and fixed %2$s bug.'=>'%1$s 版修正了 1 個安全性問題,同時也修正了 %2$s 個程式碼錯誤。','Version %1$s addressed %2$s bug.'=>'%1$s 版修正了 %2$s 個程式碼錯誤。','Version %s addressed some security issues.'=>'%s 版修正了多個安全性問題。','Maintenance and Security Release'=>'維護及安全性更新版本','Security Release'=>'安全性更新版本','Maintenance Release'=>'維護版本','What’s New'=>'新增功能','This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures.'=>'網站管理員可以在這個畫面設定網站的永久連結結構,從中選取一項一般設定或建立自訂網址結構。','Welcome to WordPress %1$s. Learn more.'=>'歡迎使用 WordPress %1$s。進一步了解','You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share. There are three options for uploading files:'=>'使用者可以先在這裡上傳媒體檔案,而無須先撰寫內容;這讓使用者可以先上載檔案以供之後撰寫的文章或頁面使用,還可以取得特定檔案的分享連結。系統提供三種上傳方式:','Adding Tags'=>'新增標籤','Adding Categories'=>'新增分類','Troubleshooting'=>'疑難排解','How to Update'=>'如何更新','Once you’ve saved the download file, you can use the Import function in another WordPress installation to import the content from this site.'=>'下載匯出檔並完成儲存後,便可在其他 WordPress 後台使用匯入程式匯入這個網站的內容,反之亦然。','Attaching Files'=>'建立檔案關聯','You can also edit or move multiple posts to the Trash at once. Select the posts you want to act on using the checkboxes, then select the action you want to take from the Bulk actions menu and click Apply.'=>'使用者可以一次編輯多篇文章,也可以一次將多篇文章移至回收桶。請先選取要進行操作的文章,再從 [批次操作] 下拉式選單中選取要進行的操作,然後按下 [套用]。','Available Actions'=>'可進行的操作','You can customize the display of this screen’s contents in a number of ways:'=>'使用者可以使用下列方式自訂這個畫面的顯示項目:','Screen Content'=>'顯示項目內容','This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow.'=>'這個畫面能讓使用者存取個人的全部文章。使用者可以自訂這個畫面的顯示項目,以便配合個人工作流程。','If the importer you need is not listed, search the plugin directory to see if an importer is available.'=>'如果這個頁面並未列出這個網站需要的匯入程式,請搜尋外掛目錄,查看是否提供其他可用的匯入程式。','Moderating Comments'=>'審閱留言','If you want to convert your categories to tags (or vice versa), use the Categories and Tags Converter available from the Import screen.'=>'如需將分類轉換成標籤 (或將標籤轉換成分類),請使用 [匯入程式] 頁面中的 [分類與標籤轉換程式]。','Adding Plugins'=>'安裝外掛','Adding Themes'=>'安裝佈景主題','Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content.'=>'訂閱者 — 可以檢視留言、發佈留言、接收電子報等,但無法新增一般網站內容。','Authors can publish and manage their own posts, and are able to upload files.'=>'作者 — 可以發佈及管理他們自己的文章,也可以上傳檔案。','Here is a basic overview of the different user roles and the permissions associated with each one:'=>'以下列出不同使用者角色的基本概觀,以及每個使用者角色擁有的權限:','User Roles'=>'使用者角色','Remember to click the Add User button at the bottom of this screen when you are finished.'=>'表單填寫完畢後,請記得點擊畫面下方的 [新增使用者] 按鈕。','To add a new user to your site, fill in the form on this screen and click the Add User button at the bottom.'=>'如需為網站新增使用者,請填寫這個頁面中的表單,然後點擊頁面下方的 [新增使用者] 按鈕便可完成。','Custom Structures'=>'自訂結構','Common Settings'=>'一般設定','Permalinks are the permanent URLs to your individual pages and blog posts, as well as your category and tag archives. A permalink is the web address used to link to your content. The URL to each post should be permanent, and never change — hence the name permalink.'=>'永久連結是連結至網站個別頁面及文章的永久性網址,同時也用於網站的分類彙整及標籤彙整頁面,它是用來連結至網站內容的網站位址。網站上的每篇內容的網址都該具備永久性,且不該變更,因此將它稱為永久連結。','You can submit content in several different ways; this screen holds the settings for all of them. The top section controls the editor within the dashboard, while the rest control external publishing methods. For more information on any of these methods, use the documentation links.'=>'在這個網站中可用多種不同的方式提交內容,而這個畫面包含了全部相關設定。最上方的區段控管了編輯管理畫面的預設設定,其他部分則控管了外部發佈方式。如需進一步了解這些方式,請點擊這個分頁中的線上說明連結。','Uploading Files allows you to choose the folder and path for storing your uploaded files.'=>'[上傳檔案] 可讓使用者選取儲存上傳檔案所需的目錄及路徑。','Installing themes on Multisite can only be done from the Network Admin section.'=>'如需為多站網路安裝佈景主題,只能在 [多站網路管理中心] 頁面中進行。','If desired, WordPress will automatically alert various services of your new posts.'=>'如果需要的話,WordPress 會自動向多項更新服務傳送網站新文章發佈狀態通知。','Post Via Email'=>'透過電子郵件發佈文章','This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they will not all fit here! :) Use the documentation links to get information on what each discussion setting does.'=>'這個畫面提供了多項用於管理及顯示留言以及連結至文章/頁面的設定。如需進一步了解 [討論設定] 頁面中的每一項設定的用途,請參考這個分頁中的線上說明連結。','You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens.'=>'使用者可以變更密碼、啟用鍵盤快速鍵、變更 WordPress 管理畫面的色彩配置,還能關閉所見即所得的視覺化編輯器。此外,使用者可以在網站前端將 [工具列] 予以隱藏 (先前稱為 [管理列]),但無法在管理畫面停用 [工具列]。','This sidebar is no longer available and does not show anywhere on your site. Remove each of the widgets below to fully remove this inactive sidebar.'=>'這個資訊欄已無法使用,且不會出現在這個網站的任何位置。請將下方小工具全部移除,以便完全移除這個未啟用的資訊欄。','Inactive Sidebar (not used)'=>'未啟用的資訊欄 (未使用)','Clicking Select Files opens a navigation window showing you files in your operating system. Selecting Open after clicking on the file you want activates a progress bar on the uploader screen.'=>'點擊 [選取檔案] 會開啟導覽視窗,並顯示目前裝置中的檔案。選取要上傳的檔案再點擊 [開啟],就會在上傳畫面中顯示上傳進度列。','Drag and drop your files into the area below. Multiple files are allowed.'=>'將檔案拖放至這個區域進行上傳。允許同時上傳多個檔案。','You can assign keywords to your posts using tags. Unlike categories, tags have no hierarchy, meaning there is no relationship from one tag to another.'=>'標籤可用來指派為文章的關鍵字。標籤不像分類,標籤不具備階層架構,這代表標籤之間沒有關聯性。','You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts.'=>'[連結分類] 可以用來建立連結的群組。連結分類的名稱必須是唯一名稱,且連結分類與文章分類並不相同、各自獨立。','Missing Widgets'=>'遺失的小工具','Removing and Reusing'=>'移除及重複使用','If a media file has not been attached to any content, you will see that in the Uploaded To column, and can click on Attach to launch a small popup that will allow you to search for existing content and attach the file.'=>'如果媒體檔案沒有與任何內容產生關聯,使用者會在 [關聯內容] 欄位看到這個狀態;點擊媒體檔案的 [產生關聯] 會出現一個對話方塊,讓使用者搜尋現有內容並將這個媒體檔案關聯至現有檔案。','All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen.'=>'使用者上傳的全部檔案均會顯示於 [媒體庫],並會依上傳時間排序列出。此外,使用者還可以透過 [顯示項目設定] 分頁自訂要顯示在這個畫面的項目。','You can also perform the same types of actions, including narrowing the list by using the filters, acting on a page using the action links that appear when you hover over a row, or using the Bulk actions menu to edit the metadata for multiple pages at once.'=>'使用者也可以相同的操作方式,包含使用篩選條件縮小清單顯示數量、將游標暫留於頁面清單的資料列上以使用管理連結進行相關操作,或是使用 [批次操作] 下拉式選單編輯多個頁面的中繼資料。','Managing pages is very similar to managing posts, and the screens can be customized in the same way.'=>'管理頁面與管理文章的方式非常相似,使用者可以使用相同的方式自訂相關畫面。','Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages.'=>'頁面與文章相似之處在於它們都有標題、內文及相關中繼資料,而不同之處在於頁面不受內容發佈時間順序所影響,類似永久文章。頁面無法進行分類及加上標籤,但其仍有階層架構;使用者可以先建立上層頁面,然後將其他頁面以巢狀方式納入其中,便能建立一個頁面群組。','Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more.'=>'許多人使用鍵盤快速鍵更快速地審閱相關留言。如需進一步了解,請點擊旁邊的連結。','In the Author column, in addition to the author’s name, email address, and site URL, the commenter’s IP address is shown. Clicking on this link will show you all the comments made from this IP address.'=>'[作者] 欄位會顯示留言者的名稱、電子郵件地址、網站網址及 IP 位址等多項資訊。點擊 IP 位址連結,便會顯示全部來自這個 IP 位址的留言。','You can manage comments made on your site similar to the way you manage posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the bulk actions.'=>'使用者可以使用與管理文章或其他內容相似的方式管理網站。這個畫面使用與其他管理畫面相同的方式進行自訂,可以使用游標暫留於留言時出現的功能連結或 [批次操作] 下拉式選單管理留言。','Links in the Toolbar at the top of the screen connect your dashboard and the front end of your site, and provide access to your profile and helpful WordPress information.'=>'畫面上方工具列內的連結可將控制台及網站前端連接起來,並提供存取使用者個人資料的方式及有用的 WordPress 資訊。','Deleting Links'=>'刪除連結','Links may be separated into Link Categories; these are different than the categories used on your posts.'=>'使用者可以為各個連結指派不同的連結分類,[連結分類] 與文章所使用的分類並不相同。','Learn more about WordPress %2$s.'=>'進一步了解 WordPress %2$s 版的相關資訊。','Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username.'=>'編輯 — 點擊 [編輯] 連結便會進入使用者個人資料編輯畫面,也可以透過點擊使用者名稱到達同一個畫面。','Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:'=>'將游標暫留於使用者清單上的某個使用者時,便會顯示管理使用者的操作連結。網站管理員可執行以下操作:','You can view all posts made by a user by clicking on the number under the Posts column.'=>'點擊個別使用者 [文章] 欄位中的數字,便能檢視這個使用者所撰寫的全部文章。','You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab.'=>'使用者可以依據個人需求在 [顯示項目設定] 分頁中隱藏或顯示個別欄位,並能設定每頁顯示的使用者數量。','Managing Pages'=>'管理頁面','Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.'=>'預覽及檢視 — 點擊 [預覽] 連結便能顯示草稿發佈為文章後所呈現的外觀。點擊已發佈文章的 [檢視] 連結,會將使用者導向至網站前端檢視文章的實際外觀。清單中的文章標題下方會提供哪一項功能連結,系統會依據內容發佈狀態而定。','Trash removes your post from this list and places it in the Trash, from which you can permanently delete it.'=>'移至回收桶 — 點擊 [移至回收桶] 連結便可從文章清單中移除個人文章,並將它移至回收桶,使用者之後可在回收桶中永久刪除這些文章。','Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.'=>'快速編輯 — 點擊 [快速編輯] 連結便能進入文章的中繼資料編輯區段,讓使用者無須離開這個畫面就能更新文章的詳細資料。','Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.'=>'編輯 — 點擊 [編輯] 連結便會進入文章編輯畫面,也可以透過點擊文章標題到達同一個畫面。','Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user’s name to Edit the user profile under Network Admin > All Users.'=>'由於這是多站網路,因此網站管理員可以透過指定使用者名稱或電子郵件地址的方式,將多站網路中現有的帳號加入網站中,並為其指派使用者角色。如需進行指派密碼等其他設定,則必須具備多站網路管理員權限,然後前往 [多站網路管理中心]→[全部使用者],並點擊某位現有使用者的使用者名稱連結,便能編輯這個使用者的個人資料。','Go to Dashboard → Home'=>'前往 [控制台]→[首頁]','Go to Dashboard → Updates'=>'前往 [控制台]→[更新]','Profile updated.'=>'個人資料已更新。','You are using the multi-file uploader. Problems? Try the instead.'=>'目前使用的是多檔案上傳程式。如果上傳檔案時遇到問題,請改用。','Hi, + +You\'ve been invited to join \'%1$s\' at +%2$s with the role of %3$s. + +Please click the following link to confirm the invite: +%4$s'=>'你好, + +你已受邀以「%3$s」使用者角色加入網站網址為 %2$s 的《%1$s》。 + +請點擊下方連結,為這項邀請進行確認: +%4$s','Core Developer'=>'核心程式開發人員','No valid plugins were found.'=>'找不到有效的外掛。','The plugin contains no files.'=>'這個外掛的安裝套件中不包含任何檔案。','The package could not be installed.'=>'無法安裝這個安裝套件。','Attachment Post URL'=>'附件文章網址','admin menuAll Links'=>'全部連結','%s plugins'=>'%s 個外掛','%s plugin'=>'%s 個外掛','Failed to optimize the %1$s table. Error: %2$s'=>'無法最佳化資料表 %1$s。錯誤: %2$s','Successfully optimized the %s table.'=>'資料表 %s 已完成最佳化。','The %s table is already optimized.'=>'資料表 %s 已完成最佳化。','Successfully repaired the %s table.'=>'資料表 %s 已完成修復。','The %s table is okay.'=>'%s 資料表沒有問題。','View version %s details.'=>'檢視 %s 版的詳細資料','Tumblr'=>'Tumblr','Update %2$s or learn how to browse happy'=>'更新 %2$s或進一步了解如何獲得優異的瀏覽體驗','Scale images to match the large size selected in %1$simage options%2$s (%3$d × %4$d).'=>'縮放圖片至符合在 [%1$s圖片尺寸%2$s] 中所選定的大尺寸 (%3$d × %4$d)。','Audio, Video, or Other File'=>'音訊、視訊或其他檔案','Insert media from another website'=>'從其他網站插入媒體檔案','Error: Could not connect to the server. Please verify the settings are correct.'=>'錯誤: 無法連接到伺服器,請檢查設定是否正確。','Drag and Drop — To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box.'=>'拖放功能 — 如需重新排列區塊,請按住選取的區塊標題列然後進行拖放;當放置區塊的目標位置出現方型灰色虛線時,便可將區塊放置於該處。','You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well.'=>'使用者可以使用下列控制項排列控制台畫面中的顯示項目,以便配合個人工作流程。請注意,大多數管理畫面的操作方式都與這裡所述相同。','The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom.'=>'管理後台左側的導覽選單提供存取各個 WordPress 管理畫面的連結,將游標暫留於其上便會顯示子選單項目,而點擊導覽選單最下方的 [收合選單] 小圖示便可將選單最小化。','Updates %s'=>'更新 %s','Installed Plugins'=>'已安裝的外掛','Plugins %s'=>'外掛 %s','All Users'=>'全部使用者','Confirm Deletion'=>'確認刪除','Role'=>'使用者角色','Add Existing User'=>'加入現有使用者','Search Users'=>'搜尋使用者','User removed from this site.'=>'已從這個網站移除這個使用者。','Changed roles.'=>'使用者角色已變更。','Caution:'=>'警告:','User added.'=>'使用者已新增。','Super Admin'=>'多站網路管理員','Version %s'=>'%s 版','Update Available (%s)'=>'已有更新可供安裝 (%s)','Delete Site'=>'刪除網站','Settings saved.'=>'設定已儲存。','For more information:'=>'進一步了解相關資訊:','About Pages'=>'關於頁面','Title and Post Editor'=>'標題及文章編輯器','Customizing This Display'=>'自訂顯示項目','Note: Neither of these options blocks access to your site — it is up to search engines to honor your request.'=>'注意: 這些設定均無法阻擋搜尋引擎存取網站,完全取決於搜尋引擎是否遵守相關設定的要求。','Post name'=>'文章名稱','sample permalink structuresample-post'=>'sample-post','sample permalink basearchives'=>'archives','This importer is not installed. Please install importers from the main site.'=>'尚未安裝匯入程式。請前往主站台安裝匯入程式。','Site Language'=>'網站介面語言','Attempt to notify any blogs linked to from the post'=>'嘗試通知網站內容中所連結的任何網站','Hi, +You\'ve been invited to join \'%1$s\' at +%2$s with the role of %3$s. +If you do not want to join this site please ignore +this email. This invitation will expire in a few days. + +Please click the following link to activate your user account: +%%s'=>'你好, + +你已受邀加入《%1$s》,網站網址為 %2$s,目前的使用者角色為「%3$s」。 + +如果沒有意願加入這個網站,請忽略這封電子郵件,這封邀請函將會在幾天後自動失效。 + +請點擊下方連結以啟用你的使用者帳號: +%%s','Post Formats'=>'文章格式','Full Width Template'=>'全螢幕寬度範本','Featured Images'=>'精選圖片','Featured Image Header'=>'精選圖片頁首','It looks like you\'re using an old version of %s. For the best WordPress experience, please update your browser.'=>'你正在使用舊版的 %s。為獲得最佳的 WordPress 體驗,請更新目前正在使用的瀏覽器。','It looks like you\'re using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser.'=>'你正在使用 %s 的不安全版本,使用過時的瀏覽器會造成個人裝置不安全;為獲得最佳的 WordPress 體驗,請更新你的瀏覽器。','There are some invalid menu items. Please check or delete them.'=>'選單中有無效的選單項目,請進行檢查或予以刪除。','term nameName'=>'名稱','meta nameName'=>'欄位名稱','theme nameName'=>'佈景主題名稱','You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'=>'這個畫面會顯示來源為 WordPress 佈景主題目錄的佈景主題,網站管理員可以透過這個畫面的佈景主題瀏覽/安裝功能找到更多佈景主題。這些佈景主題由第三方開發者進行設計與開發,可免費使用,且相容於 WordPress 所使用的授權條款。','If you would like to see more plugins to choose from, click on the “Add Plugin” button and you will be able to browse or search for additional plugins from the WordPress Plugin Directory. Plugins in the WordPress Plugin Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they are free!'=>'如需查看更多外掛並進行選取及安裝,點擊 [安裝外掛] 便可以在 WordPress 外掛目錄中瀏覽或搜尋外掛。WordPress 外掛目錄內的外掛是由第三方設計與開發,且相容於 WordPress 所採用的授權方式。最棒的是,他們都是免費外掛!','The uploaded file exceeds the %s directive that was specified in the HTML form.'=>'上傳的檔案超過了 HTML 表單中 %s 參數的設定值。','External Libraries'=>'外部程式庫','Network Setup'=>'多站網路組態','Available Tools'=>'可用工具','Translate this to be the equivalent of English Translators in your language for the credits page Translators sectionTranslators'=>'本地化人員','Every plugin and theme in WordPress.org’s directory is 100%% GPL or a similarly free and compatible license, so you can feel safe finding plugins and themes there. If you get a plugin or theme from another source, make sure to ask them if it’s GPL first. If they do not respect the WordPress license, it is not recommended to use them.'=>'在 WordPress.org 目錄下的全部外掛與佈景主題均為 100%% GPL 授權或相容的使用自由授權,因此大家可以安心地在目錄中尋找外掛佈景主題。若是你從其他來源取得外掛或佈景主題,請記得先向提供者確認這些程式是否使用 GPL 授權。如果他們並不遵守 WordPress 使用的授權方式,建議不要採用這類程式。','WordPress grows when people like you tell their friends about it, and the thousands of businesses and services that are built on and around WordPress share that fact with their users. The WordPress community is flattered every time someone spreads the good word, just make sure to check out the WordPress Foundation trademark guidelines first.'=>'當大家在與朋友一同談論 WordPress、以及成千上萬建置於 WordPress 上的業務及服務與他們的使用者分享這項資訊時,WordPress 便會更加茁壯。而當有人讚美 WordPress 社群時,WordPress 社群總是深感榮幸;但在使用 WordPress 這個商標前,請先閱讀 WordPress 基金會的商標使用規範。','All Comments'=>'全部留言','Lead Developer'=>'首席開發人員','Cofounder, Project Lead'=>'共同創辦人、專案負責人','Core Contributors to WordPress %s'=>'WordPress %s 版核心程式參與者','Project Leaders'=>'專案負責人','Credits'=>'製作群','removing-widgetDeactivate'=>'停用','Your browser is out of date!'=>'你目前使用的瀏覽器太過老舊!','You are using an insecure browser!'=>'你目前使用的是不安全的瀏覽器!','Freedoms'=>'使用自由','You can use one of these cool headers or show a random one on each page.'=>'網站管理員從這些精美的頁首圖片中擇一使用,或每頁隨機顯示不同圖片。','If you do not want to upload your own image, you can use one of these cool headers, or show a random one.'=>'若是不想上傳自有圖片,可以在這些頁首圖片中擇一使用,或隨機顯示其中一張。','You can choose one of your previously uploaded headers, or show a random one.'=>'網站管理員可以選取一張之前上傳的頁首圖片,或是設定為隨機顯示。','Collapse Menu'=>'收合選單','Uploaded Images'=>'已上傳的圖片','Random: Show a different image on each page.'=>'隨機: 每頁顯示不同圖片。','You have specified this user for deletion:'=>'目前指定刪除的使用者如下所列:','%s Page Template'=>'[%s] 頁面範本','You cannot delete a plugin while it is active on the main site.'=>'無法刪除啟用於主要網站的外掛。','This plugin may be active on other sites in the network.'=>'這個外掛已於多站網路的其他網站中啟用。','Default Post Format'=>'預設文章格式','Any edits to files from this screen will be reflected on all sites in the network.'=>'在這個畫面中編輯的任何檔案,均會套用至這個多站網路中的全部網站。','This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role.'=>'這個畫面會列出這個網站的全部使用者。網站管理員可以依據實際需求,將個別使用者設定為五種使用者角色中的其中一種,分別為網站管理員、編輯、作者、投稿者或訂閱者。使用者角色的權限低於網站管理員的使用者,在登入控制台後只能看到部分與其使用者角色權限相符的設定項目。','If you want to make changes but do not want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below.'=>'如果不希望因為外掛更新而覆寫目前為外掛所做的自訂變更,可以考慮自己編寫一個自有外掛。如需進一步了解編輯外掛、編寫外掛或外掛結構的相關資訊,請點擊目前 [使用說明] 分頁中的相關連結。','The boxes on your Dashboard screen are:'=>'控制台畫面內建的區塊如下:','sample-page'=>'sample-page','Sample Page'=>'範例頁面','Retro (Generated)'=>'Retro (自動產生)','You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes.'=>'這個網站目前僅啟用一個佈景主題。造訪 [多站網路管理中心] 以啟用更多佈景主題。','You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes.'=>'這個網站目前僅啟用一個佈景主題。造訪 [多站網路管理中心] 以啟用安裝更多佈景主題。','You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress Theme Directory at any time: just click on the Install Themes tab above.'=>'這個網站目前僅安裝一個佈景主題。網站管理員只要點擊頁面上方的 [安裝佈景主題],便可以隨時從 WordPress 佈景主題目錄中的數千種免費佈景主題進行挑選。','One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the “Repair Database” button. Repairing can take a while, so please be patient.'=>'目前有一或多個資料表無法使用。按下 [修復資料庫] 按鈕後,WordPress 便會嘗試修復這些資料表。修復過程需要一點時間,請耐心等候。','Visual Editor RTL Stylesheet'=>'編輯器的 [預覽] 模式由右至左文字方向樣式表','This is a file in your current parent theme.'=>'這是目前使用的上層佈景主題的檔案。','This child theme inherits templates from a parent theme, %s.'=>'這個子佈景主題繼承了上層佈景主題 %s 的範本。','Network Enable'=>'於多站網路中啟用','Your WordPress database has been successfully updated!'=>'這個網站的 WordPress 資料庫已成功更新!','Update Complete'=>'更新完成','Update WordPress Database'=>'更新 WordPress 資料庫','The database update process may take a little while, so please be patient.'=>'資料庫更新過程需要一點時間,請耐心等候。','Database Update Required'=>'資料庫必須更新','No Update Required'=>'無須更新','WordPress › Update'=>'WordPress › 更新','You are about to install WordPress %s in English (US). There is a chance this update will break your translation. You may prefer to wait for the localized version to be released.'=>'即將安裝 WordPress %s 美國英文版,這個更新套件可能會造成現有的語言套件失效。如有需要,請靜待本地化版本的發佈。','There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin.'=>'%1$s 已有新版本可供下載安裝。請檢視 %4$s 版的詳細資料這個外掛無法自動更新。','Update Theme'=>'更新佈景主題','Update Plugin'=>'更新外掛','Theme updated successfully.'=>'佈景主題已成功更新。','Theme update failed.'=>'佈景主題更新失敗。','Plugin updated successfully.'=>'外掛已成功更新。','Plugin update failed.'=>'外掛更新失敗。','Update package not available.'=>'更新套件無法使用。','Date range:'=>'日期範圍:','Authors:'=>'作者:','This will contain all of your posts, pages, comments, custom fields, terms, navigation menus, and custom posts.'=>'選取這項設定後,匯出的內容會包含這個網站的全部文章、頁面、留言、自訂欄位、分類、標籤、導覽選單及自訂內容。','All content'=>'全部內容','Choose what to export'=>'選取匯出項目','commentsMine (%s)'=>'屬於目前登入使用者 (%s)','%s — WordPress'=>'%s — WordPress','column nameIn Response To'=>'回應目標','The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget.'=>'[可用的小工具] 區域內包含目前網站中全部可供選用的小工具。將小工具拖放至資訊欄後,它將小工具會自動展開以供使用者進行設定;設定完成後,小工具在使用者點擊 [儲存] 按鈕後便能在網站上運作。點擊小工具內的 [刪除] 按鈕就可以將小工具移除。','Remember to click Update to save metadata entered or changed.'=>'請記得點擊 [更新] 以儲存完成輸入或變更的中繼資料。','Note that you crop the image by clicking on it (the Crop icon is already selected) and dragging the cropping frame to select the desired part. Then click Save to retain the cropping.'=>'請注意,裁剪圖片時請點擊該圖片 (裁剪圖示按鈕成為生效狀態) 並拖曳裁剪框至所需大小,然後點擊 [儲存] 以保留裁剪變更。','For images only, you can click on Edit Image under the thumbnail to expand out an inline image editor with icons for cropping, rotating, or flipping the image as well as for undoing and redoing. The boxes on the right give you more options for scaling the image, for cropping it, and for cropping the thumbnail in a different way than you crop the original image. You can click on Help in those boxes to get more information.'=>'使用者若需處理圖片,可以點擊縮圖下方的 [編輯圖片] 以開啟圖片編輯器,在圖片編輯器中可以對圖片進行裁剪、旋轉、或翻轉,還可以復原及重做。編輯器右側提供了更多設定,用於縮放、裁剪圖片以及使用與裁剪原始圖片不同的方式裁剪縮圖。請點擊 [使用說明] 以了解進一步的資訊。','This screen allows you to edit fields for metadata in a file within the media library.'=>'使用者可以在這個畫面編輯媒體庫檔案的中繼資料欄位。','Email or Username'=>'電子郵件地址或使用者名稱','Search installed themes'=>'搜尋已安裝的佈景主題...','Please Note: Any customizations you have made to theme files will be lost. Please consider using child themes for modifications.'=>'請注意: 佈景主題更新後,在佈景主題檔案中的客製化變更均會由新檔案覆蓋導致消失。如需修改佈景主題檔案,請以建立子佈景主題的方式進行客製化。','postsSticky (%s)'=>'置頂 (%s)','Check again.'=>'再次檢查','Last checked on %1$s at %2$s.'=>'最後檢查時間: %1$s%2$s。','Please select one or more plugins to update.'=>'請選取一或多個外掛以進行更新。','Please select one or more themes to update.'=>'請選取一或多個佈景主題以進行更新。','The update process is starting. This process may take a while on some hosts, so please be patient.'=>'正在執行更新程序。這項程序在某些主機上需要一點時間,請耐心等候。','Apply Filters'=>'套用篩選條件','Editor Style'=>'編輯器樣式','To perform the requested action, WordPress needs to access your web server.'=>'如需執行這項必要操作,WordPress 必須存取這個網站的網頁伺服器。','Current Page'=>'目前頁面','No themes match your request.'=>'沒有符合要求的佈景主題。','Search Sites'=>'搜尋網站','Create a New User'=>'新增使用者','You have %1$s and %2$s.'=>'這個多站網路有 %1$s及 %2$s。','%s site'=>'%s 個網站','%s user'=>'%s 個使用者','https://wordpress.org/news/feed/'=>'https://wordpress.org/news/feed/','https://wordpress.org/news/'=>'https://wordpress.org/news/','(Signup has been disabled. Only members of this site can comment.)'=>'(已停用註冊功能,目前僅有這個網站的成員才能發佈留言)','There is a new version of %1$s available. View version %4$s details.'=>'%1$s 已有新版本可供下載更新。請檢視 %4$s 版的詳細資料。','Go to Themes page'=>'前往 [佈景主題] 頁面','Go to WordPress Updates page'=>'前往 [WordPress 更新] 頁面','Go to Plugins page'=>'前往 [外掛] 頁面','Click Save Menu to make pending menu items public.'=>'點擊 [儲存選單] 將選單項目由待審閱變更為公開。','Storage Space'=>'儲存空間','Create a New Site'=>'新增網站','Images of exactly %1$d × %2$d pixels will be used as-is.'=>'圖片的裁剪保留範圍為 %1$d × %2$d px。','Crop and Publish'=>'裁剪並發佈','XFN stands for XHTML Friends Network, which is optional. WordPress allows the generation of XFN attributes to show how you are related to the authors/owners of the site to which you are linking.'=>'XFN 是一項選填屬性,它是 XHTML Friends Network 的縮寫。WordPress 能產生含有 XFN 屬性的連結,XFN 屬性可用於顯示建立連結的使用者與連結目標 (例如某位作者或另一個網站的站長) 的人際關係。','FTP Password'=>'FTP 密碼','FTP Username'=>'FTP 使用者名稱','FTP/SSH Password'=>'FTP/SSH 密碼','FTP/SSH Username'=>'FTP/SSH 使用者名稱','Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area.'=>'許多佈景主題在使用者編輯資訊欄前,預設只展示某些資訊欄小工具,而這些小工具並不會自動顯示在網站的資訊欄管理工具中。使用者在資訊欄中設定小工具時,便可從 [可用的小工具] 區域重新加入預設小工具。','You can choose what’s displayed on the homepage of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static homepage, you first need to create two Pages. One will become the homepage, and the other will be where your posts are displayed.'=>'網站管理員可以選擇網站首頁要顯示的頁面,這個頁面可以是發佈時間由新到舊排序的文章彙整 (傳統部落格),或是一個固定/靜態頁面。若要將首頁設定為靜態頁面,必須先建立兩個頁面;一個設定為首頁,而另一個則是設定為顯示文章的頁面。','The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized.'=>'網站管理員可以透過 [選用設定] 中的欄位,自訂彙整網址中的分類目錄起點及標籤目錄起點。舉例來說,網站管理員將 [分類目錄起點] 設定為 topics 後,列出全部〈未分類〉分類文章的彙整頁面便會是 /topics/uncategorized,而不再是預設的 /category/uncategorized。','When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %1$s or %2$s.'=>'將多個分類或標籤指派給同一篇文章時,僅有 ID 數值最小的分類或標籤會顯示於永久連結中;自訂結構包含 %1$s 或 %2$s 結構標籤時,便會套用這項規則。','If you pick an option other than Plain, your general URL path with structure tags (terms surrounded by %s) will also appear in the custom structure field and your path can be further modified there.'=>'如果網站管理員選取了 [預設] 之外的設定,帶有結構標籤 (由 %s 括住的詞彙) 的一般網址路徑就會出現在自訂結構欄位中,然後就可以在欄位中進一步修改網址路徑。','If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas.'=>'如果想在資訊欄移除某個小工具後仍保留原有設定,僅需將它拖放至 [未啟用的小工具] 區域即可,之後隨時可將它從 [未啟用的小工具] 區域新增至指定的資訊欄。這項功能對切換至提供較少資訊欄的佈景主題或將小工具移至不同資訊欄來說,非常實用。','To add a new user for your site, click the Add User button at the top of the screen or Add User in the Users menu section.'=>'如需為網站新增使用者,點擊畫面上方的 [新增使用者] 按鈕,或點擊 [使用者] 選單內的 [新增使用者]。','You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size.'=>'網站管理員可以設定在這個網站中要插入文章的各式預設尺寸圖片的長寬上限,而圖片也可以以完整尺寸插入文章中。','Most themes show the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. Many themes also show the tagline.'=>'大多數的佈景主題會將網站標題顯示於每個頁面的最上方及瀏覽器的標題列,並作為資訊提供的識別名稱,而許多佈景主題也會顯示網站說明。','Order — Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.'=>'順序 — 頁面通常依字母順序排序,但使用者可以在 [順序] 欄位中輸入整數為頁面自訂順序。輸入 0 為最優先排序,數值越大順序越後,而同一順序數值頁面再依標題首字字母順序排序。','If you do not remember your credentials, you should contact your web host.'=>'如果不記得認證為何,請聯絡這個網站的主機服務商。','Please enter your FTP credentials to proceed.'=>'請輸入 FTP 認證以繼續。','Please enter your FTP or SSH credentials to proceed.'=>'請輸入 FTP 或 SSH 認證以繼續。','Your profile contains information about you (your “account”) as well as some personal options related to using WordPress.'=>'個人資料包含個人及個人帳號的相關資訊,以及使用者在 WordPress 網站中的個人化設定。','You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your %s directory.'=>'如果已從可信賴的原始來源網站將佈景主題 ZIP 壓縮檔下載到個人裝置,便可以手動上傳佈景主題。安裝佈景主題也可以使用舊方法,將解壓縮佈景主題 ZIP 檔所得的資料夾及其包含的全部檔案,透過 FTP 上傳至這個網站的 %s 目錄中。','Send Trackbacks — Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary.'=>'傳送引用通知引用通知 (英文原文為 Trackback) 是種通知舊式網站系統在這個網站的文章中已連結它們的方式,透過輸入需要傳送引用通知的網址即可完成。當這個網站的文章連結至其他 WordPress 網站時,系統便會以自動引用通知 (英文原文為 Pingback) 的方式通知他們,不須進行其他操作。','Contributors can write and manage their posts but not publish posts or upload media files.'=>'投稿者 — 可以撰寫及管理自己的文章,但無法發佈文章或上傳媒體檔案。','Administrators have access to all the administration features.'=>'網站管理員 — 可以使用全部管理功能。','You can use the plugin file editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations.'=>'網站管理員可以使用 [外掛檔案編輯器] 編輯任何外掛中的個別 PHP 檔案。請注意,外掛更新後的新檔案會覆寫之前進行過自訂修改的舊版檔案。','If you delete a link, it will be removed permanently, as Links do not have a Trash function yet.'=>'由於 [連結] 沒有 [回收桶] 功能,因此在使用者刪除連結後,系統便會將這個連結永久移除。','You can add links here to be displayed on your site, usually using Widgets. By default, links to several sites in the WordPress community are included as examples.'=>'使用者可以在這個畫面新增連結,且通常會使用小工具將連結顯示於網站前端。系統在預設情況下,會以 WordPress 社群的相關網站作為連結範例。','Slug — The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'=>'代稱 — 代稱的英文原文為 Slug,是用於網址中的易記名稱,通常由小寫英文字母、數字及連字號 - 組成。','You can also create posts with the Press This bookmarklet.'=>'使用者也可以使用 [發佈至網站] 書籤小工具以建立文章。','Do not forget to click on the Save Changes button when you are finished.'=>'完成設定後,請記得點擊 [儲存設定] 。','You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color.'=>'網站管理員可以使用自訂背景功能變更網站外觀,而不需要修改佈景主題程式碼。網站背景可設定為圖片或指定色彩。','Editors can publish posts, manage posts as well as manage other people’s posts, etc.'=>'編輯 — 可以發佈文章、管理文章以及管理其他作者的文章等。','Remember to click the Update Profile button when you are finished.'=>'個人資料如果有任何變更,完成後請記得點擊畫面最下方的 [更新個人資料]。','Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so.'=>'除了標示為 [必填] 的欄位外,其餘欄位均為選填欄位。只有在使用中的佈景主題需要時,個人資料才會顯示在網站前端。','Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts.'=>'使用者名稱無法變更,但可以在其他欄位輸入真實姓名或暱稱,並設定在文章顯示作者名稱的方式。','You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.'=>'相關站務人員也可以使用畫面上的 [狀態] 區塊審閱留言,還可以變更該則留言的時間戳記。','You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.'=>'如有需要,具備管理留言權限的站務人員可以編輯留言內的資訊。當發現留言者發生拼寫錯誤時,這項功能會非常有幫助。','You can also control the display of your content in RSS feeds, including the maximum number of posts to display and whether to show full text or an excerpt. Learn more about feeds.'=>'網站管理員還可以設定 RSS 資訊提供顯示內容的方式,包含最新文章顯示數量以及在資訊提供中要顯示完整內容還是內容摘要。進一步了解資訊提供','This screen contains the settings that affect the display of your content.'=>'這個畫面包含各項會影響網站內容顯示方式的相關設定。','UTC means Coordinated Universal Time.'=>'UTC 為英文 Coordinated Universal Time 的縮寫,代表國際標準時間。','The fields on this screen determine some of the basics of your site setup.'=>'這個畫面中的欄位,均是會影響這個網站的基礎設定。','You must click the Save Changes button at the bottom of the screen for new settings to take effect.'=>'請務必點擊畫面最下方的 [儲存設定] 按鈕,變更的設定才會生效。','The boxes for link name, web address, and description have fixed positions, while the others may be repositioned using drag and drop. You can also hide boxes you do not use in the Screen Options tab, or minimize boxes by clicking on the title bar of the box.'=>'[連結名稱]、[網站位址] 及 [內容說明] 區塊的位置不可移動,其他區塊則可使用拖放方式重新排列。使用者可在 [顯示項目設定] 分頁中隱藏不需要使用的區塊,或點擊區塊的標題列將區塊最小化。','Your themes are all up to date.'=>'這個網站的全部佈景主題均為最新版本。','Your plugins are all up to date.'=>'這個網站的全部外掛均為最新版本。','While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, this mode will be deactivated.'=>'當這個網站進行更新時,便會進入 [網站例行性維護] 模式;網站更新完畢後,便會停用這個模式。','An updated version of WordPress is available.'=>'WordPress 已有更新版本可供下載安裝。','You have the latest version of WordPress.'=>'這個網站安裝的 WordPress 為最新版本。','Function Name…'=>'函式名稱...','Activate Plugin & Run Importer'=>'啟用外掛並執行匯入程式','You can add or edit links on this screen by entering information in each of the boxes. Only the link’s web address and name (the text you want to display on your site as the link) are required fields.'=>'使用者可以在這個畫面中的各個區塊輸入所需資訊,藉以新增或編輯連結,但僅有 [網站位址] 及 [連結名稱] 為必填欄位,而 [連結名稱] 欄位中的內容就是這個連結顯示於頁面的連結文字。','Categories can be selectively converted to tags using the category to tag converter.'=>'使用分類與標籤轉換程式可將分類選擇性地轉換成標籤。','This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform.'=>'在這個畫面中列出連結的外掛,能讓網站管理員從其他網站或內容管理平台匯入資料。選取要匯入內容的平台,然後在快顯視窗出現提示時點擊 [立即安裝]。如果需要匯入內容的平台並未列在目前的清單中,點擊畫面最下方的連結以搜尋外掛目錄,查看是否有其他可用的內容平台匯入工具。','Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.'=>'WXR 檔案成功匯出並儲存後,便能在其他 WordPress 網站或支援這個格式的內容平台匯入這個網站的內容。','Choose a plugin to edit from the dropdown menu and click the Select button. Click once on any file name to load it in the editor, and make your changes. Do not forget to save your changes (Update File) when you are finished.'=>'請從下拉式選單選取要編輯的外掛,然後點擊 [選取] 按鈕,接下來點擊任何一個檔案名稱,編輯器便會載入檔案內容以供使用者進行修改。檔案修改完畢後,請記得點擊 [更新檔案] 儲存檔案變更。','You can customize the display of this screen using the Screen Options tab and/or the dropdown filters above the links table.'=>'使用者可以在 [顯示項目設定] 分頁中設定這個畫面的顯示項目,也可以使用連結清單上方下拉式選單中的篩選條件尋找符合條件的連結。','Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin’s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue.'=>'大多數的時候,外掛均能與 WordPress 核心程式及其他外掛正常配合運作。但有些時候某個外掛會干擾另一個外掛運作,造成相容性問題;如果網站運作開始發生不正常現象,或許是這類問題所造成。如果遇到這類相容性問題,請先停用全部外掛,並以各種啟用組合重新啟用外掛,直到找出引發問題的外掛為止。','Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop.'=>'在 [顯示項目設定] 分頁中啟用 [無障礙模式],便能使用 [新增] 及 [編輯] 按鈕取代預設的拖放操作。','Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required.'=>'同一個小工具可以重複使用於多個資訊欄,這時可為每個小工具輸入標題,讓小工具標題顯示在網站中,但這不是必要的操作。','Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them.'=>'小工具是網頁內容的獨立區塊,這種獨立區塊可放置於佈景主題所提供的小工具區域內,而這種區域通常稱為資訊欄。如需將個別小工具放置於資訊欄/小工具區域內,請將小工具標題列拖放至指定的小工具區域內。依照預設,小工具設定頁只會展開第一個小工具區域;如需使用其他小工具區域,點擊這些小工具區域的標題列便能展開。','Advice: Think very carefully about your site crashing if you are live-editing the theme currently in use.'=>'重要須知: 如果編輯的檔案屬於目前使用的佈景主題,請務必了解這項操作有可能造成網站停擺。','After typing in your edits, click Update File.'=>'完成檔案編輯後,請點擊 [更新檔案]。','Begin by choosing a theme to edit from the dropdown menu and clicking the Select button. A list then appears of the theme’s template files. Clicking once on any file name causes the file to appear in the large Editor box.'=>'請從下拉式選單中選取需要編輯的佈景主題,然後點擊 [選取] 按鈕,便會顯示佈景主題的檔案清單。點擊任何一個佈景主題檔案的檔案名稱,便會在編輯器區塊中顯示這個檔案的程式碼。','You can use the theme file editor to edit the individual CSS and PHP files which make up your theme.'=>'網站管理員可以使用 [佈景主題檔案編輯器] 編輯組成佈景主題的個別 CSS 及 PHP 檔案。','(no parent)'=>'(無上層項目)','Template — Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu.'=>'範本 — 有些佈景主題會內建自訂範本,這些自訂範本讓特定使用目的的頁面有了更多元的功能或自訂版面配置。只要是佈景主題內建的自訂範本,就會出現在 [範本] 下拉式選單中。','Parent — You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.'=>'上層頁面 — 作者可以指派其所撰寫的頁面的階層架構。舉例來說,網站中某位作者可以有個〈關於我〉頁面,而該頁面其下還有〈生活札記〉及〈狗狗與我〉等子頁面,且系統未限制巢狀頁面階層數量。','All updates have been completed.'=>'這個網站已完成全部更新。','You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.'=>'使用者可以在 [顯示項目設定] 分頁中設定每頁顯示的項目數量,以及要在畫面中顯示/隱藏的欄位項目。','Description — The description is not prominent by default; however, some themes may display it.'=>'內容說明 — [內容說明] 欄位中的資料預設不會顯示,但有些佈景主題在其版面的特定位置會顯示這些資料。','Name — The name is how it appears on your site.'=>'名稱 — 在這個欄位中輸入的內容,就是這個項目在網站上的顯示名稱。','When adding a new tag on this screen, you’ll fill in the following fields:'=>'在這個畫面新增標籤時,需要填寫以下欄位:','When adding a new category on this screen, you’ll fill in the following fields:'=>'在這個畫面新增分類時,需要填寫以下欄位:','What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.'=>'分類與標籤有何不同?一般來說,標籤是標示文章重要資訊如專有名詞或主題等的特定關鍵字,可能會、也可能不會再次用於其他文章,而分類則是預先規劃的網站內容結構。如果將網站想像成一本書,分類就像是目錄,而標籤則等同索引。','You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings.'=>'使用者可以使用分類區分網站上的內容結構,並可為相關的文章進行分組。文章的預設分類為〈未分類〉,如需變更這項設定,請前往 [寫作設定] 進行設定。','You need JavaScript to choose a part of the image.'=>'瀏覽器需要啟用 JavaScript 功能以選取部份圖片進行裁剪。','Crop Header Image'=>'裁剪頁首圖片','Image Upload Error'=>'上傳圖片時發生錯誤','Text Color'=>'文字色彩','Restore Original Header Image'=>'還原原始頁首圖片','This will restore the original header image. You will not be able to restore any customizations.'=>'這項操作會還原原始頁首圖片,執行後便無法還原任何自訂設定。','Reset Image'=>'重設圖片','Remove Header Image'=>'移除頁首圖片','This will remove the header image. You will not be able to restore any customizations.'=>'這項操作會移除頁首圖片,執行後便無法還原任何自訂設定。','Default Images'=>'預設圖片','Delete this comment permanently'=>'永久刪除這則留言','Restore this comment from the Trash'=>'將這則留言從回收桶中還原','Allow comments'=>'開放留言','Discussion — You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.'=>'討論 — 網站管理員可以為個別內容開啟或關閉留言及內容更新通知。當文章有留言時,網站管理員可以在這裡進行檢視及管理。','%s — This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the image as a post thumbnail on the home page, a custom header, etc.'=>'%s — 精選圖片讓使用者建立文章與某張圖片的關聯,而無須將圖片插入文章中,但只有佈景主題在首頁或自訂頁首等處使用精選圖片作為縮圖才會發揮效果。','Title — Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit.'=>'標題 — 作者可為文章輸入標題。標題輸入完畢後,將會在標題欄位下方看到永久連結,並且可以加以編輯。','Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:'=>'將游標暫留於文章清單的資料列上,便會出現操作連結讓使用者管理個人文章。使用者可進行的操作如下:','You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.'=>'使用者可以透過文章清單上方的下拉式選單,選取指定分類或月份以篩選符合條件的文章;完成條件選取後,點擊 [篩選] 便能完成篩選並顯示結果。使用者也可以點擊文章列表中的作者、分類或標籤等連結,以縮小篩選範圍。','You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.'=>'使用者可以依據個人需求在 [顯示項目設定] 分頁中隱藏或顯示個別欄位,並能設定每頁顯示的文章數量。','You can customize the display of this screen in a number of ways:'=>'使用者可以使用下列方式自訂這個畫面的顯示項目:','Search installed plugins'=>'搜尋已安裝的外掛','Your theme supports one menu. Select which menu you would like to use.'=>'目前使用的佈景主題提供 1 個位置顯示選單,請選取指定位置要顯示的選單。','Your theme does not support navigation menus or widgets.'=>'目前使用的佈景主題不支援導覽選單或小工具。','Categories and Tags Converter'=>'分類與標籤轉換程式','Most Recent'=>'最新發佈','Start date:'=>'開始日期:','Theme InstallerTag'=>'標籤','Plugin InstallerTag'=>'標籤','verbClear'=>'清除','commentMark as spam'=>'標示為垃圾留言','Remove Background Image'=>'移除背景圖片','Comments on “%s”'=>'〈%s〉的留言','Show advanced menu properties'=>'顯示進階選單內容','You have version %1$s installed. Update to %2$s.'=>'已安裝 %1$s 版,可更新至 %2$s 版。','Enabled'=>'已啟用','commentNot Spam'=>'標示為非垃圾留言','This will restore the original background image. You will not be able to restore any customizations.'=>'這項操作會還原原始背景圖片,執行後便無法還原任何自訂設定。','WordPress Blog'=>'WordPress 網站','Remove Users from Site'=>'從這個網站移除使用者','— No role for this site —'=>'— 不指派使用者角色 —','New WordPress Site'=>'新的 WordPress 網站','My Site'=>'我的網站','Sorry, you are not allowed to create posts or drafts on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上新增文章或草稿的權限。','Sorry, you are not allowed to create pages on this site.'=>'很抱歉,目前的登入身分沒有在這個網站上新增頁面的權限。','Custom site suspended message.'=>'自訂網站停用訊息。','Custom site inactive message.'=>'自訂網站未啟用訊息。','Custom site deleted message.'=>'自訂網站已刪除訊息。','If you have posts or comments in another system, WordPress can import those into this site. To get started, choose a system to import from below:'=>'如果已在其他系統撰寫文章或留言,WordPress 能將它們匯入這個網站。如需進行這項操作,請在下方選擇要匯入內容的系統:','No items.'=>'尚無任何項目。','To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a %s hostname record pointing at your web server in your DNS configuration tool.'=>'多站網路如要採用子網域組態,則對應的 DNS 組態中必須有一條萬用字元記錄。這通常代表著在對應的 DNS 組態工具中要新增一條 %s (萬用字元) 主機記錄指向目前的網頁伺服器。','The installer attempted to contact a random hostname (%s) on your domain.'=>'安裝程式已嘗試連線至一個這個網站所屬的網域中的隨機主機名稱 (%s)。','The menu item has been successfully deleted.'=>'選單項目已成功刪除。','Please provide a custom field name.'=>'請提供自訂欄位的名稱。','Display Options'=>'顯示設定','Remove Image'=>'移除圖片','Other users have been removed.'=>'其他使用者已移除。','You cannot remove the current user.'=>'無法移除已登入的使用者。','There are no valid users selected for removal.'=>'移除時沒有選取有效的使用者。','Confirm Removal'=>'確認移除','You have specified these users for removal:'=>'目前指定移除的使用者如下所列:','User deletion is not allowed from this screen.'=>'無法在這個畫面刪除使用者。','%s updated successfully.'=>'%s 已成功更新。','No thanks, do not remind me again'=>'否,別再提醒我','Yes, take me to my profile page'=>'是,前往 [個人資料] 頁面變更密碼','Your chosen password.'=>'安裝過程中所設定的密碼。','Sorry, you are not allowed to restore this item from the Trash.'=>'很抱歉,目前的登入身分沒有將這個項目從回收桶中還原的權限。','Sorry, you are not allowed to move this item to the Trash.'=>'很抱歉,目前的登入身分沒有將這個項目移至回收桶的權限。','%s comment restored from the Trash.'=>'%s 則留言已從回收桶還原。','%s comment moved to the Trash.'=>'%s 則留言已移至回收桶。','The following themes have new versions available. Check the ones you want to update and then click “Update Themes”.'=>'下列佈景主題已有新版本可供更新。選取要進行更新的佈景主題並點擊 [更新佈景主題]。','That user is already a member of this site.'=>'這個使用者已是這個網站的成員。','User has been added to your site.'=>'使用者已新增至這個網站。','Invitation email sent to user. A confirmation link must be clicked for them to be added to your site.'=>'已將邀請電子郵件傳送至使用者。使用者必須先點擊電子郵件中的確認連結,才能正式加入網站。','The following plugins have new versions available. Check the ones you want to update and then click “Update Plugins”.'=>'下列外掛已有新版本可供更新。選取要進行更新的外掛並點擊 [更新外掛]。','This will remove the background image. You will not be able to restore any customizations.'=>'這項操作會移除背景圖片,執行後便無法還原任何自訂設定。','Only the active theme is available to you. Contact the %s administrator for information about accessing additional themes.'=>'這個網站目前只能使用這個佈景主題。請聯絡《%s》的多站網路管理員以取得使用更多佈景主題的相關資訊。','Tag Template'=>'標籤範本','Author Template'=>'作者範本','Visual Editor Stylesheet'=>'編輯器的 [預覽] 模式樣式表','Page saved.'=>'頁面已儲存。','More information about %s'=>'進一步了解 %s 的相關資訊','Grant this user super admin privileges for the Network.'=>'授予這個使用者多站網路管理員的權限','This user has super admin privileges.'=>'這個使用者具備多站網路管理員權限。','Important:'=>'重要提示:','Update to version %s'=>'更新至 %s 版','Error: "Table Prefix" can only contain numbers, letters, and underscores.'=>'錯誤: 資料表前置詞僅可使用數字、字母及底線。','Usernames cannot be changed.'=>'使用者名稱無法變更。','items'=>'個項目','The menu has been successfully deleted.'=>'選單已成功刪除。','Site visibility'=>'網站可見度','CSS Classes (optional)'=>'CSS 類別 (選填)','Link Target'=>'連結目標開啟方式','Save Menu'=>'儲存選單','Updating Theme %1$s (%2$d/%3$d)'=>'正在更新佈景主題 %1$s (第 %2$d 個,總計 %3$d 個)','You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message.'=>'你仍然可以使用你的網站,但任何你建立的子網域都無法進行存取。如果確定這個網站的 DNS 記錄正確,請忽略這項訊息。','This resulted in an error message: %s'=>'目前狀況引起的錯誤訊息: %s','You must provide a valid email address.'=>'請務必提供有效的電子郵件地址。','The network already exists.'=>'這個多站網路已存在。','You must provide a name for your network of sites.'=>'請務必提供多站網路名稱。','You must provide a domain name.'=>'請務必提供網域名稱。','Notice:'=>'注意:','Get Shortlink'=>'取得短網址','The update of %s failed.'=>'%s 更新失敗。','Updating Plugin %1$s (%2$d/%3$d)'=>'正在更新外掛 %1$s (第 %2$d 個,總計 %3$d 個)','The password you chose during installation.'=>'安裝時所設定的密碼。','User already exists. Password inherited.'=>'這個使用者已存在,將會沿用現有密碼。','WordPress updated successfully.'=>'WordPress 已成功更新。','Update WordPress'=>'更新 WordPress','Update Plugins'=>'更新外掛','You cannot update because WordPress %2$s requires PHP version %3$s or higher and MySQL version %4$s or higher. You are running PHP version %5$s and MySQL version %6$s.'=>'由於 WordPress %2$s 需要 PHP %3$s 及 MySQL %4$s 或這兩者的更新版本,因此無法進行更新。這個網站目前執行的是 PHP %5$s 及 MySQL %6$s。','WordPress Updates'=>'WordPress 更新','Edit menu item'=>'編輯選單項目','Go to Dashboard'=>'前往 [控制台]','Drop-in (%s)'=>'強化外掛 (%s)','Must-Use (%s)'=>'強制使用 (%s)','Inactive:'=>'未啟用:','Yes, delete these files and data'=>'是,刪除這些檔案及資料','Are you sure you want to delete these files and data?'=>'確定要刪除這些檔案及資料?','You are about to remove the following plugin:'=>'即將移除以下外掛:','Delete Plugin'=>'刪除外掛','This timezone does not observe daylight saving time.'=>'這個網站設定的時區不使用日光節約時間。','This timezone is currently in daylight saving time.'=>'這個網站設定的時區使用日光節約時間。','This address is used for admin purposes. If you change this, an email will be sent to your new address to confirm it. The new address will not become active until confirmed.'=>'這個電子郵件地址用於管理目的。如果變更了這項設定,系統會傳送一封電子郵件至新地址進行確認。在完成確認前,無法使用新的電子郵件地址。','View All'=>'檢視全部','Please enter a valid menu name.'=>'請輸入有效的選單名稱。','You cannot install because WordPress %2$s requires PHP version %3$s or higher and MySQL version %4$s or higher. You are running PHP version %5$s and MySQL version %6$s.'=>'由於 WordPress %2$s 需要 PHP %3$s 及 MySQL %4$s 或這兩者的更新版本,因此無法進行安裝。這個網站目前執行的是 PHP %5$s 及 MySQL %6$s。','Executed before Multisite is loaded.'=>'已於多站網路載入前執行。','External object cache.'=>'外部物件快取。','Custom maintenance message.'=>'自訂網站維護訊息。','Custom database error message.'=>'自訂資料庫錯誤訊息。','Custom database class.'=>'自訂資料庫物件類別。','Advanced caching plugin.'=>'進階快取外掛。','File is empty. Please upload something more substantial.'=>'檔案內容為空。請上傳含有必要內容的檔案。','This comment is already marked as spam.'=>'這則留言已標示為垃圾留言。','View Trash'=>'檢視回收桶','This comment is already in the Trash.'=>'這則留言已移至回收桶。','This comment is already approved.'=>'這則留言已核准。','This comment is currently in the Trash.'=>'這則留言目前已移至回收桶。','This comment is currently marked as spam.'=>'這則留言目前已標示為垃圾留言。','This comment is currently approved.'=>'這則留言目前已核准。','Moderate Comment'=>'審閱留言','Categories:'=>'分類:','Drag widgets here to remove them from the sidebar but keep their settings.'=>'將小工具拖放至這裡便可將它們從資訊欄移除,但會保留小工具原有的設定。','Available Widgets'=>'可用的小工具','Error in displaying the widget settings form.'=>'顯示小工具設定表單時發生錯誤。','Error while saving.'=>'儲存時發生錯誤。','Changes saved.'=>'設定已儲存。','Save Widget'=>'儲存小工具','Select both the sidebar for this widget and the position of the widget in that sidebar.'=>'選取小工具所屬的資訊欄及位置順序。','Widget %s'=>'小工具: %s','Inactive Widgets'=>'未啟用的小工具','Change role to…'=>'變更使用者角色...','%1$s (%2$s)'=>'%1$s (%2$s)','Other users have been deleted.'=>'其他使用者已刪除。','You cannot delete the current user.'=>'無法刪除已登入的使用者。','Other user roles have been changed.'=>'其他使用者的使用者角色已變更。','New user created.'=>'新使用者已新增。','There are no valid users selected for deletion.'=>'刪除時沒有選取有效的使用者。','Delete Users'=>'刪除使用者','Skip Confirmation Email'=>'略過確認電子郵件','Invitation email sent to new user. A confirmation link must be clicked before their account is created.'=>'已將邀請電子郵件傳送至新使用者。新使用者必須先點擊電子郵件中的確認連結,才能在網站內正式建立帳號。','[%s] Joining Confirmation'=>'《%s》通知:確認加入網站使用者','Update User'=>'更新使用者','Update Profile'=>'更新個人資料','Additional Capabilities'=>'附加的權限','Type your new password again.'=>'請再次輸入新密碼。','New Password'=>'新密碼','Share a little biographical information to fill out your profile. This may be shown publicly.'=>'請在個人資料中分享簡略的自傳資訊。請注意,依據不同佈景主題的相關設定及版面配置設計,有可能會公開顯示這項資訊。','Biographical Info'=>'自傳資訊','About the user'=>'使用者自我介紹','About Yourself'=>'自我介紹','Contact Info'=>'聯絡資訊','Display name publicly as'=>'公開顯示名稱','Nickname'=>'暱稱','Last Name'=>'姓氏','First Name'=>'名字','Enable keyboard shortcuts for comment moderation.'=>'啟用審閱留言的鍵盤快速鍵 →','Disable the visual editor when writing'=>'停用編輯器的 [預覽] 模式','Visual Editor'=>'視覺化編輯器','Personal Options'=>'個人化設定','User updated.'=>'使用者已更新。','Always use https when visiting the admin'=>'強制使用 https 存取管理頁面','Use https'=>'使用 https','Edit user'=>'編輯使用者','Media file restored from the Trash.'=>'媒體檔案已從回收桶還原。','Media file moved to the Trash.'=>'媒體檔案已移至回收桶。','Media file permanently deleted.'=>'媒體檔案已永久刪除。','Sorry, you are not allowed to delete these items.'=>'很抱歉,目前的登入身分沒有刪除這些項目的權限。','Your WordPress database is already up to date!'=>'這個網站的 WordPress 資料庫已是最新狀態!','Installing theme from uploaded file: %s'=>'正在安裝上傳的佈景主題檔案 %s','Upload Theme'=>'上傳佈景主題','Installing Theme: %s'=>'正在安裝佈景主題: %s','Installing plugin from uploaded file: %s'=>'正在安裝上傳的外掛檔案 %s','Upload Plugin'=>'上傳外掛','Installing Plugin: %s'=>'正在安裝外掛: %s','Plugin failed to reactivate due to a fatal error.'=>'由於發生嚴重錯誤,導致外掛無法重新啟用。','Plugin reactivated successfully.'=>'外掛已成功重新啟用。','Plugin Reactivation'=>'外掛重新啟用','Installation failed.'=>'安裝失敗。','Compatibility with WordPress %s: Yes (according to its author)'=>'與 WordPress %s 版的相容性: 相容 (依據開發者所言)','Hide hidden updates'=>'不顯示隱藏的更新','Show hidden updates'=>'顯示隱藏的更新','Bring back this update'=>'還原這項更新','Hide this update'=>'隱藏這項更新','Broken Themes'=>'不完整的佈景主題','You are about to delete this theme \'%s\' + \'Cancel\' to stop, \'OK\' to delete.'=>'即將刪除 %s 這個佈景主題。 +點擊 [取消] 以停止操作,點擊 [確定] 以進行刪除。','Theme deleted.'=>'佈景主題已刪除。','Select theme to edit:'=>'選取需要編輯的佈景主題:','Edit Themes'=>'編輯佈景主題','Tags:'=>'標籤:','Compare Revisions of “%s”'=>'比較〈%s〉的內容修訂','You cannot edit this item because it is in the Trash. Please restore it and try again.'=>'無法編輯回收桶中的項目。如需編輯這個項目,請將它還原後再試一次。','Sorry, you are not allowed to edit this item.'=>'很抱歉,目前的登入身分沒有編輯這個項目的權限。','You attempted to edit an item that does not exist. Perhaps it was deleted?'=>'目前嘗試編輯不存在的項目,原因是這個項目之前便已遭刪除。','No plugins found.'=>'找不到符合條件的外掛。','Inactive (%s)'=>'未啟用 (%s)','Recently Active (%s)'=>'近 7 日內停用 (%s)','Active (%s)'=>'已啟用 (%s)','pluginsAll (%s)'=>'全部 (%s)','Clear List'=>'清除清單','Visit plugin site'=>'造訪外掛網站','Network Deactivate'=>'於多站網路中停用','Plugin could not be deleted due to an error: %s'=>'外掛無法刪除。錯誤原因: %s','Plugin could not be activated because it triggered a fatal error.'=>'由於啟用這個外掛會觸發嚴重錯誤,因此外掛並未啟用。','If something goes wrong with a plugin and you cannot use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated.'=>'如果因外掛發生錯誤導致 WordPress 無法正常運作,請刪除或重新命名 %s 目錄中的外掛資料夾或檔案,便能自動停用引發錯誤的外掛。','Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.'=>'外掛可以擴充及增強 WordPress 的功能。外掛安裝完畢後,網站管理員可以在這裡進行啟用或停用。','No, return me to the plugin list'=>'否,返回外掛清單','Yes, delete these files'=>'是,刪除這些檔案','Are you sure you want to delete these files?'=>'確定要刪除這些檔案?','Plugin InstallerPopular'=>'熱門','Plugin InstallerFeatured'=>'精選','Update File'=>'更新檔案','Documentation:'=>'線上說明:','Plugin Files'=>'外掛檔案','Select plugin to edit:'=>'選取需要編輯的外掛:','File edited successfully.'=>'檔案已完成編輯。','Files of this type are not editable.'=>'無法編輯這個類型的檔案。','Edit Plugins'=>'編輯外掛','All Settings'=>'全部設定','Update Services'=>'更新服務','Default Mail Category'=>'電子郵件發佈文章預設分類','Login Name'=>'登入使用者名稱','Port'=>'通訊埠','Mail Server'=>'電子郵件伺服器','To post to WordPress by email, you must set up a secret email account with POP3 access. Any mail received at this address will be posted, so it’s a good idea to keep this address very secret. Here are three random strings you could use: %1$s, %2$s, %3$s.'=>'網站管理員必須先建立一個可透過 POP 3 通訊協定存取的秘密電子郵件帳號,才能透過電子郵件發佈文章至 WordPress 網站。由於任何傳送至這個電子郵件地址的郵件內容都會發佈為網站文章,所以務必對這個電子郵件地址嚴加保密。網站管理員可使用系統產生的 3 組隨機字串建立電子郵件帳號: %1$s、%2$s、%3$s。','Post via email'=>'透過電子郵件發佈文章','Default Link Category'=>'預設連結分類','Default Post Category'=>'預設文章分類','WordPress should correct invalidly nested XHTML automatically'=>'自動更正無效的巢狀 XHTML 語法','Convert emoticons like :-) and :-P to graphics on display'=>'自動在顯示時將 :-):-P 這類表情符號轉換成圖片','Formatting'=>'格式化','Writing Settings'=>'寫作設定','Encoding for pages and feeds'=>'頁面及資訊提供的編碼方式','Full text'=>'完整內容','Syndication feeds show the most recent'=>'資訊提供中的近期文章顯示數量','posts'=>'篇文章','Blog pages show at most'=>'網站文章頁面每頁文章顯示數量','Warning: these pages should not be the same!'=>'警告: 不同的靜態頁面必須設定為不同的頁面。','Posts page: %s'=>'文章頁面: %s','A static page (select below)'=>'靜態頁面 (請於下方進行設定)','Reading Settings'=>'閱讀設定','Privacy Settings'=>'隱私權設定','If you temporarily make your site’s root directory writable to generate the %s file automatically, do not forget to revert the permissions after the file has been created.'=>'如果網站管理員暫時將網站根目錄設定為可寫入狀態,讓系統可以自動產生 %s 檔案,請記得在檔案順利產生後將權限變更回之前的設定。','If you temporarily make your %s file writable to generate rewrite rules automatically, do not forget to revert the permissions after the rule has been saved.'=>'如果網站管理員暫時將 %s 檔案設定為可寫入狀態,讓系統可以自動產生重新寫入規則,請記得在儲存檔案後將權限變更回之前的設定。','Tag base'=>'標籤目錄起點','Category base'=>'分類目錄起點','Custom Structure'=>'自訂結構','Numeric'=>'純數值','Month and name'=>'月份與文章名稱','Day and name'=>'日期與文章名稱','Permalink structure updated.'=>'永久連結結構已更新。','Permalink structure updated. Remove write access on %s file now!'=>'永久連結結構已更新。請立即移除 %s 檔案的寫入權限!','Permalink Settings'=>'永久連結設定','Organize my uploads into month- and year-based folders'=>'為上傳的檔案建立以年份及月份命名的資料夾','Configuring this is optional. By default, it should be blank.'=>'這是選用設定,預設值為空。','Full URL path to files'=>'檔案的完整網址','Store uploads in this folder'=>'在這個資料夾儲存上傳的檔案','Uploading Files'=>'上傳檔案','Large size'=>'大型尺寸','Max Height'=>'最大高度','Max Width'=>'最大寬度','Medium size'=>'中型尺寸','Crop thumbnail to exact dimensions (normally thumbnails are proportional)'=>'將縮圖裁剪至與上方設定完全相符的尺寸 (注意事項: 不啟用這項設定時,縮圖由原始圖片依據等比例縮放方式產生)','Thumbnail size'=>'縮圖尺寸','Image sizes'=>'圖片尺寸','Media Settings'=>'媒體設定','Week Starts On'=>'每週開始日','Custom:'=>'自訂:','This timezone is currently in standard time.'=>'這個網站設定的時區目前使用標準時間。','Timezone'=>'時區','New User Default Role'=>'新使用者的預設使用者角色','Anyone can register'=>'任何人均可註冊','Membership'=>'成員資格','General Settings'=>'一般設定','MonsterID (Generated)'=>'MonsterID (自動產生)','Wavatar (Generated)'=>'Wavatar (自動產生)','Identicon (Generated)'=>'Identicon (自動產生)','Gravatar Logo'=>'Gravatar 個人頭像標誌','Blank'=>'空白個人頭像','For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their email address.'=>'針對沒有個人頭像的使用者,這個網站可以為他們顯示指定的通用標誌或透過他們提供的電子郵件地址產生個人頭像。','X — Even more mature than above'=>'X — 成年使用者才適合檢閱的圖片','R — Intended for adult audiences above 17'=>'R — 17 歲 (含) 以上使用者才適合檢閱的圖片','PG — Possibly offensive, usually for audiences 13 and above'=>'PG — 可能令人不悅、13 歲 (含) 以上使用者才適合檢閱的圖片','G — Suitable for all audiences'=>'G — 全年齡使用者均適合檢閱的圖片','Maximum Rating'=>'個人頭像圖片分級限制','Show Avatars'=>'顯示個人頭像','Avatar Display'=>'個人頭像顯示方式','Avatars'=>'個人頭像','When a comment contains any of these words in its content, author name, URL, email, IP address, or browser’s user agent string, it will be put in the Trash. One word or IP address per line. It will match inside words, so “press” will match “WordPress”.'=>'請在下方欄位中一行輸入一個關鍵字或 IP 位址,一旦留言內容、留言者的姓名、網址、電子郵件地址、IP 位址或瀏覽器使用者代理程式字串包含欄位中的任一文字,系統便會將這則留言判定為垃圾留言。系統同時會比對單字內的組成字元,因此在下方欄位中輸入 press 的話,系統會依據比對結果將內容包含 WordPress 的留言判定為垃圾留言。','When a comment contains any of these words in its content, author name, URL, email, IP address, or browser’s user agent string, it will be held in the moderation queue. One word or IP address per line. It will match inside words, so “press” will match “WordPress”.'=>'請在下方欄位中一行輸入一個關鍵字或 IP 位址,一旦留言內容、留言者的姓名、網址、電子郵件地址、IP 位址或瀏覽器使用者代理程式字串包含欄位中的任一文字,系統便會將這則留言判定為待審閱留言。系統同時會比對單字內的組成字元,因此在下方欄位中輸入 press 的話,系統會依據比對結果將內容包含 WordPress 的留言判定為待審閱留言。','Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)'=>'當一則留言內包含 %s 個 (含) 以上的連結時,系統便會判定這則留言為待審閱留言。垃圾留言的特徵就是通常會包含大量超連結。','Comment Moderation'=>'觸發留言審閱的條件','Comment author must have a previously approved comment'=>'留言者必須曾發佈留言且留言已通過審核','Before a comment appears'=>'留言顯示於網站前端的條件','A comment is held for moderation'=>'有留言等候相關站務人員審閱的時候','Anyone posts a comment'=>'有人發佈留言時','Email me whenever'=>'電子郵件通知時機','newer'=>'較新','older'=>'較舊','Users must be registered and logged in to comment'=>'使用者必須註冊並完成登入才能發佈留言','Comment author must fill out name and email'=>'留言者必須填寫 [顯示名稱] 及 [電子郵件地址] 欄位','Other comment settings'=>'其他留言設定','Discussion Settings'=>'討論設定','No users found.'=>'找不到符合條件的使用者。','Update Themes'=>'更新佈景主題','Visit'=>'造訪','Multisite support is not enabled.'=>'尚未啟用多站網路支援。','Permalinks'=>'永久連結','Privacy'=>'隱私權','Reading'=>'閱讀','Writing'=>'寫作','settings screenGeneral'=>'一般','Profile'=>'個人資料','Comments %s'=>'留言 %s','Repair and Optimize Database'=>'修復並最佳化資料庫','Repair Database'=>'修復資料庫','Some database problems could not be repaired. Please copy-and-paste the following list of errors to the WordPress support forums to get additional assistance.'=>'無法修復某些資料庫問題。請複製下列錯誤內容,並在 WordPress 技術支援論壇的新討論串中貼上以取得協助。','WordPress › Database Repair'=>'WordPress › 資料庫修復','Link not found.'=>'找不到符合條件的連結。','No links found.'=>'找不到符合條件的連結。','Search Links'=>'搜尋連結','%s link deleted.'=>'%s 個連結已刪除。','Success!'=>'大功告成!','Please provide the following information. Do not worry, you can always change these settings later.'=>'請提供下列資訊。不必擔心,這些設定均可於安裝完成後進行變更。','Information needed'=>'安裝網站所需資訊','Install WordPress'=>'安裝 WordPress','Double-check your email address before continuing.'=>'繼續操作前,請再次確認填寫的電子郵件地址。','Your Email'=>'電子郵件地址','User(s) already exists.'=>'使用者已存在。','WordPress › Installation'=>'WordPress › 安裝','Error: Please enter an email address.'=>'錯誤: 請輸入電子郵件地址。','Error: Passwords may not contain the character "\\".'=>'錯誤: 密碼不能包含 \\ 字元。','Error: Please enter a password.'=>'錯誤: 請輸入密碼。','Default post slughello-world'=>'hello-world','Hello world!'=>'網站第一篇文章','Welcome to %s. This is your first post. Edit or delete it, then start writing!'=>'歡迎使用《%s》。這是這個網站的第一篇文章。試試為這篇文章進行編輯或直接刪除,然後開始撰寫新文章!','Default category slugUncategorized'=>'Uncategorized','Note that password carefully! It is a random password that was generated just for you.'=>'請小心記下密碼!這是個人專屬的隨機密碼。','An automated WordPress update has failed to complete! Please notify the site administrator.'=>'無法完成 WordPress 自動更新,請通知這個網站的網站管理員。','An automated WordPress update has failed to complete - please attempt the update again now.'=>'無法完成 WordPress 自動更新,請再嘗試更新一次。','Latest'=>'最新版本','Update to %s'=>'更新至 %s','You are using a development version (%1$s). Cool! Please stay updated.'=>'這個網站使用的是開發中的 %1$s 版。感謝協助測試,請隨時保持更新。','Upgrading database…'=>'正在更新資料庫...','The update could not be unpacked'=>'更新套件無法解壓縮。','Verifying the unpacked files…'=>'正在驗證解壓縮的檔案...','The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'=>'由於 WordPress %1$s 需要 MySQL %2$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %3$s 版。','The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'=>'由於 WordPress %1$s 需要 PHP %2$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %3$s 版。','The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'=>'由於 WordPress %1$s 需要 PHP %2$s 及 MySQL %3$s 或這兩者的更新版本,因此無法進行更新。這個網站目前執行的是 PHP %4$s 及 MySQL %5$s。','Could not fully remove the theme %s.'=>'無法完全移除佈景主題 %s。','Unable to locate WordPress theme directory.'=>'無法找到 WordPress 佈景主題目錄。','This theme is already installed.'=>'這個佈景主題已安裝。','Version: %s'=>'版本: %s','If you have a theme in a .zip format, you may install or update it by uploading it here.'=>'請在這裡上傳 ZIP 格式的佈景主題壓縮檔以安裝或更新佈景主題。','Find Themes'=>'尋找佈景主題','Holiday'=>'節日','Subject'=>'用途','Sticky Post'=>'置頂文章','Theme Options'=>'佈景主題選項','Features'=>'功能','Right Sidebar'=>'右側資訊欄','Left Sidebar'=>'左側資訊欄','Four Columns'=>'四欄','Three Columns'=>'三欄','Two Columns'=>'兩欄','One Column'=>'一欄','Feature Filter'=>'特色篩選條件','Screen Options'=>'顯示項目設定','Disable accessibility mode'=>'停用無障礙模式','Enable accessibility mode'=>'啟用無障礙模式','Install Themes'=>'安裝佈景主題','Upload file and import'=>'上傳檔案並匯入','Maximum size: %s'=>'檔案大小上限: %s','Choose a file from your computer:'=>'從個人裝置選取檔案:','Before you can upload your import file, you will need to fix the following error:'=>'在上傳匯入檔案前,必須先修正下列錯誤:','Add Custom Field'=>'新增自訂欄位','Enter new'=>'輸入新的欄位名稱','Key'=>'索引碼','Comment by %s marked as spam.'=>'由「%s」發佈的留言已標示為垃圾留言。','Comment by %s moved to the Trash.'=>'由「%s」發佈的留言已移至回收桶。','Submit Reply'=>'送出回覆','Reply to Comment'=>'回覆這則留言','Missed schedule'=>'已錯過排程','Make this post sticky'=>'將這篇文章置頂','Not Sticky'=>'取消置頂','Allow Pings'=>'開放內容更新通知','Allow Comments'=>'開放留言','Do not allow'=>'不開放','–OR–'=>'– 或 –','— No Change —'=>'— 不變更 —','Bulk Edit'=>'批次編輯','Relationship'=>'連結關係','column nameComment'=>'留言資訊','column nameDate'=>'上傳日期','column nameFile'=>'檔案名稱','column nameTitle'=>'內容標題','Quick Edit'=>'快速編輯','Warning! Wildcard DNS may not be configured correctly!'=>'警告!DNS 萬用字元記錄並未正確設定!','Just another %s site'=>'全新的繁體中文 WordPress 網站《%s》','Just another WordPress site'=>'全新的繁體中文 WordPress 網站','Auto Draft'=>'自動草稿','Sorry, you are not allowed to edit posts as this user.'=>'很抱歉,以這個使用者的身分登入時,沒有編輯文章的權限。','Sorry, you are not allowed to edit pages as this user.'=>'很抱歉,以這個使用者的身分登入時,沒有編輯頁面的權限。','The plugin does not have a valid header.'=>'這個外掛包含無效的標頭。','Plugin file does not exist.'=>'外掛檔案不存在。','Invalid plugin path.'=>'無效的外掛路徑。','Could not fully remove the plugins %s.'=>'無法完全移除外掛 %s。','One of the plugins is invalid.'=>'其中一個外掛是無效外掛。','The plugin generated unexpected output.'=>'這個外掛產生未預期的輸出結果。','Warning: This plugin has not been tested with your current version of WordPress.'=>'警告: 這個外掛尚未與這個網站的 WordPress 版本進行相容性測試。','Average Rating'=>'平均評分','WordPress.org Plugin Page »'=>'WordPress.org 外掛頁面 »','Compatible up to:'=>'已測試相容的 WordPress 版本:','%s or higher'=>'%s 或更新版本','Requires WordPress Version:'=>'WordPress 版本需求:','Last Updated:'=>'最後更新:','(based on %s rating)'=>'(依據 %s 筆評分資訊)','Plugin zip file'=>'外掛 ZIP 檔案','If you have a plugin in a .zip format, you may install or update it by uploading it here.'=>'請在這裡上傳 ZIP 格式的外掛壓縮檔以安裝或更新外掛。','Search Plugins'=>'搜尋外掛','You may also browse based on the most popular tags in the Plugin Directory:'=>'透過外掛目錄中最受歡迎的標籤瀏覽相關外掛:','Popular tags'=>'熱門標籤','(Leave at 0 for no rating.)'=>'(0 代表不評分)','Rating'=>'評分','RSS Address'=>'RSS 位址','Image Address'=>'圖片網址','If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out XFN.'=>'如果連結目標為個人,可以使用上方的表單指定連結建立者與連結目標的人際關係。如需進一步了解相關資訊,請參考〈XFN 定義的人際關係〉線上說明。','sweetheart'=>'戀人 (sweetheart)','date'=>'交往對象 (date)','crush'=>'迷戀對象 (crush)','muse'=>'單戀對象 (muse)','romantic'=>'交往關係','spouse'=>'配偶 (spouse)','sibling'=>'兄弟姊妹 (sibling)','parent'=>'父母 (parent)','kin'=>'親戚 (kin)','child'=>'子女 (child)','family'=>'親屬關係','neighbor'=>'鄰居 (neighbor)','co-resident'=>'同住 (co-resident)','geographical'=>'地理關係','colleague'=>'同僚 (colleague)','co-worker'=>'同事 (co-worker)','professional'=>'工作關係','met'=>'曾見過面 (met)','physical'=>'現實關係','friend'=>'朋友 (friend)','acquaintance'=>'點頭之交 (acquaintance)','contact'=>'時有聯絡 (contact)','friendship'=>'友誼關係','another web address of mine'=>'使用者擁有的另一個網站的位址 (me)','identity'=>'網站身分識別','rel:'=>'rel 屬性值:','Choose the target frame for your link.'=>'請選取點擊連結後開啟目標頁面的方式。','_none — same window or tab.'=>'_none — 在原視窗或原分頁中開啟','_top — current window or tab, with no frames.'=>'_top — 在原視窗或原分頁中開啟,但不包含目標頁面的框架','_blank — new window or tab.'=>'_blank — 在新視窗或新分頁中開啟','You are about to delete this link \'%s\' + \'Cancel\' to stop, \'OK\' to delete.'=>'即將刪除 [%s] 這個連結。 +點擊 [取消] 以停止操作,點擊 [確定] 以進行刪除。','Keep this link private'=>'將這個連結設定為私密','Visit Link'=>'造訪連結目標頁面','Main Page (no parent)'=>'主要頁面 (無上層頁面)','Show comments'=>'顯示留言','Separate multiple URLs with spaces'=>'請使用空格分隔多個網址','Send trackbacks to:'=>'傳送引用通知的目標網址:','Already pinged:'=>'已傳送內容更新通知的項目:','New category name'=>'請輸入分類名稱','Publish immediately'=>'立即發佈','Stick this post to the front page'=>'將這篇文章置頂','Status:'=>'狀態:','Preview Changes'=>'預覽變更','Link text, e.g. “Ransom Demands (PDF)”'=>'連結文字,例如「WordPress 網站建置規劃 (PDF)」','Link to image'=>'連結至圖片','Link Image To:'=>'圖片連結目標:','Image Caption'=>'圖片說明文字','Filter »'=>'篩選 »','All Types'=>'全部類型','Search Media'=>'搜尋媒體','Update gallery settings'=>'更新圖庫設定','Gallery columns:'=>'圖庫欄位:','Order:'=>'排序方式:','Random'=>'隨機','Date/Time'=>'日期/時間','Menu order'=>'選單順序','Order images by:'=>'圖片排序依據:','Image File'=>'圖片檔案','Link thumbnails to:'=>'縮圖連結目標:','Sort Order:'=>'排序方式:','All Tabs:'=>'全部分頁:','Save all changes'=>'儲存全部設定','Add media files from your computer'=>'從個人裝置新增媒體檔案','Insert into Post'=>'插入至文章','Upload date:'=>'上傳日期:','Location of the uploaded file.'=>'已上傳檔案的位置。','Alt text for the image, e.g. “The Mona Lisa”'=>'圖片的替代文字,例如「蒙娜麗莎」','File URL'=>'檔案網址','WordPress'=>'WordPress','Uploads'=>'上傳','Gallery (%s)'=>'圖庫 (%s)','From URL'=>'從網址','From Computer'=>'從個人裝置','Image saved'=>'圖片已儲存。','Unable to save the image.'=>'無法儲存圖片。','Nothing to save, the image has not changed.'=>'由於這張圖片沒有任何變更,因此無須儲存。','Error while saving the scaled image. Please reload the page and try again.'=>'儲存已進行縮放處理的圖片時發生錯誤。請重新載入頁面並再試一次。','Unable to create new image.'=>'無法產生新圖片。','Image restored successfully.'=>'圖片已成功還原。','Image metadata is inconsistent.'=>'圖片的中繼資料不一致。','Cannot save image metadata.'=>'無法儲存圖片的中繼資料。','Cannot load image metadata.'=>'無法載入圖片的中繼資料。','All sizes except thumbnail'=>'除了縮圖外的全部尺寸','All image sizes'=>'全部圖片尺寸','Apply changes to:'=>'設定套用目標:','Current thumbnail'=>'目前縮圖','Thumbnail Settings'=>'縮圖設定','Selection:'=>'保留範圍:','Aspect ratio:'=>'外觀比例:','Crop Selection'=>'裁剪保留範圍','Crop Aspect Ratio'=>'裁剪外觀比例','Restore image'=>'還原圖片','Previously edited copies of the image will not be deleted.'=>'這項操作不會刪除之前因編輯圖片所產生的圖片副本。','Discard any changes and restore the original image.'=>'捨棄全部變更並還原原始圖片。','Restore Original Image'=>'還原原始圖片','Original dimensions %s'=>'原始尺寸: %s','Scale Image'=>'調整圖片尺寸','Flip horizontal'=>'水平翻轉','Flip vertical'=>'垂直翻轉','Image data does not exist. Please re-upload the image.'=>'圖片資料不存在。請重新上傳圖片。','Proceed'=>'繼續','Connection Type'=>'連線類型','Private Key:'=>'私密金鑰:','Public Key:'=>'公開金鑰:','Authentication Keys'=>'驗證金鑰','Hostname'=>'主機名稱','Connection Information'=>'連線資訊','SSH2'=>'SSH2','FTPS (SSL)'=>'FTPS (SSL)','FTP'=>'FTP','Empty archive.'=>'空的壓縮檔。','Could not copy file.'=>'無法複製檔案。','Could not extract file from archive.'=>'無法從壓縮檔中解壓縮檔案。','Could not retrieve file from archive.'=>'無法從壓縮檔中擷取檔案。','Could not create temporary file.'=>'無法建立暫存檔案。','Specified file failed upload test.'=>'指定檔案進行上傳測試時發生錯誤。','Invalid form submission.'=>'無效的表單資料。','File upload stopped by extension.'=>'檔案上傳已由擴充功能停止。','Failed to write file to disk.'=>'無法將檔案寫入磁碟。','Missing a temporary folder.'=>'找不到暫存資料夾。','No file was uploaded.'=>'檔案並未上傳。','The uploaded file was only partially uploaded.'=>'上傳的檔案不完整。','Sorry, that file cannot be edited.'=>'很抱歉,無法編輯這個檔案。','Popup Comments Template'=>'彈出式留言視窗範本','Comments Template'=>'留言範本','.htaccess (for rewrite rules )'=>'.htaccess (用於重新寫入規則)','my-hacks.php (legacy hacks support)'=>'my-hacks.php (舊式自訂功能支援)','Application Attachment Template'=>'應用程式附件範本','Audio Attachment Template'=>'音訊附件範本','Video Attachment Template'=>'視訊附件範本','Image Attachment Template'=>'圖片附件範本','Attachment Template'=>'附件範本','Theme Functions'=>'佈景主題函式庫','Links Template'=>'連結範本','404 Template'=>'404 錯誤','Single Post'=>'單篇文章','Search Form'=>'搜尋功能','Search Requests'=>'搜尋要求','Category Template'=>'分類範本','Popup Comments'=>'彈出式留言視窗','RTL Stylesheet'=>'RTL 樣式表','Main Index Template'=>'主要索引','This widget requires JavaScript.'=>'這個小工具需要 JavaScript。','dashboard%1$s %2$s'=>'%1$s %2$s','[Pending]'=>'(待審閱)','From %1$s on %2$s %3$s'=>'由「%1$s」於〈%2$s〉發佈 %3$s','Move this comment to the Trash'=>'將這則留言移至回收桶','verbSpam'=>'標示為垃圾留言','Mark this comment as spam'=>'將這則留言標示為垃圾留言','Reply to this comment'=>'回覆這則留言','Unapprove this comment'=>'駁回這則留言','Approve this comment'=>'核准這則留言','Configure'=>'設定','View all'=>'檢視全部','Other WordPress News'=>'其它 WordPress 新聞','Right Now'=>'目前狀況','The uploaded file could not be moved to %s.'=>'無法將上傳的檔案移動至 %s。','Please select a file'=>'請選取檔案','Return to the Theme Installer'=>'返回 [安裝佈景主題]','Preview “%s”'=>'預覽「%s」','Successfully installed the theme %1$s %2$s.'=>'佈景主題 %1$s %2$s 已完成安裝。','Return to the Plugin Installer'=>'返回 [安裝外掛]','Successfully installed the plugin %1$s %2$s.'=>'外掛 %1$s %2$s 已成功安裝。','Activate Plugin'=>'啟用外掛','Could not copy files.'=>'無法複製檔案。','WordPress is at the latest version.'=>'WordPress 已是最新版本。','Theme installed successfully.'=>'佈景主題已完成安裝。','Installing the theme…'=>'正在安裝佈景主題...','Could not remove the old theme.'=>'無法移除舊版佈景主題。','Removing the old version of the theme…'=>'正在移除舊版佈景主題...','The theme is at the latest version.'=>'佈景主題已是最新版本。','Plugin installed successfully.'=>'外掛已成功安裝。','Installing the plugin…'=>'正在安裝外掛...','Unpacking the package…'=>'正在解壓縮安裝套件...','Installation package not available.'=>'安裝套件無法使用。','Could not remove the old plugin.'=>'無法移除舊版外掛。','Removing the old version of the plugin…'=>'正在移除舊版外掛...','Unpacking the update…'=>'正在解壓縮更新套件...','The plugin is at the latest version.'=>'外掛已是最新版本。','Disabling Maintenance mode…'=>'正在停用 [網站例行性維護] 模式...','Enabling Maintenance mode…'=>'正在啟用 [網站例行性維護] 模式...','Incompatible Archive.'=>'不相容的壓縮檔。','Could not create directory.'=>'無法建立目錄。','Destination folder already exists.'=>'目的資料夾已存在。','Installing the latest version…'=>'正在安裝最新版本...','Download failed.'=>'下載時發生錯誤。','Unable to locate needed folder (%s).'=>'無法找到必要的資料夾 %s。','Unable to locate WordPress content directory'=>'無法找到 WordPress 內容目錄','Unable to locate WordPress plugin directory.'=>'無法找到 WordPress 外掛目錄。','Unable to locate WordPress root directory.'=>'無法找到 WordPress 根目錄。','Filesystem error.'=>'檔案系統錯誤。','Could not access filesystem'=>'無法存取檔案系統','Invalid data provided.'=>'無效的資料。','Unable to perform command: %s'=>'無法執行命令: %s','Public and Private keys incorrect for %s'=>'%s 的公開金鑰與私密金鑰不正確','Failed to connect to SSH2 Server %s'=>'無法連線至 SSH2 伺服器 %s','SSH2 password is required'=>'SSH2 密碼為必填欄位','SSH2 username is required'=>'SSH2 使用者名稱為必填欄位','SSH2 hostname is required'=>'SSH2 主機名稱為必填欄位','The ssh2 PHP extension is not available'=>'PHP 的 ssh2 擴充功能無法使用','Username/Password incorrect for %s'=>'「%s」的使用者名稱/密碼不正確','Failed to connect to FTP Server %s'=>'無法連線至 FTP 伺服器 %s','FTP password is required'=>'FTP 密碼為必填欄位','FTP username is required'=>'FTP 使用者名稱為必填欄位','FTP hostname is required'=>'FTP 主機名稱為必填欄位','The ftp PHP extension is not available'=>'PHP 的 ftp 擴充功能無法使用','Found %s'=>'已找到目錄 %s','Changing to %s'=>'變更至目錄 %s','Could not insert link into the database.'=>'無法將連結新增至資料庫。','Could not update link in the database.'=>'無法在資料庫中更新連結資料。','Movable Type and TypePad'=>'Movable Type 與 Typepad','LiveJournal'=>'LiveJournal','Try Again'=>'再試一次','Blogger'=>'Blogger','No importers are available.'=>'沒有可用的匯入程式。','Download Export File'=>'下載資料匯出檔','This format, which is called WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags.'=>'這是稱為 WordPress eXtended RSS 或 WXR 的檔案格式,這個 XML 檔案內包含這個網站的文章、留言、自訂欄位、分類及標籤等內容。','When you click the button below WordPress will create an XML file for you to save to your computer.'=>'點擊畫面最下方的按鈕後,WordPress 便會產生一個可供網站管理員儲存至個人裝置的 XML 檔案。','Export'=>'匯出程式','postsAll (%s)'=>'全部 (%s)','postsMine (%s)'=>'屬於目前登入使用者 (%s)','%s pattern not updated, somebody is editing it.'=>'由於某個使用者正在進行編輯,所以有 %s 個區塊版面配置未更新。','%s post updated.'=>'%s 篇文章已更新。','Sorry, you are not allowed to delete this item.'=>'很抱歉,目前的登入身分沒有刪除這個項目的權限。','Item not added.'=>'項目並未新增。','Item updated.'=>'項目已更新。','Item deleted.'=>'項目已刪除。','Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional.'=>'分類具備階層架構,這是它與標籤的不同之處。舉例來說,這個網站可以有個〈影集〉分類,而其下還有〈美劇〉及〈日劇〉等子分類,請依實際使用目的規劃分類的階層架構。','This will be shown when someone hovers over the link in the blogroll, or optionally below the link.'=>'游標暫留於友站連結的連結時會顯示說明內容,或因為符合某些條件 (例如佈景主題設計) 選擇性地出現在連結下方。','Example: https://wordpress.org/ — do not forget the https://'=>'範例: https://tw.wordpress.org/ — 輸入網址時請記得包含 http://https://','Web Address'=>'網站位址','Example: Nifty blogging software'=>'範例: 精美的架站程式','Link added.'=>'連結已新增。','Links / Add Link'=>'連結/新增連結','Update Link'=>'更新連結','Links / Edit Link'=>'連結/編輯連結','Visit site'=>'造訪網站','Update Comment'=>'更新留言','Last edited on %1$s at %2$s'=>'最後編輯時間: %1$s%2$s','Last edited by %1$s on %2$s at %3$s'=>'最後由「%1$s」於 %2$s%3$s 進行編輯','Custom Fields'=>'自訂欄位','Send Trackbacks'=>'傳送引用通知','Page restored to revision from %s.'=>'頁面已從 %s 的內容修訂還原。','Post saved.'=>'文章已儲存。','Post restored to revision from %s.'=>'文章已從 %s 的內容修訂還原。','Custom field deleted.'=>'自訂欄位已刪除。','Custom field updated.'=>'自訂欄位已更新。','No comments found.'=>'找不到符合條件的留言。','Empty Trash'=>'清空回收桶','Empty Spam'=>'清空垃圾留言','Filter'=>'篩選','Pings'=>'內容更新通知','Approve'=>'核准','Unapprove'=>'駁回','Bulk actions'=>'批次操作','Displaying %1$s–%2$s of %3$s'=>'目前顯示第 %1$s 到 %2$s 頁,總計 %3$s 頁','Search Comments'=>'搜尋留言','Approved'=>'已核准','%s comment permanently deleted.'=>'%s 則留言已永久刪除。','%s comment restored from the spam.'=>'%s 則留言已從垃圾留言還原。','%s comment marked as spam.'=>'%s 則留言已標示為垃圾留言。','%s comment approved.'=>'%s 則留言已核准。','Attach'=>'產生關聯','Unpublished'=>'已取消發佈','View “%s”'=>'檢視〈%s〉','Delete Permanently'=>'永久刪除','Edit “%s”'=>'編輯〈%s〉','Choose the part of the image you want to use as your header.'=>'請為圖片裁剪出要顯示在頁首的部分。','Image Processing Error'=>'處理圖片時發生錯誤','Header updated. Visit your site to see how it looks.'=>'頁首已更新。造訪這個網站以檢視外觀變化。','Custom Header'=>'自訂頁首','Save Changes'=>'儲存設定','Choose an image from your computer:'=>'從個人裝置選取圖片:','Background updated. Visit your site to see how it looks.'=>'背景已更新。造訪這個網站以檢視外觀變化。','Custom Background'=>'自訂背景','Unknown action.'=>'未知的操作。','Approve comment'=>'核准留言','You are about to approve the following comment:'=>'即將核准以下留言:','Permanently delete comment'=>'永久刪除留言','You are about to delete the following comment:'=>'即將刪除以下留言:','You are about to move the following comment to the Trash:'=>'即將移動以下留言至回收桶:','You are about to mark the following comment as spam:'=>'即將標示以下留言為垃圾留言:','This comment is in the Trash. Please move it out of the Trash if you want to edit it.'=>'這則留言已移至回收桶。如需編輯這則留言,請從回收桶中將它還原。','Sorry, you are not allowed to edit comments on this post.'=>'很抱歉,目前的登入身分沒有編輯這篇文章留言的權限。','Go Back'=>'返回','Edit Comment'=>'編輯留言','Import'=>'匯入程式','Cannot load %s.'=>'無法載入 %s。','Invalid plugin page.'=>'無效的外掛頁面。','Item not updated.'=>'項目並未更新。','Saving is disabled: %s is currently editing this post.'=>'儲存功能已停用:「%s」正在編輯這篇文章。','Saving is disabled: %s is currently editing this page.'=>'儲存功能已停用:「%s」正在編輯這個頁面。','Someone'=>'訪客','Draft saved at %s.'=>'草稿已於 %s 完成儲存。','g:i:s a'=>'a g:i:s','Please provide a custom field value.'=>'請提供自訂欄位的值。','Sorry, you must be logged in to reply to a comment.'=>'很抱歉,必須登入才能回覆留言。','You did not enter a category name.'=>'尚未輸入分類名稱。','Comment %d does not exist'=>'留言 %d 不存在','»'=>'»','«'=>'«']]; \ No newline at end of file diff --git a/languages/admin-zh_TW.mo b/languages/admin-zh_TW.mo new file mode 100644 index 0000000..3923da0 Binary files /dev/null and b/languages/admin-zh_TW.mo differ diff --git a/languages/admin-zh_TW.po b/languages/admin-zh_TW.po new file mode 100644 index 0000000..c8418d6 --- /dev/null +++ b/languages/admin-zh_TW.po @@ -0,0 +1,16267 @@ +# Translation of WordPress - 7.0.x - Development - Administration in Chinese (Taiwan) +# This file is distributed under the same license as the WordPress - 7.0.x - Development - Administration package. +msgid "" +msgstr "" +"PO-Revision-Date: 2026-03-30 17:20:15+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: WordPress - 7.0.x - Development - Administration\n" + +#. translators: Default start of the week. 0 = Sunday, 1 = Monday. +#: wp-admin/includes/schema.php:419 +#, gp-priority: high +msgctxt "start of week" +msgid "1" +msgstr "1" + +#. translators: default GMT offset or timezone string. Must be either a valid +#. offset (-12 to 14) or a valid timezone string (America/New_York). See +#. https://www.php.net/manual/en/timezones.php for all timezone strings +#. currently supported by PHP. Important: When a previous timezone string, like +#. `Europe/Kiev`, has been superseded by an updated one, like `Europe/Kyiv`, as +#. a rule of thumb, the **old** timezone name should be used in the +#. "translation" to allow for the default timezone setting to be PHP +#. cross-version compatible, as old timezone names will be recognized in new +#. PHP versions, while new timezone names cannot be recognized in old PHP +#. versions. To verify which timezone strings are available in the _oldest_ PHP +#. version supported, you can use https://3v4l.org/6YQAt#v5.6.20 and replace +#. the "BR" (Brazil) in the code line with the country code for which you want +#. to look up the supported timezone names. +#: wp-admin/includes/schema.php:404 +#, gp-priority: high +msgctxt "default GMT offset or timezone string" +msgid "0" +msgstr "Asia/Taipei" + +#: wp-admin/users.php:149 +msgid "Sorry, you cannot remove your own role." +msgstr "很抱歉,目前的登入身分沒有移除所屬使用者角色的權限。" + +#: wp-admin/upload.php:183 +msgid "To delete media items, click the Bulk select button at the top of the screen. Select any items you wish to delete, then click the Delete permanently button. Clicking the Cancel button takes you back to viewing your media." +msgstr "如需刪除媒體檔案,請先點擊畫面頂端的 [批次選取] 按鈕並選取要刪除的項目,然後點擊 [永久刪除] 即可刪除媒體檔案。點擊 [取消] 便會返回檢視媒體檔案的畫面。" + +#: wp-admin/update-core.php:990 +msgid "On this screen, you can update to the latest version of WordPress, as well as update your themes, plugins, and translations." +msgstr "在這個畫面中,網站管理員可以將 WordPress 核心程式更新至最新版本,同時也能為佈景主題、外掛及語言套件進行更新。" + +#. translators: %s: WordPress version. +#: wp-admin/update-core.php:532 wp-admin/update-core.php:541 +msgid "Compatibility with WordPress %s: Not tested" +msgstr "與 WordPress %s 版的相容性: 尚未測試" + +#: wp-admin/options-connectors.php:24 +msgid "The Connectors page requires build files. Please run npm install to build the necessary files." +msgstr "[連接器] 頁面需要 build 資料夾的檔案。請執行 npm install 以建置必要的檔案。" + +#: wp-admin/options-connectors.php:23 +msgid "Connectors are not available." +msgstr "連接器無法使用。" + +#: wp-admin/nav-menus.php:1200 +msgid "Menu location" +msgstr "選單位置" + +#: wp-admin/media-new.php:43 +msgid "Upload Media" +msgstr "上傳媒體檔案" + +#. translators: %s: Number of pages. +#: wp-admin/includes/dashboard.php:315 +msgid "%s Published page" +msgid_plural "%s Published pages" +msgstr[0] "%s 個已發佈的頁面" + +#. translators: %s: Number of posts. +#: wp-admin/includes/dashboard.php:312 +msgid "%s Published post" +msgid_plural "%s Published posts" +msgstr[0] "%s 篇已發佈的文章" + +#: wp-admin/includes/class-wp-site-health.php:2833 +msgid "Opcode cache is not enabled" +msgstr "Opcode 快取尚未啟用" + +#: wp-admin/includes/class-wp-site-health.php:2824 +msgid "Learn more about OPcache." +msgstr "進一步了解 OPcache" + +#: wp-admin/includes/class-wp-site-health.php:2811 +msgid "Opcode cache is enabled" +msgstr "Opcode 快取已啟用" + +#: wp-admin/includes/class-wp-site-health.php:1914 +msgid "Change these settings" +msgstr "變更這些設定" + +#: wp-admin/includes/class-wp-debug-data.php:625 +msgid "Unable to determine server time" +msgstr "無法確認主機的伺服器時間" + +#. translators: %s: robots.txt +#: wp-admin/includes/class-wp-debug-data.php:590 +msgid "Your site is using a static %s file. WordPress cannot dynamically serve one." +msgstr "由於這個網站正在使用靜態的 %s 檔案,因此 WordPress 無法動態提供這個檔案。" + +#. translators: %s: Hit rate percentage +#: wp-admin/includes/class-wp-debug-data.php:530 +msgid "%s%%" +msgstr "%s%%" + +#. translators: 1: Percentage used, 2: Total memory, 3: Free memory +#: wp-admin/includes/class-wp-debug-data.php:512 +msgid "%1$s%% of %2$s (%3$s free)" +msgstr "總計 %2$s 的記憶體使用了 %1$s%% (還有 %3$s 可用記憶體)" + +#: wp-admin/includes/class-wp-debug-data.php:493 +msgid "Opcode cache memory usage" +msgstr "Opcode 快取記憶體使用量" + +#: wp-admin/includes/class-wp-debug-data.php:481 +msgid "Disabled by configuration" +msgstr "依據組態而停用" + +#: wp-admin/includes/class-wp-debug-data.php:480 +#: wp-admin/includes/class-wp-debug-data.php:486 +#: wp-admin/includes/class-wp-debug-data.php:545 +#: wp-admin/includes/class-wp-site-health.php:2937 +msgid "Opcode cache" +msgstr "Opcode 快取" + +#: wp-admin/font-library.php:31 +msgctxt "Font Library admin page title" +msgid "Fonts" +msgstr "字型" + +#: wp-admin/font-library.php:25 +msgid "The Font Library requires Gutenberg build files. Please run npm install to build the necessary files." +msgstr "[字型庫] 需要 Gutenberg 的 build 資料夾的檔案。請執行 npm install 以建置必要的檔案。" + +#: wp-admin/font-library.php:24 +msgid "Font Library is not available." +msgstr "[字型庫] 無法使用。" + +#: wp-admin/theme-editor.php:257 +msgid "It is likely that this unminified stylesheet will not be served to visitors." +msgstr "這通常是由於未最小化的樣式表不提供給網站訪客所造成。" + +#: wp-admin/theme-editor.php:256 +msgid "There is a minified version of this stylesheet." +msgstr "這個樣式表具備最小化版本。" + +#: wp-admin/options-discussion.php:282 +msgid "Color (Generated)" +msgstr "隨機色彩 (自動產生)" + +#: wp-admin/options-discussion.php:281 +msgid "Initials (Generated)" +msgstr "名稱縮寫 (自動產生)" + +#: wp-admin/options-discussion.php:166 +msgid "Anyone posts a note" +msgstr "有人發佈注意事項時" + +#: wp-admin/includes/misc.php:1030 wp-admin/user-edit.php:336 +msgid "Administration Color Scheme" +msgstr "管理後台色彩配置" + +#: wp-admin/includes/class-wp-site-health.php:2933 +msgid "Search Engine Visibility" +msgstr "搜尋引擎可見度" + +#: wp-admin/includes/class-wp-site-health.php:2787 +msgid "Your site is hidden from search engines. Consider enabling indexing if this is a public site." +msgstr "這個網站已在搜尋引擎中隱藏。如果這是公開網站,請考慮啟用搜尋引擎索引功能。" + +#: wp-admin/includes/class-wp-site-health.php:2783 +msgid "Search engines are discouraged from indexing this site." +msgstr "這個網站已阻擋搜尋引擎進行索引" + +#: wp-admin/includes/class-wp-site-health.php:2775 +msgid "Review your visibility settings" +msgstr "查看這個網站的可見度設定" + +#: wp-admin/includes/class-wp-site-health.php:2770 +msgid "Search engines can crawl and index your site. No action needed." +msgstr "搜尋引擎可以檢索及索引這個網站。不需進行其他操作。" + +#: wp-admin/includes/class-wp-site-health.php:2762 +msgid "Search engine indexing is enabled." +msgstr "搜尋引擎索引功能已啟用" + +#. translators: %s is the URL to the Serve Happy docs page. +#: wp-admin/includes/class-wp-site-health.php:763 +msgid "Unable to access the WordPress.org API for Serve Happy." +msgstr "無法存取 WordPress.org 的 Serve Happy API。" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:757 +msgid "Unable to determine the status of the current PHP version (%s)" +msgstr "無法確認目前 PHP %s 的狀態" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:732 +msgid "Your site is running PHP %s" +msgstr "這個網站執行於 PHP %s 執行環境" + +#: wp-admin/includes/class-wp-debug-data.php:776 +msgid "Image format transforms" +msgstr "圖片格式轉換" + +#: wp-admin/includes/class-wp-debug-data.php:772 +msgid "No format transforms defined" +msgstr "沒有定義格式轉換" + +#. translators: %s: Name of the file that failed to upload. +#: wp-admin/async-upload.php:144 +msgid "%s has failed to upload." +msgstr "上傳 %s 時發生錯誤。" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: The PHP extension name needed. +#: wp-admin/upgrade.php:64 +msgid "You cannot upgrade because WordPress %2$s requires the %3$s PHP extension." +msgstr "由於 WordPress %2$s 需要 PHP 的 %3$s 擴充功能,因此無法進行升級。" + +#: wp-admin/themes.php:70 +msgid "An error occurred while deleting the theme." +msgstr "刪除佈景主題時發生錯誤。" + +#: wp-admin/theme-install.php:57 wp-admin/themes.php:234 +#: wp-admin/themes.php:255 wp-admin/network/menu.php:86 +#: wp-admin/network/themes.php:366 +msgid "Add Theme" +msgstr "安裝佈景主題" + +#. translators: %s: https://wordpress.org/about/privacy +#: wp-admin/privacy.php:71 +msgid "WordPress.org takes privacy and transparency very seriously. To learn more about what data is collected, and how it is used, please visit the WordPress.org Privacy Policy." +msgstr "WordPress.org 非常注重隱私權及資訊透明度。如需進一步了解收集了哪些資料及其使用方式,請造訪 WordPress.org 的〈隱私權政策〉頁面。" + +#: wp-admin/privacy.php:38 +msgid "WordPress.org takes privacy and transparency very seriously" +msgstr "WordPress.org 非常注重隱私權及資訊透明度" + +#. translators: %s: File path. +#: wp-admin/plugin-editor.php:249 wp-admin/theme-editor.php:285 +msgid "File: %s" +msgstr "檔案: %s" + +#: wp-admin/menu.php:349 wp-admin/menu.php:351 wp-admin/menu.php:359 +#: wp-admin/menu.php:361 wp-admin/user-edit.php:269 wp-admin/user-new.php:269 +#: wp-admin/user-new.php:391 wp-admin/user-new.php:515 +#: wp-admin/user-new.php:667 wp-admin/users.php:788 +#: wp-admin/network/menu.php:62 wp-admin/network/site-users.php:356 +#: wp-admin/network/site-users.php:400 wp-admin/network/user-new.php:100 +#: wp-admin/network/user-new.php:107 wp-admin/network/user-new.php:161 +#: wp-admin/network/users.php:320 +msgid "Add User" +msgstr "新增使用者" + +#: wp-admin/menu.php:328 wp-admin/plugins.php:770 wp-admin/network/menu.php:111 +msgid "Add Plugin" +msgstr "安裝外掛" + +#: wp-admin/menu.php:233 +msgctxt "design menu item" +msgid "Design" +msgstr "設計" + +#: wp-admin/menu-header.php:285 +msgid "Collapse Main Menu" +msgstr "收合主要選單" + +#: wp-admin/media-upload.php:39 +msgid "Invalid item ID. You can view all media items in the Media Library." +msgstr "無效的項目 ID。使用者可以在 [媒體庫] 中檢視全部媒體項目。" + +#: wp-admin/media-upload.php:38 +msgid "An error occurred during the upload process." +msgstr "上傳時發生錯誤。" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: The PHP extension name needed. +#: wp-admin/install.php:304 +msgid "You cannot install because WordPress %2$s requires the %3$s PHP extension." +msgstr "由於 WordPress %2$s 需要 PHP 的 %3$s 擴充功能,因此無法進行安裝。" + +#: wp-admin/includes/template.php:738 +msgid "Add Custom Field:" +msgstr "新增自訂欄位:" + +#: wp-admin/includes/revision.php:471 +msgid "An error occurred while loading the comparison. Please refresh the page and try again." +msgstr "載入比較資料時發生錯誤。請重新整理頁面並再試一次。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/meta-boxes.php:1203 wp-admin/includes/meta-boxes.php:1208 +msgid "+ Add Category" +msgstr "+ 新增分類" + +#: wp-admin/includes/class-wp-debug-data.php:1817 +msgid "Does not exist" +msgstr "不存在" + +#: wp-admin/includes/class-wp-debug-data.php:607 +msgid "robots.txt" +msgstr "robots.txt" + +#. translators: %s: robots.txt +#: wp-admin/includes/class-wp-debug-data.php:602 +msgid "WordPress cannot dynamically serve a %s file due to a lack of rewrite rule support." +msgstr "由於缺少對重新寫入規則的支援,因此 WordPress 無法動態提供 %s 檔案。" + +#. translators: %s: robots.txt +#: wp-admin/includes/class-wp-debug-data.php:596 +msgid "Your site is using the dynamic %s file which is generated by WordPress." +msgstr "這個網站正在使用由 WordPress 產生的動態 %s 檔案。" + +#: wp-admin/includes/class-custom-image-header.php:834 +#: wp-admin/includes/class-custom-image-header.php:1022 +msgid "The active theme does not support uploading a custom header image. Please ensure your theme supports custom headers and try again." +msgstr "目前使用的佈景主題不支援上傳自訂頁首圖片。請確認要使用的佈景主題支援自訂頁首,然後再試一次。" + +#: wp-admin/includes/class-custom-image-header.php:833 +#: wp-admin/includes/class-custom-image-header.php:1021 +#: wp-admin/includes/class-custom-image-header.php:1032 +msgid "An error occurred while processing your header image." +msgstr "處理頁首圖片時發生錯誤。" + +#: wp-admin/customize.php:80 +msgid "Please try again or start a new changeset. This changeset cannot be further modified." +msgstr "請再試一次或開始新的變更集。無法進一步修改這個變更集。" + +#: wp-admin/customize.php:79 +msgid "An error occurred while saving your changeset." +msgstr "儲存變更集時發生錯誤。" + +#: wp-admin/credits.php:159 +msgid "Triage Lead" +msgstr "分級團隊負責人" + +#: wp-admin/credits.php:158 +msgid "Tech Lead" +msgstr "技術團隊負責人" + +#: wp-admin/credits.php:157 +msgid "Default Theme Development Lead" +msgstr "預設佈景主題開發團隊負責人" + +#: wp-admin/credits.php:156 +msgid "Default Theme Design Lead" +msgstr "預設佈景主題設計團隊負責人" + +#: wp-admin/credits.php:155 +msgid "Performance Lead" +msgstr "效能團隊負責人" + +#: wp-admin/credits.php:154 +msgid "Design Lead" +msgstr "設計團隊負責人" + +#: wp-admin/credits.php:153 +msgid "Test Lead" +msgstr "測試團隊負責人" + +#: wp-admin/credits.php:152 +msgid "Documentation Lead" +msgstr "文件團隊負責人" + +#: wp-admin/credits.php:151 +msgid "Editor Triage Lead" +msgstr "編輯分級團隊負責人" + +#: wp-admin/credits.php:150 +msgid "Editor Tech Lead" +msgstr "編輯技術團隊負責人" + +#: wp-admin/credits.php:149 +msgid "Core Triage Lead" +msgstr "核心程式分級團隊負責人" + +#: wp-admin/credits.php:148 +msgid "Core Tech Lead" +msgstr "核心程式技術團隊負責人" + +#: wp-admin/credits.php:146 +msgid "Minor Release Lead" +msgstr "產品次要版本發佈負責人" + +#: wp-admin/credits.php:145 +msgid "Release Coordination" +msgstr "產品發佈協調" + +#: wp-admin/plugins.php:613 +msgid "If a dependent plugin is missing some dependencies, its activation button will be disabled until the required dependencies are activated." +msgstr "當提出相依性要求的項目缺少必須安裝的相依性項目,在必須安裝的相依性項目安裝並啟用前,系統會停用它的 [啟用] 按鈕。" + +#: wp-admin/plugins.php:612 +msgid "If a required plugin is deleted, a notice will be displayed on the Plugin administration screen informing the user that there is some missing dependencies to install and/or activate. Additionally, each plugin whose dependencies are not met will have an error notice on their plugin row." +msgstr "一旦刪除附加元件所需的外掛,[外掛] 管理頁面便會顯示相關通知,告知使用者找不到必須安裝的相依性項目必須安裝並啟用。此外,未滿足必須安裝的相依性項目條件的外掛會在外掛資訊列顯示錯誤通知。" + +#: wp-admin/plugins.php:611 +msgid "Plugin Dependencies aims to make the process of installing and activating add-ons (dependents) and the plugins they rely on (dependencies) consistent and easy." +msgstr "外掛相依性項目能協助安裝及啟用附加元件 (提出相依性要求的項目) 及附加元件所需的外掛 (必須安裝的相依性項目) 的流程變的一致及簡易。" + +#: wp-admin/plugins.php:609 +msgid "Dependencies" +msgstr "相依性項目" + +#: wp-admin/options-discussion.php:143 +msgid "Comments to display at the top of each page" +msgstr "每頁要顯示於上方的留言" + +#: wp-admin/options-discussion.php:136 +msgid "Comments page to display by default" +msgstr "預設顯示的留言頁面" + +#: wp-admin/options-discussion.php:132 +msgid "Top level comments per page" +msgstr "每頁最上層留言數量" + +#: wp-admin/options-discussion.php:129 +msgid "Break comments into pages" +msgstr "將留言進行分頁" + +#: wp-admin/options-discussion.php:124 +msgid "Comment Pagination" +msgstr "留言分頁" + +#: wp-admin/options-discussion.php:117 +msgid "Number of levels for threaded (nested) comments" +msgstr "啟用最高等於設定階層數的階層式 (巢狀) 留言功能" + +#: wp-admin/options-discussion.php:93 +msgid "Enable threaded (nested) comments" +msgstr "啟用階層式 (巢狀) 留言功能" + +#: wp-admin/options-discussion.php:84 +msgid "Close comments when post is how many days old" +msgstr "關閉已超過設定發佈天數的文章中的留言功能" + +#: wp-admin/options-discussion.php:81 +msgid "Automatically close comments on old posts" +msgstr "自動關閉舊文章中的留言功能" + +#: wp-admin/nav-menus.php:601 +msgid "Menu order updated" +msgstr "選單順序已更新。" + +#: wp-admin/nav-menus.php:600 +msgid "Menu parent updated" +msgstr "選單上層項目已更新。" + +#: wp-admin/includes/revision.php:383 +msgid "Change revision by using the left and right arrow keys" +msgstr "使用向左鍵及向右鍵變更內容修訂" + +#: wp-admin/includes/revision.php:382 +msgid "Select a revision" +msgstr "選取內容修訂" + +#: wp-admin/includes/class-wp-upgrader.php:207 +msgid "A directory could not be read." +msgstr "無法讀取目錄。" + +#: wp-admin/includes/class-wp-debug-data.php:1713 +msgid "Database Extension" +msgstr "資料庫擴充功能" + +#: wp-admin/includes/class-wp-debug-data.php:1564 +#: wp-admin/includes/class-wp-debug-data.php:1573 +#: wp-admin/includes/class-wp-debug-data.php:1674 +msgid "Empty value" +msgstr "空值" + +#: wp-admin/includes/class-wp-debug-data.php:716 +msgid "Max simultaneous file uploads" +msgstr "檔案同時上傳數量上限" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:261 +msgid "Menu Order" +msgstr "選單排序" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:254 +msgid "Menu Parent" +msgstr "選單上層項目" + +#: wp-admin/edit-form-advanced.php:545 +msgid "Skip to Editor" +msgstr "前往 [編輯器]" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:245 +msgid "WordPress %s Field Guide" +msgstr "WordPress %s 詳解指南" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:218 +msgid "WordPress %s Release Notes" +msgstr "WordPress %s 版本資訊" + +#: wp-admin/includes/class-wp-debug-data.php:2032 +msgid "The directory does not exist." +msgstr "目錄不存在。" + +#: wp-admin/update-core.php:1048 +msgid "Common Errors" +msgstr "〈常見錯誤〉線上說明" + +#: wp-admin/theme-editor.php:54 +msgid "Documentation on Editing Files" +msgstr "〈編輯檔案〉線上說明" + +#: wp-admin/plugin-editor.php:157 +msgid "Documentation on Editing Plugins" +msgstr "〈編輯外掛〉線上說明" + +#: wp-admin/options.php:331 +msgid "https://developer.wordpress.org/plugins/settings/settings-api/" +msgstr "https://developer.wordpress.org/plugins/settings/settings-api/" + +#. translators: 1: The option/setting, 2: Documentation URL. +#: wp-admin/options.php:329 +msgid "The %1$s setting is unregistered. Unregistered settings are deprecated. See documentation on the Settings API." +msgstr "[%1$s] 設定已取消註冊。系統會將取消註冊的設定功能淘汰不用。請參考〈Settings API〉線上說明。" + +#: wp-admin/options-writing.php:224 wp-admin/options-writing.php:238 +msgid "https://developer.wordpress.org/advanced-administration/wordpress/update-services/" +msgstr "https://developer.wordpress.org/advanced-administration/wordpress/update-services/" + +#: wp-admin/options-reading.php:35 wp-admin/options-reading.php:202 +msgid "https://developer.wordpress.org/advanced-administration/wordpress/feeds/" +msgstr "https://developer.wordpress.org/advanced-administration/wordpress/feeds/" + +#: wp-admin/options-permalink.php:64 +msgid "Documentation on Nginx configuration." +msgstr "〈NGINX 組態〉線上說明" + +#: wp-admin/options-general.php:35 wp-admin/options-general.php:254 +msgid "https://developer.wordpress.org/advanced-administration/server/wordpress-in-directory/" +msgstr "https://developer.wordpress.org/advanced-administration/server/wordpress-in-directory/" + +#: wp-admin/includes/ms.php:1170 wp-admin/network/site-new.php:32 +#: wp-admin/network/sites.php:44 +msgid "Documentation on Site Management" +msgstr "〈網站管理〉線上說明" + +#. translators: xfn (friendship relation): http://gmpg.org/xfn +#. translators: xfn (geographical relation): http://gmpg.org/xfn +#. translators: xfn (family relation): http://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1344 wp-admin/includes/meta-boxes.php:1383 +#: wp-admin/includes/meta-boxes.php:1408 +msgctxt "Type of relation" +msgid "none" +msgstr "沒有這項關係 (none)" + +#: wp-admin/includes/file.php:1152 +msgid "No URL Provided." +msgstr "沒有提供網址。" + +#: wp-admin/includes/file.php:331 wp-admin/options-permalink.php:480 +#: wp-admin/options-permalink.php:512 wp-admin/options-permalink.php:548 +#: wp-admin/plugin-editor.php:340 wp-admin/setup-config.php:488 +#: wp-admin/theme-editor.php:407 +msgid "https://developer.wordpress.org/advanced-administration/server/file-permissions/" +msgstr "https://developer.wordpress.org/advanced-administration/server/file-permissions/" + +#: wp-admin/includes/class-wp-upgrader.php:199 +msgid "Package not available." +msgstr "套件無法使用。" + +#: wp-admin/includes/class-wp-site-health.php:2925 +msgid "Autoloaded options" +msgstr "自動載入選項" + +#: wp-admin/includes/class-wp-site-health.php:2737 +msgid "More info about optimizing autoloaded options" +msgstr "進一步了解最佳化選項自動載入" + +#: wp-admin/includes/class-wp-site-health.php:2736 +msgid "https://developer.wordpress.org/advanced-administration/performance/optimization/#autoloaded-options" +msgstr "https://developer.wordpress.org/advanced-administration/performance/optimization/#autoloaded-options" + +#. translators: 1: Number of autoloaded options, 2: Autoloaded options size. +#: wp-admin/includes/class-wp-site-health.php:2719 +msgid "Your site has %1$s autoloaded options (size: %2$s) in the options table, which could cause your site to be slow. You can review the options being autoloaded in your database and remove any options that are no longer needed by your site." +msgstr "這個網站在 options 資料表中有 %1$s 自動載入選項 (大小: %2$s),這會造成網站速度變慢。網站管理員可以檢視資料庫中已自動載入的選項,並移除網站不再使用的選項。" + +#: wp-admin/includes/class-wp-site-health.php:2716 +msgid "Autoloaded options could affect performance" +msgstr "自動載入選項會影響效能" + +#. translators: 1: Number of autoloaded options, 2: Autoloaded options size. +#: wp-admin/includes/class-wp-site-health.php:2694 +msgid "Your site has %1$s autoloaded options (size: %2$s) in the options table, which is acceptable." +msgstr "這個網站的 options 資料表中有 %1$s 個自動載入選項 (大小: %2$s),仍在可接受範圍內。" + +#: wp-admin/includes/class-wp-site-health.php:2686 +msgid "Autoloaded options are acceptable" +msgstr "自動載入選項在可接受範圍內" + +#: wp-admin/includes/class-wp-site-health.php:2683 +msgid "Autoloaded options are configuration settings for plugins and themes that are automatically loaded with every page load in WordPress. Having too many autoloaded options can slow down your site." +msgstr "自動載入選項是 WordPress 網站會在每個頁面自動載入的外掛及佈景主題的組態設定。如果網站有過多的自動載入選項,會降低這個網站的速度。" + +#. translators: Localized Support reference. +#: wp-admin/includes/class-wp-site-health.php:2571 +msgid "https://developer.wordpress.org/advanced-administration/performance/optimization/#persistent-object-cache" +msgstr "https://developer.wordpress.org/advanced-administration/performance/optimization/#persistent-object-cache" + +#: wp-admin/includes/class-wp-site-health.php:2462 +msgid "https://developer.wordpress.org/advanced-administration/performance/optimization/#caching" +msgstr "https://developer.wordpress.org/advanced-administration/performance/optimization/#caching" + +#: wp-admin/includes/class-wp-debug-data.php:956 +msgid "Fonts directory size" +msgstr "字型安裝目錄大小" + +#: wp-admin/includes/class-wp-debug-data.php:952 +msgid "Fonts directory location" +msgstr "字型安裝目錄位置" + +#: wp-admin/includes/class-wp-debug-data.php:1814 +msgid "The fonts directory" +msgstr "fonts 目錄" + +#: wp-admin/includes/class-wp-automatic-updater.php:1350 +msgid "The following plugins failed to update. If there was a fatal error in the update, the previously installed version has been restored." +msgstr "下列外掛更新失敗。如果更新時發生嚴重錯誤,便會還原至安裝更新前的版本。" + +#. translators: %s: The plugin's slug. +#: wp-admin/includes/class-wp-automatic-updater.php:593 +msgid "The update for '%s' contained a fatal error. The previously installed version has been restored." +msgstr "代稱為 %s 的外掛其更新包含嚴重錯誤,已還原為之前安裝的版本。" + +#. translators: %s: The plugin's slug. +#: wp-admin/includes/class-wp-automatic-updater.php:582 +msgid "The update for '%s' contained a fatal error. The previously installed version could not be restored." +msgstr "%s 的更新包含嚴重錯誤。無法還原至安裝更新前的版本。" + +#: wp-admin/includes/class-plugin-installer-skin.php:302 +#: wp-admin/includes/class-plugin-installer-skin.php:308 +#: wp-admin/includes/class-theme-installer-skin.php:347 +#: wp-admin/includes/class-theme-installer-skin.php:353 +#: wp-admin/update-core.php:261 +msgid "https://developer.wordpress.org/advanced-administration/security/backup/" +msgstr "https://developer.wordpress.org/advanced-administration/security/backup/" + +#: wp-admin/export-personal-data.php:59 +msgid "If you are a plugin author, you can learn more about how to add the Personal Data Exporter to a plugin." +msgstr "外掛開發者請參考這篇文章,以進一步了解將使用者個人資料匯出程式加入外掛的方式。" + +#: wp-admin/erase-personal-data.php:59 +msgid "If you are a plugin author, you can learn more about how to add the Personal Data Eraser to a plugin." +msgstr "外掛開發者請參考這篇文章,以進一步了解將使用者個人資料清除程式加入外掛的方式。" + +#: wp-admin/about.php:171 +msgid "See everything new" +msgstr "查看全部改進項目" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:33 +msgid "https://wordpress.org/download/releases/%s/" +msgstr "https://tw.wordpress.org/download/releases/%s/" + +#. translators: %s: Version number. +#: wp-admin/about.php:163 +msgid "For a comprehensive overview of all the new features and enhancements in WordPress %s, please visit the feature-showcase website." +msgstr "如需進一步了解 WordPress %s 的新功能及改進項目的全面性概觀,請造訪功能展示網站。" + +#: wp-admin/about.php:157 +msgid "And much more" +msgstr "還有更多改進" + +#: wp-admin/menu.php:235 +msgctxt "patterns menu item" +msgid "Patterns" +msgstr "區塊版面配置" + +#: wp-admin/options-general.php:191 wp-admin/options-general.php:197 +msgid "Change Site Icon" +msgstr "變更網站圖示" + +#. translators: 1: Plugin name, 2: Number of plugins, 3: A comma-separated list +#. of plugin names. +#: wp-admin/includes/plugin.php:1221 +msgid "Error: %1$s requires %2$d plugin to be installed and activated: %3$s." +msgid_plural "Error: %1$s requires %2$d plugins to be installed and activated: %3$s." +msgstr[0] "錯誤: %1$s 需要安裝並啟用 %2$d 個外掛: %3$s。" + +#: wp-admin/includes/plugin-install.php:971 +#: wp-admin/includes/plugin-install.php:976 +msgctxt "plugin" +msgid "Update Now" +msgstr "立即更新" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:339 +#: wp-admin/includes/theme-install.php:207 +msgctxt "theme" +msgid "Install Now" +msgstr "立即安裝" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1606 +msgid "This plugin cannot be activated because required plugins are missing or inactive." +msgstr "由於必須安裝的相依性外掛找不到或未啟用,因此無法啟用這個外掛。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1604 +msgid "This plugin is active but may not function correctly because required plugins are missing or inactive." +msgstr "由於必須安裝的相依性外掛找不到或未啟用,因此這個外掛即使已啟用也無法正確執行。" + +#. translators: %s: List of dependency names. +#: wp-admin/includes/class-wp-plugins-list-table.php:1596 +msgid "Requires: %s" +msgstr "必須安裝的相依性項目: %s" + +#. translators: %s: List of dependencies. +#: wp-admin/includes/class-wp-plugins-list-table.php:1562 +msgid "Required by: %s" +msgstr "提出相依性要求的項目: %s" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1557 +msgid "Note: This plugin cannot be deactivated or deleted until the plugins that require it are deactivated or deleted." +msgstr "注意: 在提出相依性要求的外掛停用或刪除前,無法停用或刪除這個外掛。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:919 +msgid "You cannot deactivate this plugin as other plugins depend on it." +msgstr "這個外掛是其他外掛的相依性項目,因此無法停用這個外掛。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:885 +#: wp-admin/includes/class-wp-plugins-list-table.php:991 +msgid "You cannot delete this plugin as other plugins require it." +msgstr "這個外掛是其他外掛必須安裝的相依性項目,因此無法刪除這個外掛。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:855 +#: wp-admin/includes/class-wp-plugins-list-table.php:961 +msgid "You cannot activate this plugin as it has unmet requirements." +msgstr "這個外掛未滿足相依性需求,因此無法啟用這個外掛。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:829 +msgid "You cannot deactivate this plugin as other plugins require it." +msgstr "這個外掛是其他外掛必須安裝的相依性項目,因此無法停用這個外掛。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:632 +msgctxt "plugin" +msgid "Deactivate" +msgstr "停用" + +#: wp-admin/includes/class-wp-plugins-list-table.php:632 +#: wp-admin/includes/class-wp-plugins-list-table.php:845 +msgctxt "plugin" +msgid "Network Deactivate" +msgstr "於多站網路中停用" + +#: wp-admin/includes/class-wp-plugins-list-table.php:628 +#: wp-admin/includes/class-wp-plugins-list-table.php:959 +#: wp-admin/includes/class-wp-plugins-list-table.php:976 +#: wp-admin/includes/plugin-install.php:877 +#: wp-admin/includes/plugin-install.php:991 +#: wp-admin/includes/plugin-install.php:1022 wp-admin/js/updates.js:980 +#: wp-admin/js/updates.js:1025 +msgctxt "plugin" +msgid "Activate" +msgstr "啟用" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:793 +msgid "Additional plugins are required" +msgstr "需要其他外掛" + +#: wp-admin/includes/class-wp-debug-data.php:240 +msgid "Site ID" +msgstr "網站 ID" + +#. translators: 1: Current PHP version, 2: PHP version required by the new +#. theme version. +#: wp-admin/includes/class-theme-upgrader.php:465 +msgid "The PHP version on your server is %1$s, however the new theme version requires %2$s." +msgstr "這個網站的伺服器執行的是 PHP %1$s,但新佈景主題的 PHP 版本需求為 %2$s。" + +#. translators: 1: Current WordPress version, 2: WordPress version required by +#. the new theme version. +#: wp-admin/includes/class-theme-upgrader.php:451 +msgid "Your WordPress version is %1$s, however the new theme version requires %2$s." +msgstr "這個網站執行的是 WordPress %1$s,但新佈景主題的 WordPress 版本需求為 %2$s。" + +#: wp-admin/includes/class-plugin-installer-skin.php:130 +#: wp-admin/includes/class-wp-plugins-list-table.php:628 +#: wp-admin/includes/class-wp-plugins-list-table.php:853 +#: wp-admin/includes/class-wp-plugins-list-table.php:870 +#: wp-admin/includes/plugin-install.php:1004 +#: wp-admin/includes/plugin-install.php:1022 wp-admin/js/updates.js:969 +msgctxt "plugin" +msgid "Network Activate" +msgstr "於多站網路中啟用" + +#. translators: %s: Plugin name. +#: wp-admin/includes/ajax-actions.php:4594 +msgid "%s is already active." +msgstr "%s 已完成啟用。" + +#: wp-admin/import.php:166 wp-admin/includes/plugin-install.php:355 +#: wp-admin/includes/plugin-install.php:949 +#: wp-admin/includes/plugin-install.php:954 wp-admin/press-this.php:63 +#: wp-admin/js/updates.js:1312 wp-admin/js/updates.js:2637 +#: wp-admin/js/updates.js:2693 +msgctxt "plugin" +msgid "Install Now" +msgstr "立即安裝" + +#: wp-admin/credits.php:41 +msgid "Created by a worldwide team of passionate individuals" +msgstr "由許多熱情的社群成員組成的全球團隊所一手打造" + +#: wp-admin/update.php:158 wp-admin/update.php:310 +msgid "Only .zip archives may be uploaded." +msgstr "僅能上傳 .zip 壓縮檔。" + +#. translators: %s: Link to activate the Classic Widgets plugin. +#: wp-admin/widgets-form-blocks.php:105 +msgid "The block widgets require JavaScript. Please enable JavaScript in your browser settings, or activate the Classic Widgets plugin." +msgstr "區塊小工具需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或啟用傳統小工具外掛。" + +#. translators: %s: Link to install the Classic Editor plugin. +#: wp-admin/edit-form-blocks.php:411 +msgid "The block editor requires JavaScript. Please enable JavaScript in your browser settings, or install the Classic Editor plugin." +msgstr "區塊編輯器需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或安裝傳統編輯器外掛。" + +#. translators: %s: Link to activate the Classic Editor plugin. +#: wp-admin/edit-form-blocks.php:402 +msgid "The block editor requires JavaScript. Please enable JavaScript in your browser settings, or activate the Classic Editor plugin." +msgstr "區塊編輯器需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或啟用傳統編輯器外掛。" + +#: wp-admin/my-sites.php:81 +msgid "Add New Site" +msgstr "新增網站" + +#: wp-admin/includes/image-edit.php:80 +msgid "Rotate 180°" +msgstr "旋轉 180 度" + +#: wp-admin/includes/image-edit.php:79 +msgid "Rotate 90° right" +msgstr "向右旋轉 90 度" + +#: wp-admin/includes/image-edit.php:78 +msgid "Rotate 90° left" +msgstr "向左旋轉 90 度" + +#. translators: %s: Number of patterns. +#: wp-admin/edit.php:392 +msgid "%s pattern moved to the Trash." +msgid_plural "%s patterns moved to the Trash." +msgstr[0] "%s 個區塊版面配置已移至回收桶。" + +#. translators: %s: Number of patterns. +#: wp-admin/edit.php:390 +msgid "%s pattern permanently deleted." +msgid_plural "%s patterns permanently deleted." +msgstr[0] "%s 個區塊版面配置已永久刪除。" + +#. translators: %s: Number of patterns. +#: wp-admin/edit.php:385 +msgid "%s pattern updated." +msgid_plural "%s patterns updated." +msgstr[0] "%s 個區塊版面配置已更新。" + +#. translators: %s: The dismiss dashicon used for buttons that dismiss or +#. remove. +#: wp-admin/edit.php:293 +msgid "When using Bulk Edit, you can change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the %sremove button next to its name in the Bulk Edit area that appears." +msgstr "使用者使用 [批次編輯] 功能時,可以一次變更所選文章的中繼資料 (分類及作者等)。如需將某篇文章從批次編輯群組中移除,請點擊 [批次編輯] 區域中文章標題旁的 %s[移除] 按鈕。" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:228 +msgid "Read the WordPress %s Release Notes for information on installation, enhancements, fixed issues, release contributors, learning resources, and the list of file changes." +msgstr "閱讀 WordPress %s 版本資訊以進一步了解這個版本的安裝資訊、包含哪些增強功能、問題修正、發佈參與人員、學習資源及檔案變更清單。" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:255 +msgid "Explore the WordPress %s Field Guide. Learn about the changes in this release with detailed developer notes to help you build with WordPress." +msgstr "請參考最新版 WordPress %s 詳解指南,這份指南列舉了每一項開發者需要了解的注意事項,協助開發者使用 WordPress 建置程式。" + +#: wp-admin/includes/user.php:724 wp-admin/includes/user.php:747 +msgid "Invalid URL format." +msgstr "無效的網址格式。" + +#. translators: 1: Current PHP version, 2: PHP version required by the new +#. plugin version. +#: wp-admin/includes/class-plugin-upgrader.php:367 +msgid "The PHP version on your server is %1$s, however the new plugin version requires %2$s." +msgstr "這個網站的伺服器執行的是 PHP %1$s,但新外掛的 PHP 版本需求為 %2$s。" + +#. translators: 1: Current WordPress version, 2: WordPress version required by +#. the new plugin version. +#: wp-admin/includes/class-plugin-upgrader.php:353 +msgid "Your WordPress version is %1$s, however the new plugin version requires %2$s." +msgstr "這個網站執行的是 WordPress %1$s,但新外掛的 WordPress 版本需求為 %2$s。" + +#: wp-admin/contribute.php:112 wp-admin/credits.php:66 wp-admin/credits.php:74 +msgid "https://make.wordpress.org/contribute/" +msgstr "https://make.wordpress.org/contribute/" + +#: wp-admin/update-core.php:1068 +msgid "Updates may take several minutes to complete. If there is no feedback after 5 minutes, or if there are errors please refer to the Help section above." +msgstr "更新通常需要幾分鐘才能完成。如果開始更新 5 分鐘後系統沒有任何回應,或是發生錯誤,請參考上方的 [使用說明] 區段。" + +#: wp-admin/update-core.php:1043 +msgid "Restore Plugin or Theme" +msgstr "還原外掛或佈景主題" + +#: wp-admin/update-core.php:1038 +msgid "On systems with fewer resources, this may lead to server timeouts or resource limits being reached. If you encounter an issue during the update process, please create a support forum topic and reference Rollback in the issue title." +msgstr "在資源較少的系統上,這個功能可能會造成伺服器逾時或達到資源限制的上限。如果在更新時遇到問題,請前往技術支援論壇提出協助需求,並參考標題中含有 Rollback (復原) 字彙的問題。" + +#: wp-admin/update-core.php:1036 +msgid "This feature will create a temporary backup of a plugin or theme before it is upgraded. This backup is used to restore the plugin or theme back to its previous state if there is an error during the update process." +msgstr "這個功能會在升級外掛或佈景主題前,建立外掛或佈景主題暫存備份。更新程序發生錯誤時,這個備份便能將外掛或佈景主題還原至之前的狀態。" + +#: wp-admin/site-editor.php:333 +msgid "The site editor requires JavaScript. Please enable JavaScript in your browser settings." +msgstr "網站編輯器需要啟用 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定。" + +#: wp-admin/options-permalink.php:227 +msgid "https://wordpress.org/documentation/article/customize-permalinks/" +msgstr "https://wordpress.org/documentation/article/customize-permalinks/" + +#. translators: %s: Site tagline example. +#: wp-admin/options-general.php:90 +msgid "In a few words, explain what this site is about. Example: “%s.”" +msgstr "請簡單說明這個網站的內容。範例: %s" + +#: wp-admin/install.php:195 +msgid "Note: Discouraging search engines does not block access to your site — it is up to search engines to honor your request." +msgstr "注意: 阻擋搜尋引擎進行索引無法阻擋搜尋引擎存取網站,完全取決於搜尋引擎是否遵守相關設定的要求。" + +#: wp-admin/includes/template.php:762 +msgid "New custom field name" +msgstr "新增自訂欄位名稱" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/media.php:2777 +msgid "Search Media:" +msgstr "搜尋媒體:" + +#: wp-admin/includes/image-edit.php:270 +msgid "Clear Crop" +msgstr "清除裁剪設定" + +#: wp-admin/includes/image-edit.php:270 +msgid "Apply Crop" +msgstr "套用裁剪設定" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:263 +msgid "vertical start position" +msgstr "垂直起始位置" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:255 +msgid "horizontal start position" +msgstr "水平起始位置" + +#: wp-admin/includes/image-edit.php:250 +msgid "Starting Coordinates:" +msgstr "起始座標:" + +#: wp-admin/includes/image-edit.php:193 +msgid "Crop Image" +msgstr "裁剪圖片" + +#: wp-admin/includes/image-edit.php:163 wp-admin/includes/image-edit.php:944 +msgid "Images cannot be scaled to a size larger than the original." +msgstr "無法將圖片調整至超過原始尺寸。" + +#: wp-admin/includes/image-edit.php:101 +msgid "Save Edits" +msgstr "儲存編輯結果" + +#: wp-admin/includes/image-edit.php:100 +msgid "Cancel Editing" +msgstr "取消編輯" + +#: wp-admin/includes/file.php:2026 +msgid "Could not create the destination directory." +msgstr "無法建立目標目錄。" + +#: wp-admin/includes/class-wp-users-list-table.php:397 +#: wp-admin/includes/class-wp-ms-users-list-table.php:217 +msgid "Table ordered by E-mail." +msgstr "清單資料依據電子郵件地址排序。" + +#: wp-admin/includes/class-wp-users-list-table.php:396 +#: wp-admin/includes/class-wp-ms-users-list-table.php:215 +msgid "Table ordered by Username." +msgstr "清單資料依據使用者名稱排序。" + +#. translators: %s: The plugin or theme slug. +#: wp-admin/includes/class-wp-upgrader.php:219 +msgid "Could not delete the temporary backup directory for %s." +msgstr "無法刪除 %s 的暫存備份目錄。" + +#. translators: %s: The plugin or theme slug. +#: wp-admin/includes/class-wp-upgrader.php:217 +msgid "Could not restore the original version of %s." +msgstr "無法還原 %s 的原始版本。" + +#. translators: %s: upgrade-temp-backup +#: wp-admin/includes/class-wp-upgrader.php:215 +msgid "Could not move the old version to the %s directory." +msgstr "無法將舊版移動至 %s 目錄。" + +#. translators: %s: upgrade-temp-backup +#: wp-admin/includes/class-wp-upgrader.php:213 +msgid "Could not create the %s directory." +msgstr "無法建立 %s 目錄。" + +#: wp-admin/includes/class-wp-terms-list-table.php:223 +msgid "Table ordered by Links." +msgstr "清單資料依據連結排序。" + +#: wp-admin/includes/class-wp-terms-list-table.php:222 +msgid "Table ordered by Posts Count." +msgstr "清單資料依據文章計數排序。" + +#: wp-admin/includes/class-wp-terms-list-table.php:221 +msgid "Table ordered by Slug." +msgstr "清單資料依據代稱排序。" + +#: wp-admin/includes/class-wp-terms-list-table.php:220 +msgid "Table ordered by Description." +msgstr "清單資料依據內容說明排序。" + +#: wp-admin/includes/class-wp-terms-list-table.php:213 +msgid "Table ordered hierarchically." +msgstr "資料清單以階層式方式排序。" + +#: wp-admin/includes/class-wp-site-health.php:2921 +msgid "Available disk space" +msgstr "可供使用的磁碟空間" + +#: wp-admin/includes/class-wp-site-health.php:2917 +msgid "Plugin and theme temporary backup directory access" +msgstr "外掛及佈景主題的暫存備份目錄可存取" + +#. translators: 1: wp-content/upgrade, 2: wp-content. +#: wp-admin/includes/class-wp-site-health.php:2048 +msgid "The %1$s directory does not exist, and the server does not have write permissions in %2$s to create it. This directory is used for plugin and theme updates. Please make sure the server has write permissions in %2$s." +msgstr "%1$s 目錄不存在。伺服器對 %2$s 沒有寫入權限,因此無法建立這個目錄。這個目錄用於外掛及佈景主題的更新,請確定伺服器對 %2$s 目錄有寫入權限。" + +#: wp-admin/includes/class-wp-site-health.php:2045 +msgid "The upgrade directory cannot be created" +msgstr "upgrade 目錄無法建立" + +#. translators: %s: wp-content/upgrade +#: wp-admin/includes/class-wp-site-health.php:2037 +msgid "The %s directory exists but is not writable. This directory is used for plugin and theme updates. Please make sure the server has write permissions to this directory." +msgstr "%s 目錄已存在但不可寫入。這個目錄用於外掛及佈景主題的更新,請確認伺服器對這個目錄有寫入權限。" + +#: wp-admin/includes/class-wp-site-health.php:2034 +msgid "The upgrade directory exists but is not writable" +msgstr "upgrade 目錄已存在但不可寫入" + +#. translators: %s: wp-content/upgrade-temp-backup +#: wp-admin/includes/class-wp-site-health.php:2026 +msgid "The %s directory exists but is not writable. This directory is used to improve the stability of plugin and theme updates. Please make sure the server has write permissions to this directory." +msgstr "%s 目錄已存在但不可寫入。這個目錄用於改善外掛及佈景主題更新穩定性,請確認伺服器對這個目錄有寫入權限。" + +#: wp-admin/includes/class-wp-site-health.php:2023 +msgid "The temporary backup directory exists but is not writable" +msgstr "暫存備份目錄已存在但不可寫入" + +#. translators: %s: wp-content/upgrade-temp-backup/themes +#: wp-admin/includes/class-wp-site-health.php:2015 +msgid "The %s directory exists but is not writable. This directory is used to improve the stability of theme updates. Please make sure the server has write permissions to this directory." +msgstr "%s 目錄已存在但不可寫入。這個目錄用於改善佈景主題更新穩定性,請確認伺服器對這個目錄有寫入權限。" + +#: wp-admin/includes/class-wp-site-health.php:2012 +msgid "Theme temporary backup directory exists but is not writable" +msgstr "佈景主題暫存備份目錄已存在但不可寫入" + +#. translators: %s: wp-content/upgrade-temp-backup/plugins +#: wp-admin/includes/class-wp-site-health.php:2004 +msgid "The %s directory exists but is not writable. This directory is used to improve the stability of plugin updates. Please make sure the server has write permissions to this directory." +msgstr "%s 目錄已存在但不可寫入。這個目錄用於改善外掛更新穩定性,請確認伺服器對這個目錄有寫入權限。" + +#: wp-admin/includes/class-wp-site-health.php:2001 +msgid "Plugin temporary backup directory exists but is not writable" +msgstr "外掛暫存備份目錄已存在但不可寫入" + +#. translators: 1: wp-content/upgrade-temp-backup/plugins, 2: +#. wp-content/upgrade-temp-backup/themes. +#: wp-admin/includes/class-wp-site-health.php:1992 +msgid "The %1$s and %2$s directories exist but are not writable. These directories are used to improve the stability of plugin updates. Please make sure the server has write permissions to these directories." +msgstr "%1$s 及 %2$s 目錄已存在但不可寫入。這個目錄用於改善外掛及佈景主題更新穩定性,請確認伺服器對這些目錄有寫入權限。" + +#: wp-admin/includes/class-wp-site-health.php:1989 +msgid "Plugin and theme temporary backup directories exist but are not writable" +msgstr "外掛及佈景主題的暫存備份目錄已存在但不可寫入" + +#. translators: %s: wp-content +#: wp-admin/includes/class-wp-site-health.php:1971 +msgid "The %s directory cannot be located." +msgstr "找不到 %s 目錄。" + +#. translators: %s: wp-content/upgrade-temp-backup +#: wp-admin/includes/class-wp-site-health.php:1942 +msgid "The %s directory used to improve the stability of plugin and theme updates is writable." +msgstr "用於改善外掛及佈景主題更新穩定性的 %s 目錄可寫入。" + +#: wp-admin/includes/class-wp-site-health.php:1934 +msgid "Plugin and theme temporary backup directory is writable" +msgstr "外掛及佈景主題的暫存備份目錄可寫入" + +#: wp-admin/includes/class-wp-site-health.php:1864 +msgid "Could not determine available disk space for updates." +msgstr "無法確定是否有可供更新使用的磁碟空間。" + +#. translators: %s: Available disk space in MB or GB. +#: wp-admin/includes/class-wp-site-health.php:1869 +msgid "Available disk space is critically low, less than %s available. Proceed with caution, updates may fail." +msgstr "可用的磁碟空間嚴重不足,低於 %s。請小心執行更新,很可能會失敗。" + +#. translators: %s: Available disk space in MB or GB. +#: wp-admin/includes/class-wp-site-health.php:1876 +msgid "Available disk space is low, less than %s available." +msgstr "可用的磁碟空間不足,低於 %s。" + +#. translators: %s: Available disk space in MB or GB. +#: wp-admin/includes/class-wp-site-health.php:1856 +msgid "%s available disk space was detected, update routines can be performed safely." +msgstr "已偵測到 %s 的可用磁碟空間,可安全執行常規更新。" + +#: wp-admin/includes/class-wp-site-health.php:1848 +msgid "Disk space available to safely perform updates" +msgstr "可供安全執行更新使用的磁碟空間" + +#: wp-admin/includes/class-wp-posts-list-table.php:769 +msgid "Table ordered by Hierarchical Menu Order and Title." +msgstr "清單資料依據階層式選單順序及標題排序。" + +#: wp-admin/includes/class-wp-posts-list-table.php:767 +#: wp-admin/includes/class-wp-posts-list-table.php:780 +msgid "Table ordered by Title." +msgstr "清單資料依據標題排序。" + +#: wp-admin/includes/class-wp-media-list-table.php:435 +#: wp-admin/includes/class-wp-posts-list-table.php:776 +#: wp-admin/includes/class-wp-posts-list-table.php:783 +msgid "Table ordered by Date." +msgstr "清單資料依據日期排序。" + +#: wp-admin/includes/class-wp-media-list-table.php:434 +#: wp-admin/includes/class-wp-posts-list-table.php:775 +#: wp-admin/includes/class-wp-posts-list-table.php:782 +msgid "Table ordered by Comments." +msgstr "清單資料依據留言排序。" + +#: wp-admin/includes/class-wp-media-list-table.php:433 +msgid "Table ordered by Uploaded To." +msgstr "清單資料依據關聯內容排序。" + +#: wp-admin/includes/class-wp-media-list-table.php:432 +msgid "Table ordered by Author." +msgstr "清單資料依據作者名稱排序。" + +#: wp-admin/includes/class-wp-media-list-table.php:431 +msgid "Table ordered by File Name." +msgstr "清單資料依據檔案名稱排序。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:1593 +msgid "Descending." +msgstr "遞減" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:1591 +msgid "Ascending." +msgstr "遞增" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:1496 +msgid "Sort descending." +msgstr "遞減排序" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:1494 +msgid "Sort ascending." +msgstr "遞增排序" + +#: wp-admin/includes/class-wp-links-list-table.php:157 +msgid "Table ordered by Rating." +msgstr "清單資料依據評分排序。" + +#: wp-admin/includes/class-wp-links-list-table.php:156 +msgid "Table ordered by Visibility." +msgstr "清單資料依據可見度排序。" + +#: wp-admin/includes/class-wp-links-list-table.php:155 +msgid "Table ordered by URL." +msgstr "清單資料依據網址排序。" + +#: wp-admin/includes/class-wp-links-list-table.php:154 +#: wp-admin/includes/class-wp-terms-list-table.php:215 +#: wp-admin/includes/class-wp-ms-users-list-table.php:216 +msgid "Table ordered by Name." +msgstr "清單資料依據名稱排序。" + +#: wp-admin/includes/class-wp-debug-data.php:624 +msgid "Current Server time" +msgstr "目前伺服器時間" + +#: wp-admin/includes/class-wp-debug-data.php:620 +msgid "Current UTC time" +msgstr "目前 UTC 時間" + +#: wp-admin/includes/class-wp-debug-data.php:616 +msgid "Current time" +msgstr "目前時間" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-comments-list-table.php:621 +msgid "Ordered by Comment Date, descending." +msgstr "依留言發佈日期遞減排序" + +#: wp-admin/includes/class-wp-comments-list-table.php:577 +msgid "Table ordered by Post Replied To." +msgstr "資料清單依據回應目標排序。" + +#: wp-admin/includes/class-wp-comments-list-table.php:576 +msgid "Table ordered by Comment Author." +msgstr "清單資料依據留言者名稱排序。" + +#: wp-admin/includes/class-core-upgrader.php:41 +msgid "Attempting to restore the previous version." +msgstr "正在嘗試還原至先前版本。" + +#: wp-admin/includes/class-bulk-upgrader-skin.php:209 +msgid "More details." +msgstr "更多詳細資料" + +#: wp-admin/contribute.php:112 +msgid "Find your team →" +msgstr "參與合適的團隊 →" + +#: wp-admin/contribute.php:111 +msgid "Finding the area that aligns with your skills and interests is the first step toward meaningful contribution. With more than 20 Make WordPress teams working on different parts of the open source WordPress project, there’s a place for everyone, no matter what your skill set is." +msgstr "找到與個人能力及興趣相符的領域,是讓參與更有意義的第一步。WordPress 的開放原始碼專案,總計有超過 20 個不同領域的 Make WordPrees 團隊參與其中,無論個人具備的能力為何,都能在其中找到歸屬之地。" + +#: wp-admin/contribute.php:110 +msgid "Shape the future of the web with WordPress" +msgstr "使用 WordPress 塑造網路的未來" + +#: wp-admin/contribute.php:103 +msgid "WordPress app: Kotlin, Java, Swift, Objective-C, Vue, Python, and TypeScript." +msgstr "WordPress 的 App: Kotlin、Java、Swift、Objective-C、Vue、Python 及 TypeScript。" + +#: wp-admin/contribute.php:102 +msgid "WordPress Core and Block Editor: HTML, CSS, PHP, SQL, JavaScript, and React." +msgstr "WordPress 核心程式及區塊編輯器: HTML、CSS、PHP、SQL、JavaScript 及 React。" + +#: wp-admin/contribute.php:100 +msgid "WordPress embraces new technologies, while being committed to backward compatibility. The WordPress project uses the following languages and libraries:" +msgstr "WordPress 引進新技術的同時,也致力於維護回溯相容性。WordPress 開發專案使用以下程式語言及程式庫:" + +#: wp-admin/contribute.php:98 +msgid "Contribute to the code, improve the UX, and test the WordPress app." +msgstr "參與程式碼開發專案、改進使用者體驗,並測試 WordPress 的 App。" + +#: wp-admin/contribute.php:97 +msgid "Write and submit patches to fix bugs or help build new features." +msgstr "撰寫並提交能修正程式碼錯誤的修補程式或協助建置新功能。" + +#: wp-admin/contribute.php:96 +msgid "Test new releases and proposed features for the Block Editor." +msgstr "測試新版區塊編輯器及建議功能。" + +#: wp-admin/contribute.php:95 +msgid "Find and report bugs in the WordPress core software." +msgstr "尋找並回報 WordPress 核心程式的程式碼錯誤。" + +#: wp-admin/contribute.php:93 +msgid "If you do code, or want to learn how, you can contribute technically in numerous ways:" +msgstr "如果你具備撰寫程式碼的能力,或是想要學習撰寫程式碼,可以透過以下方式實際參與:" + +#: wp-admin/contribute.php:92 +msgid "Code-based contribution" +msgstr "可能需要撰寫程式碼的參與方式" + +#: wp-admin/contribute.php:80 +msgid "Explore ways to reduce the environmental impact of websites." +msgstr "研究並探討減少網站對環境產生影響的方法。" + +#: wp-admin/contribute.php:79 +msgid "Edit videos and add captions to WordPress.tv." +msgstr "編輯 WordPress.tv 上的影片或為影片加上字幕。" + +#: wp-admin/contribute.php:78 +msgid "Lend your creative imagination to the WordPress UI design." +msgstr "將你極具創意的想像力發揮在 WordPress 使用者介面的設計上。" + +#: wp-admin/contribute.php:77 +msgid "Organize or participate in local Meetups and WordCamps." +msgstr "舉辦或參與 WordPress 的當地 Meetup 小聚或 WordCamp 活動。" + +#: wp-admin/contribute.php:76 +msgid "Curate submissions or take photos for the Photo Directory." +msgstr "為 WordPress 相片目錄整理現有的照片或提供新照片。" + +#: wp-admin/contribute.php:75 +msgid "Promote the WordPress project to your community." +msgstr "向所屬社群推廣 WordPress 專案。" + +#: wp-admin/contribute.php:74 +msgid "Create and improve WordPress educational materials." +msgstr "建立並改進 WordPress 的教材。" + +#: wp-admin/contribute.php:73 +msgid "Translate WordPress into your local language." +msgstr "將 WordPress 本地化為你的母語。" + +#: wp-admin/contribute.php:72 +msgid "Write or improve documentation for WordPress." +msgstr "撰寫或改進 WordPress 的線上說明文件。" + +#: wp-admin/contribute.php:71 +msgid "Share your knowledge in the WordPress support forums." +msgstr "在 WordPress 技術支援論壇公開分享你的所知所學。" + +#: wp-admin/contribute.php:69 +msgid "WordPress may thrive on technical contributions, but you don’t have to code to contribute. Here are some of the ways you can make an impact without writing a single line of code:" +msgstr "WordPress 透過社群的技術貢獻成長茁壯,但你不必具備撰寫程式碼的能力便能參與其中。以下便是不需撰寫任何程式碼便能帶來影響的方式:" + +#: wp-admin/contribute.php:68 +msgid "No-code contribution" +msgstr "不需撰寫程式碼的參與方式" + +#: wp-admin/contribute.php:61 +msgid "Grow your network and make friends." +msgstr "拓展人際關係並結交朋友。" + +#: wp-admin/contribute.php:60 +msgid "Apply your skills or learn new ones." +msgstr "發揮個人所長或學習新技能。" + +#: wp-admin/contribute.php:59 +msgid "Be part of a global open source community." +msgstr "成為全球開放原始碼社群的一分子。" + +#: wp-admin/contribute.php:56 +msgid "Join the diverse WordPress contributor community and connect with other people who are passionate about maintaining a free and open web." +msgstr "加入 WordPress 多樣化的社群參與者的行列,便能與致力於維護自由開放網路的成員產生聯繫。" + +#: wp-admin/contribute.php:55 +msgid "Do you use WordPress for work, for personal projects, or even just for fun? You can help shape the long-term success of the open source project that powers millions of websites around the world." +msgstr "當你在工作上、個人專案中、甚至只是興趣使然使用了 WordPress,就協助了這個用於建置全球無數網站的開放原始碼專案達成長期成功的目標。" + +#: wp-admin/contribute.php:38 +msgid "Be the future of WordPress" +msgstr "WordPress 的未來,有你的參與" + +#. translators: 1: Learn WordPress link, 2: Workshops link. +#: wp-admin/about.php:196 +msgid "Learn WordPress is a free resource for new and experienced WordPress users. Learn is stocked with how-to videos on using various features in WordPress, interactive workshops for exploring topics in-depth, and lesson plans for diving deep into specific areas of WordPress." +msgstr "Learn WordPress 是適合剛入門及已具備一定程度經驗的 WordPress 使用者的開放資源,它的網站資源包含使用 WordPress 各項功能的操作影片、深度探討各種主題的互動式研討會,以及可供深入研究 WordPress 特定領域的教學方案。" + +#: wp-admin/comment.php:74 wp-admin/edit-comments.php:232 +#: wp-admin/edit-form-advanced.php:313 wp-admin/edit-form-advanced.php:331 +#: wp-admin/edit-form-advanced.php:349 wp-admin/edit-link-form.php:77 +#: wp-admin/edit-tags.php:315 wp-admin/edit.php:302 wp-admin/edit.php:327 +#: wp-admin/erase-personal-data.php:66 wp-admin/export-personal-data.php:66 +#: wp-admin/export.php:60 wp-admin/import.php:33 +#: wp-admin/includes/class-custom-background.php:111 +#: wp-admin/includes/class-custom-image-header.php:146 wp-admin/index.php:133 +#: wp-admin/link-manager.php:80 wp-admin/media-new.php:62 +#: wp-admin/my-sites.php:53 wp-admin/nav-menus.php:776 +#: wp-admin/options-discussion.php:33 wp-admin/options-general.php:61 +#: wp-admin/options-media.php:42 wp-admin/options-permalink.php:67 +#: wp-admin/options-reading.php:54 wp-admin/options-writing.php:54 +#: wp-admin/plugin-editor.php:159 wp-admin/plugin-install.php:122 +#: wp-admin/plugins.php:622 wp-admin/revision.php:159 +#: wp-admin/theme-editor.php:56 wp-admin/theme-install.php:157 +#: wp-admin/themes.php:210 wp-admin/tools.php:57 wp-admin/update-core.php:1055 +#: wp-admin/upload.php:201 wp-admin/upload.php:403 wp-admin/user-edit.php:79 +#: wp-admin/user-new.php:316 wp-admin/users.php:84 wp-admin/widgets-form.php:72 +#: wp-admin/network.php:83 wp-admin/network/settings.php:65 +#: wp-admin/network/themes.php:340 wp-admin/network/upgrade.php:38 +msgid "Support forums" +msgstr "技術支援論壇" + +#: wp-admin/widgets-form.php:71 +msgid "Documentation on Widgets" +msgstr "〈小工具〉線上說明" + +#: wp-admin/users.php:63 +msgid "View takes you to a public author archive which lists all the posts published by the user." +msgstr "檢視 — 點擊 [檢視] 連結便會進入列出這位使用者發佈的全部文章的作者彙整頁面。" + +#: wp-admin/upload.php:387 +msgid "Download file downloads the original media file to your device." +msgstr "複製檔案 — 點擊 [下載檔案] 便會將原始媒體檔案下載至目前使用的裝置。" + +#: wp-admin/site-editor.php:121 +msgctxt "site editor title tag" +msgid "Editor" +msgstr "編輯器" + +#: wp-admin/plugins.php:602 wp-admin/themes.php:202 +#: wp-admin/update-core.php:1030 wp-admin/network/themes.php:333 +msgid "Documentation on Auto-updates" +msgstr "〈自動更新外掛及佈景主題〉線上說明" + +#: wp-admin/options-general.php:571 +msgid "Documentation on date and time formatting." +msgstr "〈日期及時間格式〉線上說明" + +#: wp-admin/options-general.php:46 wp-admin/network/settings.php:56 +msgid "You can set the language, and WordPress will automatically download and install the translation files (available if your filesystem is writable)." +msgstr "網站管理員可為網站的前後端介面設定預設語言,語言套件會在設定完成後自動下載安裝。請注意,網站主機的檔案系統必須設定為可寫入。" + +#: wp-admin/options-general.php:43 +msgid "If you want site visitors to be able to register themselves, check the membership box. If you want the site administrator to register every new user, leave the box unchecked. In either case, you can set a default user role for all new users." +msgstr "如果網站管理員願意開放讓網站訪客自行註冊帳號,請選取 [成員資格] 核取方塊;如果需要經由網站管理員手動註冊新使用者,請取消選取 [成員資格] 核取方塊。無論是訪客自行註冊或由網站管理員手動註冊,新使用者均會套用在這個頁面中設定的預設使用者角色。" + +#. translators: 1: http://, 2: https: +#: wp-admin/options-general.php:39 +msgid "Both WordPress URL and site URL can start with either %1$s or %2$s. A URL starting with %2$s requires an SSL certificate, so be sure that you have one before changing to %2$s. With %2$s, a padlock will appear next to the address in the browser address bar. Both %2$s and the padlock signal that your site meets some basic security requirements, which can build trust with your visitors and with search engines." +msgstr "[WordPress 位址] 及 [網站位址] 都可以以 %1$s 或 %2$s 開頭。開頭為 %2$s 的網址需要 SSL 憑證,將網址的開頭變更為 %2$s 前,請確認已安裝屬於該網址的 SSL 憑證。開頭為 %2$s 的網址,會在瀏覽器網址列的網址旁顯示鎖頭符號。%2$s 及鎖頭符號都代表這個網站符合某些基本安全性需求,可與網站訪客及搜尋引擎建立可信任的連線。" + +#. translators: %s: Documentation URL. +#: wp-admin/options-general.php:34 +msgid "Though the terms refer to two different concepts, in practice, they can be the same address or different. For example, you can have the core WordPress installation files in the root directory (https://example.com), in which case the two URLs would be the same. Or the WordPress files can be in a subdirectory (https://example.com/wordpress). In that case, the WordPress URL and the site URL would be different." +msgstr "這 2 個詞彙分屬 2 個不同概念,但在實作中,這兩者可以是相同位址,也可以是不同位址。舉例來說,如果將 WordPress 核心程式檔案安裝於網站根目錄 (https://example.com),這兩個位址就會是相同網址;如果將 WordPress 核心程式檔案安裝於子目錄 (https://example.com/wordpress),[WordPress 位址] 及 [網站位址] 就會是不同網址。" + +#: wp-admin/options-general.php:31 +msgid "Two terms you will want to know are the WordPress URL and the site URL. The WordPress URL is where the core WordPress installation files are, and the site URL is the address a visitor uses in the browser to go to your site." +msgstr "網站管理員必須了解 [WordPress 位址] 及 [網站位址] 這 2 個詞彙的定義。[WordPress 位址] 是 WordPress 核心程式檔案的安裝位置,而 [網站位址] 是網站訪客使用瀏覽器瀏覽這個網站的網址。" + +#: wp-admin/options-discussion.php:280 +msgid "RoboHash (Generated)" +msgstr "RoboHash (自動產生)" + +#: wp-admin/menu.php:228 +msgctxt "site editor menu item" +msgid "Editor" +msgstr "編輯器" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/meta-boxes.php:856 +msgid "Allow trackbacks and pingbacks" +msgstr "開放引用通知及自動引用通知" + +#: wp-admin/includes/meta-boxes.php:833 +msgid "https://wordpress.org/documentation/article/assign-custom-fields/" +msgstr "https://wordpress.org/documentation/article/assign-custom-fields/" + +#: wp-admin/includes/meta-boxes.php:758 +msgid "https://wordpress.org/documentation/article/what-is-an-excerpt-classic-editor/" +msgstr "https://wordpress.org/documentation/article/what-is-an-excerpt-classic-editor/" + +#. translators: %s: The function name. +#: wp-admin/includes/file.php:2788 +msgid "%s expects a non-empty string." +msgstr "%s 必須是非空白字串。" + +#: wp-admin/includes/file.php:2107 +msgid "The destination directory already exists and could not be removed." +msgstr "目的地目錄已存在且無法移除。" + +#: wp-admin/includes/file.php:2104 +msgid "The destination folder already exists." +msgstr "目的資料夾已存在。" + +#: wp-admin/includes/file.php:2099 +msgid "The source and destination are the same." +msgstr "來源位置及目標位置相同。" + +#: wp-admin/includes/class-wp-screen.php:1121 +msgid "Expand or collapse the elements by clicking on their headings, and arrange them by dragging their headings or by clicking on the up and down arrows." +msgstr "點擊畫面元素的標題便可展開或收合,拖放標題或點擊向上或向下箭號即可重新排列順序。" + +#. translators: %s: Attachment title. +#: wp-admin/includes/class-wp-media-list-table.php:880 +msgid "Download “%s”" +msgstr "下載〈%s〉" + +#. translators: %s: The "$dir" argument. +#: wp-admin/includes/class-wp-automatic-updater.php:83 +msgid "The \"%s\" argument must be a non-empty string." +msgstr "%s 引數必須是非空白字串。" + +#: wp-admin/edit-form-advanced.php:312 +msgid "Documentation on Writing and Editing Posts" +msgstr "〈寫作及編輯文章〉線上說明" + +#: wp-admin/edit-comments.php:231 wp-admin/user-edit.php:364 +msgid "Documentation on Keyboard Shortcuts" +msgstr "〈鍵盤快捷鍵〉線上說明" + +#: wp-admin/edit-comments.php:230 +msgid "Documentation on Comment Spam" +msgstr "〈垃圾留言〉線上說明" + +#: wp-admin/customize.php:259 +msgid "Documentation on Customizer" +msgstr "〈外觀自訂器〉線上說明" + +#. translators: The localized WordPress download URL. +#: wp-admin/about.php:336 +msgid "https://wordpress.org/download/" +msgstr "https://tw.wordpress.org/download/" + +#. translators: %s: The major version of WordPress for this branch. +#: wp-admin/about.php:333 +msgid "This is the final release of WordPress %s" +msgstr "這是 WordPress %s 的最後一個發佈版本" + +#: wp-admin/includes/theme.php:342 +msgid "Site Editor" +msgstr "網站編輯器" + +#: wp-admin/users.php:66 +msgid "Send password reset sends the user an email with a link to set a new password." +msgstr "傳送密碼重設連結 — 點擊 [傳送密碼重設連結] 便會傳送一封用於設定新密碼連結的電子郵件給對應的使用者。" + +#: wp-admin/user-edit.php:879 +msgid "https://developer.wordpress.org/apis/wp-config-php/#wp-environment-type" +msgstr "https://developer.wordpress.org/apis/wp-config-php/#wp-environment-type" + +#: wp-admin/upload.php:386 +msgid "Copy URL copies the URL for the media file to your clipboard." +msgstr "複製網址 — 點擊 [複製網址] 便會將媒體檔案的網址複製至剪貼簿。" + +#: wp-admin/upload.php:385 +msgid "View will take you to a public display page for that file." +msgstr "檢視 — 點擊 [檢視] 便會進入這個檔案的公開顯示頁面。" + +#: wp-admin/upload.php:384 +msgid "Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached)." +msgstr "永久刪除 — 點擊 [永久刪除] 便會將這個檔案從媒體庫中刪除,與這個檔案有內容關聯的文章也會解除關聯。" + +#: wp-admin/upload.php:383 +msgid "Edit takes you to a simple screen to edit that individual file’s metadata. You can also reach that screen by clicking on the media file name or thumbnail." +msgstr "編輯 — 點擊 [編輯] 便會出現編輯檔案中繼資料的畫面,點擊媒體檔案名稱或縮圖也有一樣的效果。" + +#: wp-admin/upload.php:381 +msgid "Hovering over a row reveals action links that allow you to manage media items. You can perform the following actions:" +msgstr "將游標暫留於資料列上,便會顯示能管理媒體項目的操作連結。可以執行的操作如下:" + +#: wp-admin/theme-install.php:213 +msgctxt "themes" +msgid "Block Themes" +msgstr "區塊佈景主題" + +#: wp-admin/theme-install.php:156 +msgid "Documentation on Block Themes" +msgstr "〈區塊佈景主題〉線上說明" + +#: wp-admin/theme-install.php:148 +msgid "Block themes" +msgstr "區塊佈景主題" + +#: wp-admin/theme-install.php:143 +msgid "With a block theme, you can place and edit blocks without affecting your content by customizing or creating new templates." +msgstr "使用區塊佈景主題,便能透過自訂範本或建立新範本放置及編輯區塊,而不會影響網站內容。" + +#: wp-admin/theme-install.php:142 +msgid "A block theme is a theme that uses blocks for all parts of a site including navigation menus, header, content, and site footer. These themes are built for the features that allow you to edit and customize all parts of your site." +msgstr "區塊佈景主題代表網站全部組件均使用區塊,這些組件包含導覽選單、頁首、內容及網站頁尾。建置區塊佈景主題的目的,是為了讓使用者能編輯及自訂網站的全部組件。" + +#: wp-admin/site-health.php:277 +msgid "Recommended items are considered beneficial to your site, although not as important to prioritize as a critical issue. They may include improvements in areas such as security, performance, and user experience." +msgstr "[建議改進項目] 是對這個網站有益的項目,雖然不像 [重大問題] 所列項目那麼亟需解決,但 [建議改進項目] 可能包含如網站安全性、效能及使用者體驗等項目的改進。" + +#: wp-admin/site-health.php:264 +msgid "Critical issues are items that may have a high impact on your site’s performance or security. Resolving these issues should be prioritized." +msgstr "[重大問題] 所列的項目,會對這個網站的效能或安全性產生重大影響,應該優先解決這些問題。" + +#. translators: %s: wp-config.php +#: wp-admin/setup-config.php:442 +msgid "Configuration rules for %s:" +msgstr "%s 的組態規則:" + +#. translators: Hidden accessibility text. +#: wp-admin/options-permalink.php:366 +msgid "Customize permalink structure by selecting available tags" +msgstr "選取可供使用的標籤以自訂永久連結結構" + +#. translators: %s: %postname% +#: wp-admin/options-permalink.php:322 +msgid "Select the permalink structure for your website. Including the %s tag makes links easy to understand, and can help your posts rank higher in search engines." +msgstr "選取這個網站要採用的永久連結結構。納入 %s 標籤能讓連結更容易了解,並能協助網站內容在搜尋引擎中有更好的排名。" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:313 +msgid "%s removed from permalink structure" +msgstr "%s 已從永久連結結構中移除" + +#. translators: %s: Number of critical Site Health checks. +#: wp-admin/menu.php:395 +msgid "Site Health %s" +msgstr "網站狀態 %s" + +#: wp-admin/includes/file.php:24 +msgid "Theme Styles & Block Settings" +msgstr "佈景主題樣式及區塊設定" + +#. translators: %s: The minimum recommended PHP version. +#: wp-admin/includes/class-wp-site-health.php:771 +#: wp-admin/includes/dashboard.php:1920 +msgid "The minimum recommended version of PHP is %s." +msgstr "建議的最低版本需求為 PHP %s。" + +#: wp-admin/includes/class-wp-site-health.php:742 +#: wp-admin/includes/dashboard.php:1915 +msgid "PHP is one of the programming languages used to build WordPress. Newer versions of PHP receive regular security updates and may increase your site’s performance." +msgstr "PHP 是用於建置 WordPress 的其中一種程式語言。較新版本的 PHP 能接收定期安全性更新,並且能增進網站效能。" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/dashboard.php:1900 +msgid "Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress." +msgstr "這個網站執行於過時版本、WordPress 即將不支援的 PHP %s 執行環境。請確保網站伺服器會儘快更新 PHP 執行環境,否則會無法升級 WordPress。" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/dashboard.php:1887 +msgid "Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress. Ensure that PHP is updated on your server as soon as possible. Otherwise you will not be able to upgrade WordPress." +msgstr "這個網站執行於過時版本、無法接收安全性更新且 WordPress 即將不支援的 PHP %s 執行環境。請確保網站伺服器會儘快更新 PHP 執行環境,否則會無法升級 WordPress。" + +#: wp-admin/includes/class-wp-site-health.php:2990 +msgid "Persistent object cache" +msgstr "持續物件快取" + +#: wp-admin/includes/class-wp-site-health.php:2983 +msgid "Page cache" +msgstr "頁面快取" + +#: wp-admin/includes/class-wp-site-health.php:2633 +msgid "You should use a persistent object cache" +msgstr "這個網站應該使用持續物件快取" + +#. translators: Available object caching services. +#: wp-admin/includes/class-wp-site-health.php:2612 +msgid "Your host appears to support the following object caching services: %s." +msgstr "這個網站的主機支援所列物件快取服務: %s。" + +#: wp-admin/includes/class-wp-site-health.php:2607 +msgid "Your hosting provider can tell you if a persistent object cache can be enabled on your site." +msgstr "這個網站的主機服務提供商可以向網站管理員說明是否有在這個網站上啟用持續物件快取。" + +#: wp-admin/includes/class-wp-site-health.php:2600 +msgid "A persistent object cache is not required" +msgstr "持續物件快取不是必要項目" + +#: wp-admin/includes/class-wp-site-health.php:2589 +msgid "Learn more about persistent object caching." +msgstr "進一步了解持續物件快取" + +#: wp-admin/includes/class-wp-site-health.php:2584 +msgid "A persistent object cache makes your site’s database more efficient, resulting in faster load times because WordPress can retrieve your site’s content and settings much more quickly." +msgstr "持續物件快取能提升這個網站的資料庫執行效率,讓 WordPress 可以更快的擷取這個網站的內容及設定,進而縮短載入時間。" + +#: wp-admin/includes/class-wp-site-health.php:2581 +msgid "A persistent object cache is being used" +msgstr "已使用持續物件快取" + +#: wp-admin/includes/class-wp-site-health.php:2546 +msgid "A page cache plugin was not detected." +msgstr "沒有偵測到頁面快取外掛。" + +#: wp-admin/includes/class-wp-site-health.php:2543 +msgid "A page cache plugin was detected." +msgstr "已偵測到頁面快取外掛。" + +#. translators: %d: Number of caching headers. +#: wp-admin/includes/class-wp-site-health.php:2530 +msgid "There was %d client caching response header detected:" +msgid_plural "There were %d client caching response headers detected:" +msgstr[0] "已偵測到 %d 個用戶端快取回應標頭:" + +#: wp-admin/includes/class-wp-site-health.php:2525 +msgid "No client caching response headers were detected." +msgstr "沒有偵測到用戶端快取回應標頭。" + +#. translators: 1: The response time in milliseconds, 2: The recommended +#. threshold in milliseconds. +#: wp-admin/includes/class-wp-site-health.php:2518 +msgid "Median server response time was %1$s milliseconds. It should be less than the recommended %2$s milliseconds threshold." +msgstr "這個網站的伺服器回應時間中位數為 %1$s 毫秒,這項數值應該要小於建議臨界值 %2$s 毫秒。" + +#. translators: 1: The response time in milliseconds, 2: The recommended +#. threshold in milliseconds. +#: wp-admin/includes/class-wp-site-health.php:2511 +msgid "Median server response time was %1$s milliseconds. This is less than the recommended %2$s milliseconds threshold." +msgstr "這個網站的伺服器回應時間中位數為 %1$s 毫秒,小於建議臨界值 %2$s 毫秒。" + +#: wp-admin/includes/class-wp-site-health.php:2504 +msgid "Server response time could not be determined. Verify that loopback requests are working." +msgstr "無法判定伺服器回應時間。請確認回送要求是否正常執行。" + +#: wp-admin/includes/class-wp-site-health.php:2497 +msgid "Page cache is detected but the server response time is still slow" +msgstr "已偵測到這個網站的頁面快取,但伺服器回應時間依舊緩慢" + +#: wp-admin/includes/class-wp-site-health.php:2495 +msgid "Page cache is not detected and the server response time is slow" +msgstr "沒有偵測到這個網站的頁面快取,且伺服器回應時間緩慢" + +#: wp-admin/includes/class-wp-site-health.php:2491 +msgid "Page cache is detected and the server response time is good" +msgstr "已偵測到這個網站的頁面快取,且伺服器回應時間良好" + +#: wp-admin/includes/class-wp-site-health.php:2488 +msgid "Page cache is not detected but the server response time is OK" +msgstr "沒有偵測到這個網站的頁面快取,但伺服器回應時間正常" + +#. translators: 1: Error message, 2: Error code. +#: wp-admin/includes/class-wp-site-health.php:2476 +msgid "Unable to detect page cache due to possible loopback request problem. Please verify that the loopback request test is passing. Error: %1$s (Code: %2$s)" +msgstr "由於發生回送要求的問題,因此無法偵測到這個網站的頁面快取。請確認是否通過回送要求測試。錯誤: %1$s (代碼: %2$s)" + +#: wp-admin/includes/class-wp-site-health.php:2472 +msgid "Unable to detect the presence of page cache" +msgstr "無法偵測到這個網站是否有頁面快取" + +#: wp-admin/includes/class-wp-site-health.php:2463 +msgid "Learn more about page cache" +msgstr "進一步了解頁面快取" + +#: wp-admin/includes/class-wp-site-health.php:2448 +msgid "Page cache is detected by looking for an active page cache plugin as well as making three requests to the homepage and looking for one or more of the following HTTP client caching response headers:" +msgstr "透過查詢使用中的頁面快取外掛並向首頁發出 3 個要求,以及查詢以下一或多個 HTTP 用戶端快取回應標頭,便能偵測頁面快取是否存在:" + +#: wp-admin/includes/class-wp-site-health.php:2447 +msgid "Page cache enhances the speed and performance of your site by saving and serving static pages instead of calling for a page every time a user visits." +msgstr "頁面快取不需要使用者每次造訪網頁都呼叫對應頁面,而是透過儲存及提供靜態頁面加強這個網站速度及效能。" + +#: wp-admin/includes/class-wp-site-health.php:2413 +msgid "If you are still seeing this warning after having tried the actions below, you may need to contact your hosting provider for further assistance." +msgstr "如果在嘗試以下操作後,這個網站仍出現這個警告訊息,請聯絡這個網站的主機服務提供商以取得進一步的協助。" + +#: wp-admin/includes/class-wp-site-health.php:2396 +msgid "The Authorization header is used by third-party applications you have approved for this site. Without this header, those apps cannot connect to your site." +msgstr "授權標頭用於網站管理員在這個網站核准使用的第三方應用程式。如果沒有這個標頭,這些應用程式無法連線至這個網站。" + +#: wp-admin/includes/class-wp-site-health.php:2252 +msgid "When testing the REST API, an unexpected result was returned:" +msgstr "測試 REST API 時傳回未預期的結果:" + +#. translators: 1: The WordPress error code. 2: The WordPress error message. +#. translators: 1: The WordPress error code. 2: The HTTP status code error +#. message. +#: wp-admin/includes/class-wp-site-health.php:2240 +#: wp-admin/includes/class-wp-site-health.php:2260 +msgid "REST API Response: (%1$s) %2$s" +msgstr "REST API 回應: (%1$s) %2$s" + +#. translators: %s: The REST API URL. +#: wp-admin/includes/class-wp-site-health.php:2235 +#: wp-admin/includes/class-wp-site-health.php:2255 +msgid "REST API Endpoint: %s" +msgstr "REST API 端點: %s" + +#: wp-admin/includes/class-wp-site-health.php:2232 +msgid "When testing the REST API, an error was encountered:" +msgstr "測試 REST API 時發生錯誤:" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:841 +#: wp-admin/includes/dashboard.php:1893 +msgid "Your site is running on an outdated version of PHP (%s), which does not receive security updates. It should be updated." +msgstr "這個網站執行於過時版本、無法接收安全性更新的 PHP %s 執行環境。伺服器管理員應該更新 PHP 執行環境。" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:834 +msgid "Your site is running on an outdated version of PHP (%s), which does not receive security updates and soon will not be supported by WordPress." +msgstr "這個網站執行於過時版本、無法接收安全性更新且 WordPress 即將不支援的 PHP %s 執行環境。" + +#: wp-admin/includes/class-wp-site-health.php:813 +msgid "Requirements" +msgstr "環境需求" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:808 +msgid "Your site is running on an outdated version of PHP (%s), which soon will not be supported by WordPress." +msgstr "這個網站執行於過時版本、WordPress 即將不支援的 PHP %s 執行環境。" + +#: wp-admin/includes/class-wp-site-health.php:609 +msgid "Your site does not have any installed themes." +msgstr "這個網站尚未安裝任何佈景主題。" + +#: wp-admin/includes/class-wp-site-health.php:441 +msgid "Your site does not have any active plugins." +msgstr "這個網站沒有任何已啟用的外掛。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:197 +msgid "Another attempt will be made with the next release." +msgstr "下一個版本發佈時會進行另一次嘗試。" + +#. translators: 1: Name of the constant used. 2: Value of the constant used. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:79 +msgid "The %1$s constant is defined as %2$s" +msgstr "%1$s 常數已定義為 %2$s。" + +#. translators: %1$s: The argument name. %2$s: The view name. +#: wp-admin/includes/class-wp-list-table.php:449 +#: wp-admin/includes/class-wp-list-table.php:464 +msgid "The %1$s argument must be a non-empty string for %2$s." +msgstr "[%2$s] 的 %1$s 必須是非空白字串。" + +#. translators: %s: The $link_data argument. +#: wp-admin/includes/class-wp-list-table.php:432 +msgid "The %s argument must be an array." +msgstr "%s 引數必須是陣列。" + +#. translators: 1: Plugin name, 2: Version number, 3: Plugin URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1372 +#: wp-admin/includes/class-wp-automatic-updater.php:1444 +msgid "- %1$s version %2$s%3$s" +msgstr "- %1$s %2$s,網址為 %3$s" + +#. translators: 1: Plugin name, 2: Current version number, 3: New version +#. number, 4: Plugin URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1363 +#: wp-admin/includes/class-wp-automatic-updater.php:1435 +msgid "- %1$s (from version %2$s to %3$s)%4$s" +msgstr "- %1$s (從 %2$s 到 %3$s),網址為 %4$s" + +#: wp-admin/includes/class-wp-automatic-updater.php:1069 +msgid "Reach out to WordPress Core developers to ensure you'll never have this problem again." +msgstr "聯絡 WordPress 核心程式開發者以確保這個網站不會再遇到這個問題。" + +#. translators: 1: WordPress version number, 2: Link to update WordPress +#: wp-admin/about.php:330 +msgid "Important! Your version of WordPress (%1$s) will stop receiving security updates in the near future. To keep your site secure, please update to the latest version of WordPress." +msgstr "重要通知!這個網站的 WordPress %1$s 在不久後會停止接收安全性更新,如需持續維護網站安全性,請更新至最新版本的 WordPress。" + +#. translators: 1: WordPress version number, 2: Link to update WordPress +#: wp-admin/about.php:327 +msgid "Important! Your version of WordPress (%1$s) is no longer supported, you will not receive any security updates for your website. To keep your site secure, please update to the latest version of WordPress." +msgstr "重要通知!這個網站的 WordPress %1$s 已不再受到支援,且無法再接收任何安全性更新。如需持續維護網站安全性,請更新至最新版本的 WordPress。" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:27 +msgid "https://make.wordpress.org/core/wordpress-%s-field-guide/" +msgstr "https://make.wordpress.org/core/wordpress-%s-field-guide/" + +#. translators: %s: Version number. +#: wp-admin/about.php:187 +msgid "Learn more about WordPress %s" +msgstr "進一步了解 WordPress %s 版的相關資訊" + +#: wp-admin/includes/ajax-actions.php:1360 +#: wp-admin/includes/ajax-actions.php:1478 +msgid "Please type your comment text." +msgstr "請輸入留言內容。" + +#: wp-admin/users.php:468 wp-admin/users.php:500 +msgid "You cannot remove users." +msgstr "目前的登入身分沒有移除使用者的權限。" + +#. translators: 1: URL to my-sites.php, 2: Number of sites the user has. +#: wp-admin/user-edit.php:813 +msgid "Application passwords grant access to the %2$s site on the network as you have Super Admin rights." +msgid_plural "Application passwords grant access to all %2$s sites on the network as you have Super Admin rights." +msgstr[0] "應用程式密碼會將存取權授予多站網路中你有多站網路管理員權限的全部 %2$s 個網站。" + +#: wp-admin/upgrade.php:156 +msgid "WordPress has been updated! Next and final step is to update your database to the newest version." +msgstr "WordPress 已完成更新!接下來的最後一步,系統必須將這個網站的資料庫更新至最新版本。" + +#: wp-admin/themes.php:208 +msgid "Documentation on Managing Themes" +msgstr "〈管理佈景主題〉線上說明" + +#. translators: %s: wp-config.php +#: wp-admin/setup-config.php:183 +msgid "This information is being used to create a %s file." +msgstr "這些資訊會用於建立 %s 檔案。" + +#: wp-admin/setup-config.php:171 +msgid "Welcome to WordPress. Before getting started, you will need to know the following items." +msgstr "歡迎使用 WordPress。進行安裝時,安裝人員必須能夠提供安裝程式下列資訊。" + +#: wp-admin/options.php:359 +msgid "Settings save failed." +msgstr "設定儲存失敗。" + +#: wp-admin/options-privacy.php:201 +msgid "After your Privacy Policy page is set, you should edit it." +msgstr "透過系統功能建立隱私權政策頁面後,請進行必要的內容編輯。" + +#. translators: 1: .htaccess, 2: Documentation URL, 3: Ctrl + A, 4: ⌘ + A +#: wp-admin/options-permalink.php:546 +msgid "Error: Your %1$s file is not writable, so updating it automatically was not possible. These are the mod_rewrite rules you should have in your %1$s file. Click in the field and press %3$s (or %4$s on Mac) to select all." +msgstr "錯誤: 這個網站的 %1$s 檔案不是可寫入狀態,導致系統無法自動更新檔案,因此網站管理員必須手動在 %1$s 檔案中加入 mod_rewrite 規則。請點擊下方文字欄位並按下 %3$s (macOS 為按下 %4$s) 進行全選。" + +#. translators: 1: web.config, 2: Documentation URL, 3: Ctrl + A, 4: ⌘ + A, +#. 5: Element code. +#: wp-admin/options-permalink.php:478 +msgid "Error: Your %1$s file is not writable, so updating it automatically was not possible. This is the URL rewrite rule you should have in your %1$s file. Click in the field and press %3$s (or %4$s on Mac) to select all. Then insert this rule inside of the %5$s element in %1$s file." +msgstr "錯誤: 這個網站的 %1$s 檔案不是可寫入狀態,導致系統無法自動更新檔案,因此網站管理員必須手動在 %1$s 檔案中加入網址重新寫入規則。請點擊下方文字欄位並按下 %3$s (macOS 為按下 %4$s) 進行全選,然後將這個規則插入 %1$s 檔案的 %5$s 元素中。" + +#: wp-admin/options-discussion.php:216 +msgid "An avatar is an image that can be associated with a user across multiple websites. In this area, you can choose to display avatars of users who interact with the site." +msgstr "個人頭像就是跨網站與使用者能產生關聯的圖片。網站管理員可以在這裡選取使用者與網站互動時要顯示的個人頭像。" + +#: wp-admin/includes/post.php:1596 +msgid "Change Permalink Structure" +msgstr "變更永久連結結構" + +#. translators: Do not translate USERNAME, ADMIN_URL, EMAIL, SITENAME, SITEURL: +#. those are placeholders. +#: wp-admin/includes/misc.php:1465 +msgid "" +"Howdy,\n" +"\n" +"A site administrator (###USERNAME###) recently requested to have the\n" +"administration email address changed on this site:\n" +"###SITEURL###\n" +"\n" +"To confirm this change, please click on the following link:\n" +"###ADMIN_URL###\n" +"\n" +"You can safely ignore and delete this email if you do not want to\n" +"take this action.\n" +"\n" +"This email has been sent to ###EMAIL###\n" +"\n" +"Regards,\n" +"All at ###SITENAME###\n" +"###SITEURL###" +msgstr "" +"你好,\n" +"\n" +"使用者名稱為 ###USERNAME### 的網站管理員最近要求變更這個網站的網站管理員電子郵件地址:\n" +"###SITEURL###\n" +"\n" +"如需確認這項變更,請點擊以下連結:\n" +"###ADMIN_URL###\n" +"\n" +"如果不想進行變更操作,可以直接忽略並刪除這封電子郵件。\n" +"\n" +"這封電子郵件已傳送至 ###EMAIL###\n" +"\n" +"敬祝安好,\n" +"《###SITENAME###》網站管理員\n" +"###SITEURL###" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:598 +msgid "Where your data is sent" +msgstr "這個網站會將使用者資料傳送至何處" + +#. translators: %s: Attachment title. +#: wp-admin/includes/class-wp-media-list-table.php:868 +msgid "Copy “%s” URL to clipboard" +msgstr "複製〈%s〉的網址至剪貼簿" + +#: wp-admin/includes/class-wp-automatic-updater.php:1084 +msgid "Some data that describes the error your site encountered has been put together." +msgstr "說明這個網站遇到的問題的資料已整合在一起。" + +#: wp-admin/includes/class-wp-automatic-updater.php:1018 +msgid "An attempt was made, but your site could not be updated automatically." +msgstr "系統已進行嘗試,但是這個網站無法自動更新。" + +#: wp-admin/includes/class-core-upgrader.php:166 +#: wp-admin/includes/class-wp-upgrader.php:206 +#: wp-admin/includes/update-core.php:1158 +msgid "The update cannot be installed because some files could not be copied. This is usually due to inconsistent file permissions." +msgstr "由於無法複製某些檔案,因此無法安裝更新。這個狀況通常是由不正確的檔案權限所造成。" + +#: wp-admin/export-personal-data.php:42 +msgid "Media — A list of URLs for media files the user uploads." +msgstr "媒體 — 由使用者上傳的全部媒體的網址清單。" + +#: wp-admin/export-personal-data.php:39 +msgid "Community Events Location — The IP Address of the user, which populates the Upcoming Community Events dashboard widget with relevant information." +msgstr "社群活動位置 — 使用者用於即將舉辦的社群活動顯示相關資訊的 IP 位址 (顯示於控制台小工具)。" + +#: wp-admin/export-personal-data.php:37 +msgid "WordPress collects (but never publishes) a limited amount of data from registered users who have logged in to the site. Generally, these users are people who contribute to the site in some way -- content, store management, and so on. With rare exceptions, these users do not include occasional visitors who might have registered to comment on articles or buy products. The data WordPress retains can include:" +msgstr "WordPress 會從註冊並登入網站的使用者處收集 (但 絕對不會發佈) 有限度的資料。一般來說,網站使用者就是以某種方式 (例如內容、商店管理等) 貢獻內容的人;除了少數例外,這些使用者不包含可能會註冊發佈留言、發佈文章或購買商品的一般訪客。WordPress 會保留的資料列舉如下:" + +#: wp-admin/export-personal-data.php:28 +msgid "Note: Since this tool only gathers data from WordPress and participating plugins, you may need to do more to comply with export requests. For example, you should also send the requester some of the data collected from or stored with the 3rd party services your organization uses." +msgstr "注意: 由於這個工具僅會收集 WordPress 及符合規範的外掛的資料,因此網站管理員有可能需要完成更多工作才能符合匯出要求。舉例來說,網站管理員也應該將組織使用的第三方服務收集或儲存的資料傳送給申請者。" + +#: wp-admin/export-personal-data.php:26 +msgid "Privacy Laws around the world require businesses and online services to provide an export of some of the data they collect about an individual, and to deliver that export on request. The rights those laws enshrine are sometimes called the \"Right of Data Portability\". It allows individuals to obtain and reuse their personal data for their own purposes across different services. It allows them to move, copy or transfer personal data easily from one IT environment to another." +msgstr "全世界許多隱私權相關法律會要求企業或線上服務提供匯出已收集使用者個人資料的功能,並依照要求傳送這些資料給使用者;這些法律賦予的權利有時候稱為「資料可攜權」,能讓使用者在不同服務間依照需求獲得並重複使用他們的個人資料,並能輕易讓這些個人資料從某個 IT 環境移動、複製或傳輸至另一個環境。" + +#: wp-admin/erase-personal-data.php:41 +msgid "Comments — WordPress does not delete comments. The software does anonymize (but, again, never publishes) the associated Email Address, IP Address, and User Agent (Browser/OS)." +msgstr "留言 — WordPress 不會刪除使用者發佈的留言,但使用者資料會完成匿名化 (重申一次,絕對不會發佈),包含電子郵件地址、IP 位址及使用者代理程式 (瀏覽器/作業系統)。" + +#: wp-admin/erase-personal-data.php:37 +msgid "WordPress collects (but never publishes) a limited amount of data from logged-in users but then deletes it or anonymizes it. That data can include:" +msgstr "WordPress 會從註冊並登入網站的使用者處收集 (但 絕對不會發佈) 有限度的資料,但隨後會刪除資料或將資料匿名化。這些資料列舉如下:" + +#: wp-admin/erase-personal-data.php:28 +msgid "Note: As this tool only gathers data from WordPress and participating plugins, you may need to do more to comply with erasure requests. For example, you are also responsible for ensuring that data collected by or stored with the 3rd party services your organization uses gets deleted." +msgstr "注意: 由於這個工具僅會收集 WordPress 及符合規範的外掛的資料,因此網站管理員有可能需要完成更多工作才能符合清除要求。舉例來說,網站管理員也要負責確保刪除由組織使用的第三方服務收集或儲存的資料。" + +#: wp-admin/erase-personal-data.php:26 +msgid "Privacy Laws around the world require businesses and online services to delete, anonymize, or forget the data they collect about an individual. The rights those laws enshrine are sometimes called the \"Right to be Forgotten\"." +msgstr "全世界許多隱私權相關法律會要求企業或線上服務提供刪除、匿名化或抹除已收集使用者個人資料的功能,這些由法律賦予的權利稱為「被遺忘權」。" + +#: wp-admin/erase-personal-data.php:25 +msgid "This screen is where you manage requests to erase personal data." +msgstr "這個畫面可以讓網站管理員管理清除使用者個人資料的要求。" + +#: wp-admin/edit-form-advanced.php:462 +msgid "This post is being backed up in your browser, just in case." +msgstr "正在瀏覽器中備份這篇內容,以防萬一。" + +#. translators: 1: URL to my-sites.php, 2: Number of sites the user has. +#: wp-admin/authorize-application.php:185 +msgid "This will grant access to the %2$s site on the network as you have Super Admin rights." +msgid_plural "This will grant access to all %2$s sites on the network as you have Super Admin rights." +msgstr[0] "這項操作會將存取權授予多站網路中你有多站網路管理員權限的全部 %2$s 個網站。" + +#: wp-admin/includes/dashboard.php:2139 +msgid "Learn about block themes" +msgstr "進一步了解區塊佈景主題" + +#: wp-admin/includes/dashboard.php:2138 +msgid "There is a new kind of WordPress theme, called a block theme, that lets you build the site you’ve always wanted — with blocks and styles." +msgstr "全新推出的 WordPress 區塊佈景主題,能讓使用者使用區塊及樣式依據需求建置網站。" + +#: wp-admin/includes/dashboard.php:2137 +msgid "Discover a new way to build your site." +msgstr "深入了解建置網站的全新方式" + +#: wp-admin/includes/dashboard.php:2135 +msgid "Edit styles" +msgstr "編輯樣式" + +#: wp-admin/includes/dashboard.php:2134 +msgid "Tweak your site, or give it a whole new look! Get creative — how about a new color palette or font?" +msgstr "調整網站或賦予全新外觀!使用全新調色盤或字型發揮無限創意!" + +#: wp-admin/includes/dashboard.php:2133 +msgid "Switch up your site’s look & feel with Styles" +msgstr "使用 [樣式] 功能變更網站的外觀與風格" + +#: wp-admin/includes/dashboard.php:2121 +msgid "Open the Customizer" +msgstr "開啟外觀自訂器" + +#: wp-admin/includes/dashboard.php:2119 +msgid "Configure your site’s logo, header, menus, and more in the Customizer." +msgstr "在外觀自訂器中設定網站標誌、頁首、選單等項目。" + +#: wp-admin/includes/dashboard.php:2118 +msgid "Start Customizing" +msgstr "自訂網站外觀" + +#: wp-admin/includes/dashboard.php:2116 +msgid "Open site editor" +msgstr "開啟網站編輯器" + +#: wp-admin/includes/dashboard.php:2115 +msgid "Design everything on your site — from the header down to the footer, all using blocks and patterns." +msgstr "上從頁首、下至頁尾,整個網站都可以使用區塊及區塊版面配置設計任何項目。" + +#: wp-admin/includes/dashboard.php:2114 +msgid "Customize your entire site with block themes" +msgstr "使用區塊佈景主題自訂整個網站" + +#: wp-admin/includes/dashboard.php:2104 +msgid "Add a new page" +msgstr "新增頁面" + +#: wp-admin/includes/dashboard.php:2103 +msgid "Block patterns are pre-configured block layouts. Use them to get inspired or create new pages in a flash." +msgstr "區塊版面配置是預先設計好的區塊外觀樣式。使用區塊版面配置取得靈感或在極短時間內建立全新頁面。" + +#: wp-admin/includes/dashboard.php:2102 +msgid "Author rich content with blocks and patterns" +msgstr "使用區塊及區塊版面配置創作豐富的內容" + +#. translators: %s: Current WordPress version. +#: wp-admin/includes/dashboard.php:2089 +msgid "Learn more about the %s version." +msgstr "進一步了解 %s 版" + +#: wp-admin/freedoms.php:44 +msgid "WordPress is free and open source software" +msgstr "WordPress 是可以自由使用的開放原始碼軟體" + +#: wp-admin/menu.php:303 wp-admin/menu.php:304 wp-admin/menu.php:333 +#: wp-admin/network/menu.php:112 +msgid "Plugin File Editor" +msgstr "外掛檔案編輯器" + +#: wp-admin/menu.php:283 wp-admin/menu.php:284 wp-admin/network/menu.php:87 +msgid "Theme File Editor" +msgstr "佈景主題檔案編輯器" + +#. translators: %s: Documentation URL. +#: wp-admin/user-edit.php:878 +msgid "If this is a development website, you can set the environment type accordingly to enable application passwords." +msgstr "如果這是開發網站,請設定對應的環境類型以啟用應用程式密碼。" + +#: wp-admin/user-edit.php:873 +msgid "The application password feature requires HTTPS, which is not enabled on this site." +msgstr "應用程式密碼功能需要 HTTPS 連線,但這個網站並未啟用 HTTPS 連線。" + +#. translators: Last update time format. See +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/update-core.php:1115 +msgid "g:i a T" +msgstr "a g:i T" + +#: wp-admin/theme-editor.php:53 +msgid "Documentation on Editing Themes" +msgstr "〈編輯佈景主題〉線上說明" + +#: wp-admin/site-health.php:90 +msgid "Documentation on Site Health tool" +msgstr "〈[網站狀態] 工具〉線上說明" + +#: wp-admin/site-health.php:84 +msgid "In the Info tab, you will find all the details about the configuration of your WordPress site, server, and database. There is also an export feature that allows you to copy all of the information about your site to the clipboard, to help solve problems on your site when obtaining support." +msgstr "在 [網站狀態資訊] 分頁中,會顯示這個 WordPress 網站的組態、伺服器及資料庫的全部詳細資訊,同時也提供讓網站管理員可以複製網站資訊至剪貼簿的匯出功能,讓網站需要技術支援時,能提供必要的資訊解決問題。" + +#: wp-admin/site-health.php:83 +msgid "In the Status tab, you can see critical information about your WordPress configuration, along with anything else that requires your attention." +msgstr "在 [網站狀態] 分頁中,網站管理員可以檢視這個 WordPress 網站的組態的關鍵資訊,以及需要注意的其他相關資訊。" + +#: wp-admin/site-health.php:82 +msgid "This screen allows you to obtain a health diagnosis of your site, and displays an overall rating of the status of your installation." +msgstr "這個畫面可以讓網站管理員取得這個網站的狀態診斷資料,並顯示這個網站狀態的整體評等。" + +#: wp-admin/options-privacy.php:47 +msgid "Documentation on Privacy Settings" +msgstr "〈隱私權政策設定〉線上說明" + +#: wp-admin/options-privacy.php:41 +msgid "This screen includes suggestions to help you write your own privacy policy. However, it is your responsibility to use these resources correctly, to provide the information required by your privacy policy, and to keep this information current and accurate." +msgstr "這個畫面包含協助網站管理員撰寫網站專屬隱私權政策的建議。請注意,網站管理員有責任正確使用這些資源,以提供這個網站的隱私權政策所需的‪資訊,並確保資訊的時效性及正確性。" + +#: wp-admin/options-privacy.php:40 +msgid "The Privacy screen lets you either build a new privacy-policy page or choose one you already have to show." +msgstr "[隱私權] 畫面能讓網站管理員建立新的隱私權政策頁面,或選取並使用這個網站已有的隱私權政策頁面。" + +#: wp-admin/options-discussion.php:62 +msgid "Individual posts may override these settings. Changes here will only be applied to new posts." +msgstr "這些設定可於編輯內容時個別設定,內容中的獨立設定值會優先於這裡的全域設定。如果變更這裡的設定,僅會套用至變更後的新文章。" + +#: wp-admin/nav-menus.php:597 +msgid "Menu item moved to the top" +msgstr "選單項目已移至頂端。" + +#: wp-admin/nav-menus.php:594 +msgid "Menu item removed" +msgstr "選單項目已移除。" + +#: wp-admin/index.php:37 +msgid "The Dashboard is the first place you will come to every time you log into your site. It is where you will find all your WordPress tools. If you need help, just click the “Help” tab above the screen title." +msgstr "[控制台] 是使用者每次登入網站後會看見的第一個畫面,這個畫面能讓使用者找到 WordPress 網站的全部工具。如需取得協助,請點擊任何頁面標題上方的 [使用說明] 分頁。" + +#: wp-admin/index.php:36 +msgid "Welcome to your WordPress Dashboard!" +msgstr "歡迎使用 WordPress 控制台!" + +#: wp-admin/includes/user.php:680 +msgid "The application ID must be a UUID." +msgstr "應用程式 ID 必須是 UUID。" + +#: wp-admin/includes/dashboard.php:1393 +msgid "Select location" +msgstr "選取位置" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-plugins-list-table.php:1220 +msgid "Visit plugin site for %s" +msgstr "造訪外掛 %s 的網站" + +#: wp-admin/includes/class-wp-plugins-list-table.php:876 +#: wp-admin/includes/class-wp-plugins-list-table.php:982 +msgctxt "plugin" +msgid "Cannot Activate" +msgstr "無法啟用" + +#: wp-admin/includes/class-wp-debug-data.php:1759 +msgid "Max connections number" +msgstr "連線數上限" + +#: wp-admin/includes/class-wp-debug-data.php:1755 +msgid "Max allowed packet size" +msgstr "允許的封包大小上限" + +#: wp-admin/authorize-application.php:94 +msgid "Your website appears to use Basic Authentication, which is not currently compatible with application passwords." +msgstr "這個網站使用基本驗證,這種驗證方式與應用程式密碼不相容。" + +#. translators: Editor admin screen title. 1: "Edit item" text for the post +#. type, 2: Post title. +#: wp-admin/admin-header.php:65 +msgid "%1$s “%2$s”" +msgstr "%1$s - %2$s" + +#: wp-admin/includes/theme.php:347 +msgid "Template Editing" +msgstr "編輯範本" + +#. translators: %s: https://wordpress.org/about/license +#: wp-admin/freedoms.php:61 +msgid "WordPress comes with some awesome, worldview-changing rights courtesy of its license, the GPL." +msgstr "WordPress 使用的授權方式為令人驚嘆、改變這個世界對軟體授權看法的 GPL 授權。" + +#: wp-admin/credits.php:72 +msgid "Want to see your name in lights on this page?" +msgstr "想要名列這個頁面?" + +#: wp-admin/credits.php:66 wp-admin/credits.php:74 +msgid "Get involved in WordPress." +msgstr "了解如何參與 WordPress 專案" + +#. translators: 1: https://wordpress.org/about +#: wp-admin/credits.php:61 +msgid "WordPress is created by a worldwide team of passionate individuals." +msgstr "WordPress 是由許多熱情的社群成員組成的全球團隊所一手打造。" + +#. translators: %s: Name of deactivated plugin. +#: wp-admin/includes/plugin.php:2650 +msgid "%s plugin deactivated during WordPress upgrade." +msgstr "WordPress 更新期間停用了 %s 外掛。" + +#. translators: 1: Name of deactivated plugin, 2: Plugin version deactivated, +#. 3: Current WP version. +#: wp-admin/includes/plugin.php:2638 +msgid "%1$s %2$s was deactivated due to incompatibility with WordPress %3$s." +msgstr "由於與 WordPress %3$s 不相容,因此停用了 %1$s %2$s。" + +#. translators: 1: Name of deactivated plugin, 2: Plugin version deactivated, +#. 3: Current WP version, 4: Compatible plugin version. +#: wp-admin/includes/plugin.php:2629 +msgid "%1$s %2$s was deactivated due to incompatibility with WordPress %3$s, please upgrade to %1$s %4$s or later." +msgstr "由於與 WordPress %3$s 不相容,因此停用了 %1$s %2$s,請升級至 %1$s %4$s 或更新版本。" + +#: wp-admin/freedoms.php:39 +msgid "The Four Freedoms" +msgstr "四項使用自由" + +#. translators: %s: Theme name. +#: wp-admin/themes.php:1305 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:656 +msgctxt "theme" +msgid "Delete %s" +msgstr "刪除 %s" + +#. translators: %s: Theme name. +#: wp-admin/themes.php:631 wp-admin/themes.php:650 wp-admin/themes.php:1022 +#: wp-admin/themes.php:1039 wp-admin/themes.php:1264 wp-admin/themes.php:1284 +msgctxt "theme" +msgid "Live Preview %s" +msgstr "即時預覽 %s" + +#. translators: %s: Theme name. +#: wp-admin/themes.php:610 wp-admin/themes.php:1002 +msgctxt "theme" +msgid "Customize %s" +msgstr "自訂 %s" + +#. translators: %s: Theme name. +#: wp-admin/themes.php:584 wp-admin/themes.php:976 +msgctxt "theme" +msgid "View Theme Details for %s" +msgstr "檢視 %s 佈景主題的詳細資料" + +#. translators: Hidden accessibility text. +#: wp-admin/site-health.php:176 +msgid "Toggle extra menu items" +msgstr "開啟/關閉額外的選單項目" + +#. translators: %s: The currently displayed tab. +#: wp-admin/site-health.php:43 +msgid "Site Health - %s" +msgstr "網站狀態 - %s" + +#. translators: 1: wp-config.php, 2: Documentation URL. +#: wp-admin/setup-config.php:486 +msgid "You need to make the file %1$s writable before you can save your changes. See Changing File Permissions for more information." +msgstr "儲存變更前,請確認 %1$s 檔案為可寫入。請參閱〈變更檔案權限〉,以進一步了解相關資訊。" + +#: wp-admin/options-permalink.php:490 wp-admin/options-permalink.php:522 +#: wp-admin/options-permalink.php:557 +msgid "Rewrite rules:" +msgstr "重新寫入規則:" + +#: wp-admin/nav-menus.php:1168 +msgid "List of menu items selected for deletion:" +msgstr "已選取的選單項目刪除清單:" + +#: wp-admin/nav-menus.php:1166 +msgid "Remove Selected Items" +msgstr "移除已選取的項目" + +#: wp-admin/nav-menus.php:1130 wp-admin/nav-menus.php:1164 +msgid "Bulk Select" +msgstr "批次選取" + +#. translators: %s: Item name. +#: wp-admin/nav-menus.php:592 +msgid "Deleted menu item: %s." +msgstr "已刪除的選單項目: %s。" + +#. translators: %s: Item name. +#: wp-admin/nav-menus.php:590 +msgid "item %s" +msgstr "[%s] 項目" + +#. translators: %s: Number of available theme updates. +#: wp-admin/menu.php:225 wp-admin/network/menu.php:68 +msgid "Themes %s" +msgstr "佈景主題 %s" + +#. translators: %s: Error message. +#: wp-admin/includes/privacy-tools.php:419 +msgid "Unable to encode the personal data for export. Error: %s" +msgstr "無法為匯出的使用者個人資料進行編碼。錯誤: %s" + +#. translators: %s: Post meta key. +#: wp-admin/includes/privacy-tools.php:404 +msgid "The %s post meta must be an array." +msgstr "%s 文章中繼資料必須是陣列。" + +#: wp-admin/includes/dashboard.php:2029 +msgid "Your site’s health is looking good, but there is still one thing you can do to improve its performance and security." +msgstr "這個網站的網站狀態良好,但仍有需要網站管理員執行、可改善效能及安全性的項目。" + +#: wp-admin/includes/dashboard.php:2025 +msgid "Your site has a critical issue that should be addressed as soon as possible to improve its performance and security." +msgstr "這個網站有需要盡快解決的重大問題,解決後便能提升網站效能及安全性。" + +#. translators: %s: Browse Happy URL. +#: wp-admin/includes/dashboard.php:1764 +msgid "Learn how to browse happy" +msgstr "進一步了解如何獲得優異的瀏覽體驗" + +#: wp-admin/includes/dashboard.php:1731 +msgid "Internet Explorer does not give you the best WordPress experience. Switch to Microsoft Edge, or another more modern browser to get the most from your site." +msgstr "Internet Explorer 無法讓使用者有最佳的 WordPress 體驗。請切換至 Microsoft Edge,或其他更新式的瀏覽器,以便從這個網站獲得最佳體驗。" + +#: wp-admin/includes/class-wp-debug-data.php:816 +msgid "GD supported file formats" +msgstr "GD 支援的檔案格式" + +#: wp-admin/includes/class-wp-debug-data.php:757 +msgid "Unable to determine" +msgstr "無法確認" + +#: wp-admin/includes/class-wp-debug-data.php:756 +msgid "ImageMagick supported file formats" +msgstr "ImageMagick 支援的檔案格式" + +#: wp-admin/includes/class-wp-debug-data.php:675 +msgid "Imagick version" +msgstr "Imagick 版本" + +#: wp-admin/includes/class-theme-installer-skin.php:264 +msgctxt "theme" +msgid "Uploaded" +msgstr "已上傳版本" + +#: wp-admin/includes/class-plugin-installer-skin.php:319 +msgctxt "plugin" +msgid "Replace current with uploaded" +msgstr "使用已上傳版本取代現有版本" + +#: wp-admin/includes/class-plugin-installer-skin.php:231 +msgctxt "plugin" +msgid "Uploaded" +msgstr "已上傳版本" + +#: wp-admin/includes/class-plugin-installer-skin.php:230 +msgctxt "plugin" +msgid "Current" +msgstr "目前版本" + +#. translators: %s: A link to activate the Link Manager plugin. +#: wp-admin/includes/bookmark.php:371 +msgid "Please activate the Link Manager plugin to use the link manager." +msgstr "如需使用連結管理程式,請啟用 Link Manager 外掛。" + +#: wp-admin/options-privacy.php:265 +msgid "Create a new Privacy Policy page" +msgstr "建立新的隱私權政策頁面" + +#: wp-admin/export-personal-data.php:132 +msgid "Send personal data export confirmation email." +msgstr "傳送使用者個人資料匯出確認電子郵件" + +#: wp-admin/export-personal-data.php:108 +msgid "This tool helps site owners comply with local laws and regulations by exporting known data for a given user in a .zip file." +msgstr "這個工具能將提出要求的使用者的現有資料以 ZIP 檔案格式匯出,藉以協助網站擁有者遵守當地法律及法規。" + +#: wp-admin/export-personal-data.php:65 +msgid "Documentation on Export Personal Data" +msgstr "〈匯出使用者個人資料〉線上說明" + +#: wp-admin/export-personal-data.php:57 +msgid "Many plugins may collect or store personal data either in the WordPress database or remotely. Any Export Personal Data request should include data from plugins as well." +msgstr "許多外掛會利用 WordPress 資料庫或遠端方式,進行使用者個人資料的收集或儲存。任何使用者個人資料匯出要求,都應該包含外掛收集的資料。" + +#. translators: %s: URL to Privacy Policy Guide screen. +#: wp-admin/export-personal-data.php:48 +msgid "If you are not sure, check the plugin documentation or contact the plugin author to see if the plugin collects data and if it supports the Data Exporter tool. This information may be available in the Privacy Policy Guide." +msgstr "如果網站管理員不確定實際狀況,請查閱外掛相關文件或聯絡外掛開發者,以便了解外掛是否收集資料及是否支援資料匯出程式。這項資訊可能會在 [隱私權政策指南] 中提供。" + +#: wp-admin/export-personal-data.php:41 +msgid "Comments — For user comments, Email Address, IP Address, User Agent (Browser/OS), Date/Time, Comment Content, and Content URL." +msgstr "留言 — 使用者發佈的留言、電子郵件地址、IP 位址、使用者代理程式 (瀏覽器/作業系統)、日期/時間、留言內容及內容網址。" + +#: wp-admin/export-personal-data.php:25 +msgid "This screen is where you manage requests for an export of personal data." +msgstr "這個畫面可以讓網站管理員管理匯出使用者個人資料的要求。" + +#: wp-admin/site-health.php:118 +msgid "Site URLs could not be switched to HTTPS." +msgstr "網站網址無法切換至 HTTPS。" + +#: wp-admin/site-health.php:109 +msgid "Site URLs switched to HTTPS." +msgstr "網站網址已切換至 HTTPS。" + +#: wp-admin/site-health.php:66 +msgid "It looks like HTTPS is not supported for your website at this point." +msgstr "這個網站目前似乎不支援 HTTPS。" + +#: wp-admin/site-health.php:62 +msgid "Sorry, you are not allowed to update this site to HTTPS." +msgstr "很抱歉,目前的登入身分沒有將這個網站更新至 HTTPS 的權限。" + +#. translators: %s: Number of users. +#: wp-admin/users.php:667 +msgid "Password reset links sent to %s user." +msgid_plural "Password reset links sent to %s users." +msgstr[0] "密碼重設連結已傳送給 %s 個使用者。" + +#: wp-admin/users.php:664 +msgid "Password reset link sent." +msgstr "密碼重設連結已傳送。" + +#. translators: %s: User's display name. +#: wp-admin/user-edit.php:745 +msgid "Send %s a link to reset their password. This will not change their password, nor will it force a change." +msgstr "將密碼重設連結傳送給「%s」以重設密碼。這不會變更使用者密碼,也不會強制進行變更。" + +#: wp-admin/user-edit.php:738 +msgid "Send Reset Link" +msgstr "傳送重設連結" + +#: wp-admin/privacy-policy-guide.php:95 +msgid "Policies" +msgstr "政策內容" + +#: wp-admin/options-privacy.php:182 wp-admin/privacy-policy-guide.php:65 +msgid "The Privacy Settings require JavaScript." +msgstr "隱私權政策設定需要 JavaScript。" + +#. translators: Tab heading for Site Health Status page. +#: wp-admin/options-privacy.php:172 wp-admin/privacy-policy-guide.php:55 +msgctxt "Privacy Settings" +msgid "Policy Guide" +msgstr "隱私權政策指南" + +#. translators: Tab heading for Site Health Status page. +#: wp-admin/options-privacy.php:165 wp-admin/privacy-policy-guide.php:48 +msgctxt "Privacy Settings" +msgid "Settings" +msgstr "設定" + +#. translators: %s: WordPress version. +#: wp-admin/update-core.php:82 +msgid "Re-install version %s" +msgstr "重新安裝 %s" + +#. translators: %s: WordPress version. +#: wp-admin/update-core.php:71 +msgid "Update to latest %s nightly" +msgstr "更新至 %s 版最新每日發佈版本" + +#: wp-admin/erase-personal-data.php:132 +msgid "Send personal data erasure confirmation email." +msgstr "傳送使用者個人資料清除確認電子郵件" + +#: wp-admin/erase-personal-data.php:127 wp-admin/export-personal-data.php:127 +msgid "Confirmation email" +msgstr "確認電子郵件" + +#: wp-admin/erase-personal-data.php:108 +msgid "This tool helps site owners comply with local laws and regulations by deleting or anonymizing known data for a given user." +msgstr "這個工具能刪除或匿名化處理提出要求的使用者的現有資料,藉以協助網站擁有者遵守當地法律及法規。" + +#: wp-admin/erase-personal-data.php:65 +msgid "Documentation on Erase Personal Data" +msgstr "〈清除使用者個人資料〉線上說明" + +#: wp-admin/erase-personal-data.php:57 +msgid "Many plugins may collect or store personal data either in the WordPress database or remotely. Any Erase Personal Data request should delete data from plugins as well." +msgstr "許多外掛會利用 WordPress 資料庫或遠端方式,進行使用者個人資料的收集或儲存。任何使用者個人資料清除要求,都應該刪除外掛收集的資料。" + +#: wp-admin/erase-personal-data.php:55 wp-admin/export-personal-data.php:55 +msgid "Plugin Data" +msgstr "外掛資料" + +#. translators: %s: URL to Privacy Policy Guide screen. +#: wp-admin/erase-personal-data.php:48 +msgid "If you are not sure, check the plugin documentation or contact the plugin author to see if the plugin collects data and if it supports the Data Eraser tool. This information may be available in the Privacy Policy Guide." +msgstr "如果網站管理員不確定實際狀況,請查閱外掛相關文件或聯絡外掛開發者,以便了解外掛是否收集資料及是否支援資料清除程式。這項資訊可能會在 [隱私權政策指南] 中提供。" + +#: wp-admin/erase-personal-data.php:42 +msgid "Media — A list of URLs for all media file uploads made by the user." +msgstr "媒體 — 由使用者上傳的全部媒體的網址清單。" + +#: wp-admin/erase-personal-data.php:40 wp-admin/export-personal-data.php:40 +msgid "Session Tokens — User login information, IP Addresses, Expiration Date, User Agent (Browser/OS), and Last Login." +msgstr "工作階段權杖 — 使用者登入資訊、IP 位址、工作階段到期日、使用者代理程式 (瀏覽器/作業系統) 及最後登入時間。" + +#: wp-admin/erase-personal-data.php:39 +msgid "Community Events Location — The IP Address of the user which is used for the Upcoming Community Events shown in the dashboard widget." +msgstr "社群活動位置 — 使用者用於即將舉辦的社群活動的 IP 位址 (顯示於控制台小工具)。" + +#: wp-admin/erase-personal-data.php:38 wp-admin/export-personal-data.php:38 +msgid "Profile Information — user email address, username, display name, nickname, first name, last name, description/bio, and registration date." +msgstr "個人資料相關資訊 — 使用者電子郵件地址、使用者名稱、顯示名稱、暱稱、姓氏、名字、自傳資訊及帳號註冊日期。" + +#: wp-admin/erase-personal-data.php:35 wp-admin/export-personal-data.php:35 +msgid "Default Data" +msgstr "預設資料" + +#: wp-admin/erase-personal-data.php:27 wp-admin/export-personal-data.php:27 +msgid "The tool associates data stored in WordPress with a supplied email address, including profile data and comments." +msgstr "這個工具透過提供的電子郵件地址,將儲存於 WordPress 網站資料庫的資料進行關聯,包含使用者個人資料及留言。" + +#: wp-admin/includes/dashboard.php:1498 +msgid "https://make.wordpress.org/community/organize-event-landing-page/" +msgstr "https://make.wordpress.org/community/organize-event-landing-page/" + +#. translators: %s: Localized meetup organization documentation URL. +#: wp-admin/includes/dashboard.php:1497 +msgid "Want more events? Help organize the next one!" +msgstr "想參加更多活動?協助社群舉辦活動" + +#. translators: %s: User's display name. +#: wp-admin/includes/ajax-actions.php:5642 +msgid "A password reset link was emailed to %s." +msgstr "密碼重設連結已透過電子郵件傳送給「%s」。" + +#: wp-admin/includes/ajax-actions.php:5632 +msgid "Cannot send password reset, permission denied." +msgstr "無法傳送密碼重設連結,權限遭拒。" + +#. translators: 1: post_max_size, 2: upload_max_filesize +#: wp-admin/includes/class-wp-site-health.php:2356 +msgid "The setting for %1$s is currently configured as 0, this could cause some problems when trying to upload files through plugin or theme features that rely on various upload methods. It is recommended to configure this setting to a fixed value, ideally matching the value of %2$s, as some upload methods read the value 0 as either unlimited, or disabled." +msgstr "目前 %1$s 的設定值設定為 0,這會造成透過依賴各種上傳方法的外掛或佈景主題上傳檔案時的問題。建議將這項設定變更為固定值,最佳方式是與 %2$s 的設定值保持一致,因為某些上傳方法讀取到設定值為 0 的話,會造成沒有上傳上限或停用上傳功能。" + +#: wp-admin/includes/class-wp-site-health.php:1588 +#: wp-admin/includes/class-wp-site-health.php:1595 +msgid "Talk to your web host about supporting HTTPS for your website." +msgstr "請與網站主機商聯絡,討論關於這個網站的 HTTPS 支援。" + +#: wp-admin/includes/class-wp-site-health.php:1569 +#: wp-admin/includes/class-wp-site-health.php:1577 +msgid "Update your site to use HTTPS" +msgstr "更新這個網站以使用 HTTPS" + +#. translators: 1: wp-config.php, 2: WP_HOME, 3: WP_SITEURL +#: wp-admin/includes/class-wp-site-health.php:1555 +msgid "However, your WordPress Address is currently controlled by a PHP constant and therefore cannot be updated. You need to edit your %1$s and remove or update the definitions of %2$s and %3$s." +msgstr "但是這個網站的 [WordPress 位址] 目前由 PHP 常數控制,因此無法更新。網站管理員必須編輯這個網站的 %1$s,然後移除或更新 %2$s 及 %3$s 的定義。" + +#: wp-admin/includes/class-wp-site-health.php:1547 +msgid "HTTPS is already supported for your website." +msgstr "這個網站已支援 HTTPS。" + +#. translators: 1: URL to Settings > General > WordPress Address, 2: URL to +#. Settings > General > Site Address. +#: wp-admin/includes/class-wp-site-health.php:1536 +msgid "Your WordPress Address and Site Address are not set up to use HTTPS." +msgstr "這個網站的 [WordPress 位址] 及 [網站位址] 並未設定為 HTTPS。" + +#. translators: 1: URL to Settings > General > WordPress Address, 2: URL to +#. Settings > General > Site Address. +#: wp-admin/includes/class-wp-site-health.php:1526 +msgid "You are accessing this website using HTTPS, but your WordPress Address and Site Address are not set up to use HTTPS by default." +msgstr "目前你正以 HTTPS 存取這個網站,但這個網站的 [WordPress 位址] 及 [網站位址] 卻仍為預設值,並未設定為 HTTPS。" + +#. translators: %s: URL to Settings > General > Site Address. +#: wp-admin/includes/class-wp-site-health.php:1515 +msgid "Your Site Address is not set up to use HTTPS." +msgstr "這個網站的 [網站位址] 並未設定為 HTTPS。" + +#: wp-admin/includes/class-wp-site-health.php:1404 +msgid "Learn more about debugging in WordPress." +msgstr "進一步了解 WordPress 中的偵錯方式" + +#: wp-admin/includes/class-wp-users-list-table.php:286 +#: wp-admin/includes/class-wp-users-list-table.php:507 +msgid "Send password reset" +msgstr "傳送密碼重設連結" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:612 +msgid "Contact information" +msgstr "聯絡資訊" + +#: wp-admin/includes/class-wp-privacy-policy-content.php:431 +msgid "Copy suggested policy text to clipboard" +msgstr "複製建議的隱私權政策內容至剪貼簿" + +#: wp-admin/includes/file.php:2017 +msgid "Directory listing failed." +msgstr "無法列出目錄。" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:104 +#: wp-admin/includes/class-wp-theme-install-list-table.php:61 +#: wp-admin/includes/file.php:33 wp-admin/js/updates.js:3039 +msgid "Search Results" +msgstr "搜尋結果" + +#: wp-admin/includes/privacy-tools.php:945 +msgid "Invalid request ID when processing personal data to erase." +msgstr "用於處理清除使用者個人資料的要求 ID 無效。" + +#: wp-admin/includes/privacy-tools.php:794 +msgid "Invalid request ID when merging personal data to export." +msgstr "用於合併匯出使用者個人資料的要求 ID 無效。" + +#: wp-admin/includes/privacy-tools.php:545 +msgid "Unable to archive the personal data export file (HTML format)." +msgstr "無法壓縮使用者個人資料匯出檔 (HTML 格式)。" + +#: wp-admin/includes/privacy-tools.php:541 +msgid "Unable to archive the personal data export file (JSON format)." +msgstr "無法壓縮使用者個人資料匯出檔 (JSON 格式)。" + +#: wp-admin/includes/privacy-tools.php:447 +msgid "Unable to open personal data export (HTML report) for writing." +msgstr "無法開啟使用者個人資料匯出檔 (HTML 報告) 進行資料寫入。" + +#: wp-admin/includes/privacy-tools.php:333 +msgid "Unable to create personal data export folder." +msgstr "無法建立使用者個人資料匯出資料夾。" + +#: wp-admin/includes/privacy-tools.php:173 +msgid "Request added successfully." +msgstr "要求已成功新增。" + +#: wp-admin/includes/privacy-tools.php:107 +#: wp-admin/includes/privacy-tools.php:124 +msgid "Invalid personal data action." +msgstr "無效的使用者個人資料操作。" + +#: wp-admin/includes/privacy-tools.php:31 +msgid "Unable to initiate confirmation for personal data request." +msgstr "無法為使用者個人資料要求初始化資訊。" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/dashboard.php:1906 +msgid "Your site is running on an outdated version of PHP (%s), which should be updated." +msgstr "這個網站執行於過時版本、需要進行更新的 PHP %s 執行環境。" + +#: wp-admin/includes/dashboard.php:52 +msgid "PHP Update Recommended" +msgstr "PHP 執行環境建議更新" + +#: wp-admin/user-edit.php:856 +msgid "Your website appears to use Basic Authentication, which is not currently compatible with Application Passwords." +msgstr "這個網站使用基本驗證,這種驗證方式與應用程式密碼不相容。" + +#: wp-admin/includes/class-wp-site-health.php:2429 +msgid "https://developer.wordpress.org/rest-api/frequently-asked-questions/#why-is-authentication-not-working" +msgstr "https://developer.wordpress.org/rest-api/frequently-asked-questions/#why-is-authentication-not-working" + +#: wp-admin/update-core.php:411 +msgid "This site appears to be under version control. Automatic updates are disabled." +msgstr "由於這個網站由版本控制功能管理,因此自動更新功能已停用。" + +#: wp-admin/update-core.php:272 +msgid "You are using a development version of WordPress." +msgstr "這個網站使用了 WordPress 的開發版本。" + +#: wp-admin/update-core.php:78 +msgid "You can update to the latest nightly build manually:" +msgstr "這個網站可以手動更新至最新版的每日發佈版本組建。" + +#: wp-admin/update-core.php:431 +msgid "Enable automatic updates for all new versions of WordPress." +msgstr "啟用 WordPress 全部新版本的自動更新" + +#: wp-admin/update-core.php:420 +msgid "Switch to automatic updates for maintenance and security releases only." +msgstr "切換至僅會安裝安全性維護版本的自動更新" + +#. translators: Current version of WordPress. +#: wp-admin/update-core.php:1104 +msgid "Current version: %s" +msgstr "目前版本: %s" + +#: wp-admin/update-core.php:435 +msgid "This site will not receive automatic updates for new versions of WordPress." +msgstr "這個網站不會接收 WordPress 新版本的自動更新。" + +#: wp-admin/update-core.php:424 +msgid "This site is automatically kept up to date with maintenance and security releases of WordPress only." +msgstr "這個網站僅會自動更新至 WordPress 安全性維護版本。" + +#: wp-admin/update-core.php:413 +msgid "This site is automatically kept up to date with each new version of WordPress." +msgstr "這個網站會自動更新至 WordPress 每個最新版本。" + +#: wp-admin/update-core.php:318 +msgid "WordPress will only receive automatic security and maintenance releases from now on." +msgstr "WordPress 從現在開始僅會自動接收安全性維護版本。" + +#: wp-admin/update-core.php:309 +msgid "Automatic updates for all WordPress versions have been enabled. Thank you!" +msgstr "WordPress 全部版本的自動更新已啟用。感謝啟用這項設定。" + +#: wp-admin/index.php:82 +msgid "Site Health Status — Informs you of any potential issues that should be addressed to improve the performance or security of your website." +msgstr "網站狀態 — 這項功能會通知網站管理員需要進行處理的潛在問題,藉以改善網站的效能或安全性。" + +#. translators: %s: Application name. +#: wp-admin/authorize-application.php:209 wp-admin/user-edit.php:999 +#: wp-admin/js/auth-app.js:90 +msgid "Your new password for %s is:" +msgstr "[%s] 的應用程式密碼:" + +#: wp-admin/user-edit.php:851 +msgid "Add Application Password" +msgstr "新增應用程式密碼" + +#: wp-admin/user-edit.php:837 +msgid "Required to create an Application Password, but not to update the user." +msgstr "這是建立應用程式密碼的必填項目,但這項設定不會變更使用者個人資料。" + +#: wp-admin/about.php:271 +msgid "Go to Updates" +msgstr "前往 [更新]" + +#: wp-admin/user-edit.php:225 +msgid "← Go to Users" +msgstr "← 前往 [使用者]" + +#: wp-admin/revision.php:111 +msgid "← Go to editor" +msgstr "← 前往編輯器" + +#: wp-admin/includes/class-plugin-installer-skin.php:145 +#: wp-admin/includes/class-plugin-installer-skin.php:151 +msgid "Go to Plugin Installer" +msgstr "前往 [安裝外掛]" + +#: wp-admin/includes/class-plugin-installer-skin.php:139 +msgid "Go to Importers" +msgstr "前往 [匯入程式]" + +#: wp-admin/includes/class-theme-installer-skin.php:174 +msgid "Go to Theme Installer" +msgstr "前往 [安裝佈景主題]" + +#: wp-admin/includes/privacy-tools.php:294 +msgid "Go to top" +msgstr "返回頂端" + +#. translators: %s is the name of the city we couldn't locate. Replace the +#. examples with cities in your locale, but test that they match the expected +#. location before including them. Use endonyms (native locale names) whenever +#. possible. +#: wp-admin/includes/dashboard.php:1455 +msgid "%s could not be located. Please try another nearby city. For example: Kansas City; Springfield; Portland." +msgstr "系統找不到「%s」這個城市,請試試另一個附近城市的中文或英文名稱。例如: 台中、Taichung、新竹、Hsinchu 等。" + +#: wp-admin/authorize-application.php:323 +msgid "You will be returned to the WordPress Dashboard, and no changes will be made." +msgstr "你將會返回 WordPress 控制台,並且不會產生任何變更。" + +#: wp-admin/authorize-application.php:305 +msgid "No, I do not approve of this connection" +msgstr "否,不核准這個連線" + +#: wp-admin/authorize-application.php:298 +msgid "You will be given a password to manually enter into the application in question." +msgstr "你將會取得需要手動輸入的應用程式密碼。" + +#. translators: %s: The URL the user is being redirected to. +#: wp-admin/authorize-application.php:285 +#: wp-admin/authorize-application.php:319 +msgid "You will be sent to %s" +msgstr "你將會重新導向至 %s" + +#: wp-admin/authorize-application.php:271 +msgid "Yes, I approve of this connection" +msgstr "是,核准這個連線" + +#. translators: 1: URL to my-sites.php, 2: Number of sites the user has. +#: wp-admin/authorize-application.php:177 +msgid "This will grant access to the %2$s site in this installation that you have permissions on." +msgid_plural "This will grant access to all %2$s sites in this installation that you have permissions on." +msgstr[0] "這項操作會將存取權授予多站網路中你有相關權限的全部 %2$s 個網站。" + +#: wp-admin/authorize-application.php:164 +msgid "Would you like to give this application access to your account? You should only do this if you trust the application in question." +msgstr "是否要授予這個應用程式存取你的帳號的權限?僅有在信任這個應用程式時,才進行這項操作。" + +#. translators: %s: Application name. +#: wp-admin/authorize-application.php:158 +msgid "Would you like to give the application identifying itself as %s access to your account? You should only do this if you trust the application in question." +msgstr "是否要授予名為 [%s] 的應用程式存取你的帳號的權限?僅有在信任這個應用程式時,才進行這項操作。" + +#: wp-admin/authorize-application.php:152 +msgid "An application would like to connect to your account." +msgstr "有個應用程式想要連線至你的帳號。" + +#: wp-admin/authorize-application.php:88 wp-admin/authorize-application.php:95 +#: wp-admin/authorize-application.php:113 +msgid "Cannot Authorize Application" +msgstr "無法授權應用程式" + +#: wp-admin/authorize-application.php:87 +msgid "The Authorize Application request is not allowed." +msgstr "目前的登入身分沒有授權應用程式要求的權限。" + +#: wp-admin/authorize-application.php:66 +msgid "Authorize Application" +msgstr "授權應用程式" + +#: wp-admin/authorize-application.php:215 wp-admin/user-edit.php:1008 +#: wp-admin/js/auth-app.js:98 +msgid "Be sure to save this in a safe location. You will not be able to retrieve it." +msgstr "請務必將應用程式密碼儲存於安全位置,這個密碼不會再次顯示。" + +#: wp-admin/authorize-application.php:247 wp-admin/user-edit.php:835 +msgid "New Application Password Name" +msgstr "請輸入應用程式密碼名稱" + +#. translators: 1: URL to my-sites.php, 2: Number of sites the user has. +#: wp-admin/user-edit.php:805 +msgid "Application passwords grant access to the %2$s site in this installation that you have permissions on." +msgid_plural "Application passwords grant access to all %2$s sites in this installation that you have permissions on." +msgstr[0] "應用程式密碼會將存取權授予多站網路中你有相關權限的全部 %2$s 個網站。" + +#: wp-admin/user-edit.php:793 +msgid "Application passwords allow authentication via non-interactive systems, such as XML-RPC or the REST API, without providing your actual password. Application passwords can be easily revoked. They cannot be used for traditional logins to your website." +msgstr "應用程式密碼讓非互動式系統如 XML-RPC 或 REST API,可在不須提供個人密碼的狀況下進行驗證,並可隨時撤銷。這個網站的傳統登入方式無法使用應用程式密碼。" + +#: wp-admin/user-edit.php:792 +msgid "Application Passwords" +msgstr "應用程式密碼" + +#: wp-admin/user-edit.php:716 +msgid "Type the new password again." +msgstr "請再次輸入新密碼。" + +#: wp-admin/user-edit.php:692 +msgid "Set New Password" +msgstr "設定新密碼" + +#: wp-admin/user-new.php:617 +msgid "Type the password again." +msgstr "請再次輸入密碼。" + +#. translators: 1: Installed WordPress version number, 2: URL to WordPress +#. release notes, 3: New WordPress version number, including locale if +#. necessary. +#: wp-admin/update-core.php:142 +msgid "You can update from WordPress %1$s to WordPress %3$s manually:" +msgstr "這個網站可以從 WordPress %1$s 手動更新至 WordPress %3$s。" + +#: wp-admin/includes/class-wp-application-passwords-list-table.php:156 +msgid "Revoke all application passwords" +msgstr "撤銷全部應用程式密碼" + +#. translators: %s: the application password's given name. +#: wp-admin/includes/class-wp-application-passwords-list-table.php:117 +#: wp-admin/includes/class-wp-application-passwords-list-table.php:237 +msgid "Revoke \"%s\"" +msgstr "撤銷 [%s]" + +#: wp-admin/includes/class-wp-application-passwords-list-table.php:32 +#: wp-admin/includes/class-wp-application-passwords-list-table.php:118 +#: wp-admin/includes/class-wp-application-passwords-list-table.php:238 +msgid "Revoke" +msgstr "撤銷" + +#: wp-admin/includes/class-wp-application-passwords-list-table.php:31 +msgid "Last IP" +msgstr "最後使用 IP 位址" + +#: wp-admin/includes/class-wp-application-passwords-list-table.php:30 +msgid "Last Used" +msgstr "最後使用時間" + +#. translators: 1: The Site Health action that is no longer used by core. 2: +#. The new function that replaces it. +#: wp-admin/includes/ajax-actions.php:5370 +#: wp-admin/includes/ajax-actions.php:5403 +#: wp-admin/includes/ajax-actions.php:5436 +#: wp-admin/includes/ajax-actions.php:5486 +msgid "The Site Health check for %1$s has been replaced with %2$s." +msgstr "%1$s 的 [網站狀態] 檢查已由 %2$s 取代。" + +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:139 +msgid "Erase personal data" +msgstr "清除個人資料" + +#. translators: 1: Theme name, 2: Current version number, 3: New version +#. number. +#: wp-admin/includes/class-wp-automatic-updater.php:1395 +#: wp-admin/includes/class-wp-automatic-updater.php:1466 +msgid "- %1$s (from version %2$s to %3$s)" +msgstr "- %1$s (從 %2$s 更新至 %3$s)" + +#: wp-admin/includes/template.php:2452 +msgid "Current Header Video" +msgstr "目前的頁首視訊" + +#: wp-admin/includes/class-wp-site-health.php:2972 +msgid "Authorization header" +msgstr "授權標頭" + +#: wp-admin/includes/class-wp-site-health.php:2430 +msgid "Learn how to configure the Authorization header." +msgstr "進一步了解如何設定授權標頭" + +#: wp-admin/includes/class-wp-site-health.php:2424 +msgid "Flush permalinks" +msgstr "重新整理永久連結" + +#: wp-admin/includes/class-wp-site-health.php:2405 +msgid "The authorization header is invalid" +msgstr "無效的授權標頭" + +#: wp-admin/includes/class-wp-site-health.php:2403 +msgid "The authorization header is missing" +msgstr "缺少授權標頭" + +#: wp-admin/includes/class-wp-site-health.php:2388 +msgid "The Authorization header is working as expected" +msgstr "授權標頭如預期般正常執行" + +#: wp-admin/includes/class-wp-screen.php:1120 +msgid "Some screen elements can be shown or hidden by using the checkboxes." +msgstr "使用核取方塊可以顯示或隱藏某些畫面元素。" + +#: wp-admin/includes/class-wp-screen.php:1118 +msgid "Screen elements" +msgstr "畫面元素" + +#: wp-admin/includes/user.php:761 +msgid "The URL must be served over a secure connection." +msgstr "網址必須以安全連線提供。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:570 +msgid "If you request a password reset, your IP address will be included in the reset email." +msgstr "如果你提出密碼重設要求,你目前進行連線的 IP 位址會顯示於密碼重設電子郵件中。" + +#. translators: %s: Plugin search term. +#: wp-admin/includes/class-wp-plugins-list-table.php:418 +msgid "No plugins found for: %s." +msgstr "找不到符合「%s」的外掛。" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:92 +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:98 +msgid "Complete request" +msgstr "完成要求" + +#. translators: %s: Request email. +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:88 +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:94 +msgid "Mark export request for “%s” as completed." +msgstr "標示 %s 的匯出要求為完成。" + +#. translators: %d: Number of requests. +#: wp-admin/includes/class-wp-privacy-requests-table.php:346 +msgid "%d request deleted successfully." +msgid_plural "%d requests deleted successfully." +msgstr[0] "%d 個要求已成功刪除。" + +#. translators: %d: Number of requests. +#: wp-admin/includes/class-wp-privacy-requests-table.php:329 +msgid "%d request failed to delete." +msgid_plural "%d requests failed to delete." +msgstr[0] "%d 個要求無法刪除。" + +#. translators: %d: Number of requests. +#: wp-admin/includes/class-wp-privacy-requests-table.php:303 +msgid "%d request marked as complete." +msgid_plural "%d requests marked as complete." +msgstr[0] "%d 個要求已標示為完成。" + +#. translators: %d: Number of requests. +#: wp-admin/includes/class-wp-privacy-requests-table.php:276 +msgid "%d confirmation request re-sent successfully." +msgid_plural "%d confirmation requests re-sent successfully." +msgstr[0] "%d 個確認要求已成功重新傳送。" + +#. translators: %d: Number of requests. +#: wp-admin/includes/class-wp-privacy-requests-table.php:259 +msgid "%d confirmation request failed to resend." +msgid_plural "%d confirmation requests failed to resend." +msgstr[0] "%d 個確認要求無法重新傳送。" + +#: wp-admin/includes/class-wp-privacy-requests-table.php:217 +msgid "Mark requests as completed" +msgstr "標示要求為完成" + +#: wp-admin/includes/class-wp-privacy-requests-table.php:46 +msgid "Next steps" +msgstr "下一步" + +#: wp-admin/includes/privacy-tools.php:566 +msgid "Unable to open personal data export file (archive) for writing." +msgstr "無法開啟使用者個人資料匯出檔 (壓縮檔) 進行資料寫入。" + +#: wp-admin/includes/privacy-tools.php:432 +msgid "Unable to open personal data export file (JSON report) for writing." +msgstr "無法開啟使用者個人資料匯出檔 (JSON 報告) 進行資料寫入。" + +#: wp-admin/includes/privacy-tools.php:341 +msgid "Unable to protect personal data export folder from browsing." +msgstr "無法保護使用者個人資料匯出資料夾不受瀏覽。" + +#: wp-admin/includes/privacy-tools.php:325 +msgid "Invalid email address when generating personal data export file." +msgstr "用於產生使用者個人資料匯出檔的電子郵件地址無效。" + +#: wp-admin/includes/privacy-tools.php:319 +msgid "Invalid request ID when generating personal data export file." +msgstr "用於產生使用者個人資料匯出檔的要求 ID 無效。" + +#: wp-admin/includes/privacy-tools.php:312 +msgid "Unable to generate personal data export file. ZipArchive not available." +msgstr "無法產生使用者個人資料匯出檔。無法使用 ZipArchive。" + +#. translators: %s: Search query. +#: wp-admin/edit-comments.php:282 wp-admin/edit-tags.php:343 +#: wp-admin/edit.php:429 wp-admin/link-manager.php:111 wp-admin/plugins.php:778 +#: wp-admin/upload.php:431 wp-admin/users.php:802 wp-admin/js/updates.js:3139 +#: wp-admin/network/sites.php:413 wp-admin/network/themes.php:374 +#: wp-admin/network/users.php:328 +msgid "Search results for: %s" +msgstr "「%s」的搜尋結果" + +#: wp-admin/options-reading.php:46 +msgid "Note that even when set to discourage search engines, your site is still visible on the web and not all search engines adhere to this directive." +msgstr "請注意,即使這個網站設定為阻擋搜尋引擎進行檢索,這個網站仍會在網路上公開顯示網站內容,且並非全部搜尋引擎均會遵守這項設定的要求。" + +#: wp-admin/options-reading.php:45 +msgid "You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the checkbox next to “Discourage search engines from indexing this site” and click the Save Changes button at the bottom of the screen." +msgstr "網站管理員可以決定網站是否要開放漫遊器、內容更新通知服務及自動尋檢程式檢索網站內容。如果需要這些服務忽略這個網站,請啟用 [阻擋搜尋引擎索引這個網站] 這項設定,然後點擊畫面最下方的 [儲存設定] 按鈕。" + +#. translators: 1: post_max_size, 2: upload_max_filesize +#: wp-admin/includes/class-wp-site-health.php:2345 +msgid "The \"%1$s\" value is smaller than \"%2$s\"" +msgstr "%1$s 的值小於 %2$s" + +#: wp-admin/includes/class-wp-debug-data.php:229 +msgid "Environment type" +msgstr "環境類型" + +#: wp-admin/plugins.php:597 +msgid "Auto-updates are only available for plugins recognized by WordPress.org, or that include a compatible update system." +msgstr "自動更新功能僅適用於 WordPress.org 外掛目錄或相容的更新系統所提供的外掛。" + +#: wp-admin/includes/theme.php:898 wp-admin/themes.php:1162 +msgid "Update Incompatible" +msgstr "更新套件與現有執行環境不相容" + +#: wp-admin/update-core.php:733 +msgid "This update does not work with your version of WordPress." +msgstr "這項更新無法執行於目前版本的 WordPress。" + +#: wp-admin/update-core.php:699 +msgid "This update does not work with your versions of WordPress and PHP." +msgstr "這項更新無法執行於目前版本的 WordPress 及 PHP 執行環境。" + +#: wp-admin/options-discussion.php:201 +msgid "Disallowed Comment Keys" +msgstr "禁止使用的留言關鍵字" + +#: wp-admin/includes/class-wp-site-health.php:2913 +msgid "Plugin and theme auto-updates" +msgstr "外掛及佈景主題自動更新" + +#: wp-admin/includes/class-wp-site-health.php:3261 +msgid "There appear to be no issues with plugin and theme auto-updates." +msgstr "外掛及佈景主題自動更新一切如常。" + +#: wp-admin/includes/class-wp-site-health.php:3255 +msgid "Auto-updates for themes appear to be disabled. This will prevent your site from receiving new versions automatically when available." +msgstr "佈景主題自動更新已停用。這個狀況會阻擋這個網站自動接收可用的更新套件。" + +#: wp-admin/includes/class-wp-site-health.php:3250 +msgid "Auto-updates for plugins appear to be disabled. This will prevent your site from receiving new versions automatically when available." +msgstr "外掛自動更新已停用。這個狀況會阻擋這個網站自動接收可用的更新套件。" + +#: wp-admin/includes/class-wp-site-health.php:3245 +msgid "Auto-updates for plugins and themes appear to be disabled. This will prevent your site from receiving new versions automatically when available." +msgstr "外掛及佈景主題自動更新已停用。這個狀況會阻擋這個網站自動接收可用的更新套件。" + +#: wp-admin/includes/class-wp-site-health.php:3236 +msgid "Auto-updates for plugins and/or themes appear to be disabled, but settings are still set to be displayed. This could cause auto-updates to not work as expected." +msgstr "外掛/佈景主題自動更新已停用,但仍設定為顯示更新。這個狀況會造成自動更新執行不如預期。" + +#: wp-admin/includes/class-wp-site-health.php:1826 +msgid "Your site may have problems auto-updating plugins and themes" +msgstr "這個網站的外掛及佈景主題自動更新發生問題" + +#: wp-admin/includes/class-wp-site-health.php:1815 +msgid "Plugin and theme auto-updates ensure that the latest versions are always installed." +msgstr "外掛及佈景主題更新能確保永遠安裝最新版程式碼。" + +#: wp-admin/includes/class-wp-site-health.php:1807 +msgid "Plugin and theme auto-updates appear to be configured correctly" +msgstr "外掛及佈景主題自動更新設定正確" + +#. translators: Hidden accessibility text. %s: Theme name. +#. translators: %s: Theme name. +#: wp-admin/includes/class-theme-installer-skin.php:159 +#: wp-admin/includes/class-theme-upgrader-skin.php:115 +#: wp-admin/includes/class-wp-themes-list-table.php:217 +msgctxt "theme" +msgid "Activate “%s”" +msgstr "啟用 %s" + +#: wp-admin/includes/ajax-actions.php:5576 +msgid "Sorry, you are not allowed to modify plugins." +msgstr "很抱歉,目前的登入身分沒有修改外掛的權限。" + +#. translators: 1: post_max_size, 2: upload_max_filesize +#: wp-admin/includes/class-wp-site-health.php:2366 +msgid "The setting for %1$s is smaller than %2$s, this could cause some problems when trying to upload files." +msgstr "%1$s 的設定值小於 %2$s,上傳檔案時可能會發生問題。" + +#. translators: 1: file_uploads, 2: 0 +#: wp-admin/includes/class-wp-site-health.php:2331 +msgid "%1$s is set to %2$s. You won't be able to upload files on your site." +msgstr "%1$s 的值設定為 %2$s。這項設定會導致無法在這個網站上傳檔案。" + +#. translators: %s: ini_get() +#: wp-admin/includes/class-wp-site-health.php:2319 +msgid "The %s function has been disabled, some media settings are unavailable because of this." +msgstr "%s 函式已停用,這會導致某些媒體設定無法使用。" + +#. translators: 1: file_uploads, 2: php.ini +#: wp-admin/includes/class-wp-site-health.php:2306 +msgid "The %1$s directive in %2$s determines if uploading files is allowed on your site." +msgstr "在 %2$s 中的指示詞 %1$s 的值,決定了這個網站是否能上傳檔案。" + +#: wp-admin/includes/class-wp-site-health.php:2296 +msgid "Files can be uploaded" +msgstr "檔案可上傳" + +#: wp-admin/includes/class-wp-debug-data.php:712 +msgid "Max effective file size" +msgstr "有效檔案大小上限" + +#: wp-admin/includes/class-wp-debug-data.php:708 +msgid "Max size of an uploaded file" +msgstr "上傳單一檔案大小上限" + +#: wp-admin/includes/class-wp-debug-data.php:704 +msgid "Max size of post data allowed" +msgstr "單次上傳全部檔案大小總計上限" + +#: wp-admin/includes/class-wp-debug-data.php:699 +#: wp-admin/includes/class-wp-site-health.php:2909 +msgid "File uploads" +msgstr "檔案上傳" + +#: wp-admin/includes/class-wp-debug-data.php:681 +msgid "File upload settings" +msgstr "檔案上傳設定" + +#. translators: %s: Theme name. +#: wp-admin/theme-install.php:452 +msgctxt "theme" +msgid "Cannot Install %s" +msgstr "無法安裝 %s" + +#. translators: %s: Plugin name. +#: wp-admin/includes/deprecated.php:1392 +msgctxt "plugin" +msgid "Install %s" +msgstr "安裝 %s" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-theme-install-list-table.php:338 +#: wp-admin/theme-install.php:445 +msgctxt "theme" +msgid "Install %s" +msgstr "安裝 %s" + +#. translators: %s: Theme name. +#: wp-admin/includes/theme.php:268 wp-admin/includes/update.php:758 +msgctxt "theme" +msgid "Update %s now" +msgstr "立即更新 %s" + +#. translators: 1: Theme name, 2: Version number. +#: wp-admin/includes/class-wp-automatic-updater.php:1403 +#: wp-admin/includes/class-wp-automatic-updater.php:1474 +msgid "- %1$s version %2$s" +msgstr "- %1$s %2$s 版" + +#: wp-admin/theme-install.php:413 wp-admin/theme-install.php:492 +msgctxt "theme" +msgid "Activated" +msgstr "已啟用" + +#: wp-admin/themes.php:86 +msgid "Sorry, you are not allowed to enable themes automatic updates." +msgstr "很抱歉,目前的登入身分沒有啟用佈景主題自動更新的權限。" + +#: wp-admin/includes/class-plugin-installer-skin.php:217 +msgid "This plugin is already installed." +msgstr "這個外掛已安裝。" + +#. translators: %s: Plugin name and version. +#. translators: %s: Plugin name. +#: wp-admin/includes/plugin-install.php:969 wp-admin/includes/update.php:566 +#: wp-admin/js/updates.js:2544 +msgctxt "plugin" +msgid "Update %s now" +msgstr "立即更新 %s" + +#. translators: %s: Importer name. +#. translators: %s: Plugin name and version. +#. translators: %s: Plugin name. +#: wp-admin/import.php:165 wp-admin/includes/plugin-install.php:947 +#: wp-admin/js/updates.js:1308 wp-admin/js/updates.js:2553 +#: wp-admin/js/updates.js:2689 +msgctxt "plugin" +msgid "Install %s now" +msgstr "立即安裝 %s" + +#. translators: Hidden accessibility text. +#: wp-admin/user-edit.php:1013 wp-admin/js/application-passwords.js:203 +#: wp-admin/js/common.js:1109 +msgid "Dismiss this notice." +msgstr "關閉這項通知" + +#. translators: %s: Theme name. +#: wp-admin/theme-install.php:430 wp-admin/themes.php:641 +#: wp-admin/themes.php:1031 wp-admin/themes.php:1293 +msgctxt "theme" +msgid "Cannot Activate %s" +msgstr "無法啟用 %s" + +#: wp-admin/themes.php:335 wp-admin/network/themes.php:434 +msgid "Theme will no longer be auto-updated." +msgstr "佈景主題不會再自動進行更新。" + +#: wp-admin/themes.php:326 wp-admin/network/themes.php:423 +msgid "Theme will be auto-updated." +msgstr "佈景主題會自動進行更新。" + +#: wp-admin/themes.php:191 wp-admin/network/themes.php:328 +msgid "Auto-updates can be enabled or disabled for each individual theme. Themes with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system." +msgstr "每個佈景主題均可個別啟用或停用自動更新功能。自動更新功能能否正確執行,取決於 WP-Cron 工作排程系統,而已啟用自動更新功能的佈景主題會顯示下次自動更新的預估日期。" + +#: wp-admin/themes.php:106 +msgid "Sorry, you are not allowed to disable themes automatic updates." +msgstr "很抱歉,目前的登入身分沒有停用佈景主題自動更新的權限。" + +#: wp-admin/plugins.php:469 +msgid "Sorry, you are not allowed to manage plugins automatic updates." +msgstr "很抱歉,目前的登入身分沒有管理外掛自動更新的權限。" + +#: wp-admin/edit.php:185 wp-admin/post.php:326 +msgid "Error in deleting the item." +msgstr "刪除項目時發生錯誤。" + +#: wp-admin/edit.php:160 wp-admin/post.php:291 wp-admin/upload.php:322 +msgid "Error in restoring the item from Trash." +msgstr "從回收桶還原項目時發生錯誤。" + +#: wp-admin/edit.php:132 wp-admin/post.php:261 wp-admin/upload.php:301 +msgid "Error in moving the item to Trash." +msgstr "項目移至回收桶時發生錯誤。" + +#: wp-admin/plugins.php:754 +msgid "Selected plugins will no longer be auto-updated." +msgstr "選取的外掛不會再自動進行更新。" + +#: wp-admin/plugins.php:752 +msgid "Selected plugins will be auto-updated." +msgstr "選取的外掛會自動進行更新。" + +#: wp-admin/plugins.php:750 +msgid "Plugin will no longer be auto-updated." +msgstr "外掛不會再自動進行更新。" + +#: wp-admin/plugins.php:748 +msgid "Plugin will be auto-updated." +msgstr "外掛會自動進行更新。" + +#: wp-admin/plugins.php:596 +msgid "Auto-updates can be enabled or disabled for each individual plugin. Plugins with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system." +msgstr "每個外掛均可個別啟用或停用自動更新功能。自動更新功能能否正確執行,取決於 WP-Cron 工作排程系統,而已啟用自動更新功能的外掛會顯示下次自動更新的預估日期。" + +#: wp-admin/plugins.php:473 +msgid "Please connect to your network admin to manage plugins automatic updates." +msgstr "請聯絡這個多站網路的多站網路管理員以管理外掛的自動更新。" + +#. translators: %s: Human-readable time interval. +#: wp-admin/index.php:159 +msgid "The admin email verification page will reappear after %s." +msgstr "網站管理員電子郵件地址驗證頁面會在 %s後重新出現。" + +#: wp-admin/includes/class-wp-debug-data.php:1264 wp-admin/plugins.php:594 +#: wp-admin/themes.php:197 wp-admin/update-core.php:1025 +#: wp-admin/network/themes.php:326 +msgid "Auto-updates" +msgstr "自動更新" + +#: wp-admin/plugins.php:598 wp-admin/themes.php:192 +#: wp-admin/update-core.php:1020 wp-admin/network/themes.php:329 +msgid "Please note: Third-party themes and plugins, or custom code, may override WordPress scheduling." +msgstr "請注意,第三方佈景主題、外掛或自訂程式碼,均有可能覆寫 WordPress 的排程工作。" + +#: wp-admin/update-core.php:1019 +msgid "Auto-updates can be enabled or disabled for WordPress major versions and for each individual theme or plugin. Themes or plugins with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system." +msgstr "WordPress 主要版本、每個佈景主題或外掛均可個別啟用或停用自動更新功能。自動更新功能能否正確執行,取決於 WP-Cron 工作排程系統,而已啟用自動更新功能的佈景主題或外掛會顯示下次自動更新的預估日期。" + +#. translators: 1: Documentation on WordPress backups, 2: Documentation on +#. updating WordPress. +#: wp-admin/update-core.php:260 +msgid "Important: Before updating, please back up your database and files. For help with updates, visit the Updating WordPress documentation page." +msgstr "重要提示: 在進行更新前,請先備份這個網站的資料庫及檔案。如需進一步了解更新核心程式相關說明,請參考〈更新 WordPress〉線上說明。" + +#: wp-admin/customize.php:205 wp-admin/theme-install.php:433 +#: wp-admin/theme-install.php:495 wp-admin/themes.php:645 +#: wp-admin/themes.php:1035 wp-admin/themes.php:1297 +msgctxt "theme" +msgid "Cannot Activate" +msgstr "無法啟用" + +#: wp-admin/comment.php:47 +msgid "You cannot edit this comment because the associated post is in the Trash. Please restore the post first, then try again." +msgstr "由於關聯的文章已移至 [回收桶],因此無法編輯這則留言。請先還原這篇文章,然後再試一次。" + +#: wp-admin/async-upload.php:70 +msgctxt "media item" +msgid "Success" +msgstr "已完成" + +#. translators: 1: Current WordPress version, 2: Plugin name, 3: Required +#. WordPress version. +#: wp-admin/includes/plugin.php:1192 +msgctxt "plugin" +msgid "Error: Current WordPress version (%1$s) does not meet minimum requirements for %2$s. The plugin requires WordPress %3$s." +msgstr "錯誤: 目前使用的 WordPress %1$s 不符合 %2$s 的最低版本需求。這個外掛需要 WordPress %3$s。" + +#. translators: 1: Current PHP version, 2: Plugin name, 3: Required PHP +#. version. +#: wp-admin/includes/plugin.php:1181 +msgctxt "plugin" +msgid "Error: Current PHP version (%1$s) does not meet minimum requirements for %2$s. The plugin requires PHP %3$s." +msgstr "錯誤: 目前使用的 PHP %1$s 不符合 %2$s 的最低版本需求。這個外掛需要 PHP %3$s。" + +#. translators: 1: Current WordPress version, 2: Current PHP version, 3: Plugin +#. name, 4: Required WordPress version, 5: Required PHP version. +#: wp-admin/includes/plugin.php:1168 +msgctxt "plugin" +msgid "Error: Current versions of WordPress (%1$s) and PHP (%2$s) do not meet minimum requirements for %3$s. The plugin requires WordPress %4$s and PHP %5$s." +msgstr "錯誤: 目前使用的 WordPress %1$s 及 PHP %2$s 不符合 %3$s 的最低版本需求。這個外掛需要 WordPress %4$s 及 PHP %5$s。" + +#: wp-admin/includes/ajax-actions.php:5598 +msgid "Invalid data. The item does not exist." +msgstr "無效的資料。項目不存在。" + +#: wp-admin/includes/ajax-actions.php:5569 +#: wp-admin/includes/ajax-actions.php:5594 +msgid "Invalid data. Unknown type." +msgstr "無效的資料。未知的類型。" + +#: wp-admin/includes/ajax-actions.php:5564 +msgid "Invalid data. Unknown state." +msgstr "無效的資料。未知的狀態。" + +#: wp-admin/includes/ajax-actions.php:5558 +msgid "Invalid data. No selected item." +msgstr "無效的資料。沒有選取的項目。" + +#: wp-admin/includes/ajax-actions.php:1330 +msgid "You cannot reply to a comment on a draft post." +msgstr "無法回覆發佈狀態為 [草稿] 的文章中的留言。" + +#. translators: %s: Themes screen URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1499 +msgid "To manage themes on your site, visit the Themes page: %s" +msgstr "如需管理這個網站的佈景主題,請前往 [佈景主題] 頁面:%s" + +#. translators: %s: Plugins screen URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1490 +msgid "To manage plugins on your site, visit the Plugins page: %s" +msgstr "如需管理這個網站的外掛,請前往 [外掛] 頁面:%s" + +#: wp-admin/includes/class-wp-automatic-updater.php:1460 +msgid "These themes are now up to date:" +msgstr "下列佈景主題均為最新版本:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1422 +msgid "These plugins are now up to date:" +msgstr "下列外掛均為最新版本:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1389 +msgid "These themes failed to update:" +msgstr "下列佈景主題更新失敗:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1345 +msgid "Please check your site now. It’s possible that everything is working. If there are updates available, you should update." +msgstr "請立即檢查這個網站。網站目前仍正常執行,但如有可用的更新,則必須完成更新。" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1335 +msgid "Howdy! Themes failed to update on your site at %s." +msgstr "你好,網址為 %s 的網站佈景主題更新失敗。" + +#. translators: %s: Site title. +#: wp-admin/includes/class-wp-automatic-updater.php:1332 +msgid "[%s] Some themes have failed to update" +msgstr "《%s》通知:某些佈景主題無法更新" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1327 +msgid "Howdy! Plugins failed to update on your site at %s." +msgstr "你好,網址為 %s 的網站外掛更新失敗。" + +#. translators: %s: Site title. +#: wp-admin/includes/class-wp-automatic-updater.php:1324 +msgid "[%s] Some plugins have failed to update" +msgstr "《%s》通知:某些外掛無法更新" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1319 +msgid "Howdy! Plugins and themes failed to update on your site at %s." +msgstr "你好,網址為 %s 的網站外掛及佈景主題更新失敗。" + +#. translators: %s: Site title. +#: wp-admin/includes/class-wp-automatic-updater.php:1316 +msgid "[%s] Some plugins and themes have failed to update" +msgstr "《%s》通知:某些外掛及佈景主題無法更新" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1306 +msgid "Howdy! Some themes have automatically updated to their latest versions on your site at %s. No further action is needed on your part." +msgstr "你好,網址為 %s 的網站的某些佈景主題已更新至最新版本。你不需要進行任何操作。" + +#. translators: %s: Site title. +#: wp-admin/includes/class-wp-automatic-updater.php:1303 +msgid "[%s] Some themes were automatically updated" +msgstr "《%s》通知:某些佈景主題已自動更新" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1298 +msgid "Howdy! Some plugins have automatically updated to their latest versions on your site at %s. No further action is needed on your part." +msgstr "你好,網址為 %s 的網站的某些外掛已更新至最新版本。你不需要進行任何操作。" + +#. translators: %s: Site title. +#: wp-admin/includes/class-wp-automatic-updater.php:1295 +msgid "[%s] Some plugins were automatically updated" +msgstr "《%s》通知:某些外掛已自動更新" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1290 +msgid "Howdy! Some plugins and themes have automatically updated to their latest versions on your site at %s. No further action is needed on your part." +msgstr "你好,網址為 %s 的網站的某些外掛及佈景主題已更新至最新版本。你不需要進行任何操作。" + +#. translators: %s: Site title. +#: wp-admin/includes/class-wp-automatic-updater.php:1287 +msgid "[%s] Some plugins and themes have automatically updated" +msgstr "《%s》通知:某些外掛及佈景主題已自動更新" + +#. translators: %s: Meta box title. +#: wp-admin/includes/template.php:1422 +msgid "Move %s box down" +msgstr "將 [%s] 中繼資料區塊下移一位" + +#. translators: %s: Meta box title. +#: wp-admin/includes/template.php:1409 +msgid "Move %s box up" +msgstr "將 [%s] 中繼資料區塊上移一位" + +#: wp-admin/includes/class-wp-comments-list-table.php:399 +msgctxt "comment" +msgid "Not spam" +msgstr "標示為非垃圾留言" + +#: wp-admin/includes/class-wp-site-health.php:2880 +msgid "PHP Sessions" +msgstr "PHP 工作階段" + +#. translators: 1: session_start(), 2: session_write_close() +#: wp-admin/includes/class-wp-site-health.php:1212 +msgid "A PHP session was created by a %1$s function call. This interferes with REST API and loopback requests. The session should be closed by %2$s before making any HTTP requests." +msgstr "%1$s 函式的呼叫建立了一個的 PHP 工作階段,這個 PHP 工作階段可能會影響 REST API 及回送要求。在進行任何 HTTP 要求前,應由 %2$s 關閉這個工作階段。" + +#: wp-admin/includes/class-wp-site-health.php:1206 +msgid "An active PHP session was detected" +msgstr "已偵測到執行中的 PHP 工作階段" + +#. translators: 1: session_start(), 2: session_write_close() +#: wp-admin/includes/class-wp-site-health.php:1195 +msgid "PHP sessions created by a %1$s function call may interfere with REST API and loopback requests. An active session should be closed by %2$s before making any HTTP requests." +msgstr "由 %1$s 函式呼叫所建立的 PHP 工作階段,可能會影響 REST API 及回送要求。在進行任何 HTTP 要求前,應由 %2$s 關閉使用中的工作階段。" + +#: wp-admin/includes/class-wp-site-health.php:1185 +msgid "No PHP sessions detected" +msgstr "沒有偵測到 PHP 工作階段" + +#: wp-admin/includes/class-wp-list-table.php:170 +#: wp-admin/includes/class-wp-screen.php:1340 +msgid "Extended view" +msgstr "延伸檢視" + +#: wp-admin/includes/class-wp-list-table.php:169 +#: wp-admin/includes/class-wp-screen.php:1336 +msgid "Compact view" +msgstr "精簡檢視" + +#: wp-admin/includes/user.php:183 +msgid "Error: Passwords do not match. Please enter the same password in both password fields." +msgstr "錯誤: 兩次輸入的密碼不相符。請在兩個密碼欄中輸入相同密碼。" + +#: wp-admin/includes/meta-boxes.php:383 wp-admin/includes/meta-boxes.php:384 +#: wp-admin/js/post.js:796 +msgctxt "post action/button label" +msgid "Schedule" +msgstr "排程" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:304 +#: wp-admin/js/updates.js:3158 +msgid "No plugins found. Try a different search." +msgstr "找不到符合條件的外掛,請改用其他條件進行搜尋。" + +#. translators: %s: Time until the next update. +#: wp-admin/includes/update.php:1120 +msgid "Automatic update scheduled in %s." +msgstr "自動更新排程會在 %s後執行。" + +#. translators: %s: Duration that WP-Cron has been overdue. +#: wp-admin/includes/update.php:1114 +msgid "Automatic update overdue by %s. There may be a problem with WP-Cron." +msgstr "WP-Cron 可能發生問題,導致自動更新已延遲執行,下次執行時間為 %s後。" + +#: wp-admin/includes/update.php:1104 +msgid "Automatic update not scheduled. There may be a problem with WP-Cron." +msgstr "WP-Cron 可能發生問題,導致自動更新無法進行排程。" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/class-plugin-installer-skin.php:307 +msgid "You are updating a plugin. Be sure to back up your database and files first." +msgstr "即將更新外掛。請確認已先備份這個網站的資料庫及檔案。" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/class-plugin-installer-skin.php:301 +msgid "You are uploading an older version of a current plugin. You can continue to install the older version, but be sure to back up your database and files first." +msgstr "目前上傳的是舊版外掛檔案。網站管理員可以繼續安裝較舊版本,但請確認已先備份這個網站的資料庫及檔案。" + +#. translators: 1: Current WordPress version, 2: Version required by the +#. uploaded plugin. +#: wp-admin/includes/class-plugin-installer-skin.php:286 +#: wp-admin/includes/class-plugin-upgrader.php:510 +msgid "Your WordPress version is %1$s, however the uploaded plugin requires %2$s." +msgstr "這個網站執行的是 WordPress %1$s,但上傳的外掛的 WordPress 版本需求為 %2$s。" + +#. translators: 1: Current PHP version, 2: Version required by the uploaded +#. plugin. +#: wp-admin/includes/class-plugin-installer-skin.php:274 +#: wp-admin/includes/class-plugin-upgrader.php:499 +msgid "The PHP version on your server is %1$s, however the uploaded plugin requires %2$s." +msgstr "這個網站的伺服器執行的是 PHP %1$s,但上傳的外掛的 PHP 版本需求為 %2$s。" + +#: wp-admin/includes/class-plugin-installer-skin.php:265 +msgid "The plugin cannot be updated due to the following:" +msgstr "外掛無法升級。原因:" + +#: wp-admin/includes/class-plugin-installer-skin.php:222 +msgid "Plugin name" +msgstr "外掛名稱" + +#: wp-admin/includes/class-theme-upgrader.php:107 +msgid "Theme downgraded successfully." +msgstr "佈景主題已成功降級。" + +#: wp-admin/includes/class-theme-upgrader.php:106 +msgid "Theme downgrade failed." +msgstr "佈景主題降級失敗。" + +#: wp-admin/includes/class-theme-upgrader.php:105 +msgid "Downgrading the theme…" +msgstr "正在降級佈景主題..." + +#: wp-admin/includes/class-theme-upgrader.php:99 +msgid "Updating the theme…" +msgstr "正在升級佈景主題..." + +#. translators: %s: Theme error. +#: wp-admin/includes/class-theme-upgrader.php:95 +msgid "The active theme has the following error: \"%s\"." +msgstr "目前使用的佈景主題發生錯誤: %s。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1341 +#: wp-admin/themes.php:801 wp-admin/js/updates.js:3474 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:838 +msgid "Enable auto-updates" +msgstr "啟用自動更新" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1337 +#: wp-admin/themes.php:797 wp-admin/js/updates.js:3463 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:834 +msgid "Disable auto-updates" +msgstr "停用自動更新" + +#: wp-admin/includes/class-wp-plugins-list-table.php:649 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:504 +msgid "Disable Auto-updates" +msgstr "停用自動更新" + +#: wp-admin/includes/class-wp-plugins-list-table.php:646 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:500 +msgid "Enable Auto-updates" +msgstr "啟用自動更新" + +#. translators: %s: Number of plugins. +#. translators: %s: Number of themes. +#: wp-admin/includes/class-wp-plugins-list-table.php:579 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:446 +msgid "Auto-updates Disabled (%s)" +msgid_plural "Auto-updates Disabled (%s)" +msgstr[0] "自動更新已停用 (%s)" + +#. translators: %s: Number of plugins. +#. translators: %s: Number of themes. +#: wp-admin/includes/class-wp-plugins-list-table.php:571 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:438 +msgid "Auto-updates Enabled (%s)" +msgid_plural "Auto-updates Enabled (%s)" +msgstr[0] "自動更新已啟用 (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:476 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:345 +msgid "Automatic Updates" +msgstr "自動更新" + +#: wp-admin/includes/class-wp-plugins-list-table.php:427 +#: wp-admin/plugin-editor.php:34 wp-admin/js/updates.js:1457 +msgid "No plugins are currently available." +msgstr "目前沒有任何可供使用的外掛。" + +#: wp-admin/includes/image-edit.php:173 +msgid "Restore original image" +msgstr "還原原始圖片" + +#: wp-admin/includes/class-plugin-installer-skin.php:348 +#: wp-admin/includes/class-theme-installer-skin.php:393 +msgid "The uploaded file has expired. Please go back and upload it again." +msgstr "上傳的檔案已到期。請返回並重新上傳檔案。" + +#: wp-admin/includes/class-plugin-installer-skin.php:330 +#: wp-admin/includes/class-theme-installer-skin.php:375 +msgid "Cancel and go back" +msgstr "取消並返回" + +#: wp-admin/includes/class-theme-installer-skin.php:364 +msgctxt "theme" +msgid "Replace installed with uploaded" +msgstr "使用已上傳版本取代已安裝版本" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/class-theme-installer-skin.php:352 +msgid "You are updating a theme. Be sure to back up your database and files first." +msgstr "即將更新佈景主題。請確認已先備份這個網站的資料庫及檔案。" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/class-theme-installer-skin.php:346 +msgid "You are uploading an older version of the installed theme. You can continue to install the older version, but be sure to back up your database and files first." +msgstr "目前上傳的是已安裝的佈景主題舊版檔案。網站管理員可以繼續安裝較舊版本,但請確認已先備份這個網站的資料庫及檔案。" + +#. translators: 1: Current WordPress version, 2: Version required by the +#. uploaded theme. +#: wp-admin/includes/class-theme-installer-skin.php:331 +#: wp-admin/includes/class-theme-upgrader.php:658 +msgid "Your WordPress version is %1$s, however the uploaded theme requires %2$s." +msgstr "這個網站執行的是 WordPress %1$s,但上傳的佈景主題的 WordPress 版本需求為 %2$s。" + +#. translators: 1: Current PHP version, 2: Version required by the uploaded +#. theme. +#: wp-admin/includes/class-theme-installer-skin.php:319 +#: wp-admin/includes/class-theme-upgrader.php:648 +msgid "The PHP version on your server is %1$s, however the uploaded theme requires %2$s." +msgstr "這個網站的伺服器執行的是 PHP %1$s,但上傳的佈景主題的 PHP 版本需求為 %2$s。" + +#: wp-admin/includes/class-theme-installer-skin.php:310 +msgid "The theme cannot be updated due to the following:" +msgstr "佈景主題無法升級。原因:" + +#: wp-admin/includes/class-theme-installer-skin.php:286 +msgid "(not found)" +msgstr "(找不到上層佈景主題)" + +#: wp-admin/includes/class-plugin-installer-skin.php:226 +#: wp-admin/includes/class-theme-installer-skin.php:259 +msgid "Required PHP version" +msgstr "PHP 最低版本需求" + +#: wp-admin/includes/class-plugin-installer-skin.php:225 +#: wp-admin/includes/class-theme-installer-skin.php:258 +msgid "Required WordPress version" +msgstr "WordPress 最低版本需求" + +#: wp-admin/includes/class-theme-installer-skin.php:255 +msgid "Theme name" +msgstr "佈景主題名稱" + +#: wp-admin/includes/theme.php:1088 wp-admin/theme-install.php:454 +#: wp-admin/theme-install.php:501 +msgctxt "theme" +msgid "Cannot Install" +msgstr "無法安裝" + +#: wp-admin/includes/theme.php:332 +msgid "Block Editor Patterns" +msgstr "區塊編輯器版面配置" + +#: wp-admin/includes/class-plugin-upgrader.php:98 +msgid "Plugin downgraded successfully." +msgstr "外掛已成功降級。" + +#: wp-admin/includes/class-plugin-upgrader.php:97 +msgid "Plugin downgrade failed." +msgstr "外掛降級失敗。" + +#: wp-admin/includes/class-plugin-upgrader.php:96 +msgid "Downgrading the plugin…" +msgstr "正在降級外掛..." + +#: wp-admin/includes/class-plugin-upgrader.php:90 +msgid "Updating the plugin…" +msgstr "正在更新外掛..." + +#: wp-admin/includes/class-plugin-upgrader.php:81 +msgid "Could not remove the current plugin." +msgstr "無法移除目前版本外掛。" + +#: wp-admin/includes/class-plugin-upgrader.php:80 +msgid "Removing the current plugin…" +msgstr "正在移除目前版本外掛..." + +#: wp-admin/includes/class-wp-debug-data.php:1375 +msgid "Auto-update" +msgstr "自動更新" + +#: wp-admin/includes/class-wp-debug-data.php:1101 +#: wp-admin/includes/class-wp-debug-data.php:1482 +#: wp-admin/includes/class-wp-plugins-list-table.php:1328 +#: wp-admin/themes.php:792 wp-admin/js/updates.js:3476 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:825 +msgid "Auto-updates disabled" +msgstr "自動更新已停用" + +#: wp-admin/includes/class-wp-debug-data.php:1099 +#: wp-admin/includes/class-wp-debug-data.php:1480 +#: wp-admin/includes/class-wp-plugins-list-table.php:1326 +#: wp-admin/themes.php:794 wp-admin/js/updates.js:3465 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:823 +msgid "Auto-updates enabled" +msgstr "自動更新已啟用" + +#: wp-admin/includes/class-wp-debug-data.php:555 +msgid "Are pretty permalinks supported?" +msgstr "是否支援易於辨識的永久連結" + +#: wp-admin/includes/class-wp-debug-data.php:417 +msgid "PHP memory limit (only for admin screens)" +msgstr "PHP 可存取的記憶體上限 (僅供管理後台)" + +#: wp-admin/includes/class-wp-debug-data.php:219 +msgid "Is this site discouraging search engines?" +msgstr "這個網站是否阻擋搜尋引擎進行索引" + +#: wp-admin/includes/theme.php:359 +msgid "Wide Blocks" +msgstr "寬幅區塊" + +#: wp-admin/includes/theme.php:333 +msgid "Block Editor Styles" +msgstr "區塊編輯器樣式" + +#: wp-admin/edit-form-comment.php:123 +msgid "Spam" +msgstr "垃圾留言" + +#. translators: %s: wp-config.php +#: wp-admin/setup-config.php:424 wp-admin/setup-config.php:493 +msgid "Unable to write to %s file." +msgstr "無法寫入 %s 檔案。" + +#. translators: %s: The options page name. +#: wp-admin/options.php:253 +msgid "Error: The %s options page is not in the allowed options list." +msgstr "錯誤: 在選項允許清單中找不到 [%s] 選項頁面。" + +#: wp-admin/import.php:65 wp-admin/themes.php:348 wp-admin/users.php:352 +#: wp-admin/includes/network.php:117 wp-admin/includes/network.php:161 +msgid "Error:" +msgstr "錯誤:" + +#. translators: %s: web.config +#. translators: %s: .htaccess +#: wp-admin/options-permalink.php:183 wp-admin/options-permalink.php:196 +msgid "You should update your %s file now." +msgstr "網站管理員應該立即更新這個網站的 %s 檔案。" + +#: wp-admin/update-core.php:183 +msgid "This localized version contains both the translation and various other localization fixes." +msgstr "這個本地化版本包含了語言套件及其他本地化的修正。" + +#. translators: 1: Number of issues. 2: URL to Site Health screen. +#: wp-admin/includes/dashboard.php:2041 +msgid "Take a look at the %1$d item on the Site Health screen." +msgid_plural "Take a look at the %1$d items on the Site Health screen." +msgstr[0] "請查看在 [網站狀態] 頁面中所列的 %1$d 個項目。" + +#: wp-admin/includes/dashboard.php:2031 +msgid "Your site’s health is looking good, but there are still some things you can do to improve its performance and security." +msgstr "這個網站的網站狀態良好,但仍有一些需要網站管理員執行、可改善效能及安全性的項目。" + +#: wp-admin/includes/dashboard.php:2023 +msgid "Great job! Your site currently passes all site health checks." +msgstr "非常好!這個網站通過目前全部網站狀態檢查。" + +#: wp-admin/includes/dashboard.php:2027 +msgid "Your site has critical issues that should be addressed as soon as possible to improve its performance and security." +msgstr "這個網站有需要盡快解決的重大問題,解決後便能提升網站效能及安全性。" + +#. translators: %s: URL to Site Health screen. +#: wp-admin/includes/dashboard.php:2015 +msgid "Site health checks will automatically run periodically to gather information about your site. You can also visit the Site Health screen to gather information about your site now." +msgstr "網站狀態檢查會自動定期執行以收集這個網站的資訊。網站管理員也可以前往 [網站狀態] 頁面,便能立即收集這個網站的資訊。" + +#: wp-admin/includes/dashboard.php:2002 +msgid "No information yet…" +msgstr "尚無資訊..." + +#. translators: 1: upload_max_filesize, 2: php.ini +#: wp-admin/includes/file.php:894 +msgid "The uploaded file exceeds the %1$s directive in %2$s." +msgstr "上傳的檔案超過了 %2$s 中 %1$s 參數的設定值。" + +#: wp-admin/includes/class-wp-comments-list-table.php:235 +msgid "No comments found in Trash." +msgstr "在回收桶中找不到符合條件的留言。" + +#. translators: 1: php.ini, 2: post_max_size, 3: upload_max_filesize +#: wp-admin/includes/file.php:944 wp-admin/includes/import.php:87 +msgid "File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your %1$s file or by %2$s being defined as smaller than %3$s in %1$s." +msgstr "檔案內容為空。請上傳含有必要內容的檔案。這個錯誤的成因可能是因為上傳功能已於 %1$s 中停用,或 %1$s 中單次上傳檔案大小總計上限 (%2$s) 的設定值小於上傳單一檔案大小上限 (%3$s) 的設定值。" + +#: wp-admin/includes/class-wp-site-health.php:3440 +#: wp-admin/js/site-health.js:356 +msgid "A test is unavailable" +msgstr "測試功能無法使用" + +#. translators: 1: The WordPress error message. 2: The WordPress error code. +#: wp-admin/includes/class-wp-site-health.php:3312 +msgid "Error: %1$s (%2$s)" +msgstr "錯誤: %2$s (錯誤代碼 %1$s)" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:822 +msgid "Your site is running on an older version of PHP (%s), which should be updated" +msgstr "這個網站執行於較舊版本、需要進行更新的 PHP %s 執行環境" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:791 +msgid "Your site is running on an older version of PHP (%s)" +msgstr "這個網站執行於較舊版本的 PHP %s 執行環境" + +#. translators: %s: The server PHP version. +#: wp-admin/includes/class-wp-site-health.php:779 +msgid "Your site is running a recommended version of PHP (%s)" +msgstr "這個網站執行於建議版本的 PHP %s 執行環境" + +#: wp-admin/includes/class-wp-media-list-table.php:290 +msgid "No media files found in Trash." +msgstr "在回收桶中找不到符合條件的媒體檔案。" + +#. translators: Date string for upcoming events. 1: Starting month, 2: Starting +#. day, 3: Ending month, 4: Ending day, 5: Year. +#. translators: Date string for upcoming events. 1: Starting month, 2: Starting +#. day, 3: Ending month, 4: Ending day, 5: Ending year. +#: wp-admin/includes/class-wp-community-events.php:423 +#: wp-admin/js/dashboard.js:784 +msgid "%1$s %2$d – %3$s %4$d, %5$d" +msgstr "%5$s %1$s %2$s – %3$s %4$s" + +#. translators: Upcoming events year format. See +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/includes/class-wp-community-events.php:418 +#: wp-admin/includes/class-wp-community-events.php:428 +#: wp-admin/js/dashboard.js:797 wp-admin/js/dashboard.js:808 +msgctxt "upcoming events year format" +msgid "Y" +msgstr "Y 年" + +#. translators: Upcoming events day format. See +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/includes/class-wp-community-events.php:415 +#: wp-admin/includes/class-wp-community-events.php:416 +#: wp-admin/includes/class-wp-community-events.php:425 +#: wp-admin/includes/class-wp-community-events.php:427 +#: wp-admin/js/dashboard.js:795 wp-admin/js/dashboard.js:796 +#: wp-admin/js/dashboard.js:805 wp-admin/js/dashboard.js:807 +msgctxt "upcoming events day format" +msgid "j" +msgstr "j 日" + +#. translators: Date string for upcoming events. 1: Month, 2: Starting day, 3: +#. Ending day, 4: Year. +#: wp-admin/includes/class-wp-community-events.php:412 +#: wp-admin/js/dashboard.js:782 +msgid "%1$s %2$d–%3$d, %4$d" +msgstr "%4$s %1$s %2$s – %3$s" + +#. translators: Upcoming events month format. See +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/includes/class-wp-community-events.php:406 +#: wp-admin/includes/class-wp-community-events.php:407 +#: wp-admin/js/dashboard.js:794 wp-admin/js/dashboard.js:804 +#: wp-admin/js/dashboard.js:806 +msgctxt "upcoming events month format" +msgid "F" +msgstr "n 月" + +#: wp-admin/includes/class-wp-privacy-requests-table.php:216 +msgid "Resend confirmation requests" +msgstr "重新傳送確認要求" + +#: wp-admin/includes/class-wp-privacy-requests-table.php:218 +msgid "Delete requests" +msgstr "刪除要求" + +#: wp-admin/includes/class-wp-debug-data.php:1740 +msgid "Table prefix" +msgstr "資料表前置詞" + +#: wp-admin/includes/class-wp-site-health.php:2876 +msgid "PHP Default Timezone" +msgstr "PHP 預設時區" + +#. translators: %s: date_default_timezone_set() +#: wp-admin/includes/class-wp-site-health.php:1167 +msgid "PHP default timezone was changed after WordPress loading by a %s function call. This interferes with correct calculations of dates and times." +msgstr "在 WordPress 系統載入後,%s 函式呼叫的 PHP 預設時區遭到變更,這會影響日期與時間的正確計算。" + +#: wp-admin/includes/class-wp-site-health.php:1161 +msgid "PHP default timezone is invalid" +msgstr "PHP 預設時區無效" + +#: wp-admin/includes/class-wp-site-health.php:1152 +msgid "PHP default timezone was configured by WordPress on loading. This is necessary for correct calculations of dates and times." +msgstr "WordPress 系統載入時完成了 PHP 預設時區的設定,這是日期與時間能正確計算的必要條件。" + +#: wp-admin/includes/class-wp-site-health.php:1144 +msgid "PHP default timezone is valid" +msgstr "PHP 預設時區有效" + +#. translators: %s: add_menu_page() +#. translators: %s: add_submenu_page() +#: wp-admin/includes/plugin.php:1419 wp-admin/includes/plugin.php:1523 +msgid "The seventh parameter passed to %s should be numeric representing menu position." +msgstr "傳遞至 %s 的第 7 個參數應該為代表選單位置的數值。" + +#. translators: 1: WordPress version number, 2: The PHP extension name needed. +#: wp-admin/includes/update-core.php:1264 +msgid "The update cannot be installed because WordPress %1$s requires the %2$s PHP extension." +msgstr "由於 WordPress %1$s 需要 PHP 的 %2$s 擴充功能,因此無法進行更新。" + +#: wp-admin/privacy.php:62 +msgid "https://wordpress.org/about/stats/" +msgstr "https://tw.wordpress.org/about/stats/" + +#: wp-admin/export.php:59 +msgid "Documentation on Export" +msgstr "〈匯出〉線上說明" + +#: wp-admin/plugin-install.php:121 +msgid "Documentation on Installing Plugins" +msgstr "〈安裝外掛〉線上說明" + +#: wp-admin/edit.php:326 +msgid "Documentation on Managing Pages" +msgstr "〈管理頁面〉線上說明" + +#: wp-admin/edit.php:301 +msgid "Documentation on Managing Posts" +msgstr "〈管理文章〉線上說明" + +#: wp-admin/options-discussion.php:32 +msgid "Documentation on Discussion Settings" +msgstr "〈討論設定〉線上說明" + +#: wp-admin/theme-install.php:155 +msgid "Documentation on Adding New Themes" +msgstr "〈安裝佈景主題〉線上說明" + +#: wp-admin/media-new.php:61 +msgid "Documentation on Uploading Media Files" +msgstr "〈上傳媒體檔案〉線上說明" + +#: wp-admin/users.php:83 +msgid "Descriptions of Roles and Capabilities" +msgstr "〈使用者角色及其權限〉線上說明" + +#: wp-admin/users.php:82 +msgid "Documentation on Managing Users" +msgstr "〈管理使用者〉線上說明" + +#: wp-admin/user-edit.php:78 +msgid "Documentation on User Profiles" +msgstr "〈使用者個人資料〉線上說明" + +#: wp-admin/options-media.php:41 +msgid "Documentation on Media Settings" +msgstr "〈媒體設定〉線上說明" + +#: wp-admin/import.php:32 +msgid "Documentation on Import" +msgstr "〈匯入〉線上說明" + +#: wp-admin/tools.php:56 +msgid "Documentation on Tools" +msgstr "〈工具〉線上說明" + +#: wp-admin/options.php:387 +msgid "This page allows direct access to your site settings. You can break things here. Please be cautious!" +msgstr "這個頁面能直接存取這個網站的設定,同時也代表設定錯誤會造成網站停擺。請審慎使用!" + +#: wp-admin/edit-form-advanced.php:373 +msgid "Format — Post Formats designate how your theme will display a specific post. For example, you could have a standard blog post with a title and paragraphs, or a short aside that omits the title and contains a short text blurb. Your theme could enable all or some of 10 possible formats. Learn more about each post format." +msgstr "文章格式 — 文章格式決定了佈景主題顯示指定文章的方式。舉例來說,使用者可以撰寫含有標題及段落的標準格式文章,也可以撰寫省略標題、僅有簡短文字簡介的記事格式文章。目前使用的佈景主題可以啟用全部 10 種或其中部分的文章格式。請參閱〈文章格式說明〉以進一步了解相關資訊。" + +#: wp-admin/edit-form-advanced.php:330 +msgid "Documentation on Editing Pages" +msgstr "〈編輯頁面〉線上說明" + +#: wp-admin/edit-form-advanced.php:329 +msgid "Documentation on Adding New Pages" +msgstr "〈新增頁面〉線上說明" + +#: wp-admin/upload.php:200 wp-admin/upload.php:402 +msgid "Documentation on Media Library" +msgstr "〈媒體庫〉線上說明" + +#: wp-admin/revision.php:158 +msgid "Revisions Management" +msgstr "〈內容修訂管理方式〉線上說明" + +#: wp-admin/edit-form-advanced.php:348 +msgid "Documentation on Edit Media" +msgstr "〈編輯媒體檔案〉線上說明" + +#: wp-admin/plugins.php:620 +msgid "Documentation on Managing Plugins" +msgstr "〈管理外掛〉線上說明" + +#: wp-admin/index.php:132 +msgid "Documentation on Dashboard" +msgstr "〈控制台〉線上說明" + +#: wp-admin/user-new.php:315 +msgid "Documentation on Adding New Users" +msgstr "〈新增使用者〉線上說明" + +#. translators: %s: URL to Site Health Status page. +#: wp-admin/site-health-info.php:47 +msgid "This page can show you every detail about the configuration of your WordPress website. For any improvements that could be made, see the Site Health Status page." +msgstr "這個頁面顯示 WordPress 網站組態的各項詳細資料。網站如有需要改進的項目,請參照 [網站狀態] 頁面所列資訊進行。" + +#: wp-admin/includes/dashboard.php:2004 wp-admin/site-health.php:137 +msgid "Results are still loading…" +msgstr "正在載入結果..." + +#: wp-admin/options-permalink.php:61 +msgid "Documentation on Using Permalinks" +msgstr "〈使用永久連結〉線上說明" + +#: wp-admin/options-permalink.php:60 +msgid "Documentation on Permalinks Settings" +msgstr "〈永久連結設定〉線上說明" + +#: wp-admin/update-core.php:1053 +msgid "Documentation on Updating WordPress" +msgstr "〈更新 WordPress〉線上說明" + +#: wp-admin/nav-menus.php:775 +msgid "Documentation on Menus" +msgstr "〈選單〉線上說明" + +#: wp-admin/plugin-editor.php:158 +msgid "Documentation on Writing Plugins" +msgstr "〈開發外掛〉線上說明" + +#: wp-admin/theme-editor.php:55 +msgid "Documentation on Template Tags" +msgstr "〈範本標籤〉線上說明" + +#: wp-admin/themes.php:207 +msgid "Documentation on Using Themes" +msgstr "〈使用佈景主題〉線上說明" + +#: wp-admin/theme-editor.php:52 +msgid "Documentation on Theme Development" +msgstr "〈佈景主題開發〉線上說明" + +#: wp-admin/comment.php:73 wp-admin/edit-comments.php:229 +msgid "Documentation on Comments" +msgstr "〈留言〉線上說明" + +#. translators: %s: UTC time. +#: wp-admin/options-general.php:423 +msgid "Universal time is %s." +msgstr "目前的國際標準時間為 %s。" + +#. translators: %s: UTC abbreviation +#: wp-admin/options-general.php:412 +msgid "Choose either a city in the same timezone as you or a %s (Coordinated Universal Time) time offset." +msgstr "請選取與居地同一時區的城市或國際標準時間 (%s) 時區。" + +#: wp-admin/options-general.php:265 +msgid "Administration Email Address" +msgstr "網站管理員電子郵件地址" + +#: wp-admin/options-general.php:60 +msgid "Documentation on General Settings" +msgstr "〈一般設定〉線上說明" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/file.php:330 wp-admin/plugin-editor.php:339 +#: wp-admin/theme-editor.php:406 +msgid "You need to make this file writable before you can save your changes. See Changing File Permissions for more information." +msgstr "儲存變更前,請確認這個檔案為可寫入。請參閱〈變更檔案權限〉,以進一步了解相關資訊。" + +#: wp-admin/includes/ajax-actions.php:2522 +msgid "Upload failed. Please reload and try again." +msgstr "上傳失敗,請再試一次。" + +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:142 +msgid "Data erasure has failed." +msgstr "清除個人資料時發生錯誤。" + +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:67 +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:141 +msgid "Erasure completed." +msgstr "個人資料清除已完成。" + +#: wp-admin/includes/image.php:171 +msgid "The attached file cannot be found." +msgstr "找不到已產生關聯的檔案。" + +#: wp-admin/includes/template.php:2352 +msgctxt "page label" +msgid "Privacy Policy Page" +msgstr "隱私權政策頁面" + +#: wp-admin/includes/template.php:2347 +msgctxt "page label" +msgid "Posts Page" +msgstr "文章頁面" + +#: wp-admin/includes/template.php:2343 +msgctxt "page label" +msgid "Front Page" +msgstr "靜態首頁" + +#: wp-admin/includes/template.php:2334 +msgctxt "post status" +msgid "Sticky" +msgstr "置頂文章" + +#: wp-admin/includes/template.php:2326 +msgctxt "post status" +msgid "Customization Draft" +msgstr "自訂外觀草稿" + +#: wp-admin/includes/template.php:2312 +msgctxt "post status" +msgid "Password protected" +msgstr "受密碼保護" + +#. translators: %s: The name of the late cron event. +#: wp-admin/includes/class-wp-site-health.php:1710 +msgid "The scheduled event, %s, is late to run. Your site still works, but this may indicate that scheduling posts or automated updates may not work as intended." +msgstr "排程事件 %s 已延遲執行。這個網站仍能如常運作,但這也代表文章排程發佈或自動更新無法如預期般運作。" + +#: wp-admin/includes/class-wp-site-health.php:1704 +msgid "A scheduled event is late" +msgstr "排程事件已延遲" + +#: wp-admin/includes/class-wp-site-health.php:1480 +msgid "An HTTPS connection is a more secure way of browsing the web. Many services now have HTTPS as a requirement. HTTPS allows you to take advantage of new features that can increase site speed, improve search rankings, and gain the trust of your visitors by helping to protect their online privacy." +msgstr "由於 HTTPS 連線是瀏覽網站更安全的方式,因此現在有許多服務都將 HTTPS 設定為必要條件。HTTPS 的新特性能讓網站提供網站訪客線上隱私權保護,藉以提升速度、改善搜尋排名並獲得訪客的信任。" + +#. translators: %s: The current version of WordPress installed on this site. +#: wp-admin/includes/class-wp-site-health.php:330 +msgid "Your version of WordPress (%s) is up to date" +msgstr "這個網站的 WordPress %s 已是最新版本" + +#: wp-admin/includes/meta-boxes.php:857 +msgid "https://wordpress.org/documentation/article/introduction-to-blogging/#managing-comments" +msgstr "https://wordpress.org/documentation/article/introduction-to-blogging/#managing-comments" + +#: wp-admin/includes/meta-boxes.php:796 +msgid "https://wordpress.org/documentation/article/introduction-to-blogging/#comments" +msgstr "https://wordpress.org/documentation/article/introduction-to-blogging/#comments" + +#: wp-admin/includes/dashboard.php:2139 +msgid "https://wordpress.org/documentation/article/block-themes/" +msgstr "https://wordpress.org/documentation/article/block-themes/" + +#. translators: Post date information. %s: Date on which the post is to be +#. published. +#: wp-admin/includes/meta-boxes.php:252 +msgid "Publish on: %s" +msgstr "發佈時間: %s" + +#. translators: Post date information. %s: Date on which the post is to be +#. published. +#: wp-admin/includes/meta-boxes.php:249 +msgid "Schedule for: %s" +msgstr "預先排程發佈時間: %s" + +#. translators: Post date information. %s: Date on which the post was +#. published. +#: wp-admin/includes/meta-boxes.php:244 +msgid "Published on: %s" +msgstr "發佈時間: %s" + +#. translators: Post date information. %s: Date on which the post is currently +#. scheduled to be published. +#: wp-admin/includes/meta-boxes.php:241 +msgid "Scheduled for: %s" +msgstr "排程發佈時間: %s" + +#. translators: Publish box time format, see +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/edit-form-advanced.php:170 wp-admin/edit-form-comment.php:150 +#: wp-admin/includes/meta-boxes.php:236 wp-admin/includes/meta-boxes.php:442 +msgctxt "publish box time format" +msgid "H:i" +msgstr "a g:i" + +#. translators: Publish box date format, see +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/edit-form-advanced.php:168 wp-admin/edit-form-comment.php:148 +#: wp-admin/includes/meta-boxes.php:234 wp-admin/includes/meta-boxes.php:440 +msgctxt "publish box date format" +msgid "M j, Y" +msgstr "Y 年 n 月 j 日" + +#. translators: 1: Marker. +#: wp-admin/includes/misc.php:142 +msgid "" +"The directives (lines) between \"BEGIN %1$s\" and \"END %1$s\" are\n" +"dynamically generated, and should only be modified via WordPress filters.\n" +"Any changes to the directives between these markers will be overwritten." +msgstr "" +"在含有 BEGIN %1$s 及 END %1$s 標記的這兩行間的指示詞內容為動態產生,\n" +"且應僅有 WordPress 篩選器能進行修改。對這兩行間任何指示詞內容的變更,\n" +"都會遭到系統覆寫。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:158 +msgid "All automatic updates are disabled." +msgstr "全部自動更新已停用。" + +#: wp-admin/includes/class-wp-debug-data.php:1750 +msgid "Database collation" +msgstr "資料庫定序" + +#: wp-admin/includes/class-wp-debug-data.php:1745 +msgid "Database charset" +msgstr "資料庫字元集" + +#: wp-admin/includes/class-wp-debug-data.php:1513 +msgid "Inactive Themes" +msgstr "未啟用的佈景主題" + +#: wp-admin/includes/class-wp-debug-data.php:1383 +msgid "Parent Theme" +msgstr "上層佈景主題" + +#. translators: %s: wp-content directory name. +#: wp-admin/includes/class-wp-debug-data.php:331 +#: wp-admin/includes/class-wp-plugins-list-table.php:695 +msgid "Drop-ins are single files, found in the %s directory, that replace or enhance WordPress features in ways that are not possible for traditional plugins." +msgstr "檔案位置在 %s 目錄的強化外掛,是用來取代或加強 WordPress 無法透過傳統外掛加入功能的獨立檔案。" + +#. translators: Description for the About section in a personal data export. +#: wp-admin/includes/privacy-tools.php:370 +msgctxt "personal data group description" +msgid "Overview of export report." +msgstr "匯出報告概觀" + +#: wp-admin/options-writing.php:53 +msgid "Documentation on Writing Settings" +msgstr "〈寫作設定〉線上說明" + +#: wp-admin/edit-tags.php:312 +msgid "Documentation on Tags" +msgstr "〈標籤〉線上說明" + +#: wp-admin/edit-tags.php:308 +msgid "Documentation on Categories" +msgstr "〈分類〉線上說明" + +#. translators: %s: Documentation URL. +#: wp-admin/options-reading.php:201 +msgid "Your theme determines how content is displayed in browsers. Learn more about feeds." +msgstr "使用中的佈景主題掌控了內容在瀏覽器中的顯示方式。進一步了解資訊提供" + +#: wp-admin/options-reading.php:188 +msgid "For each post in a feed, include" +msgstr "資訊提供中的文章顯示方式" + +#: wp-admin/options-reading.php:165 +msgid "Warning: these pages should not be the same as your Privacy Policy page!" +msgstr "警告: 不能將隱私權政策頁面設定為靜態頁面。" + +#: wp-admin/options-reading.php:53 +msgid "Documentation on Reading Settings" +msgstr "〈閱讀設定〉線上說明" + +#. translators: %s: Site title. +#: wp-admin/ms-delete-site.php:100 +msgid "[%s] Delete My Site" +msgstr "《%s》通知:刪除我的網站" + +#: wp-admin/options-discussion.php:60 +msgid "Allow people to submit comments on new posts" +msgstr "開放使用者在新文章中發佈留言" + +#: wp-admin/options-discussion.php:46 +msgid "Default post settings" +msgstr "預設文章設定" + +#. translators: %s: Gravatar URL. +#: wp-admin/user-edit.php:646 +msgid "You can change your profile picture on Gravatar." +msgstr "使用者可以在 Gravatar 變更個人資料圖片。" + +#: wp-admin/plugins.php:746 +msgid "Plugin resumed." +msgstr "外掛已恢復使用。" + +#: wp-admin/plugins.php:742 +msgid "Selected plugins deactivated." +msgstr "選取的外掛已完成停用。" + +#: wp-admin/plugins.php:740 +msgid "Plugin deactivated." +msgstr "外掛已停用。" + +#: wp-admin/plugins.php:738 +msgid "Selected plugins activated." +msgstr "選取的外掛已完成啟用。" + +#: wp-admin/plugins.php:736 +msgid "Plugin activated." +msgstr "外掛已啟用。" + +#: wp-admin/plugins.php:731 +msgid "The selected plugins have been deleted." +msgstr "選取的外掛已刪除。" + +#: wp-admin/plugins.php:729 +msgid "The selected plugin has been deleted." +msgstr "選取的外掛已刪除。" + +#. translators: 1: Plugin file, 2: Error message. +#: wp-admin/plugins.php:644 +msgid "The plugin %1$s has been deactivated due to an error: %2$s" +msgstr "外掛 %1$s 已停用。錯誤原因: %2$s" + +#. translators: %s: Link to documentation on child themes. +#: wp-admin/theme-editor.php:455 +msgid "If you need to tweak more than your theme’s CSS, you might want to try making a child theme." +msgstr "如果需要修改的項目超過佈景主題 CSS 所能控制的範圍,請先建立子佈景主題再進行修改。" + +#: wp-admin/theme-editor.php:447 +msgid "You appear to be making direct edits to your theme in the WordPress dashboard. It is not recommended! Editing your theme directly could break your site and your changes may be lost in future updates." +msgstr "目前要進行的這項操作可以讓使用者在 WordPress 控制台中直接編輯佈景主題的程式碼,但建議不要進行這項操作。直接修改佈景主題有可能造成網站停擺,且經由修改所得的全部變更均會在佈景主題更新後消失。" + +#. translators: Maximum number of words used in a preview of a draft on the +#. dashboard. +#: wp-admin/includes/dashboard.php:670 +msgctxt "draft_length" +msgid "10" +msgstr "10" + +#: wp-admin/includes/file.php:494 wp-admin/plugin-editor.php:123 +#: wp-admin/theme-editor.php:351 +msgid "File does not exist! Please double check the name and try again." +msgstr "這個檔案不存在!請確認檔案名稱後再試一次。" + +#. translators: 1: $image, 2: WP_Image_Editor +#: wp-admin/includes/image-edit.php:364 wp-admin/includes/image-edit.php:459 +#: wp-admin/includes/image-edit.php:638 +msgid "%1$s needs to be a %2$s object." +msgstr "%1$s 必須是 %2$s 物件。" + +#. translators: %s: Recovery Mode exit link. +#: wp-admin/includes/update.php:1030 +msgid "You are in recovery mode. This means there may be an error with a theme or plugin. To exit recovery mode, log out or use the Exit button. Exit Recovery Mode" +msgstr "這個網站已進入 [復原模式],這通常代表已啟用的外掛或佈景主題執行時產生錯誤。如需結束 [復原模式],請登出網站或使用離開按鈕。離開復原模式" + +#. translators: Tab heading for Site Health Info page. +#: wp-admin/site-health.php:18 +msgctxt "Site Health" +msgid "Info" +msgstr "網站狀態資訊" + +#. translators: Tab heading for Site Health Status page. +#: wp-admin/site-health.php:16 +msgctxt "Site Health" +msgid "Status" +msgstr "網站狀態" + +#: wp-admin/includes/class-wp-debug-data.php:934 +msgid "Themes directory location" +msgstr "佈景主題安裝目錄位置" + +#: wp-admin/includes/class-wp-debug-data.php:225 +msgctxt "comment status" +msgid "Closed" +msgstr "已關閉" + +#. translators: %s: Number of critical issues found. +#: wp-admin/site-health.php:260 wp-admin/js/site-health.js:166 +msgid "%s critical issue" +msgid_plural "%s critical issues" +msgstr[0] "%s 個重大問題" + +#: wp-admin/update-core.php:262 +msgid "https://wordpress.org/documentation/article/updating-wordpress/" +msgstr "https://wordpress.org/documentation/article/updating-wordpress/" + +#: wp-admin/includes/class-wp-site-health.php:1366 +msgid "Get help resolving this issue." +msgstr "取得解決這個問題的相關說明" + +#: wp-admin/includes/class-wp-site-health.php:1249 +msgid "Learn more about what WordPress requires to run." +msgstr "進一步了解執行 WordPress 的環境需求" + +#. translators: Localized version of WordPress requirements if one exists. +#: wp-admin/includes/class-wp-site-health.php:1248 +msgid "https://wordpress.org/about/requirements/" +msgstr "https://tw.wordpress.org/about/requirements/" + +#: wp-admin/includes/class-wp-site-health.php:1243 +msgid "The SQL server is a required piece of software for the database WordPress uses to store all your site’s content and settings." +msgstr "SQL 伺服器是 WordPress 用來儲存這個網站內容及設定的必要資料庫軟體。" + +#: wp-admin/includes/class-wp-site-health.php:913 +msgid "PHP modules perform most of the tasks on the server that make your site run. Any changes to these must be made by your server administrator." +msgstr "PHP 模組執行了在這台伺服器上讓這個網站能夠運作的大多數工作。如需為 PHP 模組進行任何變更,都必須透過這個網站的伺服器管理員進行。" + +#: wp-admin/includes/class-wp-site-health.php:504 +msgid "Manage your themes" +msgstr "管理佈景主題" + +#: wp-admin/includes/class-wp-site-health.php:471 +msgid "Manage inactive plugins" +msgstr "管理未啟用的外掛" + +#: wp-admin/includes/class-wp-site-health.php:417 +msgid "Update your plugins" +msgstr "更新外掛" + +#: wp-admin/includes/class-wp-site-health.php:370 +msgid "Manage your plugins" +msgstr "管理外掛" + +#: wp-admin/includes/class-wp-privacy-policy-content.php:338 +msgid "View Privacy Policy Guide." +msgstr "檢視隱私權政策指南" + +#: wp-admin/includes/class-wp-debug-data.php:181 +msgid "User Language" +msgstr "使用者偏好的介面語言" + +#. translators: 1: WP_DEBUG_DISPLAY, 2: WP_DEBUG +#: wp-admin/includes/class-wp-site-health.php:1441 +msgid "The value, %1$s, has either been enabled by %2$s or added to your configuration file. This will make errors display on the front end of your site." +msgstr "常數 %1$s 已伴隨常數 %2$s 啟用,或已加入這個網站的組態檔案中,這會將錯誤訊息顯示於網站前端。" + +#. translators: Background update finished notification email subject. %s: Site +#. title. +#: wp-admin/includes/class-wp-automatic-updater.php:1661 +msgid "[%s] Background Update Finished" +msgstr "《%s》通知:背景更新已完成" + +#. translators: Background update failed notification email subject. %s: Site +#. title. +#: wp-admin/includes/class-wp-automatic-updater.php:1658 +msgid "[%s] Background Update Failed" +msgstr "《%s》通知:背景更新失敗" + +#: wp-admin/plugins.php:680 +msgid "Plugin could not be resumed because it triggered a fatal error." +msgstr "由於這個外掛會觸發嚴重錯誤,因此外掛並未恢復使用。" + +#: wp-admin/includes/class-wp-site-health.php:621 +#: wp-admin/includes/class-wp-site-health.php:667 +msgid "You should remove inactive themes" +msgstr "網站管理員應該移除未啟用的佈景主題" + +#: wp-admin/includes/class-wp-site-health.php:591 +msgid "Your site has 1 installed theme, and it is up to date." +msgstr "這個網站安裝了 1 個佈景主題,且為最新版本。" + +#: wp-admin/includes/class-wp-site-health.php:423 +msgid "Your site has 1 active plugin, and it is up to date." +msgstr "這個網站安裝了 1 個外掛,且為最新版本。" + +#: wp-admin/site-health.php:285 +msgid "Passed tests" +msgstr "已通過的測試" + +#: wp-admin/site-health.php:48 +msgid "Sorry, you are not allowed to access site health information." +msgstr "很抱歉,目前的登入身分沒有存取網站狀態資訊的權限。" + +#: wp-admin/site-health-info.php:57 +msgid "Copy site info to clipboard" +msgstr "複製網站狀態資訊至剪貼簿" + +#: wp-admin/site-health-info.php:51 +msgid "If you want to export a handy list of all the information on this page, you can use the button below to copy it to the clipboard. You can then paste it in a text file and save it to your device, or paste it in an email exchange with a support engineer or theme/plugin developer for example." +msgstr "如果網站管理員想要將這個頁面的全部資訊匯出為方便使用的清單,請點擊下方按鈕便能將資訊複製至剪貼簿中。舉例來說,網站管理員可以將這些資訊貼上至文字檔案並儲存於裝置的儲存空間,或是將這些資訊貼上至與技術支援工程師、佈景主題/外掛開發者交換意見的電子郵件中。" + +#: wp-admin/site-health-info.php:23 wp-admin/site-health.php:226 +msgid "The Site Health check requires JavaScript." +msgstr "[網站狀態] 檢查功能需要啟用瀏覽器的 JavaScript 功能。" + +#: wp-admin/site-health-info.php:41 +msgid "Site Health Info" +msgstr "網站狀態資訊" + +#: wp-admin/update-core.php:549 wp-admin/update-core.php:742 +msgid "This update does not work with your version of PHP." +msgstr "這項更新無法執行於目前版本的 PHP 執行環境。" + +#: wp-admin/includes/class-wp-posts-list-table.php:543 +msgid "All formats" +msgstr "全部文章格式" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-posts-list-table.php:539 +msgid "Filter by post format" +msgstr "依文章格式篩選" + +#: wp-admin/includes/plugin.php:2573 wp-admin/includes/plugin.php:2655 +msgid "Go to the Plugins screen" +msgstr "前往 [外掛] 頁面" + +#. translators: %s: The filename of the package. +#: wp-admin/includes/file.php:1510 +msgid "The authenticity of %s could not be verified." +msgstr "無法驗證 %s 的真實性。" + +#. translators: %s: The filename of the package. +#: wp-admin/includes/file.php:1462 +msgid "The authenticity of %s could not be verified as no signature was found." +msgstr "由於找不到簽章,因此無法驗證 %s 的真實性。" + +#. translators: %s: The filename of the package. +#: wp-admin/includes/file.php:1410 wp-admin/includes/file.php:1444 +msgid "The authenticity of %s could not be verified as signature verification is unavailable on this system." +msgstr "由於在這個系統無法使用簽章驗證,因此無法驗證 %s 的真實性。" + +#. translators: %s: Eraser friendly name. +#: wp-admin/includes/ajax-actions.php:5238 +msgid "Eraser callback is not valid: %s." +msgstr "清除程式的回呼無效: %s。" + +#. translators: %s: Eraser friendly name. +#: wp-admin/includes/ajax-actions.php:5228 +msgid "Eraser does not include a callback: %s." +msgstr "清除程式不包含的回呼: %s。" + +#: wp-admin/includes/ajax-actions.php:4950 +#: wp-admin/includes/ajax-actions.php:5141 +msgid "Sorry, you are not allowed to perform this action." +msgstr "很抱歉,目前的登入身分沒有執行這項操作的權限。" + +#. translators: 1: Name of the constant used. 2: List of allowed hostnames. +#: wp-admin/includes/class-wp-site-health.php:2163 +msgid "HTTP requests have been blocked by the %1$s constant, with some allowed hosts: %2$s." +msgstr "HTTP 要求已由常數 %1$s 封鎖,這個網站會封鎖來自外部主機的全部要求,但允許清單內的主機要求不在此限: %2$s。" + +#. translators: %s: Name of the constant used. +#: wp-admin/includes/class-wp-site-health.php:2148 +msgid "HTTP requests have been blocked by the %s constant, with no allowed hosts." +msgstr "%s 常數已封鎖來自外部主機的 HTTP 要求。" + +#. translators: 1: The name of the drop-in. 2: The name of the database engine. +#: wp-admin/includes/class-wp-site-health.php:1297 +msgid "You are using a %1$s drop-in which might mean that a %2$s database is not being used." +msgstr "這個網站目前使用了 %1$s 強化外掛,這代表這個網站可能沒有使用 %2$s 資料庫。" + +#. translators: Localized team handbook, if one exists. +#: wp-admin/includes/class-wp-site-health.php:918 +msgid "https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions" +msgstr "https://make.wordpress.org/hosting/handbook/handbook/server-environment/#php-extensions" + +#. translators: 1: Link to the hosting group page about recommended PHP +#. modules. 2: Additional link attributes. 3: Accessibility text. +#: wp-admin/includes/class-wp-site-health.php:916 +msgid "The WordPress Hosting Team maintains a list of those modules, both recommended and required, in the team handbook%3$s." +msgstr "WordPress 主機團隊會在團隊手冊%3$s中維護一份包含建議模組及必要模組的清單。" + +#: wp-admin/about.php:140 wp-admin/includes/class-wp-site-health.php:259 +#: wp-admin/includes/class-wp-site-health.php:737 +#: wp-admin/includes/class-wp-site-health.php:908 +#: wp-admin/includes/class-wp-site-health.php:1147 +#: wp-admin/includes/class-wp-site-health.php:1188 +#: wp-admin/includes/class-wp-site-health.php:1238 +#: wp-admin/includes/class-wp-site-health.php:1662 +#: wp-admin/includes/class-wp-site-health.php:2074 +#: wp-admin/includes/class-wp-site-health.php:2117 +#: wp-admin/includes/class-wp-site-health.php:2188 +#: wp-admin/includes/class-wp-site-health.php:2299 +#: wp-admin/includes/class-wp-site-health.php:2453 +#: wp-admin/includes/class-wp-site-health.php:2578 +#: wp-admin/includes/class-wp-site-health.php:2689 +#: wp-admin/includes/class-wp-site-health.php:2814 +msgid "Performance" +msgstr "效能" + +#. translators: 1: The amount of inactive themes. 2: The default theme for +#. WordPress. 3: The currently active theme. +#: wp-admin/includes/class-wp-site-health.php:689 +msgid "Your site has %1$d inactive theme, other than %2$s, the default WordPress theme, and %3$s, your active theme." +msgid_plural "Your site has %1$d inactive themes, other than %2$s, the default WordPress theme, and %3$s, your active theme." +msgstr[0] "除了 WordPress 預設佈景主題 %2$s 及目前使用的佈景主題 %3$s 外,這個網站有 %1$d 個未使用的佈景主題。" + +#: wp-admin/includes/class-wp-site-health.php:682 +#: wp-admin/includes/class-wp-site-health.php:698 +msgid "You should consider removing any unused themes to enhance your site’s security." +msgstr "建議移除全部未使用的佈景主題以增加網站安全性。" + +#. translators: 1: The amount of inactive themes. 2: The currently active +#. theme. +#: wp-admin/includes/class-wp-site-health.php:674 +msgid "Your site has %1$d inactive theme, other than %2$s, your active theme." +msgid_plural "Your site has %1$d inactive themes, other than %2$s, your active theme." +msgstr[0] "除了目前使用的佈景主題 %2$s 外,這個網站有 %1$d 個未使用的佈景主題。" + +#. translators: %d: The number of inactive themes. +#: wp-admin/includes/class-wp-site-health.php:628 +#: wp-admin/includes/class-wp-site-health.php:647 +msgid "Your site has %d inactive theme." +msgid_plural "Your site has %d inactive themes." +msgstr[0] "這個網站有 %d 個未使用的佈景主題。" + +#: wp-admin/includes/class-wp-site-health.php:465 +msgid "Inactive plugins are tempting targets for attackers. If you are not going to use a plugin, you should consider removing it." +msgstr "未啟用的外掛對攻擊者而言是相當具有吸引力的目標。如果這個網站有不再使用的外掛,建議將它移除。" + +#. translators: %d: The number of inactive plugins. +#: wp-admin/includes/class-wp-site-health.php:458 +msgid "Your site has %d inactive plugin." +msgid_plural "Your site has %d inactive plugins." +msgstr[0] "這個網站有 %d 個未啟用的外掛。" + +#: wp-admin/includes/class-wp-site-health.php:320 +#: wp-admin/includes/class-wp-site-health.php:360 +#: wp-admin/includes/class-wp-site-health.php:494 +#: wp-admin/includes/class-wp-site-health.php:849 +#: wp-admin/includes/class-wp-site-health.php:1278 +#: wp-admin/includes/class-wp-site-health.php:1323 +#: wp-admin/includes/class-wp-site-health.php:1393 +#: wp-admin/includes/class-wp-site-health.php:1475 +#: wp-admin/includes/class-wp-site-health.php:1616 +#: wp-admin/includes/class-wp-site-health.php:1735 +#: wp-admin/includes/class-wp-site-health.php:1810 +#: wp-admin/includes/class-wp-site-health.php:1851 +#: wp-admin/includes/class-wp-site-health.php:1900 +#: wp-admin/includes/class-wp-site-health.php:1937 +#: wp-admin/includes/class-wp-site-health.php:2391 +msgid "Security" +msgstr "安全性" + +#: wp-admin/erase-personal-data.php:96 +msgid "Erase personal data list" +msgstr "清除個人資料清單" + +#: wp-admin/erase-personal-data.php:95 +msgid "Erase personal data list navigation" +msgstr "清除個人資料清單導覽" + +#: wp-admin/erase-personal-data.php:94 +msgid "Filter erase personal data list" +msgstr "篩選個人資料清單" + +#: wp-admin/export-personal-data.php:96 +msgid "Export personal data list" +msgstr "匯出個人資料清單" + +#: wp-admin/export-personal-data.php:95 +msgid "Export personal data list navigation" +msgstr "匯出個人資料清單導覽" + +#: wp-admin/export-personal-data.php:94 +msgid "Filter export personal data list" +msgstr "篩選匯出個人資料清單" + +#. translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, +#. 4: Version number 5: URL to Update PHP page. +#: wp-admin/includes/update.php:572 +msgid "There is a new version of %1$s available, but it does not work with your version of PHP. View version %4$s details or learn more about updating PHP." +msgstr "%1$s 已有新版本可供下載安裝,但無法執行於目前版本的 PHP 執行環境。檢視 %4$s 版的詳細資料進一步了解更新 PHP 執行環境。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1301 +msgid "This plugin failed to load properly and is paused during recovery mode." +msgstr "網站進入 [復原模式] 期間,這個外掛無法正確載入並會遭到系統暫停。" + +#: wp-admin/includes/theme.php:1243 +msgid "Go to the Themes screen" +msgstr "前往 [佈景主題] 頁面" + +#: wp-admin/includes/class-wp-debug-data.php:2100 +msgid "Total size is not available. Some errors were encountered when determining the size of your installation." +msgstr "確認網站大小總計時發生錯誤,因此無法顯示正確資料。" + +#: wp-admin/includes/class-wp-debug-data.php:2049 +msgid "The size cannot be calculated. The directory is not accessible. Usually caused by invalid permissions." +msgstr "由於無法存取目錄,因此無法計算目錄大小,發生這種狀況通常是由不正確的權限所造成。" + +#: wp-admin/includes/class-wp-debug-data.php:2056 +msgid "The directory size calculation has timed out. Usually caused by a very large number of sub-directories and files." +msgstr "目錄大小計算已逾時,發生這種狀況通常是由大量子目錄及檔案所造成。" + +#: wp-admin/includes/class-wp-debug-data.php:1681 +msgid "These settings alter where and how parts of WordPress are loaded." +msgstr "下列常數及其設定值會更改 WordPress 的載入位置及方式。" + +#. translators: %s: Number of items with no issues. +#: wp-admin/site-health.php:294 wp-admin/js/site-health.js:176 +msgid "%s item with no issues detected" +msgid_plural "%s items with no issues detected" +msgstr[0] "%s 個未偵測到問題的項目" + +#. translators: %s: Number of recommended improvements. +#: wp-admin/site-health.php:273 wp-admin/js/site-health.js:171 +msgid "%s recommended improvement" +msgid_plural "%s recommended improvements" +msgstr[0] "%s 個建議改進項目" + +#: wp-admin/site-health.php:254 +msgid "The site health check shows information about your WordPress configuration and items that may need your attention." +msgstr "[網站狀態] 檢查功能顯示了這個 WordPress 網站的設定及需要注意的項目的相關資訊。" + +#: wp-admin/includes/dashboard.php:68 wp-admin/site-health.php:251 +msgid "Site Health Status" +msgstr "網站狀態" + +#: wp-admin/site-health.php:245 +msgid "Everything is running smoothly here." +msgstr "一切功能均正常執行。" + +#: wp-admin/site-health.php:241 +msgid "Great job!" +msgstr "非常好!" + +#: wp-admin/about.php:55 wp-admin/contribute.php:42 wp-admin/credits.php:45 +#: wp-admin/freedoms.php:48 wp-admin/includes/ms.php:1132 +#: wp-admin/nav-menus.php:813 wp-admin/options-privacy.php:161 +#: wp-admin/privacy-policy-guide.php:44 wp-admin/privacy.php:42 +#: wp-admin/site-health.php:141 +msgid "Secondary menu" +msgstr "次要選單" + +#: wp-admin/includes/class-wp-site-health.php:3333 +msgid "The loopback request to your site completed successfully." +msgstr "這個網站的回送要求已成功完成。" + +#. translators: %d: The HTTP response code returned. +#: wp-admin/includes/class-wp-site-health.php:3325 +msgid "The loopback request returned an unexpected http status code, %d, it was not possible to determine if this will prevent features from working as expected." +msgstr "回送要求傳回未預期的 HTTP 狀態代碼 %d,因此無法確定這是否會導致各項功能無法如預期般運作。" + +#: wp-admin/includes/class-wp-site-health.php:3309 +msgid "The loopback request to your site failed, this means features relying on them are not currently working as expected." +msgstr "這個網站的回送要求無法完成,這代表依靠回送要求的功能目前無法如預期般運作。" + +#: wp-admin/includes/class-wp-site-health.php:3101 +msgid "No scheduled events exist on this site." +msgstr "這個網站並不包含任何排程事件。" + +#: wp-admin/includes/class-wp-site-health.php:2900 +msgid "REST API availability" +msgstr "REST API 可用性" + +#: wp-admin/includes/class-wp-site-health.php:2955 +msgid "Loopback request" +msgstr "回送要求" + +#: wp-admin/includes/class-wp-site-health.php:2905 +msgid "Debugging enabled" +msgstr "偵錯模式已啟用" + +#: wp-admin/includes/class-wp-site-health.php:2896 +msgid "HTTP Requests" +msgstr "HTTP 要求" + +#: wp-admin/includes/class-wp-site-health.php:2892 +msgid "Scheduled events" +msgstr "排程事件" + +#: wp-admin/includes/class-wp-site-health.php:2888 +msgid "Secure communication" +msgstr "安全通訊" + +#: wp-admin/includes/class-wp-site-health.php:2961 +msgid "HTTPS status" +msgstr "HTTPS 狀態" + +#: wp-admin/includes/class-wp-site-health.php:2872 +msgid "PHP Extensions" +msgstr "PHP 擴充功能" + +#: wp-admin/includes/class-wp-site-health.php:2884 +msgid "Database Server version" +msgstr "資料庫伺服器版本" + +#: wp-admin/includes/class-wp-site-health.php:2868 +msgid "PHP Version" +msgstr "PHP 版本" + +#: wp-admin/includes/class-wp-site-health.php:2864 +msgid "Theme Versions" +msgstr "佈景主題版本" + +#: wp-admin/includes/class-wp-site-health.php:2860 +msgid "Plugin Versions" +msgstr "外掛版本" + +#: wp-admin/includes/class-wp-site-health.php:2856 +msgid "WordPress Version" +msgstr "WordPress 版本" + +#. translators: %s: The name of the query parameter being tested. +#: wp-admin/includes/class-wp-site-health.php:2277 +msgid "The REST API did not process the %s query parameter correctly." +msgstr "REST API 無法正確處理 %s 查詢參數。" + +#: wp-admin/includes/class-wp-site-health.php:2271 +msgid "The REST API did not behave correctly" +msgstr "REST API 運作不正確" + +#: wp-admin/includes/class-wp-site-health.php:2248 +msgid "The REST API encountered an unexpected result" +msgstr "REST API 發生未預期的結果" + +#: wp-admin/includes/class-wp-site-health.php:2228 +msgid "The REST API encountered an error" +msgstr "REST API 發生錯誤" + +#: wp-admin/includes/class-wp-site-health.php:2193 +msgid "The REST API is one way that WordPress and other applications communicate with the server. For example, the block editor screen relies on the REST API to display and save your posts and pages." +msgstr "REST API 是 WordPress 及其他應用程式與伺服器進行通訊的一種方式。以區塊編輯器畫面為例,它便是依賴 REST API 顯示及儲存網站上的文章及頁面。" + +#: wp-admin/includes/class-wp-site-health.php:2185 +msgid "The REST API is available" +msgstr "REST API 目前可供使用" + +#: wp-admin/includes/class-wp-site-health.php:2157 +msgid "HTTP requests are partially blocked" +msgstr "HTTP 要求已部分封鎖" + +#: wp-admin/includes/class-wp-site-health.php:2142 +msgid "HTTP requests are blocked" +msgstr "HTTP 要求已封鎖" + +#: wp-admin/includes/class-wp-site-health.php:2122 +msgid "It is possible for site maintainers to block all, or some, communication to other sites and services. If set up incorrectly, this may prevent plugins and themes from working as intended." +msgstr "網站維護人員可以封鎖這個網站與其他網站或服務的全部或部分通訊。如果設定不正確,會導致外掛及佈景主題無法如預期般運作。" + +#: wp-admin/includes/class-wp-site-health.php:2114 +msgid "HTTP requests seem to be working as expected" +msgstr "HTTP 要求如預期般正常執行" + +#: wp-admin/includes/class-wp-site-health.php:2090 +msgid "Your site could not complete a loopback request" +msgstr "這個網站的回送要求無法完成" + +#: wp-admin/includes/class-wp-site-health.php:2079 +msgid "Loopback requests are used to run scheduled events, and are also used by the built-in editors for themes and plugins to verify code stability." +msgstr "回送要求用於執行排程事件,而內建的編輯器使用回送要求驗證佈景主題及外掛的程式碼穩定性。" + +#: wp-admin/includes/class-wp-site-health.php:2071 +msgid "Your site can perform loopback requests" +msgstr "這個網站能執行回送要求" + +#: wp-admin/includes/class-wp-site-health.php:1773 +msgid "Background updates may not be working properly" +msgstr "背景更新可能無法正常執行" + +#: wp-admin/includes/class-wp-site-health.php:1764 +msgid "Background updates are not working as expected" +msgstr "背景更新無法如預期般正常執行" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-site-health.php:1761 +msgid "Passed" +msgstr "已通過" + +#: wp-admin/includes/class-wp-site-health.php:1740 +msgid "Background updates ensure that WordPress can auto-update if a security update is released for the version you are currently using." +msgstr "當 WordPress 網站採用的核心程式版本有安全性更新發佈時,背景更新可以讓 WordPress 核心程式自動完成更新。" + +#: wp-admin/includes/class-wp-site-health.php:1732 +msgid "Background updates are working" +msgstr "背景更新正常執行" + +#. translators: %s: The name of the failed cron event. +#: wp-admin/includes/class-wp-site-health.php:1697 +msgid "The scheduled event, %s, failed to run. Your site still works, but this may indicate that scheduling posts or automated updates may not work as intended." +msgstr "排程事件 %s 執行失敗。這個網站仍能如常運作,但這也代表文章排程發佈或自動更新無法如預期般運作。" + +#: wp-admin/includes/class-wp-site-health.php:1691 +msgid "A scheduled event has failed" +msgstr "排程事件執行失敗" + +#. translators: %s: The error message returned while from the cron scheduler. +#: wp-admin/includes/class-wp-site-health.php:1684 +msgid "While trying to test your site’s scheduled events, the following error was returned: %s" +msgstr "測試這個網站的排程事件時,傳回所列錯誤: %s" + +#: wp-admin/includes/class-wp-site-health.php:1678 +msgid "It was not possible to check your scheduled events" +msgstr "目前無法檢測這個網站的排程事件" + +#: wp-admin/includes/class-wp-site-health.php:1667 +msgid "Scheduled events are what periodically looks for updates to plugins, themes and WordPress itself. It is also what makes sure scheduled posts are published on time. It may also be used by various plugins to make sure that planned actions are executed." +msgstr "排程事件會定期為外掛、佈景主題及 WordPress 核心程式檢查有無更新可供使用,它同時也讓排程文章能準時發佈。" + +#: wp-admin/includes/class-wp-site-health.php:1659 +msgid "Scheduled events are running" +msgstr "排程事件正在執行" + +#: wp-admin/includes/class-wp-site-health.php:1640 +msgid "Talk to your web host about OpenSSL support for PHP." +msgstr "請與網站主機商聯絡,討論關於 PHP 的 OpenSSL 支援。" + +#: wp-admin/includes/class-wp-site-health.php:1636 +msgid "Your site is unable to communicate securely with other services" +msgstr "這個網站無法與其他服務進行安全通訊" + +#: wp-admin/includes/class-wp-site-health.php:1632 +msgid "Your site can communicate securely with other services" +msgstr "這個網站能與其他服務進行安全通訊" + +#: wp-admin/includes/class-wp-site-health.php:1621 +msgid "Securely communicating between servers are needed for transactions such as fetching files, conducting sales on store sites, and much more." +msgstr "伺服器間的安全通訊是擷取檔案、在網路商店進行商品銷售等異動所需要的必要條件。" + +#: wp-admin/includes/class-wp-site-health.php:1485 +msgid "Learn more about why you should use HTTPS" +msgstr "進一步了解為什麼網站該採用 HTTPS" + +#: wp-admin/includes/class-wp-site-health.php:1498 +msgid "Your website does not use HTTPS" +msgstr "這個網站並未使用 HTTPS" + +#: wp-admin/includes/class-wp-site-health.php:1472 +msgid "Your website is using an active HTTPS connection" +msgstr "這個網站正在使用有效的 HTTPS 連線" + +#. translators: %s: URL to Settings > General > Site Address. +#: wp-admin/includes/class-wp-site-health.php:1506 +msgid "You are accessing this website using HTTPS, but your Site Address is not set up to use HTTPS by default." +msgstr "目前你正以 HTTPS 存取這個網站,但這個網站的 [網站位址] 卻仍為預設值,並未設定為 HTTPS。" + +#: wp-admin/includes/class-wp-site-health.php:1428 +msgid "Your site is set to display errors to site visitors" +msgstr "這個網站設定為會向網站訪客顯示錯誤訊息" + +#. translators: %s: WP_DEBUG_LOG +#: wp-admin/includes/class-wp-site-health.php:1421 +msgid "The value, %s, has been added to this website’s configuration file. This means any errors on the site will be written to a file which is potentially available to all users." +msgstr "已將常數 %s 及其設定值加入這個網站的組態檔案中,這代表這個網站的任何錯誤訊息將會記錄在全部使用者可能會存取到的檔案中。" + +#: wp-admin/includes/class-wp-site-health.php:1413 +msgid "Your site is set to log errors to a potentially public file" +msgstr "這個網站會將錯誤訊息記錄在可能可公開存取的檔案中" + +#: wp-admin/includes/class-wp-site-health.php:1398 +msgid "Debug mode is often enabled to gather more details about an error or site failure, but may contain sensitive information which should not be available on a publicly available website." +msgstr "啟用偵錯模式通常用來收集錯誤訊息或網站故障的相關詳細資料,但可能會包含不適合放在公共網站上的敏感資訊。" + +#: wp-admin/includes/class-wp-site-health.php:1390 +msgid "Your site is not set to output debug information" +msgstr "這個網站設定為不輸出偵錯資訊" + +#. translators: 1: The IP address WordPress.org resolves to. 2: The error +#. returned by the lookup. +#: wp-admin/includes/class-wp-site-health.php:1355 +msgid "Your site is unable to reach WordPress.org at %1$s, and returned the error: %2$s" +msgstr "這個網站無法連線至位於 %1$s 的 WordPress.org。傳回的錯誤訊息: %2$s" + +#: wp-admin/includes/class-wp-site-health.php:1345 +msgid "Could not reach WordPress.org" +msgstr "這個網站無法連線至 WordPress.org" + +#: wp-admin/includes/class-wp-site-health.php:1328 +msgid "Communicating with the WordPress servers is used to check for new versions, and to both install and update WordPress core, themes or plugins." +msgstr "與 WordPress 伺服器進行通訊的目的在於檢查是否有新版本,並可進行安裝及更新 WordPress 核心程式、佈景主題及外掛。" + +#: wp-admin/includes/class-wp-site-health.php:1320 +msgid "Can communicate with WordPress.org" +msgstr "這個網站可與 WordPress.org 進行連線" + +#. translators: 1: The database engine in use (MySQL or MariaDB). 2: Database +#. server minimum version number. +#: wp-admin/includes/class-wp-site-health.php:1284 +msgid "WordPress requires %1$s version %2$s or higher. Contact your web hosting company to correct this." +msgstr "WordPress 需要 %1$s %2$s 或更新版本。請聯絡這個網站的主機服務提供商修正這個問題。" + +#: wp-admin/includes/class-wp-site-health.php:1277 +msgid "Severely outdated SQL server" +msgstr "嚴重過時的 SQL 伺服器" + +#. translators: 1: The database engine in use (MySQL or MariaDB). 2: Database +#. server recommended version number. +#: wp-admin/includes/class-wp-site-health.php:1267 +msgid "For optimal performance and security reasons, you should consider running %1$s version %2$s or higher. Contact your web hosting company to correct this." +msgstr "為了效能最佳化及安全性考量,系統建議執行 %1$s %2$s 或更新版本。請聯絡這個網站的主機服務提供商修正這個問題。" + +#: wp-admin/includes/class-wp-site-health.php:1261 +msgid "Outdated SQL server" +msgstr "過時的 SQL 伺服器" + +#: wp-admin/includes/class-wp-site-health.php:1235 +msgid "SQL server is up to date" +msgstr "SQL 伺服器為最新版本" + +#: wp-admin/includes/class-wp-site-health.php:1126 +msgid "One or more required modules are missing" +msgstr "找不到一或多個必要模組" + +#: wp-admin/includes/class-wp-site-health.php:1123 +msgid "One or more recommended modules are missing" +msgstr "找不到一或多個建議模組" + +#. translators: %s: The module name. +#: wp-admin/includes/class-wp-site-health.php:1095 +msgid "The optional module, %s, is not installed, or has been disabled." +msgstr "選用的 %s 模組並未安裝,或是已遭停用。" + +#. translators: %s: The module name. +#: wp-admin/includes/class-wp-site-health.php:1086 +msgid "The required module, %s, is not installed, or has been disabled." +msgstr "必要的 %s 模組並未安裝,或是已遭停用。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-site-health.php:1083 +#: wp-admin/includes/class-wp-site-health.php:1352 +#: wp-admin/includes/class-wp-site-health.php:1769 +msgid "Error" +msgstr "發生錯誤" + +#: wp-admin/includes/class-wp-site-health.php:905 +msgid "Required and recommended modules are installed" +msgstr "必須安裝及建議安裝的模組均已安裝" + +#: wp-admin/includes/class-wp-site-health.php:712 +msgid "Your site does not have any default theme. Default themes are used by WordPress automatically if anything is wrong with your chosen theme." +msgstr "這個網站並未安裝預設佈景主題。預設佈景主題的用途,是使用中的佈景主題發生問題時,WordPress 可以自動套用預設佈景主題避免網站停擺。" + +#: wp-admin/includes/class-wp-site-health.php:708 +msgid "Have a default theme available" +msgstr "這個網站有可用的預設佈景主題" + +#. translators: 1: The default theme for WordPress. 2: The currently active +#. theme. 3: The active theme's parent theme. +#: wp-admin/includes/class-wp-site-health.php:656 +msgid "To enhance your site’s security, you should consider removing any themes you are not using. You should keep %1$s, the default WordPress theme, %2$s, your active theme, and %3$s, its parent theme." +msgstr "建議移除全部未使用的佈景主題以增加網站安全性。請保留 WordPress 預設佈景主題 %1$s、目前使用的佈景主題 %2$s 及其上層佈景主題 %3$s。" + +#. translators: 1: The currently active theme. 2: The active theme's parent +#. theme. +#: wp-admin/includes/class-wp-site-health.php:637 +msgid "To enhance your site’s security, you should consider removing any themes you are not using. You should keep your active theme, %1$s, and %2$s, its parent theme." +msgstr "建議移除全部未使用的佈景主題以增加網站安全性。請保留目前使用的佈景主題 %1$s 及其上層佈景主題 %2$s。" + +#: wp-admin/includes/class-wp-site-health.php:452 +msgid "You should remove inactive plugins" +msgstr "網站管理員應該移除未啟用的外掛" + +#. translators: %d: The number of themes. +#: wp-admin/includes/class-wp-site-health.php:598 +msgid "Your site has %d installed theme, and it is up to date." +msgid_plural "Your site has %d installed themes, and they are all up to date." +msgstr[0] "這個網站安裝了 %d 個佈景主題,且均為最新版本。" + +#. translators: %d: The number of outdated themes. +#: wp-admin/includes/class-wp-site-health.php:578 +msgid "Your site has %d theme waiting to be updated." +msgid_plural "Your site has %d themes waiting to be updated." +msgstr[0] "這個網站有 %d 個佈景主題需要更新。" + +#: wp-admin/includes/class-wp-site-health.php:572 +msgid "You have themes waiting to be updated" +msgstr "這個網站有佈景主題需要進行更新" + +#: wp-admin/includes/class-wp-site-health.php:499 +msgid "Themes add your site’s look and feel. It’s important to keep them up to date, to stay consistent with your brand and keep your site secure." +msgstr "佈景主題控制了網站的外觀與風格。持續為網站更新佈景主題、讓網站外觀與品牌精神保持一致及確保網站安全至關重要。" + +#: wp-admin/includes/class-wp-site-health.php:491 +msgid "Your themes are all up to date" +msgstr "這個網站的全部佈景主題均為最新版本" + +#. translators: %d: The number of active plugins. +#: wp-admin/includes/class-wp-site-health.php:430 +msgid "Your site has %d active plugin, and it is up to date." +msgid_plural "Your site has %d active plugins, and they are all up to date." +msgstr[0] "這個網站有 %d 個已啟用的外掛,且均為最新版本。" + +#. translators: %d: The number of outdated plugins. +#: wp-admin/includes/class-wp-site-health.php:405 +msgid "Your site has %d plugin waiting to be updated." +msgid_plural "Your site has %d plugins waiting to be updated." +msgstr[0] "這個網站有 %d 個外掛需要進行更新。" + +#: wp-admin/includes/class-wp-site-health.php:399 +msgid "You have plugins waiting to be updated" +msgstr "這個網站有外掛需要進行更新" + +#: wp-admin/includes/class-wp-site-health.php:365 +msgid "Plugins extend your site’s functionality with things like contact forms, ecommerce and much more. That means they have deep access to your site, so it’s vital to keep them up to date." +msgstr "外掛能擴充這個網站如聯絡表單、電子商務等功能,這同時代表外掛可以深度存取這個網站,因此持續為網站更新外掛至關重要。" + +#: wp-admin/includes/class-wp-site-health.php:357 +msgid "Your plugins are all up to date" +msgstr "這個網站的全部外掛均為最新版本" + +#: wp-admin/includes/class-wp-site-health.php:336 +msgid "You are currently running the latest version of WordPress available, keep it up!" +msgstr "這個網站目前執行的是 WordPress 最新版本,請持續為核心程式進行更新。" + +#: wp-admin/includes/class-wp-site-health.php:323 +msgid "A new minor update is available for your site. Because minor updates often address security, it’s important to install them." +msgstr "已有可供這個網站使用的新版次要更新。由於次要更新通常用於解決安全性問題,因此安裝次要更新有其必要性。" + +#: wp-admin/includes/class-wp-site-health.php:315 +msgid "A new version of WordPress is available." +msgstr "新版本的 WordPress 已可供下載安裝。" + +#: wp-admin/includes/class-wp-site-health.php:307 +msgid "Install the latest version of WordPress" +msgstr "安裝最新版本的 WordPress" + +#. translators: %s: The latest version of WordPress available. +#: wp-admin/includes/class-wp-site-health.php:300 +msgid "WordPress update available (%s)" +msgstr "WordPress 有可用更新 (%s)" + +#: wp-admin/includes/class-wp-site-health.php:287 +msgid "Check for updates manually" +msgstr "手動檢查更新" + +#: wp-admin/includes/class-wp-site-health.php:281 +msgid "Unable to check if any new versions of WordPress are available." +msgstr "目前無法檢查 WordPress 是否有可用的新版本。" + +#. translators: %s: Name of the filter used. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:472 +msgid "WordPress security and maintenance releases are blocked by the %s filter." +msgstr "WordPress 安全性維護版本已由 %s 篩選器所封鎖。" + +#. translators: %s: Name of the constant used. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:460 +msgid "WordPress security and maintenance releases are blocked by %s." +msgstr "WordPress 安全性維護版本已由 %s 常數所封鎖。" + +#. translators: %s: Name of the filter used. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:437 +msgid "WordPress development updates are blocked by the %s filter." +msgstr "WordPress 開發版更新已由 %s 篩選器所封鎖。" + +#. translators: %s: Name of the constant used. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:425 +msgid "WordPress development updates are blocked by the %s constant." +msgstr "WordPress 開發版更新已由 %s 常數所封鎖。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:400 +msgid "All of your WordPress files are writable." +msgstr "這個 WordPress 網站的檔案均可寫入。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:395 +msgid "Some files are not writable by WordPress:" +msgstr "WordPress 無法寫入的檔案:" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:369 +msgid "This could mean that connections are failing to WordPress.org." +msgstr "這代表目前無法與 WordPress.org 進行連線。" + +#. translators: %s: WordPress version. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:366 +msgid "Couldn't retrieve a list of the checksums for WordPress %s." +msgstr "無法擷取 WordPress %s 版的總和檢查碼清單。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:312 +msgid "Your installation of WordPress does not require FTP credentials to perform updates." +msgstr "這個 WordPress 網站執行更新時無須進行 FTP 認證。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:303 +msgid "(Your site is performing updates over FTP due to file ownership. Talk to your hosting company.)" +msgstr "(由於檔案擁有權的因素,這個網站正透過 FTP 方式進行更新。請與網站主機服務商洽詢。)" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:302 +msgid "Your installation of WordPress prompts for FTP credentials to perform updates." +msgstr "這個 WordPress 網站執行更新時會提示需要進行 FTP 認證。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:280 +msgid "No version control systems were detected." +msgstr "在這個網站上並未偵測到任何版本控制系統。" + +#. translators: 1: Folder name. 2: Version control directory. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:271 +msgid "The folder %1$s was detected as being under version control (%2$s)." +msgstr "偵測到 %1$s 資料夾已納入版本控制 (目錄為 %2$s)。" + +#. translators: 1: Folder name. 2: Version control directory. 3: Filter name. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:258 +msgid "The folder %1$s was detected as being under version control (%2$s), but the %3$s filter is allowing updates." +msgstr "偵測到 %1$s 資料夾已納入版本控制 (目錄為 %2$s),而 %3$s 篩選器允許對其進行更新。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:192 +msgid "A previous automatic background update could not occur." +msgstr "前次自動背景更新無法順利執行。" + +#. translators: %s: Code of error shown. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:183 +#: wp-admin/includes/class-wp-site-health-auto-updates.php:200 +msgid "The error code was %s." +msgstr "錯誤代碼為 %s。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:180 +msgid "When you've been able to update using the \"Update now\" button on Dashboard > Updates, this error will be cleared for future update attempts." +msgstr "當網站管理員能在 [控制台]→[更新] 中透過點擊 [立即更新] 按鈕進行更新時,系統會為將來的更新嘗試清除這項錯誤。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:179 +#: wp-admin/includes/class-wp-site-health-auto-updates.php:194 +msgid "You would have received an email because of this." +msgstr "網站管理員會因此而收到一封電子郵件。" + +#: wp-admin/includes/class-wp-site-health-auto-updates.php:178 +msgid "A previous automatic background update ended with a critical failure, so updates are now disabled." +msgstr "前次自動背景更新因嚴重錯誤而停止,因此更新功能目前已停用。" + +#. translators: %s: Name of the filter used. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:129 +msgid "The %s filter is enabled." +msgstr "%s 篩選器已啟用。" + +#. translators: %s: Name of the filter used. +#: wp-admin/includes/class-wp-site-health-auto-updates.php:105 +msgid "A plugin has prevented updates by disabling %s." +msgstr "停用 %s 篩選器便能禁止外掛更新。" + +#: wp-admin/includes/class-wp-debug-data.php:1829 +msgid "The must use plugins directory" +msgstr "mu-plugins 目錄" + +#: wp-admin/includes/class-wp-debug-data.php:1221 +msgid "Theme features" +msgstr "佈景主題特色" + +#: wp-admin/includes/class-theme-installer-skin.php:260 +#: wp-admin/includes/class-wp-debug-data.php:1216 +msgid "Parent theme" +msgstr "上層佈景主題" + +#: wp-admin/includes/class-wp-debug-data.php:1211 +#: wp-admin/includes/class-wp-debug-data.php:1331 +msgid "Author website" +msgstr "開發者網站" + +#. translators: %s: Latest WordPress version number. +#. translators: %s: Latest plugin version number. +#. translators: %s: Latest theme version number. +#: wp-admin/includes/class-wp-debug-data.php:163 +#: wp-admin/includes/class-wp-debug-data.php:1063 +#: wp-admin/includes/class-wp-debug-data.php:1168 +#: wp-admin/includes/class-wp-debug-data.php:1305 +#: wp-admin/includes/class-wp-debug-data.php:1451 +msgid "(Latest version: %s)" +msgstr "(目前最新版本為 %s 版)" + +#. translators: 1: Plugin version number. 2: Plugin author name. +#. translators: 1: Theme version number. 2: Theme author name. +#: wp-admin/includes/class-wp-debug-data.php:869 +#: wp-admin/includes/class-wp-debug-data.php:1045 +#: wp-admin/includes/class-wp-debug-data.php:1433 +msgid "Version %1$s by %2$s" +msgstr "%1$s 版,開發者為 %2$s" + +#: wp-admin/includes/class-wp-debug-data.php:864 +#: wp-admin/includes/class-wp-debug-data.php:1040 +#: wp-admin/includes/class-wp-debug-data.php:1428 +msgid "No version or author information is available." +msgstr "沒有可用的版本或開發者資訊。" + +#: wp-admin/includes/class-wp-debug-data.php:1717 +msgid "Server version" +msgstr "伺服器版本" + +#. translators: %s: .htaccess +#: wp-admin/includes/class-wp-debug-data.php:574 +msgid "Your %s file contains only core WordPress features." +msgstr "這個網站的 %s 檔案僅包含 WordPress 核心程式功能。" + +#. translators: %s: .htaccess +#: wp-admin/includes/class-wp-debug-data.php:571 +msgid "Custom rules have been added to your %s file." +msgstr "自訂規則已加入這個網站的 %s 檔案中。" + +#: wp-admin/includes/class-wp-debug-data.php:578 +msgid ".htaccess rules" +msgstr ".htaccess 規則" + +#: wp-admin/includes/class-wp-debug-data.php:469 +msgid "Is the Imagick library available?" +msgstr "主機是否提供 Imagick 程式庫" + +#: wp-admin/includes/class-wp-debug-data.php:460 +msgid "Is SUHOSIN installed?" +msgstr "主機是否已安裝 SUHOSIN" + +#: wp-admin/includes/class-wp-debug-data.php:445 +#: wp-admin/includes/class-wp-debug-data.php:450 +msgid "cURL version" +msgstr "cURL 版本" + +#: wp-admin/includes/class-wp-debug-data.php:436 +msgid "PHP post max size" +msgstr "PHP 單次上傳檔案大小總計上限" + +#: wp-admin/includes/class-wp-debug-data.php:432 +msgid "Upload max filesize" +msgstr "上傳單一檔案大小上限" + +#: wp-admin/includes/class-wp-debug-data.php:428 +msgid "Max input time" +msgstr "輸入資料剖析時間上限" + +#: wp-admin/includes/class-wp-debug-data.php:413 +#: wp-admin/includes/class-wp-debug-data.php:422 +msgid "PHP memory limit" +msgstr "PHP 可存取的記憶體上限" + +#: wp-admin/includes/class-wp-debug-data.php:407 +msgid "PHP time limit" +msgstr "PHP 執行時間上限" + +#: wp-admin/includes/class-wp-debug-data.php:403 +msgid "PHP max input variables" +msgstr "PHP 輸入變數上限" + +#. translators: %s: ini_get() +#: wp-admin/includes/class-wp-debug-data.php:396 +#: wp-admin/includes/class-wp-debug-data.php:684 +msgid "Unable to determine some settings, as the %s function has been disabled." +msgstr "無法確認某些設定 (例如 %s 函式) 是否遭到停用" + +#: wp-admin/includes/class-wp-debug-data.php:393 +msgid "Server settings" +msgstr "伺服器設定" + +#: wp-admin/includes/class-wp-debug-data.php:385 +msgid "PHP SAPI" +msgstr "PHP SAPI" + +#: wp-admin/includes/class-wp-debug-data.php:360 +msgid "(Does not support 64bit values)" +msgstr "(不支援 64 位元值)" + +#: wp-admin/includes/class-wp-debug-data.php:360 +msgid "(Supports 64bit values)" +msgstr "(支援 64 位元值)" + +#: wp-admin/includes/class-wp-debug-data.php:380 +msgid "PHP version" +msgstr "PHP 版本" + +#: wp-admin/includes/class-wp-debug-data.php:376 +msgid "Unable to determine what web server software is used" +msgstr "無法確認這個網站所採用的網頁伺服器軟體" + +#: wp-admin/includes/class-wp-debug-data.php:375 +msgid "Web server" +msgstr "網頁伺服器軟體" + +#: wp-admin/includes/class-wp-debug-data.php:371 +msgid "Unable to determine server architecture" +msgstr "無法確認主機的伺服器架構" + +#: wp-admin/includes/class-wp-debug-data.php:370 +msgid "Server architecture" +msgstr "伺服器架構" + +#: wp-admin/includes/class-wp-debug-data.php:837 +msgid "Ghostscript version" +msgstr "Ghostscript 版本" + +#: wp-admin/includes/class-wp-debug-data.php:832 +msgid "Unable to determine if Ghostscript is installed" +msgstr "無法確認主機是否安裝了 Ghostscript" + +#: wp-admin/includes/class-wp-debug-data.php:789 +msgid "GD version" +msgstr "GD 版本" + +#: wp-admin/includes/class-wp-debug-data.php:744 +msgid "Imagick Resource Limits" +msgstr "Imagick 資源限制" + +#: wp-admin/includes/class-wp-debug-data.php:668 +msgid "ImageMagick version string" +msgstr "ImageMagick 版本字串" + +#: wp-admin/includes/class-wp-debug-data.php:663 +msgid "ImageMagick version number" +msgstr "ImageMagick 版本號碼" + +#: wp-admin/includes/class-wp-debug-data.php:649 +msgid "Active editor" +msgstr "已啟用的圖片編輯程式" + +#: wp-admin/includes/class-wp-debug-data.php:966 +msgid "Total installation size" +msgstr "網站大小總計" + +#: wp-admin/includes/class-wp-debug-data.php:961 +msgid "Database size" +msgstr "資料庫大小" + +#: wp-admin/includes/class-wp-debug-data.php:920 +msgid "WordPress directory size" +msgstr "WordPress 安裝目錄大小" + +#: wp-admin/includes/class-wp-debug-data.php:916 +msgid "WordPress directory location" +msgstr "WordPress 安裝目錄位置" + +#: wp-admin/includes/class-wp-debug-data.php:947 +msgid "Plugins directory size" +msgstr "外掛安裝目錄大小" + +#: wp-admin/includes/class-wp-debug-data.php:943 +msgid "Plugins directory location" +msgstr "外掛安裝目錄位置" + +#: wp-admin/includes/class-wp-debug-data.php:938 +msgid "Themes directory size" +msgstr "佈景主題目錄大小" + +#: wp-admin/includes/class-wp-debug-data.php:1225 +#: wp-admin/includes/class-wp-debug-data.php:1336 +msgid "Theme directory location" +msgstr "佈景主題安裝目錄位置" + +#: wp-admin/includes/class-wp-debug-data.php:929 +msgid "Uploads directory size" +msgstr "已上傳檔案目錄大小" + +#: wp-admin/includes/class-wp-debug-data.php:925 +msgid "Uploads directory location" +msgstr "已上傳檔案目錄位置" + +#. translators: 1: The IP address WordPress.org resolves to. 2: The error +#. returned by the lookup. +#: wp-admin/includes/class-wp-debug-data.php:289 +msgid "Unable to reach WordPress.org at %1$s: %2$s" +msgstr "這個網站無法連線至位於 %1$s 的 WordPress.org (%2$s)" + +#: wp-admin/includes/class-wp-debug-data.php:281 +msgid "WordPress.org is reachable" +msgstr "這個網站可順利連線至 WordPress.org" + +#: wp-admin/includes/class-wp-debug-data.php:280 +#: wp-admin/includes/class-wp-debug-data.php:286 +#: wp-admin/includes/class-wp-site-health.php:2943 +msgid "Communication with WordPress.org" +msgstr "與 WordPress.org 間的通訊狀況" + +#: wp-admin/includes/class-wp-debug-data.php:265 +msgid "Network count" +msgstr "多站網路數量" + +#: wp-admin/includes/class-wp-debug-data.php:260 +msgid "Site count" +msgstr "網站數量" + +#: wp-admin/includes/class-wp-debug-data.php:271 +msgid "User count" +msgstr "可登入使用者人數" + +#: wp-admin/includes/class-wp-debug-data.php:1809 +msgid "The themes directory" +msgstr "themes 目錄" + +#: wp-admin/includes/class-wp-debug-data.php:1804 +msgid "The plugins directory" +msgstr "plugins 目錄" + +#: wp-admin/includes/class-wp-debug-data.php:1799 +msgid "The uploads directory" +msgstr "uploads 目錄" + +#: wp-admin/includes/class-wp-debug-data.php:1794 +msgid "The wp-content directory" +msgstr "wp-content 目錄" + +#: wp-admin/includes/class-wp-debug-data.php:1790 +#: wp-admin/includes/class-wp-debug-data.php:1795 +#: wp-admin/includes/class-wp-debug-data.php:1800 +#: wp-admin/includes/class-wp-debug-data.php:1805 +#: wp-admin/includes/class-wp-debug-data.php:1810 +#: wp-admin/includes/class-wp-debug-data.php:1816 +#: wp-admin/includes/class-wp-debug-data.php:1830 +msgid "Not writable" +msgstr "不可寫入" + +#: wp-admin/includes/class-wp-debug-data.php:1790 +#: wp-admin/includes/class-wp-debug-data.php:1795 +#: wp-admin/includes/class-wp-debug-data.php:1800 +#: wp-admin/includes/class-wp-debug-data.php:1805 +#: wp-admin/includes/class-wp-debug-data.php:1810 +#: wp-admin/includes/class-wp-debug-data.php:1816 +#: wp-admin/includes/class-wp-debug-data.php:1830 +msgid "Writable" +msgstr "可寫入" + +#: wp-admin/includes/class-wp-debug-data.php:1789 +msgid "The main WordPress directory" +msgstr "WordPress 主目錄" + +#: wp-admin/includes/class-wp-debug-data.php:1837 +msgid "Shows whether WordPress is able to write to the directories it needs access to." +msgstr "下列資訊顯示 WordPress 是否能對需要存取的目錄進行寫入。" + +#: wp-admin/includes/class-wp-debug-data.php:1836 +msgid "Filesystem Permissions" +msgstr "檔案系統權限" + +#: wp-admin/includes/class-wp-debug-data.php:1212 +#: wp-admin/includes/class-wp-debug-data.php:1332 +#: wp-admin/includes/class-wp-debug-data.php:1540 +#: wp-admin/includes/class-wp-debug-data.php:1549 +#: wp-admin/includes/class-wp-debug-data.php:1558 +#: wp-admin/includes/class-wp-debug-data.php:1567 +#: wp-admin/includes/class-wp-debug-data.php:1576 +#: wp-admin/includes/class-wp-debug-data.php:1588 +#: wp-admin/includes/class-wp-debug-data.php:1593 +#: wp-admin/includes/class-wp-debug-data.php:1664 +msgid "Undefined" +msgstr "未定義" + +#: wp-admin/includes/class-wp-debug-data.php:1680 +msgid "WordPress Constants" +msgstr "WordPress 常數" + +#: wp-admin/includes/class-wp-debug-data.php:1765 +msgid "Database" +msgstr "資料庫" + +#: wp-admin/includes/class-wp-debug-data.php:630 +msgid "The options shown below relate to your server setup. If changes are required, you may need your web host’s assistance." +msgstr "這個網站的伺服器設定值已顯示於下方。如需變更,請洽詢網站主機服務商要求提供協助。" + +#: wp-admin/includes/class-wp-debug-data.php:629 +msgid "Server" +msgstr "伺服器" + +#: wp-admin/includes/class-wp-debug-data.php:843 +msgid "Media Handling" +msgstr "媒體處理" + +#: wp-admin/includes/class-wp-debug-data.php:1003 +msgid "Inactive Plugins" +msgstr "未啟用的外掛" + +#: wp-admin/includes/class-wp-debug-data.php:988 +msgid "Active Plugins" +msgstr "已啟用的外掛" + +#: wp-admin/includes/class-wp-debug-data.php:893 +msgid "Must Use Plugins" +msgstr "強制使用的外掛" + +#: wp-admin/includes/class-wp-debug-data.php:1271 +#: wp-admin/includes/theme.php:858 wp-admin/themes.php:1084 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:960 +msgid "Active Theme" +msgstr "目前使用的佈景主題" + +#: wp-admin/includes/class-wp-debug-data.php:327 +msgid "Drop-ins" +msgstr "強化外掛" + +#. translators: Filesystem directory paths and storage sizes. +#: wp-admin/includes/class-wp-debug-data.php:974 +msgid "Directories and Sizes" +msgstr "目錄位置及大小" + +#: wp-admin/includes/class-wp-debug-data.php:209 +msgid "Is this a multisite?" +msgstr "是否啟用多站網路功能" + +#: wp-admin/includes/class-wp-debug-data.php:224 +msgid "Default comment status" +msgstr "留言功能目前狀態" + +#: wp-admin/includes/class-wp-debug-data.php:214 +msgid "Can anyone register on this site?" +msgstr "這個網站是否開放註冊" + +#: wp-admin/includes/class-wp-debug-data.php:204 +msgid "Is this site using HTTPS?" +msgstr "這個網站是否使用 HTTPS" + +#: wp-admin/includes/class-wp-debug-data.php:200 +msgid "No permalink structure set" +msgstr "尚未設定永久連結結構" + +#: wp-admin/includes/class-wp-debug-data.php:199 +#: wp-admin/options-permalink.php:329 +msgid "Permalink structure" +msgstr "永久連結結構" + +#: wp-admin/includes/class-wp-debug-data.php:194 +msgid "Site URL" +msgstr "網站網址" + +#: wp-admin/includes/class-wp-debug-data.php:189 +msgid "Home URL" +msgstr "首頁網址" + +#: wp-admin/site-health.php:101 +msgid "Site Health" +msgstr "網站狀態" + +#. translators: %s: Number of requests. +#: wp-admin/includes/class-wp-privacy-requests-table.php:163 +msgctxt "requests" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#: wp-admin/options-discussion.php:90 +msgid "Show comments cookies opt-in checkbox, allowing comment author cookies to be set" +msgstr "顯示接受留言功能 Cookie 的核取方塊,以便讓系統設定留言者 Cookie" + +#. translators: Hidden accessibility text. +#: wp-admin/theme-install.php:480 +msgid "Next theme" +msgstr "下一個佈景主題" + +#. translators: Hidden accessibility text. +#: wp-admin/theme-install.php:474 +msgid "Previous theme" +msgstr "上一個佈景主題" + +#: wp-admin/user-edit.php:565 +msgid "If you change this, an email will be sent at your new address to confirm it. The new address will not become active until confirmed." +msgstr "如果變更了這項設定,系統會傳送一封電子郵件至新地址進行確認。在完成確認前,無法使用新的電子郵件地址。" + +#: wp-admin/themes.php:309 +msgid "Theme resumed." +msgstr "佈景主題已恢復使用。" + +#: wp-admin/themes.php:318 +msgid "Theme could not be resumed because it triggered a fatal error." +msgstr "由於這個佈景主題會觸發嚴重錯誤,因此佈景主題並未恢復使用。" + +#: wp-admin/plugins.php:678 +msgid "If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin." +msgstr "如果網站顯示「headers already sent」訊息、內容訂閱資訊提供產生問題或發生其他問題,請試著停用或移除這個外掛。" + +#. translators: %d: Number of characters. +#: wp-admin/plugins.php:671 +msgid "The plugin generated %d character of unexpected output during activation." +msgid_plural "The plugin generated %d characters of unexpected output during activation." +msgstr[0] "這個外掛在啟用時產生了 %d 個未預期輸出字元。" + +#: wp-admin/plugins.php:451 +msgid "Sorry, you are not allowed to resume this plugin." +msgstr "很抱歉,目前的登入身分沒有恢復使用這個外掛的權限。" + +#. translators: %s: WordPress Planet URL. +#: wp-admin/index.php:97 +msgid "WordPress Events and News — Upcoming events near you as well as the latest news from the official WordPress project and the WordPress Planet." +msgstr "WordPress 活動及新聞 — 這個區塊會顯示使用者居住城市附近是否有即將舉辦的 WordPress 活動、來自 WordPress 官方專案及 WordPress Planet 的最新消息。" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: Minimum required MySQL version number, 4: Current MySQL version number. +#: wp-admin/update-core.php:133 wp-admin/upgrade.php:135 +msgid "You cannot update because WordPress %2$s requires MySQL version %3$s or higher. You are running version %4$s." +msgstr "由於 WordPress %2$s 需要 MySQL %3$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %4$s 版。" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: Minimum required PHP version number, 4: Current PHP version number. +#: wp-admin/update-core.php:124 wp-admin/upgrade.php:126 +msgid "You cannot update because WordPress %2$s requires PHP version %3$s or higher. You are running version %4$s." +msgstr "由於 WordPress %2$s 需要 PHP %3$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %4$s 版。" + +#: wp-admin/nav-menus.php:1069 +msgid "Add menu items" +msgstr "新增選單項目" + +#. translators: %s: URL to create a new menu. +#: wp-admin/nav-menus.php:1030 +msgid "or create a new menu. Do not forget to save your changes!" +msgstr "或為這個網站建立選單。請記得要儲存已進行的變更。" + +#. translators: Hidden accessibility text. +#: wp-admin/nav-menus.php:975 wp-admin/nav-menus.php:1045 +msgid "Click the Save Menu button to save your changes." +msgstr "點擊 [儲存選單] 按鈕以儲存變更。" + +#. translators: %s: URL to create a new menu. +#: wp-admin/nav-menus.php:960 +msgid "Edit your menu below, or create a new menu. Do not forget to save your changes!" +msgstr "請在下方編輯這個網站的選單,或為這個網站建立選單。請記得要儲存已進行的變更。" + +#. translators: Hidden accessibility text. +#: wp-admin/nav-menus.php:951 +msgid "Fill in the Menu Name and click the Create Menu button to create your first menu." +msgstr "輸入選單名稱並點擊 [建立選單] 按鈕便能建立這個網站的第一個選單。" + +#: wp-admin/nav-menus.php:947 +msgid "Create your first menu below." +msgstr "請在下方建立第一個選單。" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: Minimum required MySQL version number, 4: Current MySQL version number. +#: wp-admin/install.php:281 +msgid "You cannot install because WordPress %2$s requires MySQL version %3$s or higher. You are running version %4$s." +msgstr "由於 WordPress %2$s 需要 MySQL %3$s 或更新版本,因此無法進行安裝。這個網站目前執行的是 %4$s 版。" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: Minimum required PHP version number, 4: Current PHP version number. +#: wp-admin/install.php:272 +msgid "You cannot install because WordPress %2$s requires PHP version %3$s or higher. You are running version %4$s." +msgstr "由於 WordPress %2$s 需要 PHP %3$s 或更新版本,因此無法進行安裝。這個網站目前執行的是 %4$s 版。" + +#: wp-admin/includes/class-wp-site-health.php:747 +#: wp-admin/includes/dashboard.php:1932 +msgid "Learn more about updating PHP" +msgstr "進一步了解更新 PHP 執行環境" + +#: wp-admin/includes/dashboard.php:1913 +msgid "What is PHP and how does it affect my site?" +msgstr "什麼是 PHP 執行環境,以及它對網站的影響?" + +#: wp-admin/includes/dashboard.php:50 +msgid "PHP Update Required" +msgstr "PHP 執行環境必須更新" + +#: wp-admin/includes/plugin.php:2571 +msgid "You can find more details and make changes on the Plugins screen." +msgstr "在 [外掛] 畫面可以找到進一步詳細資料並進行變更。" + +#: wp-admin/includes/plugin.php:2570 +msgid "One or more plugins failed to load properly." +msgstr "一或多個外掛無法正確載入。" + +#: wp-admin/includes/plugin.php:2540 +msgid "Could not resume the plugin." +msgstr "無法恢復使用外掛" + +#: wp-admin/includes/plugin.php:509 +msgid "Custom PHP fatal error handler." +msgstr "自訂 PHP 嚴重錯誤處理常式。" + +#: wp-admin/includes/plugin.php:508 +msgid "Custom PHP error message." +msgstr "自訂 PHP 錯誤訊息。" + +#: wp-admin/includes/class-language-pack-upgrader.php:122 +msgid "Could not remove the old translation." +msgstr "無法移除舊版語言套件。" + +#: wp-admin/includes/class-language-pack-upgrader.php:121 +msgid "Removing the old version of the translation…" +msgstr "正在移除舊版語言套件..." + +#. translators: %s: URL to WordPress Updates screen. +#: wp-admin/includes/plugin-install.php:843 +msgid "Click here to update WordPress." +msgstr "點擊這裡以更新 WordPress。" + +#: wp-admin/includes/plugin-install.php:839 +msgid "Error: This plugin requires a newer version of WordPress." +msgstr "錯誤: 這個外掛需要較新版本的 WordPress。" + +#. translators: %s: URL to Update PHP page. +#: wp-admin/includes/plugin-install.php:813 +msgid "Click here to learn more about updating PHP." +msgstr "點擊這裡以進一步了解更新 PHP 執行環境。" + +#: wp-admin/includes/plugin-install.php:808 +msgid "Error: This plugin requires a newer version of PHP." +msgstr "錯誤: 這個外掛需要較新版本的 PHP 執行環境。" + +#. translators: Hidden accessibility text. %s: Widget title. +#: wp-admin/includes/widgets.php:257 +msgid "Add widget: %s" +msgstr "新增小工具: %s" + +#. translators: %s: Widgets sidebar name. +#: wp-admin/includes/widgets.php:97 +msgid "Add to: %s" +msgstr "新增至 [%s]" + +#. translators: Audio file track information. %s: Audio track number. +#: wp-admin/includes/media.php:379 +msgid "Track %s." +msgstr "音軌 %s。" + +#: wp-admin/includes/schema.php:1320 +msgid "My Network" +msgstr "我的多站網路" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:640 +#: wp-admin/includes/class-wp-plugins-list-table.php:1470 +msgid "This plugin does not work with your version of PHP." +msgstr "這個外掛無法執行於目前版本的 PHP 執行環境。" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:631 +#: wp-admin/includes/class-wp-plugins-list-table.php:1461 +msgid "This plugin does not work with your version of WordPress." +msgstr "這個外掛無法執行於目前版本的 WordPress。" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:607 +#: wp-admin/includes/class-wp-plugins-list-table.php:1437 +msgid "This plugin does not work with your versions of WordPress and PHP." +msgstr "這個外掛無法執行於目前版本的 WordPress 及 PHP 執行環境。" + +#. translators: %s: WordPress version number. +#. translators: %s: WordPress version. +#: wp-admin/about.php:21 wp-admin/includes/update.php:321 +#: wp-admin/index.php:119 wp-admin/install.php:242 wp-admin/update-core.php:94 +#: wp-admin/upgrade.php:96 +msgid "https://wordpress.org/documentation/wordpress-version/version-%s/" +msgstr "https://wordpress.org/documentation/wordpress-version/version-%s/" + +#: wp-admin/includes/class-wp-plugins-list-table.php:952 +#: wp-admin/themes.php:716 +msgid "Resume" +msgstr "恢復使用" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-plugins-list-table.php:951 +msgctxt "plugin" +msgid "Resume %s" +msgstr "恢復使用 %s" + +#: wp-admin/includes/theme.php:1241 +msgid "You can find more details and make changes on the Themes screen." +msgstr "在 [佈景主題] 畫面可以找到進一步詳細資料並進行變更。" + +#: wp-admin/includes/theme.php:1240 +msgid "One or more themes failed to load properly." +msgstr "一或多個佈景主題無法正確載入。" + +#: wp-admin/includes/theme.php:1210 +msgid "Could not resume the theme." +msgstr "無法恢復使用佈景主題。" + +#. translators: %s: Default category. +#: wp-admin/edit-tags.php:632 +msgid "Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the default category %s. The default category cannot be deleted." +msgstr "刪除分類時,不會刪除隸屬於該分類的文章,但是會將這些已無分類的文章指派為〈%s〉這項預設分類。預設分類無法刪除。" + +#. translators: %s: A link to install the Classic Widgets plugin. +#: wp-admin/widgets-form-blocks.php:114 +msgid "The block widgets require JavaScript. Please enable JavaScript in your browser settings, or install the Classic Widgets plugin." +msgstr "區塊小工具需要 JavaScript 才能使用。請啟用瀏覽器的 JavaScript 設定,或安裝傳統小工具外掛。" + +#: wp-admin/post.php:47 +msgid "A post type mismatch has been detected." +msgstr "系統偵測到不相符的內容類型。" + +#: wp-admin/includes/class-wp-screen.php:299 wp-admin/post.php:20 +msgid "A post ID mismatch has been detected." +msgstr "系統偵測到不相符的文章 ID。" + +#. translators: %s: A link to use the Classic Editor plugin. +#: wp-admin/includes/template.php:1234 +msgid "Please open the classic editor to use this meta box." +msgstr "請開啟傳統編輯器以使用這個中繼資料區塊。" + +#. translators: %s: A link to activate the Classic Editor plugin. +#: wp-admin/includes/template.php:1221 +msgid "Please activate the Classic Editor plugin to use this meta box." +msgstr "請啟用傳統編輯器以使用這個中繼資料區塊。" + +#. translators: %s: A link to install the Classic Editor plugin. +#: wp-admin/includes/template.php:1209 +msgid "Please install the Classic Editor plugin to use this meta box." +msgstr "請安裝傳統編輯器以使用這個中繼資料區塊。" + +#: wp-admin/includes/template.php:1196 +msgid "This meta box is not compatible with the block editor." +msgstr "這個中繼資料區塊與區塊編輯器不相容。" + +#: wp-admin/freedoms.php:87 +msgid "To distribute copies of your modified versions to others." +msgstr "將經過修改的版本發佈共享給其他人。" + +#: wp-admin/freedoms.php:86 +msgid "The 4th Freedom" +msgstr "第四項自由" + +#: wp-admin/freedoms.php:82 +msgid "To redistribute." +msgstr "可重新發佈。" + +#: wp-admin/freedoms.php:81 +msgid "The 3rd Freedom" +msgstr "第三項自由" + +#: wp-admin/freedoms.php:77 +msgid "To study how the program works and change it to make it do what you wish." +msgstr "學習程式運作原理,並對它加以變更以使它按照個人規劃方式執行。" + +#: wp-admin/freedoms.php:76 +msgid "The 2nd Freedom" +msgstr "第二項自由" + +#: wp-admin/freedoms.php:72 +msgid "To run the program for any purpose." +msgstr "可將程式執行於任何用途。" + +#: wp-admin/freedoms.php:71 +msgid "The 1st Freedom" +msgstr "第一項自由" + +#: wp-admin/includes/class-wp-application-passwords-list-table.php:29 +msgid "Created" +msgstr "建立日期" + +#. translators: First post content. %s: Site link. +#: wp-admin/includes/upgrade.php:235 +msgid "Welcome to WordPress. This is your first post. Edit or delete it, then start writing!" +msgstr "歡迎使用 WordPress。這是這個網站的第一篇文章,試試為這篇文章進行編輯或直接刪除,然後開始撰寫新文章!" + +#. translators: First page content. %s: Site admin URL. +#: wp-admin/includes/upgrade.php:336 +msgid "As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!" +msgstr "身為一位新的 WordPress 使用者,請前往控制台刪除這個頁面,並建立屬於自己的頁面。祝使用愉快!" + +#. translators: First page content. +#: wp-admin/includes/upgrade.php:330 +msgid "The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community." +msgstr "XYZ Doohickey Comany 成立於 1971 年,公司成立以來,我們一直為大眾提供高品質的網站客製化服務。目前公司位於台北市,有超過 2,000 名員工,並持續為開源社群提供資源及場地。" + +#. translators: First page content. +#: wp-admin/includes/upgrade.php:325 +msgid "...or something like this:" +msgstr "或是像這樣:" + +#. translators: First page content. +#: wp-admin/includes/upgrade.php:320 +msgid "Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin' caught in the rain.)" +msgstr "嗨,你好!白天我是一位郵差,晚上則是個滿懷抱負的演員,這是用來展現自我的網站。我住在高雄,養了一隻極通人性的狗叫小黑;最愛喝啤酒,目標是為市面上買的到的所有啤酒都寫一篇評論。" + +#. translators: First page content. +#: wp-admin/includes/upgrade.php:315 +msgid "This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:" +msgstr "這是一個範例頁面。頁面與網站文章不同,因為它顯示的位置為固定位置,並且大多數的佈景主題會將它顯示在網站導覽選單中。大多數人會新增一個〈關於〉頁面,以便向網站訪客介紹自己。〈關於〉頁面的內容類似以下示範:" + +#. translators: %s: Post title. +#: wp-admin/includes/class-wp-posts-list-table.php:1570 +msgid "Export “%s” as JSON" +msgstr "將〈%s〉匯出為 JSON 檔案" + +#: wp-admin/edit.php:386 +msgid "1 pattern not updated, somebody is editing it." +msgstr "由於某個使用者正在進行編輯,所以有 1 個區塊版面配置未更新。" + +#. translators: %s: Number of patterns. +#: wp-admin/edit.php:394 +msgid "%s pattern restored from the Trash." +msgid_plural "%s patterns restored from the Trash." +msgstr[0] "%s 個區塊版面配置已從回收桶還原。" + +#: wp-admin/setup-config.php:305 +msgid "Error: \"Table Prefix\" must not be empty." +msgstr "錯誤: 資料表前置詞不得留空。" + +#. translators: %s: The name of the plugin that generated this meta box. +#: wp-admin/includes/template.php:1194 wp-admin/includes/template.php:1446 +msgid "This meta box, from the %s plugin, is not compatible with the block editor." +msgstr "%s 外掛的中繼資料欄位與區塊編輯器不相容。" + +#. translators: Header for the About section in a personal data export. +#: wp-admin/includes/privacy-tools.php:368 +msgctxt "personal data group label" +msgid "About" +msgstr "關於這份個人資料" + +#. translators: Page title of the About WordPress page in the admin. +#: wp-admin/about.php:14 +msgctxt "page title" +msgid "About" +msgstr "關於 WordPress" + +#. translators: 1: URL to edit Privacy Policy page, 2: URL to preview Privacy +#. Policy page. +#: wp-admin/options-privacy.php:228 +msgid "Edit or preview your Privacy Policy page content." +msgstr "編輯預覽這個網站的隱私權政策頁面內容。" + +#: wp-admin/includes/file.php:40 +msgid "Privacy Policy Page" +msgstr "隱私權政策頁面" + +#. translators: %s: Page title. +#: wp-admin/includes/misc.php:1558 +msgid "%s (Draft)" +msgstr "%s (草稿)" + +#: wp-admin/options-privacy.php:57 +msgid "Privacy Policy page updated successfully." +msgstr "隱私權政策頁面已成功更新。" + +#. translators: %s: admin_init +#: wp-admin/includes/plugin.php:2427 +msgid "The suggested privacy policy content should be added by using the %s (or later) action. Please see the inline documentation." +msgstr "建議的隱私權內容必須使用 %s (或更新) 動作加入。請查看檔案內的註解。" + +#. translators: %s: admin_init +#: wp-admin/includes/plugin.php:2416 +msgid "The suggested privacy policy content should be added only in wp-admin by using the %s (or later) action." +msgstr "建議的隱私權內容僅可在 wp-admin 使用 %s (或更新) 動作加入。" + +#. translators: %s: Privacy Policy Guide URL. +#: wp-admin/includes/class-wp-privacy-policy-content.php:143 +msgid "The suggested privacy policy text has changed. Please review the guide and update your privacy policy." +msgstr "隱私權政策的建議內容已變更,請檢閱這份指南並更新這個網站的隱私權政策。" + +#: wp-admin/options-privacy.php:267 +msgid "There are no pages." +msgstr "這個網站尚無任何頁面。" + +#. translators: 1: Privacy Policy guide URL, 2: Additional link attributes, 3: +#. Accessibility text. +#: wp-admin/options-privacy.php:239 +msgid "Need help putting together your new Privacy Policy page? Check out the privacy policy guide%3$s for recommendations on what content to include, along with policies suggested by your plugins and theme." +msgstr "制訂隱私權政策時如需協助,請參考這份隱私權政策指南%3$s,以便了解必要內容的建議,以及針對網站採用的外掛及佈景主題的建議政策。" + +#: wp-admin/privacy-policy-guide.php:21 wp-admin/privacy-policy-guide.php:74 +#: wp-admin/privacy-policy-guide.php:83 +msgid "Privacy Policy Guide" +msgstr "隱私權政策指南" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:607 +msgid "Visitor comments may be checked through an automated spam detection service." +msgstr "使用者留言資料會傳送至垃圾留言自動偵測服務進行檢查。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:555 +msgid "In this subsection you should note what analytics package you use, how users can opt out of analytics tracking, and a link to your analytics provider’s privacy policy, if any." +msgstr "在這個小節中,站方應該說明這個網站使用的使用者資料分析工具、使用者退出分析追蹤的方式,以及指向使用者資料分析服務提供商隱私權政策的連結 (如果有的話)。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:512 +msgid "In this subsection you should note what information may be disclosed by users who can upload media files. All uploaded files are usually publicly accessible." +msgstr "在這個小節中,站方應該說明使用者上傳媒體檔案後會公開哪些資訊。一般來說,全部上傳至網站的檔案都可以公開存取。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:499 +msgid "In this subsection you should note what information is captured through comments. We have noted the data which WordPress collects by default." +msgstr "在這個小節中,站方應該說明網站會透過使用者留言擷取哪些個人資訊。以下內容說明了 WordPress 預設會收集的個人資訊。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:483 +msgid "In this section you should note what personal data you collect from users and site visitors. This may include personal data, such as name, email address, personal account preferences; transactional data, such as purchase information; and technical data, such as information about cookies." +msgstr "在這個章節中,站方應該注意的是從使用者及網站訪客收集了哪些個人資料。這些個人資料可能包含如姓名、電子郵件地址、個人帳戶偏好設定、交易資料 (如購買資訊) 及技術資料 (如 Cookie 中的資訊)。" + +#: wp-admin/includes/class-wp-privacy-policy-content.php:457 +msgid "Suggested text:" +msgstr "建議內容:" + +#: wp-admin/privacy-policy-guide.php:77 +msgid "The template contains a suggestion of sections you most likely will need. Under each section heading, you will find a short summary of what information you should provide, which will help you to get started. Some sections include suggested policy content, others will have to be completed with information from your theme and plugins." +msgstr "這份範本包含這個網站的隱私權政策頁面最可能需要的建議章節。在各個章節標題下方,會列出隱私權頁面應該提供哪些資訊的簡短摘要,這對撰寫相關內容應會有所幫助。某些章節會包含建議的隱私權政策內容,其他不含內容的章節則必須使用佈景主題及外掛所提供的內容。" + +#. translators: %s: Date of privacy policy text update. +#: wp-admin/includes/class-wp-privacy-policy-content.php:408 +msgid "Updated %s." +msgstr "已於 %s更新" + +#. translators: %s: Date of plugin deactivation. +#: wp-admin/includes/class-wp-privacy-policy-content.php:396 +msgid "You deactivated this plugin on %s and may no longer need this policy." +msgstr "這個外掛已在 %s 停用,因此這個網站不再需要這項隱私權政策。" + +#. translators: %s: Date of plugin deactivation. +#: wp-admin/includes/class-wp-privacy-policy-content.php:393 +msgid "Removed %s." +msgstr "已於 %s移除。" + +#: wp-admin/privacy-policy-guide.php:75 +msgid "Introduction" +msgstr "簡介" + +#: wp-admin/includes/class-wp-privacy-policy-content.php:336 +msgid "Need help putting together your new Privacy Policy page? Check out the guide for recommendations on what content to include, along with policies suggested by your plugins and theme." +msgstr "制訂隱私權政策時如需協助,請參考這份指南,以便了解必要內容的建議,以及針對網站採用的外掛及佈景主題的建議政策。" + +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:66 +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:140 +msgid "Erasing data..." +msgstr "正在清除個人資料..." + +#: wp-admin/erase-personal-data.php:114 +msgid "Add Data Erasure Request" +msgstr "新增個人資料清除要求" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:133 +msgid "Send export link" +msgstr "傳送匯出資料連結" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:656 +msgid "If you are a member of a regulated industry, or if you are subject to additional privacy laws, you may be required to disclose that information here." +msgstr "如果貴單位經營的是受監管行業,或貴單位需要遵守其他隱私權法規的規範,請在這裡公開這些資訊。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:654 +msgid "Industry regulatory disclosure requirements" +msgstr "監管行業揭露需求" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:649 +msgid "If your website provides a service which includes automated decision making - for example, allowing customers to apply for credit, or aggregating their data into an advertising profile - you must note that this is taking place, and include information about how that information is used, what decisions are made with that aggregated data, and what rights users have over decisions made without human intervention." +msgstr "如果這個網站提供的服務包含自動化決策 (例如能讓客戶申請信用貸款或將使用者資料進行廣告資料歸戶),站方必須說明網站正在執行這些工作,並說明站方如何使用這些資訊、使用這些歸戶資料做出哪些決策,以及使用者能在沒有人為干預的情況下做出決策的權利。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:647 +msgid "What automated decision making and/or profiling we do with user data" +msgstr "這個網站對使用者個人資料進行了哪些自動化決策或分析" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:642 +msgid "If your website receives data about users from third parties, including advertisers, this information must be included within the section of your privacy policy dealing with third party data." +msgstr "如果這個網站會從第三方 (包含廣告客戶) 處收到使用者相關資料,在如何處理第三方資訊的隱私權政策章節中必須說明相關資訊。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:640 +msgid "What third parties we receive data from" +msgstr "這個網站會從第三方接收哪些個人資料" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:635 +msgid "In this section you should explain what procedures you have in place to deal with data breaches, either potential or real, such as internal reporting systems, contact mechanisms, or bug bounties." +msgstr "在這個章節中,站方應該說明網站已採取哪些措施處理潛在或實際的資料外洩,例如內部報告系統、相關聯絡機制或資安弱點獎金計畫。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:633 +msgid "What data breach procedures we have in place" +msgstr "這個網站會採取的個人資料外洩處理程序" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:628 +msgid "In this section you should explain what measures you have taken to protect your users’ data. This could include technical measures such as encryption; security measures such as two factor authentication; and measures such as staff training in data protection. If you have carried out a Privacy Impact Assessment, you can mention it here too." +msgstr "在這個章節中,站方應該說明為保護使用者資料所採取的措施,這些措施包含資料加密、兩步驟驗證、以及對員工進行資料保護訓練。如果貴單位已經進行過隱私風險評估,也可以在這裡簡短說明。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:626 +msgid "How we protect your data" +msgstr "這個網站保護個人資料的方式" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:621 +msgid "If you use your site for commercial purposes and you engage in more complex collection or processing of personal data, you should note the following information in your privacy policy in addition to the information we have already discussed." +msgstr "如果站方將這個網站用於商業目的,並且站方對個人資料進行更複雜的收集或處理,除了上述已經討論過的資訊外,站方還應該在隱私權政策中說明以下資訊。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:619 +msgid "Additional information" +msgstr "其他資訊" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:614 +msgid "In this section you should provide a contact method for privacy-specific concerns. If you are required to have a Data Protection Officer, list their name and full contact details here as well." +msgstr "在這個章節中,站方應該提供針對隱私特定問題的聯絡方式。如果貴單位設有資料保護長,請在這裡列出其姓名及完整的聯絡方式。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:604 +msgid "European data protection law requires data about European residents which is transferred outside the European Union to be safeguarded to the same standards as if the data was in Europe. So in addition to listing where data goes, you should describe how you ensure that these standards are met either by yourself or by your third party providers, whether that is through an agreement such as Privacy Shield, model clauses in your contracts, or binding corporate rules." +msgstr "如需將歐盟居民的資料移轉到歐盟境外,歐盟資料保護法規要求其資料保護必須採用與歐盟相同的標準。因此除了必須列出資料儲存位置之外,站方還必須說明自己或第三方服務提供商達到這些標準的方式,無論這些標準是通過隱私盾協議、模型合約條文或具備法律效力的公司規則。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:602 +msgid "In this section you should list all transfers of your site data outside the European Union and describe the means by which that data is safeguarded to European data protection standards. This could include your web hosting, cloud storage, or other third party services." +msgstr "在這個章節中,站方應該列出這個網站在歐盟境外的全部網站資料傳輸,並說明這些資料受歐洲資料保護標準保護的方式。這些資訊包含這個網站使用的虛擬主機、雲端儲存或第三方服務。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:594 +msgid "If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes." +msgstr "如果使用者在這個網站擁有帳戶或曾發佈留言,便可以要求下載使用者在這個網站上的個人資料的資料匯出檔,這個檔案包含使用者提供給這個網站的全部個人資料。使用者也可以要求清除曾提供給這個網站的全部個人資料,但這項要求不包含站方為了管理、法律或安全目的而必須保留的相關資料。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:591 +msgid "In this section you should explain what rights your users have over their data and how they can invoke those rights." +msgstr "在這個章節中,站方應該解釋使用者對其個人資料所擁有的權利及如何行使這些權利的方式。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:587 +msgid "What rights you have over your data" +msgstr "使用者對個人資料擁有哪些權利" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:583 +msgid "For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information." +msgstr "針對在這個網站上註冊的使用者,這個網站還會儲存他們在使用者 [個人資料] 頁面中提供的個人資訊。全部使用者都可以隨時查看、編輯或刪除自己的個人資訊 (無法變更的使用者名稱除外)。請注意,網站管理員也可以查看及編輯這些個人資訊。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:581 +msgid "If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue." +msgstr "當使用者在這個網站發佈留言後,該則留言及其中繼資料將會無限期保留。這樣系統便可以自動辨識及核准任何後續留言,而不須將其保留在待審核的佇列中。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:578 +msgid "In this section you should explain how long you retain personal data collected or processed by the website. While it is your responsibility to come up with the schedule of how long you keep each dataset for and why you keep it, that information does need to be listed here. For example, you may want to say that you keep contact form entries for six months, analytics records for a year, and customer purchase records for ten years." +msgstr "在這個章節中,站方應該解釋這個網站收集或處理個人資料的保留期限。站方有責任列出每項資料集的保留時間表及保留資料集的原因,這些資訊必須在這裡列出。舉例來說,站方希望保留 6 個月的聯絡表單資料、1 年的分析記錄及 10 年的客戶購買記錄。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:574 +msgid "How long we retain your data" +msgstr "這個網站的個人資料保留期限" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:567 +msgid "By default WordPress does not share any personal data with anyone." +msgstr "WordPress 預設不會與任何單位分享網站上的個人資料。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:565 +msgid "In this section you should name and list all third party providers with whom you share site data, including partners, cloud-based services, payment processors, and third party service providers, and note what data you share with them and why. Link to their own privacy policies if possible." +msgstr "在這個章節中,應列出與站方分享網站資料的全部第三方服務提供商,包含合作夥伴、雲端服務提供商、付款處理服務提供商及第三方服務提供商,並說明站方與他們分享了哪些資料及其原因。如果這些第三方服務商提供了自己的隱私權政策內容,請在這裡加入這些內容的連結。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:561 +msgid "Who we share your data with" +msgstr "這個網站的個人資料分享對象" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:557 +msgid "By default WordPress does not collect any analytics data. However, many web hosting accounts collect some anonymous analytics data. You may also have installed a WordPress plugin that provides analytics services. In that case, add information from that plugin here." +msgstr "WordPress 預設不會收集任何分析資料,但是許多虛擬主機帳號會收集匿名分析數據。如果站方為網站上安裝了提供分析服務的 WordPress 外掛,請針對這種狀況在這裡加入外掛所提供的資訊。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:553 +msgid "Analytics" +msgstr "使用者資料分析" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:548 +msgid "These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website." +msgstr "無論使用者是否有這些第三方網站的帳號或是否登入網站,他們都會以各種方式收集與使用者相關的資料,如 Cookie、嵌入第三方追蹤程式碼、監視使用者與嵌入內容的互動等。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:546 +msgid "Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website." +msgstr "這個網站上的文章可能會嵌入視訊、圖片、文章等內容,而來自第三方網站的嵌入內容,其隱私權處理方式與使用者造訪這些網站時的規定完全相同。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:544 +msgid "Embedded content from other websites" +msgstr "來自第三方網站的嵌入內容" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:539 +msgid "If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day." +msgstr "使用者編輯或發佈文章時,會在瀏覽器中儲存其他 Cookie。這個 Cookie 不包含任何個人資料,僅記錄表示使用者撰寫的文章的文章 ID,並會在一天後到期。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:537 +msgid "When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed." +msgstr "使用者登入網站後,系統會設定幾個 Cookie 以儲存使用者的登入資訊及顯示項目設定;登入資訊 Cookie 會保留兩天,顯示項目設定 Cookie 則會保留一年。如果登入時核取了 [保持登入] 這項設定,使用者的登入狀態會維持兩週;帳號登出後,便會移除使用者裝置上的登入資訊 Cookie。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:535 +msgid "If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser." +msgstr "如果使用者造訪這個網站的登入頁面,系統會設定一個臨時 Cookie 以確定使用者的瀏覽器是否接受 Cookie;這個 Cookie 不包含任何個人資料,並會在使用者關閉瀏覽器時捨棄。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:533 +msgid "If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year." +msgstr "使用者在這個網站發佈留言時,可以選擇是否在 Cookie 中儲存使用者姓名、電子郵件地址及網站網址;儲存這些資料是為了使用者更加方便,以便讓使用者發佈其他留言時,無需再次填寫個人資料。在使用者不自行清除裝置 Cookie 的狀況下,這些 Cookie 在個人裝置上保留一年。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:530 +msgid "In this subsection you should list the cookies your website uses, including those set by your plugins, social media, and analytics. We have provided the cookies which WordPress installs by default." +msgstr "在這個小節中,站方應該列出這個網站所使用的 Cookie,包含這個網站安裝的外掛、社交網路服務媒體及使用者資料分析工具會使用到的 Cookie。以下內容說明了 WordPress 預設會使用的 Cookie。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:526 +msgid "Cookies" +msgstr "Cookie" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:504 +msgid "An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment." +msgstr "這個網站會依據使用者的電子郵件地址建立匿名化字串 (亦稱為雜湊值),並提供給 Gravatar 個人頭像服務以查詢這個使用者是否為這項服務的使用者。如需了解 Gravatar 個人頭像服務的隱私權政策,請造訪 https://automattic.com/privacy/。網站管理員核准使用者發佈的留言後,使用者的個人資料圖片便會在留言內容中公開顯示。" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:502 +msgid "When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection." +msgstr "使用者在這個網站發佈留言後,我們會收集顯示於留言表單中的資料、使用者的來源 IP 位址及瀏覽器的使用者代理程式字串,以協助網站偵測垃圾留言。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:522 +msgid "By default, WordPress does not include a contact form. If you use a contact form plugin, use this subsection to note what personal data is captured when someone submits a contact form, and how long you keep it. For example, you may note that you keep contact form submissions for a certain period for customer service purposes, but you do not use the information submitted through them for marketing purposes." +msgstr "WordPress 預設沒有內建聯絡表單功能。如果這個網站使用了聯絡表單外掛,請在這個小節說明使用者傳送聯絡表單至站方後,網站會擷取哪些個人資料及相關資料保存週期。舉例來說,站方需要說明基於客戶服務的目的,站方將保留聯絡表單內的個人資料一段時間,但不會將這些資料用於行銷用途。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:520 +msgid "Contact forms" +msgstr "聯絡表單" + +#. translators: Default privacy policy text. +#: wp-admin/includes/class-wp-privacy-policy-content.php:515 +msgid "If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website." +msgstr "如需將圖片上傳至這個網站,請避免上傳內嵌 EXIF GPS 位置資料的圖片,因為其他使用者可以從網站上下載圖片並擷取當中的位置資料。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:491 +msgid "By default WordPress does not collect any personal data about visitors, and only collects the data shown on the User Profile screen from registered users. However some of your plugins may collect personal data. You should add the relevant information below." +msgstr "WordPress 預設不會收集任何訪客的個人資料,僅會收集註冊使用者填寫於 [個人資料] 頁面的資料。需要注意的是,網站上安裝的某些外掛可能會收集個人資料,站方應於下方加入相關資訊。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:489 +msgid "Personal data is not just created by a user’s interactions with your site. Personal data is also generated from technical processes such as contact forms, comments, cookies, analytics, and third party embeds." +msgstr "個人資料不僅僅只會由使用者與網站之間的互動所建立,也會產生自技術流程,例如聯絡表單、留言、Cookie、分析及第三方嵌入內容。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:487 +msgid "In addition to listing what personal data you collect, you need to note why you collect it. These explanations must note either the legal basis for your data collection and retention or the active consent the user has given." +msgstr "除了列出網站會收集的個人資料外,站方還需要說明收集這些資料的原因,而這些內容必須說明站方收集及保留個人資料/使用者主動提供的內容的法律依據。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:485 +msgid "You should also note any collection and retention of sensitive personal data, such as data concerning health." +msgstr "同時也要注意任何敏感個人資料的收集及保留,例如個人健康狀況的相關資料。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:481 +msgid "What personal data we collect and why we collect it" +msgstr "這個網站收集了哪些個人資訊,以及為什麼要收集這些資訊" + +#. translators: Default privacy policy text. %s: Site URL. +#: wp-admin/includes/class-wp-privacy-policy-content.php:476 +msgid "Our website address is: %s." +msgstr "我們的網站網址為 %s。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:473 +msgid "The amount of information you may be required to show will vary depending on your local or national business regulations. You may, for example, be required to display a physical address, a registered address, or your company registration number." +msgstr "需要顯示的資訊會依據各個地區或國家的商業法規而有所不同。舉例來說,網站可能需要顯示站方營運地點的真實地址,註冊地址或公司統一編號。" + +#. translators: Privacy policy tutorial. +#: wp-admin/includes/class-wp-privacy-policy-content.php:471 +msgid "In this section you should note your site URL, as well as the name of the company, organization, or individual behind it, and some accurate contact information." +msgstr "在這個章節中,請提供網站網址、公司名稱、組織名稱或管理團隊成員的全名,以及其他必要的聯絡資訊。" + +#. translators: Default privacy policy heading. +#: wp-admin/includes/class-wp-privacy-policy-content.php:467 +msgid "Who we are" +msgstr "我們是誰" + +#: wp-admin/privacy-policy-guide.php:79 +msgid "It is your responsibility to write a comprehensive privacy policy, to make sure it reflects all national and international legal requirements on privacy, and to keep your policy current and accurate." +msgstr "站方有責任提供完整的隱私權政策,確保相關內容能符合全部國家及國際隱私權法規的要求,以及內容的時效性及正確性。" + +#: wp-admin/privacy-policy-guide.php:78 +msgid "Please edit your privacy policy content, making sure to delete the summaries, and adding any information from your theme and plugins. Once you publish your policy page, remember to add it to your navigation menu." +msgstr "請編輯隱私權政策頁面內容、刪除範本提供的摘要內容,並加入佈景主題及外掛所提供的相關資訊。發佈隱私權政策頁面後,請將其新增至網站導覽選單中。" + +#: wp-admin/privacy-policy-guide.php:76 +msgid "This text template will help you to create your website’s privacy policy." +msgstr "這份內容範本能協助網站管理員建立這個網站專屬的隱私權政策。" + +#: wp-admin/options-privacy.php:193 +msgid "As a website owner, you may need to follow national or international privacy laws. For example, you may need to create and display a privacy policy." +msgstr "身為網站擁有者/站長,有責任讓網站符合國家或國際隱私權法規。舉例來說,建立並顯示網站的隱私權政策頁面有其必要性。" + +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:68 +msgid "Force erasure has failed." +msgstr "強制清除個人資料時發生錯誤。" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:136 +msgid "Email could not be sent." +msgstr "無法傳送電子郵件。" + +#: wp-admin/includes/privacy-tools.php:386 +msgctxt "date/time" +msgid "On" +msgstr "資料產生時間" + +#: wp-admin/includes/privacy-tools.php:382 +msgctxt "website URL" +msgid "At URL" +msgstr "資料來源網站網址" + +#: wp-admin/includes/privacy-tools.php:378 +msgctxt "website name" +msgid "For site" +msgstr "資料來源網站名稱" + +#: wp-admin/includes/privacy-tools.php:374 +msgctxt "email address" +msgid "Report generated for" +msgstr "製表傳送目標" + +#. translators: %s: Exporter array index. +#: wp-admin/includes/ajax-actions.php:5034 +msgid "Exporter array at index %s does not include a friendly name." +msgstr "匯出程式在索引 %s 中的陣列不包含易記名稱。" + +#: wp-admin/erase-personal-data.php:13 +msgid "Sorry, you are not allowed to erase personal data on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上清除個人資料的權限。" + +#: wp-admin/export-personal-data.php:13 +msgid "Sorry, you are not allowed to export personal data on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上匯出個人資料的權限。" + +#: wp-admin/includes/ajax-actions.php:5201 +msgid "Eraser index is out of range." +msgstr "清除程式索引超出範圍。" + +#: wp-admin/includes/ajax-actions.php:5160 +msgid "Missing eraser index." +msgstr "找不到清除程式索引。" + +#. translators: %s: Exporter friendly name. +#: wp-admin/includes/ajax-actions.php:5085 +msgid "Expected done (boolean) in response array from exporter: %s." +msgstr "匯出程式 %s 必須完成回應陣列中的布林值。" + +#. translators: %s: Exporter friendly name. +#: wp-admin/includes/ajax-actions.php:5078 +msgid "Expected data array in response array from exporter: %s." +msgstr "匯出程式 %s 的回應陣列中必須有資料陣列。" + +#. translators: %s: Exporter friendly name. +#: wp-admin/includes/ajax-actions.php:5071 +msgid "Expected data in response array from exporter: %s." +msgstr "匯出程式 %s 的回應陣列中必須有資料。" + +#. translators: %s: Exporter friendly name. +#: wp-admin/includes/ajax-actions.php:5064 +msgid "Expected response as an array from exporter: %s." +msgstr "匯出程式 %s 必須回應為一組陣列。" + +#. translators: %s: Exporter friendly name. +#: wp-admin/includes/ajax-actions.php:5050 +msgid "Exporter callback is not a valid callback: %s." +msgstr "匯出程式 %s 的回呼不是有效的回呼。" + +#. translators: %s: Exporter friendly name. +#: wp-admin/includes/ajax-actions.php:5043 +msgid "Exporter does not include a callback: %s." +msgstr "匯出程式 %s 不包含回呼。" + +#. translators: %s: Exporter array index. +#: wp-admin/includes/ajax-actions.php:5027 +msgid "Expected an array describing the exporter at index %s." +msgstr "必須有一組陣列描述在索引 %s 中的匯出程式。" + +#: wp-admin/includes/ajax-actions.php:5013 +msgid "Exporter index is out of range." +msgstr "匯出程式索引超出範圍。" + +#: wp-admin/includes/ajax-actions.php:5009 +msgid "Exporter index cannot be negative." +msgstr "匯出程式索引不能為負數。" + +#: wp-admin/includes/ajax-actions.php:5003 +msgid "An exporter has improperly used the registration filter." +msgstr "匯出程式不當使用註冊篩選器。" + +#: wp-admin/includes/ajax-actions.php:4974 +#: wp-admin/includes/ajax-actions.php:5166 +msgid "Missing page index." +msgstr "找不到頁面索引。" + +#: wp-admin/includes/ajax-actions.php:4968 +msgid "Missing exporter index." +msgstr "找不到匯出程式索引。" + +#: wp-admin/includes/ajax-actions.php:4959 +#: wp-admin/includes/ajax-actions.php:5150 +msgid "Invalid request type." +msgstr "無效的要求類型。" + +#: wp-admin/options-privacy.php:311 +msgid "Use This Page" +msgstr "使用這個頁面" + +#: wp-admin/options-privacy.php:290 +msgid "Select a Privacy Policy page" +msgstr "選取隱私權政策頁面" + +#: wp-admin/options-privacy.php:288 +msgid "Change your Privacy Policy page" +msgstr "變更隱私權政策頁面" + +#. translators: 1: URL to edit Privacy Policy page, 2: URL to view Privacy +#. Policy page. +#: wp-admin/options-privacy.php:221 +msgid "Edit or view your Privacy Policy page content." +msgstr "編輯檢視這個網站的隱私權政策頁面內容。" + +#: wp-admin/options-privacy.php:202 +msgid "You should also review your privacy policy from time to time, especially after installing or updating any themes or plugins. There may be changes or new suggested information for you to consider adding to your policy." +msgstr "站方應該定期檢閱隱私權政策,尤其在安裝或更新任何佈景主題或外掛之後,這兩者可能會有相關變更或建議資訊需要加入網站的隱私權政策中。" + +#: wp-admin/options-privacy.php:198 +msgid "However, it is your responsibility to use those resources correctly, to provide the information that your privacy policy requires, and to keep that information current and accurate." +msgstr "請注意,貴單位有責任正確使用這些資源,以提供這個網站的隱私權政策所需的資訊,並確保資訊的時效性及正確性。" + +#: wp-admin/options-privacy.php:197 +msgid "The new page will include help and suggestions for your privacy policy." +msgstr "隱私權政策頁面的內容應該包含這個網站對隱私權政策的相關說明及建議。" + +#: wp-admin/options-privacy.php:194 +msgid "If you already have a Privacy Policy page, please select it below. If not, please create one." +msgstr "如果這個網站已有隱私權政策頁面,請於下方選取這個頁面;如果尚未建立隱私權政策頁面,建議及早建立。" + +#. translators: %s: URL to Pages Trash. +#: wp-admin/options-privacy.php:136 +msgid "The currently selected Privacy Policy page is in the Trash. Please create or select a new Privacy Policy page or restore the current page." +msgstr "之前設定的隱私權政策頁面目前在回收桶中,請新增頁面或還原之前設定的頁面。" + +#: wp-admin/options-privacy.php:126 +msgid "The currently selected Privacy Policy page does not exist. Please create or select a new page." +msgstr "之前設定的隱私權政策頁面目前不存在,請新增頁面或選取其他頁面。" + +#: wp-admin/options-privacy.php:102 +msgid "Unable to create a Privacy Policy page." +msgstr "無法建立隱私權政策頁面。" + +#. translators: Privacy Policy page slug. +#: wp-admin/includes/upgrade.php:399 +msgid "privacy-policy" +msgstr "privacy-policy" + +#. translators: %s: URL to Customizer -> Menus. +#: wp-admin/options-privacy.php:74 +msgid "Privacy Policy page setting updated successfully. Remember to update your menus!" +msgstr "隱私權政策頁面已成功更新,請記得更新網站選單。" + +#. translators: Hidden accessibility text. %s: Plugin name. +#: wp-admin/includes/class-wp-privacy-policy-content.php:435 +msgid "Copy suggested policy text from %s." +msgstr "從 %s 複製建議的隱私權政策內容。" + +#. translators: Do not translate EXPIRATION, LINK, SITENAME, SITEURL: those are +#. placeholders. +#: wp-admin/includes/privacy-tools.php:662 +msgid "" +"Howdy,\n" +"\n" +"Your request for an export of personal data has been completed. You may\n" +"download your personal data by clicking on the link below. For privacy\n" +"and security, we will automatically delete the file on ###EXPIRATION###,\n" +"so please download it before then.\n" +"\n" +"###LINK###\n" +"\n" +"Regards,\n" +"All at ###SITENAME###\n" +"###SITEURL###" +msgstr "" +"你好,\n" +"\n" +"你的個人資料匯出要求已完成。請點擊下方的連結下載個人資料。基於保護隱私權及安全性,系統將會於 ###EXPIRATION###自動刪除檔案,請在到期前完成下載。\n" +"###LINK###\n" +"\n" +"敬祝安好,\n" +"《###SITENAME###》網站管理員\n" +"###SITEURL###" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:135 +msgid "Email sent." +msgstr "電子郵件已傳送。" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:134 +msgid "Sending email..." +msgstr "正在傳送電子郵件..." + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:62 +msgid "Download personal data again" +msgstr "再次下載個人資料" + +#: wp-admin/includes/privacy-tools.php:747 +msgid "Unable to send personal data export email." +msgstr "無法傳送個人資料匯出通知電子郵件。" + +#. translators: Personal data export notification email subject. %s: Site +#. title. +#: wp-admin/includes/privacy-tools.php:636 +msgid "[%s] Personal Data Export" +msgstr "《%s》通知:個人資料匯出" + +#: wp-admin/includes/privacy-tools.php:593 +msgid "Invalid request ID when sending personal data export email." +msgstr "傳送個人資料匯出電子郵件時的要求 ID 無效。" + +#: wp-admin/includes/privacy-tools.php:467 +msgid "Personal Data Export" +msgstr "個人資料匯出" + +#. translators: %s: User's email address. +#: wp-admin/includes/privacy-tools.php:361 +msgid "Personal Data Export for %s" +msgstr "個人資料匯出: %s" + +#: wp-admin/includes/ajax-actions.php:4964 +msgid "A valid email address must be given." +msgstr "必須輸入有效的電子郵件地址。" + +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:65 +msgid "Force erase personal data" +msgstr "強制清除個人資料" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:156 +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:163 +msgid "Remove request" +msgstr "移除要求" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:116 +#: wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php:122 +msgid "Waiting for confirmation" +msgstr "等待使用者確認" + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:61 +msgid "Downloading data..." +msgstr "正在下載個人資料..." + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:60 +msgid "Download personal data" +msgstr "下載個人資料" + +#: wp-admin/includes/class-wp-privacy-requests-table.php:45 +msgid "Requested" +msgstr "要求提出時間" + +#: wp-admin/includes/class-wp-privacy-requests-table.php:43 +msgid "Requester" +msgstr "申請者" + +#: wp-admin/erase-personal-data.php:138 wp-admin/export-personal-data.php:138 +msgid "Send Request" +msgstr "傳送要求" + +#: wp-admin/erase-personal-data.php:119 wp-admin/export-personal-data.php:119 +msgid "Username or email address" +msgstr "使用者名稱或電子郵件地址" + +#: wp-admin/export-personal-data.php:114 +msgid "Add Data Export Request" +msgstr "新增個人資料匯出要求" + +#: wp-admin/includes/privacy-tools.php:171 +msgid "Confirmation request initiated successfully." +msgstr "確認要求已成功初始化。" + +#: wp-admin/includes/privacy-tools.php:135 +msgid "Unable to add this request. A valid email address or username must be supplied." +msgstr "無法新增這項要求。必須提供有效的電子郵件地址或使用者名稱。" + +#: wp-admin/includes/privacy-tools.php:91 +msgid "Confirmation request sent again successfully." +msgstr "確認要求已成功重新傳送。" + +#: wp-admin/includes/privacy-tools.php:155 +msgid "Unable to initiate confirmation request." +msgstr "確認要求無法初始化。" + +#: wp-admin/includes/ajax-actions.php:4946 +#: wp-admin/includes/ajax-actions.php:5136 +msgid "Invalid request ID." +msgstr "無效的要求 ID。" + +#. translators: 1: Eraser friendly name, 2: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5310 +msgid "Expected done flag in response array from %1$s eraser (index %2$d)." +msgstr "清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的旗標。" + +#. translators: 1: Eraser friendly name, 2: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5299 +msgid "Expected messages key to reference an array in response array from %1$s eraser (index %2$d)." +msgstr "清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的訊息索引鍵以進行參照。" + +#. translators: 1: Eraser friendly name, 2: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5288 +msgid "Expected messages key in response array from %1$s eraser (index %2$d)." +msgstr "清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的訊息索引鍵。" + +#. translators: 1: Eraser friendly name, 2: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5277 +msgid "Expected items_retained key in response array from %1$s eraser (index %2$d)." +msgstr "清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的 items_retained 索引鍵。" + +#. translators: 1: Eraser friendly name, 2: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5266 +msgid "Expected items_removed key in response array from %1$s eraser (index %2$d)." +msgstr "清除程式 %1$s (索引 %2$d) 必須完成回應陣列中的 items_removed 索引鍵。" + +#. translators: 1: Eraser friendly name, 2: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5255 +msgid "Did not receive array from %1$s eraser (index %2$d)." +msgstr "無法從 %1$s 清除程式收到陣列 (索引 %2$d)。" + +#. translators: %d: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5219 +msgid "Eraser array at index %d does not include a friendly name." +msgstr "清除程式在索引 %d 中的陣列不包含易記名稱。" + +#. translators: %d: Eraser array index. +#: wp-admin/includes/ajax-actions.php:5214 +msgid "Expected an array describing the eraser at index %d." +msgstr "必須有一組陣列描述在索引 %d 中的清除程式。" + +#: wp-admin/includes/ajax-actions.php:5017 +#: wp-admin/includes/ajax-actions.php:5205 +msgid "Page index cannot be less than one." +msgstr "頁面索引不能小於 1。" + +#: wp-admin/includes/ajax-actions.php:5197 +msgid "Eraser index cannot be less than one." +msgstr "清除程式索引不能小於 1。" + +#: wp-admin/includes/ajax-actions.php:5156 +msgid "Invalid email address in request." +msgstr "要求中的電子郵件地址無效。" + +#: wp-admin/includes/plugin-install.php:678 +msgid "Requires PHP Version:" +msgstr "PHP 版本需求:" + +#. translators: %s: https://wordpress.org/about/stats +#: wp-admin/privacy.php:61 +msgid "This data is used to provide general enhancements to WordPress, which includes helping to protect your site by finding and automatically installing new updates. It is also used to calculate statistics, such as those shown on the WordPress.org stats page." +msgstr "這些資料用於提供 WordPress 一般增強功能,其中包含尋找及自動安裝更新以保護這個網站。這些資料也用於計算統計資料,例如顯示於 WordPress.org 統計資料頁面中的相關資訊。" + +#. translators: %s: Link to add custom CSS section in either the Customizer +#. (classic themes) or Site Editor (block themes). +#: wp-admin/theme-editor.php:219 wp-admin/theme-editor.php:244 +msgid "There is no need to change your CSS here — you can edit and live preview CSS changes in the built-in CSS editor." +msgstr "其實無需在這裡修改 CSS,請使用系統內建的 CSS 編輯器進行修改,並可以即時預覽修改結果。" + +#: wp-admin/theme-editor.php:217 wp-admin/theme-editor.php:242 +msgid "Did you know?" +msgstr "你知道嗎?" + +#: wp-admin/credits.php:139 +msgid "Noteworthy Contributors" +msgstr "貢獻卓著的參與者" + +#: wp-admin/theme-editor.php:461 +msgid "If you decide to go ahead with direct edits anyway, use a file manager to create a copy with a new name and hang on to the original. That way, you can re-enable a functional version if something goes wrong." +msgstr "如果決定繼續直接編輯相關檔案,請使用檔案管理程式先複製需要修改的檔案,並修改檔案名稱以進行備份,這是網站因修改檔案發生錯誤時藉以恢復正常運作的方式。" + +#: wp-admin/plugin-editor.php:373 +msgid "If you absolutely have to make direct edits to this plugin, use a file manager to create a copy with a new name and hang on to the original. That way, you can re-enable a functional version if something goes wrong." +msgstr "如果決定繼續直接編輯外掛檔案,請使用檔案管理程式先複製需要修改的檔案,並修改檔案名稱以進行備份,這是網站因修改檔案發生錯誤時藉以恢復正常運作的方式。" + +#: wp-admin/plugin-editor.php:372 +msgid "You appear to be making direct edits to your plugin in the WordPress dashboard. Editing plugins directly is not recommended as it may introduce incompatibilities that break your site and your changes may be lost in future updates." +msgstr "目前要進行的這項操作可以讓使用者在 WordPress 控制台中直接編輯外掛的程式碼,但建議不要進行這項操作。直接修改外掛所產生的不相容有可能造成網站停擺,且經由修改所得的全部變更均會在外掛更新後消失。" + +#. translators: 1: Documentation URL, 2: URL to Reading Settings screen. +#: wp-admin/options-writing.php:237 +msgid "WordPress is not notifying any Update Services because of your site’s visibility settings." +msgstr "依據這個網站目前的可見度設定,WordPress 不會向任何服務更新傳送通知。" + +#. translators: 1: Documentation URL, 2: web.config, 3: Ctrl + A, 4: ⌘ + A +#: wp-admin/options-permalink.php:511 +msgid "Error: The root directory of your site is not writable, so creating a file automatically was not possible. This is the URL rewrite rule you should have in your %2$s file. Create a new file called %2$s in the root directory of your site. Click in the field and press %3$s (or %4$s on Mac) to select all. Then insert this code into the %2$s file." +msgstr "錯誤: 這個網站的根目錄權限不是可寫入狀態,導致系統無法自動建立檔案,因此網站管理員必須手動在 %2$s 檔案中加入網址重新寫入規則。請在這個網站的根目錄中建立一個名為 %2$s 的新檔案,點擊下方文字欄位並按下 %3$s (macOS 為按下 %4$s) 進行全選,然後將這些程式碼插入 %2$s 檔案中。" + +#. translators: %s: Documentation URL. +#: wp-admin/options-general.php:253 +msgid "Enter the same address here unless you want your site home page to be different from your WordPress installation directory." +msgstr "除非網站首頁網址需要與 WordPress 安裝目錄不同,否則請在這裡輸入相同位址。" + +#: wp-admin/freedoms.php:62 wp-admin/freedoms.php:112 +msgid "https://wordpress.org/about/license/" +msgstr "https://tw.wordpress.org/about/license/" + +#: wp-admin/privacy.php:55 +msgid "From time to time, your WordPress site may send data to WordPress.org — including, but not limited to — the version you are using, and a list of installed plugins and themes." +msgstr "WordPress 網站會不定期傳送資料至 WordPress.org,這些資料包含 (但不限於) 網站目前使用的 WordPress 版本,以及網站上已安裝的外掛及佈景主題清單。" + +#. translators: Attachment information. %s: Date the attachment was uploaded. +#: wp-admin/includes/meta-boxes.php:445 +msgid "Uploaded on: %s" +msgstr "上傳時間: %s" + +#. translators: %s: Package URL. +#: wp-admin/includes/class-plugin-upgrader.php:77 +#: wp-admin/includes/class-theme-upgrader.php:75 +msgid "Downloading installation package from %s…" +msgstr "正在從 %s 下載安裝套件..." + +#. translators: %s: Package URL. +#: wp-admin/includes/class-language-pack-upgrader.php:117 +msgid "Downloading translation from %s…" +msgstr "正在從 %s 下載語言套件..." + +#. translators: %s: Package URL. +#: wp-admin/includes/class-core-upgrader.php:37 +#: wp-admin/includes/class-plugin-upgrader.php:60 +#: wp-admin/includes/class-theme-upgrader.php:59 +msgid "Downloading update from %s…" +msgstr "正在從 %s 下載更新套件..." + +#. translators: 1: wp-admin/includes/template.php, 2: add_meta_box(), 3: +#. add_meta_boxes +#: wp-admin/includes/template.php:2702 +msgid "Likely direct inclusion of %1$s in order to use %2$s. This is very wrong. Hook the %2$s call into the %3$s action instead." +msgstr "為了使用 %2$s 而直接包含 %1$s 並不是正確的方式,請改用勾點 %2$s 以呼叫 %3$s 動作。" + +#: wp-admin/includes/template.php:2321 +msgid "Customization Draft" +msgstr "自訂外觀草稿" + +#. translators: %s: URL to the Customizer. +#: wp-admin/includes/meta-boxes.php:316 +msgid "This draft comes from your unpublished customization changes. You can edit, but there is no need to publish now. It will be published automatically with those changes." +msgstr "這份草稿與這個網站尚未發佈的自訂外觀變更相關聯。網站管理員可以編輯這份草稿,但無須立即發佈,因為它會與這些自訂外觀變更一起自動發佈。" + +#: wp-admin/theme-editor.php:323 +msgid "Theme Files" +msgstr "佈景主題檔案" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/misc.php:421 wp-admin/includes/misc.php:526 +msgid "folder" +msgstr "資料夾" + +#: wp-admin/includes/file.php:593 +msgid "Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP." +msgstr "由於無法連線至網站檢查嚴重錯誤,因此已將 PHP 的變更還原;網站管理員必須使用其它方式上傳 PHP 檔案,例如改用 SFTP。" + +#: wp-admin/press-this.php:75 wp-admin/press-this.php:81 +msgid "Installation Required" +msgstr "安裝需求" + +#. translators: %s: Plugin filename. +#: wp-admin/includes/plugin.php:1048 +msgid "Could not fully remove the plugin %s." +msgstr "無法完整移除外掛 %s。" + +#: wp-admin/user-new.php:371 +msgid "User has been created, but could not be added to this site." +msgstr "使用者已新增,但無法加入至這個網站。" + +#: wp-admin/user-new.php:368 +msgid "That user could not be added to this site." +msgstr "無法將這個使用者加入這個網站。" + +#: wp-admin/user-edit.php:328 +msgid "Disable syntax highlighting when editing code" +msgstr "停用編輯程式碼時的語法醒目提示功能" + +#: wp-admin/user-edit.php:325 +msgid "Syntax Highlighting" +msgstr "語法醒目提示" + +#: wp-admin/setup-config.php:447 wp-admin/setup-config.php:512 +msgid "Run the installation" +msgstr "執行安裝程式" + +#: wp-admin/privacy.php:72 +msgid "https://wordpress.org/about/privacy/" +msgstr "https://tw.wordpress.org/about/privacy/" + +#: wp-admin/press-this.php:80 +msgid "Press This is not available. Please contact your site administrator." +msgstr "[發佈至網站] 外掛無法使用,請聯絡這個網站的網站管理員。" + +#. translators: %s: URL to Press This bookmarklet on the main site. +#: wp-admin/press-this.php:68 +msgid "Press This is not installed. Please install Press This from the main site." +msgstr "[發佈至網站] 外掛尚未安裝,請前往主要網站進行安裝。" + +#: wp-admin/press-this.php:44 +msgid "Activate Press This" +msgstr "啟用 [發佈至網站]" + +#: wp-admin/plugin-editor.php:377 wp-admin/theme-editor.php:465 +msgid "I understand" +msgstr "已了解這項操作的風險" + +#: wp-admin/plugin-editor.php:371 wp-admin/theme-editor.php:444 +msgid "Heads up!" +msgstr "注意!" + +#: wp-admin/plugin-editor.php:321 +msgid "Warning: Making changes to active plugins is not recommended." +msgstr "警告: 不建議修改已啟用的外掛。" + +#: wp-admin/plugin-editor.php:301 wp-admin/theme-editor.php:361 +msgid "Selected file content:" +msgstr "選取的檔案內容:" + +#: wp-admin/plugin-editor.php:210 wp-admin/theme-editor.php:204 +msgid "There was an error while trying to update the file. You may need to fix something and try updating again." +msgstr "更新檔案時發生錯誤,請修正相關錯誤然後再次更新。" + +#. translators: %s: Select field to choose the front page. +#: wp-admin/options-reading.php:113 +msgid "Homepage: %s" +msgstr "靜態首頁: %s" + +#: wp-admin/options-permalink.php:382 +msgid "Available tags:" +msgstr "可用於永久連結結構的標籤:" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:315 +msgid "%s (already used in permalink structure)" +msgstr "%s (已使用於永久連結結構中)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:311 +msgid "%s added to permalink structure" +msgstr "%s 已新增至永久連結結構中" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:298 +msgid "%s (A sanitized version of the author name.)" +msgstr "%s (已處理過的作者名稱版本)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:296 +msgid "%s (Category slug. Nested sub-categories appear as nested directories in the URL.)" +msgstr "%s (分類代稱,在網址中將巢狀子分類顯示為巢狀目錄)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:294 +msgid "%s (The sanitized post title (slug).)" +msgstr "%s (已處理過的文章標題,也就是文章代稱)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:292 +msgid "%s (The unique ID of the post, for example 423.)" +msgstr "%s (文章唯一 ID,例如 423)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:290 +msgid "%s (Second of the minute, for example 33.)" +msgstr "%s (秒數,例如 33)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:288 +msgid "%s (Minute of the hour, for example 43.)" +msgstr "%s (分鐘,例如 43)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:286 +msgid "%s (Hour of the day, for example 15.)" +msgstr "%s (小時,例如 15)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:284 +msgid "%s (Day of the month, for example 28.)" +msgstr "%s (日期,例如 28)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:282 +msgid "%s (Month of the year, for example 05.)" +msgstr "%s (月份,例如 05)" + +#. translators: %s: Permalink structure tag. +#: wp-admin/options-permalink.php:280 +msgid "%s (The year of the post, four digits, for example 2004.)" +msgstr "%s (文章的四位數年份,例如 2004)" + +#: wp-admin/includes/theme-install.php:264 +msgid "Theme Installation" +msgstr "佈景主題安裝" + +#. translators: %s: User's display name. +#: wp-admin/includes/post.php:1884 +msgid "%s is currently editing this post." +msgstr "「%s」正在編輯這篇文章。" + +#. translators: %s: User's display name. +#: wp-admin/includes/post.php:1881 +msgid "%s is currently editing this post. Do you want to take over?" +msgstr "「%s」正在編輯這篇文章,是否要接管編輯工作?" + +#: wp-admin/includes/plugin.php:505 +msgid "Custom installation script." +msgstr "自訂安裝指令碼。" + +#: wp-admin/includes/plugin-install.php:685 +msgid "Active Installations:" +msgstr "啟用安裝數:" + +#: wp-admin/includes/plugin-install.php:600 wp-admin/update.php:128 +msgid "Plugin Installation" +msgstr "外掛安裝" + +#: wp-admin/includes/ms.php:1157 +msgid "Settings — This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database." +msgstr "設定 — 這個分頁會顯示全部與選取網站相關的設定項目,這些設定項目分別由 WordPress 核心程式及已啟用的外掛所建立。請注意,變灰的欄位代表該項設定值為序列化資料;由於這些設定值以序列化資料方式儲存於資料庫中,所以無法手動修改。" + +#. translators: %s: URL to Network Themes screen. +#: wp-admin/includes/ms.php:1154 +msgid "Themes — This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen." +msgstr "佈景主題 — 這個分頁顯示尚未在整個多站網路中啟用的佈景主題。可以在這邊為特定站點顯示可用的佈景主題,只會顯示而不會啟用。如需為整個多站網路啟用佈景主題,請參考 多站網路佈景主題。" + +#: wp-admin/includes/ms.php:1151 +msgid "Users — This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network." +msgstr "使用者 — 這個分頁顯示與指定網站相關的使用者。多站網路管理員可以變更他們使用者角色、為他們重設密碼,或從指定網站移除使用者,將使用者從指定網站移除,不會影響這個使用者在多站網路的使用者身分。" + +#: wp-admin/includes/ms.php:1150 +msgid "Info — The site URL is rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable." +msgstr "資訊 — 多站網路管理員可以在這個分頁中變更網站網址,但可能會造成網站無法正常連線,因此網站網址不該經常變更;多站網路網站管理員還可以將網站標示為 [已封存]、[濫用網站]、[已刪除] 及 [成人內容],藉此將網站從公開清單中移除或停用網站。此外,這個分頁還會顯示網站的 [註冊時間] 及 [最後更新] 日期。" + +#: wp-admin/includes/ms.php:1149 +msgid "The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable." +msgstr "這個畫面可以編輯個別網站的指定資訊,特別適用於發生無法進入管理後台狀況的網站。" + +#: wp-admin/includes/file.php:522 +msgid "Unable to write to file." +msgstr "無法寫入檔案。" + +#. translators: 1: Line number, 2: File path. +#: wp-admin/includes/file.php:318 +msgid "Your PHP code changes were not applied due to an error on line %1$s of file %2$s. Please fix and try saving again." +msgstr "由於檔案 %2$s 中第 %1$s 行的程式碼發生錯誤,因此相關的 PHP 程式碼變更並未套用,請修復後再重新儲存一次。" + +#. translators: If a Rosetta site exists (e.g. https://es.wordpress.org/news/), +#. then use that. Otherwise, leave untranslated. +#: wp-admin/includes/dashboard.php:1351 +msgctxt "Events and News dashboard widget" +msgid "https://wordpress.org/news/" +msgstr "https://wordpress.org/news/" + +#: wp-admin/includes/dashboard.php:87 wp-admin/includes/dashboard.php:666 +msgid "Your Recent Drafts" +msgstr "個人近期草稿" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-users-list-table.php:589 +#: wp-admin/includes/class-wp-ms-users-list-table.php:316 +msgctxt "name" +msgid "Unknown" +msgstr "未知" + +#. translators: %s: Author's display name. +#: wp-admin/includes/class-wp-users-list-table.php:497 +msgid "View posts by %s" +msgstr "檢視「%s」的文章" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-terms-list-table.php:577 +msgid "No description" +msgstr "沒有內容說明" + +#. translators: %s: Number of installations. +#: wp-admin/includes/class-wp-plugin-install-list-table.php:722 +msgid "%s Active Installations" +msgstr "啟用安裝數: %s" + +#: wp-admin/includes/class-theme-upgrader.php:81 +msgid "Theme installation failed." +msgstr "佈景主題安裝失敗。" + +#: wp-admin/includes/class-plugin-upgrader.php:83 +msgid "Plugin installation failed." +msgstr "外掛安裝失敗。" + +#: wp-admin/includes/class-plugin-installer-skin.php:116 +msgid "Activate Plugin & Go to Press This" +msgstr "啟用外掛並前往 [發佈至網站]" + +#: wp-admin/customize.php:71 +msgid "Your scheduled changes just published" +msgstr "排程的變更剛剛發佈" + +#: wp-admin/includes/class-theme-installer-skin.php:157 +#: wp-admin/includes/class-theme-upgrader-skin.php:113 +#: wp-admin/includes/class-wp-themes-list-table.php:218 +#: wp-admin/js/updates.js:1815 +msgctxt "theme" +msgid "Activate" +msgstr "啟用" + +#: wp-admin/options-discussion.php:56 +msgid "Allow link notifications from other blogs (pingbacks and trackbacks) on new posts" +msgstr "開放其他網站對新文章傳送連結通知 (即自動引用通知及引用通知)" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-plugins-list-table.php:869 +#: wp-admin/includes/plugin-install.php:1006 wp-admin/js/updates.js:972 +msgctxt "plugin" +msgid "Network Activate %s" +msgstr "於多站網路中啟用 %s" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-plugins-list-table.php:975 +#: wp-admin/includes/plugin-install.php:993 wp-admin/js/updates.js:983 +msgctxt "plugin" +msgid "Activate %s" +msgstr "啟用 %s" + +#: wp-admin/includes/class-wp-media-list-table.php:292 +msgid "No media files found." +msgstr "找不到符合條件的媒體檔案。" + +#: wp-admin/import.php:139 wp-admin/import.php:188 wp-admin/js/updates.js:1261 +msgid "Run Importer" +msgstr "執行匯入程式" + +#. translators: %s: Importer name. +#: wp-admin/import.php:138 wp-admin/import.php:187 wp-admin/js/updates.js:1257 +msgid "Run %s" +msgstr "執行 [%s]" + +#: wp-admin/includes/class-wp-debug-data.php:225 +msgctxt "comment status" +msgid "Open" +msgstr "開放" + +#: wp-admin/includes/image-edit.php:66 +msgid "Image Rotation" +msgstr "旋轉圖片" + +#. translators: %s: Meetup organization documentation URL. +#: wp-admin/includes/dashboard.php:1522 +msgid "There are no events scheduled near you at the moment. Would you like to organize a WordPress event?" +msgstr "近期沒有任何在你的居地附近舉辦的活動。如果想自己舉辦一場活動,請參考這份線上說明。" + +#. translators: %s: User's display name. +#: wp-admin/user-edit.php:45 +msgid "Edit User %s" +msgstr "編輯使用者「%s」" + +#. translators: Hidden accessibility text. %s: Widget title. +#: wp-admin/includes/widgets.php:251 +msgid "Edit widget: %s" +msgstr "編輯小工具: %s" + +#: wp-admin/includes/dashboard.php:1514 wp-admin/includes/dashboard.php:1523 +msgid "https://make.wordpress.org/community/handbook/meetup-organizer/welcome/" +msgstr "https://make.wordpress.org/community/handbook/meetup-organizer/welcome/" + +#. translators: 1: The city the user searched for, 2: Meetup organization +#. documentation URL. +#: wp-admin/includes/dashboard.php:1512 +msgid "There are no events scheduled near %1$s at the moment. Would you like to organize a WordPress event?" +msgstr "近期沒有任何在「%1$s」附近舉辦的活動。如果想自己舉辦一場活動,請參考這份線上說明。" + +#. translators: %s: The name of a city. +#: wp-admin/includes/dashboard.php:1441 +msgid "Attend an upcoming event near %s." +msgstr "參加在「%s」附近即將舉辦的活動。" + +#: wp-admin/includes/dashboard.php:1411 +msgid "Cincinnati" +msgstr "台北" + +#: wp-admin/includes/dashboard.php:1399 +msgid "City:" +msgstr "城市名稱:" + +#: wp-admin/includes/dashboard.php:1339 +msgid "WordCamps" +msgstr "WordCamp 活動" + +#: wp-admin/includes/dashboard.php:1327 +msgid "Meetups" +msgstr "Meetup 小聚" + +#: wp-admin/includes/dashboard.php:1369 wp-admin/js/dashboard.js:591 +msgid "An error occurred. Please try again." +msgstr "發生錯誤。請再試一次。" + +#: wp-admin/includes/dashboard.php:92 +msgid "WordPress Events and News" +msgstr "WordPress 活動及新聞" + +#. translators: Date format for upcoming events on the dashboard. Include the +#. day of the week. See https://www.php.net/manual/datetime.format.php +#: wp-admin/includes/class-wp-community-events.php:397 +#: wp-admin/includes/class-wp-community-events.php:402 +#: wp-admin/js/dashboard.js:780 +msgid "l, M j, Y" +msgstr "Y 年 n 月 j 日l" + +#: wp-admin/includes/class-wp-community-events.php:125 +msgid "Unknown API error." +msgstr "未知的 API 錯誤。" + +#. translators: %d: Numeric HTTP status code, e.g. 400, 403, 500, 504, etc. +#: wp-admin/includes/class-wp-community-events.php:120 +msgid "Invalid API response code (%d)." +msgstr "無效的 API 回應碼 (%d)。" + +#: wp-admin/users.php:200 wp-admin/users.php:294 +msgid "Sorry, you are not allowed to delete users." +msgstr "很抱歉,目前的登入身分沒有刪除使用者的權限。" + +#: wp-admin/user-new.php:23 wp-admin/user-new.php:195 +msgid "Sorry, you are not allowed to create users." +msgstr "很抱歉,目前的登入身分沒有新增使用者的權限。" + +#: wp-admin/customize.php:274 +msgctxt "short (~12 characters) label for hide controls button" +msgid "Hide Controls" +msgstr "隱藏控制項" + +#: wp-admin/theme-install.php:71 +msgid "Expand Sidebar" +msgstr "展開資訊欄" + +#. translators: 1: User ID, 2: User login. +#: wp-admin/users.php:544 +msgid "ID #%1$s: %2$s Sorry, you are not allowed to remove this user." +msgstr "ID 為 %1$s 的使用者 %2$s 很抱歉,目前的登入身分沒有移除這個使用者的權限。" + +#: wp-admin/user-edit.php:62 +msgid "You can select the language you wish to use while using the WordPress administration screen without affecting the language site visitors see." +msgstr "使用者可以選取個人偏好的 WordPress 後台管理畫面的介面語言,這項設定不會影響訪客看到的網站前端介面語言。" + +#: wp-admin/theme-install.php:271 +msgid "Edit Filters" +msgstr "編輯篩選條件" + +#: wp-admin/theme-install.php:244 wp-admin/theme-install.php:266 +msgid "Clear current filters" +msgstr "清除目前的篩選條件" + +#. translators: Hidden accessibility text. +#: wp-admin/theme-install.php:73 +msgid "Select one or more Theme features to filter by" +msgstr "選取一或多個佈景主題特色篩選條件" + +#. translators: %s: Number of ratings. +#: wp-admin/includes/theme.php:881 wp-admin/theme-install.php:526 +msgid "(%s ratings)" +msgstr "(%s 筆評分資訊)" + +#: wp-admin/includes/template.php:2465 +msgid "Current Background Image" +msgstr "目前背景圖片" + +#: wp-admin/includes/template.php:2445 +msgid "Current Header Image" +msgstr "目前頁首圖片" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/meta-boxes.php:147 +msgid "Set status" +msgstr "設定狀態" + +#. translators: Hidden accessibility text. %s: Post title. +#: wp-admin/includes/class-wp-posts-list-table.php:1056 +msgid "“%s” is locked" +msgstr "〈%s〉已鎖定" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:717 +#: wp-admin/includes/plugin-install.php:695 +msgctxt "Active plugin installations" +msgid "Less Than 10" +msgstr "少於 10" + +#: wp-admin/includes/ajax-actions.php:2605 +msgid "Sorry, you are not allowed to attach files to this post." +msgstr "很抱歉,目前的登入身分沒有將檔案關聯至這篇文章的權限。" + +#: wp-admin/freedoms.php:105 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:346 +#: wp-admin/includes/plugin-install.php:702 wp-admin/plugin-install.php:101 +#: wp-admin/plugins.php:570 +msgid "https://wordpress.org/plugins/" +msgstr "https://tw.wordpress.org/plugins/" + +#: wp-admin/customize.php:254 +msgid "The Customizer allows you to preview changes to your site before publishing them. You can navigate to different pages on your site within the preview. Edit shortcuts are shown for some editable elements. The Customizer is intended for use with non-block themes." +msgstr "外觀自訂器讓網站管理員能在發佈網站前預覽變更,還可以在進行預覽時瀏覽網站的不同頁面。某些可編輯元素會顯示編輯捷徑。外觀自訂器適用於與非區塊佈景主題 (傳統佈景主題) 搭配使用。" + +#: wp-admin/customize.php:72 wp-admin/customize.php:81 +msgid "Customize New Changes" +msgstr "自訂新變更" + +#: wp-admin/includes/class-custom-background.php:473 +msgctxt "Background Scroll" +msgid "Scroll" +msgstr "隨頁面捲動" + +#: wp-admin/includes/class-custom-background.php:464 +msgctxt "Background Repeat" +msgid "Repeat" +msgstr "重複背景圖片" + +#. translators: 1: Used memory, 2: Total memory +#: wp-admin/includes/class-wp-debug-data.php:496 +msgid "%1$s of %2$s" +msgstr "已使用 %1$s,總計 %2$s" + +#: wp-admin/plugin-install.php:103 +msgid "You can find new plugins to install by searching or browsing the directory right here in your own Plugins section." +msgstr "網站管理員可於網站的 [安裝外掛] 頁面中,透過搜尋或瀏覽外掛目錄的方式安裝新外掛。" + +#. translators: %s: https://wordpress.org/plugins +#: wp-admin/plugin-install.php:100 +msgid "Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from the core WordPress application by thousands of developers all over the world. All plugins in the official WordPress Plugin Directory are compatible with the license WordPress uses." +msgstr "外掛可透過勾點 (英文原文為 Hook) 為 WordPress 擴充自訂功能,外掛也是世界各地無數開發者以 WordPress 核心程式為基礎所獨立開發的擴充功能。官方 WordPress 外掛目錄中的全部外掛均相容於 WordPress 所採用的授權方式。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/plugin-install.php:324 +msgid "Search plugins by:" +msgstr "搜尋外掛的方式:" + +#: wp-admin/includes/import.php:224 +msgid "Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file." +msgstr "從 WordPress 資料匯出檔匯入文章、頁面、留言、自訂欄位、分類及標籤。" + +#: wp-admin/includes/import.php:218 +msgid "Import posts & media from Tumblr using their API." +msgstr "透過 Tumblr 的 API 匯入 Tumblr 網站的文章及媒體檔案。" + +#: wp-admin/includes/import.php:212 +msgid "Import posts from an RSS feed." +msgstr "透過 RSS 資訊提供匯入文章。" + +#: wp-admin/includes/import.php:206 +msgid "Import posts and comments from a Movable Type or TypePad blog." +msgstr "從 Movable Type 或 TypepPad 網站匯入文章及留言。" + +#: wp-admin/includes/import.php:200 +msgid "Import posts from LiveJournal using their API." +msgstr "透過 LiveJournal 提供的 API 匯入文章。" + +#: wp-admin/includes/import.php:194 +msgid "Convert existing categories to tags or tags to categories, selectively." +msgstr "選擇性地將現有分類轉換成標籤,或將現有標籤轉換成分類。" + +#: wp-admin/includes/import.php:188 +msgid "Import posts, comments, and users from a Blogger blog." +msgstr "從 Blogger 網站匯入文章、留言及使用者。" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-plugins-list-table.php:933 +msgctxt "plugin" +msgid "Deactivate %s" +msgstr "停用 %s" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-plugins-list-table.php:899 +#: wp-admin/includes/class-wp-plugins-list-table.php:1005 +msgctxt "plugin" +msgid "Delete %s" +msgstr "刪除 %s" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-plugins-list-table.php:844 +msgctxt "plugin" +msgid "Network Deactivate %s" +msgstr "於多站網路中停用 %s" + +#: wp-admin/user-new.php:285 +msgid "By default, new users will receive an email letting them know they’ve been added as a user for your site. This email will also contain a password reset link. Uncheck the box if you do not want to send the new user a welcome email." +msgstr "依照預設,新使用者會收到一封電子郵件,通知他們已成為這個網站的使用者,且電子郵件內容中會包含一個密碼重設連結。如果不需要將歡迎電子郵件傳送給新使用者,請停用這項設定。" + +#: wp-admin/user-new.php:283 +msgid "New users are automatically assigned a password, which they can change after logging in. You can view or edit the assigned password by clicking the Show Password button. The username cannot be changed once the user has been added." +msgstr "系統會自動為新使用者指派一組密碼,新使用者使用這組密碼登入後便可變更密碼。網站管理員可以點擊 [顯示密碼] 按鈕以檢視或編輯這組要指派給新使用者的密碼。使用者名稱在完成新增使用者操作後便無法修改。" + +#. translators: %s: Plugin name. +#: wp-admin/includes/update.php:995 +msgctxt "plugin" +msgid "%s was successfully deleted." +msgstr "%s 已成功刪除。" + +#: wp-admin/plugins.php:566 +msgid "The search for installed plugins will search for terms in their name, description, or author." +msgstr "搜尋已安裝的外掛時,會一併以相同關鍵字在外掛名稱、說明內容或開發者中進行搜尋。" + +#: wp-admin/includes/theme.php:337 +msgid "Custom Logo" +msgstr "自訂標誌" + +#: wp-admin/users.php:477 wp-admin/users.php:509 +#: wp-admin/network/site-users.php:120 +msgid "Sorry, you are not allowed to remove users." +msgstr "很抱歉,目前的登入身分沒有移除使用者的權限。" + +#: wp-admin/user-new.php:16 wp-admin/user-new.php:57 +#: wp-admin/network/user-new.php:14 +msgid "Sorry, you are not allowed to add users to this network." +msgstr "很抱歉,目前的登入身分沒有新增使用者至這個多站網路的權限。" + +#: wp-admin/customize.php:35 +msgid "Sorry, you are not allowed to edit this changeset." +msgstr "很抱歉,目前的登入身分沒有編輯這個變更集的權限。" + +#: wp-admin/includes/ajax-actions.php:4312 wp-admin/update.php:211 +#: wp-admin/update.php:234 +msgid "Sorry, you are not allowed to update themes for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站更新佈景主題的權限。" + +#: wp-admin/update-core.php:23 wp-admin/update-core.php:1155 +#: wp-admin/update-core.php:1191 wp-admin/update-core.php:1232 +#: wp-admin/update-core.php:1273 wp-admin/update-core.php:1302 +msgid "Sorry, you are not allowed to update this site." +msgstr "很抱歉,目前的登入身分沒有更新這個網站的權限。" + +#: wp-admin/themes.php:448 wp-admin/themes.php:846 +msgid "New version available. " +msgstr "已有新版本可供更新。" + +#: wp-admin/theme-install.php:187 +msgid "The Theme Installer screen requires JavaScript." +msgstr "佈景主題安裝程式需要 JavaScript 才能使用。" + +#: wp-admin/includes/file.php:441 wp-admin/theme-editor.php:18 +msgid "Sorry, you are not allowed to edit templates for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站編輯範本的權限。" + +#: wp-admin/setup-config.php:344 +msgid "Error: \"Table Prefix\" is invalid." +msgstr "錯誤: 無效的資料表前置詞。" + +#: wp-admin/plugins.php:228 +msgid "Sorry, you are not allowed to deactivate plugins for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站停用外掛的權限。" + +#: wp-admin/plugins.php:94 +msgid "Sorry, you are not allowed to activate plugins for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站啟用外掛的權限。" + +#: wp-admin/includes/file.php:408 wp-admin/plugin-editor.php:18 +msgid "Sorry, you are not allowed to edit plugins for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站編輯外掛的權限。" + +#: wp-admin/options.php:261 +msgid "Sorry, you are not allowed to modify unregistered settings for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站修改未註冊設定的權限。" + +#: wp-admin/options-discussion.php:12 wp-admin/options-general.php:16 +#: wp-admin/options-media.php:13 wp-admin/options-permalink.php:13 +#: wp-admin/options-reading.php:13 wp-admin/options-writing.php:13 +#: wp-admin/options.php:52 wp-admin/network.php:19 +msgid "Sorry, you are not allowed to manage options for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站管理設定的權限。" + +#: wp-admin/nav-menus.php:798 wp-admin/widgets-form.php:405 +msgid "Manage with Live Preview" +msgstr "透過即時預覽進行管理" + +#: wp-admin/ms-delete-site.php:17 +msgid "Sorry, you are not allowed to delete this site." +msgstr "很抱歉,目前的登入身分沒有刪除這個網站的權限。" + +#: wp-admin/link-add.php:13 +msgid "Sorry, you are not allowed to add links to this site." +msgstr "很抱歉,目前的登入身分沒有新增連結至這個網站的權限。" + +#. translators: %s: Gravatar URL. +#: wp-admin/includes/upgrade.php:285 +msgid "" +"Hi, this is a comment.\n" +"To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.\n" +"Commenter avatars come from Gravatar." +msgstr "" +"網站管理員你好,這是一則預留內容留言。\n" +"如需開始審閱、編輯及刪除留言,請前往 [控制台] 的 [留言] 頁面進行必要的操作。\n" +"留言者個人頭像來源為 Gravatar。" + +#. translators: %s: Theme name. +#: wp-admin/includes/update.php:1003 +msgctxt "theme" +msgid "%s was successfully deleted." +msgstr "%s 佈景主題已成功刪除。" + +#. translators: 1: URL to WordPress release notes, 2: New WordPress version. +#: wp-admin/includes/update.php:337 +msgid "WordPress %2$s is available! Please notify the site administrator." +msgstr "WordPress %2$s 已可供下載安裝!請通知網站管理員。" + +#: wp-admin/includes/update.php:332 +msgid "Please update WordPress now" +msgstr "請立即更新 WordPress" + +#. translators: 1: URL to WordPress release notes, 2: New WordPress version, 3: +#. URL to network admin, 4: Accessibility text. +#: wp-admin/includes/update.php:328 +msgid "WordPress %2$s is available! Please update now." +msgstr "WordPress %2$s 已可供下載安裝!請立即更新。" + +#: wp-admin/includes/theme.php:327 +msgid "Portfolio" +msgstr "作品集" + +#: wp-admin/includes/theme.php:326 +msgid "Photography" +msgstr "攝影" + +#: wp-admin/includes/dashboard.php:1352 wp-admin/includes/theme.php:325 +msgid "News" +msgstr "新聞" + +#: wp-admin/includes/theme.php:323 +msgid "Food & Drink" +msgstr "美食" + +#: wp-admin/includes/theme.php:322 +msgid "Entertainment" +msgstr "娛樂" + +#: wp-admin/includes/theme.php:321 +msgid "Education" +msgstr "教育" + +#: wp-admin/includes/theme.php:320 +msgid "E-Commerce" +msgstr "電子商務" + +#: wp-admin/includes/theme.php:319 +msgid "Blog" +msgstr "部落格" + +#: wp-admin/includes/theme.php:341 +msgid "Footer Widgets" +msgstr "頁尾小工具" + +#: wp-admin/includes/theme.php:352 +msgid "Grid Layout" +msgstr "格狀版面配置" + +#: wp-admin/includes/template.php:2729 +msgid "This will replace the current editor content with the last backup version. You can use undo and redo in the editor to get the old content back or to return to the restored version." +msgstr "這項操作會將目前編輯器中的內容取代為最後備份的內容。你可以使用編輯器內的 [復原] 和 [重做] 以取回舊版內容或返回已還原的版本。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/template.php:2040 +msgid "Close media attachment panel" +msgstr "關閉媒體附件面板" + +#: wp-admin/includes/ms.php:1066 +msgid "Info" +msgstr "網站資訊" + +#: wp-admin/includes/meta-boxes.php:1083 +msgid "Need help? Use the Help tab above the screen title." +msgstr "如需協助,請點擊畫面標題上方的 [使用說明] 分頁。" + +#: wp-admin/includes/menu.php:384 wp-admin/my-sites.php:17 +#: wp-admin/network/index.php:17 wp-admin/network/settings.php:17 +#: wp-admin/network/site-info.php:32 wp-admin/network/site-settings.php:32 +#: wp-admin/network/site-themes.php:57 wp-admin/network/site-users.php:50 +#: wp-admin/network/sites.php:14 wp-admin/network/sites.php:162 +#: wp-admin/network/upgrade.php:44 wp-admin/network/user-new.php:37 +#: wp-admin/network/users.php:14 wp-admin/network/users.php:24 +#: wp-admin/network/users.php:51 wp-admin/network/users.php:65 +#: wp-admin/network/users.php:188 +msgid "Sorry, you are not allowed to access this page." +msgstr "很抱歉,目前的登入身分沒有存取這個頁面的權限。" + +#: wp-admin/includes/file.php:52 +msgid "Embed Footer Template" +msgstr "嵌入頁尾範本" + +#: wp-admin/includes/file.php:51 +msgid "Embed Header Template" +msgstr "嵌入頁首範本" + +#: wp-admin/includes/file.php:50 +msgid "Embed Content Template" +msgstr "嵌入內容範本" + +#: wp-admin/includes/file.php:49 +msgid "Embed 404 Template" +msgstr "嵌入 404 錯誤範本" + +#: wp-admin/includes/file.php:48 +msgid "Embed Template" +msgstr "嵌入範本" + +#: wp-admin/includes/plugin-install.php:987 wp-admin/js/updates.js:1155 +#: wp-admin/js/updates.js:1163 +msgctxt "plugin" +msgid "Active" +msgstr "已啟用" + +#: wp-admin/includes/class-wp-media-list-table.php:626 +msgid "(Private post)" +msgstr "(私密內容)" + +#: wp-admin/includes/bookmark.php:32 wp-admin/includes/bookmark.php:379 +#: wp-admin/link-manager.php:12 wp-admin/link-manager.php:92 +msgid "Sorry, you are not allowed to edit the links for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站編輯連結的權限。" + +#: wp-admin/options-privacy.php:13 wp-admin/privacy-policy-guide.php:13 +msgid "Sorry, you are not allowed to manage privacy options on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上管理隱私權設定的權限。" + +#: wp-admin/options-connectors.php:16 +msgid "Sorry, you are not allowed to manage connectors on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上管理連接器的權限。" + +#: wp-admin/includes/ajax-actions.php:4787 +msgid "Plugin could not be deleted." +msgstr "外掛無法刪除。" + +#: wp-admin/includes/ajax-actions.php:4641 wp-admin/update.php:29 +#: wp-admin/update.php:57 wp-admin/update.php:80 +msgid "Sorry, you are not allowed to update plugins for this site." +msgstr "很抱歉,目前的登入身分沒有為這個網站更新外掛的權限。" + +#: wp-admin/includes/ajax-actions.php:4587 +msgid "Sorry, you are not allowed to activate plugins on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上啟用外掛的權限。" + +#: wp-admin/includes/ajax-actions.php:4443 +msgid "Theme could not be deleted." +msgstr "佈景主題無法刪除。" + +#: wp-admin/includes/ajax-actions.php:4405 +msgid "Sorry, you are not allowed to delete themes on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上刪除佈景主題的權限。" + +#: wp-admin/includes/ajax-actions.php:4185 wp-admin/theme-install.php:16 +#: wp-admin/update.php:262 wp-admin/update.php:304 wp-admin/update.php:342 +msgid "Sorry, you are not allowed to install themes on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上安裝佈景主題的權限。" + +#: wp-admin/includes/ajax-actions.php:4172 +#: wp-admin/includes/ajax-actions.php:4298 +#: wp-admin/includes/ajax-actions.php:4393 +msgid "No theme specified." +msgstr "找不到指定的佈景主題。" + +#: wp-admin/admin.php:310 wp-admin/import.php:15 +msgid "Sorry, you are not allowed to import content into this site." +msgstr "很抱歉,目前的登入身分沒有將內容匯入至這個網站的權限。" + +#: wp-admin/export.php:13 +msgid "Sorry, you are not allowed to export the content of this site." +msgstr "很抱歉,目前的登入身分沒有匯出這個網站內容的權限。" + +#: wp-admin/edit.php:265 +msgid "You can filter the list of posts by post status using the text links above the posts list to only show posts with that status. The default view is to show all posts." +msgstr "使用者可以點擊文章清單上方的各個狀態連結,便會列出對應狀態的文章。預設檢視為顯示全部文章。" + +#. translators: Hidden accessibility text. +#: wp-admin/customize.php:219 +msgid "Close the Customizer and go back to the previous page" +msgstr "關閉 [外觀自訂器] 並返回上一頁" + +#: wp-admin/includes/class-custom-image-header.php:1122 +msgid "Sorry, you are not allowed to customize headers." +msgstr "很抱歉,目前的登入身分沒有自訂頁首的權限。" + +#: wp-admin/credits.php:144 +msgid "Release Deputy" +msgstr "產品發行代表" + +#: wp-admin/credits.php:143 +msgid "Release Design Lead" +msgstr "產品發行設計負責人" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/meta-boxes.php:832 +msgid "Custom fields can be used to add extra metadata to a post that you can use in your theme." +msgstr "自訂欄位可以為內容新增額外的中繼資料,而這些包含自訂欄位的內容可以使用於佈景主題中。" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/meta-boxes.php:795 +msgid "Trackbacks are a way to notify legacy blog systems that you’ve linked to them. If you link other WordPress sites, they’ll be notified automatically using pingbacks, no other action necessary." +msgstr "引用通知 (英文原文為 Trackback) 是種通知舊式網站系統在這個網站的文章中已連結它們的方式。當這個網站的文章連結至其他 WordPress 網站時,系統便會以自動引用通知 (英文原文為 Pingback) 的方式通知他們,不須進行其他操作。" + +#. translators: %s: Documentation URL. +#: wp-admin/includes/meta-boxes.php:757 +msgid "Excerpts are optional hand-crafted summaries of your content that can be used in your theme. Learn more about manual excerpts." +msgstr "[內容摘要] 是一項選用功能,它是佈景主題可以自由運用的手動擷取內容。進一步了解手動輸入內容摘要。" + +#: wp-admin/edit-form-advanced.php:288 +msgid "The Code mode allows you to enter HTML along with your post text. Note that <p> and <br> tags are converted to line breaks when switching to the Code editor to make it less cluttered. When you type, a single line break can be used instead of typing <br>, and two line breaks instead of paragraph tags. The line breaks are converted back to tags automatically." +msgstr "[程式碼] 模式讓使用者輸入含有 HTML 程式碼的內容。請注意,切換至 [程式碼] 模式時,<p><br> 標籤會轉換成分行符號以避免版面雜亂。輸入內容時,輸入一次分行符號便可取代 <br> 標籤,而連續輸入兩次分行符號則可取代段落標籤。切換回 [預覽] 模式後,分行符號會自動轉換回對應的標籤。" + +#: wp-admin/edit-form-advanced.php:287 +msgid "Visual mode gives you an editor that is similar to a word processor. Click the Toolbar Toggle button to get a second row of controls." +msgstr "[預覽] 模式提供使用者類似文字處理程式 (例如 Word) 的編輯器功能。點擊 [工具列開關] 按鈕以顯示第二列功能控制項。" + +#: wp-admin/upload.php:117 +msgid "Error saving media file." +msgstr "儲存媒體檔案時發生錯誤。" + +#. translators: %s: Number of media files. +#: wp-admin/upload.php:106 +msgid "%s media file restored from the Trash." +msgid_plural "%s media files restored from the Trash." +msgstr[0] "%s 個媒體檔案已從回收桶還原。" + +#. translators: %s: Number of media files. +#: wp-admin/upload.php:83 +msgid "%s media file moved to the Trash." +msgid_plural "%s media files moved to the Trash." +msgstr[0] "%s 個媒體檔案已移至回收桶。" + +#. translators: %s: Number of media files. +#: wp-admin/upload.php:66 +msgid "%s media file permanently deleted." +msgid_plural "%s media files permanently deleted." +msgstr[0] "%s 個媒體檔案已永久刪除。" + +#. translators: %s: Number of media files. +#: wp-admin/upload.php:49 +msgid "%s media file detached." +msgid_plural "%s media files detached." +msgstr[0] "%s 個媒體檔案已解除關聯。" + +#: wp-admin/upload.php:45 +msgid "Media file detached." +msgstr "媒體檔案已解除關聯。" + +#. translators: %s: Number of media files. +#: wp-admin/upload.php:32 +msgid "%s media file attached." +msgid_plural "%s media files attached." +msgstr[0] "%s 個媒體檔案已產生關聯。" + +#: wp-admin/upload.php:28 +msgid "Media file attached." +msgstr "媒體檔案已產生關聯。" + +#: wp-admin/edit-form-advanced.php:203 wp-admin/upload.php:18 +#: wp-admin/upload.php:115 +msgid "Media file updated." +msgstr "媒體檔案已更新。" + +#. translators: 1: Theme name, 2: Version number. +#. translators: 1: Plugin name, 2: Version number. +#: wp-admin/includes/theme.php:235 wp-admin/includes/theme.php:248 +#: wp-admin/includes/theme.php:261 wp-admin/includes/update.php:532 +#: wp-admin/includes/update.php:545 wp-admin/includes/update.php:559 +#: wp-admin/includes/update.php:578 wp-admin/includes/update.php:725 +#: wp-admin/includes/update.php:738 wp-admin/includes/update.php:751 +#: wp-admin/update-core.php:575 +msgid "View %1$s version %2$s details" +msgstr "檢視 %1$s %2$s 的詳細資料" + +#. translators: 1: Relative date, 2: Time. +#: wp-admin/includes/dashboard.php:1047 +msgctxt "dashboard" +msgid "%1$s, %2$s" +msgstr "%1$s%2$s" + +#: wp-admin/edit-form-advanced.php:369 +msgid "Publish — You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). The Password protected option allows you to set an arbitrary password for each post. The Private option hides the post from everyone except editors and administrators. Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post." +msgstr "發佈 — 作者可以在文章的 [發佈] 區塊中進行多項設定,包含 [狀態]、[可見度] 及 [發佈] (立即發佈),也可以點擊 [編輯] 連結以顯示更多進階設定。可見度包含以密碼保護文章,或讓文章在網站上置頂的設定。[密碼保護] 功能讓作者可以為每篇文章設定自訂密碼,而 [私密] 功能能讓文章作者本人、具備 [編輯] 及 [網站管理員] 的使用者以外的全部人都無法看到該篇文章。[發佈] (立即發佈) 功能能讓作者設定某個未來或過去的日期及時間,這樣作者便能為文章排程,讓文章在未來發佈或將發佈時間回溯至過去。" + +#. translators: %s: New email. +#: wp-admin/user-edit.php:577 +msgid "There is a pending change of your email to %s." +msgstr "將你的電子郵件地址變更為 %s 的要求仍待確認。" + +#: wp-admin/user-edit.php:242 +msgid "Error while saving the new email address. Please try again." +msgstr "儲存新的電子郵件地址時發生錯誤。請再試一次。" + +#: wp-admin/upload.php:372 +msgid "You can narrow the list by file type/status or by date using the dropdown menus above the media table." +msgstr "使用者可以在媒體清單上方的下拉式選單中選取檔案類型/狀態或檔案上傳日期 (可進行交集篩選),藉以篩選出媒體清單中符合條件的媒體檔案。" + +#: wp-admin/themes.php:676 wp-admin/network/themes.php:470 +msgid "The following themes are installed but incomplete." +msgstr "下列佈景主題已安裝但不完整。" + +#: wp-admin/themes.php:282 +msgid "New theme activated." +msgstr "新的佈景主題已啟用。" + +#: wp-admin/themes.php:273 +msgid "Settings saved and theme activated." +msgstr "設定已儲存且佈景主題已啟用。" + +#: wp-admin/freedoms.php:106 wp-admin/theme-install.php:110 +#: wp-admin/themes.php:157 +msgid "https://wordpress.org/themes/" +msgstr "https://tw.wordpress.org/themes/" + +#: wp-admin/users.php:208 +msgid "Sorry, you are not allowed to delete that user." +msgstr "很抱歉,目前的登入身分沒有刪除這個使用者的權限。" + +#: wp-admin/setup-config.php:249 +msgid "Your database password." +msgstr "WordPress 網站資料庫的密碼。" + +#: wp-admin/setup-config.php:237 +msgid "Your database username." +msgstr "WordPress 網站資料庫的使用者名稱。" + +#: wp-admin/setup-config.php:232 +msgid "The name of the database you want to use with WordPress." +msgstr "使用於 WordPress 的網站資料庫名稱。" + +#. translators: 1: Plugin name, 2: Plugin author. +#: wp-admin/plugins.php:383 +msgctxt "plugin" +msgid "%1$s by %2$s" +msgstr "由 %2$s 開發的 %1$s" + +#. translators: 1: Plugin name, 2: Plugin author. +#: wp-admin/plugins.php:379 +msgid "%1$s by %2$s (will also delete its data)" +msgstr "由 %2$s 開發的 %1$s (同時也會刪除這個外掛的資料)" + +#. translators: %s: New admin email. +#: wp-admin/options-general.php:273 +msgid "There is a pending change of the admin email to %s." +msgstr "將網站管理員的電子郵件地址變更為 %s 的要求仍待確認。" + +#: wp-admin/install.php:447 +msgid "WordPress has been installed. Thank you, and enjoy!" +msgstr "WordPress 已完成安裝。感謝採用 WordPress,請享用它所帶來的無窮魅力!" + +#. translators: %s: DO_NOT_UPGRADE_GLOBAL_TABLES +#: wp-admin/install.php:336 +msgid "The constant %s cannot be defined when installing WordPress." +msgstr "安裝 WordPress 時,無法定義常數 %s。" + +#. translators: %s: wp-config.php +#: wp-admin/install.php:323 +msgid "Your %s file has an empty database table prefix, which is not supported." +msgstr "這個網站的 %s 檔案中的資料表前置詞設定為空,系統不支援這樣的設定。" + +#: wp-admin/index.php:187 +msgid "Dismiss the welcome panel" +msgstr "關閉 [歡迎使用] 面板" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme-install.php:203 +msgid "Theme zip file" +msgstr "佈景主題 ZIP 檔案" + +#: wp-admin/includes/template.php:2036 +msgid "Attach to existing content" +msgstr "關聯至現有內容" + +#: wp-admin/includes/post.php:1685 +msgid "Click the image to edit or update" +msgstr "點擊圖片以編輯或更新" + +#. translators: 1: Number of stars (used to determine singular/plural), 2: +#. Number of reviews. +#: wp-admin/includes/plugin-install.php:743 +msgid "Reviews with %1$d star: %2$s. Opens in a new tab." +msgid_plural "Reviews with %1$d stars: %2$s. Opens in a new tab." +msgstr[0] "%2$s 篇 %1$d 星使用者評論。在新分頁中開啟。" + +#: wp-admin/includes/plugin-install.php:735 +msgid "Read all reviews on WordPress.org or write your own!" +msgstr "在 WordPress.org 上查看全部使用者評論或發佈個人評論!" + +#: wp-admin/includes/plugin-install.php:734 +msgid "Reviews" +msgstr "使用者評論" + +#. translators: %s: URL to "Features as Plugins" page. +#: wp-admin/includes/plugin-install.php:397 +msgid "You are using a development version of WordPress. These feature plugins are also under development. Learn more." +msgstr "這個網站使用了 WordPress 的開發版本,目前主要功能外掛仍處於開發階段。進一步了解。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:287 +msgid "Thumbnail Settings Help" +msgstr "縮圖設定說明" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:243 +msgid "selection height" +msgstr "保留範圍高度" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:235 +msgid "selection width" +msgstr "保留範圍寬度" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:223 +msgid "crop ratio height" +msgstr "裁剪保留範圍比例高度" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:215 +msgid "crop ratio width" +msgstr "裁剪保留範圍比例寬度" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:197 +msgid "Image Crop Help" +msgstr "圖片裁剪說明" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:154 wp-admin/includes/image-edit.php:159 +msgid "scale height" +msgstr "調整高度尺寸" + +#: wp-admin/includes/image-edit.php:149 +msgid "New dimensions:" +msgstr "新尺寸:" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/image-edit.php:130 +msgid "Scale Image Help" +msgstr "調整圖片尺寸說明" + +#: wp-admin/includes/file.php:38 +msgid "Single Page" +msgstr "單篇頁面" + +#: wp-admin/includes/file.php:36 +msgid "Singular Template" +msgstr "單篇內容範本" + +#: wp-admin/includes/file.php:34 +msgid "Date Template" +msgstr "日期範本" + +#: wp-admin/includes/file.php:29 +msgid "Taxonomy Template" +msgstr "分類法範本" + +#: wp-admin/includes/dashboard.php:1778 +msgid "Dismiss the browser warning panel" +msgstr "關閉瀏覽器警告面板" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/dashboard.php:1130 +msgid "View more comments" +msgstr "檢視更多留言" + +#. translators: 1: Type of comment, 2: Post link, 3: Notification if the +#. comment is pending. +#: wp-admin/includes/dashboard.php:900 +msgctxt "dashboard" +msgid "%1$s on %2$s %3$s" +msgstr "在〈%2$s〉,%1$s %3$s" + +#: wp-admin/includes/dashboard.php:809 +msgid "View this comment" +msgstr "檢視這則留言" + +#: wp-admin/includes/class-core-upgrader.php:34 +msgid "Another update is currently in progress." +msgstr "目前正在執行另一項更新程序。" + +#: wp-admin/includes/class-plugin-upgrader-skin.php:85 +#: wp-admin/update-core.php:1215 wp-admin/update-core.php:1256 +msgid "Update progress" +msgstr "更新進度" + +#. translators: %s: Taxonomy term name. +#: wp-admin/includes/class-wp-terms-list-table.php:528 +msgid "View “%s” archive" +msgstr "檢視〈%s〉的彙整" + +#. translators: %s: Taxonomy term name. +#: wp-admin/includes/class-wp-terms-list-table.php:518 +msgid "Delete “%s”" +msgstr "刪除〈%s〉" + +#. translators: %s: Post title. +#. translators: %s: Taxonomy term name. +#: wp-admin/includes/class-wp-posts-list-table.php:1506 +#: wp-admin/includes/class-wp-terms-list-table.php:507 +msgid "Quick edit “%s” inline" +msgstr "快速編輯〈%s〉" + +#: wp-admin/includes/class-wp-plugins-list-table.php:422 +msgid "Search for plugins in the WordPress Plugin Directory." +msgstr "在 WordPress 外掛目錄搜尋外掛" + +#. translators: %s: Attachment title. +#. translators: %s: Post title. +#: wp-admin/includes/class-wp-media-list-table.php:821 +#: wp-admin/includes/class-wp-posts-list-table.php:1518 +msgid "Restore “%s” from the Trash" +msgstr "從回收桶還原〈%s〉" + +#. translators: %s: Attachment title. +#. translators: %s: Post title. +#: wp-admin/includes/class-wp-media-list-table.php:842 +#: wp-admin/includes/class-wp-posts-list-table.php:1536 +msgid "Delete “%s” permanently" +msgstr "永久刪除〈%s〉" + +#. translators: %s: Attachment title. +#. translators: %s: Post title. +#: wp-admin/includes/class-wp-media-list-table.php:829 +#: wp-admin/includes/class-wp-posts-list-table.php:1526 +msgid "Move “%s” to the Trash" +msgstr "將〈%s〉移至回收桶" + +#. translators: %s: Attachment title. +#: wp-admin/includes/class-wp-media-list-table.php:656 +#: wp-admin/includes/class-wp-media-list-table.php:890 +msgid "Attach “%s” to existing content" +msgstr "將〈%s〉關聯至現有的內容" + +#. translators: %s: Title of the post the attachment is attached to. +#: wp-admin/includes/class-wp-media-list-table.php:642 +msgid "Detach from “%s”" +msgstr "解除與〈%s〉的關聯" + +#: wp-admin/includes/class-wp-media-list-table.php:193 +msgctxt "attachment filter" +msgid "Trash" +msgstr "回收桶" + +#: wp-admin/includes/class-wp-comments-list-table.php:867 +msgid "Quick edit this comment inline" +msgstr "快速編輯這則留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:855 +#: wp-admin/includes/dashboard.php:766 +msgid "Edit this comment" +msgstr "編輯這則留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:818 +msgid "Restore this comment from the spam" +msgstr "將這則留言從垃圾留言中還原" + +#. translators: 1: User login, 2: User email address. +#: wp-admin/includes/ajax-actions.php:355 +msgctxt "user autocomplete result" +msgid "%1$s (%2$s)" +msgstr "%1$s (%2$s)" + +#. translators: %s: Importer slug. +#: wp-admin/import.php:67 +msgid "The %s importer is invalid or is not installed." +msgstr "匯入程式 %s 無效或尚未安裝。" + +#: wp-admin/edit-form-comment.php:137 +msgctxt "comment status" +msgid "Pending" +msgstr "待審閱" + +#. translators: %s: Size in pixels. +#: wp-admin/includes/class-custom-image-header.php:650 +msgid "Suggested height is %s." +msgstr "建議高度為 %s。" + +#. translators: %s: Size in pixels. +#: wp-admin/includes/class-custom-image-header.php:638 +msgid "Suggested width is %s." +msgstr "建議寬度為 %s。" + +#. translators: %s: Size in pixels. +#: wp-admin/includes/class-custom-image-header.php:622 +msgid "Images should be at least %s tall." +msgstr "圖片高度至少要為 %s px。" + +#. translators: %d: Custom header width. +#. translators: %d: Custom header height. +#: wp-admin/includes/class-custom-image-header.php:613 +#: wp-admin/includes/class-custom-image-header.php:625 +#: wp-admin/includes/class-custom-image-header.php:641 +#: wp-admin/includes/class-custom-image-header.php:653 +msgid "%d pixels" +msgstr "%d 像素" + +#. translators: %s: Size in pixels. +#: wp-admin/includes/class-custom-image-header.php:610 +msgid "Images should be at least %s wide." +msgstr "圖片寬度至少要為 %s px。" + +#: wp-admin/user-new.php:633 +msgid "Send the new user an email about their account" +msgstr "傳送一封網站帳號資訊的電子郵件給新使用者" + +#: wp-admin/user-new.php:630 +msgid "Send User Notification" +msgstr "傳送使用者通知" + +#. translators: %s: Menu name, or a message indicating that the menu was not +#. found. +#: wp-admin/nav-menus.php:1234 +msgctxt "menu location" +msgid "(Currently set to: %s)" +msgstr "(目前選單: %s)" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:301 +msgid "Version %s addressed one security issue." +msgstr "%s 版修正了 1 個安全性問題。" + +#. translators: The localized Gravatar URL. +#: wp-admin/includes/upgrade.php:291 wp-admin/user-edit.php:648 +msgid "https://gravatar.com/" +msgstr "https://zh-tw.gravatar.com/" + +#: wp-admin/user-edit.php:638 +msgid "Profile Picture" +msgstr "個人資料圖片" + +#: wp-admin/about.php:298 +msgid "Maintenance and Security Releases" +msgstr "維護及安全性更新版本" + +#: wp-admin/about.php:295 +msgid "Security Releases" +msgstr "安全性更新版本" + +#: wp-admin/about.php:292 +msgid "Maintenance Releases" +msgstr "維護版本" + +#: wp-admin/options-permalink.php:246 +msgid "Plain" +msgstr "預設" + +#. translators: %s: Documentation URL. +#: wp-admin/options-permalink.php:226 +msgid "WordPress offers you the ability to create a custom URL structure for your permalinks and archives. Custom URL structures can improve the aesthetics, usability, and forward-compatibility of your links. A number of tags are available, and here are some examples to get you started." +msgstr "WordPress 提供網站管理員為永久連結及彙整建立自訂網址結構的設定。自訂網址結構能為網站連結增進可讀性、可用性及向前相容性 (與更新版本具備相容性)。〈使用永久連結〉線上說明中提供了可用於永久連結結構的標籤說明,以及對應的範例以供參考。" + +#: wp-admin/options-permalink.php:34 +msgid "Permalinks can contain useful information, such as the post date, title, or other elements. You can choose from any of the suggested permalink formats, or you can craft your own if you select Custom Structure." +msgstr "永久連結可以包含相關實用資訊,例如文章日期、標題或其他元素。網站管理員可以在這個頁面中從中選取其中一項建議的永久連結格式,也可以透過 [自訂結構] 功能自行建立專屬格式。" + +#. translators: %s: wp-config.php +#: wp-admin/setup-config.php:430 +msgid "You can create the %s file manually and paste the following text into it." +msgstr "網站管理員可以手動建立 %s 檔案,然後在檔案中貼上以下文字。" + +#. translators: %s: localhost +#: wp-admin/setup-config.php:258 +msgid "You should be able to get this info from your web host, if %s does not work." +msgstr "如果因故無法使用 %s 進行連線,請要求網站主機服務商提供正確對應資訊。" + +#. translators: 1: wp-config-sample.php, 2: wp-config.php +#: wp-admin/setup-config.php:191 +msgid "If for any reason this automatic file creation does not work, do not worry. All this does is fill in the database information to a configuration file. You may also simply open %1$s in a text editor, fill in your information, and save it as %2$s." +msgstr "如果因故導致無法自動建立檔案,請不必擔心,這時只需要將資料庫相關資訊填入網站組態檔案中即可。安裝人員也可以在文字編輯器中開啟 %1$s 並填寫必要的資訊,然後將檔案另存為 %2$s。" + +#. translators: %s: wp-content/uploads +#: wp-admin/options-media.php:131 +msgid "Default is %s" +msgstr "預設上傳路徑為 %s" + +#. translators: 1: .po, 2: .mo, 3: .l10n.php +#: wp-admin/includes/class-language-pack-upgrader.php:359 +msgid "The language pack is missing either the %1$s, %2$s, or %3$s files." +msgstr "語言套件缺少 %1$s、%2$s 或 %3$s 其中一個檔案。" + +#. translators: %s: style.css +#: wp-admin/includes/class-theme-upgrader.php:610 +msgid "The %s stylesheet does not contain a valid theme header." +msgstr "%s 樣式表沒有包含有效的佈景主題標頭。" + +#. translators: %s: style.css +#: wp-admin/includes/class-theme-upgrader.php:585 +msgid "The theme is missing the %s stylesheet." +msgstr "這個佈景主題的安裝套件中缺少 %s 樣式表。" + +#: wp-admin/theme-install.php:231 +msgid "If you have marked themes as favorites on WordPress.org, you can browse them here." +msgstr "如果你曾在 WordPress.org 將佈景主題標示為 [我的最愛],便可以在這裡瀏覽整份清單。" + +#: wp-admin/theme-install.php:214 +msgctxt "themes" +msgid "Favorites" +msgstr "我的最愛" + +#. translators: Hidden accessibility text. +#: wp-admin/maint/repair.php:91 +msgid "Database repair results" +msgstr "資料庫修復結果" + +#. translators: Hidden accessibility text. +#: wp-admin/maint/repair.php:32 +msgid "Allow automatic database repair" +msgstr "允許自動修復資料庫" + +#. translators: Hidden accessibility text. +#: wp-admin/setup-config.php:507 +msgid "Successful database connection" +msgstr "資料庫連線成功" + +#. translators: Hidden accessibility text. +#: wp-admin/setup-config.php:223 +msgid "Set up your database connection" +msgstr "設定網站的資料庫連線" + +#. translators: Hidden accessibility text. +#: wp-admin/setup-config.php:168 +msgid "Before getting started" +msgstr "開始之前" + +#. translators: Hidden accessibility text. +#: wp-admin/maint/repair.php:176 +msgid "WordPress database repair" +msgstr "WordPress 資料庫修復" + +#. translators: Hidden accessibility text. +#: wp-admin/maint/repair.php:81 +msgid "Check secret keys" +msgstr "檢查祕密金鑰" + +#. translators: %s: Nav menu title. +#: wp-admin/includes/nav-menu.php:1515 +msgid "%s has been updated." +msgstr "選單 [%s] 已更新。" + +#. translators: %s: Walker class name. +#: wp-admin/includes/nav-menu.php:1293 +msgid "The Walker class named %s does not exist." +msgstr "名為 %s 的 Walker 類別不存在。" + +#. translators: 1: Drop-in constant name, 2: wp-config.php +#: wp-admin/includes/class-wp-plugins-list-table.php:805 +msgid "Requires %1$s in %2$s file." +msgstr "檔案 %2$s 中需要有 %1$s。" + +#. translators: %s: Date and time. +#: wp-admin/options-general.php:466 +msgid "Standard time begins on: %s." +msgstr "標準時間開始日期: %s。" + +#. translators: %s: Date and time. +#: wp-admin/options-general.php:464 +msgid "Daylight saving time begins on: %s." +msgstr "日光節約時間開始日期: %s。" + +#. translators: %s: File name. +#: wp-admin/includes/media.php:1758 +msgid "You are about to delete %s." +msgstr "即將刪除 %s。" + +#. translators: %s: mu-plugins directory name. +#: wp-admin/includes/class-wp-plugins-list-table.php:689 +msgid "Files in the %s directory are executed automatically." +msgstr "在 %s 目錄中的檔案已自動執行。" + +#: wp-admin/widgets-form.php:511 +msgid "This will clear all items from the inactive widgets list. You will not be able to restore any customizations." +msgstr "這項操作會清除 [未啟用的小工具] 清單中的全部項目。未啟用的小工具內包含之前的自訂設定,這些設定在清除之後便無法還原。" + +#: wp-admin/widgets-form.php:501 +msgid "Clear Inactive Widgets" +msgstr "清除未啟用的小工具" + +#: wp-admin/users.php:164 wp-admin/network/site-users.php:177 +msgid "One of the selected users is not a member of this site." +msgstr "其中一個選取的使用者並不是這個網站的成員。" + +#: wp-admin/users.php:91 wp-admin/network/users.php:278 +msgid "Users list" +msgstr "使用者清單" + +#: wp-admin/users.php:90 wp-admin/network/users.php:277 +msgid "Users list navigation" +msgstr "使用者清單導覽" + +#: wp-admin/users.php:89 wp-admin/network/users.php:276 +msgid "Filter users list" +msgstr "篩選使用者清單" + +#: wp-admin/upload.php:410 +msgid "Media items list" +msgstr "媒體項目清單" + +#: wp-admin/upload.php:409 +msgid "Media items list navigation" +msgstr "媒體項目清單導覽" + +#: wp-admin/upload.php:408 +msgid "Filter media items list" +msgstr "篩選媒體項目清單" + +#: wp-admin/themes.php:754 +msgid "Install Parent Theme" +msgstr "安裝上層佈景主題" + +#. translators: Hidden accessibility text. +#: wp-admin/theme-install.php:278 wp-admin/network/themes.php:347 +msgid "Themes list" +msgstr "佈景主題清單" + +#. translators: Hidden accessibility text. +#: wp-admin/theme-install.php:201 wp-admin/network/themes.php:345 +msgid "Filter themes list" +msgstr "篩選佈景主題清單" + +#: wp-admin/plugins.php:744 +msgid "All selected plugins are up to date." +msgstr "選取的全部外掛均為最新版本。" + +#: wp-admin/plugin-install.php:129 wp-admin/plugins.php:629 +msgid "Plugins list" +msgstr "外掛清單" + +#: wp-admin/plugin-install.php:128 wp-admin/plugins.php:628 +msgid "Plugins list navigation" +msgstr "外掛清單導覽" + +#: wp-admin/plugin-install.php:127 wp-admin/plugins.php:627 +msgid "Filter plugins list" +msgstr "篩選外掛清單" + +#. translators: %s: Plugin name. +#: wp-admin/plugin-editor.php:241 +msgid "Browsing %s (inactive)" +msgstr "瀏覽 %s (未啟用)" + +#. translators: %s: Plugin name. +#. translators: %s: Theme name. +#: wp-admin/plugin-editor.php:238 wp-admin/theme-editor.php:278 +msgid "Editing %s (inactive)" +msgstr "編輯 %s (未啟用)" + +#. translators: %s: Plugin name. +#: wp-admin/plugin-editor.php:233 +msgid "Browsing %s (active)" +msgstr "瀏覽 %s (已啟用)" + +#. translators: %s: Plugin name. +#. translators: %s: Theme name. +#: wp-admin/plugin-editor.php:230 wp-admin/theme-editor.php:275 +msgid "Editing %s (active)" +msgstr "編輯 %s (已啟用)" + +#. translators: %s: Local time. +#: wp-admin/options-general.php:433 +msgid "Local time is %s." +msgstr "本地時間為 %s。" + +#: wp-admin/link-manager.php:85 +msgid "Links list" +msgstr "連結清單" + +#. translators: %s: WordPress version. +#: wp-admin/includes/update.php:284 +msgid "Get Version %s" +msgstr "取得 %s 版" + +#. translators: %s: Hidden accessibility text. Meta box title. +#: wp-admin/includes/template.php:1429 +msgid "Toggle panel: %s" +msgstr "切換面板: %s" + +#: wp-admin/includes/post.php:1924 +msgid "Saving revision…" +msgstr "正在儲存內容修訂..." + +#: wp-admin/includes/post.php:1611 +msgid "Edit permalink" +msgstr "編輯永久連結" + +#. translators: 1: Site Wide Only: true, 2: Network: true +#: wp-admin/includes/plugin.php:99 +msgid "The %1$s plugin header is deprecated. Use %2$s instead." +msgstr "外掛標頭 %1$s 已淘汰不用,請改用 %2$s。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-site-health.php:1092 +#: wp-admin/includes/class-wp-site-health.php:1778 +msgid "Warning" +msgstr "警告" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/template.php:1383 wp-admin/options.php:387 +#: wp-admin/includes/network.php:139 wp-admin/includes/network.php:206 +#: wp-admin/includes/network.php:214 wp-admin/includes/network.php:279 +#: wp-admin/includes/network.php:335 wp-admin/includes/network.php:348 +#: wp-admin/includes/network.php:456 wp-admin/includes/network.php:660 +#: wp-admin/includes/network.php:722 +msgid "Warning:" +msgstr "警告:" + +#: wp-admin/includes/ms.php:991 +msgid "Once you hit “Confirm Deletion”, these users will be permanently removed." +msgstr "當網站管理員點擊 [確認刪除] 後,便會永久移除這些使用者。" + +#: wp-admin/includes/ms.php:989 +msgid "Once you hit “Confirm Deletion”, the user will be permanently removed." +msgstr "當網站管理員點擊 [確認刪除] 後,便會永久移除這個使用者。" + +#: wp-admin/includes/ms.php:974 +msgid "User has no sites or content and will be deleted." +msgstr "使用者沒有任何網站或撰寫過內容,且即將進行刪除。" + +#. translators: %s: Link to user's site. +#: wp-admin/includes/ms.php:959 +msgid "Site: %s" +msgstr "網站: %s" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/ms.php:937 +msgid "Select a user" +msgstr "選取使用者" + +#. translators: %s: User login. +#: wp-admin/includes/ms.php:919 +msgid "What should be done with content owned by %s?" +msgstr "如何處理屬於「%s」的內容?" + +#. translators: %s: User login. +#: wp-admin/includes/ms.php:900 +msgid "Warning! User cannot be deleted. The user %s is a network administrator." +msgstr "警告!由於使用者「%s」是多站網路管理員,因此無法刪除。" + +#. translators: %s: User login. +#: wp-admin/includes/ms.php:890 +msgid "Warning! User %s cannot be deleted." +msgstr "警告!無法刪除使用者「%s」。" + +#: wp-admin/includes/ms.php:869 +msgid "You have chosen to delete the following users from all networks and sites." +msgstr "下方所列出的使用者將會從全部多站網路及相關網站中刪除。" + +#: wp-admin/includes/ms.php:867 +msgid "You have chosen to delete the user from all networks and sites." +msgstr "下方所列出的使用者將會從全部多站網路及相關網站中刪除。" + +#: wp-admin/includes/media.php:1062 +msgid "Invalid image URL." +msgstr "無效的圖片網址。" + +#: wp-admin/includes/file.php:17 +msgid "Theme Header" +msgstr "佈景主題頁首" + +#: wp-admin/includes/file.php:18 +msgid "Theme Footer" +msgstr "佈景主題頁尾" + +#. translators: Date and time format for recent posts on the dashboard, from a +#. different calendar year, see https://www.php.net/manual/datetime.format.php +#: wp-admin/includes/dashboard.php:1027 wp-admin/includes/dashboard.php:1034 +msgid "M jS Y" +msgstr "Y 年 n 月 j 日" + +#. translators: 1: Comment author, 2: Notification if the comment is pending. +#: wp-admin/includes/dashboard.php:871 +msgid "From %1$s %2$s" +msgstr "由「%1$s」發佈 %2$s" + +#: wp-admin/includes/dashboard.php:662 +msgid "View all drafts" +msgstr "檢視全部草稿" + +#: wp-admin/includes/class-wp-users-list-table.php:670 +msgctxt "no user roles" +msgid "None" +msgstr "未獲指派" + +#: wp-admin/includes/class-wp-users-list-table.php:246 +msgid "No role" +msgstr "未獲指派使用者角色" + +#. translators: 1: Title of an update, 2: Error message. +#: wp-admin/includes/class-bulk-upgrader-skin.php:63 +msgid "An error occurred while updating %1$s: %2$s" +msgstr "更新 %1$s 時發生錯誤: %2$s" + +#: wp-admin/includes/class-wp-screen.php:1333 +msgid "View mode" +msgstr "檢視模式" + +#. translators: %s: Number of columns on the page. +#: wp-admin/includes/class-wp-screen.php:1218 +msgid "%s column" +msgid_plural "%s columns" +msgstr[0] "%s 欄" + +#: wp-admin/includes/class-wp-screen.php:1007 +msgid "Additional settings" +msgstr "其他設定" + +#: wp-admin/includes/class-wp-screen.php:764 +msgid "Items list" +msgstr "項目清單" + +#: wp-admin/includes/class-wp-screen.php:763 +msgid "Items list navigation" +msgstr "項目清單導覽" + +#: wp-admin/includes/class-wp-screen.php:762 +msgid "Filter items list" +msgstr "篩選項目清單" + +#: wp-admin/includes/class-wp-plugins-list-table.php:912 +msgid "Network Only" +msgstr "僅能由多站網路管理員啟用" + +#: wp-admin/includes/class-wp-plugins-list-table.php:908 +msgid "Network Active" +msgstr "已於多站網路中啟用" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:945 +msgid "No pending comments" +msgstr "沒有待審閱的留言" + +#. translators: %s: hostname:port +#: wp-admin/includes/class-wp-filesystem-ssh2.php:176 +msgid "Failed to initialize a SFTP subsystem session with the SSH2 Server %s" +msgstr "無法透過 SSH2 伺服器 %s 初始化 SFTP 子系統工作階段" + +#: wp-admin/includes/class-wp-comments-list-table.php:508 +msgctxt "column name" +msgid "Submitted on" +msgstr "發佈日期" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-comments-list-table.php:293 +msgctxt "comments" +msgid "Trash (%s)" +msgid_plural "Trash (%s)" +msgstr[0] "回收桶 (%s)" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-comments-list-table.php:286 +msgctxt "comments" +msgid "Spam (%s)" +msgid_plural "Spam (%s)" +msgstr[0] "垃圾留言 (%s)" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-comments-list-table.php:279 +msgctxt "comments" +msgid "Approved (%s)" +msgid_plural "Approved (%s)" +msgstr[0] "已核准 (%s)" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-comments-list-table.php:272 +msgctxt "comments" +msgid "Pending (%s)" +msgid_plural "Pending (%s)" +msgstr[0] "待審閱 (%s)" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-comments-list-table.php:258 +msgctxt "comments" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#. translators: %s: The new user. +#: wp-admin/includes/ajax-actions.php:1788 +msgid "User %s added" +msgstr "已新增使用者「%s」" + +#: wp-admin/export.php:229 wp-admin/export.php:281 wp-admin/export.php:326 +msgid "End date:" +msgstr "結束日期:" + +#. translators: Hidden accessibility text. +#: wp-admin/export.php:186 +msgid "Content to export" +msgstr "匯出內容" + +#: wp-admin/edit.php:266 +msgid "You can view posts in a simple title list or with an excerpt using the Screen Options tab." +msgstr "使用者可以在 [顯示項目設定] 分頁中設定要單純以標題顯示文章清單,或是以標題含內容摘要的方式顯示文章清單。" + +#. translators: %s: Comment date. +#: wp-admin/edit-form-comment.php:156 +msgid "Submitted on: %s" +msgstr "發佈日期: %s" + +#: wp-admin/edit-form-comment.php:37 +msgctxt "comment" +msgid "Permalink:" +msgstr "永久連結:" + +#: wp-admin/edit-form-advanced.php:201 +msgid "Page draft updated." +msgstr "頁面草稿已更新。" + +#. translators: %s: Scheduled date for the page. +#: wp-admin/edit-form-advanced.php:200 +msgid "Page scheduled for: %s." +msgstr "頁面排程發佈時間: %s。" + +#: wp-admin/edit-form-advanced.php:198 +msgid "Page submitted." +msgstr "頁面已提交。" + +#: wp-admin/edit-form-advanced.php:186 +msgid "Post draft updated." +msgstr "文章草稿已更新。" + +#. translators: %s: Scheduled date for the post. +#: wp-admin/edit-form-advanced.php:185 +msgid "Post scheduled for: %s." +msgstr "文章排程發佈時間: %s。" + +#: wp-admin/edit-form-advanced.php:183 +msgid "Post submitted." +msgstr "文章已提交。" + +#: wp-admin/edit-form-advanced.php:159 +msgid "View page" +msgstr "檢視頁面" + +#: wp-admin/edit-form-advanced.php:145 wp-admin/edit-form-advanced.php:152 +msgid "Preview page" +msgstr "預覽頁面" + +#: wp-admin/edit-form-advanced.php:124 wp-admin/edit-form-advanced.php:131 +msgid "Preview post" +msgstr "預覽文章" + +#: wp-admin/edit-comments.php:239 +msgid "Comments list" +msgstr "留言清單" + +#: wp-admin/edit-comments.php:238 +msgid "Comments list navigation" +msgstr "留言清單導覽" + +#: wp-admin/edit-comments.php:237 +msgid "Filter comments list" +msgstr "篩選留言清單" + +#: wp-admin/edit-comments.php:222 +msgid "In the Submitted on column, the date and time the comment was left on your site appears. Clicking on the date/time link will take you to that comment on your live site." +msgstr "[發佈日期] 欄位會顯示該則留言發佈於網站上的日期及時間。點擊留言的發佈日期/時間,便會進入該則留言在網站前端頁面的位置。" + +#: wp-admin/edit-comments.php:220 +msgid "In the Comment column, hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment." +msgstr "將游標暫留於 [留言資訊] 欄位中的任何留言,便能進行核准、回覆 (及核准回覆留言)、快速編輯、編輯、標示為垃圾留言或將留言移至回收桶等多項操作。" + +#. translators: %s: Comments count. +#: wp-admin/edit-comments.php:194 wp-admin/js/edit-comments.js:196 +#: wp-admin/js/edit-comments.js:216 +msgid "Comments (%s)" +msgstr "留言 (%s)" + +#. translators: 1: Comments count, 2: Post title. +#: wp-admin/edit-comments.php:175 +msgid "Comments (%1$s) on “%2$s”" +msgstr "在〈%2$s〉中有 %1$s 則留言" + +#: wp-admin/includes/ajax-actions.php:5586 +msgid "Sorry, you are not allowed to modify themes." +msgstr "很抱歉,目前的登入身分沒有修改佈景主題的權限。" + +#: wp-admin/includes/class-custom-image-header.php:1033 +msgid "The active theme does not support a flexible sized header image." +msgstr "目前使用的佈景主題不支援可變尺寸頁首圖片。" + +#: wp-admin/includes/user.php:542 +msgid "You are using the auto-generated password for your account. Would you like to change it?" +msgstr "你目前登入所使用的是系統之前自動產生的密碼,是否需要變更密碼?" + +#: wp-admin/users.php:528 +msgid "You have specified this user for removal:" +msgstr "目前指定移除的使用者如下所列:" + +#. translators: %s: User's display name. +#: wp-admin/user-edit.php:782 +msgid "Log %s out of all locations." +msgstr "將使用者「%s」從全部裝置登出。" + +#: wp-admin/user-edit.php:770 +msgid "Did you lose your phone or leave your account logged in at a public computer? You can log out everywhere else, and stay logged in here." +msgstr "是否遺失手機或曾在公用電腦上進行登入?執行這項操作便可從全部裝置登出,只保留這台裝置的登入階段。" + +#: wp-admin/user-edit.php:758 wp-admin/user-edit.php:768 +msgid "Log Out Everywhere Else" +msgstr "從除了這台裝置之外的全部裝置登出" + +#: wp-admin/user-edit.php:756 wp-admin/user-edit.php:766 +#: wp-admin/user-edit.php:776 +msgid "Sessions" +msgstr "登入工作階段" + +#: wp-admin/user-edit.php:702 +msgid "Cancel password change" +msgstr "取消密碼變更" + +#: wp-admin/user-new.php:599 +msgid "Generate password" +msgstr "產生密碼" + +#: wp-admin/user-edit.php:685 +msgid "Account Management" +msgstr "帳號管理" + +#. translators: The non-breaking space prevents 1Password from thinking the +#. text "log in" should trigger a password save prompt. +#: wp-admin/install.php:154 +msgid "You will need this password to log in. Please store it in a secure location." +msgstr "這是安裝完成後用於登入網站的密碼,請將它儲存在安全的位置。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:912 +msgid "No approved comments" +msgstr "沒有已核准的留言" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-list-table.php:862 +msgid "%s pending comment" +msgid_plural "%s pending comments" +msgstr[0] "%s 則待審閱留言" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-list-table.php:856 +msgid "%s approved comment" +msgid_plural "%s approved comments" +msgstr[0] "%s 則已核准留言" + +#: wp-admin/includes/ajax-actions.php:4033 +msgid "Image could not be processed." +msgstr "圖片無法進行處理。" + +#: wp-admin/install.php:168 wp-admin/user-edit.php:721 +#: wp-admin/user-new.php:621 +msgid "Confirm Password" +msgstr "確認密碼" + +#: wp-admin/options-general.php:207 +msgid "Remove Site Icon" +msgstr "移除網站圖示" + +#. translators: 1: wp-config.php, 2: Secret key service URL. +#: wp-admin/maint/repair.php:85 +msgid "While you are editing your %1$s file, take a moment to make sure you have all 8 keys and that they are unique. You can generate these using the WordPress.org secret key service." +msgstr "編輯這個網站的 %1$s 檔案時,請用一點時間確認網站目前 8 個金鑰的唯一性。網站管理員可以使用 WordPress.org 秘密金鑰服務自動產生秘密金鑰。" + +#: wp-admin/options-general.php:192 +msgid "Set as Site Icon" +msgstr "設定為網站圖示" + +#: wp-admin/options-general.php:190 wp-admin/options-general.php:199 +msgid "Choose a Site Icon" +msgstr "選取網站圖示" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-application-passwords-list-table.php:258 +#: wp-admin/includes/class-wp-comments-list-table.php:938 +#: wp-admin/includes/class-wp-list-table.php:684 +#: wp-admin/includes/class-wp-list-table.php:1817 +#: wp-admin/includes/update.php:933 +msgid "Show more details" +msgstr "顯示更多詳細資料" + +#. translators: %s: Number of menus. +#: wp-admin/nav-menus.php:842 +msgid "Your theme supports %s menu. Select which menu appears in each location." +msgid_plural "Your theme supports %s menus. Select which menu appears in each location." +msgstr[0] "目前使用的佈景主題提供 %s 個位置顯示選單,請選取指定位置要顯示的選單。" + +#. translators: Hidden accessibility text. %s: Number of posts. +#: wp-admin/includes/class-wp-users-list-table.php:607 +msgid "%s post by this author" +msgid_plural "%s posts by this author" +msgstr[0] "這個作者已發佈 %s 篇文章" + +#. translators: Hidden accessibility text. %s: Theme name. +#: wp-admin/includes/class-theme-installer-skin.php:149 +#: wp-admin/includes/class-theme-upgrader-skin.php:105 +msgid "Live Preview “%s”" +msgstr "即時預覽 %s" + +#: wp-admin/options-discussion.php:138 +msgid "last page" +msgstr "最末頁" + +#: wp-admin/options-discussion.php:139 +msgid "first page" +msgstr "第一頁" + +#. translators: %s: Post link. +#: wp-admin/edit-form-comment.php:197 +msgid "In response to: %s" +msgstr "回應目標: %s" + +#. translators: Hidden accessibility text. +#: wp-admin/edit-form-comment.php:169 wp-admin/includes/meta-boxes.php:304 +msgid "Date and time" +msgstr "日期及時間" + +#: wp-admin/edit-form-advanced.php:355 +msgid "You can also embed media from many popular websites including Twitter, YouTube, Flickr and others by pasting the media URL on its own line into the content of your post/page. Learn more about embeds." +msgstr "使用者還可以透過將媒體檔案網址貼上至文章/頁面的內容中的方式,藉以嵌入來自包含 Twitter、YouTube、Flickr 等熱門網站的內容。進一步了解嵌入內容。" + +#: wp-admin/includes/class-custom-background.php:110 +msgid "Documentation on Custom Background" +msgstr "〈自訂背景〉線上說明" + +#: wp-admin/edit-tags.php:310 +msgid "Documentation on Link Categories" +msgstr "〈連結分類〉線上說明" + +#: wp-admin/edit-link-form.php:76 +msgid "Documentation on Creating Links" +msgstr "〈建立連結〉線上說明" + +#: wp-admin/link-manager.php:79 +msgid "Documentation on Managing Links" +msgstr "〈管理連結〉線上說明" + +#: wp-admin/includes/class-custom-image-header.php:145 +msgid "Documentation on Custom Header" +msgstr "〈自訂頁首〉線上說明" + +#: wp-admin/my-sites.php:52 +msgid "Documentation on My Sites" +msgstr "〈我的網站〉線上說明" + +#: wp-admin/widgets.php:24 +msgid "The theme you are currently using is not widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please follow these instructions." +msgstr "這個網站目前使用的佈景主題不支援小工具功能,這代表它沒有內建任何可供網站管理員進行設定的資訊欄。如需進一步了解如何製作支援小工具功能的佈景主題,請參考這篇線上文件。" + +#. translators: %s: Documentation URL. +#: wp-admin/options-writing.php:223 +msgid "When you publish a new post, WordPress automatically notifies the following site update services. For more about this, see the Update Services documentation article. Separate multiple service URLs with line breaks." +msgstr "使用者發佈新文章後,WordPress 會自動向下列網站更新服務傳送通知。如需進一步了解相關資訊,請參閱〈更新服務〉線上說明。請以每行一個服務網址的方式分隔多個更新服務。" + +#: wp-admin/includes/options.php:137 +msgid "The character encoding of your site (UTF-8 is recommended)" +msgstr "這個網站的字元編碼方式 (建議使用 UTF-8)" + +#: wp-admin/includes/file.php:2588 +msgid "example: www.wordpress.org" +msgstr "範例: tw.wordpress.org" + +#: wp-admin/themes.php:138 +msgid "The search for installed themes will search for terms in their name, description, author, or tag." +msgstr "搜尋已安裝的佈景主題時,會一併以相同關鍵字在佈景主題名稱、內容說明、開發者或標籤中進行搜尋。" + +#: wp-admin/theme-install.php:113 +msgid "Alternately, you can browse the themes that are Popular or Latest. When you find a theme you like, you can preview it or install it." +msgstr "此外,網站管理員也可以在 [熱門] 或 [最新上架] 分類分頁中瀏覽佈景主題;找到屬意的佈景主題後,便可以進行預覽或安裝。" + +#: wp-admin/theme-install.php:112 +msgid "You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter." +msgstr "網站管理員可以使用關鍵字、開發者、標籤作為條件搜尋佈景主題,也可以依特色篩選條件中列出的條件進行更精準的搜尋。" + +#. translators: %d: Number of themes. +#: wp-admin/theme-install.php:68 wp-admin/themes.php:237 +msgid "Number of Themes found: %d" +msgstr "已找到的佈景主題數量: %d" + +#. translators: Hidden accessibility text. +#: wp-admin/options-general.php:564 +msgid "Custom time format:" +msgstr "自訂時間格式:" + +#. translators: Hidden accessibility text. +#: wp-admin/options-general.php:560 +msgid "enter a custom time format in the following field" +msgstr "在下方欄位輸入自訂時間格式" + +#. translators: Hidden accessibility text. +#: wp-admin/options-general.php:519 +msgid "Custom date format:" +msgstr "自訂日期格式:" + +#. translators: Hidden accessibility text. +#: wp-admin/options-general.php:515 +msgid "enter a custom date format in the following field" +msgstr "在下方欄位輸入自訂日期格式" + +#: wp-admin/includes/class-plugin-upgrader.php:66 +msgid "Plugins updated successfully." +msgstr "外掛已成功更新。" + +#. translators: %s: Number of millions. +#: wp-admin/includes/class-wp-plugin-install-list-table.php:713 +#: wp-admin/includes/plugin-install.php:691 +msgctxt "Active plugin installations" +msgid "%s+ Million" +msgid_plural "%s+ Million" +msgstr[0] "超過 %s 百萬" + +#. translators: 1: Error message, 2: Line number. +#: wp-admin/link-parse-opml.php:93 +msgid "XML Error: %1$s at line %2$s" +msgstr "XML 錯誤: %1$s (發生於第 %2$s 行)" + +#: wp-admin/menu-header.php:293 +msgid "Main menu" +msgstr "主要選單" + +#: wp-admin/includes/file.php:2638 +msgid "Enter the location on the server where the public and private keys are located. If a passphrase is needed, enter that in the password field above." +msgstr "請輸入公開金鑰及私密金鑰在伺服器上的位置。如果需要密碼,請在上方密碼欄位中輸入必要的密碼。" + +#. translators: %s: Number of users. +#: wp-admin/users.php:623 +msgid "%s user deleted." +msgid_plural "%s users deleted." +msgstr[0] "%s 個使用者已刪除。" + +#: wp-admin/users.php:413 +msgid "What should be done with content owned by these users?" +msgstr "如何處理屬於這些使用者的內容?" + +#: wp-admin/users.php:363 +msgid "You have specified these users for deletion:" +msgstr "目前指定刪除的使用者如下所列:" + +#: wp-admin/plugins.php:369 +msgid "You are about to remove the following plugins:" +msgstr "即將移除以下外掛:" + +#: wp-admin/plugins.php:360 +msgid "These plugins may be active on other sites in the network." +msgstr "這些外掛已於多站網路的其他網站中啟用。" + +#: wp-admin/plugins.php:357 +msgid "Delete Plugins" +msgstr "刪除外掛" + +#: wp-admin/edit.php:373 +msgid "1 page not updated, somebody is editing it." +msgstr "由於某個使用者正在進行編輯,所以有 1 個頁面未更新。" + +#: wp-admin/edit.php:360 +msgid "1 post not updated, somebody is editing it." +msgstr "由於某個使用者正在進行編輯,所以有 1 篇文章未更新。" + +#: wp-admin/user-edit.php:64 +msgid "You can log out of other devices, such as your phone or a public computer, by clicking the Log Out Everywhere Else button." +msgstr "使用者可以在這裡統一登出其他裝置。舉例來說,如果要從手機或公用電腦登出,僅需點擊 [從除了這台裝置之外的全部裝置登出] 按鈕即可。" + +#: wp-admin/update-core.php:829 +msgid "New translations are available." +msgstr "已有新版語言套件可供更新。" + +#: wp-admin/theme-install.php:531 +msgid "This theme has not been rated yet." +msgstr "這個佈景主題尚無任何評分。" + +#. translators: Date and time format for exact current time, mainly about +#. timezones, see https://www.php.net/manual/datetime.format.php +#: wp-admin/options-general.php:23 +msgctxt "timezone date format" +msgid "Y-m-d H:i:s" +msgstr "Y 年 n 月 j 日a g:i:s" + +#: wp-admin/nav-menus.php:747 +msgid "To add a custom link, expand the Custom Links section, enter a URL and link text, and click Add to Menu" +msgstr "如需新增自訂連結,請展開 [自訂連結] 區段並輸入網址及連結文字,然後點擊 [新增至選單] 便可完成。" + +#. translators: Do not translate USERNAME, URL_DELETE, SITENAME, SITEURL: those +#. are placeholders. +#: wp-admin/ms-delete-site.php:58 +msgid "" +"Howdy ###USERNAME###,\n" +"\n" +"You recently clicked the 'Delete Site' link on your site and filled in a\n" +"form on that page.\n" +"\n" +"If you really want to delete your site, click the link below. You will not\n" +"be asked to confirm again so only click this link if you are absolutely certain:\n" +"###URL_DELETE###\n" +"\n" +"If you delete your site, please consider opening a new site here some time in\n" +"the future! (But remember that your current site and username are gone forever.)\n" +"\n" +"Thank you for using the site,\n" +"All at ###SITENAME###\n" +"###SITEURL###" +msgstr "" +"###USERNAME### 你好,\n" +"\n" +"你最近在你的網站上點擊了 [刪除網站] 連結,並且在該頁面上完成表單填寫。\n" +"\n" +"如果確定要刪除網站,請點擊下方連結,之後便不會再次要求進行刪除確認:\n" +"###URL_DELETE###\n" +"\n" +"刪除網站後,將來還可以再建立一個新網站!需要注意的是,目前的網站及使用者名稱會永遠消失。\n" +"\n" +"感謝你的使用,\n" +"《###SITENAME###》網站管理員敬上\n" +"###SITEURL###" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme.php:843 wp-admin/themes.php:1069 +msgid "Close details dialog" +msgstr "關閉詳細資料對話方塊" + +#: wp-admin/includes/template.php:2819 wp-admin/includes/template.php:2838 +msgid "You are currently editing the page that shows your latest posts." +msgstr "目前正在編輯顯示這個網站最新文章的頁面。" + +#: wp-admin/includes/class-wp-screen.php:1240 +msgid "Number of items per page:" +msgstr "每頁顯示項目數量:" + +#: wp-admin/includes/revision.php:295 +msgctxt "revision date short format" +msgid "j M @ H:i" +msgstr "n 月 j 日a g:i" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/ms.php:314 wp-admin/network/settings.php:416 +msgid "Size in megabytes" +msgstr "網站儲存空間大小 (單位為 MB)" + +#: wp-admin/includes/ms.php:306 +msgid "Site Upload Space Quota" +msgstr "網站上傳空間配額" + +#: wp-admin/includes/class-wp-automatic-updater.php:1665 +msgid "" +"UPDATE LOG\n" +"==========" +msgstr "" +"更新記錄\n" +"==========" + +#: wp-admin/includes/class-wp-automatic-updater.php:1642 +msgid "" +"BETA TESTING?\n" +"=============\n" +"\n" +"This debugging email is sent when you are using a development version of WordPress.\n" +"\n" +"If you think these failures might be due to a bug in WordPress, could you report it?\n" +" * Open a thread in the support forums: https://wordpress.org/support/forum/alphabeta\n" +" * Or, if you're comfortable writing a bug report: https://core.trac.wordpress.org/\n" +"\n" +"Thanks! -- The WordPress Team" +msgstr "" +"網站正在進行 BETA 版測試?\n" +"=============\n" +"\n" +"當網站執行的是 WordPress 開發版本時,系統便會將這封偵錯電子郵件傳送給網站管理員。\n" +"\n" +"如果你認為網站發生的問題肇因於 WordPress 的程式碼錯誤,可否請你回報這些錯誤?\n" +" * 請在技術支援論壇建立一個新的討論串:https://wordpress.org/support/forum/alphabeta\n" +" * 或撰寫一份程式碼錯誤報告:https://core.trac.wordpress.org/\n" +"\n" +"由衷感謝! -- WordPress 團隊" + +#: wp-admin/includes/revision.php:251 wp-admin/includes/revision.php:294 +msgid "M j, Y @ H:i" +msgstr "Y 年 n 月 j 日a g:i" + +#: wp-admin/comment.php:228 +msgid "Submitted on" +msgstr "發佈日期" + +#. translators: Column name or table row header. +#: wp-admin/comment.php:202 +#: wp-admin/includes/class-wp-comments-list-table.php:505 +msgid "In response to" +msgstr "回應目標" + +#. translators: 1: Month, 2: Day, 3: Year, 4: Hour, 5: Minute. +#: wp-admin/includes/template.php:866 wp-admin/js/comment.js:89 +#: wp-admin/js/post.js:813 +msgid "%1$s %2$s, %3$s at %4$s:%5$s" +msgstr "%3$s 年 %1$s %2$s 日 %4$s:%5$s" + +#: wp-admin/font-library.php:16 +msgid "Sorry, you are not allowed to manage fonts on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上管理字型的權限。" + +#: wp-admin/user-edit.php:760 +msgid "You are only logged in at this location." +msgstr "執行這項操作後,僅會保留這台裝置的登入工作階段。" + +#: wp-admin/includes/plugin-install.php:405 +msgid "These suggestions are based on the plugins you and other users have installed." +msgstr "這些建議是依據這個網站及其他使用者安裝過的外掛所產生的結果。" + +#: wp-admin/edit-form-advanced.php:290 +msgid "You can enable distraction-free writing mode using the icon to the right. This feature is not available for old browsers or devices with small screens, and requires that the full-height editor be enabled in Screen Options." +msgstr "使用者可以點擊位於右側的圖示以啟用 [專注模式]。這項功能不適用於舊版瀏覽器或小螢幕裝置,且必須先在 [顯示項目設定] 中啟用全版高度編輯器。" + +#: wp-admin/user-edit.php:778 +msgid "Log Out Everywhere" +msgstr "從全部裝置登出" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:113 +msgctxt "Plugin Installer" +msgid "Recommended" +msgstr "推薦" + +#. translators: New site notification email. 1: New site URL, 2: User login, 3: +#. User password or password reset link, 4: Login URL. +#: wp-admin/includes/upgrade.php:589 +msgid "" +"Your new WordPress site has been successfully set up at:\n" +"\n" +"%1$s\n" +"\n" +"You can log in to the administrator account with the following information:\n" +"\n" +"Username: %2$s\n" +"Password: %3$s\n" +"Log in here: %4$s\n" +"\n" +"We hope you enjoy your new site. Thanks!\n" +"\n" +"--The WordPress Team\n" +"https://wordpress.org/\n" +msgstr "" +"新的 WordPress 網站已成功建立,網址如下:\n" +"\n" +"%1$s\n" +"\n" +"請使用以下資訊登入網站管理員帳號:\n" +"\n" +"使用者名稱:%2$s\n" +"密碼:%3$s\n" +"登入頁面網址:%4$s\n" +"\n" +"希望你會喜歡這個新網站,感謝使用!\n" +"\n" +"-- WordPress 團隊\n" +"https://tw.wordpress.org/\n" + +#: wp-admin/themes.php:301 +msgid "You cannot delete a theme while it has an active child theme." +msgstr "無法刪除使用中的子佈景主題的上層佈景主題。" + +#: wp-admin/options-discussion.php:273 +msgid "Mystery Person" +msgstr "神秘人士" + +#: wp-admin/install.php:126 +msgid "Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol." +msgstr "使用者名稱只能使用數字、英文字母、空白、底線、連字號、句號及 @ 符號。" + +#: wp-admin/includes/class-wp-screen.php:1009 +msgid "Enable full-height editor and distraction-free functionality." +msgstr "啟用全版高度編輯器及 [專注模式]" + +#. translators: Link to the Planet feed of the locale. +#: wp-admin/includes/dashboard.php:1598 +msgid "https://planet.wordpress.org/feed/" +msgstr "https://planet.wordpress.org/feed/" + +#. translators: Link to the Planet website of the locale. +#: wp-admin/includes/dashboard.php:1585 wp-admin/index.php:98 +msgid "https://planet.wordpress.org/" +msgstr "https://planet.wordpress.org/" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:728 +msgid "Untested with your version of WordPress" +msgstr "尚未與這個網站的 WordPress 版本進行相容性測試" + +#: wp-admin/includes/meta-boxes.php:1180 +msgid "All categories" +msgstr "全部分類" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-comments-list-table.php:541 +msgid "Filter by comment type" +msgstr "依留言類型篩選" + +#. translators: %s: User's display name. +#: wp-admin/includes/ajax-actions.php:4008 +msgid "%s has been logged out." +msgstr "「%s」已登出。" + +#: wp-admin/includes/ajax-actions.php:4004 +msgid "You are now logged out everywhere else." +msgstr "已在除了這台裝置之外的全部裝置登出。" + +#: wp-admin/includes/ajax-actions.php:3995 +msgid "Could not log out user sessions. Please try again." +msgstr "無法登出使用者工作階段,請再試一次。" + +#: wp-admin/includes/ajax-actions.php:3866 +msgid "This preview is unavailable in the editor." +msgstr "無法在編輯器中預覽。" + +#: wp-admin/edit-form-advanced.php:289 +msgid "You can insert media files by clicking the button above the post editor and following the directions. You can align or edit images using the inline formatting toolbar available in Visual mode." +msgstr "使用者可以點擊文章編輯器上方的按鈕並依照指示以插入媒體檔案,還可以在 [預覽] 模式中使用格式化工具列以對齊或編輯圖片。" + +#: wp-admin/edit-form-advanced.php:286 +msgid "Post editor — Enter the text for your post. There are two modes of editing: Visual and Code. Choose the mode by clicking on the appropriate tab." +msgstr "文章編輯器 — 作者撰寫文章內容的區域。文章編輯器提供 [預覽] 及 [程式碼] 兩種編輯模式,可透過點擊對應的編輯模式分頁進行切換。" + +#. translators: %s: URL to header image configuration in Customizer. +#: wp-admin/includes/class-custom-image-header.php:518 +msgid "You can now manage and live-preview Custom Header in the Customizer." +msgstr "網站管理員可以在外觀自訂器中管理並即時預覽自訂頁首。" + +#. translators: %s: URL to background image configuration in Customizer. +#: wp-admin/includes/class-custom-background.php:249 +msgid "You can now manage and live-preview Custom Backgrounds in the Customizer." +msgstr "網站管理員可以在外觀自訂器中進行管理並即時預覽自訂背景。" + +#: wp-admin/includes/class-wp-screen.php:1140 +msgctxt "Welcome panel" +msgid "Welcome" +msgstr "歡迎使用" + +#. translators: %s: Number of users. +#. translators: Number of users. +#: wp-admin/includes/class-wp-users-list-table.php:206 +#: wp-admin/includes/class-wp-ms-users-list-table.php:144 +msgctxt "users" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#: wp-admin/edit-link-form.php:123 +#: wp-admin/includes/class-wp-links-list-table.php:138 +#: wp-admin/includes/class-wp-links-list-table.php:154 +msgctxt "link name" +msgid "Name" +msgstr "連結名稱" + +#. translators: %s: Placeholder that must come at the start of the URL. +#: wp-admin/options-permalink.php:413 +msgid "If you like, you may enter custom structures for your category and tag URLs here. For example, using topics as your category base would make your category links like %s/topics/uncategorized/. If you leave these blank the defaults will be used." +msgstr "如有需要,網站管理員可以為這個網站自訂分類及標籤的網址結構。舉例來說,將 topics 設定為這個網站的分類目錄起點,則分類彙整網址會成為 %s/topics/uncategorized/。如果在 [分類目錄起點] 及 [標籤目錄起點] 欄位留空,代表使用系統預設值。" + +#: wp-admin/credits.php:142 +msgid "Release Lead" +msgstr "產品發佈負責人" + +#: wp-admin/upload.php:193 +msgid "Use the arrow buttons at the top of the dialog, or the left and right arrow keys on your keyboard, to navigate between media items quickly." +msgstr "使用對話方塊頂端的箭號按鈕或鍵盤上的向左/向右鍵,便能快速瀏覽媒體檔案內容。" + +#: wp-admin/upload.php:194 +msgid "You can also delete individual items and access the extended edit screen from the details dialog." +msgstr "在 [附件詳細資料] 對話方塊中也可以刪除單一項目,或存取進階編輯畫面。" + +#: wp-admin/upload.php:192 +msgid "Clicking an item will display an Attachment Details dialog, which allows you to preview media and make quick edits. Any changes you make to the attachment details will be automatically saved." +msgstr "點擊媒體檔案便會出現 [附件詳細資料] 對話方塊,在這個對話方塊中使用者可以預覽媒體並進行快速編輯。使用者對附件詳細資料所進行的變更均會自動儲存。" + +#: wp-admin/upload.php:182 wp-admin/upload.php:373 +msgid "You can view your media in a simple visual grid or a list with columns. Switch between these views using the icons to the left above the media." +msgstr "使用者可以透過簡潔的 [格狀檢視] 或 [清單檢視] 進行媒體檔案的視覺化檢視。請使用媒體清單上方檢視方式左側的圖示切換檢視方式。" + +#: wp-admin/upload.php:181 +msgid "All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first." +msgstr "使用者上傳的全部檔案均會顯示於 [媒體庫],並會依上傳時間排序列出。" + +#: wp-admin/plugin-install.php:113 +msgid "If you just want to get an idea of what’s available, you can browse Featured and Popular plugins by using the links above the plugins list. These sections rotate regularly." +msgstr "如果只想了解有哪些不錯的外掛可供選用,請使用外掛清單上方的 [精選] 及 [熱門] 分頁來瀏覽外掛,這兩項分類的內容會常態新更新。" + +#: wp-admin/plugin-install.php:155 +msgid "Browse Plugins" +msgstr "瀏覽外掛" + +#: wp-admin/plugin-install.php:51 +msgid "Add Plugins" +msgstr "安裝外掛" + +#. translators: 1: WPLANG, 2: wp-config.php +#: wp-admin/options-general.php:368 +msgid "The %1$s constant in your %2$s file is no longer needed." +msgstr "這個網站的 %2$s 檔案中的常數 %1$s 已不再需要。" + +#: wp-admin/includes/translation-install.php:38 +msgid "Invalid translation type." +msgstr "無效的語言套件類型。" + +#: wp-admin/install.php:386 +msgid "Welcome to the famous five-minute WordPress installation process! Just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world." +msgstr "歡迎使用著名的 WordPress 五分鐘安裝程式!僅需填寫以下資訊,便能開始使用這個世界上最具擴充性、功能最強大的個人發佈平台。" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:732 +msgid "Compatible with your version of WordPress" +msgstr "相容於這個網站的 WordPress 版本" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:730 +msgid "Incompatible with your version of WordPress" +msgstr "不相容於這個網站的 WordPress 版本" + +#. translators: %s: Number of stars. +#: wp-admin/includes/plugin-install.php:761 +msgid "%d star" +msgid_plural "%d stars" +msgstr[0] "%d 星" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:599 +msgid "Select bulk action" +msgstr "選取批次操作" + +#: wp-admin/user-new.php:489 wp-admin/user-new.php:656 +msgid "Add the user without sending an email that requires their confirmation" +msgstr "不須傳送使用者確認郵件,直接新增使用者" + +#. translators: %s: List view URL. +#: wp-admin/upload.php:237 +msgid "The grid view for the Media Library requires JavaScript. Switch to the list view." +msgstr "媒體庫的格狀檢視需要 JavaScript 才能使用。切換至清單檢視。" + +#: wp-admin/credits.php:36 wp-admin/includes/plugin-install.php:775 +msgid "Contributors" +msgstr "參與者" + +#: wp-admin/includes/plugin-install.php:706 +#: wp-admin/includes/plugin-install.php:793 +msgid "Donate to this plugin »" +msgstr "贊助這個外掛 »" + +#: wp-admin/includes/plugin-install.php:576 +msgctxt "Plugin installer section title" +msgid "Reviews" +msgstr "使用者評論" + +#. translators: %s: Support email address. +#: wp-admin/includes/class-wp-automatic-updater.php:1054 +msgid "The WordPress team is willing to help you. Forward this email to %s and the team will work with you to make sure your site is working." +msgstr "WordPress 團隊非常願意協助你。請將這封電子郵件轉寄至 %s,我們的團隊將會協助你以確保網站正常運作。" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:67 +msgctxt "themes" +msgid "Recently Updated" +msgstr "最近更新" + +#: wp-admin/includes/class-wp-terms-list-table.php:200 +#: wp-admin/includes/class-wp-terms-list-table.php:222 +msgctxt "Number/count of items" +msgid "Count" +msgstr "項目數量" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1216 +msgid "View details" +msgstr "檢視詳細資料" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:575 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:827 +msgid "More Details" +msgstr "更多詳細資料" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:494 +msgctxt "Plugin installer group title" +msgid "Tools" +msgstr "工具" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:493 +msgctxt "Plugin installer group title" +msgid "Social" +msgstr "社交" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:492 +msgctxt "Plugin installer group title" +msgid "Performance" +msgstr "效能" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:108 +msgctxt "Plugin Installer" +msgid "Beta Testing" +msgstr "Beta 版測試" + +#. translators: %s: URL that could not be embedded. +#: wp-admin/includes/ajax-actions.php:3832 +msgid "%s failed to embed." +msgstr "無法嵌入來自 %s 的內容。" + +#: wp-admin/theme-install.php:269 +msgid "Filtering by:" +msgstr "篩選條件:" + +#: wp-admin/includes/media.php:3304 +msgid "Displayed on attachment pages." +msgstr "[內容說明] 欄位的資料會顯示於附件頁面。" + +#: wp-admin/includes/image-edit.php:291 +msgid "You can edit the image while preserving the thumbnail. For example, you may wish to have a square thumbnail that displays just a section of the image." +msgstr "編輯圖片後仍會保留原始圖片的縮圖。也就是說,圖片在經過編輯後,仍能保留一張僅顯示原始圖片部分畫面的正方形縮圖。" + +#: wp-admin/includes/image-edit.php:206 +msgid "Once you have made your selection, you can adjust it by entering the size in pixels. The minimum selection size is the thumbnail size as set in the Media settings." +msgstr "選取裁剪保留範圍後,便可以透過直接輸入尺寸值進行調整 (單位為 px)。請注意,圖片裁剪保留範圍尺寸不要小於 [設定]→[媒體] 中的 [縮圖尺寸] 設定。" + +#: wp-admin/includes/image-edit.php:203 +msgid "The aspect ratio is the relationship between the width and height. You can preserve the aspect ratio by holding down the shift key while resizing your selection. Use the input box to specify the aspect ratio, e.g. 1:1 (square), 4:3, 16:9, etc." +msgstr "外觀比例就是圖片的寬度及高度比例。調整裁剪保留範圍時按住 Shift 鍵,便可保持保留範圍的長寬比。輸入數值便能直接指定外觀比例,例如 1:1 (正方形)、4:3、16:9 等等。" + +#: wp-admin/includes/image-edit.php:201 +msgid "To crop the image, click on it and drag to make your selection." +msgstr "如需裁剪圖片,請點擊圖片並拖曳出裁剪保留範圍。" + +#: wp-admin/includes/image-edit.php:134 +msgid "You can proportionally scale the original image. For best results, scaling should be done before you crop, flip, or rotate. Images can only be scaled down, not up." +msgstr "這項操作可以按比例調整圖片尺寸。為達到最佳效果,請在圖片進行裁剪、翻轉、旋轉前完成圖片尺寸調整。請注意,這項操作只能縮小圖片尺寸,無法將圖片放大。" + +#. translators: %s: Alt + F10 +#: wp-admin/edit-form-advanced.php:293 +msgid "Keyboard users: When you are working in the visual editor, you can use %s to access the toolbar." +msgstr "鍵盤使用者請注意,在編輯器的 [預覽] 模式中,使用者可以按下 %s 以存取工具列。" + +#: wp-admin/edit-comments.php:218 +msgid "A red bar on the left means the comment is waiting for you to moderate it." +msgstr "留言左方出現紅色粗線代表該則留言需要進行審閱。" + +#: wp-admin/includes/class-wp-comments-list-table.php:546 +msgid "All comment types" +msgstr "全部留言類型" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:66 +#: wp-admin/theme-install.php:212 +msgctxt "themes" +msgid "Latest" +msgstr "最新上架" + +#: wp-admin/theme-install.php:211 +msgctxt "themes" +msgid "Popular" +msgstr "熱門" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:64 +msgctxt "themes" +msgid "Featured" +msgstr "精選" + +#: wp-admin/includes/ms.php:965 wp-admin/users.php:423 +msgid "Attribute all content to:" +msgstr "將全部內容指派給指定使用者:" + +#: wp-admin/includes/ms.php:963 wp-admin/users.php:419 +msgid "Delete all content." +msgstr "刪除全部內容" + +#: wp-admin/users.php:411 +msgid "What should be done with content owned by this user?" +msgstr "如何處理屬於這個使用者的內容?" + +#: wp-admin/users.php:60 +msgid "Delete brings you to the Delete Users screen for confirmation, where you can permanently remove a user from your site and delete their content. You can also delete multiple users at once by using bulk actions." +msgstr "刪除 — 點擊 [刪除] 連結便會進入 [刪除使用者] 頁面以進行確認。在 [刪除使用者] 頁面中,網站管理員可以從網站中永久刪除使用者及其撰寫的內容,也可以使用 [批次操作] 一次刪除多個使用者。" + +#: wp-admin/users.php:58 +msgid "Remove allows you to remove a user from your site. It does not delete their content. You can also remove multiple users at once by using bulk actions." +msgstr "移除 — 點擊 [移除] 連結便可將使用者從這個網站中移除,也可以使用 [批次操作] 批次移除多個使用者。這項操作不會刪除他們所建立的內容。" + +#: wp-admin/theme-install.php:391 +msgctxt "theme" +msgid "Details & Preview" +msgstr "詳細資料及預覽" + +#: wp-admin/theme-install.php:58 +msgid "Search Themes" +msgstr "搜尋佈景主題" + +#: wp-admin/theme-install.php:25 +msgid "Add Themes" +msgstr "安裝佈景主題" + +#: wp-admin/maint/repair.php:162 +msgid "https://wordpress.org/support/forum/how-to-and-troubleshooting" +msgstr "https://wordpress.org/support/forum/how-to-and-troubleshooting/" + +#: wp-admin/index.php:86 +msgid "At a Glance — Displays a summary of the content on your site and identifies which theme and version of WordPress you are using." +msgstr "網站概況 — 顯示目前網站狀況的內容摘要,例如網站所使用的佈景主題及 WordPress 版本等資訊。" + +#: wp-admin/index.php:65 +msgid "Box Controls — Click the title bar of the box to expand or collapse it. Some boxes added by plugins may have configurable content, and will show a “Configure” link in the title bar if you hover over it." +msgstr "區塊控制項 — 點擊區塊的標題列便能展開或收合該區塊。由外掛所加入的區塊包含相關設定項目,游標暫留於這類區塊的標題列時,便會顯示 [設定] 連結。" + +#: wp-admin/themes.php:43 +msgid "Sorry, you are not allowed to resume this theme." +msgstr "很抱歉,目前的登入身分沒有恢復使用這個佈景主題的權限。" + +#. translators: Hidden accessibility text. +#: wp-admin/edit-form-comment.php:162 wp-admin/includes/meta-boxes.php:296 +msgid "Edit date and time" +msgstr "編輯日期及時間" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/meta-boxes.php:278 +msgid "Browse revisions" +msgstr "瀏覽內容修訂" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/meta-boxes.php:200 +msgid "Edit visibility" +msgstr "編輯可見度" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/meta-boxes.php:138 +msgid "Edit status" +msgstr "編輯狀態" + +#: wp-admin/includes/ms.php:1171 wp-admin/network/index.php:57 +#: wp-admin/network/site-new.php:33 wp-admin/network/sites.php:45 +#: wp-admin/network/user-new.php:30 wp-admin/network/users.php:271 +msgid "Support forums" +msgstr "技術支援論壇" + +#. translators: %s: https://wordpress.org +#: wp-admin/admin-footer.php:37 +msgid "Thank you for creating with WordPress." +msgstr "感謝採用 WordPress 進行創作" + +#: wp-admin/update-core.php:1005 +msgid "Translations — The files translating WordPress into your language are updated for you whenever any other updates occur. But if these files are out of date, you can click the “Update Translations” button." +msgstr "語言套件 — WordPress 的語言套件在其他項目進行更新時會一併更新。當新版語言套件可供安裝時,請點擊 [更新語言套件] 按鈕進行更新。" + +#: wp-admin/update-core.php:1001 +msgid "In most cases, WordPress will automatically apply maintenance and security updates in the background for you." +msgstr "在大多數情況下,WordPress 會在背景自動安裝維護及安全性更新版本。" + +#: wp-admin/update-core.php:1001 +msgid "WordPress — Updating your WordPress installation is a simple one-click procedure: just click on the “Update now” button when you are notified that a new version is available." +msgstr "WordPress 核心程式 — 更新 WordPress 網站的核心程式的方式非常簡便,有新版本可供下載安裝時,點擊 [立即更新] 按鈕即可。" + +#: wp-admin/update-core.php:991 +msgid "If an update is available, you᾿ll see a notification appear in the Toolbar and navigation menu." +msgstr "如有更新可供下載安裝,網站管理員會在工具列及導覽選單接收到通知。" + +#: wp-admin/update-core.php:1002 +msgid "Themes and Plugins — To update individual themes or plugins from this screen, use the checkboxes to make your selection, then click on the appropriate “Update” button. To update all of your themes or plugins at once, you can check the box at the top of the section to select all before clicking the update button." +msgstr "佈景主題及外掛 — 如需在這個畫面更新個別佈景主題或外掛,請先核取需要更新的項目,然後點擊外掛或佈景主題區段下方的 [更新] 按鈕。如需更新全部外掛或佈景主題,請核取對應區段上方的全選方塊,然後點擊 [更新] 按鈕。" + +#. translators: %s: https://wordpress.org/themes +#: wp-admin/themes.php:156 +msgid "If you would like to see more themes to choose from, click on the “Add Theme” button and you will be able to browse or search for additional themes from the WordPress Theme Directory. Themes in the WordPress Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they are free!" +msgstr "如需查看更多佈景主題並進行選取及安裝,點擊 [安裝佈景主題] 便可以在 WordPress 佈景主題目錄中瀏覽或搜尋佈景主題。WordPress 佈景主題目錄內的佈景主題是由第三方設計與開發,且相容於 WordPress 所採用的授權方式。最棒的是,他們都是免費佈景主題!" + +#. translators: 1: Number of megabytes, 2: Percentage. +#: wp-admin/includes/dashboard.php:1697 +msgid "%1$s MB (%2$s%%) Space Used" +msgstr "已使用 %1$s MB (%2$s%%) 的儲存空間" + +#. translators: %s: Number of megabytes. +#: wp-admin/includes/dashboard.php:1682 +msgid "%s MB Space Allowed" +msgstr "%s MB 可用儲存空間" + +#. translators: Date and time format for recent posts on the dashboard, see +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/includes/dashboard.php:1037 +msgid "M jS" +msgstr "n 月 j 日" + +#: wp-admin/options-reading.php:47 +msgid "When this setting is in effect, a reminder is shown in the At a Glance box of the Dashboard that says, “Search engines discouraged”, to remind you that you have directed search engines to not crawl your site." +msgstr "啟用這項設定後,控制台上的 [網站概況] 區塊將會出現 [已阻擋搜尋引擎進行索引] 提示訊息,以提醒網站管理員這個網站已通知搜尋引擎不要進行檢索。" + +#: wp-admin/includes/dashboard.php:73 +msgid "At a Glance" +msgstr "網站概況" + +#: wp-admin/themes.php:599 wp-admin/themes.php:991 +msgctxt "theme" +msgid "Active:" +msgstr "目前使用的佈景主題:" + +#: wp-admin/includes/theme.php:331 +msgid "Accessibility Ready" +msgstr "無障礙支援" + +#. translators: %s: Theme name. +#: wp-admin/includes/theme.php:972 wp-admin/themes.php:1241 +msgid "This is a child theme of %s." +msgstr "這是 %s 的子佈景主題。" + +#: wp-admin/themes.php:175 +msgid "When previewing on smaller monitors, you can use the collapse icon at the bottom of the left-hand pane. This will hide the pane, giving you more room to preview your site in the new theme. To bring the pane back, click on the collapse icon again." +msgstr "使用者在較小螢幕的裝置上進行預覽時,點擊左下方的 [收合選單] 小圖示便能隱藏左側窗格,以便有較大的檢視範圍預覽這個網站套用新佈景主題後的外觀。如需展開左側窗格,請再次點擊 [收合選單] 小圖示即可。" + +#: wp-admin/themes.php:174 +msgid "The theme being previewed is fully interactive — navigate to different pages to see how the theme handles posts, archives, and other page templates. The settings may differ depending on what theme features the theme being previewed supports. To accept the new settings and activate the theme all in one step, click the Activate & Publish button above the menu." +msgstr "網站管理員即時預覽佈景主題時,可以進行完整的互動式操作;透過瀏覽不同頁面,網站管理員查看這個佈景主題如何顯示文章、彙整頁面或其他頁面範本。不同的佈景主題,在預覽畫面能提供的設定也不同;點擊選單上方的 [啟用並發佈] 按鈕,便能一鍵啟用佈景主題並套用已完成的設定。" + +#: wp-admin/themes.php:173 +msgid "Tap or hover on any theme then click the Live Preview button to see a live preview of that theme and change theme options in a separate, full-screen view. You can also find a Live Preview button at the bottom of the theme details screen. Any installed theme can be previewed and customized in this way." +msgstr "輕觸或將游標暫留於已安裝的佈景主題上,點擊 [即時預覽] 按鈕便可進行即時預覽,並可於個別頁面檢視這個佈景主題及變更佈景主題選項。未啟用的佈景主題的 [佈景主題詳細資料] 畫面,最底部也有 [即時預覽] 按鈕;任何已安裝的佈景主題,都能透過這個方式進行預覽及自訂。" + +#: wp-admin/themes.php:137 +msgid "The active theme is displayed highlighted as the first theme." +msgstr "以醒目方式標示、且排序第一的佈景主題,就是這個網站目前使用的佈景主題。" + +#: wp-admin/themes.php:136 +msgid "Click Customize for the active theme or Live Preview for any other theme to see a live preview" +msgstr "點擊目前使用的佈景主題的 [自訂] 或其他佈景主題的 [即時預覽] 按鈕,便能即時預覽佈景主題外觀。" + +#: wp-admin/themes.php:135 +msgid "Click on the theme to see the theme name, version, author, description, tags, and the Delete link" +msgstr "點擊佈景主題便能查看佈景主題名稱、版本、開發者、內容說明、標籤及 [刪除] 連結。" + +#: wp-admin/themes.php:134 +msgid "Hover or tap to see Activate and Live Preview buttons" +msgstr "輕觸或將游標暫留於已安裝的佈景主題上,便會顯示 [啟用] 及 [即時預覽] 按鈕。" + +#: wp-admin/themes.php:132 +msgid "This screen is used for managing your installed themes. Aside from the default theme(s) included with your WordPress installation, themes are designed and developed by third parties." +msgstr "這個畫面用來管理已安裝的佈景主題。除了 WordPress 安裝時一併安裝的預設佈景主題外,其他佈景主題均由第三方設計開發。" + +#: wp-admin/widgets-form.php:464 +msgid "To activate a widget drag it to a sidebar or click on it. To deactivate a widget and delete its settings, drag it back." +msgstr "如需啟用指定的小工具,將它拖放至資訊欄或點擊小工具標題;如需停用指定的小工具並刪除原有設定,將指定小工具拖放回 [可用的小工具] 區域即可。" + +#. translators: Hidden accessibility text. %s: The rating. +#: wp-admin/includes/template.php:2794 +msgid "%s rating" +msgstr "%s 分" + +#. translators: Hidden accessibility text. 1: The rating, 2: The number of +#. ratings. +#: wp-admin/includes/template.php:2790 +msgid "%1$s rating based on %2$s rating" +msgid_plural "%1$s rating based on %2$s ratings" +msgstr[0] "%1$s 分 (依據 %2$s 次評分)" + +#: wp-admin/my-sites.php:46 +msgid "This screen shows an individual user all of their sites in this network, and also allows that user to set a primary site. They can use the links under each site to visit either the front end or the dashboard for that site." +msgstr "這個畫面顯示個別使用者在這個多站網路中所擁有的全部網站站台,並可讓使用者將其中一個設定為主要網站。他們可以點擊個別網站下方的連結以造訪網站首頁或控制台。" + +#. translators: 1: Error code, 2: Error message. +#: wp-admin/includes/class-wp-automatic-updater.php:1703 +msgid "Error: [%1$s] %2$s" +msgstr "錯誤:%2$s (錯誤代碼 %1$s)" + +#. translators: 1: Error code, 2: Error message. +#: wp-admin/includes/class-wp-automatic-updater.php:1700 +msgid "Rollback Error: [%1$s] %2$s" +msgstr "復原錯誤:%2$s (錯誤代碼 %1$s)" + +#: wp-admin/includes/class-wp-automatic-updater.php:1617 +msgid "The following translations failed to update:" +msgstr "下列語言套件更新失敗:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1616 +msgid "The following themes failed to update:" +msgstr "下列佈景主題更新失敗:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1615 +msgid "The following plugins failed to update:" +msgstr "下列外掛更新失敗:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1602 +msgid "The following translations were successfully updated:" +msgstr "下列語言套件已成功更新:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1601 +msgid "The following themes were successfully updated:" +msgstr "下列佈景主題已成功更新:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1600 +msgid "The following plugins were successfully updated:" +msgstr "下列外掛已成功更新:" + +#: wp-admin/widgets-form.php:585 +msgid "Add Widget" +msgstr "新增小工具" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme.php:837 wp-admin/themes.php:1063 +msgid "Show next theme" +msgstr "顯示下一個佈景主題" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme.php:831 wp-admin/themes.php:1057 +msgid "Show previous theme" +msgstr "顯示上一個佈景主題" + +#: wp-admin/includes/theme.php:893 wp-admin/themes.php:1157 +msgid "Update Available" +msgstr "已有更新可供安裝" + +#: wp-admin/themes.php:230 +msgid "" +"Are you sure you want to delete this theme?\n" +"\n" +"Click 'Cancel' to go back, 'OK' to confirm the delete." +msgstr "" +"確定要刪除這個佈景主題?\n" +"\n" +"點擊 [取消] 以返回,點擊 [確定] 以確認刪除。" + +#: wp-admin/post.php:82 +msgid "Unable to submit this form, please refresh and try again." +msgstr "無法提交這份表單,請重新整理後再試一次。" + +#: wp-admin/index.php:92 +msgid "Quick Draft — Allows you to create a new post and save it as a draft. Also displays links to the 3 most recent draft posts you've started." +msgstr "快速草稿 — 這個區塊能讓使用者新增文章並儲存為草稿,還能顯示屬於使用者的最近 3 篇草稿的連結,以供草稿作者完成文章。" + +#: wp-admin/index.php:89 +msgid "Activity — Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them." +msgstr "網站活動 — 除了顯示即將發佈及最新發佈的文章外,還會顯示文章的近期留言,讓具備留言管理權限的使用者能夠進行審閱。" + +#: wp-admin/index.php:63 +msgid "Screen Options — Use the Screen Options tab to choose which Dashboard boxes to show." +msgstr "顯示項目設定 — 使用 [顯示項目設定] 分頁以選擇要於控制台顯示的區塊。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/dashboard.php:1690 wp-admin/includes/dashboard.php:1706 +msgid "Manage Uploads" +msgstr "管理上傳" + +#: wp-admin/includes/deprecated.php:1389 +msgid "Popular Plugin" +msgstr "熱門外掛" + +#: wp-admin/includes/dashboard.php:1031 +msgid "Tomorrow" +msgstr "明天" + +#: wp-admin/includes/dashboard.php:962 +msgid "No activity yet!" +msgstr "目前沒有活動。" + +#: wp-admin/includes/dashboard.php:953 +msgid "Recently Published" +msgstr "最新發佈" + +#: wp-admin/includes/dashboard.php:944 +msgid "Publishing Soon" +msgstr "即將發佈的內容" + +#: wp-admin/includes/dashboard.php:606 +msgid "What’s on your mind?" +msgstr "簡單記錄心中所思所想" + +#. translators: 1: Version number, 2: Theme name. +#: wp-admin/includes/update.php:381 +msgid "WordPress %1$s running %2$s theme." +msgstr "這個網站以 WordPress %1$s 建置,目前使用的佈景主題為 %2$s。" + +#: wp-admin/includes/dashboard.php:87 +msgid "Quick Draft" +msgstr "快速草稿" + +#. translators: %s: Name of plugin / theme / translation. +#: wp-admin/includes/class-wp-automatic-updater.php:1625 +msgid "FAILED: %s" +msgstr "發生錯誤:%s" + +#. translators: %s: Name of plugin / theme / translation. +#: wp-admin/includes/class-wp-automatic-updater.php:1608 +msgid "SUCCESS: %s" +msgstr "已完成:%s" + +#. translators: %s: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:1583 +msgid "FAILED: WordPress failed to update to %s" +msgstr "發生錯誤:WordPress 無法更新至 %s" + +#. translators: %s: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:1580 +msgid "SUCCESS: WordPress was successfully updated to %s" +msgstr "已完成:WordPress 已成功更新至 %s" + +#. translators: %s: Network home URL. +#: wp-admin/includes/class-wp-automatic-updater.php:1572 +msgid "WordPress site: %s" +msgstr "WordPress 網站:%s" + +#. translators: %s: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:1083 +msgid "Your site was running version %s." +msgstr "這個網站執行於 WordPress %s。" + +#. translators: 1: Home URL, 2: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:1029 +msgid "Your site at %1$s experienced a critical failure while trying to update WordPress to version %2$s." +msgstr "在嘗試更新至 WordPress %2$s 時,網址為 %1$s 的網站發生嚴重錯誤。" + +#. translators: %s: WordPress latest version. +#: wp-admin/includes/class-wp-automatic-updater.php:995 +msgid "WordPress %s is also now available." +msgstr "WordPress %s 已可供下載安裝。" + +#: wp-admin/includes/update-core.php:1354 +#: wp-admin/includes/update-core.php:1390 +msgid "The update cannot be installed because your site is unable to copy some files. This is usually due to inconsistent file permissions." +msgstr "由於無法複製某些檔案,因此無法安裝更新。這個狀況通常是由不正確的檔案權限所造成。" + +#: wp-admin/includes/class-language-pack-upgrader.php:114 +#: wp-admin/update-core.php:820 +msgid "Your translations are all up to date." +msgstr "這個網站的全部語言套件均為最新版本。" + +#: wp-admin/update-core.php:819 wp-admin/update-core.php:827 +msgid "Translations" +msgstr "語言套件" + +#. translators: %s: Error code. +#: wp-admin/includes/class-wp-automatic-updater.php:1104 +msgid "Error code: %s" +msgstr "錯誤代碼:%s" + +#: wp-admin/includes/class-wp-automatic-updater.php:1085 +msgid "Your hosting company, support forum volunteers, or a friendly developer may be able to use this information to help you:" +msgstr "提供以下資訊給這個網站的主機服務提供商、WordPress 技術支援論壇成員或相關開發者,他們便能使用這些資訊提供協助:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1078 +#: wp-admin/includes/class-wp-automatic-updater.php:1508 +msgid "The WordPress Team" +msgstr "WordPress 團隊" + +#: wp-admin/includes/class-wp-automatic-updater.php:1074 +msgid "You also have some plugins or themes with updates available. Update them now:" +msgstr "這個網站的某些外掛或佈景主題已有更新可供安裝。立即更新這些項目:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1059 +#: wp-admin/includes/class-wp-automatic-updater.php:1506 +msgid "If you experience any issues or need support, the volunteers in the WordPress.org support forums may be able to help." +msgstr "如果你遇到任何問題或需要技術支援,請前往 WordPress.org 技術支援論壇,論壇中的社群成員或許能夠提供協助。" + +#: wp-admin/includes/class-wp-automatic-updater.php:1065 +#: wp-admin/update-core.php:991 +msgid "Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers." +msgstr "持續為網站進行更新對網站安全性而言至關重要,持續更新也會讓這個網站及網站使用者更加安全。" + +#: wp-admin/includes/class-wp-automatic-updater.php:1044 +msgid "Please check out your site now. It's possible that everything is working. If it says you need to update, you should do so:" +msgstr "請立即查看這個網站,網站可能仍一切如常。如果提示要為網站進行更新,請依照指示進行:" + +#: wp-admin/includes/class-wp-automatic-updater.php:1042 +msgid "This means your site may be offline or broken. Don't panic; this can be fixed." +msgstr "這代表這個網站發生離線或無法使用。別擔心,這是可以修復的狀況。" + +#. translators: 1: Home URL, 2: WordPress latest version. +#: wp-admin/includes/class-wp-automatic-updater.php:1036 +msgid "Your site at %1$s experienced a critical failure while trying to update to the latest version of WordPress, %2$s." +msgstr "在嘗試更新至最新的 WordPress %2$s 時,網址為 %1$s 的網站發生嚴重錯誤。" + +#: wp-admin/includes/class-wp-automatic-updater.php:996 +#: wp-admin/includes/class-wp-automatic-updater.php:1021 +msgid "Updating is easy and only takes a few moments:" +msgstr "更新網站的方式很簡單,且僅需一點時間即可完成:" + +#. translators: 1: Home URL, 2: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:1006 +msgid "Please update your site at %1$s to WordPress %2$s." +msgstr "請將網址為 %1$s 的網站更新至 WordPress %2$s。" + +#. translators: %s: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:990 +msgid "For more on version %s, see the About WordPress screen:" +msgstr "如需進一步了解 %s 版的資訊,請參閱〈關於 WordPress〉頁面:" + +#: wp-admin/includes/class-wp-automatic-updater.php:984 +msgid "No further action is needed on your part." +msgstr "你不需要進行任何操作。" + +#. translators: 1: Home URL, 2: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:978 +msgid "Howdy! Your site at %1$s has been updated automatically to WordPress %2$s." +msgstr "你好,你的網站 (網址為 %1$s) 已自動更新至 WordPress %2$s。" + +#. translators: Site down notification email subject. 1: Site title. +#: wp-admin/includes/class-wp-automatic-updater.php:961 +msgid "[%1$s] URGENT: Your site may be down due to a failed update" +msgstr "《%1$s》緊急通知:網站因更新失敗導致無法正常運作" + +#. translators: Update available notification email subject. 1: Site title, 2: +#. WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:956 +msgid "[%1$s] WordPress %2$s is available. Please update!" +msgstr "《%1$s》通知:WordPress %2$s 已可供下載更新,請完成更新!" + +#. translators: Site updated notification email subject. 1: Site title, 2: +#. WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:950 +msgid "[%1$s] Your site has updated to WordPress %2$s" +msgstr "《%1$s》通知:網站已更新至 WordPress %2$s" + +#. translators: %s: Project name (plugin, theme, or WordPress). +#: wp-admin/includes/class-wp-automatic-updater.php:438 +msgid "Translations for %s" +msgstr "%s 的語言套件" + +#. translators: 1: Project name (plugin, theme, or WordPress), 2: Language. +#: wp-admin/includes/class-language-pack-upgrader-skin.php:60 +#: wp-admin/includes/class-wp-automatic-updater.php:440 +msgid "Updating translations for %1$s (%2$s)…" +msgstr "正在更新 %1$s (%2$s) 的語言套件..." + +#: wp-admin/includes/class-language-pack-upgrader-skin.php:37 +#: wp-admin/update-core.php:831 wp-admin/update-core.php:1283 +msgid "Update Translations" +msgstr "更新語言套件" + +#: wp-admin/includes/class-wp-site-health.php:2949 +msgid "Background updates" +msgstr "背景更新" + +#: wp-admin/includes/update-core.php:1457 +msgid "There is not enough free disk space to complete the update." +msgstr "沒有足夠的磁碟空間進行更新。" + +#. translators: %s: Plugin name. +#: wp-admin/includes/class-wp-automatic-updater.php:433 +msgid "Updating plugin: %s" +msgstr "正在更新外掛 %s" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-automatic-updater.php:421 +msgid "Updating theme: %s" +msgstr "正在更新佈景主題 %s" + +#: wp-admin/includes/class-language-pack-upgrader.php:120 +msgid "Translation updated successfully." +msgstr "語言套件已成功更新。" + +#: wp-admin/includes/class-language-pack-upgrader.php:119 +msgid "Translation update failed." +msgstr "語言套件更新失敗。" + +#: wp-admin/includes/class-language-pack-upgrader.php:113 +msgid "Some of your translations need updating. Sit tight for a few more seconds while they are updated as well." +msgstr "語言套件需要進行更新。更新需時,請稍候片刻。" + +#: wp-admin/user-new.php:518 +msgid "Create a brand new user and add them to this site." +msgstr "新增一個全新的使用者,並將使用者加入這個網站。" + +#. translators: %s: Link to documentation on child themes. +#: wp-admin/theme-editor.php:43 +msgid "Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead." +msgstr "更新佈景主題後的新檔案會覆寫既有的客製化變更。要避免這種狀況發生,請先建立子佈景主題,然後才在子佈景主題中進行客製化變更。" + +#: wp-admin/options-media.php:56 +msgid "The sizes listed below determine the maximum dimensions in pixels to use when adding an image to the Media Library." +msgstr "下方所列出的尺寸,決定了將圖片新增至 [媒體庫] 後會產生的各式圖片最大尺寸 (單位為 px)。" + +#: wp-admin/options-discussion.php:176 +msgid "Comment must be manually approved" +msgstr "留言必須由相關站務人員手動核准" + +#: wp-admin/nav-menus.php:745 +msgid "Clicking the arrow to the right of any menu item in the editor will reveal a standard group of settings. Additional settings such as link target, CSS classes, link relationships, and link descriptions can be enabled and disabled via the Screen Options tab." +msgstr "在 [編輯選單] 分頁中點擊任一選單項目右側的箭頭,便會顯示一組標準設定。其他設定例如連結目標開啟方式、CSS 類別、連結目標的人際關係及連結內容說明等,均可在 [顯示項目設定] 分頁裡啟用或停用。" + +#. translators: 1: URL to Widgets screen, 2 and 3: The names of the default +#. themes. +#: wp-admin/nav-menus.php:714 +msgid "Menus can be displayed in locations defined by your theme, even used in sidebars by adding a “Navigation Menu” widget on the Widgets screen. If your theme does not support the navigation menus feature (the default themes, %2$s and %3$s, do), you can learn about adding this support by following the documentation link to the side." +msgstr "每個佈景主題提供的選單位置不盡相同,而選單除了可以顯示於佈景主題提供的位置外,還可以透過 [小工具] 頁面的 [導覽選單] 小工具顯示於資訊欄。如果這個網站使用的佈景主題不支援導覽選單功能 (預設佈景主題 %2$s 和 %3$s 均支援),請查閱側邊的說明文件以進一步了解如何為佈景主題加入這項功能的支援。" + +#. translators: %s: URL to Widgets screen. +#: wp-admin/nav-menus.php:697 +msgid "Your theme does not natively support menus, but you can use them in sidebars by adding a “Navigation Menu” widget on the Widgets screen." +msgstr "目前使用的佈景主題無法以原生方式支援選單功能,但你可以在 [小工具] 頁面中新增 [導覽選單] 小工具。" + +#: wp-admin/install.php:436 +msgid "Sorry, that is not a valid email address. Email addresses look like username@example.com." +msgstr "很抱歉,這是無效的電子郵件地址,電子郵件地址的正確格式應為 username@example.com。" + +#: wp-admin/install.php:432 +msgid "You must provide an email address." +msgstr "請務必提供你的電子郵件地址。" + +#: wp-admin/install.php:428 +msgid "Your passwords do not match. Please try again." +msgstr "輸入的密碼不相符。請再試一次。" + +#: wp-admin/install.php:424 +msgid "The username you provided has invalid characters." +msgstr "輸入的使用者名稱包含無效的字元。" + +#: wp-admin/install.php:421 +msgid "Please provide a valid username." +msgstr "請提供正確的使用者名稱。" + +#: wp-admin/includes/update-core.php:1371 +msgid "Copying the required files…" +msgstr "正在複製必要的檔案..." + +#: wp-admin/includes/update-core.php:1278 +msgid "Preparing to install the latest version…" +msgstr "正在準備安裝最新版本..." + +#: wp-admin/includes/file.php:2602 +msgid "This password will not be stored on the server." +msgstr "密碼不會儲存於伺服器上。" + +#. translators: 1: File checksum, 2: Expected checksum value. +#: wp-admin/includes/file.php:1381 +msgid "The checksum of the file (%1$s) does not match the expected checksum value (%2$s)." +msgstr "檔案的總和檢查碼 (%1$s) 與預期的總和檢查碼值 (%2$s) 不相符。" + +#. translators: %s: Version number. +#. translators: %s: WordPress version. +#: wp-admin/about.php:47 wp-admin/contribute.php:18 wp-admin/credits.php:19 +#: wp-admin/freedoms.php:24 +#: wp-admin/includes/class-wp-automatic-updater.php:409 wp-admin/privacy.php:18 +msgid "WordPress %s" +msgstr "WordPress %s" + +#. translators: %s: WordPress version. +#: wp-admin/includes/class-wp-automatic-updater.php:407 +msgid "Updating to WordPress %s" +msgstr "正在更新至 WordPress %s" + +#: wp-admin/includes/class-core-upgrader.php:42 +msgid "Due to an error during updating, WordPress has been restored to your previous version." +msgstr "由於更新時發生錯誤,因此 WordPress 已還原至安裝更新前的版本。" + +#. translators: 1: Folder to locate, 2: Folder to start searching from. +#: wp-admin/includes/class-wp-filesystem-base.php:268 +msgid "Looking for %1$s in %2$s" +msgstr "正在資料夾 %2$s 中尋找 %1$s" + +#. translators: %s: Number of pages. +#: wp-admin/edit.php:381 +msgid "%s page restored from the Trash." +msgid_plural "%s pages restored from the Trash." +msgstr[0] "%s 個頁面已從回收桶還原。" + +#. translators: %s: Number of pages. +#: wp-admin/edit.php:379 +msgid "%s page moved to the Trash." +msgid_plural "%s pages moved to the Trash." +msgstr[0] "%s 個頁面已移至回收桶。" + +#. translators: %s: Number of pages. +#: wp-admin/edit.php:377 +msgid "%s page permanently deleted." +msgid_plural "%s pages permanently deleted." +msgstr[0] "%s 個頁面已永久刪除。" + +#. translators: %s: Number of pages. +#: wp-admin/edit.php:375 +msgid "%s page not updated, somebody is editing it." +msgid_plural "%s pages not updated, somebody is editing them." +msgstr[0] "由於某個使用者正在進行編輯,所以有 %s 個頁面未更新。" + +#. translators: %s: Number of pages. +#: wp-admin/edit.php:372 +msgid "%s page updated." +msgid_plural "%s pages updated." +msgstr[0] "%s 個頁面已更新。" + +#. translators: %s: Number of posts. +#: wp-admin/edit.php:368 +msgid "%s post restored from the Trash." +msgid_plural "%s posts restored from the Trash." +msgstr[0] "%s 篇文章已從回收桶還原。" + +#. translators: %s: Number of posts. +#: wp-admin/edit.php:366 +msgid "%s post moved to the Trash." +msgid_plural "%s posts moved to the Trash." +msgstr[0] "%s 篇文章已移至回收桶。" + +#. translators: %s: Number of posts. +#: wp-admin/edit.php:364 +msgid "%s post permanently deleted." +msgid_plural "%s posts permanently deleted." +msgstr[0] "%s 篇文章已永久刪除。" + +#. translators: %s: Number of posts. +#: wp-admin/edit.php:362 +msgid "%s post not updated, somebody is editing it." +msgid_plural "%s posts not updated, somebody is editing them." +msgstr[0] "由於某個使用者正在進行編輯,所以有 %s 篇文章未更新。" + +#: wp-admin/includes/edit-tag-messages.php:39 +msgid "Tags deleted." +msgstr "標籤已刪除。" + +#: wp-admin/includes/edit-tag-messages.php:38 +msgid "Tag not updated." +msgstr "標籤未更新。" + +#: wp-admin/includes/edit-tag-messages.php:37 +msgid "Tag not added." +msgstr "標籤未新增。" + +#: wp-admin/includes/edit-tag-messages.php:36 +msgid "Tag updated." +msgstr "標籤已更新。" + +#: wp-admin/includes/edit-tag-messages.php:35 +msgid "Tag deleted." +msgstr "標籤已刪除。" + +#: wp-admin/includes/edit-tag-messages.php:34 +msgid "Tag added." +msgstr "標籤已新增。" + +#: wp-admin/includes/edit-tag-messages.php:29 +msgid "Categories deleted." +msgstr "分類已刪除。" + +#: wp-admin/includes/edit-tag-messages.php:28 +msgid "Category not updated." +msgstr "分類未更新。" + +#: wp-admin/includes/edit-tag-messages.php:27 +msgid "Category not added." +msgstr "分類未新增。" + +#: wp-admin/includes/edit-tag-messages.php:26 +msgid "Category updated." +msgstr "分類已更新。" + +#: wp-admin/includes/edit-tag-messages.php:25 +msgid "Category deleted." +msgstr "分類已刪除。" + +#: wp-admin/includes/edit-tag-messages.php:24 +msgid "Category added." +msgstr "分類已新增。" + +#: wp-admin/revision.php:146 +msgid "Compare two different revisions by selecting the “Compare any two revisions” box to the side." +msgstr "啟用 [比較任意兩份內容修訂] 功能便能比較兩個不同版本的內容修訂。" + +#: wp-admin/includes/revision.php:396 +msgid "Compare any two revisions" +msgstr "比較任意兩份內容修訂" + +#: wp-admin/includes/revision.php:457 +msgid "Restore This Autosave" +msgstr "還原這份自動儲存" + +#. translators: %s: User's display name. +#: wp-admin/includes/revision.php:428 +msgid "Current Revision by %s" +msgstr "目前內容修訂的作者為「%s」" + +#. translators: %s: User's display name. +#: wp-admin/includes/revision.php:418 +msgid "Autosave by %s" +msgstr "自動儲存的作者為「%s」" + +#: wp-admin/includes/meta-boxes.php:275 +msgctxt "revisions" +msgid "Browse" +msgstr "瀏覽" + +#. translators: Post revisions heading. %s: The number of available revisions. +#: wp-admin/includes/meta-boxes.php:273 +msgid "Revisions: %s" +msgstr "內容修訂: %s 個版本" + +#. translators: %s: Audio track title. +#: wp-admin/includes/media.php:344 +msgid "\"%s\"." +msgstr "〈%s〉。" + +#. translators: 1: Audio track title, 2: Artist name. +#: wp-admin/includes/media.php:341 +msgid "\"%1$s\" by %2$s." +msgstr "由「%2$s」創作的〈%1$s〉。" + +#. translators: 1: Audio track title, 2: Album title. +#: wp-admin/includes/media.php:338 +msgid "\"%1$s\" from %2$s." +msgstr "來自《%2$s》專輯中的〈%1$s〉。" + +#. translators: 1: Audio track title, 2: Album title, 3: Artist name. +#: wp-admin/includes/media.php:335 +msgid "\"%1$s\" from %2$s by %3$s." +msgstr "來自由「%3$s」創作的《%2$s》專輯中的〈%1$s〉。" + +#. translators: %s: User's display name. +#: wp-admin/includes/revision.php:438 +msgid "Revision by %s" +msgstr "內容修訂的作者為「%s」" + +#: wp-admin/edit-form-advanced.php:461 +msgid "Connection lost. Saving has been disabled until you are reconnected." +msgstr "與網站伺服器失去連線。在恢復連線前,儲存功能為停用狀態。" + +#: wp-admin/install.php:159 wp-admin/user-new.php:614 +msgid "Repeat Password" +msgstr "重複輸入密碼" + +#: wp-admin/user-edit.php:710 +msgid "Repeat New Password" +msgstr "重複輸入新密碼" + +#: wp-admin/includes/nav-menu.php:1269 +msgid "Add menu items from the column on the left." +msgstr "請從左側欄位新增選單項目。" + +#. translators: %s: https://wordpress.org/plugins +#: wp-admin/includes/class-wp-plugin-install-list-table.php:345 +msgid "Plugins extend and expand the functionality of WordPress. You may install plugins from the WordPress Plugin Directory right on this page, or upload a plugin in .zip format by clicking the button above." +msgstr "外掛可以擴充及增強 WordPress 的功能。網站管理員可以在這個頁面自動安裝來源為 WordPress 外掛目錄的外掛,或點擊上方的 [上傳外掛] 按鈕上傳 ZIP 格式的外掛安裝套件壓縮檔進行手動安裝。" + +#. Plugin URI of the plugin +#: hello.php +msgid "http://wordpress.org/plugins/hello-dolly/" +msgstr "https://tw.wordpress.org/plugins/hello-dolly/" + +#: wp-admin/includes/class-theme-upgrader.php:80 +msgid "The theme contains no files." +msgstr "這個佈景主題的安裝套件中不包含任何檔案。" + +#: wp-admin/includes/class-wp-upgrader.php:202 +msgid "The package contains no files." +msgstr "這個安裝套件不包含任何檔案。" + +#: wp-admin/revision.php:145 +msgid "To navigate between revisions, drag the slider handle left or right or use the Previous or Next buttons." +msgstr "如需瀏覽不同版本的內容修訂,請左右拖曳滑桿點擊 [上一版]、[下一版] 按鈕。" + +#: wp-admin/customize.php:157 wp-admin/includes/class-wp-debug-data.php:912 +#: wp-admin/includes/dashboard.php:1179 +msgid "Loading…" +msgstr "正在載入..." + +#: wp-admin/post.php:308 +msgid "This item has already been deleted." +msgstr "這個項目已刪除。" + +#: wp-admin/post.php:279 +msgid "The item you are trying to restore from the Trash no longer exists." +msgstr "嘗試從回收桶還原的項目已不存在。" + +#: wp-admin/post.php:242 +msgid "The item you are trying to move to the Trash no longer exists." +msgstr "嘗試移至回收桶的項目已不存在。" + +#: wp-admin/nav-menus.php:1120 +msgid "Drag the items into the order you prefer. Click the arrow on the right of the item to reveal additional configuration options." +msgstr "請在下方將各個選單項目拖放至合適的順序。點擊選單項目右側的箭號,便會顯示更多組態設定。" + +#: wp-admin/nav-menus.php:733 +msgid "If you have not yet created any menus, click the ’create a new menu’ link to get started" +msgstr "如果這個網站尚未建立任何選單,點擊 [建立選單] 連結便能開始建立選單。" + +#: wp-admin/revision.php:147 +msgid "To restore a revision, click Restore This Revision." +msgstr "如需還原某個版本的內容修訂,請瀏覽至該版本並點擊 [還原這份內容修訂]。" + +#: wp-admin/revision.php:144 +msgid "From this screen you can review, compare, and restore revisions:" +msgstr "作者在這個畫面可以檢視、比較及還原內容修訂:" + +#: wp-admin/revision.php:143 +msgid "Revisions are saved copies of your post or page, which are periodically created as you update your content. The red text on the left shows the content that was removed. The green text on the right shows the content that was added." +msgstr "內容修訂是編輯文章或頁面時定時產生的副本。左側以紅色標示的文字為刪除的內容,右側以綠色標示的文字為新增的內容。" + +#: wp-admin/revision.php:142 +msgid "This screen is used for managing your content revisions." +msgstr "這個畫面用來管理這個網站的內容修訂。" + +#: wp-admin/includes/revision.php:407 +msgctxt "Followed by post revision info" +msgid "To:" +msgstr "第二份:" + +#: wp-admin/includes/revision.php:377 +msgctxt "Button label for a next revision" +msgid "Next" +msgstr "下一版" + +#: wp-admin/includes/revision.php:373 +msgctxt "Button label for a previous revision" +msgid "Previous" +msgstr "上一版" + +#: wp-admin/includes/revision.php:405 +msgctxt "Followed by post revision info" +msgid "From:" +msgstr "第一份:" + +#: wp-admin/nav-menus.php:920 +msgctxt "menu" +msgid "Use new menu" +msgstr "建立選單" + +#: wp-admin/nav-menus.php:899 +msgctxt "menu" +msgid "Edit" +msgstr "編輯" + +#: wp-admin/nav-menus.php:866 +msgid "Select a Menu" +msgstr "選取選單" + +#: wp-admin/nav-menus.php:857 +msgid "Assigned Menu" +msgstr "指派的選單" + +#: wp-admin/nav-menus.php:825 +msgid "Manage Locations" +msgstr "管理選單位置" + +#: wp-admin/nav-menus.php:814 +msgid "Edit Menus" +msgstr "編輯選單" + +#: wp-admin/nav-menus.php:762 +msgid "To add a new menu instead of assigning an existing one, click the ’Use new menu’ link. Your new menu will be automatically assigned to that location in the theme." +msgstr "如需為佈景主題選單位置新增選單而不是指派現有選單,請點擊 [建立選單] 連結。新選單建立完畢後,會自動指派至對應的佈景主題選單位置。" + +#: wp-admin/nav-menus.php:761 +msgid "To edit a menu currently assigned to a theme menu location, click the adjacent ’Edit’ link" +msgstr "如需編輯已指派至佈景主題選單位置的選單,請點擊選單旁邊的 [編輯] 連結。" + +#: wp-admin/nav-menus.php:760 +msgid "To assign menus to one or more theme menu locations, select a menu from each location’s dropdown. When you are finished, click Save Changes" +msgstr "如需將選單指派至一或多個佈景主題選單位置,請從各別選單位置的下拉式選單中選取選單。設定完畢後,請點擊 [儲存設定]。" + +#: wp-admin/nav-menus.php:759 +msgid "This screen is used for globally assigning menus to locations defined by your theme." +msgstr "這個畫面用來將選單直接指派至佈景主題所提供的選單位置。" + +#: wp-admin/nav-menus.php:754 +msgid "Editing Menus" +msgstr "編輯選單" + +#: wp-admin/nav-menus.php:749 +msgid "Delete a menu item by expanding it and clicking the Remove link" +msgstr "展開選單項目並點擊 [移除] 連結,便能刪除選單項目。" + +#: wp-admin/nav-menus.php:748 +msgid "To reorganize menu items, drag and drop items with your mouse or use your keyboard. Drag or move a menu item a little to the right to make it a submenu" +msgstr "如需重新排列選單項目,請以滑鼠拖放選單項目或使用鍵盤進行操作。此外,將選單項目稍往右側拖放或移動,便可使其成為子選單項目。" + +#: wp-admin/nav-menus.php:746 +msgid "Add one or several items at once by selecting the checkbox next to each item and clicking Add to Menu" +msgstr "如需一次新增一個 (含) 以上的項目,請選取個別項目的核取方塊,然後點擊 [新增至選單] 便可完成。" + +#: wp-admin/nav-menus.php:744 +msgid "Each navigation menu may contain a mix of links to pages, categories, custom URLs or other content types. Menu links are added by selecting items from the expanding boxes in the left-hand column below." +msgstr "每個導覽選單均可包含頁面、分類、自訂網址或其他內容類型的連結。展開畫面左側的區塊,便可從中選取項目並新增為選單連結。" + +#: wp-admin/nav-menus.php:739 +msgid "Menu Management" +msgstr "選單管理" + +#: wp-admin/nav-menus.php:734 +msgid "You can assign individual menus to the theme’s menu locations by selecting the desired settings at the bottom of the menu editor. To assign menus to all theme menu locations at once, visit the Manage Locations tab at the top of the screen." +msgstr "網站管理員可以在選單編輯器底部選取合適的設定,將特定選單指派至佈景主題提供的選單位置。如需一次將多個選單指派至佈景主題提供的全部選單位置,請至 [管理選單位置] 分頁中進行設定。" + +#: wp-admin/nav-menus.php:732 +msgid "To edit an existing menu, choose a menu from the dropdown and click Select" +msgstr "如需編輯現有的選單,請從下拉式選單選取要進行編輯的選單,然後點擊 [選取] 按鈕。" + +#: wp-admin/nav-menus.php:731 +msgid "The menu management box at the top of the screen is used to control which menu is opened in the editor below." +msgstr "畫面頂端的選單管理框,用於選取要在下方選單編輯器進行編輯的選單。" + +#: wp-admin/nav-menus.php:721 +msgid "Add, organize, and modify individual menu items" +msgstr "新增、管理及修改個別選單項目" + +#: wp-admin/nav-menus.php:720 +msgid "Create, edit, and delete menus" +msgstr "新增、編輯及刪除選單" + +#: wp-admin/nav-menus.php:719 wp-admin/themes.php:133 +msgid "From this screen you can:" +msgstr "網站管理員在這個畫面可以進行以下操作:" + +#: wp-admin/nav-menus.php:711 +msgid "This screen is used for managing your navigation menus." +msgstr "這個畫面用來管理網站的導覽選單。" + +#: wp-admin/nav-menus.php:535 +msgid "Menu locations updated." +msgstr "選單位置已更新。" + +#: wp-admin/includes/post.php:1925 +msgid "Your latest changes were saved as a revision." +msgstr "你最後進行的修改已儲存為內容修訂。" + +#: wp-admin/includes/media.php:3487 +msgid "Audio Codec:" +msgstr "音訊轉碼器:" + +#: wp-admin/includes/media.php:3486 +msgid "Audio Format:" +msgstr "音訊格式:" + +#. translators: Audio file genre information. %s: Audio genre name. +#: wp-admin/includes/media.php:388 +msgid "Genre: %s." +msgstr "內容類型: %s。" + +#. translators: Audio file track information. 1: Audio track number, 2: Total +#. audio tracks. +#: wp-admin/includes/media.php:372 +msgid "Track %1$s of %2$s." +msgstr "這是專輯的音軌 %1$s,總計 %2$s 軌。" + +#. translators: Audio file track information. %d: Year of audio track release. +#: wp-admin/includes/media.php:362 +msgid "Released: %d." +msgstr "發行年份: %d 年。" + +#. translators: 1: Audio album title, 2: Artist name. +#: wp-admin/includes/media.php:350 +msgid "%1$s by %2$s." +msgstr "由「%2$s」創作的《%1$s》。" + +#: wp-admin/includes/revision.php:252 +msgctxt "revision date short format" +msgid "j M Y @ H:i" +msgstr "Y/n/j a g:i" + +#: wp-admin/includes/revision.php:459 +msgid "Restore This Revision" +msgstr "還原這份內容修訂" + +#. translators: %s: Capability name. +#: wp-admin/user-edit.php:948 +msgid "Denied: %s" +msgstr "拒絕: %s" + +#: wp-admin/user-edit.php:934 +msgid "Capabilities" +msgstr "權限" + +#: wp-admin/nav-menus.php:1175 wp-admin/network/settings.php:507 +msgid "Menu Settings" +msgstr "選單設定" + +#: wp-admin/nav-menus.php:1077 +msgid "Menu structure" +msgstr "選單結構" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:289 +msgid "To the top" +msgstr "成為第一個選單項目" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:286 +msgid "Down one" +msgstr "下移一位" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:285 +msgid "Up one" +msgstr "上移一位" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:284 +msgid "Move" +msgstr "移動選單項目" + +#. translators: 1: Post creation date, 2: Post creation time. +#: wp-admin/includes/ajax-actions.php:1643 +msgid "Draft created on %1$s at %2$s" +msgstr "草稿建立時間為 %1$s%2$s" + +#. translators: %s: User's display name. +#: wp-admin/post.php:257 +msgid "You cannot move this item to the Trash. %s is currently editing." +msgstr "無法這個項目移至回收桶。「%s」目前正在編輯。" + +#. translators: %s: User's display name. +#: wp-admin/includes/misc.php:1211 +msgid "%s has taken over and is currently editing." +msgstr "「%s」已接管編輯工作且正在進行編輯。" + +#: wp-admin/nav-menus.php:982 +msgid "Select a menu to edit:" +msgstr "選取需要編輯的選單:" + +#. translators: %s: URL to Upgrade Network screen. +#: wp-admin/includes/ms.php:695 +msgid "Thank you for Updating! Please visit the Upgrade Network page to update all your sites." +msgstr "感謝進行更新!請造訪 [升級多站網路] 頁面以更新全部網站。" + +#: wp-admin/setup-config.php:510 +msgid "All right, sparky! You’ve made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to…" +msgstr "安裝過程相當順利!目前已完成安裝程序中重要的一步,WordPress 現在已可連線至指定資料庫。當一切準備就緒後,便請..." + +#: wp-admin/includes/class-wp-debug-data.php:1721 +msgid "Client version" +msgstr "用戶端版本" + +#: wp-admin/nav-menus.php:1191 +msgid "Auto add pages" +msgstr "自動新增頁面" + +#: wp-admin/nav-menus.php:1145 +msgid "Give your menu a name, then click Create Menu." +msgstr "請輸入選單名稱,然後點擊 [建立選單]。" + +#: wp-admin/nav-menus.php:1118 +msgid "Edit your default menu by adding or removing items. Drag the items into the order you prefer. Click Create Menu to save your changes." +msgstr "透過新增或移除選單項目的方式編輯網站的預設選單,並將選單項目拖放至合適的順序,然後點擊 [儲存選單] 以儲存變更。" + +#: wp-admin/nav-menus.php:1088 +msgid "Menu 1" +msgstr "選單 1" + +#: wp-admin/nav-menus.php:358 +msgid "Selected menus have been successfully deleted." +msgstr "選取的選單已成功刪除。" + +#: wp-admin/theme-editor.php:32 +msgid "For PHP files, you can use the documentation dropdown to select from functions recognized in that file. Look Up takes you to a web page with reference material about that particular function." +msgstr "如果編輯的是 PHP 檔案,可以先在編輯區塊下方的 [線上說明] 下拉式選單中選取檔案中的函式名稱,然後點擊 [查詢] 按鈕便會開啟這個指定函式的參考資料網頁。" + +#: wp-admin/plugin-editor.php:312 wp-admin/theme-editor.php:372 +msgid "Look Up" +msgstr "查詢" + +#: wp-admin/plugin-editor.php:143 +msgid "The documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Look Up takes you to a web page about that particular function." +msgstr "編輯器下方的 [線上說明] 下拉式選單,會列出目前編輯器所載入的外掛檔案中可識別的 PHP 函式;選取函式名稱後點擊 [查詢] 按鈕,便會開啟這個指定函式的參考資料網頁。" + +#. translators: %s: User's display name. +#: wp-admin/includes/class-wp-posts-list-table.php:1125 +#: wp-admin/includes/misc.php:1158 +msgid "%s is currently editing" +msgstr "「%s」正在編輯" + +#: wp-admin/edit-form-advanced.php:354 +msgid "You can upload and insert media (images, audio, documents, etc.) by clicking the Add Media button. You can select from the images and files already uploaded to the Media Library, or upload new media to add to your page or post. To create an image gallery, select the images to add and click the “Create a new gallery” button." +msgstr "使用者可以點擊 [新增媒體] 按鈕以上傳或插入媒體檔案 (包含圖片、音訊、文件等等),也可以從 [媒體庫] 中選取已上傳的圖片或檔案,或將新的媒體檔案新增至頁面或文章中。如需建立圖庫,請選取要加入圖庫的圖片,然後點擊 [建立圖庫]。" + +#: wp-admin/includes/image-edit.php:83 +msgid "Image rotation is not supported by your web host." +msgstr "目前使用的網站主機不支援圖片旋轉。" + +#. translators: %s: A link to install the Link Manager plugin. +#: wp-admin/includes/bookmark.php:356 +msgid "If you are looking to use the link manager, please install the Link Manager plugin." +msgstr "如需使用連結管理程式,請安裝 Link Manager 外掛。" + +#: wp-admin/widgets-form.php:65 +msgid "When changing themes, there is often some variation in the number and setup of widget areas/sidebars and sometimes these conflicts make the transition a bit less smooth. If you changed themes and seem to be missing widgets, scroll down on this screen to the Inactive Widgets area, where all of your widgets and their settings will have been saved." +msgstr "為網站更換佈景主題後,小工具區域/資訊欄的數量及設定常常會發生變化,而這些不同佈景主題間的差異往往會造成佈景主題轉換過程不甚流暢。如果為網站更換佈景主題後發現找不到某些小工具,請將畫面向下捲動至 [未啟用的小工具] 區域;出現在這個區域中的小工具,便是使用於前一個佈景主題,但因為新舊佈景主題間的差異成為未啟用的小工具,這些小工具會保留之前的設定。" + +#: wp-admin/edit-tags.php:289 +msgid "Parent — Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown." +msgstr "上層分類 — 分類具備階層架構,這是它與標籤的不同之處。舉例來說,這個網站可以有個〈影集〉分類,而其下還有〈美劇〉及〈日劇〉等子分類,網站管理員可依實際使用目的規劃分類的階層架構。如需建立子分類,請先在 [上層分類] 下拉式選單中選取任一分類再進行其他操作。" + +#: wp-admin/edit-form-advanced.php:367 +msgid "Several boxes on this screen contain settings for how your content will be published, including:" +msgstr "這個畫面包含數個設定區塊,這些設定能讓使用者決定該如何發佈內容,項目如下:" + +#: wp-admin/edit-form-advanced.php:360 +msgid "Inserting Media" +msgstr "插入媒體檔案" + +#: wp-admin/edit-form-advanced.php:275 +msgid "The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop. You can also minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen." +msgstr "標題欄位及文章編輯區域為固定位置,但使用者可以透過拖放方式重新排列其他區塊,還可以點擊各個區塊的標題列以收合或展開區塊。使用 [顯示項目設定] 分頁便能顯示更多區塊,例如 [內容摘要]、[傳送引用通知]、[自訂欄位]、[討論]、[代稱] 及 [作者],或設定這個畫面的版面配置為 [1 欄] 或 [2 欄]。" + +#: wp-admin/includes/class-custom-image-header.php:139 +msgid "Do not forget to click “Save Changes” when you are done!" +msgstr "完成設定後,請記得點擊 [儲存設定]。" + +#: wp-admin/includes/class-custom-background.php:102 +msgid "To use a background image, simply upload it or choose an image that has already been uploaded to your Media Library by clicking the “Choose Image” button. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site." +msgstr "如果網站想使用背景圖片,僅需將圖片上傳,或在點擊 [選取圖片] 按鈕後從 [媒體庫] 中選取一張已上傳的圖片。網站可以將背景圖片顯示為單張圖片,也能設定將背景圖片填滿整個畫面。背景圖片可以設定為捲動網站內容時,圖片位置固定不動,也能設定為背景圖片隨著內容捲動。" + +#: wp-admin/async-upload.php:68 +msgctxt "media item" +msgid "Edit" +msgstr "編輯" + +#. translators: %s: Default text color. +#: wp-admin/includes/class-custom-image-header.php:795 +msgctxt "color" +msgid "Default: %s" +msgstr "預設色彩: %s" + +#: wp-admin/includes/class-wp-media-list-table.php:399 +#: wp-admin/includes/class-wp-media-list-table.php:433 +msgctxt "column name" +msgid "Uploaded to" +msgstr "關聯內容" + +#: wp-admin/includes/ajax-actions.php:2632 +#: wp-admin/includes/class-custom-background.php:524 +#: wp-admin/includes/class-custom-image-header.php:980 +msgid "The uploaded file is not a valid image. Please try again." +msgstr "上傳的檔案不是有效圖片。請再試一次。" + +#: wp-admin/includes/class-custom-image-header.php:683 +msgid "Choose a Custom Header" +msgstr "取自訂頁首" + +#: wp-admin/includes/class-custom-background.php:362 +msgid "Choose a Background Image" +msgstr "選取擇背景圖片" + +#: wp-admin/includes/class-custom-image-header.php:138 +msgid "In the Header Text section of this page, you can choose whether to display this text or hide it. You can also choose a color for the text by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker." +msgstr "網站管理員在這個頁面的 [首頁文字] 區段中,可以設定要將頁首文字予以顯示或隱藏。網站管理員也可以點擊 [選取色彩] 按鈕為頁首文字設定色彩、輸入有效的 HTML 十六進位值 (例如紅色是 #ff0000),或使用色彩選擇器選取需要的頁首文字色彩。" + +#: wp-admin/includes/class-custom-background.php:103 +msgid "You can also choose a background color by clicking the Select Color button and either typing in a legitimate HTML hex value, e.g. “#ff0000” for red, or by choosing a color using the color picker." +msgstr "網站管理員也可以點擊 [選取色彩] 按鈕選取背景色彩、輸入有效的 HTML 十六進位值 (例如紅色是 #ff0000),或使用色彩選擇器選取需要的背景色彩。" + +#: wp-admin/edit-comments.php:221 +msgid "In the In response to column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows the number of approved comments that post has received. If there are pending comments, a red notification circle with the number of pending comments is displayed. Clicking the notification circle will filter the comments screen to show only pending comments on that post." +msgstr "[回應目標] 欄位包含三項資訊。文章標題代表留言發佈於哪篇文章,點擊文章標題會進入該篇文章的編輯畫面,而點擊 [檢視文章] 連結則會進入該篇文章在網站前端的內容頁面。文章中有多少則已核准的留言會以帶有數字的小泡泡表示,而等候審閱的留言則會以帶有數字的紅色圓圈表示。點擊小泡泡或紅色圓圈,會進入該篇文章對應狀態的留言的管理畫面。" + +#. translators: 1: User ID, 2: User login. +#: wp-admin/users.php:390 wp-admin/users.php:557 +msgid "ID #%1$s: %2$s" +msgstr "ID 為 %1$s 的使用者 %2$s" + +#. translators: 1: User ID, 2: User login. +#: wp-admin/users.php:377 +msgid "ID #%1$s: %2$s The current user will not be deleted." +msgstr "ID 為 %1$s 的使用者 %2$s 目前登入的使用者不會遭到刪除。" + +#. translators: Storage space that's been used. 1: Percentage of used space, 2: +#. Total space allowed in megabytes or gigabytes. +#: wp-admin/includes/ms.php:266 +msgid "Used: %1$s%% of %2$s" +msgstr "已使用: 全部 %2$s 的 %1$s%%" + +#: wp-admin/users.php:352 +msgid "Please select an option." +msgstr "請選取必要的設定。" + +#: wp-admin/setup-config.php:446 +msgid "After you’ve done that, click “Run the installation”." +msgstr "完成後請點擊 [執行安裝程式]。" + +#: wp-admin/plugin-install.php:115 +msgid "If you want to install a plugin that you’ve downloaded elsewhere, click the Upload Plugin button above the plugins list. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin." +msgstr "如需安裝從其他地方取得的外掛,點擊外掛清單上方的 [上傳外掛] 按鈕,便會出現上傳 ZIP 格式的外掛壓縮檔的功能;外掛壓縮檔完成上傳及安裝後,便可以啟用這個手動安裝的新外掛。" + +#: wp-admin/plugin-install.php:114 +msgid "You can also browse a user’s favorite plugins, by using the Favorites link above the plugins list and entering their WordPress.org username." +msgstr "網站管理員也可以在外掛清單上方的 [我的最愛] 分頁中,輸入 WordPress.org 使用者名稱以瀏覽這個指定使用者標示為 [我的最愛] 的外掛。" + +#: wp-admin/plugin-install.php:112 +msgid "If you know what you are looking for, Search is your best bet. The Search screen has options to search the WordPress Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting popular tags. Tags in larger type mean more plugins have been labeled with that tag." +msgstr "如果非常明確的知道網站所需要的功能,搜尋便是最佳選擇。在搜尋畫面中,可透過輸入關鍵字、開發者或標籤搜尋 WordPress 外掛目錄。網站管理員也可以透過選取最受歡迎的標籤以瀏覽外掛目錄,其中以較大字體顯示的標籤代表有更多的外掛使用這個標籤進行標示。" + +#: wp-admin/install.php:203 wp-admin/options-reading.php:240 +msgid "It is up to search engines to honor this request." +msgstr "這項設定的效力並非絕對,完全取決於搜尋引擎是否遵守這項設定的要求。" + +#: wp-admin/install.php:194 wp-admin/install.php:202 +#: wp-admin/options-reading.php:218 wp-admin/options-reading.php:239 +msgid "Discourage search engines from indexing this site" +msgstr "阻擋搜尋引擎索引這個網站" + +#: wp-admin/install.php:192 wp-admin/options-reading.php:216 +msgid "Allow search engines to index this site" +msgstr "開放搜尋引擎為這個網站進行索引" + +#: wp-admin/install.php:182 wp-admin/options-reading.php:44 +#: wp-admin/options-reading.php:209 +msgid "Search engine visibility" +msgstr "搜尋引擎可見度" + +#. translators: 1: WordPress version, 2: URL to About screen. +#: wp-admin/includes/update-core.php:1759 wp-admin/update-core.php:923 +msgid "Welcome to WordPress %1$s. You will be redirected to the About WordPress screen. If not, click here." +msgstr "歡迎使用 WordPress %1$s,接下來將會重新導向至〈關於 WordPress〉畫面。如果並未重新導向,請點擊這個連結前往。" + +#: wp-admin/includes/plugin-install.php:376 wp-admin/theme-install.php:237 +msgid "Get Favorites" +msgstr "取得 [我的最愛] 清單" + +#: wp-admin/includes/plugin-install.php:374 wp-admin/theme-install.php:234 +msgid "Your WordPress.org username:" +msgstr "請輸入 WordPress.org 使用者名稱:" + +#: wp-admin/includes/plugin-install.php:370 +msgid "If you have marked plugins as favorites on WordPress.org, you can browse them here." +msgstr "如果你曾在 WordPress.org 將外掛標示為 [我的最愛],便可以在這裡瀏覽整份清單。" + +#: wp-admin/includes/dashboard.php:2084 +msgid "Welcome to WordPress!" +msgstr "歡迎使用 WordPress!" + +#: wp-admin/includes/dashboard.php:407 +msgid "Search engines discouraged" +msgstr "已阻擋搜尋引擎進行索引" + +#. translators: 1: Link to documentation on child themes, 2: Name of parent +#. theme. +#: wp-admin/includes/class-wp-themes-list-table.php:287 +msgid "This child theme requires its parent theme, %2$s." +msgstr "這個子佈景主題需要安裝上層佈景主題 %2$s 才能使用。" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:114 +msgctxt "Plugin Installer" +msgid "Favorites" +msgstr "我的最愛" + +#: wp-admin/theme-install.php:130 +msgid "To install the theme so you can preview it with your site’s content and customize its theme options, click the \"Install\" button at the top of the left-hand pane. The theme files will be downloaded to your website automatically. When this is complete, the theme is now available for activation, which you can do by clicking the \"Activate\" link, or by navigating to your Manage Themes screen and clicking the \"Live Preview\" link under any installed theme’s thumbnail image." +msgstr "如需安裝佈景主題以透過 [即時預覽] 功能使用網站實際內容進行預覽並自訂佈景主題選項,請點擊佈景主題預覽畫面左側窗格上方的 [安裝] 按鈕進行安裝。安裝佈景主題時會自動下載安裝套件至這個網站,佈景主題安裝完畢後便隨時可供啟用;網站管理員可以在 [管理佈景主題] 頁面點擊任何已安裝佈景主題縮圖下方的 [啟用] 按鈕啟用佈景主題,或是點擊 [即時預覽] 按鈕進行即時預覽。" + +#: wp-admin/includes/widgets.php:264 +msgctxt "widget" +msgid "Add" +msgstr "新增" + +#: wp-admin/includes/widgets.php:263 +msgctxt "widget" +msgid "Edit" +msgstr "編輯" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme-install.php:125 +msgid "Search by tag" +msgstr "以標籤為條件進行搜尋" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme-install.php:121 +msgid "Search by author" +msgstr "以開發者為條件進行搜尋" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme-install.php:117 +#: wp-admin/includes/theme-install.php:134 +msgid "Search by keyword" +msgstr "以關鍵字為條件進行搜尋" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/theme-install.php:104 +msgid "Type of search" +msgstr "搜尋類型" + +#: wp-admin/includes/class-wp-screen.php:1066 +msgid "Screen Options Tab" +msgstr "[顯示項目設定] 分頁" + +#: wp-admin/includes/class-wp-screen.php:872 +msgid "Contextual Help Tab" +msgstr "關聯式使用說明分頁" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-comments-list-table.php:962 +msgid "Select comment" +msgstr "選取留言" + +#. translators: %s: URL to Categories to Tags Converter tool. +#: wp-admin/edit-tags.php:656 +msgid "Tags can be selectively converted to categories using the tag to category converter." +msgstr "使用分類與標籤轉換程式可將標籤選擇性地轉換成分類。" + +#: wp-admin/edit-tags.php:263 +msgid "You can delete Link Categories in the Bulk Action pull-down, but that action does not delete the links within the category. Instead, it moves them to the default Link Category." +msgstr "透過 [批次操作] 下拉式選單中便可刪除連結分類,這項操作不會刪除隸屬於該分類的連結,但是會將這些已無分類的連結指派至預設分類。" + +#: wp-admin/edit-form-advanced.php:317 +msgid "Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and Code modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box." +msgstr "建立頁面與建立文章非常相似,畫面同樣可以透過拖放、[顯示項目設定] 分頁,以及選取可展開/收合的區塊進行自訂。這個畫面一樣提供可透過按鈕切換至全螢幕的 [專注模式],並可在內容編輯器的 [預覽] 及 [程式碼] 模式進行切換。頁面編輯器與文章編輯器大同小異,差別在於頁面有它專屬的 [頁面屬性] 區塊。" + +#: wp-admin/includes/class-custom-image-header.php:595 +msgid "You can select an image to be shown at the top of your site by uploading from your computer or choosing from your media library. After selecting an image you will be able to crop it." +msgstr "網站管理員可以從個人裝置上傳圖片或選取媒體庫中的圖片,然後為圖片進行裁剪。選取並完成裁剪的圖片會顯示於這個網站的頂端。" + +#: wp-admin/menu-header.php:294 +msgid "Skip to main content" +msgstr "跳至主要內容" + +#: wp-admin/includes/class-custom-image-header.php:120 +msgid "You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately. Alternatively, you can use an image that has already been uploaded to your Media Library by clicking the “Choose Image” button." +msgstr "網站管理員可以為這個網站自訂頁首圖片,僅需要上傳並裁剪圖片,新的頁首便立即生效。此外,網站管理員還可以點擊 [選取圖片] 按鈕,選取已上傳至媒體庫的圖片並設定為頁首圖片。" + +#: wp-admin/includes/class-custom-image-header.php:958 +msgid "Skip Cropping, Publish Image as Is" +msgstr "略過裁剪,直接發佈原始圖片" + +#: wp-admin/includes/class-custom-background.php:363 +#: wp-admin/includes/class-custom-image-header.php:684 +msgid "Choose Image" +msgstr "選取圖片" + +#: wp-admin/includes/class-custom-background.php:360 +#: wp-admin/includes/class-custom-image-header.php:680 +msgid "Or choose an image from your media library:" +msgstr "或從網站媒體庫中選取一張圖片:" + +#: wp-admin/includes/class-custom-background.php:350 +#: wp-admin/includes/class-custom-image-header.php:593 +msgid "Select Image" +msgstr "選取圖片" + +#: wp-admin/includes/class-custom-image-header.php:123 +msgid "If you do not want a header image to be displayed on your site at all, click the “Remove Header Image” button at the bottom of the Header Image section of this page. If you want to re-enable the header image later, you just have to select one of the other image options and click “Save Changes”." +msgstr "如果網站不需要顯示頁首圖片,請點擊這個頁面 [頁首圖片] 區段底部的 [移除頁首圖片] 按鈕。如果稍後需要為這個網站重新啟用頁首圖片,只需要選取其中一個圖片選項並點擊 [儲存設定]。" + +#: wp-admin/includes/plugin-install.php:1028 +msgctxt "plugin" +msgid "Installed" +msgstr "已安裝" + +#: wp-admin/themes.php:180 +msgid "Previewing and Customizing" +msgstr "預覽及自訂" + +#: wp-admin/theme-install.php:135 +msgid "Previewing and Installing" +msgstr "預覽及安裝" + +#: wp-admin/theme-install.php:129 +msgid "Once you have generated a list of themes, you can preview and install any of them. Click on the thumbnail of the theme you are interested in previewing. It will open up in a full-screen Preview page to give you a better idea of how that theme will look." +msgstr "網站管理員在這個畫面中,可以預覽及安裝清單中的任何一款佈景主題。點擊屬意的佈景主題縮圖便會開啟全螢幕頁面進行預覽,讓網站管理員能更加了解佈景主題套用後的實際外觀。" + +#. translators: %s: HTML attributes for button. +#: wp-admin/includes/media.php:3076 +msgid "You are using the browser’s built-in file uploader. The WordPress uploader includes multiple file selection and drag and drop capability. ." +msgstr "目前使用的是瀏覽器內建的檔案上傳程式。WordPress 上傳程式內建多檔案選取及拖放上傳功能。請。" + +#: wp-admin/tools.php:50 +msgid "The Categories and Tags Converter link on this screen will take you to the Import screen, where that Converter is one of the plugins you can install. Once that plugin is installed, the Activate Plugin & Run Importer link will take you to a screen where you can choose to convert tags into categories or vice versa." +msgstr "這個畫面中的 [分類與標籤轉換程式] 連結會將使用者導向至 [匯入程式] 畫面,在 [匯入程式] 畫面中,[分類與標籤轉換程式] 是可安裝的外掛之一。[分類與標籤轉換程式] 外掛完成安裝後,點擊 [啟用外掛並執行匯入程式] 便會進入選擇標籤與分類雙向轉換的畫面。" + +#: wp-admin/tools.php:49 +msgid "Categories have hierarchy, meaning that you can nest sub-categories. Tags do not have hierarchy and cannot be nested. Sometimes people start out using one on their posts, then later realize that the other would work better for their content." +msgstr "分類具備階層架構,這代表使用者可以使用巢狀子分類;標籤不具備階層架構,也無法使用巢狀子項目。使用者有時候只會在文章中使用其中一種,之後便會了解到另外一種更適合他們的內容。" + +#. translators: %s: URL to General Settings screen. +#: wp-admin/includes/class-custom-image-header.php:134 +msgid "For most themes, the header text is your Site Title and Tagline, as defined in the General Settings section." +msgstr "對大多數佈景主題而言,頁首文字就是這個網站的 [網站標題] 及 [網站說明],這兩項均可在 [設定]→[一般] 中進行設定。" + +#: wp-admin/includes/class-custom-image-header.php:122 +msgid "If your theme has more than one default header image, or you have uploaded more than one custom header image, you have the option of having WordPress display a randomly different image on each page of your site. Click the “Random” radio button next to the Uploaded Images or Default Images section to enable this feature." +msgstr "如果目前使用的佈景主題可以有超過一張預設頁首圖片,或網站管理員曾經上傳超過一張頁首圖片,便會出現讓 WordPress 網站每個頁面隨機顯示不同圖片的選項。點擊 [已上傳的圖片] 或 [預設圖片] 區段旁的 [隨機] 選項按鈕以啟用這項功能。" + +#: wp-admin/includes/class-custom-image-header.php:121 +msgid "Some themes come with additional header images bundled. If you see multiple images displayed, select the one you would like and click the “Save Changes” button." +msgstr "某些佈景主題會內建額外的頁首圖片。如果頁首圖片設定處顯示了多張圖片,請選取其中一張並點擊 [儲存設定] 按鈕。" + +#: wp-admin/includes/class-custom-image-header.php:111 +msgid "You can choose from the theme’s default header images, or use one of your own. You can also customize how your Site Title and Tagline are displayed." +msgstr "網站管理員可以選取佈景主題內建的預設頁首圖片,或是使用已上傳至媒體庫的圖片,還可以自訂網站標題與網站說明的顯示方式。" + +#: wp-admin/includes/class-custom-image-header.php:110 +msgid "This screen is used to customize the header section of your theme." +msgstr "這個畫面用來自訂目前使用的佈景主題的頁首區段。" + +#: wp-admin/install.php:320 wp-admin/install.php:333 +msgid "Configuration Error" +msgstr "組態發生錯誤" + +#: wp-admin/media-new.php:55 +msgid "Revert to the Browser Uploader by clicking the link below the drag and drop box." +msgstr "點擊檔案上傳區下方的連結,即可返回瀏覽器上傳介面進行檔案上傳。" + +#: wp-admin/users.php:620 wp-admin/network/users.php:288 +msgid "User deleted." +msgstr "使用者已刪除。" + +#: wp-admin/includes/class-core-upgrader.php:40 wp-admin/includes/file.php:1735 +#: wp-admin/includes/file.php:1922 +msgid "Could not copy files. You may have run out of disk space." +msgstr "無法複製檔案。這個網站已無足夠的磁碟空間。" + +#: wp-admin/includes/theme-install.php:153 +msgid "Find a theme based on specific features." +msgstr "透過指定特色尋找佈景主題。" + +#: wp-admin/includes/theme-install.php:95 +msgid "Search for themes by keyword." +msgstr "以關鍵字為條件搜尋佈景主題。" + +#: wp-admin/setup-config.php:206 +msgid "In all likelihood, these items were supplied to you by your web host. If you do not have this information, then you will need to contact them before you can continue. If you are ready…" +msgstr "在多數的狀況中,這些資訊應由網站主機服務商提供。如果安裝人員並未獲得這些資訊,請在繼續安裝前先行聯絡廠商。當一切準備就緒後..." + +#: wp-admin/theme-editor.php:314 +msgid "This theme is broken." +msgstr "這個佈景主題不完整。" + +#: wp-admin/includes/class-custom-image-header.php:684 +msgid "Set as header" +msgstr "設定為頁首" + +#: wp-admin/includes/class-custom-background.php:363 +msgid "Set as background" +msgstr "設定為背景" + +#. translators: Hidden accessibility text. %s: Theme name. +#: wp-admin/includes/class-theme-upgrader-skin.php:94 +msgid "Customize “%s”" +msgstr "自訂 %s" + +#: wp-admin/install.php:160 wp-admin/user-edit.php:506 +#: wp-admin/user-edit.php:560 wp-admin/user-new.php:543 +#: wp-admin/user-new.php:547 wp-admin/user-new.php:594 +#: wp-admin/user-new.php:614 +msgid "(required)" +msgstr "(必填)" + +#: wp-admin/link.php:114 +msgid "Edit Link" +msgstr "編輯連結" + +#: wp-admin/includes/user.php:213 +msgid "Error: This email is already registered. Please choose another one." +msgstr "錯誤: 這個電子郵件地址已由其他使用者註冊使用,請使用不同的電子郵件地址註冊。" + +#: wp-admin/includes/user.php:157 +msgid "Error: Please enter a nickname." +msgstr "錯誤: 請輸入暱稱。" + +#: wp-admin/credits.php:62 +msgid "https://wordpress.org/about/" +msgstr "https://tw.wordpress.org/about/" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:1422 +#: wp-admin/includes/nav-menu.php:828 wp-admin/includes/nav-menu.php:1123 +#: wp-admin/update-core.php:501 wp-admin/update-core.php:625 +#: wp-admin/update-core.php:677 wp-admin/update-core.php:801 +msgid "Select All" +msgstr "全部選取" + +#: wp-admin/includes/meta-boxes.php:186 wp-admin/js/post.js:907 +msgid "Public, Sticky" +msgstr "公開、置頂" + +#: wp-admin/includes/meta-boxes.php:109 wp-admin/includes/meta-boxes.php:154 +#: wp-admin/js/post.js:827 wp-admin/js/post.js:829 +msgid "Privately Published" +msgstr "已私密發佈" + +#: wp-admin/includes/meta-boxes.php:59 wp-admin/js/post.js:861 +msgid "Save as Pending" +msgstr "儲存為待審閱內容" + +#: wp-admin/includes/media.php:1435 wp-admin/includes/media.php:3029 +msgid "Enter a link URL or click above for presets." +msgstr "輸入連結網址或點擊上方的預設集。" + +#: wp-admin/includes/media.php:1432 +msgid "Link URL" +msgstr "連結網址" + +#: wp-admin/includes/meta-boxes.php:912 +msgid "No comments yet." +msgstr "尚無留言。" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:520 +#: wp-admin/includes/class-wp-themes-list-table.php:281 +#: wp-admin/includes/plugin-install.php:656 +msgid "Version:" +msgstr "版本:" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:404 +#: wp-admin/theme-install.php:70 wp-admin/theme-install.php:601 +msgid "Collapse Sidebar" +msgstr "收合資訊欄" + +#: wp-admin/includes/class-wp-plugins-list-table.php:471 +msgid "Plugin" +msgstr "外掛名稱" + +#: wp-admin/export.php:197 wp-admin/export.php:209 wp-admin/export.php:239 +#: wp-admin/export.php:261 wp-admin/export.php:291 +#: wp-admin/includes/class-wp-users-list-table.php:189 +msgid "All" +msgstr "全部" + +#. translators: %s: Number of words. +#: wp-admin/edit-form-advanced.php:638 +msgid "Word count: %s" +msgstr "字數統計: %s" + +#: wp-admin/edit-comments.php:399 wp-admin/edit-comments.php:413 +msgid "Edit comment" +msgstr "編輯留言" + +#: wp-admin/options-general.php:523 wp-admin/options-general.php:568 +msgid "Preview:" +msgstr "預覽:" + +#: wp-admin/includes/class-wp-users-list-table.php:397 +#: wp-admin/includes/class-wp-ms-users-list-table.php:217 +msgid "E-mail" +msgstr "電子郵件地址" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-theme-upgrader.php:93 +msgid "The parent theme could not be found. You will need to install the parent theme, %s, before you can use this child theme." +msgstr "找不到上層佈景主題。請先安裝上層佈景主題 %s,才能使用它的子佈景主題。" + +#. translators: 1: Theme name, 2: Theme version. +#: wp-admin/includes/class-theme-upgrader.php:91 +msgid "Successfully installed the parent theme, %1$s %2$s." +msgstr "上層佈景主題 %1$s %2$s 已完成安裝。" + +#. translators: 1: Theme name, 2: Theme version. +#: wp-admin/includes/class-theme-upgrader.php:89 +msgid "The parent theme, %1$s %2$s, is currently installed." +msgstr "上層佈景主題 %1$s %2$s 版已安裝。" + +#. translators: 1: Theme name, 2: Theme version. +#: wp-admin/includes/class-theme-upgrader.php:87 +msgid "Preparing to install %1$s %2$s…" +msgstr "正在準備安裝 %1$s %2$s..." + +#: wp-admin/includes/class-theme-upgrader.php:85 +msgid "This theme requires a parent theme. Checking if it is installed…" +msgstr "這個佈景主題需要上層佈景主題。正在檢查是否已完成安裝..." + +#: wp-admin/includes/class-custom-image-header.php:767 +msgid "Show header text with your image." +msgstr "與圖片一起顯示的頁首文字。" + +#: wp-admin/includes/class-custom-image-header.php:130 +#: wp-admin/includes/class-custom-image-header.php:759 +#: wp-admin/includes/class-custom-image-header.php:764 +msgid "Header Text" +msgstr "頁首文字" + +#. translators: 1: Theme name, 2: Theme details URL, 3: Additional link +#. attributes, 4: Version number, 5: Update URL, 6: Additional link attributes. +#. translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, +#. 4: Version number, 5: Update URL, 6: Additional link attributes. +#. translators: 1: Theme name, 2: Details URL, 3: Additional link attributes, +#. 4: Version number, 5: Update URL, 6: Additional link attributes. +#: wp-admin/includes/theme.php:255 wp-admin/includes/update.php:553 +#: wp-admin/includes/update.php:745 +msgid "There is a new version of %1$s available. View version %4$s details or update now." +msgstr "%1$s 已有新版本可供下載安裝。請檢視 %4$s 版的詳細資料立即更新。" + +#. translators: %s: Plugin author. +#: wp-admin/includes/plugin.php:215 +msgid "By %s." +msgstr "由 %s 開發。" + +#: wp-admin/includes/meta-boxes.php:898 wp-admin/includes/template.php:464 +#: wp-admin/includes/template.php:508 +msgid "Add Comment" +msgstr "新增留言" + +#. Author URI of the plugin +#: hello.php +msgid "http://ma.tt/" +msgstr "https://ma.tt/" + +#. Description of the plugin +#: hello.php +msgid "This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from Hello, Dolly in the upper right of your admin screen on every page." +msgstr "Hello Dolly 不僅是一款外掛,這兩個字更是由 Louis Armstrong 演唱的著名歌曲,同時也象徵了整整一個世代的希望和熱情。啟用這個外掛後,網站管理後台各個頁面的右上角便會隨機出現〈Hello, Dolly〉這首歌曲的歌詞。" + +#. Plugin Name of the plugin +#: hello.php +msgid "Hello Dolly" +msgstr "Hello Dolly" + +#: wp-admin/index.php:78 +msgid "Welcome — Shows links for some of the most common tasks when setting up a new site." +msgstr "歡迎使用 — 新網站安裝完畢後,這個區塊會在控制台顯示最常用的任務連結。" + +#. translators: 1: Theme name, 2: Theme details URL, 3: Additional link +#. attributes, 4: Version number. +#. translators: 1: Theme name, 2: Details URL, 3: Additional link attributes, +#. 4: Version number. +#: wp-admin/includes/theme.php:242 wp-admin/includes/update.php:732 +msgid "There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this theme." +msgstr "%1$s 已有新版本可供下載安裝。請檢視 %4$s 版的詳細資料這個佈景主題無法自動更新。" + +#: wp-admin/install.php:107 wp-admin/install.php:385 +msgctxt "Howdy" +msgid "Welcome" +msgstr "你好" + +#: wp-admin/ms-delete-site.php:139 +msgid "Delete My Site Permanently" +msgstr "永久刪除我的網站" + +#. translators: %s: Site address. +#: wp-admin/ms-delete-site.php:134 +msgid "I'm sure I want to permanently delete my site, and I am aware I can never get it back or use %s again." +msgstr "確定永久刪除這個網站,並清楚了解無法取回已刪除的網站或再次使用 %s。" + +#: wp-admin/ms-delete-site.php:125 +msgid "Remember, once deleted your site cannot be restored." +msgstr "請注意,這個網站一經刪除便無法還原。" + +#. translators: %s: Network title. +#: wp-admin/ms-delete-site.php:120 +msgid "If you do not want to use your %s site any more, you can delete it using the form below. When you click Delete My Site Permanently you will be sent an email with a link in it. Click on this link to delete your site." +msgstr "如果不想再使用《%s》這個網站,可以透過下方的功能刪除網站。網站管理員點擊 [永久刪除我的網站] 後,便會收到一封內含網站刪除連結的電子郵件,點擊這個連結便能刪除這個網站。" + +#: wp-admin/ms-delete-site.php:111 +msgid "Thank you. Please check your email for a link to confirm your action. Your site will not be deleted until this link is clicked." +msgstr "感謝你。請檢查是否收到一封內含確認操作連結的電子郵件。在點擊這個連結前,系統不會刪除你的網站。" + +#: wp-admin/ms-delete-site.php:31 +msgid "Sorry, the link you clicked is stale. Please select another option." +msgstr "很抱歉,目前點擊的連結已失效。請選取其他設定。" + +#. translators: %s: Network title. +#: wp-admin/ms-delete-site.php:26 +msgid "Thank you for using %s, your site has been deleted. Happy trails to you until we meet again." +msgstr "感謝使用《%s》,你的網站已刪除。敬祝一切順利。" + +#. translators: My Sites label. +#: wp-admin/includes/ms.php:767 +msgid "Primary Site" +msgstr "主要網站" + +#: wp-admin/includes/ms.php:642 +msgid "British English" +msgstr "英國英文" + +#: wp-admin/includes/ms.php:638 +msgid "American English" +msgstr "美國英文" + +#: wp-admin/includes/ms.php:599 +msgid "View Site" +msgstr "檢視網站" + +#: wp-admin/includes/ms.php:598 +msgid "Visit Dashboard" +msgstr "造訪 [控制台]" + +#: wp-admin/includes/ms.php:592 +msgid "Your Sites" +msgstr "你的網站" + +#: wp-admin/includes/ms.php:590 +msgid "If you reached this screen by accident and meant to visit one of your own sites, here are some shortcuts to help you find your way." +msgstr "如果是因為操作問題進入這個畫面,並打算造訪自己的網站,以下是協助你返回正確目的地的快速連結。" + +#. translators: 1: Site title. +#: wp-admin/includes/ms.php:578 wp-admin/includes/ms.php:587 +msgid "You attempted to access the \"%1$s\" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the \"%1$s\" dashboard, please contact your network administrator." +msgstr "你嘗試存取《%1$s》的控制台,但你卻沒有這個網站的管理存取權限。如果你確定自己具備存取《%1$s》控制台的權限,請聯絡多站網路管理員。" + +#: wp-admin/includes/ms.php:316 +msgid "MB (Leave blank for network default)" +msgstr "MB (欄位留空代表使用多站網路預設值)" + +#. translators: New admin email address notification email subject. %s: Site +#. title. +#: wp-admin/includes/misc.php:1524 +msgid "[%s] New Admin Email Address" +msgstr "《%s》通知:新增網站管理員電子郵件地址" + +#: wp-admin/includes/class-wp-debug-data.php:487 +#: wp-admin/includes/class-wp-debug-data.php:546 +#: wp-admin/includes/class-wp-debug-data.php:700 +#: wp-admin/includes/class-wp-debug-data.php:1257 +#: wp-admin/includes/class-wp-debug-data.php:1368 +#: wp-admin/includes/class-wp-debug-data.php:1528 +#: wp-admin/includes/class-wp-debug-data.php:1537 +#: wp-admin/includes/class-wp-debug-data.php:1546 +#: wp-admin/includes/class-wp-debug-data.php:1555 +#: wp-admin/includes/class-wp-debug-data.php:1614 +#: wp-admin/includes/class-wp-debug-data.php:1619 +#: wp-admin/includes/class-wp-debug-data.php:1629 +#: wp-admin/includes/class-wp-debug-data.php:1634 +#: wp-admin/includes/class-wp-debug-data.php:1659 +msgid "Disabled" +msgstr "已停用" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:555 +msgid "Paused (%s)" +msgid_plural "Paused (%s)" +msgstr[0] "暫停使用 (%s)" + +#: wp-admin/my-sites.php:127 +msgid "Global Settings" +msgstr "全域設定" + +#: wp-admin/my-sites.php:86 +msgid "You must be a member of at least one site to use this page." +msgstr "你必須至少是其中一個網站的成員才能使用這個頁面。" + +#: wp-admin/my-sites.php:33 +msgid "The primary site you chose does not exist." +msgstr "選取的主要網站不存在。" + +#: wp-admin/setup-config.php:265 +msgid "If you want to run multiple WordPress installations in a single database, change this." +msgstr "如需在同一個資料庫中安裝多個 WordPress,請修改這個欄位中的預設設定。" + +#: wp-admin/setup-config.php:263 +msgid "Table Prefix" +msgstr "資料表前置詞" + +#: wp-admin/setup-config.php:253 +msgid "Database Host" +msgstr "資料庫主機位址" + +#: wp-admin/setup-config.php:243 +msgctxt "example password" +msgid "password" +msgstr "password" + +#: wp-admin/setup-config.php:236 +msgctxt "example username" +msgid "username" +msgstr "username" + +#: wp-admin/setup-config.php:230 +msgid "Database Name" +msgstr "資料庫名稱" + +#: wp-admin/setup-config.php:227 +msgid "Below you should enter your database connection details. If you are not sure about these, contact your host." +msgstr "安裝人員應於下方輸入資料庫連線詳細資料。如果不清楚以下欄位代表的意義,請洽詢網站主機服務商。" + +#: wp-admin/setup-config.php:208 +msgid "Let’s go!" +msgstr "開始安裝吧!" + +#: wp-admin/setup-config.php:177 +msgid "Table prefix (if you want to run more than one WordPress in a single database)" +msgstr "資料表前置詞 (用於在單一資料庫中安裝多個 WordPress)" + +#: wp-admin/includes/class-wp-debug-data.php:1730 wp-admin/setup-config.php:176 +msgid "Database host" +msgstr "資料庫主機位址" + +#: wp-admin/setup-config.php:175 +msgid "Database password" +msgstr "資料庫密碼" + +#: wp-admin/includes/class-wp-debug-data.php:1725 wp-admin/setup-config.php:174 +msgid "Database username" +msgstr "資料庫使用者名稱" + +#: wp-admin/includes/class-wp-debug-data.php:1735 wp-admin/setup-config.php:173 +msgid "Database name" +msgstr "資料庫名稱" + +#: wp-admin/setup-config.php:112 +msgid "WordPress › Setup Configuration File" +msgstr "WordPress › 設定網站組態檔案" + +#. translators: 1: wp-config.php, 2: install.php +#: wp-admin/setup-config.php:76 +msgid "The file %1$s already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now." +msgstr "檔案 %1$s 已存在於 WordPress 安裝目錄的上層目錄中。如需重設這個檔案內的任何組態項目,請直接刪除這個檔案,然後開始進行全新安裝。" + +#. translators: 1: wp-config.php, 2: install.php +#: wp-admin/setup-config.php:63 +msgid "The file %1$s already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try installing now." +msgstr "檔案 %1$s 已存在。如需重設這個檔案內的任何組態項目,請直接刪除這個檔案,然後開始進行全新安裝。" + +#. translators: %s: wp-config-sample.php +#: wp-admin/setup-config.php:52 +msgid "Sorry, I need a %s file to work from. Please re-upload this file to your WordPress installation." +msgstr "很抱歉,系統需要 %s 檔案才能藉以執行。請重新上傳這個檔案至 WordPress 網站的安裝根目錄。" + +#. translators: %s: wp-config.php +#: wp-admin/maint/repair.php:38 +msgid "To allow use of this page to automatically repair database problems, please add the following line to your %s file. Once this line is added to your config, reload this page." +msgstr "如需允許這個頁面自動修復資料庫問題,請將下列程式碼加入這個網站的 %s 檔案。程式碼加入設定檔後,請重新載入這個頁面。" + +#: wp-admin/includes/class-wp-comments-list-table.php:233 +msgid "No comments awaiting moderation." +msgstr "目前沒有待審閱的留言。" + +#: wp-admin/includes/plugin-install.php:577 +msgctxt "Plugin installer section title" +msgid "Other Notes" +msgstr "其他注意事項" + +#: wp-admin/includes/plugin-install.php:575 +msgctxt "Plugin installer section title" +msgid "Changelog" +msgstr "變更記錄" + +#: wp-admin/includes/plugin-install.php:574 +msgctxt "Plugin installer section title" +msgid "Screenshots" +msgstr "螢幕擷圖" + +#: wp-admin/includes/plugin-install.php:573 +msgctxt "Plugin installer section title" +msgid "FAQ" +msgstr "常見問題集" + +#: wp-admin/includes/plugin-install.php:572 +msgctxt "Plugin installer section title" +msgid "Installation" +msgstr "安裝方式" + +#: wp-admin/includes/plugin-install.php:571 +msgctxt "Plugin installer section title" +msgid "Description" +msgstr "內容說明" + +#: wp-admin/includes/plugin-install.php:704 +msgid "Plugin Homepage »" +msgstr "外掛首頁 »" + +#: wp-admin/export.php:52 +msgid "You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status." +msgstr "如需在其他 WordPress 網站或內容平台匯入這個網站的內容,網站管理員可將這個網站的內容匯出為單一檔案。資料匯出檔的格式是稱為 WXR 的 XML 檔案,匯出的內容會包含文章、頁面、留言、自訂欄位、分類及標籤。網站管理員可在下拉式選單中設定篩選條件,透過設定分類、作者、發佈月份或發佈狀態等篩選條件,便能讓 WXR 匯出檔僅包含符合篩選條件的內容。" + +#. translators: 1: Table name, 2: Error message. +#: wp-admin/maint/repair.php:129 +msgid "Failed to repair the %1$s table. Error: %2$s" +msgstr "無法修復資料表 %1$s。錯誤: %2$s" + +#: wp-admin/user-new.php:281 +msgid "New users will receive an email letting them know they’ve been added as a user for your site. This email will also contain their password. Check the box if you do not want the user to receive a welcome email." +msgstr "新使用者會收到一封電子郵件,通知他們已新增為這個網站的使用者,郵件內容同時包含使用者的密碼。如果使用者不需要收到歡迎電子郵件,請啟用這項設定。" + +#: wp-admin/includes/image-edit.php:329 +msgid "There are unsaved changes that will be lost. 'OK' to continue, 'Cancel' to return to the Image Editor." +msgstr "不進行儲存便會失去已完成的變更。點擊 [確定] 以繼續,點擊 [取消] 以返回圖片編輯器。" + +#: wp-admin/options-writing.php:35 +msgid "Post via email settings allow you to send your WordPress installation an email with the content of your post. You must set up a secret email account with POP3 access to use this, and any mail received at this address will be posted, so it’s a good idea to keep this address very secret." +msgstr "[透過電子郵件發佈文章] 設定能讓網站管理員以傳送包含文章內容電子郵件方式,將電子郵件內容在 WordPress 網站發佈為文章。網站管理員必須建立一個可透過 POP 3 通訊協定存取的秘密電子郵件帳號才能使用這項功能,而這個電子郵件地址收到的任何電子郵件都會將其內容發佈為網站文章,因此務必對這個電子郵件地址嚴加保密。" + +#: wp-admin/users.php:47 +msgid "You can filter the list of users by User Role using the text links above the users list to show All, Administrator, Editor, Author, Contributor, or Subscriber. The default view is to show all users. Unused User Roles are not listed." +msgstr "使用者可以點擊使用者清單上方的使用者角色文字連結,便會列出對應使用者角色的使用者 (全部、網站管理員、編輯、作者、投稿者或訂閱者)。預設檢視會列出全部使用者,但不會列出尚無使用者的使用者角色。" + +#: wp-admin/import.php:26 +msgid "In previous versions of WordPress, all importers were built-in. They have been turned into plugins since most people only use them once or infrequently." +msgstr "在舊版的 WordPress 中,全部匯入程式都是內建功能。目前已將匯入程式改寫為外掛,主要是因為匯入程式多半僅需執行一次,使用率也不高。" + +#. translators: %s: URL to view the autosave. +#: wp-admin/edit-form-advanced.php:246 +msgid "There is an autosave of this post that is more recent than the version below. View the autosave" +msgstr "這篇內容的自動儲存版本比目前編輯區的內容更新。檢視這份自動儲存" + +#: wp-admin/includes/class-custom-image-header.php:915 +#: wp-admin/includes/class-custom-image-header.php:1074 +#: wp-admin/includes/class-custom-image-header.php:1420 +msgid "Image could not be processed. Please go back and try again." +msgstr "圖片無法進行處理。請返回,然後再試一次。" + +#: wp-admin/themes.php:263 +msgid "The active theme is broken. Reverting to the default theme." +msgstr "啟用中的佈景主題不完整。還原至預設的佈景主題。" + +#: wp-admin/maint/repair.php:186 +msgid "WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing." +msgstr "WordPress 也會嘗試最佳化資料庫,這在某些狀況下可以增進效能。修復並最佳化資料庫會需要較長的執行時間,而進行最佳化時會鎖定資料庫。" + +#: wp-admin/maint/repair.php:182 +msgid "WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient." +msgstr "WordPress 會自動檢查並修復某些常見的資料庫問題。修復過程需要一點時間,請耐心等候。" + +#: wp-admin/maint/repair.php:170 +msgid "Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users." +msgstr "資料庫修復完畢。請從 wp-config.php 檔案中移除下列程式碼,以避免這個頁面遭到未經授權的使用者誤用。" + +#. translators: 1: Table name, 2: Error message. +#: wp-admin/maint/repair.php:119 +msgid "The %1$s table is not okay. It is reporting the following error: %2$s. WordPress will attempt to repair this table…" +msgstr "%1$s 資料表發生問題。這個資料表的錯誤: %2$s。WordPress 會嘗試修復這個資料表..." + +#: wp-admin/user-new.php:454 +msgid "Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." +msgstr "輸入這個多站網路中已存在的使用者電子郵件地址或使用者名稱,便能邀請他們加入這個網站。受到邀請的使用者將會收到一封電子郵件,要求確認這項邀請。" + +#: wp-admin/user-new.php:450 +msgid "Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." +msgstr "輸入這個多站網路中已存在的使用者電子郵件地址,便能邀請他們加入這個網站。受到邀請的使用者將會收到一封電子郵件,要求確認這項邀請。" + +#: wp-admin/user-edit.php:374 +msgid "Show Toolbar when viewing site" +msgstr "檢視網站前端時顯示工具列" + +#. translators: %s: Documentation URL. +#: wp-admin/about.php:324 +msgid "For more information, see the release notes." +msgstr "如需進一步了解相關資訊,請參閱版本資訊。" + +#. translators: 1: WordPress version number, 2: Plural number of bugs. More +#. than one security issue. +#: wp-admin/about.php:318 +msgid "Version %1$s addressed some security issues and fixed %2$s bug." +msgid_plural "Version %1$s addressed some security issues and fixed %2$s bugs." +msgstr[0] "%1$s 版修正了多個安全性問題,同時也修正了 %2$s 個程式碼錯誤。" + +#. translators: 1: WordPress version number, 2: Plural number of bugs. Singular +#. security issue. +#: wp-admin/about.php:312 +msgid "Version %1$s addressed a security issue and fixed %2$s bug." +msgid_plural "Version %1$s addressed a security issue and fixed %2$s bugs." +msgstr[0] "%1$s 版修正了 1 個安全性問題,同時也修正了 %2$s 個程式碼錯誤。" + +#. translators: 1: WordPress version number, 2: Plural number of bugs. +#: wp-admin/about.php:306 +msgid "Version %1$s addressed %2$s bug." +msgid_plural "Version %1$s addressed %2$s bugs." +msgstr[0] "%1$s 版修正了 %2$s 個程式碼錯誤。" + +#. translators: %s: WordPress version number. +#: wp-admin/about.php:303 +msgid "Version %s addressed some security issues." +msgstr "%s 版修正了多個安全性問題。" + +#: wp-admin/about.php:297 +msgid "Maintenance and Security Release" +msgstr "維護及安全性更新版本" + +#: wp-admin/about.php:294 +msgid "Security Release" +msgstr "安全性更新版本" + +#: wp-admin/about.php:291 +msgid "Maintenance Release" +msgstr "維護版本" + +#: wp-admin/about.php:56 wp-admin/contribute.php:43 wp-admin/credits.php:46 +#: wp-admin/freedoms.php:49 wp-admin/privacy.php:43 +msgid "What’s New" +msgstr "新增功能" + +#: wp-admin/options-permalink.php:25 +msgid "This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures." +msgstr "網站管理員可以在這個畫面設定網站的永久連結結構,從中選取一項一般設定或建立自訂網址結構。" + +#. translators: 1: WordPress version, 2: URL to About screen. +#: wp-admin/includes/update-core.php:1767 wp-admin/update-core.php:931 +msgid "Welcome to WordPress %1$s. Learn more." +msgstr "歡迎使用 WordPress %1$s。進一步了解" + +#: wp-admin/media-new.php:51 +msgid "You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share. There are three options for uploading files:" +msgstr "使用者可以先在這裡上傳媒體檔案,而無須先撰寫內容;這讓使用者可以先上載檔案以供之後撰寫的文章或頁面使用,還可以取得特定檔案的分享連結。系統提供三種上傳方式:" + +#: wp-admin/edit-tags.php:299 +msgid "Adding Tags" +msgstr "新增標籤" + +#: wp-admin/edit-tags.php:299 +msgid "Adding Categories" +msgstr "新增分類" + +#: wp-admin/plugins.php:577 +msgid "Troubleshooting" +msgstr "疑難排解" + +#: wp-admin/update-core.php:1011 +msgid "How to Update" +msgstr "如何更新" + +#: wp-admin/export.php:178 +msgid "Once you’ve saved the download file, you can use the Import function in another WordPress installation to import the content from this site." +msgstr "下載匯出檔並完成儲存後,便可在其他 WordPress 後台使用匯入程式匯入這個網站的內容,反之亦然。" + +#: wp-admin/upload.php:394 +msgid "Attaching Files" +msgstr "建立檔案關聯" + +#: wp-admin/edit.php:290 +msgid "You can also edit or move multiple posts to the Trash at once. Select the posts you want to act on using the checkboxes, then select the action you want to take from the Bulk actions menu and click Apply." +msgstr "使用者可以一次編輯多篇文章,也可以一次將多篇文章移至回收桶。請先選取要進行操作的文章,再從 [批次操作] 下拉式選單中選取要進行的操作,然後按下 [套用]。" + +#: wp-admin/edit.php:274 wp-admin/upload.php:379 wp-admin/users.php:74 +msgid "Available Actions" +msgstr "可進行的操作" + +#: wp-admin/edit.php:262 +msgid "You can customize the display of this screen’s contents in a number of ways:" +msgstr "使用者可以使用下列方式自訂這個畫面的顯示項目:" + +#: wp-admin/edit.php:260 wp-admin/users.php:43 +msgid "Screen Content" +msgstr "顯示項目內容" + +#: wp-admin/edit.php:254 +msgid "This screen provides access to all of your posts. You can customize the display of this screen to suit your workflow." +msgstr "這個畫面能讓使用者存取個人的全部文章。使用者可以自訂這個畫面的顯示項目,以便配合個人工作流程。" + +#. translators: %s: URL to Add Plugins screen. +#: wp-admin/import.php:234 +msgid "If the importer you need is not listed, search the plugin directory to see if an importer is available." +msgstr "如果這個頁面並未列出這個網站需要的匯入程式,請搜尋外掛目錄,查看是否提供其他可用的匯入程式。" + +#: wp-admin/edit-comments.php:216 +msgid "Moderating Comments" +msgstr "審閱留言" + +#. translators: %s: URL to Import screen. +#: wp-admin/tools.php:78 +msgid "If you want to convert your categories to tags (or vice versa), use the Categories and Tags Converter available from the Import screen." +msgstr "如需將分類轉換成標籤 (或將標籤轉換成分類),請使用 [匯入程式] 頁面中的 [分類與標籤轉換程式]。" + +#: wp-admin/plugin-install.php:110 +msgid "Adding Plugins" +msgstr "安裝外掛" + +#: wp-admin/themes.php:164 +msgid "Adding Themes" +msgstr "安裝佈景主題" + +#: wp-admin/user-new.php:304 +msgid "Subscribers can read comments/comment/receive newsletters, etc. but cannot create regular site content." +msgstr "訂閱者 — 可以檢視留言、發佈留言、接收電子報等,但無法新增一般網站內容。" + +#: wp-admin/user-new.php:306 +msgid "Authors can publish and manage their own posts, and are able to upload files." +msgstr "作者 — 可以發佈及管理他們自己的文章,也可以上傳檔案。" + +#: wp-admin/user-new.php:302 +msgid "Here is a basic overview of the different user roles and the permissions associated with each one:" +msgstr "以下列出不同使用者角色的基本概觀,以及每個使用者角色擁有的權限:" + +#: wp-admin/user-new.php:301 +msgid "User Roles" +msgstr "使用者角色" + +#: wp-admin/user-new.php:288 +msgid "Remember to click the Add User button at the bottom of this screen when you are finished." +msgstr "表單填寫完畢後,請記得點擊畫面下方的 [新增使用者] 按鈕。" + +#: wp-admin/user-new.php:277 +msgid "To add a new user to your site, fill in the form on this screen and click the Add User button at the bottom." +msgstr "如需為網站新增使用者,請填寫這個頁面中的表單,然後點擊頁面下方的 [新增使用者] 按鈕便可完成。" + +#: wp-admin/options-permalink.php:53 +msgid "Custom Structures" +msgstr "自訂結構" + +#: wp-admin/options-permalink.php:317 +msgid "Common Settings" +msgstr "一般設定" + +#: wp-admin/options-permalink.php:24 +msgid "Permalinks are the permanent URLs to your individual pages and blog posts, as well as your category and tag archives. A permalink is the web address used to link to your content. The URL to each post should be permanent, and never change — hence the name permalink." +msgstr "永久連結是連結至網站個別頁面及文章的永久性網址,同時也用於網站的分類彙整及標籤彙整頁面,它是用來連結至網站內容的網站位址。網站上的每篇內容的網址都該具備永久性,且不該變更,因此將它稱為永久連結。" + +#: wp-admin/options-writing.php:24 +msgid "You can submit content in several different ways; this screen holds the settings for all of them. The top section controls the editor within the dashboard, while the rest control external publishing methods. For more information on any of these methods, use the documentation links." +msgstr "在這個網站中可用多種不同的方式提交內容,而這個畫面包含了全部相關設定。最上方的區段控管了編輯管理畫面的預設設定,其他部分則控管了外部發佈方式。如需進一步了解這些方式,請點擊這個分頁中的線上說明連結。" + +#: wp-admin/options-media.php:26 +msgid "Uploading Files allows you to choose the folder and path for storing your uploaded files." +msgstr "[上傳檔案] 可讓使用者選取儲存上傳檔案所需的目錄及路徑。" + +#: wp-admin/themes.php:152 +msgid "Installing themes on Multisite can only be done from the Network Admin section." +msgstr "如需為多站網路安裝佈景主題,只能在 [多站網路管理中心] 頁面中進行。" + +#: wp-admin/options-writing.php:46 +msgid "If desired, WordPress will automatically alert various services of your new posts." +msgstr "如果需要的話,WordPress 會自動向多項更新服務傳送網站新文章發佈狀態通知。" + +#: wp-admin/options-writing.php:34 +msgid "Post Via Email" +msgstr "透過電子郵件發佈文章" + +#: wp-admin/options-discussion.php:25 +msgid "This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they will not all fit here! :) Use the documentation links to get information on what each discussion setting does." +msgstr "這個畫面提供了多項用於管理及顯示留言以及連結至文章/頁面的設定。如需進一步了解 [討論設定] 頁面中的每一項設定的用途,請參考這個分頁中的線上說明連結。" + +#: wp-admin/user-edit.php:61 +msgid "You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things. You can hide the Toolbar (formerly called the Admin Bar) from the front end of your site, however it cannot be disabled on the admin screens." +msgstr "使用者可以變更密碼、啟用鍵盤快速鍵、變更 WordPress 管理畫面的色彩配置,還能關閉所見即所得的視覺化編輯器。此外,使用者可以在網站前端將 [工具列] 予以隱藏 (先前稱為 [管理列]),但無法在管理畫面停用 [工具列]。" + +#: wp-admin/widgets-form.php:94 +msgid "This sidebar is no longer available and does not show anywhere on your site. Remove each of the widgets below to fully remove this inactive sidebar." +msgstr "這個資訊欄已無法使用,且不會出現在這個網站的任何位置。請將下方小工具全部移除,以便完全移除這個未啟用的資訊欄。" + +#: wp-admin/widgets-form.php:91 +msgid "Inactive Sidebar (not used)" +msgstr "未啟用的資訊欄 (未使用)" + +#: wp-admin/media-new.php:54 +msgid "Clicking Select Files opens a navigation window showing you files in your operating system. Selecting Open after clicking on the file you want activates a progress bar on the uploader screen." +msgstr "點擊 [選取檔案] 會開啟導覽視窗,並顯示目前裝置中的檔案。選取要上傳的檔案再點擊 [開啟],就會在上傳畫面中顯示上傳進度列。" + +#: wp-admin/media-new.php:53 +msgid "Drag and drop your files into the area below. Multiple files are allowed." +msgstr "將檔案拖放至這個區域進行上傳。允許同時上傳多個檔案。" + +#: wp-admin/edit-tags.php:259 +msgid "You can assign keywords to your posts using tags. Unlike categories, tags have no hierarchy, meaning there is no relationship from one tag to another." +msgstr "標籤可用來指派為文章的關鍵字。標籤不像分類,標籤不具備階層架構,這代表標籤之間沒有關聯性。" + +#: wp-admin/edit-tags.php:257 +msgid "You can create groups of links by using Link Categories. Link Category names must be unique and Link Categories are separate from the categories you use for posts." +msgstr "[連結分類] 可以用來建立連結的群組。連結分類的名稱必須是唯一名稱,且連結分類與文章分類並不相同、各自獨立。" + +#: wp-admin/widgets-form.php:62 +msgid "Missing Widgets" +msgstr "遺失的小工具" + +#: wp-admin/widgets-form.php:52 +msgid "Removing and Reusing" +msgstr "移除及重複使用" + +#: wp-admin/upload.php:396 +msgid "If a media file has not been attached to any content, you will see that in the Uploaded To column, and can click on Attach to launch a small popup that will allow you to search for existing content and attach the file." +msgstr "如果媒體檔案沒有與任何內容產生關聯,使用者會在 [關聯內容] 欄位看到這個狀態;點擊媒體檔案的 [產生關聯] 會出現一個對話方塊,讓使用者搜尋現有內容並將這個媒體檔案關聯至現有檔案。" + +#: wp-admin/upload.php:371 +msgid "All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen." +msgstr "使用者上傳的全部檔案均會顯示於 [媒體庫],並會依上傳時間排序列出。此外,使用者還可以透過 [顯示項目設定] 分頁自訂要顯示在這個畫面的項目。" + +#: wp-admin/edit.php:320 +msgid "You can also perform the same types of actions, including narrowing the list by using the filters, acting on a page using the action links that appear when you hover over a row, or using the Bulk actions menu to edit the metadata for multiple pages at once." +msgstr "使用者也可以相同的操作方式,包含使用篩選條件縮小清單顯示數量、將游標暫留於頁面清單的資料列上以使用管理連結進行相關操作,或是使用 [批次操作] 下拉式選單編輯多個頁面的中繼資料。" + +#: wp-admin/edit.php:319 +msgid "Managing pages is very similar to managing posts, and the screens can be customized in the same way." +msgstr "管理頁面與管理文章的方式非常相似,使用者可以使用相同的方式自訂相關畫面。" + +#: wp-admin/edit-form-advanced.php:316 wp-admin/edit.php:311 +msgid "Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the “Parent” of the other, creating a group of pages." +msgstr "頁面與文章相似之處在於它們都有標題、內文及相關中繼資料,而不同之處在於頁面不受內容發佈時間順序所影響,類似永久文章。頁面無法進行分類及加上標籤,但其仍有階層架構;使用者可以先建立上層頁面,然後將其他頁面以巢狀方式納入其中,便能建立一個頁面群組。" + +#: wp-admin/edit-comments.php:223 +msgid "Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more." +msgstr "許多人使用鍵盤快速鍵更快速地審閱相關留言。如需進一步了解,請點擊旁邊的連結。" + +#: wp-admin/edit-comments.php:219 +msgid "In the Author column, in addition to the author’s name, email address, and site URL, the commenter’s IP address is shown. Clicking on this link will show you all the comments made from this IP address." +msgstr "[作者] 欄位會顯示留言者的名稱、電子郵件地址、網站網址及 IP 位址等多項資訊。點擊 IP 位址連結,便會顯示全部來自這個 IP 位址的留言。" + +#: wp-admin/edit-comments.php:210 +msgid "You can manage comments made on your site similar to the way you manage posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the bulk actions." +msgstr "使用者可以使用與管理文章或其他內容相似的方式管理網站。這個畫面使用與其他管理畫面相同的方式進行自訂,可以使用游標暫留於留言時出現的功能連結或 [批次操作] 下拉式選單管理留言。" + +#: wp-admin/index.php:52 +msgid "Links in the Toolbar at the top of the screen connect your dashboard and the front end of your site, and provide access to your profile and helpful WordPress information." +msgstr "畫面上方工具列內的連結可將控制台及網站前端連接起來,並提供存取使用者個人資料的方式及有用的 WordPress 資訊。" + +#: wp-admin/link-manager.php:71 +msgid "Deleting Links" +msgstr "刪除連結" + +#: wp-admin/link-manager.php:64 +msgid "Links may be separated into Link Categories; these are different than the categories used on your posts." +msgstr "使用者可以為各個連結指派不同的連結分類,[連結分類] 與文章所使用的分類並不相同。" + +#. translators: 1: URL to About screen, 2: WordPress version. +#: wp-admin/update-core.php:292 +msgid "Learn more about WordPress %2$s." +msgstr "進一步了解 WordPress %2$s 版的相關資訊。" + +#: wp-admin/users.php:55 +msgid "Edit takes you to the editable profile screen for that user. You can also reach that screen by clicking on the username." +msgstr "編輯 — 點擊 [編輯] 連結便會進入使用者個人資料編輯畫面,也可以透過點擊使用者名稱到達同一個畫面。" + +#: wp-admin/users.php:53 +msgid "Hovering over a row in the users list will display action links that allow you to manage users. You can perform the following actions:" +msgstr "將游標暫留於使用者清單上的某個使用者時,便會顯示管理使用者的操作連結。網站管理員可執行以下操作:" + +#: wp-admin/users.php:48 +msgid "You can view all posts made by a user by clicking on the number under the Posts column." +msgstr "點擊個別使用者 [文章] 欄位中的數字,便能檢視這個使用者所撰寫的全部文章。" + +#: wp-admin/users.php:46 +msgid "You can hide/display columns based on your needs and decide how many users to list per screen using the Screen Options tab." +msgstr "使用者可以依據個人需求在 [顯示項目設定] 分頁中隱藏或顯示個別欄位,並能設定每頁顯示的使用者數量。" + +#: wp-admin/edit.php:317 +msgid "Managing Pages" +msgstr "管理頁面" + +#: wp-admin/edit.php:281 +msgid "Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status." +msgstr "預覽及檢視 — 點擊 [預覽] 連結便能顯示草稿發佈為文章後所呈現的外觀。點擊已發佈文章的 [檢視] 連結,會將使用者導向至網站前端檢視文章的實際外觀。清單中的文章標題下方會提供哪一項功能連結,系統會依據內容發佈狀態而定。" + +#: wp-admin/edit.php:280 +msgid "Trash removes your post from this list and places it in the Trash, from which you can permanently delete it." +msgstr "移至回收桶 — 點擊 [移至回收桶] 連結便可從文章清單中移除個人文章,並將它移至回收桶,使用者之後可在回收桶中永久刪除這些文章。" + +#: wp-admin/edit.php:279 +msgid "Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen." +msgstr "快速編輯 — 點擊 [快速編輯] 連結便能進入文章的中繼資料編輯區段,讓使用者無須離開這個畫面就能更新文章的詳細資料。" + +#: wp-admin/edit.php:278 +msgid "Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title." +msgstr "編輯 — 點擊 [編輯] 連結便會進入文章編輯畫面,也可以透過點擊文章標題到達同一個畫面。" + +#: wp-admin/user-new.php:280 +msgid "Because this is a multisite installation, you may add accounts that already exist on the Network by specifying a username or email, and defining a role. For more options, such as specifying a password, you have to be a Network Administrator and use the hover link under an existing user’s name to Edit the user profile under Network Admin > All Users." +msgstr "由於這是多站網路,因此網站管理員可以透過指定使用者名稱或電子郵件地址的方式,將多站網路中現有的帳號加入網站中,並為其指派使用者角色。如需進行指派密碼等其他設定,則必須具備多站網路管理員權限,然後前往 [多站網路管理中心]→[全部使用者],並點擊某位現有使用者的使用者名稱連結,便能編輯這個使用者的個人資料。" + +#: wp-admin/about.php:278 +msgid "Go to Dashboard → Home" +msgstr "前往 [控制台]→[首頁]" + +#: wp-admin/about.php:271 +msgid "Go to Dashboard → Updates" +msgstr "前往 [控制台]→[更新]" + +#: wp-admin/user-edit.php:217 +msgid "Profile updated." +msgstr "個人資料已更新。" + +#. translators: %s: HTML attributes for button. +#: wp-admin/includes/media.php:3057 +msgid "You are using the multi-file uploader. Problems? Try the instead." +msgstr "目前使用的是多檔案上傳程式。如果上傳檔案時遇到問題,請改用。" + +#. translators: 1: Site title, 2: Site URL, 3: User role, 4: Activation URL. +#: wp-admin/user-new.php:127 +msgid "" +"Hi,\n" +"\n" +"You've been invited to join '%1$s' at\n" +"%2$s with the role of %3$s.\n" +"\n" +"Please click the following link to confirm the invite:\n" +"%4$s" +msgstr "" +"你好,\n" +"\n" +"你已受邀以「%3$s」使用者角色加入網站網址為 %2$s 的《%1$s》。\n" +"\n" +"請點擊下方連結,為這項邀請進行確認:\n" +"%4$s" + +#: wp-admin/credits.php:147 +msgid "Core Developer" +msgstr "核心程式開發人員" + +#: wp-admin/includes/class-plugin-upgrader.php:490 +msgid "No valid plugins were found." +msgstr "找不到有效的外掛。" + +#: wp-admin/includes/class-plugin-upgrader.php:82 +msgid "The plugin contains no files." +msgstr "這個外掛的安裝套件中不包含任何檔案。" + +#: wp-admin/includes/class-wp-upgrader.php:205 +msgid "The package could not be installed." +msgstr "無法安裝這個安裝套件。" + +#: wp-admin/includes/media.php:1307 +msgid "Attachment Post URL" +msgstr "附件文章網址" + +#: wp-admin/menu.php:91 +msgctxt "admin menu" +msgid "All Links" +msgstr "全部連結" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/plugin-install.php:298 +msgid "%s plugins" +msgstr "%s 個外掛" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/plugin-install.php:296 +msgid "%s plugin" +msgstr "%s 個外掛" + +#. translators: 1: Table name. 2: Error message. +#: wp-admin/maint/repair.php:151 +msgid "Failed to optimize the %1$s table. Error: %2$s" +msgstr "無法最佳化資料表 %1$s。錯誤: %2$s" + +#. translators: %s: Table name. +#: wp-admin/maint/repair.php:148 +msgid "Successfully optimized the %s table." +msgstr "資料表 %s 已完成最佳化。" + +#. translators: %s: Table name. +#: wp-admin/maint/repair.php:141 +msgid "The %s table is already optimized." +msgstr "資料表 %s 已完成最佳化。" + +#. translators: %s: Table name. +#: wp-admin/maint/repair.php:126 +msgid "Successfully repaired the %s table." +msgstr "資料表 %s 已完成修復。" + +#. translators: %s: Table name. +#: wp-admin/maint/repair.php:116 +msgid "The %s table is okay." +msgstr "%s 資料表沒有問題。" + +#. translators: %s: Plugin version. +#: wp-admin/update-core.php:577 +msgid "View version %s details." +msgstr "檢視 %s 版的詳細資料" + +#: wp-admin/includes/import.php:217 +msgid "Tumblr" +msgstr "Tumblr" + +#. translators: 1: Browser update URL, 2: Browser name, 3: Browse Happy URL. +#: wp-admin/includes/dashboard.php:1770 +msgid "Update %2$s or learn how to browse happy" +msgstr "更新 %2$s或進一步了解如何獲得優異的瀏覽體驗" + +#. translators: 1: Link start tag, 2: Link end tag, 3: Width, 4: Height. +#: wp-admin/includes/media.php:3111 +msgid "Scale images to match the large size selected in %1$simage options%2$s (%3$d × %4$d)." +msgstr "縮放圖片至符合在 [%1$s圖片尺寸%2$s] 中所選定的大尺寸 (%3$d × %4$d)。" + +#: wp-admin/includes/media.php:2977 +msgid "Audio, Video, or Other File" +msgstr "音訊、視訊或其他檔案" + +#: wp-admin/includes/media.php:2447 +msgid "Insert media from another website" +msgstr "從其他網站插入媒體檔案" + +#: wp-admin/includes/file.php:2506 +msgid "Error: Could not connect to the server. Please verify the settings are correct." +msgstr "錯誤: 無法連接到伺服器,請檢查設定是否正確。" + +#: wp-admin/index.php:64 +msgid "Drag and Drop — To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box." +msgstr "拖放功能 — 如需重新排列區塊,請按住選取的區塊標題列然後進行拖放;當放置區塊的目標位置出現方型灰色虛線時,便可將區塊放置於該處。" + +#: wp-admin/index.php:62 +msgid "You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well." +msgstr "使用者可以使用下列控制項排列控制台畫面中的顯示項目,以便配合個人工作流程。請注意,大多數管理畫面的操作方式都與這裡所述相同。" + +#: wp-admin/index.php:51 +msgid "The left-hand navigation menu provides links to all of the WordPress administration screens, with submenu items displayed on hover. You can minimize this menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom." +msgstr "管理後台左側的導覽選單提供存取各個 WordPress 管理畫面的連結,將游標暫留於其上便會顯示子選單項目,而點擊導覽選單最下方的 [收合選單] 小圖示便可將選單最小化。" + +#. translators: %s: Number of pending updates. +#. translators: %s: Number of available updates. +#: wp-admin/menu.php:55 wp-admin/network/menu.php:35 +msgid "Updates %s" +msgstr "更新 %s" + +#: wp-admin/menu.php:325 wp-admin/network/menu.php:110 +msgid "Installed Plugins" +msgstr "已安裝的外掛" + +#. translators: %s: Number of available plugin updates. +#: wp-admin/menu.php:323 wp-admin/network/menu.php:93 +msgid "Plugins %s" +msgstr "外掛 %s" + +#: wp-admin/menu.php:347 wp-admin/network/menu.php:61 +msgid "All Users" +msgstr "全部使用者" + +#: wp-admin/includes/ms.php:995 wp-admin/users.php:451 +msgid "Confirm Deletion" +msgstr "確認刪除" + +#: wp-admin/includes/class-wp-users-list-table.php:376 +#: wp-admin/user-edit.php:451 wp-admin/user-new.php:478 +#: wp-admin/user-new.php:639 wp-admin/network/site-users.php:345 +#: wp-admin/network/site-users.php:386 +msgid "Role" +msgstr "使用者角色" + +#: wp-admin/user-edit.php:271 wp-admin/user-new.php:393 +#: wp-admin/user-new.php:447 wp-admin/user-new.php:508 wp-admin/users.php:794 +#: wp-admin/network/site-users.php:336 +msgid "Add Existing User" +msgstr "加入現有使用者" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/dashboard.php:504 wp-admin/includes/dashboard.php:508 +#: wp-admin/users.php:815 wp-admin/network/site-users.php:312 +#: wp-admin/network/users.php:340 +msgid "Search Users" +msgstr "搜尋使用者" + +#: wp-admin/users.php:727 wp-admin/network/site-users.php:283 +msgid "User removed from this site." +msgstr "已從這個網站移除這個使用者。" + +#: wp-admin/users.php:681 wp-admin/network/site-users.php:276 +msgid "Changed roles." +msgstr "使用者角色已變更。" + +#: wp-admin/comment.php:176 wp-admin/plugins.php:346 wp-admin/plugins.php:360 +#: wp-admin/theme-editor.php:380 wp-admin/includes/network.php:476 +#: wp-admin/network/themes.php:140 wp-admin/network/themes.php:151 +msgid "Caution:" +msgstr "警告:" + +#: wp-admin/user-new.php:382 wp-admin/network/site-users.php:263 +#: wp-admin/network/user-new.php:91 wp-admin/network/users.php:300 +msgid "User added." +msgstr "使用者已新增。" + +#: wp-admin/includes/class-wp-users-list-table.php:455 +#: wp-admin/user-edit.php:476 +#: wp-admin/includes/class-wp-ms-users-list-table.php:287 +msgid "Super Admin" +msgstr "多站網路管理員" + +#. translators: %s: Plugin version. +#. translators: %s: Plugin version number. +#. translators: %s: Theme version number. +#. translators: %s: WordPress version. +#. translators: %s: Theme version. +#: wp-admin/includes/ajax-actions.php:4651 +#: wp-admin/includes/ajax-actions.php:4694 +#: wp-admin/includes/class-wp-debug-data.php:880 +#: wp-admin/includes/class-wp-debug-data.php:1056 +#: wp-admin/includes/class-wp-debug-data.php:1444 +#: wp-admin/includes/class-wp-plugins-list-table.php:1189 +#: wp-admin/includes/update.php:250 wp-admin/includes/update.php:290 +#: wp-admin/index.php:113 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:751 +msgid "Version %s" +msgstr "%s 版" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:563 +msgid "Update Available (%s)" +msgid_plural "Update Available (%s)" +msgstr[0] "已有更新可供安裝 (%s)" + +#: wp-admin/menu.php:399 wp-admin/ms-delete-site.php:39 +msgid "Delete Site" +msgstr "刪除網站" + +#: wp-admin/my-sites.php:60 wp-admin/options-head.php:20 +#: wp-admin/options.php:368 wp-admin/network/settings.php:142 +#: wp-admin/network/sites.php:380 +msgid "Settings saved." +msgstr "設定已儲存。" + +#: wp-admin/comment.php:72 wp-admin/edit-comments.php:228 +#: wp-admin/edit-form-advanced.php:311 wp-admin/edit-form-advanced.php:328 +#: wp-admin/edit-form-advanced.php:347 wp-admin/edit-link-form.php:75 +#: wp-admin/edit-tags.php:305 wp-admin/edit.php:300 wp-admin/edit.php:325 +#: wp-admin/erase-personal-data.php:64 wp-admin/export-personal-data.php:64 +#: wp-admin/export.php:58 wp-admin/import.php:31 +#: wp-admin/includes/class-custom-background.php:109 +#: wp-admin/includes/class-custom-image-header.php:144 +#: wp-admin/includes/ms.php:1169 wp-admin/index.php:131 +#: wp-admin/link-manager.php:78 wp-admin/media-new.php:60 +#: wp-admin/my-sites.php:51 wp-admin/nav-menus.php:774 +#: wp-admin/options-discussion.php:31 wp-admin/options-general.php:59 +#: wp-admin/options-media.php:40 wp-admin/options-permalink.php:59 +#: wp-admin/options-privacy.php:46 wp-admin/options-reading.php:52 +#: wp-admin/options-writing.php:52 wp-admin/plugin-editor.php:156 +#: wp-admin/plugin-install.php:120 wp-admin/plugins.php:619 +#: wp-admin/revision.php:157 wp-admin/site-health.php:89 +#: wp-admin/theme-editor.php:51 wp-admin/theme-install.php:154 +#: wp-admin/themes.php:206 wp-admin/tools.php:55 wp-admin/update-core.php:1052 +#: wp-admin/upload.php:199 wp-admin/upload.php:401 wp-admin/user-edit.php:77 +#: wp-admin/user-new.php:314 wp-admin/users.php:81 wp-admin/widgets-form.php:70 +#: wp-admin/network.php:67 wp-admin/network.php:80 +#: wp-admin/network/index.php:55 wp-admin/network/settings.php:63 +#: wp-admin/network/site-new.php:31 wp-admin/network/sites.php:43 +#: wp-admin/network/themes.php:337 wp-admin/network/upgrade.php:36 +#: wp-admin/network/user-new.php:28 wp-admin/network/users.php:269 +msgid "For more information:" +msgstr "進一步了解相關資訊:" + +#: wp-admin/edit-form-advanced.php:322 +msgid "About Pages" +msgstr "關於頁面" + +#: wp-admin/edit-form-advanced.php:300 +msgid "Title and Post Editor" +msgstr "標題及文章編輯器" + +#: wp-admin/edit-form-advanced.php:280 +msgid "Customizing This Display" +msgstr "自訂顯示項目" + +#: wp-admin/options-reading.php:219 +msgid "Note: Neither of these options blocks access to your site — it is up to search engines to honor your request." +msgstr "注意: 這些設定均無法阻擋搜尋引擎存取網站,完全取決於搜尋引擎是否遵守相關設定的要求。" + +#: wp-admin/options-permalink.php:270 +msgid "Post name" +msgstr "文章名稱" + +#: wp-admin/options-permalink.php:254 wp-admin/options-permalink.php:260 +#: wp-admin/options-permalink.php:272 +msgctxt "sample permalink structure" +msgid "sample-post" +msgstr "sample-post" + +#: wp-admin/options-permalink.php:265 wp-admin/options-permalink.php:266 +msgctxt "sample permalink base" +msgid "archives" +msgstr "archives" + +#. translators: %s: URL to Import screen on the main site. +#: wp-admin/import.php:171 +msgid "This importer is not installed. Please install importers from the main site." +msgstr "尚未安裝匯入程式。請前往主站台安裝匯入程式。" + +#: wp-admin/includes/class-wp-debug-data.php:177 +#: wp-admin/options-general.php:343 wp-admin/network/site-new.php:251 +msgid "Site Language" +msgstr "網站介面語言" + +#: wp-admin/options-discussion.php:52 +msgid "Attempt to notify any blogs linked to from the post" +msgstr "嘗試通知網站內容中所連結的任何網站" + +#. translators: 1: Site title, 2: Site URL, 3: User role. +#: wp-admin/includes/user.php:620 +msgid "" +"Hi,\n" +"You've been invited to join '%1$s' at\n" +"%2$s with the role of %3$s.\n" +"If you do not want to join this site please ignore\n" +"this email. This invitation will expire in a few days.\n" +"\n" +"Please click the following link to activate your user account:\n" +"%%s" +msgstr "" +"你好,\n" +"\n" +"你已受邀加入《%1$s》,網站網址為 %2$s,目前的使用者角色為「%3$s」。\n" +"\n" +"如果沒有意願加入這個網站,請忽略這封電子郵件,這封邀請函將會在幾天後自動失效。\n" +"\n" +"請點擊下方連結以啟用你的使用者帳號:\n" +"%%s" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/meta-boxes.php:537 wp-admin/includes/theme.php:344 +msgid "Post Formats" +msgstr "文章格式" + +#: wp-admin/includes/theme.php:343 +msgid "Full Width Template" +msgstr "全螢幕寬度範本" + +#: wp-admin/includes/theme.php:340 +msgid "Featured Images" +msgstr "精選圖片" + +#: wp-admin/includes/theme.php:339 +msgid "Featured Image Header" +msgstr "精選圖片頁首" + +#. translators: %s: Browser name and link. +#: wp-admin/includes/dashboard.php:1741 +msgid "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." +msgstr "你正在使用舊版的 %s。為獲得最佳的 WordPress 體驗,請更新目前正在使用的瀏覽器。" + +#. translators: %s: Browser name and link. +#: wp-admin/includes/dashboard.php:1735 +msgid "It looks like you're using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." +msgstr "你正在使用 %s 的不安全版本,使用過時的瀏覽器會造成個人裝置不安全;為獲得最佳的 WordPress 體驗,請更新你的瀏覽器。" + +#: wp-admin/includes/nav-menu.php:1321 +msgid "There are some invalid menu items. Please check or delete them." +msgstr "選單中有無效的選單項目,請進行檢查或予以刪除。" + +#: wp-admin/edit-tag-form.php:150 wp-admin/edit-tags.php:464 +#: wp-admin/includes/class-wp-terms-list-table.php:192 +#: wp-admin/includes/class-wp-terms-list-table.php:219 +#: wp-admin/includes/class-wp-terms-list-table.php:694 +msgctxt "term name" +msgid "Name" +msgstr "名稱" + +#: wp-admin/includes/template.php:592 wp-admin/includes/template.php:607 +#: wp-admin/includes/template.php:742 +msgctxt "meta name" +msgid "Name" +msgstr "欄位名稱" + +#: wp-admin/themes.php:685 +msgctxt "theme name" +msgid "Name" +msgstr "佈景主題名稱" + +#. translators: %s: Theme Directory URL. +#: wp-admin/theme-install.php:109 +msgid "You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses." +msgstr "這個畫面會顯示來源為 WordPress 佈景主題目錄的佈景主題,網站管理員可以透過這個畫面的佈景主題瀏覽/安裝功能找到更多佈景主題。這些佈景主題由第三方開發者進行設計與開發,可免費使用,且相容於 WordPress 所使用的授權條款。" + +#. translators: %s: WordPress Plugin Directory URL. +#: wp-admin/plugins.php:569 +msgid "If you would like to see more plugins to choose from, click on the “Add Plugin” button and you will be able to browse or search for additional plugins from the WordPress Plugin Directory. Plugins in the WordPress Plugin Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they are free!" +msgstr "如需查看更多外掛並進行選取及安裝,點擊 [安裝外掛] 便可以在 WordPress 外掛目錄中瀏覽或搜尋外掛。WordPress 外掛目錄內的外掛是由第三方設計與開發,且相容於 WordPress 所採用的授權方式。最棒的是,他們都是免費外掛!" + +#. translators: %s: MAX_FILE_SIZE +#: wp-admin/includes/file.php:900 +msgid "The uploaded file exceeds the %s directive that was specified in the HTML form." +msgstr "上傳的檔案超過了 HTML 表單中 %s 參數的設定值。" + +#: wp-admin/credits.php:160 +msgid "External Libraries" +msgstr "外部程式庫" + +#: wp-admin/menu.php:402 wp-admin/network.php:53 wp-admin/network/menu.php:117 +msgid "Network Setup" +msgstr "多站網路組態" + +#: wp-admin/menu.php:391 +msgid "Available Tools" +msgstr "可用工具" + +#: wp-admin/includes/credits.php:101 +msgctxt "Translate this to be the equivalent of English Translators in your language for the credits page Translators section" +msgid "Translators" +msgstr "本地化人員" + +#. translators: 1: URL to Plugins screen, 2: URL to Themes screen, 3: +#. https://wordpress.org/about/license +#: wp-admin/freedoms.php:109 +msgid "Every plugin and theme in WordPress.org’s directory is 100%% GPL or a similarly free and compatible license, so you can feel safe finding plugins and themes there. If you get a plugin or theme from another source, make sure to ask them if it’s GPL first. If they do not respect the WordPress license, it is not recommended to use them." +msgstr "在 WordPress.org 目錄下的全部外掛與佈景主題均為 100%% GPL 授權或相容的使用自由授權,因此大家可以安心地在目錄中尋找外掛佈景主題。若是你從其他來源取得外掛或佈景主題,請記得先向提供者確認這些程式是否使用 GPL 授權。如果他們並不遵守 WordPress 使用的授權方式,建議不要採用這類程式。" + +#. translators: %s: https://wordpressfoundation.org/trademark-policy +#: wp-admin/freedoms.php:97 +msgid "WordPress grows when people like you tell their friends about it, and the thousands of businesses and services that are built on and around WordPress share that fact with their users. The WordPress community is flattered every time someone spreads the good word, just make sure to check out the WordPress Foundation trademark guidelines first." +msgstr "當大家在與朋友一同談論 WordPress、以及成千上萬建置於 WordPress 上的業務及服務與他們的使用者分享這項資訊時,WordPress 便會更加茁壯。而當有人讚美 WordPress 社群時,WordPress 社群總是深感榮幸;但在使用 WordPress 這個商標前,請先閱讀 WordPress 基金會的商標使用規範。" + +#: wp-admin/menu.php:119 +msgid "All Comments" +msgstr "全部留言" + +#: wp-admin/credits.php:141 +msgid "Lead Developer" +msgstr "首席開發人員" + +#: wp-admin/credits.php:140 +msgid "Cofounder, Project Lead" +msgstr "共同創辦人、專案負責人" + +#. translators: %s: The current WordPress version number. +#: wp-admin/credits.php:138 +msgid "Core Contributors to WordPress %s" +msgstr "WordPress %s 版核心程式參與者" + +#: wp-admin/credits.php:136 +msgid "Project Leaders" +msgstr "專案負責人" + +#: wp-admin/about.php:57 wp-admin/contribute.php:44 wp-admin/credits.php:14 +#: wp-admin/credits.php:47 wp-admin/freedoms.php:50 wp-admin/privacy.php:44 +msgid "Credits" +msgstr "製作群" + +#: wp-admin/widgets-form.php:460 +msgctxt "removing-widget" +msgid "Deactivate" +msgstr "停用" + +#: wp-admin/includes/dashboard.php:37 +msgid "Your browser is out of date!" +msgstr "你目前使用的瀏覽器太過老舊!" + +#: wp-admin/includes/dashboard.php:35 +msgid "You are using an insecure browser!" +msgstr "你目前使用的是不安全的瀏覽器!" + +#: wp-admin/about.php:58 wp-admin/contribute.php:45 wp-admin/credits.php:48 +#: wp-admin/freedoms.php:19 wp-admin/freedoms.php:51 wp-admin/privacy.php:45 +msgid "Freedoms" +msgstr "使用自由" + +#: wp-admin/includes/class-custom-image-header.php:717 +msgid "You can use one of these cool headers or show a random one on each page." +msgstr "網站管理員從這些精美的頁首圖片中擇一使用,或每頁隨機顯示不同圖片。" + +#: wp-admin/includes/class-custom-image-header.php:715 +msgid "If you do not want to upload your own image, you can use one of these cool headers, or show a random one." +msgstr "若是不想上傳自有圖片,可以在這些頁首圖片中擇一使用,或隨機顯示其中一張。" + +#: wp-admin/includes/class-custom-image-header.php:701 +msgid "You can choose one of your previously uploaded headers, or show a random one." +msgstr "網站管理員可以選取一張之前上傳的頁首圖片,或是設定為隨機顯示。" + +#: wp-admin/menu-header.php:287 +msgid "Collapse Menu" +msgstr "收合選單" + +#: wp-admin/includes/class-custom-image-header.php:699 +msgid "Uploaded Images" +msgstr "已上傳的圖片" + +#: wp-admin/includes/class-custom-image-header.php:325 +msgid "Random: Show a different image on each page." +msgstr "隨機: 每頁顯示不同圖片。" + +#: wp-admin/users.php:361 +msgid "You have specified this user for deletion:" +msgstr "目前指定刪除的使用者如下所列:" + +#. translators: %s: Template name. +#: wp-admin/includes/file.php:93 +msgid "%s Page Template" +msgstr "[%s] 頁面範本" + +#: wp-admin/includes/ajax-actions.php:4756 wp-admin/plugins.php:667 +msgid "You cannot delete a plugin while it is active on the main site." +msgstr "無法刪除啟用於主要網站的外掛。" + +#: wp-admin/plugins.php:346 +msgid "This plugin may be active on other sites in the network." +msgstr "這個外掛已於多站網路的其他網站中啟用。" + +#: wp-admin/options-writing.php:102 +msgid "Default Post Format" +msgstr "預設文章格式" + +#: wp-admin/plugin-editor.php:151 wp-admin/theme-editor.php:46 +msgid "Any edits to files from this screen will be reflected on all sites in the network." +msgstr "在這個畫面中編輯的任何檔案,均會套用至這個多站網路中的全部網站。" + +#: wp-admin/users.php:35 +msgid "This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role." +msgstr "這個畫面會列出這個網站的全部使用者。網站管理員可以依據實際需求,將個別使用者設定為五種使用者角色中的其中一種,分別為網站管理員、編輯、作者、投稿者或訂閱者。使用者角色的權限低於網站管理員的使用者,在登入控制台後只能看到部分與其使用者角色權限相符的設定項目。" + +#: wp-admin/plugin-editor.php:150 +msgid "If you want to make changes but do not want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below." +msgstr "如果不希望因為外掛更新而覆寫目前為外掛所做的自訂變更,可以考慮自己編寫一個自有外掛。如需進一步了解編輯外掛、編寫外掛或外掛結構的相關資訊,請點擊目前 [使用說明] 分頁中的相關連結。" + +#: wp-admin/index.php:75 +msgid "The boxes on your Dashboard screen are:" +msgstr "控制台畫面內建的區塊如下:" + +#. translators: Default page slug. +#: wp-admin/includes/upgrade.php:354 +msgid "sample-page" +msgstr "sample-page" + +#: wp-admin/includes/upgrade.php:352 +msgid "Sample Page" +msgstr "範例頁面" + +#: wp-admin/options-discussion.php:279 +msgid "Retro (Generated)" +msgstr "Retro (自動產生)" + +#. translators: %s: URL to Themes tab on Edit Site screen. +#: wp-admin/includes/class-wp-themes-list-table.php:110 +msgid "You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes." +msgstr "這個網站目前僅啟用一個佈景主題。造訪 [多站網路管理中心] 以啟用更多佈景主題。" + +#. translators: 1: URL to Themes tab on Edit Site screen, 2: URL to Add Themes +#. screen. +#: wp-admin/includes/class-wp-themes-list-table.php:101 +msgid "You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes." +msgstr "這個網站目前僅啟用一個佈景主題。造訪 [多站網路管理中心] 以啟用安裝更多佈景主題。" + +#. translators: %s: URL to Add Themes screen. +#: wp-admin/includes/class-wp-themes-list-table.php:121 +msgid "You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress Theme Directory at any time: just click on the Install Themes tab above." +msgstr "這個網站目前僅安裝一個佈景主題。網站管理員只要點擊頁面上方的 [安裝佈景主題],便可以隨時從 WordPress 佈景主題目錄中的數千種免費佈景主題進行挑選。" + +#: wp-admin/maint/repair.php:180 +msgid "One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the “Repair Database” button. Repairing can take a while, so please be patient." +msgstr "目前有一或多個資料表無法使用。按下 [修復資料庫] 按鈕後,WordPress 便會嘗試修復這些資料表。修復過程需要一點時間,請耐心等候。" + +#: wp-admin/includes/file.php:56 +msgid "Visual Editor RTL Stylesheet" +msgstr "編輯器的 [預覽] 模式由右至左文字方向樣式表" + +#: wp-admin/theme-editor.php:381 +msgid "This is a file in your current parent theme." +msgstr "這是目前使用的上層佈景主題的檔案。" + +#. translators: %s: Link to edit parent theme. +#: wp-admin/theme-editor.php:330 +msgid "This child theme inherits templates from a parent theme, %s." +msgstr "這個子佈景主題繼承了上層佈景主題 %s 的範本。" + +#: wp-admin/includes/class-theme-installer-skin.php:166 +#: wp-admin/js/updates.js:1804 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:484 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:609 +msgid "Network Enable" +msgstr "於多站網路中啟用" + +#: wp-admin/upgrade.php:169 +msgid "Your WordPress database has been successfully updated!" +msgstr "這個網站的 WordPress 資料庫已成功更新!" + +#: wp-admin/upgrade.php:168 +msgid "Update Complete" +msgstr "更新完成" + +#: wp-admin/upgrade.php:158 +msgid "Update WordPress Database" +msgstr "更新 WordPress 資料庫" + +#: wp-admin/upgrade.php:157 wp-admin/network/upgrade.php:145 +msgid "The database update process may take a little while, so please be patient." +msgstr "資料庫更新過程需要一點時間,請耐心等候。" + +#: wp-admin/upgrade.php:155 wp-admin/network/upgrade.php:141 +msgid "Database Update Required" +msgstr "資料庫必須更新" + +#: wp-admin/upgrade.php:88 +msgid "No Update Required" +msgstr "無須更新" + +#: wp-admin/upgrade.php:80 +msgid "WordPress › Update" +msgstr "WordPress › 更新" + +#. translators: %s: WordPress version. +#: wp-admin/update-core.php:188 +msgid "You are about to install WordPress %s in English (US). There is a chance this update will break your translation. You may prefer to wait for the localized version to be released." +msgstr "即將安裝 WordPress %s 美國英文版,這個更新套件可能會造成現有的語言套件失效。如有需要,請靜待本地化版本的發佈。" + +#. translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, +#. 4: Version number. +#: wp-admin/includes/update.php:539 +msgid "There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin." +msgstr "%1$s 已有新版本可供下載安裝。請檢視 %4$s 版的詳細資料這個外掛無法自動更新。" + +#: wp-admin/includes/class-theme-upgrader-skin.php:44 wp-admin/update.php:219 +msgid "Update Theme" +msgstr "更新佈景主題" + +#: wp-admin/includes/class-plugin-upgrader-skin.php:62 wp-admin/update.php:63 +msgid "Update Plugin" +msgstr "更新外掛" + +#: wp-admin/includes/class-theme-upgrader.php:64 +#: wp-admin/includes/class-theme-upgrader.php:101 +msgid "Theme updated successfully." +msgstr "佈景主題已成功更新。" + +#: wp-admin/includes/ajax-actions.php:4372 +#: wp-admin/includes/class-theme-upgrader.php:63 +#: wp-admin/includes/class-theme-upgrader.php:100 +msgid "Theme update failed." +msgstr "佈景主題更新失敗。" + +#: wp-admin/includes/class-plugin-upgrader.php:65 +#: wp-admin/includes/class-plugin-upgrader.php:92 +msgid "Plugin updated successfully." +msgstr "外掛已成功更新。" + +#: wp-admin/includes/ajax-actions.php:4713 +#: wp-admin/includes/class-plugin-upgrader.php:64 +#: wp-admin/includes/class-plugin-upgrader.php:91 +msgid "Plugin update failed." +msgstr "外掛更新失敗。" + +#: wp-admin/includes/class-core-upgrader.php:35 +#: wp-admin/includes/class-language-pack-upgrader.php:115 +#: wp-admin/includes/class-plugin-upgrader.php:58 +#: wp-admin/includes/class-theme-upgrader.php:57 +msgid "Update package not available." +msgstr "更新套件無法使用。" + +#. translators: Hidden accessibility text. +#: wp-admin/export.php:221 wp-admin/export.php:273 wp-admin/export.php:318 +msgid "Date range:" +msgstr "日期範圍:" + +#: wp-admin/export.php:201 wp-admin/export.php:253 +msgid "Authors:" +msgstr "作者:" + +#: wp-admin/export.php:191 +msgid "This will contain all of your posts, pages, comments, custom fields, terms, navigation menus, and custom posts." +msgstr "選取這項設定後,匯出的內容會包含這個網站的全部文章、頁面、留言、自訂欄位、分類、標籤、導覽選單及自訂內容。" + +#: wp-admin/export.php:190 +msgid "All content" +msgstr "全部內容" + +#: wp-admin/export.php:180 +msgid "Choose what to export" +msgstr "選取匯出項目" + +#. translators: %s: Number of comments. +#: wp-admin/includes/class-wp-comments-list-table.php:265 +msgctxt "comments" +msgid "Mine (%s)" +msgid_plural "Mine (%s)" +msgstr[0] "屬於目前登入使用者 (%s)" + +#. translators: Admin screen title. %s: Admin screen name. +#: wp-admin/admin-header.php:55 +msgid "%s — WordPress" +msgstr "%s — WordPress" + +#: wp-admin/includes/class-wp-comments-list-table.php:577 +msgctxt "column name" +msgid "In Response To" +msgstr "回應目標" + +#: wp-admin/widgets-form.php:46 +msgid "The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget." +msgstr "[可用的小工具] 區域內包含目前網站中全部可供選用的小工具。將小工具拖放至資訊欄後,它將小工具會自動展開以供使用者進行設定;設定完成後,小工具在使用者點擊 [儲存] 按鈕後便能在網站上運作。點擊小工具內的 [刪除] 按鈕就可以將小工具移除。" + +#: wp-admin/edit-form-advanced.php:342 +msgid "Remember to click Update to save metadata entered or changed." +msgstr "請記得點擊 [更新] 以儲存完成輸入或變更的中繼資料。" + +#: wp-admin/edit-form-advanced.php:341 +msgid "Note that you crop the image by clicking on it (the Crop icon is already selected) and dragging the cropping frame to select the desired part. Then click Save to retain the cropping." +msgstr "請注意,裁剪圖片時請點擊該圖片 (裁剪圖示按鈕成為生效狀態) 並拖曳裁剪框至所需大小,然後點擊 [儲存] 以保留裁剪變更。" + +#: wp-admin/edit-form-advanced.php:340 +msgid "For images only, you can click on Edit Image under the thumbnail to expand out an inline image editor with icons for cropping, rotating, or flipping the image as well as for undoing and redoing. The boxes on the right give you more options for scaling the image, for cropping it, and for cropping the thumbnail in a different way than you crop the original image. You can click on Help in those boxes to get more information." +msgstr "使用者若需處理圖片,可以點擊縮圖下方的 [編輯圖片] 以開啟圖片編輯器,在圖片編輯器中可以對圖片進行裁剪、旋轉、或翻轉,還可以復原及重做。編輯器右側提供了更多設定,用於縮放、裁剪圖片以及使用與裁剪原始圖片不同的方式裁剪縮圖。請點擊 [使用說明] 以了解進一步的資訊。" + +#: wp-admin/edit-form-advanced.php:339 +msgid "This screen allows you to edit fields for metadata in a file within the media library." +msgstr "使用者可以在這個畫面編輯媒體庫檔案的中繼資料欄位。" + +#: wp-admin/user-new.php:455 +msgid "Email or Username" +msgstr "電子郵件地址或使用者名稱" + +#: wp-admin/themes.php:235 wp-admin/network/site-themes.php:240 +#: wp-admin/network/themes.php:463 +msgid "Search installed themes" +msgstr "搜尋已安裝的佈景主題..." + +#. translators: %s: Link to documentation on child themes. +#: wp-admin/update-core.php:665 +msgid "Please Note: Any customizations you have made to theme files will be lost. Please consider using child themes for modifications." +msgstr "請注意: 佈景主題更新後,在佈景主題檔案中的客製化變更均會由新檔案覆蓋導致消失。如需修改佈景主題檔案,請以建立子佈景主題的方式進行客製化。" + +#. translators: %s: Number of posts. +#: wp-admin/includes/class-wp-posts-list-table.php:404 +msgctxt "posts" +msgid "Sticky (%s)" +msgid_plural "Sticky (%s)" +msgstr[0] "置頂 (%s)" + +#: wp-admin/update-core.php:1117 +msgid "Check again." +msgstr "再次檢查" + +#. translators: 1: Date, 2: Time. +#: wp-admin/update-core.php:1111 +msgid "Last checked on %1$s at %2$s." +msgstr "最後檢查時間: %1$s%2$s。" + +#: wp-admin/update-core.php:1086 +msgid "Please select one or more plugins to update." +msgstr "請選取一或多個外掛以進行更新。" + +#: wp-admin/update-core.php:1076 +msgid "Please select one or more themes to update." +msgstr "請選取一或多個佈景主題以進行更新。" + +#: wp-admin/includes/class-bulk-upgrader-skin.php:61 +msgid "The update process is starting. This process may take a while on some hosts, so please be patient." +msgstr "正在執行更新程序。這項程序在某些主機上需要一點時間,請耐心等候。" + +#: wp-admin/theme-install.php:243 wp-admin/theme-install.php:265 +msgid "Apply Filters" +msgstr "套用篩選條件" + +#: wp-admin/includes/theme.php:338 +msgid "Editor Style" +msgstr "編輯器樣式" + +#: wp-admin/includes/file.php:2559 +msgid "To perform the requested action, WordPress needs to access your web server." +msgstr "如需執行這項必要操作,WordPress 必須存取這個網站的網頁伺服器。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-list-table.php:1103 +#: wp-admin/includes/class-wp-list-table.php:1112 +msgid "Current Page" +msgstr "目前頁面" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:176 +msgid "No themes match your request." +msgstr "沒有符合要求的佈景主題。" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/dashboard.php:517 wp-admin/includes/dashboard.php:521 +#: wp-admin/network/sites.php:427 +msgid "Search Sites" +msgstr "搜尋網站" + +#: wp-admin/includes/dashboard.php:461 +msgid "Create a New User" +msgstr "新增使用者" + +#. translators: 1: Text indicating the number of sites on the network, 2: Text +#. indicating the number of users on the network. +#: wp-admin/includes/dashboard.php:473 +msgid "You have %1$s and %2$s." +msgstr "這個多站網路有 %1$s及 %2$s。" + +#. translators: %s: Number of sites on the network. +#: wp-admin/includes/dashboard.php:470 +msgid "%s site" +msgid_plural "%s sites" +msgstr[0] "%s 個網站" + +#. translators: %s: Number of users on the network. +#: wp-admin/includes/dashboard.php:468 +msgid "%s user" +msgid_plural "%s users" +msgstr[0] "%s 個使用者" + +#: wp-admin/includes/dashboard.php:1558 +msgid "https://wordpress.org/news/feed/" +msgstr "https://wordpress.org/news/feed/" + +#: wp-admin/includes/dashboard.php:1549 +msgid "https://wordpress.org/news/" +msgstr "https://wordpress.org/news/" + +#: wp-admin/options-discussion.php:76 +msgid "(Signup has been disabled. Only members of this site can comment.)" +msgstr "(已停用註冊功能,目前僅有這個網站的成員才能發佈留言)" + +#. translators: 1: Theme name, 2: Theme details URL, 3: Additional link +#. attributes, 4: Version number. +#. translators: 1: Plugin name, 2: Details URL, 3: Additional link attributes, +#. 4: Version number. +#. translators: 1: Theme name, 2: Details URL, 3: Additional link attributes, +#. 4: Version number. +#: wp-admin/includes/theme.php:229 wp-admin/includes/update.php:526 +#: wp-admin/includes/update.php:719 +msgid "There is a new version of %1$s available. View version %4$s details." +msgstr "%1$s 已有新版本可供下載更新。請檢視 %4$s 版的詳細資料。" + +#: wp-admin/includes/class-bulk-theme-upgrader-skin.php:78 +#: wp-admin/includes/class-theme-installer-skin.php:180 +#: wp-admin/includes/class-theme-upgrader-skin.php:127 +msgid "Go to Themes page" +msgstr "前往 [佈景主題] 頁面" + +#: wp-admin/includes/class-bulk-plugin-upgrader-skin.php:82 +#: wp-admin/includes/class-bulk-theme-upgrader-skin.php:83 +#: wp-admin/includes/class-language-pack-upgrader-skin.php:98 +msgid "Go to WordPress Updates page" +msgstr "前往 [WordPress 更新] 頁面" + +#: wp-admin/includes/class-bulk-plugin-upgrader-skin.php:77 +#: wp-admin/includes/class-plugin-installer-skin.php:157 +#: wp-admin/includes/class-plugin-upgrader-skin.php:101 +msgid "Go to Plugins page" +msgstr "前往 [外掛] 頁面" + +#: wp-admin/includes/nav-menu.php:1312 +msgid "Click Save Menu to make pending menu items public." +msgstr "點擊 [儲存選單] 將選單項目由待審閱變更為公開。" + +#: wp-admin/includes/dashboard.php:1675 +msgid "Storage Space" +msgstr "儲存空間" + +#: wp-admin/includes/dashboard.php:458 +msgid "Create a New Site" +msgstr "新增網站" + +#. translators: 1: Image width in pixels, 2: Image height in pixels. +#: wp-admin/includes/class-custom-image-header.php:602 +msgid "Images of exactly %1$d × %2$d pixels will be used as-is." +msgstr "圖片的裁剪保留範圍為 %1$d × %2$d px。" + +#: wp-admin/includes/class-custom-image-header.php:952 +msgid "Crop and Publish" +msgstr "裁剪並發佈" + +#: wp-admin/edit-link-form.php:70 +msgid "XFN stands for XHTML Friends Network, which is optional. WordPress allows the generation of XFN attributes to show how you are related to the authors/owners of the site to which you are linking." +msgstr "XFN 是一項選填屬性,它是 XHTML Friends Network 的縮寫。WordPress 能產生含有 XFN 屬性的連結,XFN 屬性可用於顯示建立連結的使用者與連結目標 (例如某位作者或另一個網站的站長) 的人際關係。" + +#: wp-admin/includes/file.php:2569 +msgid "FTP Password" +msgstr "FTP 密碼" + +#: wp-admin/includes/file.php:2568 +msgid "FTP Username" +msgstr "FTP 使用者名稱" + +#: wp-admin/includes/file.php:2565 +msgid "FTP/SSH Password" +msgstr "FTP/SSH 密碼" + +#: wp-admin/includes/file.php:2564 +msgid "FTP/SSH Username" +msgstr "FTP/SSH 使用者名稱" + +#: wp-admin/widgets-form.php:64 +msgid "Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area." +msgstr "許多佈景主題在使用者編輯資訊欄前,預設只展示某些資訊欄小工具,而這些小工具並不會自動顯示在網站的資訊欄管理工具中。使用者在資訊欄中設定小工具時,便可從 [可用的小工具] 區域重新加入預設小工具。" + +#. translators: %s: URL to create a new page. +#: wp-admin/options-reading.php:29 +msgid "You can choose what’s displayed on the homepage of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static homepage, you first need to create two Pages. One will become the homepage, and the other will be where your posts are displayed." +msgstr "網站管理員可以選擇網站首頁要顯示的頁面,這個頁面可以是發佈時間由新到舊排序的文章彙整 (傳統部落格),或是一個固定/靜態頁面。若要將首頁設定為靜態頁面,必須先建立兩個頁面;一個設定為首頁,而另一個則是設定為顯示文章的頁面。" + +#: wp-admin/options-permalink.php:54 +msgid "The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized." +msgstr "網站管理員可以透過 [選用設定] 中的欄位,自訂彙整網址中的分類目錄起點及標籤目錄起點。舉例來說,網站管理員將 [分類目錄起點] 設定為 topics 後,列出全部〈未分類〉分類文章的彙整頁面便會是 /topics/uncategorized,而不再是預設的 /category/uncategorized。" + +#. translators: 1: %category%, 2: %tag% +#: wp-admin/options-permalink.php:42 +msgid "When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %1$s or %2$s." +msgstr "將多個分類或標籤指派給同一篇文章時,僅有 ID 數值最小的分類或標籤會顯示於永久連結中;自訂結構包含 %1$s 或 %2$s 結構標籤時,便會套用這項規則。" + +#. translators: %s: Percent sign (%). +#: wp-admin/options-permalink.php:37 +msgid "If you pick an option other than Plain, your general URL path with structure tags (terms surrounded by %s) will also appear in the custom structure field and your path can be further modified there." +msgstr "如果網站管理員選取了 [預設] 之外的設定,帶有結構標籤 (由 %s 括住的詞彙) 的一般網址路徑就會出現在自訂結構欄位中,然後就可以在欄位中進一步修改網址路徑。" + +#: wp-admin/widgets-form.php:54 +msgid "If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas." +msgstr "如果想在資訊欄移除某個小工具後仍保留原有設定,僅需將它拖放至 [未啟用的小工具] 區域即可,之後隨時可將它從 [未啟用的小工具] 區域新增至指定的資訊欄。這項功能對切換至提供較少資訊欄的佈景主題或將小工具移至不同資訊欄來說,非常實用。" + +#: wp-admin/users.php:36 +msgid "To add a new user for your site, click the Add User button at the top of the screen or Add User in the Users menu section." +msgstr "如需為網站新增使用者,點擊畫面上方的 [新增使用者] 按鈕,或點擊 [使用者] 選單內的 [新增使用者]。" + +#: wp-admin/options-media.php:20 +msgid "You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size." +msgstr "網站管理員可以設定在這個網站中要插入文章的各式預設尺寸圖片的長寬上限,而圖片也可以以完整尺寸插入文章中。" + +#: wp-admin/options-general.php:28 +msgid "Most themes show the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. Many themes also show the tagline." +msgstr "大多數的佈景主題會將網站標題顯示於每個頁面的最上方及瀏覽器的標題列,並作為資訊提供的識別名稱,而許多佈景主題也會顯示網站說明。" + +#: wp-admin/edit-form-advanced.php:407 +msgid "Order — Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field." +msgstr "順序 — 頁面通常依字母順序排序,但使用者可以在 [順序] 欄位中輸入整數為頁面自訂順序。輸入 0 為最優先排序,數值越大順序越後,而同一順序數值頁面再依標題首字字母順序排序。" + +#: wp-admin/includes/file.php:2573 +msgid "If you do not remember your credentials, you should contact your web host." +msgstr "如果不記得認證為何,請聯絡這個網站的主機服務商。" + +#: wp-admin/includes/file.php:2567 +msgid "Please enter your FTP credentials to proceed." +msgstr "請輸入 FTP 認證以繼續。" + +#: wp-admin/includes/file.php:2563 +msgid "Please enter your FTP or SSH credentials to proceed." +msgstr "請輸入 FTP 或 SSH 認證以繼續。" + +#: wp-admin/user-edit.php:60 +msgid "Your profile contains information about you (your “account”) as well as some personal options related to using WordPress." +msgstr "個人資料包含個人及個人帳號的相關資訊,以及使用者在 WordPress 網站中的個人化設定。" + +#. translators: %s: /wp-content/themes +#: wp-admin/theme-install.php:116 +msgid "You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your %s directory." +msgstr "如果已從可信賴的原始來源網站將佈景主題 ZIP 壓縮檔下載到個人裝置,便可以手動上傳佈景主題。安裝佈景主題也可以使用舊方法,將解壓縮佈景主題 ZIP 檔所得的資料夾及其包含的全部檔案,透過 FTP 上傳至這個網站的 %s 目錄中。" + +#: wp-admin/edit-form-advanced.php:394 +msgid "Send Trackbacks — Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary." +msgstr "傳送引用通知引用通知 (英文原文為 Trackback) 是種通知舊式網站系統在這個網站的文章中已連結它們的方式,透過輸入需要傳送引用通知的網址即可完成。當這個網站的文章連結至其他 WordPress 網站時,系統便會以自動引用通知 (英文原文為 Pingback) 的方式通知他們,不須進行其他操作。" + +#: wp-admin/user-new.php:305 +msgid "Contributors can write and manage their posts but not publish posts or upload media files." +msgstr "投稿者 — 可以撰寫及管理自己的文章,但無法發佈文章或上傳媒體檔案。" + +#: wp-admin/user-new.php:308 +msgid "Administrators have access to all the administration features." +msgstr "網站管理員 — 可以使用全部管理功能。" + +#: wp-admin/plugin-editor.php:141 +msgid "You can use the plugin file editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations." +msgstr "網站管理員可以使用 [外掛檔案編輯器] 編輯任何外掛中的個別 PHP 檔案。請注意,外掛更新後的新檔案會覆寫之前進行過自訂修改的舊版檔案。" + +#: wp-admin/link-manager.php:73 +msgid "If you delete a link, it will be removed permanently, as Links do not have a Trash function yet." +msgstr "由於 [連結] 沒有 [回收桶] 功能,因此在使用者刪除連結後,系統便會將這個連結永久移除。" + +#. translators: %s: URL to Widgets screen. +#: wp-admin/link-manager.php:61 +msgid "You can add links here to be displayed on your site, usually using Widgets. By default, links to several sites in the WordPress community are included as examples." +msgstr "使用者可以在這個畫面新增連結,且通常會使用小工具將連結顯示於網站前端。系統在預設情況下,會以 WordPress 社群的相關網站作為連結範例。" + +#: wp-admin/edit-tags.php:286 +msgid "Slug — The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens." +msgstr "代稱 — 代稱的英文原文為 Slug,是用於網址中的易記名稱,通常由小寫英文字母、數字及連字號 - 組成。" + +#. translators: %s: URL to Press This bookmarklet. +#: wp-admin/edit-form-advanced.php:308 +msgid "You can also create posts with the Press This bookmarklet." +msgstr "使用者也可以使用 [發佈至網站] 書籤小工具以建立文章。" + +#: wp-admin/includes/class-custom-background.php:104 +msgid "Do not forget to click on the Save Changes button when you are finished." +msgstr "完成設定後,請記得點擊 [儲存設定] 。" + +#: wp-admin/includes/class-custom-background.php:101 +msgid "You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color." +msgstr "網站管理員可以使用自訂背景功能變更網站外觀,而不需要修改佈景主題程式碼。網站背景可設定為圖片或指定色彩。" + +#: wp-admin/user-new.php:307 +msgid "Editors can publish posts, manage posts as well as manage other people’s posts, etc." +msgstr "編輯 — 可以發佈文章、管理文章以及管理其他作者的文章等。" + +#: wp-admin/user-edit.php:66 +msgid "Remember to click the Update Profile button when you are finished." +msgstr "個人資料如果有任何變更,完成後請記得點擊畫面最下方的 [更新個人資料]。" + +#: wp-admin/user-edit.php:65 +msgid "Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so." +msgstr "除了標示為 [必填] 的欄位外,其餘欄位均為選填欄位。只有在使用中的佈景主題需要時,個人資料才會顯示在網站前端。" + +#: wp-admin/user-edit.php:63 +msgid "Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts." +msgstr "使用者名稱無法變更,但可以在其他欄位輸入真實姓名或暱稱,並設定在文章顯示作者名稱的方式。" + +#: wp-admin/comment.php:67 +msgid "You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment." +msgstr "相關站務人員也可以使用畫面上的 [狀態] 區塊審閱留言,還可以變更該則留言的時間戳記。" + +#: wp-admin/comment.php:66 +msgid "You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error." +msgstr "如有需要,具備管理留言權限的站務人員可以編輯留言內的資訊。當發現留言者發生拼寫錯誤時,這項功能會非常有幫助。" + +#. translators: %s: Documentation URL. +#: wp-admin/options-reading.php:34 +msgid "You can also control the display of your content in RSS feeds, including the maximum number of posts to display and whether to show full text or an excerpt. Learn more about feeds." +msgstr "網站管理員還可以設定 RSS 資訊提供顯示內容的方式,包含最新文章顯示數量以及在資訊提供中要顯示完整內容還是內容摘要。進一步了解資訊提供" + +#: wp-admin/options-reading.php:26 +msgid "This screen contains the settings that affect the display of your content." +msgstr "這個畫面包含各項會影響網站內容顯示方式的相關設定。" + +#: wp-admin/options-general.php:47 +msgid "UTC means Coordinated Universal Time." +msgstr "UTC 為英文 Coordinated Universal Time 的縮寫,代表國際標準時間。" + +#: wp-admin/options-general.php:27 +msgid "The fields on this screen determine some of the basics of your site setup." +msgstr "這個畫面中的欄位,均是會影響這個網站的基礎設定。" + +#: wp-admin/options-discussion.php:26 wp-admin/options-general.php:48 +#: wp-admin/options-media.php:29 wp-admin/options-permalink.php:26 +#: wp-admin/options-permalink.php:46 wp-admin/options-permalink.php:55 +#: wp-admin/options-reading.php:37 wp-admin/options-writing.php:25 +msgid "You must click the Save Changes button at the bottom of the screen for new settings to take effect." +msgstr "請務必點擊畫面最下方的 [儲存設定] 按鈕,變更的設定才會生效。" + +#: wp-admin/edit-link-form.php:69 +msgid "The boxes for link name, web address, and description have fixed positions, while the others may be repositioned using drag and drop. You can also hide boxes you do not use in the Screen Options tab, or minimize boxes by clicking on the title bar of the box." +msgstr "[連結名稱]、[網站位址] 及 [內容說明] 區塊的位置不可移動,其他區塊則可使用拖放方式重新排列。使用者可在 [顯示項目設定] 分頁中隱藏不需要使用的區塊,或點擊區塊的標題列將區塊最小化。" + +#: wp-admin/update-core.php:643 +msgid "Your themes are all up to date." +msgstr "這個網站的全部佈景主題均為最新版本。" + +#: wp-admin/update-core.php:470 +msgid "Your plugins are all up to date." +msgstr "這個網站的全部外掛均為最新版本。" + +#: wp-admin/update-core.php:287 +msgid "While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, this mode will be deactivated." +msgstr "當這個網站進行更新時,便會進入 [網站例行性維護] 模式;網站更新完畢後,便會停用這個模式。" + +#: wp-admin/update-core.php:255 +msgid "An updated version of WordPress is available." +msgstr "WordPress 已有更新版本可供下載安裝。" + +#: wp-admin/update-core.php:274 +msgid "You have the latest version of WordPress." +msgstr "這個網站安裝的 WordPress 為最新版本。" + +#: wp-admin/plugin-editor.php:184 wp-admin/theme-editor.php:174 +msgid "Function Name…" +msgstr "函式名稱..." + +#: wp-admin/includes/class-plugin-installer-skin.php:110 +msgid "Activate Plugin & Run Importer" +msgstr "啟用外掛並執行匯入程式" + +#: wp-admin/edit-link-form.php:68 +msgid "You can add or edit links on this screen by entering information in each of the boxes. Only the link’s web address and name (the text you want to display on your site as the link) are required fields." +msgstr "使用者可以在這個畫面中的各個區塊輸入所需資訊,藉以新增或編輯連結,但僅有 [網站位址] 及 [連結名稱] 為必填欄位,而 [連結名稱] 欄位中的內容就是這個連結顯示於頁面的連結文字。" + +#. translators: %s: URL to Categories to Tags Converter tool. +#: wp-admin/edit-tags.php:643 +msgid "Categories can be selectively converted to tags using the category to tag converter." +msgstr "使用分類與標籤轉換程式可將分類選擇性地轉換成標籤。" + +#: wp-admin/import.php:25 +msgid "This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform." +msgstr "在這個畫面中列出連結的外掛,能讓網站管理員從其他網站或內容管理平台匯入資料。選取要匯入內容的平台,然後在快顯視窗出現提示時點擊 [立即安裝]。如果需要匯入內容的平台並未列在目前的清單中,點擊畫面最下方的連結以搜尋外掛目錄,查看是否有其他可用的內容平台匯入工具。" + +#: wp-admin/export.php:53 +msgid "Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format." +msgstr "WXR 檔案成功匯出並儲存後,便能在其他 WordPress 網站或支援這個格式的內容平台匯入這個網站的內容。" + +#: wp-admin/plugin-editor.php:142 +msgid "Choose a plugin to edit from the dropdown menu and click the Select button. Click once on any file name to load it in the editor, and make your changes. Do not forget to save your changes (Update File) when you are finished." +msgstr "請從下拉式選單選取要編輯的外掛,然後點擊 [選取] 按鈕,接下來點擊任何一個檔案名稱,編輯器便會載入檔案內容以供使用者進行修改。檔案修改完畢後,請記得點擊 [更新檔案] 儲存檔案變更。" + +#: wp-admin/link-manager.php:65 +msgid "You can customize the display of this screen using the Screen Options tab and/or the dropdown filters above the links table." +msgstr "使用者可以在 [顯示項目設定] 分頁中設定這個畫面的顯示項目,也可以使用連結清單上方下拉式選單中的篩選條件尋找符合條件的連結。" + +#: wp-admin/plugins.php:579 +msgid "Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin’s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue." +msgstr "大多數的時候,外掛均能與 WordPress 核心程式及其他外掛正常配合運作。但有些時候某個外掛會干擾另一個外掛運作,造成相容性問題;如果網站運作開始發生不正常現象,或許是這類問題所造成。如果遇到這類相容性問題,請先停用全部外掛,並以各種啟用組合重新啟用外掛,直到找出引發問題的外掛為止。" + +#: wp-admin/widgets-form.php:56 +msgid "Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop." +msgstr "在 [顯示項目設定] 分頁中啟用 [無障礙模式],便能使用 [新增] 及 [編輯] 按鈕取代預設的拖放操作。" + +#: wp-admin/widgets-form.php:55 +msgid "Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required." +msgstr "同一個小工具可以重複使用於多個資訊欄,這時可為每個小工具輸入標題,讓小工具標題顯示在網站中,但這不是必要的操作。" + +#: wp-admin/widgets-form.php:45 +msgid "Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them." +msgstr "小工具是網頁內容的獨立區塊,這種獨立區塊可放置於佈景主題所提供的小工具區域內,而這種區域通常稱為資訊欄。如需將個別小工具放置於資訊欄/小工具區域內,請將小工具標題列拖放至指定的小工具區域內。依照預設,小工具設定頁只會展開第一個小工具區域;如需使用其他小工具區域,點擊這些小工具區域的標題列便能展開。" + +#: wp-admin/theme-editor.php:40 +msgid "Advice: Think very carefully about your site crashing if you are live-editing the theme currently in use." +msgstr "重要須知: 如果編輯的檔案屬於目前使用的佈景主題,請務必了解這項操作有可能造成網站停擺。" + +#: wp-admin/theme-editor.php:39 +msgid "After typing in your edits, click Update File." +msgstr "完成檔案編輯後,請點擊 [更新檔案]。" + +#: wp-admin/theme-editor.php:31 +msgid "Begin by choosing a theme to edit from the dropdown menu and clicking the Select button. A list then appears of the theme’s template files. Clicking once on any file name causes the file to appear in the large Editor box." +msgstr "請從下拉式選單中選取需要編輯的佈景主題,然後點擊 [選取] 按鈕,便會顯示佈景主題的檔案清單。點擊任何一個佈景主題檔案的檔案名稱,便會在編輯器區塊中顯示這個檔案的程式碼。" + +#: wp-admin/theme-editor.php:30 +msgid "You can use the theme file editor to edit the individual CSS and PHP files which make up your theme." +msgstr "網站管理員可以使用 [佈景主題檔案編輯器] 編輯組成佈景主題的個別 CSS 及 PHP 檔案。" + +#: wp-admin/includes/meta-boxes.php:1010 +msgid "(no parent)" +msgstr "(無上層項目)" + +#: wp-admin/edit-form-advanced.php:406 +msgid "Template — Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu." +msgstr "範本 — 有些佈景主題會內建自訂範本,這些自訂範本讓特定使用目的的頁面有了更多元的功能或自訂版面配置。只要是佈景主題內建的自訂範本,就會出現在 [範本] 下拉式選單中。" + +#: wp-admin/edit-form-advanced.php:405 +msgid "Parent — You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages." +msgstr "上層頁面 — 作者可以指派其所撰寫的頁面的階層架構。舉例來說,網站中某位作者可以有個〈關於我〉頁面,而該頁面其下還有〈生活札記〉及〈狗狗與我〉等子頁面,且系統未限制巢狀頁面階層數量。" + +#: wp-admin/includes/class-bulk-upgrader-skin.php:68 +msgid "All updates have been completed." +msgstr "這個網站已完成全部更新。" + +#: wp-admin/edit-tags.php:294 +msgid "You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table." +msgstr "使用者可以在 [顯示項目設定] 分頁中設定每頁顯示的項目數量,以及要在畫面中顯示/隱藏的欄位項目。" + +#: wp-admin/edit-tags.php:292 +msgid "Description — The description is not prominent by default; however, some themes may display it." +msgstr "內容說明 — [內容說明] 欄位中的資料預設不會顯示,但有些佈景主題在其版面的特定位置會顯示這些資料。" + +#: wp-admin/edit-tags.php:284 +msgid "Name — The name is how it appears on your site." +msgstr "名稱 — 在這個欄位中輸入的內容,就是這個項目在網站上的顯示名稱。" + +#: wp-admin/edit-tags.php:280 +msgid "When adding a new tag on this screen, you’ll fill in the following fields:" +msgstr "在這個畫面新增標籤時,需要填寫以下欄位:" + +#: wp-admin/edit-tags.php:278 +msgid "When adding a new category on this screen, you’ll fill in the following fields:" +msgstr "在這個畫面新增分類時,需要填寫以下欄位:" + +#: wp-admin/edit-tags.php:265 +msgid "What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index." +msgstr "分類與標籤有何不同?一般來說,標籤是標示文章重要資訊如專有名詞或主題等的特定關鍵字,可能會、也可能不會再次用於其他文章,而分類則是預先規劃的網站內容結構。如果將網站想像成一本書,分類就像是目錄,而標籤則等同索引。" + +#. translators: %s: URL to Writing Settings screen. +#: wp-admin/edit-tags.php:253 +msgid "You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings." +msgstr "使用者可以使用分類區分網站上的內容結構,並可為相關的文章進行分組。文章的預設分類為〈未分類〉,如需變更這項設定,請前往 [寫作設定] 進行設定。" + +#: wp-admin/includes/class-custom-image-header.php:934 +msgid "You need JavaScript to choose a part of the image." +msgstr "瀏覽器需要啟用 JavaScript 功能以選取部份圖片進行裁剪。" + +#: wp-admin/includes/class-custom-image-header.php:930 +msgid "Crop Header Image" +msgstr "裁剪頁首圖片" + +#: wp-admin/includes/class-custom-image-header.php:986 +msgid "Image Upload Error" +msgstr "上傳圖片時發生錯誤" + +#: wp-admin/includes/class-custom-image-header.php:773 +msgid "Text Color" +msgstr "文字色彩" + +#: wp-admin/includes/class-custom-image-header.php:750 +msgid "Restore Original Header Image" +msgstr "還原原始頁首圖片" + +#: wp-admin/includes/class-custom-image-header.php:749 +msgid "This will restore the original header image. You will not be able to restore any customizations." +msgstr "這項操作會還原原始頁首圖片,執行後便無法還原任何自訂設定。" + +#: wp-admin/includes/class-custom-image-header.php:747 +msgid "Reset Image" +msgstr "重設圖片" + +#: wp-admin/includes/class-custom-image-header.php:732 +msgid "Remove Header Image" +msgstr "移除頁首圖片" + +#: wp-admin/includes/class-custom-image-header.php:731 +msgid "This will remove the header image. You will not be able to restore any customizations." +msgstr "這項操作會移除頁首圖片,執行後便無法還原任何自訂設定。" + +#: wp-admin/includes/class-custom-image-header.php:712 +msgid "Default Images" +msgstr "預設圖片" + +#: wp-admin/includes/class-wp-comments-list-table.php:838 +#: wp-admin/includes/dashboard.php:793 +msgid "Delete this comment permanently" +msgstr "永久刪除這則留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:828 +msgid "Restore this comment from the Trash" +msgstr "將這則留言從回收桶中還原" + +#: wp-admin/includes/meta-boxes.php:851 +msgid "Allow comments" +msgstr "開放留言" + +#: wp-admin/edit-form-advanced.php:395 +msgid "Discussion — You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them." +msgstr "討論 — 網站管理員可以為個別內容開啟或關閉留言及內容更新通知。當文章有留言時,網站管理員可以在這裡進行檢視及管理。" + +#. translators: %s: Featured image. +#: wp-admin/edit-form-advanced.php:379 +msgid "%s — This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the image as a post thumbnail on the home page, a custom header, etc." +msgstr "%s — 精選圖片讓使用者建立文章與某張圖片的關聯,而無須將圖片插入文章中,但只有佈景主題在首頁或自訂頁首等處使用精選圖片作為縮圖才會發揮效果。" + +#: wp-admin/edit-form-advanced.php:285 +msgid "Title — Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit." +msgstr "標題 — 作者可為文章輸入標題。標題輸入完畢後,將會在標題欄位下方看到永久連結,並且可以加以編輯。" + +#: wp-admin/edit.php:276 +msgid "Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:" +msgstr "將游標暫留於文章清單的資料列上,便會出現操作連結讓使用者管理個人文章。使用者可進行的操作如下:" + +#: wp-admin/edit.php:267 +msgid "You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list." +msgstr "使用者可以透過文章清單上方的下拉式選單,選取指定分類或月份以篩選符合條件的文章;完成條件選取後,點擊 [篩選] 便能完成篩選並顯示結果。使用者也可以點擊文章列表中的作者、分類或標籤等連結,以縮小篩選範圍。" + +#: wp-admin/edit.php:264 +msgid "You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab." +msgstr "使用者可以依據個人需求在 [顯示項目設定] 分頁中隱藏或顯示個別欄位,並能設定每頁顯示的文章數量。" + +#: wp-admin/users.php:44 +msgid "You can customize the display of this screen in a number of ways:" +msgstr "使用者可以使用下列方式自訂這個畫面的顯示項目:" + +#: wp-admin/plugins.php:806 +msgid "Search installed plugins" +msgstr "搜尋已安裝的外掛" + +#: wp-admin/nav-menus.php:838 +msgid "Your theme supports one menu. Select which menu you would like to use." +msgstr "目前使用的佈景主題提供 1 個位置顯示選單,請選取指定位置要顯示的選單。" + +#: wp-admin/nav-menus.php:19 +msgid "Your theme does not support navigation menus or widgets." +msgstr "目前使用的佈景主題不支援導覽選單或小工具。" + +#: wp-admin/includes/import.php:193 wp-admin/tools.php:48 wp-admin/tools.php:73 +msgid "Categories and Tags Converter" +msgstr "分類與標籤轉換程式" + +#: wp-admin/includes/nav-menu.php:600 wp-admin/includes/nav-menu.php:623 +msgid "Most Recent" +msgstr "最新發佈" + +#: wp-admin/export.php:224 wp-admin/export.php:276 wp-admin/export.php:321 +msgid "Start date:" +msgstr "開始日期:" + +#: wp-admin/includes/theme-install.php:110 +msgctxt "Theme Installer" +msgid "Tag" +msgstr "標籤" + +#: wp-admin/includes/plugin-install.php:330 +msgctxt "Plugin Installer" +msgid "Tag" +msgstr "標籤" + +#: wp-admin/includes/media.php:2608 +msgctxt "verb" +msgid "Clear" +msgstr "清除" + +#: wp-admin/comment.php:136 +#: wp-admin/includes/class-wp-comments-list-table.php:393 +msgctxt "comment" +msgid "Mark as spam" +msgstr "標示為垃圾留言" + +#: wp-admin/includes/class-custom-background.php:327 +msgid "Remove Background Image" +msgstr "移除背景圖片" + +#. translators: %s: Post title. +#. translators: %s: Link to post. +#: wp-admin/edit-comments.php:183 wp-admin/edit-comments.php:252 +msgid "Comments on “%s”" +msgstr "〈%s〉的留言" + +#: wp-admin/includes/nav-menu.php:1354 +msgid "Show advanced menu properties" +msgstr "顯示進階選單內容" + +#. translators: 1: Plugin version, 2: New version. +#. translators: 1: Theme version, 2: New version. +#: wp-admin/update-core.php:602 wp-admin/update-core.php:780 +msgid "You have version %1$s installed. Update to %2$s." +msgstr "已安裝 %1$s 版,可更新至 %2$s 版。" + +#: wp-admin/includes/class-wp-debug-data.php:487 +#: wp-admin/includes/class-wp-debug-data.php:700 +#: wp-admin/includes/class-wp-debug-data.php:1255 +#: wp-admin/includes/class-wp-debug-data.php:1366 +#: wp-admin/includes/class-wp-debug-data.php:1532 +#: wp-admin/includes/class-wp-debug-data.php:1537 +#: wp-admin/includes/class-wp-debug-data.php:1546 +#: wp-admin/includes/class-wp-debug-data.php:1555 +#: wp-admin/includes/class-wp-debug-data.php:1614 +#: wp-admin/includes/class-wp-debug-data.php:1619 +#: wp-admin/includes/class-wp-debug-data.php:1629 +#: wp-admin/includes/class-wp-debug-data.php:1634 +msgid "Enabled" +msgstr "已啟用" + +#: wp-admin/includes/class-wp-comments-list-table.php:819 +msgctxt "comment" +msgid "Not Spam" +msgstr "標示為非垃圾留言" + +#: wp-admin/includes/class-custom-background.php:342 +msgid "This will restore the original background image. You will not be able to restore any customizations." +msgstr "這項操作會還原原始背景圖片,執行後便無法還原任何自訂設定。" + +#: wp-admin/includes/dashboard.php:1567 +msgid "WordPress Blog" +msgstr "WordPress 網站" + +#: wp-admin/users.php:525 +msgid "Remove Users from Site" +msgstr "從這個網站移除使用者" + +#: wp-admin/includes/class-wp-users-list-table.php:315 +#: wp-admin/user-edit.php:464 wp-admin/user-edit.php:466 wp-admin/users.php:127 +#: wp-admin/network/site-users.php:152 +msgid "— No role for this site —" +msgstr "— 不指派使用者角色 —" + +#: wp-admin/includes/upgrade.php:614 +msgid "New WordPress Site" +msgstr "新的 WordPress 網站" + +#: wp-admin/includes/schema.php:414 +msgid "My Site" +msgstr "我的網站" + +#: wp-admin/includes/post.php:922 +msgid "Sorry, you are not allowed to create posts or drafts on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上新增文章或草稿的權限。" + +#: wp-admin/includes/post.php:920 +msgid "Sorry, you are not allowed to create pages on this site." +msgstr "很抱歉,目前的登入身分沒有在這個網站上新增頁面的權限。" + +#: wp-admin/includes/plugin.php:516 +msgid "Custom site suspended message." +msgstr "自訂網站停用訊息。" + +#: wp-admin/includes/plugin.php:515 +msgid "Custom site inactive message." +msgstr "自訂網站未啟用訊息。" + +#: wp-admin/includes/plugin.php:514 +msgid "Custom site deleted message." +msgstr "自訂網站已刪除訊息。" + +#: wp-admin/import.php:78 +msgid "If you have posts or comments in another system, WordPress can import those into this site. To get started, choose a system to import from below:" +msgstr "如果已在其他系統撰寫文章或留言,WordPress 能將它們匯入這個網站。如需進行這項操作,請在下方選擇要匯入內容的系統:" + +#: wp-admin/includes/nav-menu.php:525 wp-admin/includes/nav-menu.php:890 +msgid "No items." +msgstr "尚無任何項目。" + +#. translators: %s: Asterisk symbol (*). +#: wp-admin/includes/schema.php:1192 +msgid "To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a %s hostname record pointing at your web server in your DNS configuration tool." +msgstr "多站網路如要採用子網域組態,則對應的 DNS 組態中必須有一條萬用字元記錄。這通常代表著在對應的 DNS 組態工具中要新增一條 %s (萬用字元) 主機記錄指向目前的網頁伺服器。" + +#. translators: %s: Host name. +#: wp-admin/includes/schema.php:1181 +msgid "The installer attempted to contact a random hostname (%s) on your domain." +msgstr "安裝程式已嘗試連線至一個這個網站所屬的網域中的隨機主機名稱 (%s)。" + +#: wp-admin/nav-menus.php:285 +msgid "The menu item has been successfully deleted." +msgstr "選單項目已成功刪除。" + +#: wp-admin/includes/ajax-actions.php:1696 +msgid "Please provide a custom field name." +msgstr "請提供自訂欄位的名稱。" + +#: wp-admin/includes/class-custom-background.php:372 +msgid "Display Options" +msgstr "顯示設定" + +#: wp-admin/includes/class-custom-background.php:323 +#: wp-admin/includes/class-custom-image-header.php:729 +msgid "Remove Image" +msgstr "移除圖片" + +#: wp-admin/users.php:745 +msgid "Other users have been removed." +msgstr "其他使用者已移除。" + +#: wp-admin/users.php:737 +msgid "You cannot remove the current user." +msgstr "無法移除已登入的使用者。" + +#: wp-admin/users.php:576 +msgid "There are no valid users selected for removal." +msgstr "移除時沒有選取有效的使用者。" + +#: wp-admin/users.php:572 +msgid "Confirm Removal" +msgstr "確認移除" + +#: wp-admin/users.php:530 +msgid "You have specified these users for removal:" +msgstr "目前指定移除的使用者如下所列:" + +#: wp-admin/users.php:180 wp-admin/users.php:283 +msgid "User deletion is not allowed from this screen." +msgstr "無法在這個畫面刪除使用者。" + +#. translators: %s: Title of an update. +#: wp-admin/includes/class-bulk-upgrader-skin.php:67 +msgid "%s updated successfully." +msgstr "%s 已成功更新。" + +#: wp-admin/includes/user.php:552 +msgid "No thanks, do not remind me again" +msgstr "否,別再提醒我" + +#: wp-admin/includes/user.php:547 +msgid "Yes, take me to my profile page" +msgstr "是,前往 [個人資料] 頁面變更密碼" + +#: wp-admin/includes/upgrade.php:120 +msgid "Your chosen password." +msgstr "安裝過程中所設定的密碼。" + +#: wp-admin/edit.php:156 wp-admin/post.php:287 wp-admin/upload.php:318 +msgid "Sorry, you are not allowed to restore this item from the Trash." +msgstr "很抱歉,目前的登入身分沒有將這個項目從回收桶中還原的權限。" + +#: wp-admin/edit.php:123 wp-admin/post.php:250 wp-admin/upload.php:297 +msgid "Sorry, you are not allowed to move this item to the Trash." +msgstr "很抱歉,目前的登入身分沒有將這個項目移至回收桶的權限。" + +#. translators: %s: Number of comments. +#: wp-admin/edit-comments.php:378 +msgid "%s comment restored from the Trash." +msgid_plural "%s comments restored from the Trash." +msgstr[0] "%s 則留言已從回收桶還原。" + +#. translators: %s: Number of comments. +#: wp-admin/edit-comments.php:366 +msgid "%s comment moved to the Trash." +msgid_plural "%s comments moved to the Trash." +msgstr[0] "%s 則留言已移至回收桶。" + +#: wp-admin/update-core.php:660 +msgid "The following themes have new versions available. Check the ones you want to update and then click “Update Themes”." +msgstr "下列佈景主題已有新版本可供更新。選取要進行更新的佈景主題並點擊 [更新佈景主題]。" + +#: wp-admin/user-new.php:365 +msgid "That user is already a member of this site." +msgstr "這個使用者已是這個網站的成員。" + +#: wp-admin/user-new.php:356 +msgid "User has been added to your site." +msgstr "使用者已新增至這個網站。" + +#: wp-admin/user-new.php:353 +msgid "Invitation email sent to user. A confirmation link must be clicked for them to be added to your site." +msgstr "已將邀請電子郵件傳送至使用者。使用者必須先點擊電子郵件中的確認連結,才能正式加入網站。" + +#: wp-admin/update-core.php:493 +msgid "The following plugins have new versions available. Check the ones you want to update and then click “Update Plugins”." +msgstr "下列外掛已有新版本可供更新。選取要進行更新的外掛並點擊 [更新外掛]。" + +#: wp-admin/includes/class-custom-background.php:328 +msgid "This will remove the background image. You will not be able to restore any customizations." +msgstr "這項操作會移除背景圖片,執行後便無法還原任何自訂設定。" + +#. translators: %s: Network title. +#: wp-admin/includes/class-wp-themes-list-table.php:131 +msgid "Only the active theme is available to you. Contact the %s administrator for information about accessing additional themes." +msgstr "這個網站目前只能使用這個佈景主題。請聯絡《%s》的多站網路管理員以取得使用更多佈景主題的相關資訊。" + +#: wp-admin/includes/file.php:31 +msgid "Tag Template" +msgstr "標籤範本" + +#: wp-admin/includes/file.php:28 +msgid "Author Template" +msgstr "作者範本" + +#: wp-admin/includes/file.php:55 +msgid "Visual Editor Stylesheet" +msgstr "編輯器的 [預覽] 模式樣式表" + +#: wp-admin/edit-form-advanced.php:197 +msgid "Page saved." +msgstr "頁面已儲存。" + +#. translators: %s: Importer name. +#. translators: %s: Plugin name and version. +#. translators: %s: Plugin name. +#: wp-admin/import.php:210 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:573 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:825 +#: wp-admin/includes/class-wp-plugins-list-table.php:1214 +#: wp-admin/includes/class-wp-plugins-list-table.php:1673 +msgid "More information about %s" +msgstr "進一步了解 %s 的相關資訊" + +#: wp-admin/user-edit.php:478 +msgid "Grant this user super admin privileges for the Network." +msgstr "授予這個使用者多站網路管理員的權限" + +#: wp-admin/user-edit.php:206 +msgid "This user has super admin privileges." +msgstr "這個使用者具備多站網路管理員權限。" + +#: wp-admin/install.php:152 wp-admin/user-edit.php:206 +msgid "Important:" +msgstr "重要提示:" + +#. translators: %s: Theme version. +#. translators: %s: WordPress version. +#: wp-admin/includes/class-wp-theme-install-list-table.php:321 +#: wp-admin/includes/class-wp-theme-install-list-table.php:478 +#: wp-admin/update-core.php:74 +msgid "Update to version %s" +msgstr "更新至 %s 版" + +#: wp-admin/setup-config.php:310 +msgid "Error: \"Table Prefix\" can only contain numbers, letters, and underscores." +msgstr "錯誤: 資料表前置詞僅可使用數字、字母及底線。" + +#: wp-admin/user-edit.php:446 +msgid "Usernames cannot be changed." +msgstr "使用者名稱無法變更。" + +#: wp-admin/options-reading.php:185 +msgid "items" +msgstr "個項目" + +#: wp-admin/nav-menus.php:322 +msgid "The menu has been successfully deleted." +msgstr "選單已成功刪除。" + +#: wp-admin/install.php:182 wp-admin/options-reading.php:44 +#: wp-admin/options-reading.php:209 +msgid "Site visibility" +msgstr "網站可見度" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:224 +msgid "CSS Classes (optional)" +msgstr "CSS 類別 (選填)" + +#: wp-admin/includes/nav-menu.php:1356 +msgid "Link Target" +msgstr "連結目標開啟方式" + +#: wp-admin/nav-menus.php:1103 wp-admin/nav-menus.php:1254 +msgid "Save Menu" +msgstr "儲存選單" + +#. translators: 1: Theme name, 2: Number of the theme, 3: Total number of +#. themes being updated. +#: wp-admin/includes/class-bulk-theme-upgrader-skin.php:40 +msgid "Updating Theme %1$s (%2$d/%3$d)" +msgstr "正在更新佈景主題 %1$s (第 %2$d 個,總計 %3$d 個)" + +#: wp-admin/includes/schema.php:1196 +msgid "You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message." +msgstr "你仍然可以使用你的網站,但任何你建立的子網域都無法進行存取。如果確定這個網站的 DNS 記錄正確,請忽略這項訊息。" + +#. translators: %s: Error message. +#: wp-admin/includes/schema.php:1186 +msgid "This resulted in an error message: %s" +msgstr "目前狀況引起的錯誤訊息: %s" + +#: wp-admin/includes/schema.php:1046 +msgid "You must provide a valid email address." +msgstr "請務必提供有效的電子郵件地址。" + +#: wp-admin/includes/schema.php:1035 wp-admin/includes/schema.php:1041 +msgid "The network already exists." +msgstr "這個多站網路已存在。" + +#: wp-admin/includes/schema.php:1029 +msgid "You must provide a name for your network of sites." +msgstr "請務必提供多站網路名稱。" + +#: wp-admin/includes/schema.php:1026 +msgid "You must provide a domain name." +msgstr "請務必提供網域名稱。" + +#: wp-admin/includes/user.php:541 +msgid "Notice:" +msgstr "注意:" + +#: wp-admin/edit-form-advanced.php:572 +msgid "Get Shortlink" +msgstr "取得短網址" + +#. translators: %s: Title of an update. +#: wp-admin/includes/class-bulk-upgrader-skin.php:65 +msgid "The update of %s failed." +msgstr "%s 更新失敗。" + +#. translators: 1: Plugin name, 2: Number of the plugin, 3: Total number of +#. plugins being updated. +#: wp-admin/includes/class-bulk-plugin-upgrader-skin.php:39 +msgid "Updating Plugin %1$s (%2$d/%3$d)" +msgstr "正在更新外掛 %1$s (第 %2$d 個,總計 %3$d 個)" + +#: wp-admin/includes/upgrade.php:141 +msgid "The password you chose during installation." +msgstr "安裝時所設定的密碼。" + +#: wp-admin/includes/upgrade.php:124 +msgid "User already exists. Password inherited." +msgstr "這個使用者已存在,將會沿用現有密碼。" + +#: wp-admin/includes/class-wp-automatic-updater.php:529 +#: wp-admin/includes/update-core.php:1753 wp-admin/update-core.php:919 +msgid "WordPress updated successfully." +msgstr "WordPress 已成功更新。" + +#: wp-admin/update-core.php:872 +msgid "Update WordPress" +msgstr "更新 WordPress" + +#: wp-admin/plugins.php:159 wp-admin/update-core.php:496 +#: wp-admin/update-core.php:629 wp-admin/update-core.php:1209 +#: wp-admin/update-core.php:1214 +msgid "Update Plugins" +msgstr "更新外掛" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: Minimum required PHP version number, 4: Minimum required MySQL version +#. number, 5: Current PHP version number, 6: Current MySQL version number. +#: wp-admin/update-core.php:113 wp-admin/upgrade.php:115 +msgid "You cannot update because WordPress %2$s requires PHP version %3$s or higher and MySQL version %4$s or higher. You are running PHP version %5$s and MySQL version %6$s." +msgstr "由於 WordPress %2$s 需要 PHP %3$s 及 MySQL %4$s 或這兩者的更新版本,因此無法進行更新。這個網站目前執行的是 PHP %5$s 及 MySQL %6$s。" + +#: wp-admin/update-core.php:987 wp-admin/update-core.php:1067 +msgid "WordPress Updates" +msgstr "WordPress 更新" + +#: wp-admin/includes/class-walker-nav-menu-edit.php:185 +msgid "Edit menu item" +msgstr "編輯選單項目" + +#: wp-admin/about.php:278 +msgid "Go to Dashboard" +msgstr "前往 [控制台]" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:547 +msgid "Drop-in (%s)" +msgid_plural "Drop-ins (%s)" +msgstr[0] "強化外掛 (%s)" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:539 +msgid "Must-Use (%s)" +msgid_plural "Must-Use (%s)" +msgstr[0] "強制使用 (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:802 +msgid "Inactive:" +msgstr "未啟用:" + +#: wp-admin/plugins.php:411 +msgid "Yes, delete these files and data" +msgstr "是,刪除這些檔案及資料" + +#: wp-admin/plugins.php:393 +msgid "Are you sure you want to delete these files and data?" +msgstr "確定要刪除這些檔案及資料?" + +#: wp-admin/plugins.php:355 +msgid "You are about to remove the following plugin:" +msgstr "即將移除以下外掛:" + +#: wp-admin/plugins.php:343 +msgid "Delete Plugin" +msgstr "刪除外掛" + +#: wp-admin/options-general.php:473 +msgid "This timezone does not observe daylight saving time." +msgstr "這個網站設定的時區不使用日光節約時間。" + +#: wp-admin/options-general.php:449 +msgid "This timezone is currently in daylight saving time." +msgstr "這個網站設定的時區使用日光節約時間。" + +#: wp-admin/options-general.php:267 wp-admin/network/settings.php:170 +msgid "This address is used for admin purposes. If you change this, an email will be sent to your new address to confirm it. The new address will not become active until confirmed." +msgstr "這個電子郵件地址用於管理目的。如果變更了這項設定,系統會傳送一封電子郵件至新地址進行確認。在完成確認前,無法使用新的電子郵件地址。" + +#: wp-admin/includes/nav-menu.php:608 wp-admin/includes/nav-menu.php:980 +msgid "View All" +msgstr "檢視全部" + +#: wp-admin/nav-menus.php:446 wp-admin/nav-menus.php:475 +msgid "Please enter a valid menu name." +msgstr "請輸入有效的選單名稱。" + +#. translators: 1: URL to WordPress release notes, 2: WordPress version number, +#. 3: Minimum required PHP version number, 4: Minimum required MySQL version +#. number, 5: Current PHP version number, 6: Current MySQL version number. +#: wp-admin/install.php:261 +msgid "You cannot install because WordPress %2$s requires PHP version %3$s or higher and MySQL version %4$s or higher. You are running PHP version %5$s and MySQL version %6$s." +msgstr "由於 WordPress %2$s 需要 PHP %3$s 及 MySQL %4$s 或這兩者的更新版本,因此無法進行安裝。這個網站目前執行的是 PHP %5$s 及 MySQL %6$s。" + +#: wp-admin/includes/plugin.php:513 +msgid "Executed before Multisite is loaded." +msgstr "已於多站網路載入前執行。" + +#: wp-admin/includes/plugin.php:507 +msgid "External object cache." +msgstr "外部物件快取。" + +#: wp-admin/includes/plugin.php:506 +msgid "Custom maintenance message." +msgstr "自訂網站維護訊息。" + +#: wp-admin/includes/plugin.php:504 +msgid "Custom database error message." +msgstr "自訂資料庫錯誤訊息。" + +#: wp-admin/includes/plugin.php:503 +msgid "Custom database class." +msgstr "自訂資料庫物件類別。" + +#: wp-admin/includes/plugin.php:502 +msgid "Advanced caching plugin." +msgstr "進階快取外掛。" + +#: wp-admin/includes/file.php:940 +msgid "File is empty. Please upload something more substantial." +msgstr "檔案內容為空。請上傳含有必要內容的檔案。" + +#: wp-admin/edit-comments.php:410 +msgid "This comment is already marked as spam." +msgstr "這則留言已標示為垃圾留言。" + +#: wp-admin/edit-comments.php:406 +msgid "View Trash" +msgstr "檢視回收桶" + +#: wp-admin/edit-comments.php:403 +msgid "This comment is already in the Trash." +msgstr "這則留言已移至回收桶。" + +#: wp-admin/edit-comments.php:396 +msgid "This comment is already approved." +msgstr "這則留言已核准。" + +#: wp-admin/comment.php:162 +msgid "This comment is currently in the Trash." +msgstr "這則留言目前已移至回收桶。" + +#: wp-admin/comment.php:159 +msgid "This comment is currently marked as spam." +msgstr "這則留言目前已標示為垃圾留言。" + +#: wp-admin/comment.php:156 +msgid "This comment is currently approved." +msgstr "這則留言目前已核准。" + +#: wp-admin/comment.php:103 +msgid "Moderate Comment" +msgstr "審閱留言" + +#: wp-admin/export.php:196 +msgid "Categories:" +msgstr "分類:" + +#: wp-admin/widgets-form.php:113 +msgid "Drag widgets here to remove them from the sidebar but keep their settings." +msgstr "將小工具拖放至這裡便可將它們從資訊欄移除,但會保留小工具原有的設定。" + +#. translators: Hidden accessibility text. +#: wp-admin/widgets-form.php:455 wp-admin/widgets-form.php:460 +msgid "Available Widgets" +msgstr "可用的小工具" + +#: wp-admin/widgets-form.php:379 +msgid "Error in displaying the widget settings form." +msgstr "顯示小工具設定表單時發生錯誤。" + +#: wp-admin/includes/misc.php:1368 wp-admin/includes/post.php:2154 +#: wp-admin/widgets-form.php:378 +msgid "Error while saving." +msgstr "儲存時發生錯誤。" + +#: wp-admin/widgets-form.php:374 wp-admin/js/inline-edit-post.js:525 +#: wp-admin/js/inline-edit-tax.js:227 +msgid "Changes saved." +msgstr "設定已儲存。" + +#: wp-admin/widgets-form.php:357 +msgid "Save Widget" +msgstr "儲存小工具" + +#: wp-admin/widgets-form.php:300 +msgid "Select both the sidebar for this widget and the position of the widget in that sidebar." +msgstr "選取小工具所屬的資訊欄及位置順序。" + +#. translators: %s: Widget name. +#: wp-admin/widgets-form.php:285 +msgid "Widget %s" +msgstr "小工具: %s" + +#: wp-admin/widgets-form.php:110 +msgid "Inactive Widgets" +msgstr "未啟用的小工具" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-users-list-table.php:309 +#: wp-admin/includes/class-wp-users-list-table.php:313 +msgid "Change role to…" +msgstr "變更使用者角色..." + +#. translators: 1: User role name, 2: Number of users. +#: wp-admin/includes/class-wp-users-list-table.php:231 +#: wp-admin/includes/class-wp-users-list-table.php:249 +msgid "%1$s (%2$s)" +msgstr "%1$s (%2$s)" + +#: wp-admin/users.php:717 +msgid "Other users have been deleted." +msgstr "其他使用者已刪除。" + +#: wp-admin/users.php:709 +msgid "You cannot delete the current user." +msgstr "無法刪除已登入的使用者。" + +#: wp-admin/users.php:699 +msgid "Other user roles have been changed." +msgstr "其他使用者的使用者角色已變更。" + +#: wp-admin/users.php:636 +msgid "New user created." +msgstr "新使用者已新增。" + +#: wp-admin/users.php:455 +msgid "There are no valid users selected for deletion." +msgstr "刪除時沒有選取有效的使用者。" + +#: wp-admin/users.php:347 +msgid "Delete Users" +msgstr "刪除使用者" + +#: wp-admin/user-new.php:486 wp-admin/user-new.php:653 +msgid "Skip Confirmation Email" +msgstr "略過確認電子郵件" + +#: wp-admin/user-new.php:350 +msgid "Invitation email sent to new user. A confirmation link must be clicked before their account is created." +msgstr "已將邀請電子郵件傳送至新使用者。新使用者必須先點擊電子郵件中的確認連結,才能在網站內正式建立帳號。" + +#. translators: Joining confirmation notification email subject. %s: Site +#. title. +#: wp-admin/user-new.php:140 +msgid "[%s] Joining Confirmation" +msgstr "《%s》通知:確認加入網站使用者" + +#: wp-admin/user-edit.php:962 +msgid "Update User" +msgstr "更新使用者" + +#: wp-admin/user-edit.php:962 +msgid "Update Profile" +msgstr "更新個人資料" + +#: wp-admin/user-edit.php:930 +msgid "Additional Capabilities" +msgstr "附加的權限" + +#: wp-admin/user-edit.php:714 +msgid "Type your new password again." +msgstr "請再次輸入新密碼。" + +#: wp-admin/user-edit.php:689 +msgid "New Password" +msgstr "新密碼" + +#: wp-admin/user-edit.php:633 +msgid "Share a little biographical information to fill out your profile. This may be shown publicly." +msgstr "請在個人資料中分享簡略的自傳資訊。請注意,依據不同佈景主題的相關設定及版面配置設計,有可能會公開顯示這項資訊。" + +#: wp-admin/user-edit.php:631 +msgid "Biographical Info" +msgstr "自傳資訊" + +#: wp-admin/user-edit.php:627 +msgid "About the user" +msgstr "使用者自我介紹" + +#: wp-admin/user-edit.php:627 +msgid "About Yourself" +msgstr "自我介紹" + +#: wp-admin/user-edit.php:556 +msgid "Contact Info" +msgstr "聯絡資訊" + +#: wp-admin/user-edit.php:518 +msgid "Display name publicly as" +msgstr "公開顯示名稱" + +#: wp-admin/user-edit.php:506 +msgid "Nickname" +msgstr "暱稱" + +#: wp-admin/user-edit.php:495 wp-admin/user-new.php:556 +msgid "Last Name" +msgstr "姓氏" + +#: wp-admin/user-edit.php:484 wp-admin/user-new.php:552 +msgid "First Name" +msgstr "名字" + +#: wp-admin/user-edit.php:362 +msgid "Enable keyboard shortcuts for comment moderation." +msgstr "啟用審閱留言的鍵盤快速鍵 →" + +#: wp-admin/user-edit.php:304 +msgid "Disable the visual editor when writing" +msgstr "停用編輯器的 [預覽] 模式" + +#: wp-admin/user-edit.php:301 +msgid "Visual Editor" +msgstr "視覺化編輯器" + +#: wp-admin/user-edit.php:296 +msgid "Personal Options" +msgstr "個人化設定" + +#: wp-admin/user-edit.php:219 +msgid "User updated." +msgstr "使用者已更新。" + +#: wp-admin/includes/user.php:597 +msgid "Always use https when visiting the admin" +msgstr "強制使用 https 存取管理頁面" + +#: wp-admin/includes/user.php:596 +msgid "Use https" +msgstr "使用 https" + +#: wp-admin/user-new.php:359 wp-admin/users.php:648 +#: wp-admin/network/user-new.php:94 +msgid "Edit user" +msgstr "編輯使用者" + +#: wp-admin/upload.php:102 wp-admin/upload.php:123 +msgid "Media file restored from the Trash." +msgstr "媒體檔案已從回收桶還原。" + +#: wp-admin/upload.php:79 wp-admin/upload.php:118 +msgid "Media file moved to the Trash." +msgstr "媒體檔案已移至回收桶。" + +#: wp-admin/upload.php:62 wp-admin/upload.php:116 +msgid "Media file permanently deleted." +msgstr "媒體檔案已永久刪除。" + +#: wp-admin/edit-tags.php:137 wp-admin/options.php:85 +msgid "Sorry, you are not allowed to delete these items." +msgstr "很抱歉,目前的登入身分沒有刪除這些項目的權限。" + +#: wp-admin/upgrade.php:89 +msgid "Your WordPress database is already up to date!" +msgstr "這個網站的 WordPress 資料庫已是最新狀態!" + +#. translators: %s: File name. +#: wp-admin/update.php:323 +msgid "Installing theme from uploaded file: %s" +msgstr "正在安裝上傳的佈景主題檔案 %s" + +#: wp-admin/theme-install.php:59 wp-admin/theme-install.php:177 +#: wp-admin/theme-install.php:179 wp-admin/update.php:316 +msgid "Upload Theme" +msgstr "上傳佈景主題" + +#. translators: %s: Theme name and version. +#: wp-admin/update.php:291 +msgid "Installing Theme: %s" +msgstr "正在安裝佈景主題: %s" + +#. translators: %s: File name. +#: wp-admin/update.php:171 +msgid "Installing plugin from uploaded file: %s" +msgstr "正在安裝上傳的外掛檔案 %s" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:121 +#: wp-admin/plugin-install.php:154 wp-admin/update.php:164 +msgid "Upload Plugin" +msgstr "上傳外掛" + +#. translators: %s: Plugin name and version. +#: wp-admin/update.php:135 +msgid "Installing Plugin: %s" +msgstr "正在安裝外掛: %s" + +#: wp-admin/update.php:96 +msgid "Plugin failed to reactivate due to a fatal error." +msgstr "由於發生嚴重錯誤,導致外掛無法重新啟用。" + +#: wp-admin/update.php:92 +msgid "Plugin reactivated successfully." +msgstr "外掛已成功重新啟用。" + +#: wp-admin/update.php:90 +msgid "Plugin Reactivation" +msgstr "外掛重新啟用" + +#: wp-admin/includes/class-wp-automatic-updater.php:526 +#: wp-admin/update-core.php:913 wp-admin/js/updates.js:863 +#: wp-admin/js/updates.js:1891 +msgid "Installation failed." +msgstr "安裝失敗。" + +#. translators: %s: WordPress version. +#: wp-admin/update-core.php:529 wp-admin/update-core.php:538 +msgid "Compatibility with WordPress %s: Yes (according to its author)" +msgstr "與 WordPress %s 版的相容性: 相容 (依據開發者所言)" + +#: wp-admin/update-core.php:211 +msgid "Hide hidden updates" +msgstr "不顯示隱藏的更新" + +#: wp-admin/update-core.php:210 wp-admin/update-core.php:229 +msgid "Show hidden updates" +msgstr "顯示隱藏的更新" + +#: wp-admin/update-core.php:177 +msgid "Bring back this update" +msgstr "還原這項更新" + +#: wp-admin/update-core.php:175 +msgid "Hide this update" +msgstr "隱藏這項更新" + +#: wp-admin/themes.php:675 +msgid "Broken Themes" +msgstr "不完整的佈景主題" + +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-themes-list-table.php:234 +msgid "" +"You are about to delete this theme '%s'\n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"即將刪除 %s 這個佈景主題。\n" +"點擊 [取消] 以停止操作,點擊 [確定] 以進行刪除。" + +#: wp-admin/themes.php:292 wp-admin/network/themes.php:412 +msgid "Theme deleted." +msgstr "佈景主題已刪除。" + +#: wp-admin/theme-editor.php:292 +msgid "Select theme to edit:" +msgstr "選取需要編輯的佈景主題:" + +#: wp-admin/theme-editor.php:22 +msgid "Edit Themes" +msgstr "編輯佈景主題" + +#: wp-admin/includes/theme.php:1052 wp-admin/themes.php:1247 +msgid "Tags:" +msgstr "標籤:" + +#. translators: %s: Post title. +#: wp-admin/revision.php:110 +msgid "Compare Revisions of “%s”" +msgstr "比較〈%s〉的內容修訂" + +#: wp-admin/post.php:143 +msgid "You cannot edit this item because it is in the Trash. Please restore it and try again." +msgstr "無法編輯回收桶中的項目。如需編輯這個項目,請將它還原後再試一次。" + +#: wp-admin/edit-tags.php:173 wp-admin/includes/class-wp-screen.php:299 +#: wp-admin/includes/post.php:2160 wp-admin/media-upload.php:47 +#: wp-admin/post.php:20 wp-admin/post.php:47 wp-admin/post.php:139 +#: wp-admin/term.php:43 +msgid "Sorry, you are not allowed to edit this item." +msgstr "很抱歉,目前的登入身分沒有編輯這個項目的權限。" + +#: wp-admin/edit-tags.php:160 wp-admin/edit-tags.php:180 wp-admin/post.php:127 +#: wp-admin/term.php:31 +msgid "You attempted to edit an item that does not exist. Perhaps it was deleted?" +msgstr "目前嘗試編輯不存在的項目,原因是這個項目之前便已遭刪除。" + +#: wp-admin/includes/class-wp-plugins-list-table.php:425 +msgid "No plugins found." +msgstr "找不到符合條件的外掛。" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:531 +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "未啟用 (%s)" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:523 +msgid "Recently Active (%s)" +msgid_plural "Recently Active (%s)" +msgstr[0] "近 7 日內停用 (%s)" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:515 +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "已啟用 (%s)" + +#. translators: %s: Number of plugins. +#: wp-admin/includes/class-wp-plugins-list-table.php:506 +msgctxt "plugins" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:685 +msgid "Clear List" +msgstr "清除清單" + +#: wp-admin/includes/class-wp-plugins-list-table.php:1226 +msgid "Visit plugin site" +msgstr "造訪外掛網站" + +#: wp-admin/includes/class-wp-plugins-list-table.php:827 +msgid "Network Deactivate" +msgstr "於多站網路中停用" + +#. translators: %s: Error message. +#: wp-admin/plugins.php:716 +msgid "Plugin could not be deleted due to an error: %s" +msgstr "外掛無法刪除。錯誤原因: %s" + +#: wp-admin/plugins.php:682 +msgid "Plugin could not be activated because it triggered a fatal error." +msgstr "由於啟用這個外掛會觸發嚴重錯誤,因此外掛並未啟用。" + +#. translators: %s: WP_PLUGIN_DIR constant value. +#: wp-admin/plugins.php:582 +msgid "If something goes wrong with a plugin and you cannot use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated." +msgstr "如果因外掛發生錯誤導致 WordPress 無法正常運作,請刪除或重新命名 %s 目錄中的外掛資料夾或檔案,便能自動停用引發錯誤的外掛。" + +#: wp-admin/plugins.php:565 +msgid "Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here." +msgstr "外掛可以擴充及增強 WordPress 的功能。外掛安裝完畢後,網站管理員可以在這裡進行啟用或停用。" + +#: wp-admin/plugins.php:419 +msgid "No, return me to the plugin list" +msgstr "否,返回外掛清單" + +#: wp-admin/plugins.php:411 +msgid "Yes, delete these files" +msgstr "是,刪除這些檔案" + +#: wp-admin/plugins.php:395 +msgid "Are you sure you want to delete these files?" +msgstr "確定要刪除這些檔案?" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:112 +msgctxt "Plugin Installer" +msgid "Popular" +msgstr "熱門" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:111 +msgctxt "Plugin Installer" +msgid "Featured" +msgstr "精選" + +#: wp-admin/plugin-editor.php:331 wp-admin/theme-editor.php:396 +msgid "Update File" +msgstr "更新檔案" + +#: wp-admin/plugin-editor.php:310 wp-admin/theme-editor.php:370 +msgid "Documentation:" +msgstr "線上說明:" + +#: wp-admin/plugin-editor.php:279 +msgid "Plugin Files" +msgstr "外掛檔案" + +#: wp-admin/plugin-editor.php:256 +msgid "Select plugin to edit:" +msgstr "選取需要編輯的外掛:" + +#: wp-admin/includes/ajax-actions.php:4926 wp-admin/plugin-editor.php:202 +#: wp-admin/theme-editor.php:195 +msgid "File edited successfully." +msgstr "檔案已完成編輯。" + +#: wp-admin/includes/file.php:502 wp-admin/plugin-editor.php:131 +msgid "Files of this type are not editable." +msgstr "無法編輯這個類型的檔案。" + +#: wp-admin/plugin-editor.php:22 +msgid "Edit Plugins" +msgstr "編輯外掛" + +#: wp-admin/options.php:383 +msgid "All Settings" +msgstr "全部設定" + +#: wp-admin/options-writing.php:45 wp-admin/options-writing.php:215 +msgid "Update Services" +msgstr "更新服務" + +#: wp-admin/options-writing.php:186 +msgid "Default Mail Category" +msgstr "電子郵件發佈文章預設分類" + +#: wp-admin/options-writing.php:166 +msgid "Login Name" +msgstr "登入使用者名稱" + +#: wp-admin/options-writing.php:161 +msgid "Port" +msgstr "通訊埠" + +#: wp-admin/options-writing.php:159 +msgid "Mail Server" +msgstr "電子郵件伺服器" + +#. translators: 1, 2, 3: Examples of random email addresses. +#: wp-admin/options-writing.php:149 +msgid "To post to WordPress by email, you must set up a secret email account with POP3 access. Any mail received at this address will be posted, so it’s a good idea to keep this address very secret. Here are three random strings you could use: %1$s, %2$s, %3$s." +msgstr "網站管理員必須先建立一個可透過 POP 3 通訊協定存取的秘密電子郵件帳號,才能透過電子郵件發佈文章至 WordPress 網站。由於任何傳送至這個電子郵件地址的郵件內容都會發佈為網站文章,所以務必對這個電子郵件地址嚴加保密。網站管理員可使用系統產生的 3 組隨機字串建立電子郵件帳號: %1$s、%2$s、%3$s。" + +#: wp-admin/options-writing.php:144 +msgid "Post via email" +msgstr "透過電子郵件發佈文章" + +#: wp-admin/options-writing.php:116 +msgid "Default Link Category" +msgstr "預設連結分類" + +#: wp-admin/options-writing.php:82 +msgid "Default Post Category" +msgstr "預設文章分類" + +#: wp-admin/options-writing.php:77 +msgid "WordPress should correct invalidly nested XHTML automatically" +msgstr "自動更正無效的巢狀 XHTML 語法" + +#: wp-admin/options-writing.php:76 +msgid "Convert emoticons like :-) and :-P to graphics on display" +msgstr "自動在顯示時將 :-):-P 這類表情符號轉換成圖片" + +#: wp-admin/options-writing.php:70 +msgid "Formatting" +msgstr "格式化" + +#: wp-admin/options-writing.php:17 +msgid "Writing Settings" +msgstr "寫作設定" + +#: wp-admin/options-reading.php:68 +msgid "Encoding for pages and feeds" +msgstr "頁面及資訊提供的編碼方式" + +#: wp-admin/options-reading.php:194 +msgid "Full text" +msgstr "完整內容" + +#: wp-admin/options-reading.php:184 +msgid "Syndication feeds show the most recent" +msgstr "資訊提供中的近期文章顯示數量" + +#: wp-admin/options-reading.php:180 +msgid "posts" +msgstr "篇文章" + +#: wp-admin/options-reading.php:178 +msgid "Blog pages show at most" +msgstr "網站文章頁面每頁文章顯示數量" + +#: wp-admin/options-reading.php:149 +msgid "Warning: these pages should not be the same!" +msgstr "警告: 不同的靜態頁面必須設定為不同的頁面。" + +#. translators: %s: Select field to choose the page for posts. +#: wp-admin/options-reading.php:130 +msgid "Posts page: %s" +msgstr "文章頁面: %s" + +#. translators: %s: URL to Pages screen. +#: wp-admin/options-reading.php:102 +msgid "A static page (select below)" +msgstr "靜態頁面 (請於下方進行設定)" + +#: wp-admin/options-reading.php:17 +msgid "Reading Settings" +msgstr "閱讀設定" + +#: wp-admin/options-privacy.php:191 +msgid "Privacy Settings" +msgstr "隱私權設定" + +#. translators: %s: web.config +#: wp-admin/options-permalink.php:533 +msgid "If you temporarily make your site’s root directory writable to generate the %s file automatically, do not forget to revert the permissions after the file has been created." +msgstr "如果網站管理員暫時將網站根目錄設定為可寫入狀態,讓系統可以自動產生 %s 檔案,請記得在檔案順利產生後將權限變更回之前的設定。" + +#. translators: %s: web.config +#: wp-admin/options-permalink.php:501 +msgid "If you temporarily make your %s file writable to generate rewrite rules automatically, do not forget to revert the permissions after the rule has been saved." +msgstr "如果網站管理員暫時將 %s 檔案設定為可寫入狀態,讓系統可以自動產生重新寫入規則,請記得在儲存檔案後將權限變更回之前的設定。" + +#: wp-admin/options-permalink.php:443 +msgid "Tag base" +msgstr "標籤目錄起點" + +#. translators: Prefix for category permalinks. +#: wp-admin/options-permalink.php:423 +msgid "Category base" +msgstr "分類目錄起點" + +#: wp-admin/options-permalink.php:361 +msgid "Custom Structure" +msgstr "自訂結構" + +#: wp-admin/options-permalink.php:264 +msgid "Numeric" +msgstr "純數值" + +#: wp-admin/options-permalink.php:258 +msgid "Month and name" +msgstr "月份與文章名稱" + +#: wp-admin/options-permalink.php:252 +msgid "Day and name" +msgstr "日期與文章名稱" + +#: wp-admin/options-permalink.php:176 +msgid "Permalink structure updated." +msgstr "永久連結結構已更新。" + +#. translators: %s: web.config +#: wp-admin/options-permalink.php:189 +msgid "Permalink structure updated. Remove write access on %s file now!" +msgstr "永久連結結構已更新。請立即移除 %s 檔案的寫入權限!" + +#: wp-admin/options-permalink.php:17 wp-admin/options-permalink.php:33 +msgid "Permalink Settings" +msgstr "永久連結設定" + +#: wp-admin/options-media.php:151 +msgid "Organize my uploads into month- and year-based folders" +msgstr "為上傳的檔案建立以年份及月份命名的資料夾" + +#: wp-admin/options-media.php:140 +msgid "Configuring this is optional. By default, it should be blank." +msgstr "這是選用設定,預設值為空。" + +#: wp-admin/options-media.php:138 +msgid "Full URL path to files" +msgstr "檔案的完整網址" + +#: wp-admin/options-media.php:126 +msgid "Store uploads in this folder" +msgstr "在這個資料夾儲存上傳的檔案" + +#: wp-admin/options-media.php:114 +msgid "Uploading Files" +msgstr "上傳檔案" + +#: wp-admin/options-media.php:86 +msgid "Large size" +msgstr "大型尺寸" + +#: wp-admin/options-media.php:81 wp-admin/options-media.php:93 +msgid "Max Height" +msgstr "最大高度" + +#: wp-admin/options-media.php:78 wp-admin/options-media.php:90 +msgid "Max Width" +msgstr "最大寬度" + +#: wp-admin/options-media.php:74 +msgid "Medium size" +msgstr "中型尺寸" + +#: wp-admin/options-media.php:70 +msgid "Crop thumbnail to exact dimensions (normally thumbnails are proportional)" +msgstr "將縮圖裁剪至與上方設定完全相符的尺寸 (注意事項: 不啟用這項設定時,縮圖由原始圖片依據等比例縮放方式產生)" + +#: wp-admin/options-media.php:59 +msgid "Thumbnail size" +msgstr "縮圖尺寸" + +#: wp-admin/options-media.php:55 +msgid "Image sizes" +msgstr "圖片尺寸" + +#: wp-admin/options-media.php:17 +msgid "Media Settings" +msgstr "媒體設定" + +#: wp-admin/options-general.php:577 +msgid "Week Starts On" +msgstr "每週開始日" + +#: wp-admin/options-general.php:513 wp-admin/options-general.php:558 +msgid "Custom:" +msgstr "自訂:" + +#: wp-admin/options-general.php:451 +msgid "This timezone is currently in standard time." +msgstr "這個網站設定的時區目前使用標準時間。" + +#: wp-admin/includes/class-wp-debug-data.php:185 +#: wp-admin/options-general.php:401 +msgid "Timezone" +msgstr "時區" + +#: wp-admin/options-general.php:305 +msgid "New User Default Role" +msgstr "新使用者的預設使用者角色" + +#: wp-admin/options-general.php:300 +msgid "Anyone can register" +msgstr "任何人均可註冊" + +#: wp-admin/options-general.php:294 +msgid "Membership" +msgstr "成員資格" + +#: wp-admin/options-general.php:20 +msgid "General Settings" +msgstr "一般設定" + +#: wp-admin/options-discussion.php:278 +msgid "MonsterID (Generated)" +msgstr "MonsterID (自動產生)" + +#: wp-admin/options-discussion.php:277 +msgid "Wavatar (Generated)" +msgstr "Wavatar (自動產生)" + +#: wp-admin/options-discussion.php:276 +msgid "Identicon (Generated)" +msgstr "Identicon (自動產生)" + +#: wp-admin/options-discussion.php:275 +msgid "Gravatar Logo" +msgstr "Gravatar 個人頭像標誌" + +#: wp-admin/options-discussion.php:274 +msgid "Blank" +msgstr "空白個人頭像" + +#: wp-admin/options-discussion.php:268 +msgid "For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their email address." +msgstr "針對沒有個人頭像的使用者,這個網站可以為他們顯示指定的通用標誌或透過他們提供的電子郵件地址產生個人頭像。" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:252 +msgid "X — Even more mature than above" +msgstr "X — 成年使用者才適合檢閱的圖片" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:250 +msgid "R — Intended for adult audiences above 17" +msgstr "R — 17 歲 (含) 以上使用者才適合檢閱的圖片" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:248 +msgid "PG — Possibly offensive, usually for audiences 13 and above" +msgstr "PG — 可能令人不悅、13 歲 (含) 以上使用者才適合檢閱的圖片" + +#. translators: Content suitability rating: +#. https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system +#: wp-admin/options-discussion.php:246 +msgid "G — Suitable for all audiences" +msgstr "G — 全年齡使用者均適合檢閱的圖片" + +#: wp-admin/options-discussion.php:238 +msgid "Maximum Rating" +msgstr "個人頭像圖片分級限制" + +#: wp-admin/options-discussion.php:234 +msgid "Show Avatars" +msgstr "顯示個人頭像" + +#: wp-admin/options-discussion.php:230 +msgid "Avatar Display" +msgstr "個人頭像顯示方式" + +#: wp-admin/options-discussion.php:214 +msgid "Avatars" +msgstr "個人頭像" + +#: wp-admin/options-discussion.php:205 +msgid "When a comment contains any of these words in its content, author name, URL, email, IP address, or browser’s user agent string, it will be put in the Trash. One word or IP address per line. It will match inside words, so “press” will match “WordPress”." +msgstr "請在下方欄位中一行輸入一個關鍵字或 IP 位址,一旦留言內容、留言者的姓名、網址、電子郵件地址、IP 位址或瀏覽器使用者代理程式字串包含欄位中的任一文字,系統便會將這則留言判定為垃圾留言。系統同時會比對單字內的組成字元,因此在下方欄位中輸入 press 的話,系統會依據比對結果將內容包含 WordPress 的留言判定為垃圾留言。" + +#: wp-admin/options-discussion.php:195 +msgid "When a comment contains any of these words in its content, author name, URL, email, IP address, or browser’s user agent string, it will be held in the moderation queue. One word or IP address per line. It will match inside words, so “press” will match “WordPress”." +msgstr "請在下方欄位中一行輸入一個關鍵字或 IP 位址,一旦留言內容、留言者的姓名、網址、電子郵件地址、IP 位址或瀏覽器使用者代理程式字串包含欄位中的任一文字,系統便會將這則留言判定為待審閱留言。系統同時會比對單字內的組成字元,因此在下方欄位中輸入 press 的話,系統會依據比對結果將內容包含 WordPress 的留言判定為待審閱留言。" + +#. translators: %s: Number of links. +#: wp-admin/options-discussion.php:189 +msgid "Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)" +msgstr "當一則留言內包含 %s 個 (含) 以上的連結時,系統便會判定這則留言為待審閱留言。垃圾留言的特徵就是通常會包含大量超連結。" + +#: wp-admin/options-discussion.php:181 +msgid "Comment Moderation" +msgstr "觸發留言審閱的條件" + +#: wp-admin/options-discussion.php:178 +msgid "Comment author must have a previously approved comment" +msgstr "留言者必須曾發佈留言且留言已通過審核" + +#: wp-admin/options-discussion.php:170 +msgid "Before a comment appears" +msgstr "留言顯示於網站前端的條件" + +#: wp-admin/options-discussion.php:162 +msgid "A comment is held for moderation" +msgstr "有留言等候相關站務人員審閱的時候" + +#: wp-admin/options-discussion.php:158 +msgid "Anyone posts a comment" +msgstr "有人發佈留言時" + +#: wp-admin/options-discussion.php:152 +msgid "Email me whenever" +msgstr "電子郵件通知時機" + +#: wp-admin/options-discussion.php:146 +msgid "newer" +msgstr "較新" + +#: wp-admin/options-discussion.php:145 +msgid "older" +msgstr "較舊" + +#: wp-admin/options-discussion.php:73 +msgid "Users must be registered and logged in to comment" +msgstr "使用者必須註冊並完成登入才能發佈留言" + +#: wp-admin/options-discussion.php:69 +msgid "Comment author must fill out name and email" +msgstr "留言者必須填寫 [顯示名稱] 及 [電子郵件地址] 欄位" + +#: wp-admin/options-discussion.php:65 +msgid "Other comment settings" +msgstr "其他留言設定" + +#: wp-admin/edit-form-advanced.php:400 wp-admin/options-discussion.php:16 +msgid "Discussion Settings" +msgstr "討論設定" + +#: wp-admin/includes/class-wp-users-list-table.php:158 +#: wp-admin/includes/deprecated.php:579 +#: wp-admin/includes/class-wp-ms-users-list-table.php:125 +msgid "No users found." +msgstr "找不到符合條件的使用者。" + +#: wp-admin/update-core.php:672 wp-admin/update-core.php:805 +#: wp-admin/update-core.php:1250 wp-admin/update-core.php:1255 +#: wp-admin/network/themes.php:85 +msgid "Update Themes" +msgstr "更新佈景主題" + +#: wp-admin/my-sites.php:139 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:865 +#: wp-admin/network/site-info.php:146 wp-admin/network/site-settings.php:95 +#: wp-admin/network/site-themes.php:181 wp-admin/network/site-users.php:246 +msgid "Visit" +msgstr "造訪" + +#: wp-admin/ms-delete-site.php:13 wp-admin/my-sites.php:13 +#: wp-admin/network/admin.php:17 +msgid "Multisite support is not enabled." +msgstr "尚未啟用多站網路支援。" + +#: wp-admin/menu.php:412 +msgid "Permalinks" +msgstr "永久連結" + +#: wp-admin/about.php:59 wp-admin/contribute.php:46 wp-admin/credits.php:49 +#: wp-admin/freedoms.php:52 wp-admin/includes/class-wp-site-health.php:2765 +#: wp-admin/menu.php:413 wp-admin/options-privacy.php:22 +#: wp-admin/options-privacy.php:157 wp-admin/privacy-policy-guide.php:40 +#: wp-admin/privacy.php:13 wp-admin/privacy.php:33 wp-admin/privacy.php:46 +msgid "Privacy" +msgstr "隱私權" + +#: wp-admin/menu.php:409 +msgid "Reading" +msgstr "閱讀" + +#: wp-admin/menu.php:408 +msgid "Writing" +msgstr "寫作" + +#: wp-admin/menu.php:406 +msgctxt "settings screen" +msgid "General" +msgstr "一般" + +#: wp-admin/menu.php:342 wp-admin/menu.php:354 wp-admin/menu.php:357 +#: wp-admin/user-edit.php:41 wp-admin/user/menu.php:19 +msgid "Profile" +msgstr "個人資料" + +#. translators: %s: Number of comments. +#: wp-admin/menu.php:107 +msgid "Comments %s" +msgstr "留言 %s" + +#: wp-admin/maint/repair.php:187 +msgid "Repair and Optimize Database" +msgstr "修復並最佳化資料庫" + +#: wp-admin/maint/repair.php:185 +msgid "Repair Database" +msgstr "修復資料庫" + +#. translators: %s: URL to "Fixing WordPress" forum. +#: wp-admin/maint/repair.php:161 +msgid "Some database problems could not be repaired. Please copy-and-paste the following list of errors to the WordPress support forums to get additional assistance." +msgstr "無法修復某些資料庫問題。請複製下列錯誤內容,並在 WordPress 技術支援論壇的新討論串中貼上以取得協助。" + +#: wp-admin/maint/repair.php:20 +msgid "WordPress › Database Repair" +msgstr "WordPress › 資料庫修復" + +#: wp-admin/link.php:120 +msgid "Link not found." +msgstr "找不到符合條件的連結。" + +#: wp-admin/includes/class-wp-links-list-table.php:83 +msgid "No links found." +msgstr "找不到符合條件的連結。" + +#: wp-admin/link-manager.php:139 +msgid "Search Links" +msgstr "搜尋連結" + +#. translators: %s: Number of links. +#: wp-admin/link-manager.php:124 +msgid "%s link deleted." +msgid_plural "%s links deleted." +msgstr[0] "%s 個連結已刪除。" + +#: wp-admin/install.php:445 +msgid "Success!" +msgstr "大功告成!" + +#: wp-admin/install.php:389 +msgid "Please provide the following information. Do not worry, you can always change these settings later." +msgstr "請提供下列資訊。不必擔心,這些設定均可於安裝完成後進行變更。" + +#: wp-admin/install.php:388 +msgid "Information needed" +msgstr "安裝網站所需資訊" + +#: wp-admin/install.php:209 +msgid "Install WordPress" +msgstr "安裝 WordPress" + +#: wp-admin/install.php:180 +msgid "Double-check your email address before continuing." +msgstr "繼續操作前,請再次確認填寫的電子郵件地址。" + +#: wp-admin/install.php:178 +msgid "Your Email" +msgstr "電子郵件地址" + +#: wp-admin/install.php:121 +msgid "User(s) already exists." +msgstr "使用者已存在。" + +#: wp-admin/install.php:72 +msgid "WordPress › Installation" +msgstr "WordPress › 安裝" + +#: wp-admin/includes/user.php:207 +msgid "Error: Please enter an email address." +msgstr "錯誤: 請輸入電子郵件地址。" + +#: wp-admin/includes/user.php:178 +msgid "Error: Passwords may not contain the character \"\\\"." +msgstr "錯誤: 密碼不能包含 \\ 字元。" + +#: wp-admin/includes/user.php:173 +msgid "Error: Please enter a password." +msgstr "錯誤: 請輸入密碼。" + +#. translators: Default post slug. +#: wp-admin/includes/upgrade.php:249 wp-admin/includes/upgrade.php:529 +msgctxt "Default post slug" +msgid "hello-world" +msgstr "hello-world" + +#: wp-admin/includes/upgrade.php:247 +msgid "Hello world!" +msgstr "網站第一篇文章" + +#. translators: %s: Site link. +#. translators: First post content. %s: Site link. +#: wp-admin/includes/schema.php:1333 wp-admin/includes/upgrade.php:220 +msgid "Welcome to %s. This is your first post. Edit or delete it, then start writing!" +msgstr "歡迎使用《%s》。這是這個網站的第一篇文章。試試為這篇文章進行編輯或直接刪除,然後開始撰寫新文章!" + +#. translators: Default category slug. +#: wp-admin/includes/upgrade.php:184 +msgctxt "Default category slug" +msgid "Uncategorized" +msgstr "Uncategorized" + +#: wp-admin/includes/upgrade.php:113 +msgid "Note that password carefully! It is a random password that was generated just for you." +msgstr "請小心記下密碼!這是個人專屬的隨機密碼。" + +#: wp-admin/includes/update.php:887 +msgid "An automated WordPress update has failed to complete! Please notify the site administrator." +msgstr "無法完成 WordPress 自動更新,請通知這個網站的網站管理員。" + +#. translators: %s: URL to WordPress Updates screen. +#: wp-admin/includes/update.php:883 +msgid "An automated WordPress update has failed to complete - please attempt the update again now." +msgstr "無法完成 WordPress 自動更新,請再嘗試更新一次。" + +#. translators: %s: WordPress version number, or 'Latest' string. +#: wp-admin/includes/update.php:375 +msgid "Latest" +msgstr "最新版本" + +#. translators: %s: WordPress version number, or 'Latest' string. +#: wp-admin/includes/update.php:375 +msgid "Update to %s" +msgstr "更新至 %s" + +#. translators: 1: WordPress version number, 2: URL to WordPress Updates +#. screen. +#: wp-admin/includes/update.php:272 +msgid "You are using a development version (%1$s). Cool! Please stay updated." +msgstr "這個網站使用的是開發中的 %1$s 版。感謝協助測試,請隨時保持更新。" + +#: wp-admin/includes/update-core.php:1626 +msgid "Upgrading database…" +msgstr "正在更新資料庫..." + +#: wp-admin/includes/update-core.php:1142 +msgid "The update could not be unpacked" +msgstr "更新套件無法解壓縮。" + +#: wp-admin/includes/update-core.php:1124 +msgid "Verifying the unpacked files…" +msgstr "正在驗證解壓縮的檔案..." + +#. translators: 1: WordPress version number, 2: Minimum required MySQL version +#. number, 3: Current MySQL version number. +#: wp-admin/includes/update-core.php:1244 +msgid "The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." +msgstr "由於 WordPress %1$s 需要 MySQL %2$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %3$s 版。" + +#. translators: 1: WordPress version number, 2: Minimum required PHP version +#. number, 3: Current PHP version number. +#: wp-admin/includes/update-core.php:1233 +msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." +msgstr "由於 WordPress %1$s 需要 PHP %2$s 或更新版本,因此無法進行更新。這個網站目前執行的是 %3$s 版。" + +#. translators: 1: WordPress version number, 2: Minimum required PHP version +#. number, 3: Minimum required MySQL version number, 4: Current PHP version +#. number, 5: Current MySQL version number. +#: wp-admin/includes/update-core.php:1220 +msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." +msgstr "由於 WordPress %1$s 需要 PHP %2$s 及 MySQL %3$s 或這兩者的更新版本,因此無法進行更新。這個網站目前執行的是 PHP %4$s 及 MySQL %5$s。" + +#. translators: %s: Theme name. +#: wp-admin/includes/theme.php:104 +msgid "Could not fully remove the theme %s." +msgstr "無法完全移除佈景主題 %s。" + +#: wp-admin/includes/class-wp-upgrader.php:195 wp-admin/includes/theme.php:72 +msgid "Unable to locate WordPress theme directory." +msgstr "無法找到 WordPress 佈景主題目錄。" + +#: wp-admin/includes/class-theme-installer-skin.php:240 +msgid "This theme is already installed." +msgstr "這個佈景主題已安裝。" + +#. translators: %s: Theme version. +#: wp-admin/includes/theme.php:863 wp-admin/theme-install.php:537 +#: wp-admin/themes.php:1089 +msgid "Version: %s" +msgstr "版本: %s" + +#: wp-admin/includes/theme-install.php:197 +msgid "If you have a theme in a .zip format, you may install or update it by uploading it here." +msgstr "請在這裡上傳 ZIP 格式的佈景主題壓縮檔以安裝或更新佈景主題。" + +#: wp-admin/includes/theme-install.php:185 +msgid "Find Themes" +msgstr "尋找佈景主題" + +#: wp-admin/includes/theme.php:324 +msgid "Holiday" +msgstr "節日" + +#: wp-admin/includes/theme.php:318 wp-admin/includes/theme.php:389 +msgid "Subject" +msgstr "用途" + +#: wp-admin/includes/theme.php:345 +msgid "Sticky Post" +msgstr "置頂文章" + +#: wp-admin/includes/theme.php:348 +msgid "Theme Options" +msgstr "佈景主題選項" + +#: wp-admin/includes/theme.php:330 wp-admin/includes/theme.php:388 +msgid "Features" +msgstr "功能" + +#: wp-admin/includes/theme.php:358 +msgid "Right Sidebar" +msgstr "右側資訊欄" + +#: wp-admin/includes/theme.php:357 +msgid "Left Sidebar" +msgstr "左側資訊欄" + +#: wp-admin/includes/theme.php:356 +msgid "Four Columns" +msgstr "四欄" + +#: wp-admin/includes/theme.php:355 +msgid "Three Columns" +msgstr "三欄" + +#: wp-admin/includes/theme.php:354 +msgid "Two Columns" +msgstr "兩欄" + +#: wp-admin/includes/theme.php:353 +msgid "One Column" +msgstr "一欄" + +#: wp-admin/includes/theme-install.php:152 wp-admin/theme-install.php:217 +msgid "Feature Filter" +msgstr "特色篩選條件" + +#: wp-admin/includes/class-wp-screen.php:972 +msgid "Screen Options" +msgstr "顯示項目設定" + +#: wp-admin/widgets-form.php:412 +msgid "Disable accessibility mode" +msgstr "停用無障礙模式" + +#: wp-admin/widgets-form.php:412 +msgid "Enable accessibility mode" +msgstr "啟用無障礙模式" + +#: wp-admin/update.php:284 +msgid "Install Themes" +msgstr "安裝佈景主題" + +#: wp-admin/includes/template.php:1043 +msgid "Upload file and import" +msgstr "上傳檔案並匯入" + +#. translators: %s: Maximum allowed file size. +#: wp-admin/includes/template.php:1036 +msgid "Maximum size: %s" +msgstr "檔案大小上限: %s" + +#: wp-admin/includes/template.php:1034 +msgid "Choose a file from your computer:" +msgstr "從個人裝置選取檔案:" + +#: wp-admin/includes/template.php:1018 +msgid "Before you can upload your import file, you will need to fix the following error:" +msgstr "在上傳匯入檔案前,必須先修正下列錯誤:" + +#: wp-admin/includes/template.php:779 +msgid "Add Custom Field" +msgstr "新增自訂欄位" + +#: wp-admin/includes/template.php:764 +msgid "Enter new" +msgstr "輸入新的欄位名稱" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/template.php:665 +msgid "Key" +msgstr "索引碼" + +#. translators: %s: Comment author, filled by Ajax. +#: wp-admin/includes/template.php:570 +msgid "Comment by %s marked as spam." +msgstr "由「%s」發佈的留言已標示為垃圾留言。" + +#. translators: %s: Comment author, filled by Ajax. +#: wp-admin/includes/template.php:561 +msgid "Comment by %s moved to the Trash." +msgstr "由「%s」發佈的留言已移至回收桶。" + +#: wp-admin/includes/template.php:510 +msgid "Submit Reply" +msgstr "送出回覆" + +#: wp-admin/includes/template.php:463 +msgid "Reply to Comment" +msgstr "回覆這則留言" + +#: wp-admin/includes/class-wp-posts-list-table.php:1214 +msgid "Missed schedule" +msgstr "已錯過排程" + +#: wp-admin/includes/class-wp-posts-list-table.php:2043 +msgid "Make this post sticky" +msgstr "將這篇文章置頂" + +#: wp-admin/includes/class-wp-posts-list-table.php:2035 +msgid "Not Sticky" +msgstr "取消置頂" + +#: wp-admin/includes/class-wp-posts-list-table.php:1971 +msgid "Allow Pings" +msgstr "開放內容更新通知" + +#: wp-admin/includes/class-wp-posts-list-table.php:1962 +msgid "Allow Comments" +msgstr "開放留言" + +#: wp-admin/includes/class-wp-posts-list-table.php:1933 +#: wp-admin/includes/class-wp-posts-list-table.php:1946 +msgid "Do not allow" +msgstr "不開放" + +#. translators: Between password field and private checkbox on post quick edit +#. interface. +#: wp-admin/includes/class-wp-posts-list-table.php:1788 +msgid "–OR–" +msgstr "– 或 –" + +#: wp-admin/includes/class-wp-posts-list-table.php:1745 +#: wp-admin/includes/class-wp-posts-list-table.php:1848 +#: wp-admin/includes/class-wp-posts-list-table.php:1888 +#: wp-admin/includes/class-wp-posts-list-table.php:1931 +#: wp-admin/includes/class-wp-posts-list-table.php:1944 +#: wp-admin/includes/class-wp-posts-list-table.php:1990 +#: wp-admin/includes/class-wp-posts-list-table.php:2033 +#: wp-admin/includes/class-wp-posts-list-table.php:2058 +msgid "— No Change —" +msgstr "— 不變更 —" + +#: wp-admin/includes/class-wp-posts-list-table.php:1685 +msgid "Bulk Edit" +msgstr "批次編輯" + +#: wp-admin/includes/class-wp-links-list-table.php:141 +msgid "Relationship" +msgstr "連結關係" + +#: wp-admin/includes/class-wp-comments-list-table.php:501 +#: wp-admin/includes/class-wp-post-comments-list-table.php:26 +msgctxt "column name" +msgid "Comment" +msgstr "留言資訊" + +#. translators: Column name. +#: wp-admin/includes/class-wp-media-list-table.php:412 +msgctxt "column name" +msgid "Date" +msgstr "上傳日期" + +#. translators: Column name. +#: wp-admin/includes/class-wp-media-list-table.php:368 +#: wp-admin/includes/class-wp-media-list-table.php:431 +msgctxt "column name" +msgid "File" +msgstr "檔案名稱" + +#. translators: Posts screen column name. +#: wp-admin/includes/class-wp-posts-list-table.php:663 +msgctxt "column name" +msgid "Title" +msgstr "內容標題" + +#: wp-admin/includes/class-wp-comments-list-table.php:868 +#: wp-admin/includes/class-wp-posts-list-table.php:1507 +#: wp-admin/includes/class-wp-terms-list-table.php:508 +msgid "Quick Edit" +msgstr "快速編輯" + +#: wp-admin/includes/schema.php:1177 +msgid "Warning! Wildcard DNS may not be configured correctly!" +msgstr "警告!DNS 萬用字元記錄並未正確設定!" + +#. translators: %s: Network title. +#: wp-admin/options-general.php:86 +msgid "Just another %s site" +msgstr "全新的繁體中文 WordPress 網站《%s》" + +#. translators: Site tagline. +#: wp-admin/options-general.php:83 +msgid "Just another WordPress site" +msgstr "全新的繁體中文 WordPress 網站" + +#: wp-admin/includes/post.php:763 +msgid "Auto Draft" +msgstr "自動草稿" + +#: wp-admin/includes/post.php:37 wp-admin/includes/post.php:82 +msgid "Sorry, you are not allowed to edit posts as this user." +msgstr "很抱歉,以這個使用者的身分登入時,沒有編輯文章的權限。" + +#: wp-admin/includes/post.php:35 wp-admin/includes/post.php:80 +msgid "Sorry, you are not allowed to edit pages as this user." +msgstr "很抱歉,以這個使用者的身分登入時,沒有編輯頁面的權限。" + +#: wp-admin/includes/plugin.php:1119 +msgid "The plugin does not have a valid header." +msgstr "這個外掛包含無效的標頭。" + +#: wp-admin/includes/plugin.php:1114 +msgid "Plugin file does not exist." +msgstr "外掛檔案不存在。" + +#: wp-admin/includes/plugin.php:1111 +msgid "Invalid plugin path." +msgstr "無效的外掛路徑。" + +#. translators: %s: Comma-separated list of plugin filenames. +#: wp-admin/includes/plugin.php:1051 +msgid "Could not fully remove the plugins %s." +msgstr "無法完全移除外掛 %s。" + +#: wp-admin/includes/plugin.php:886 +msgid "One of the plugins is invalid." +msgstr "其中一個外掛是無效外掛。" + +#: wp-admin/includes/plugin.php:735 +msgid "The plugin generated unexpected output." +msgstr "這個外掛產生未預期的輸出結果。" + +#: wp-admin/includes/plugin-install.php:832 +msgid "Warning: This plugin has not been tested with your current version of WordPress." +msgstr "警告: 這個外掛尚未與這個網站的 WordPress 版本進行相容性測試。" + +#: wp-admin/includes/plugin-install.php:710 +msgid "Average Rating" +msgstr "平均評分" + +#: wp-admin/includes/plugin-install.php:702 +msgid "WordPress.org Plugin Page »" +msgstr "WordPress.org 外掛頁面 »" + +#: wp-admin/includes/plugin-install.php:675 +msgid "Compatible up to:" +msgstr "已測試相容的 WordPress 版本:" + +#. translators: %s: Version number. +#: wp-admin/includes/plugin-install.php:671 +#: wp-admin/includes/plugin-install.php:681 +msgid "%s or higher" +msgstr "%s 或更新版本" + +#: wp-admin/includes/plugin-install.php:668 +msgid "Requires WordPress Version:" +msgstr "WordPress 版本需求:" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:701 +#: wp-admin/includes/plugin-install.php:660 +msgid "Last Updated:" +msgstr "最後更新:" + +#. translators: %s: Number of ratings. +#: wp-admin/includes/plugin-install.php:724 +msgid "(based on %s rating)" +msgid_plural "(based on %s ratings)" +msgstr[0] "(依據 %s 筆評分資訊)" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/plugin-install.php:351 +msgid "Plugin zip file" +msgstr "外掛 ZIP 檔案" + +#: wp-admin/includes/plugin-install.php:345 +msgid "If you have a plugin in a .zip format, you may install or update it by uploading it here." +msgstr "請在這裡上傳 ZIP 格式的外掛壓縮檔以安裝或更新外掛。" + +#: wp-admin/includes/plugin-install.php:319 +#: wp-admin/includes/plugin-install.php:332 +msgid "Search Plugins" +msgstr "搜尋外掛" + +#: wp-admin/includes/plugin-install.php:270 +msgid "You may also browse based on the most popular tags in the Plugin Directory:" +msgstr "透過外掛目錄中最受歡迎的標籤瀏覽相關外掛:" + +#: wp-admin/includes/plugin-install.php:269 +msgid "Popular tags" +msgstr "熱門標籤" + +#: wp-admin/includes/meta-boxes.php:1478 +msgid "(Leave at 0 for no rating.)" +msgstr "(0 代表不評分)" + +#: wp-admin/includes/class-wp-links-list-table.php:143 +#: wp-admin/includes/class-wp-links-list-table.php:157 +#: wp-admin/includes/meta-boxes.php:1467 +msgid "Rating" +msgstr "評分" + +#: wp-admin/includes/meta-boxes.php:1452 +msgid "RSS Address" +msgstr "RSS 位址" + +#: wp-admin/includes/meta-boxes.php:1448 +msgid "Image Address" +msgstr "圖片網址" + +#: wp-admin/includes/meta-boxes.php:1433 +msgid "If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out XFN." +msgstr "如果連結目標為個人,可以使用上方的表單指定連結建立者與連結目標的人際關係。如需進一步了解相關資訊,請參考〈XFN 定義的人際關係〉線上說明。" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1427 +msgid "sweetheart" +msgstr "戀人 (sweetheart)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1424 +msgid "date" +msgstr "交往對象 (date)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1421 +msgid "crush" +msgstr "迷戀對象 (crush)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1418 +msgid "muse" +msgstr "單戀對象 (muse)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1412 +msgid "romantic" +msgstr "交往關係" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1405 +msgid "spouse" +msgstr "配偶 (spouse)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1402 +msgid "sibling" +msgstr "兄弟姊妹 (sibling)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1399 +msgid "parent" +msgstr "父母 (parent)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1396 +msgid "kin" +msgstr "親戚 (kin)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1393 +msgid "child" +msgstr "子女 (child)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1387 +msgid "family" +msgstr "親屬關係" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1380 +msgid "neighbor" +msgstr "鄰居 (neighbor)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1377 +msgid "co-resident" +msgstr "同住 (co-resident)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1371 +msgid "geographical" +msgstr "地理關係" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1367 +msgid "colleague" +msgstr "同僚 (colleague)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1364 +msgid "co-worker" +msgstr "同事 (co-worker)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1358 +msgid "professional" +msgstr "工作關係" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1354 +msgid "met" +msgstr "曾見過面 (met)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1348 +msgid "physical" +msgstr "現實關係" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1341 +msgid "friend" +msgstr "朋友 (friend)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1338 +msgid "acquaintance" +msgstr "點頭之交 (acquaintance)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1335 +msgid "contact" +msgstr "時有聯絡 (contact)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1329 +msgid "friendship" +msgstr "友誼關係" + +#: wp-admin/includes/meta-boxes.php:1326 +msgid "another web address of mine" +msgstr "使用者擁有的另一個網站的位址 (me)" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1319 +msgid "identity" +msgstr "網站身分識別" + +#. translators: xfn: https://gmpg.org/xfn +#: wp-admin/includes/meta-boxes.php:1316 +msgid "rel:" +msgstr "rel 屬性值:" + +#: wp-admin/includes/meta-boxes.php:1242 +msgid "Choose the target frame for your link." +msgstr "請選取點擊連結後開啟目標頁面的方式。" + +#: wp-admin/includes/meta-boxes.php:1240 +msgid "_none — same window or tab." +msgstr "_none — 在原視窗或原分頁中開啟" + +#: wp-admin/includes/meta-boxes.php:1237 +msgid "_top — current window or tab, with no frames." +msgstr "_top — 在原視窗或原分頁中開啟,但不包含目標頁面的框架" + +#: wp-admin/includes/meta-boxes.php:1234 +msgid "_blank — new window or tab." +msgstr "_blank — 在新視窗或新分頁中開啟" + +#. translators: %s: Link name. +#: wp-admin/includes/class-wp-links-list-table.php:361 +#: wp-admin/includes/meta-boxes.php:1140 +msgid "" +"You are about to delete this link '%s'\n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"即將刪除 [%s] 這個連結。\n" +"點擊 [取消] 以停止操作,點擊 [確定] 以進行刪除。" + +#: wp-admin/includes/meta-boxes.php:1122 +msgid "Keep this link private" +msgstr "將這個連結設定為私密" + +#: wp-admin/includes/meta-boxes.php:1114 +msgid "Visit Link" +msgstr "造訪連結目標頁面" + +#: wp-admin/includes/class-wp-posts-list-table.php:1842 +msgid "Main Page (no parent)" +msgstr "主要頁面 (無上層頁面)" + +#: wp-admin/includes/meta-boxes.php:922 +msgid "Show comments" +msgstr "顯示留言" + +#: wp-admin/includes/meta-boxes.php:790 +msgid "Separate multiple URLs with spaces" +msgstr "請使用空格分隔多個網址" + +#: wp-admin/includes/meta-boxes.php:787 +msgid "Send trackbacks to:" +msgstr "傳送引用通知的目標網址:" + +#: wp-admin/includes/meta-boxes.php:777 +msgid "Already pinged:" +msgstr "已傳送內容更新通知的項目:" + +#: wp-admin/includes/meta-boxes.php:1211 +msgid "New category name" +msgstr "請輸入分類名稱" + +#: wp-admin/includes/meta-boxes.php:246 wp-admin/includes/meta-boxes.php:260 +msgid "Publish immediately" +msgstr "立即發佈" + +#: wp-admin/includes/meta-boxes.php:214 +msgid "Stick this post to the front page" +msgstr "將這篇文章置頂" + +#: wp-admin/edit-form-comment.php:113 wp-admin/export.php:237 +#: wp-admin/export.php:289 wp-admin/includes/meta-boxes.php:104 +msgid "Status:" +msgstr "狀態:" + +#: wp-admin/includes/meta-boxes.php:71 +msgid "Preview Changes" +msgstr "預覽變更" + +#: wp-admin/includes/media.php:2997 +msgid "Link text, e.g. “Ransom Demands (PDF)”" +msgstr "連結文字,例如「WordPress 網站建置規劃 (PDF)」" + +#: wp-admin/includes/media.php:3028 +msgid "Link to image" +msgstr "連結至圖片" + +#: wp-admin/includes/media.php:3023 +msgid "Link Image To:" +msgstr "圖片連結目標:" + +#: wp-admin/includes/media.php:2954 +msgid "Image Caption" +msgstr "圖片說明文字" + +#: wp-admin/includes/media.php:2907 +msgid "Filter »" +msgstr "篩選 »" + +#: wp-admin/includes/media.php:2816 +msgid "All Types" +msgstr "全部類型" + +#. translators: Hidden accessibility text. +#: wp-admin/includes/class-wp-media-list-table.php:350 +#: wp-admin/includes/class-wp-media-list-table.php:354 +#: wp-admin/includes/media.php:2781 +msgid "Search Media" +msgstr "搜尋媒體" + +#: wp-admin/includes/media.php:2715 +msgid "Update gallery settings" +msgstr "更新圖庫設定" + +#: wp-admin/includes/media.php:2694 +msgid "Gallery columns:" +msgstr "圖庫欄位:" + +#: wp-admin/includes/media.php:2679 +msgid "Order:" +msgstr "排序方式:" + +#: wp-admin/includes/media.php:2671 +msgid "Random" +msgstr "隨機" + +#: wp-admin/includes/media.php:2670 +msgid "Date/Time" +msgstr "日期/時間" + +#: wp-admin/includes/media.php:2668 +msgid "Menu order" +msgstr "選單順序" + +#: wp-admin/includes/media.php:2663 +msgid "Order images by:" +msgstr "圖片排序依據:" + +#: wp-admin/includes/media.php:2653 +msgid "Image File" +msgstr "圖片檔案" + +#: wp-admin/includes/media.php:2648 +msgid "Link thumbnails to:" +msgstr "縮圖連結目標:" + +#: wp-admin/includes/media.php:2605 +msgid "Sort Order:" +msgstr "排序方式:" + +#: wp-admin/includes/media.php:2601 +msgid "All Tabs:" +msgstr "全部分頁:" + +#: wp-admin/includes/media.php:2409 wp-admin/includes/media.php:2627 +#: wp-admin/includes/media.php:2933 +msgid "Save all changes" +msgstr "儲存全部設定" + +#: wp-admin/includes/media.php:2379 +msgid "Add media files from your computer" +msgstr "從個人裝置新增媒體檔案" + +#: wp-admin/includes/media.php:1747 wp-admin/includes/media.php:3034 +#: wp-admin/includes/media.php:3040 +msgid "Insert into Post" +msgstr "插入至文章" + +#: wp-admin/includes/media.php:1722 +msgid "Upload date:" +msgstr "上傳日期:" + +#: wp-admin/includes/media.php:1446 +msgid "Location of the uploaded file." +msgstr "已上傳檔案的位置。" + +#: wp-admin/includes/media.php:1503 wp-admin/includes/media.php:3004 +msgid "Alt text for the image, e.g. “The Mona Lisa”" +msgstr "圖片的替代文字,例如「蒙娜麗莎」" + +#: wp-admin/includes/media.php:1306 wp-admin/includes/media.php:1442 +msgid "File URL" +msgstr "檔案網址" + +#: wp-admin/includes/class-wp-debug-data.php:298 +#: wp-admin/includes/class-wp-privacy-policy-content.php:702 +#: wp-admin/includes/media.php:557 wp-admin/includes/template.php:2142 +#: wp-admin/install.php:76 wp-admin/maint/repair.php:24 +#: wp-admin/setup-config.php:116 wp-admin/upgrade.php:84 +msgid "WordPress" +msgstr "WordPress" + +#: wp-admin/includes/media.php:557 +msgid "Uploads" +msgstr "上傳" + +#. translators: %s: Number of attachments. +#: wp-admin/includes/media.php:64 +msgid "Gallery (%s)" +msgstr "圖庫 (%s)" + +#: wp-admin/includes/media.php:19 +msgid "From URL" +msgstr "從網址" + +#: wp-admin/includes/media.php:18 +msgid "From Computer" +msgstr "從個人裝置" + +#: wp-admin/includes/image-edit.php:1161 +msgid "Image saved" +msgstr "圖片已儲存。" + +#: wp-admin/includes/image-edit.php:1021 +msgid "Unable to save the image." +msgstr "無法儲存圖片。" + +#: wp-admin/includes/image-edit.php:969 +msgid "Nothing to save, the image has not changed." +msgstr "由於這張圖片沒有任何變更,因此無須儲存。" + +#: wp-admin/includes/image-edit.php:959 +msgid "Error while saving the scaled image. Please reload the page and try again." +msgstr "儲存已進行縮放處理的圖片時發生錯誤。請重新載入頁面並再試一次。" + +#: wp-admin/includes/image-edit.php:926 +msgid "Unable to create new image." +msgstr "無法產生新圖片。" + +#: wp-admin/includes/image-edit.php:894 +msgid "Image restored successfully." +msgstr "圖片已成功還原。" + +#: wp-admin/includes/image-edit.php:892 +msgid "Image metadata is inconsistent." +msgstr "圖片的中繼資料不一致。" + +#: wp-admin/includes/image-edit.php:887 +msgid "Cannot save image metadata." +msgstr "無法儲存圖片的中繼資料。" + +#: wp-admin/includes/image-edit.php:819 +msgid "Cannot load image metadata." +msgstr "無法載入圖片的中繼資料。" + +#: wp-admin/includes/image-edit.php:315 +msgid "All sizes except thumbnail" +msgstr "除了縮圖外的全部尺寸" + +#: wp-admin/includes/image-edit.php:305 +msgid "All image sizes" +msgstr "全部圖片尺寸" + +#: wp-admin/includes/image-edit.php:301 +msgid "Apply changes to:" +msgstr "設定套用目標:" + +#: wp-admin/includes/image-edit.php:297 +msgid "Current thumbnail" +msgstr "目前縮圖" + +#: wp-admin/includes/image-edit.php:283 +msgid "Thumbnail Settings" +msgstr "縮圖設定" + +#: wp-admin/includes/image-edit.php:230 +msgid "Selection:" +msgstr "保留範圍:" + +#: wp-admin/includes/image-edit.php:210 +msgid "Aspect ratio:" +msgstr "外觀比例:" + +#: wp-admin/includes/image-edit.php:205 +msgid "Crop Selection" +msgstr "裁剪保留範圍" + +#: wp-admin/includes/image-edit.php:202 +msgid "Crop Aspect Ratio" +msgstr "裁剪外觀比例" + +#: wp-admin/includes/image-edit.php:184 +msgid "Restore image" +msgstr "還原圖片" + +#: wp-admin/includes/image-edit.php:179 +msgid "Previously edited copies of the image will not be deleted." +msgstr "這項操作不會刪除之前因編輯圖片所產生的圖片副本。" + +#: wp-admin/includes/image-edit.php:177 +msgid "Discard any changes and restore the original image." +msgstr "捨棄全部變更並還原原始圖片。" + +#: wp-admin/includes/class-custom-background.php:337 +#: wp-admin/includes/class-custom-background.php:341 +msgid "Restore Original Image" +msgstr "還原原始圖片" + +#. translators: %s: Image width and height in pixels. +#: wp-admin/includes/image-edit.php:141 +msgid "Original dimensions %s" +msgstr "原始尺寸: %s" + +#: wp-admin/includes/image-edit.php:126 +msgid "Scale Image" +msgstr "調整圖片尺寸" + +#: wp-admin/includes/image-edit.php:92 +msgid "Flip horizontal" +msgstr "水平翻轉" + +#: wp-admin/includes/image-edit.php:91 +msgid "Flip vertical" +msgstr "垂直翻轉" + +#: wp-admin/includes/image-edit.php:28 wp-admin/includes/image-edit.php:977 +msgid "Image data does not exist. Please re-upload the image." +msgstr "圖片資料不存在。請重新上傳圖片。" + +#: wp-admin/includes/file.php:2660 +msgid "Proceed" +msgstr "繼續" + +#: wp-admin/includes/file.php:2608 +msgid "Connection Type" +msgstr "連線類型" + +#: wp-admin/includes/file.php:2635 +msgid "Private Key:" +msgstr "私密金鑰:" + +#: wp-admin/includes/file.php:2631 +msgid "Public Key:" +msgstr "公開金鑰:" + +#: wp-admin/includes/file.php:2629 +msgid "Authentication Keys" +msgstr "驗證金鑰" + +#: wp-admin/includes/file.php:2587 +msgid "Hostname" +msgstr "主機名稱" + +#: wp-admin/includes/file.php:2553 +msgid "Connection Information" +msgstr "連線資訊" + +#: wp-admin/includes/file.php:2527 +msgid "SSH2" +msgstr "SSH2" + +#: wp-admin/includes/file.php:2524 +msgid "FTPS (SSL)" +msgstr "FTPS (SSL)" + +#: wp-admin/includes/file.php:2521 +msgid "FTP" +msgstr "FTP" + +#: wp-admin/includes/file.php:1887 +msgid "Empty archive." +msgstr "空的壓縮檔。" + +#: wp-admin/includes/file.php:1825 wp-admin/includes/file.php:1984 +#: wp-admin/includes/file.php:2042 wp-admin/includes/update-core.php:1564 +msgid "Could not copy file." +msgstr "無法複製檔案。" + +#: wp-admin/includes/file.php:1820 +msgid "Could not extract file from archive." +msgstr "無法從壓縮檔中解壓縮檔案。" + +#: wp-admin/includes/file.php:1695 wp-admin/includes/file.php:1800 +msgid "Could not retrieve file from archive." +msgstr "無法從壓縮檔中擷取檔案。" + +#: wp-admin/includes/file.php:1163 +msgid "Could not create temporary file." +msgstr "無法建立暫存檔案。" + +#: wp-admin/includes/file.php:933 +msgid "Specified file failed upload test." +msgstr "指定檔案進行上傳測試時發生錯誤。" + +#: wp-admin/includes/file.php:922 +msgid "Invalid form submission." +msgstr "無效的表單資料。" + +#: wp-admin/includes/file.php:908 +msgid "File upload stopped by extension." +msgstr "檔案上傳已由擴充功能停止。" + +#: wp-admin/includes/file.php:907 +msgid "Failed to write file to disk." +msgstr "無法將檔案寫入磁碟。" + +#: wp-admin/includes/file.php:906 +msgid "Missing a temporary folder." +msgstr "找不到暫存資料夾。" + +#: wp-admin/includes/file.php:904 +msgid "No file was uploaded." +msgstr "檔案並未上傳。" + +#: wp-admin/includes/file.php:903 +msgid "The uploaded file was only partially uploaded." +msgstr "上傳的檔案不完整。" + +#: wp-admin/includes/file.php:420 wp-admin/includes/file.php:481 +#: wp-admin/includes/file.php:748 wp-admin/includes/file.php:754 +msgid "Sorry, that file cannot be edited." +msgstr "很抱歉,無法編輯這個檔案。" + +#: wp-admin/includes/file.php:64 +msgid "Popup Comments Template" +msgstr "彈出式留言視窗範本" + +#: wp-admin/includes/file.php:63 +msgid "Comments Template" +msgstr "留言範本" + +#: wp-admin/includes/file.php:60 +msgid ".htaccess (for rewrite rules )" +msgstr ".htaccess (用於重新寫入規則)" + +#: wp-admin/includes/file.php:59 +msgid "my-hacks.php (legacy hacks support)" +msgstr "my-hacks.php (舊式自訂功能支援)" + +#: wp-admin/includes/file.php:46 +msgid "Application Attachment Template" +msgstr "應用程式附件範本" + +#: wp-admin/includes/file.php:45 +msgid "Audio Attachment Template" +msgstr "音訊附件範本" + +#: wp-admin/includes/file.php:44 +msgid "Video Attachment Template" +msgstr "視訊附件範本" + +#: wp-admin/includes/file.php:43 +msgid "Image Attachment Template" +msgstr "圖片附件範本" + +#: wp-admin/includes/file.php:42 +msgid "Attachment Template" +msgstr "附件範本" + +#: wp-admin/includes/file.php:16 +msgid "Theme Functions" +msgstr "佈景主題函式庫" + +#: wp-admin/includes/file.php:23 +msgid "Links Template" +msgstr "連結範本" + +#: wp-admin/includes/file.php:22 +msgid "404 Template" +msgstr "404 錯誤" + +#: wp-admin/includes/file.php:37 +msgid "Single Post" +msgstr "單篇文章" + +#: wp-admin/includes/file.php:21 +msgid "Search Form" +msgstr "搜尋功能" + +#: wp-admin/erase-personal-data.php:150 wp-admin/export-personal-data.php:150 +msgid "Search Requests" +msgstr "搜尋要求" + +#: wp-admin/includes/file.php:30 +msgid "Category Template" +msgstr "分類範本" + +#: wp-admin/includes/file.php:65 +msgid "Popup Comments" +msgstr "彈出式留言視窗" + +#: wp-admin/includes/file.php:57 +msgid "RTL Stylesheet" +msgstr "RTL 樣式表" + +#: wp-admin/includes/file.php:26 +msgid "Main Index Template" +msgstr "主要索引" + +#: wp-admin/includes/dashboard.php:1181 +msgid "This widget requires JavaScript." +msgstr "這個小工具需要 JavaScript。" + +#. translators: 1: Type of comment, 2: Notification if the comment is pending. +#: wp-admin/includes/dashboard.php:908 +msgctxt "dashboard" +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#: wp-admin/includes/dashboard.php:866 wp-admin/includes/dashboard.php:873 +#: wp-admin/includes/dashboard.php:903 wp-admin/includes/dashboard.php:910 +msgid "[Pending]" +msgstr "(待審閱)" + +#. translators: 1: Comment author, 2: Post link, 3: Notification if the comment +#. is pending. +#: wp-admin/includes/dashboard.php:863 +msgid "From %1$s on %2$s %3$s" +msgstr "由「%1$s」於〈%2$s〉發佈 %3$s" + +#: wp-admin/includes/class-wp-comments-list-table.php:846 +#: wp-admin/includes/dashboard.php:801 +msgid "Move this comment to the Trash" +msgstr "將這則留言移至回收桶" + +#. translators: "Mark as spam" link. +#: wp-admin/includes/class-wp-comments-list-table.php:811 +#: wp-admin/includes/dashboard.php:785 +msgctxt "verb" +msgid "Spam" +msgstr "標示為垃圾留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:809 +#: wp-admin/includes/dashboard.php:783 +msgid "Mark this comment as spam" +msgstr "將這則留言標示為垃圾留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:877 +#: wp-admin/includes/dashboard.php:774 +msgid "Reply to this comment" +msgstr "回覆這則留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:774 +#: wp-admin/includes/class-wp-comments-list-table.php:799 +#: wp-admin/includes/dashboard.php:759 +msgid "Unapprove this comment" +msgstr "駁回這則留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:782 +#: wp-admin/includes/class-wp-comments-list-table.php:791 +#: wp-admin/includes/dashboard.php:751 +msgid "Approve this comment" +msgstr "核准這則留言" + +#: wp-admin/includes/dashboard.php:210 +msgid "Configure" +msgstr "設定" + +#: wp-admin/includes/dashboard.php:148 +msgid "View all" +msgstr "檢視全部" + +#: wp-admin/includes/dashboard.php:1608 +msgid "Other WordPress News" +msgstr "其它 WordPress 新聞" + +#: wp-admin/includes/dashboard.php:77 +msgid "Right Now" +msgstr "目前狀況" + +#. translators: %s: Destination file path. +#: wp-admin/includes/file.php:1035 +msgid "The uploaded file could not be moved to %s." +msgstr "無法將上傳的檔案移動至 %s。" + +#: wp-admin/includes/class-file-upload-upgrader.php:57 +#: wp-admin/includes/class-file-upload-upgrader.php:120 +#: wp-admin/includes/class-file-upload-upgrader.php:136 +msgid "Please select a file" +msgstr "請選取檔案" + +#: wp-admin/includes/class-file-upload-upgrader.php:89 +msgid "Return to the Theme Installer" +msgstr "返回 [安裝佈景主題]" + +#. translators: %s: Post title. +#. translators: %s: Theme name. +#: wp-admin/includes/class-wp-posts-list-table.php:1550 +#: wp-admin/includes/class-wp-theme-install-list-table.php:286 +msgid "Preview “%s”" +msgstr "預覽「%s」" + +#. translators: 1: Theme name, 2: Theme version. +#: wp-admin/includes/class-theme-upgrader.php:84 +msgid "Successfully installed the theme %1$s %2$s." +msgstr "佈景主題 %1$s %2$s 已完成安裝。" + +#: wp-admin/includes/class-file-upload-upgrader.php:80 +msgid "Return to the Plugin Installer" +msgstr "返回 [安裝外掛]" + +#. translators: 1: Plugin name, 2: Plugin version. +#: wp-admin/includes/class-plugin-upgrader.php:86 +msgid "Successfully installed the plugin %1$s %2$s." +msgstr "外掛 %1$s %2$s 已成功安裝。" + +#: wp-admin/includes/class-plugin-installer-skin.php:122 +#: wp-admin/includes/class-plugin-upgrader-skin.php:96 +msgid "Activate Plugin" +msgstr "啟用外掛" + +#: wp-admin/includes/class-core-upgrader.php:39 +msgid "Could not copy files." +msgstr "無法複製檔案。" + +#: wp-admin/includes/class-core-upgrader.php:33 +msgid "WordPress is at the latest version." +msgstr "WordPress 已是最新版本。" + +#: wp-admin/includes/class-theme-upgrader.php:82 +msgid "Theme installed successfully." +msgstr "佈景主題已完成安裝。" + +#: wp-admin/includes/class-theme-upgrader.php:77 +msgid "Installing the theme…" +msgstr "正在安裝佈景主題..." + +#: wp-admin/includes/class-theme-upgrader.php:62 +#: wp-admin/includes/class-theme-upgrader.php:79 +msgid "Could not remove the old theme." +msgstr "無法移除舊版佈景主題。" + +#: wp-admin/includes/class-theme-upgrader.php:61 +#: wp-admin/includes/class-theme-upgrader.php:78 +msgid "Removing the old version of the theme…" +msgstr "正在移除舊版佈景主題..." + +#: wp-admin/includes/class-theme-upgrader.php:56 +msgid "The theme is at the latest version." +msgstr "佈景主題已是最新版本。" + +#: wp-admin/includes/class-plugin-upgrader.php:84 +msgid "Plugin installed successfully." +msgstr "外掛已成功安裝。" + +#: wp-admin/includes/class-plugin-upgrader.php:79 +msgid "Installing the plugin…" +msgstr "正在安裝外掛..." + +#: wp-admin/includes/class-plugin-upgrader.php:78 +#: wp-admin/includes/class-theme-upgrader.php:76 +msgid "Unpacking the package…" +msgstr "正在解壓縮安裝套件..." + +#: wp-admin/includes/class-plugin-upgrader.php:75 +#: wp-admin/includes/class-theme-upgrader.php:73 +msgid "Installation package not available." +msgstr "安裝套件無法使用。" + +#: wp-admin/includes/class-plugin-upgrader.php:63 +msgid "Could not remove the old plugin." +msgstr "無法移除舊版外掛。" + +#: wp-admin/includes/class-plugin-upgrader.php:62 +msgid "Removing the old version of the plugin…" +msgstr "正在移除舊版外掛..." + +#: wp-admin/includes/class-core-upgrader.php:38 +#: wp-admin/includes/class-language-pack-upgrader.php:118 +#: wp-admin/includes/class-plugin-upgrader.php:61 +#: wp-admin/includes/class-theme-upgrader.php:60 +msgid "Unpacking the update…" +msgstr "正在解壓縮更新套件..." + +#: wp-admin/includes/class-plugin-upgrader.php:57 +msgid "The plugin is at the latest version." +msgstr "外掛已是最新版本。" + +#: wp-admin/includes/class-wp-upgrader.php:210 +#: wp-admin/includes/update-core.php:1511 +msgid "Disabling Maintenance mode…" +msgstr "正在停用 [網站例行性維護] 模式..." + +#: wp-admin/includes/class-wp-upgrader.php:209 +#: wp-admin/includes/update-core.php:1362 +msgid "Enabling Maintenance mode…" +msgstr "正在啟用 [網站例行性維護] 模式..." + +#: wp-admin/includes/class-file-upload-upgrader.php:82 +#: wp-admin/includes/class-file-upload-upgrader.php:91 +#: wp-admin/includes/file.php:1685 wp-admin/includes/file.php:1883 +msgid "Incompatible Archive." +msgstr "不相容的壓縮檔。" + +#: wp-admin/includes/class-wp-upgrader.php:204 wp-admin/includes/file.php:1771 +#: wp-admin/includes/file.php:1957 wp-admin/includes/file.php:2050 +#: wp-admin/includes/file.php:2133 +msgid "Could not create directory." +msgstr "無法建立目錄。" + +#: wp-admin/includes/class-wp-upgrader.php:203 +msgid "Destination folder already exists." +msgstr "目的資料夾已存在。" + +#: wp-admin/includes/class-wp-upgrader.php:201 +msgid "Installing the latest version…" +msgstr "正在安裝最新版本..." + +#: wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php:63 +#: wp-admin/includes/class-wp-upgrader.php:200 +msgid "Download failed." +msgstr "下載時發生錯誤。" + +#. translators: %s: Directory name. +#: wp-admin/includes/class-wp-upgrader.php:197 +msgid "Unable to locate needed folder (%s)." +msgstr "無法找到必要的資料夾 %s。" + +#: wp-admin/includes/class-wp-site-health.php:1968 +msgid "Unable to locate WordPress content directory" +msgstr "無法找到 WordPress 內容目錄" + +#: wp-admin/includes/class-wp-upgrader.php:194 wp-admin/includes/plugin.php:958 +msgid "Unable to locate WordPress plugin directory." +msgstr "無法找到 WordPress 外掛目錄。" + +#: wp-admin/includes/class-wp-upgrader.php:191 +msgid "Unable to locate WordPress root directory." +msgstr "無法找到 WordPress 根目錄。" + +#: wp-admin/includes/class-wp-upgrader.php:190 wp-admin/includes/plugin.php:952 +#: wp-admin/includes/theme.php:66 +msgid "Filesystem error." +msgstr "檔案系統錯誤。" + +#: wp-admin/includes/class-wp-site-health.php:1959 +msgid "Could not access filesystem" +msgstr "無法存取檔案系統" + +#: wp-admin/includes/class-wp-upgrader.php:188 +msgid "Invalid data provided." +msgstr "無效的資料。" + +#. translators: %s: Command. +#: wp-admin/includes/class-wp-filesystem-ssh2.php:228 +msgid "Unable to perform command: %s" +msgstr "無法執行命令: %s" + +#. translators: %s: Username. +#: wp-admin/includes/class-wp-filesystem-ssh2.php:160 +msgid "Public and Private keys incorrect for %s" +msgstr "%s 的公開金鑰與私密金鑰不正確" + +#. translators: %s: hostname:port +#: wp-admin/includes/class-wp-filesystem-ssh2.php:133 +msgid "Failed to connect to SSH2 Server %s" +msgstr "無法連線至 SSH2 伺服器 %s" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:105 +msgid "SSH2 password is required" +msgstr "SSH2 密碼為必填欄位" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:95 +msgid "SSH2 username is required" +msgstr "SSH2 使用者名稱為必填欄位" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:81 +msgid "SSH2 hostname is required" +msgstr "SSH2 主機名稱為必填欄位" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:69 +msgid "The ssh2 PHP extension is not available" +msgstr "PHP 的 ssh2 擴充功能無法使用" + +#. translators: %s: Username. +#: wp-admin/includes/class-wp-filesystem-ftpext.php:110 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:113 +#: wp-admin/includes/class-wp-filesystem-ssh2.php:147 +msgid "Username/Password incorrect for %s" +msgstr "「%s」的使用者名稱/密碼不正確" + +#. translators: %s: hostname:port +#: wp-admin/includes/class-wp-filesystem-ftpext.php:97 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:87 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:100 +msgid "Failed to connect to FTP Server %s" +msgstr "無法連線至 FTP 伺服器 %s" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:66 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:62 +msgid "FTP password is required" +msgstr "FTP 密碼為必填欄位" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:60 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:56 +msgid "FTP username is required" +msgstr "FTP 使用者名稱為必填欄位" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:53 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:49 +msgid "FTP hostname is required" +msgstr "FTP 主機名稱為必填欄位" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:37 +msgid "The ftp PHP extension is not available" +msgstr "PHP 的 ftp 擴充功能無法使用" + +#. translators: %s: Directory name. +#: wp-admin/includes/class-wp-filesystem-base.php:317 +msgid "Found %s" +msgstr "已找到目錄 %s" + +#. translators: %s: Directory name. +#: wp-admin/includes/class-wp-filesystem-base.php:297 +msgid "Changing to %s" +msgstr "變更至目錄 %s" + +#: wp-admin/includes/bookmark.php:236 +msgid "Could not insert link into the database." +msgstr "無法將連結新增至資料庫。" + +#: wp-admin/includes/bookmark.php:228 +msgid "Could not update link in the database." +msgstr "無法在資料庫中更新連結資料。" + +#: wp-admin/includes/import.php:205 +msgid "Movable Type and TypePad" +msgstr "Movable Type 與 Typepad" + +#: wp-admin/includes/import.php:199 +msgid "LiveJournal" +msgstr "LiveJournal" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:294 +#: wp-admin/includes/class-wp-theme-install-list-table.php:159 +#: wp-admin/setup-config.php:302 wp-admin/theme-install.php:66 +msgid "Try Again" +msgstr "再試一次" + +#: wp-admin/includes/import.php:187 +msgid "Blogger" +msgstr "Blogger" + +#: wp-admin/import.php:102 +msgid "No importers are available." +msgstr "沒有可用的匯入程式。" + +#: wp-admin/export.php:345 +msgid "Download Export File" +msgstr "下載資料匯出檔" + +#: wp-admin/export.php:177 +msgid "This format, which is called WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags." +msgstr "這是稱為 WordPress eXtended RSS 或 WXR 的檔案格式,這個 XML 檔案內包含這個網站的文章、留言、自訂欄位、分類及標籤等內容。" + +#: wp-admin/export.php:176 +msgid "When you click the button below WordPress will create an XML file for you to save to your computer." +msgstr "點擊畫面最下方的按鈕後,WordPress 便會產生一個可供網站管理員儲存至個人裝置的 XML 檔案。" + +#: wp-admin/export.php:20 wp-admin/menu.php:393 +msgid "Export" +msgstr "匯出程式" + +#. translators: %s: Number of posts. +#: wp-admin/includes/class-wp-posts-list-table.php:345 +msgctxt "posts" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#. translators: %s: Number of posts. +#: wp-admin/includes/class-wp-posts-list-table.php:324 +msgctxt "posts" +msgid "Mine (%s)" +msgid_plural "Mine (%s)" +msgstr[0] "屬於目前登入使用者 (%s)" + +#. translators: %s: Number of patterns. +#: wp-admin/edit.php:388 +msgid "%s pattern not updated, somebody is editing it." +msgid_plural "%s patterns not updated, somebody is editing them." +msgstr[0] "由於某個使用者正在進行編輯,所以有 %s 個區塊版面配置未更新。" + +#. translators: %s: Number of posts. +#: wp-admin/edit.php:359 +msgid "%s post updated." +msgid_plural "%s posts updated." +msgstr[0] "%s 篇文章已更新。" + +#: wp-admin/edit-tags.php:117 wp-admin/edit.php:176 wp-admin/post.php:316 +#: wp-admin/themes.php:63 wp-admin/upload.php:333 +msgid "Sorry, you are not allowed to delete this item." +msgstr "很抱歉,目前的登入身分沒有刪除這個項目的權限。" + +#: wp-admin/includes/edit-tag-messages.php:17 +msgid "Item not added." +msgstr "項目並未新增。" + +#: wp-admin/includes/edit-tag-messages.php:16 +msgid "Item updated." +msgstr "項目已更新。" + +#: wp-admin/includes/edit-tag-messages.php:15 +msgid "Item deleted." +msgstr "項目已刪除。" + +#: wp-admin/edit-tag-form.php:198 wp-admin/edit-tags.php:515 +msgid "Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional." +msgstr "分類具備階層架構,這是它與標籤的不同之處。舉例來說,這個網站可以有個〈影集〉分類,而其下還有〈美劇〉及〈日劇〉等子分類,請依實際使用目的規劃分類的階層架構。" + +#: wp-admin/edit-link-form.php:142 +msgid "This will be shown when someone hovers over the link in the blogroll, or optionally below the link." +msgstr "游標暫留於友站連結的連結時會顯示說明內容,或因為符合某些條件 (例如佈景主題設計) 選擇性地出現在連結下方。" + +#: wp-admin/edit-link-form.php:134 +msgid "Example: https://wordpress.org/ — do not forget the https://" +msgstr "範例: https://tw.wordpress.org/ — 輸入網址時請記得包含 http://https://" + +#: wp-admin/edit-link-form.php:131 +msgid "Web Address" +msgstr "網站位址" + +#: wp-admin/edit-link-form.php:126 +msgid "Example: Nifty blogging software" +msgstr "範例: 精美的架站程式" + +#: wp-admin/edit-link-form.php:97 +msgid "Link added." +msgstr "連結已新增。" + +#. translators: %s: URL to Links screen. +#: wp-admin/edit-link-form.php:22 +msgid "Links / Add Link" +msgstr "連結/新增連結" + +#: wp-admin/edit-link-form.php:17 wp-admin/includes/meta-boxes.php:1149 +msgid "Update Link" +msgstr "更新連結" + +#. translators: %s: URL to Links screen. +#: wp-admin/edit-link-form.php:16 +msgid "Links / Edit Link" +msgstr "連結/編輯連結" + +#: wp-admin/themes.php:273 wp-admin/themes.php:282 +msgid "Visit site" +msgstr "造訪網站" + +#: wp-admin/includes/template.php:509 +msgid "Update Comment" +msgstr "更新留言" + +#. translators: 1: Post edited date, 2: Post edited time. +#. translators: 1: Date of last edit, 2: Time of last edit. +#: wp-admin/edit-form-advanced.php:660 wp-admin/includes/ajax-actions.php:2912 +msgid "Last edited on %1$s at %2$s" +msgstr "最後編輯時間: %1$s%2$s" + +#. translators: 1: Name of most recent post author, 2: Post edited date, 3: +#. Post edited time. +#. translators: 1: User's display name, 2: Date of last edit, 3: Time of last +#. edit. +#: wp-admin/edit-form-advanced.php:652 wp-admin/includes/ajax-actions.php:2909 +msgid "Last edited by %1$s on %2$s at %3$s" +msgstr "最後由「%1$s」於 %2$s%3$s 進行編輯" + +#: wp-admin/includes/meta-boxes.php:1626 +msgid "Custom Fields" +msgstr "自訂欄位" + +#: wp-admin/includes/meta-boxes.php:1620 +msgid "Send Trackbacks" +msgstr "傳送引用通知" + +#. translators: %s: Date and time of the revision. +#: wp-admin/edit-form-advanced.php:195 +msgid "Page restored to revision from %s." +msgstr "頁面已從 %s 的內容修訂還原。" + +#: wp-admin/edit-form-advanced.php:182 +msgid "Post saved." +msgstr "文章已儲存。" + +#. translators: %s: Date and time of the revision. +#: wp-admin/edit-form-advanced.php:180 +msgid "Post restored to revision from %s." +msgstr "文章已從 %s 的內容修訂還原。" + +#: wp-admin/edit-form-advanced.php:177 wp-admin/edit-form-advanced.php:192 +msgid "Custom field deleted." +msgstr "自訂欄位已刪除。" + +#: wp-admin/edit-form-advanced.php:176 wp-admin/edit-form-advanced.php:191 +msgid "Custom field updated." +msgstr "自訂欄位已更新。" + +#: wp-admin/includes/class-wp-comments-list-table.php:237 +msgid "No comments found." +msgstr "找不到符合條件的留言。" + +#: wp-admin/includes/class-wp-comments-list-table.php:453 +#: wp-admin/includes/class-wp-media-list-table.php:250 +#: wp-admin/includes/class-wp-posts-list-table.php:606 +msgid "Empty Trash" +msgstr "清空回收桶" + +#: wp-admin/includes/class-wp-comments-list-table.php:453 +msgid "Empty Spam" +msgstr "清空垃圾留言" + +#: wp-admin/includes/class-wp-comments-list-table.php:445 +#: wp-admin/includes/class-wp-links-list-table.php:126 +#: wp-admin/includes/class-wp-media-list-table.php:245 +#: wp-admin/includes/class-wp-posts-list-table.php:599 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:359 +msgid "Filter" +msgstr "篩選" + +#: wp-admin/includes/class-wp-comments-list-table.php:533 +#: wp-admin/includes/class-wp-posts-list-table.php:1942 +msgid "Pings" +msgstr "內容更新通知" + +#: wp-admin/includes/class-wp-comments-list-table.php:389 +#: wp-admin/includes/class-wp-comments-list-table.php:783 +#: wp-admin/includes/class-wp-comments-list-table.php:792 +#: wp-admin/includes/dashboard.php:752 +msgid "Approve" +msgstr "核准" + +#: wp-admin/includes/class-wp-comments-list-table.php:385 +#: wp-admin/includes/class-wp-comments-list-table.php:775 +#: wp-admin/includes/class-wp-comments-list-table.php:800 +#: wp-admin/includes/dashboard.php:760 +msgid "Unapprove" +msgstr "駁回" + +#: wp-admin/edit.php:288 wp-admin/includes/class-wp-list-table.php:602 +msgid "Bulk actions" +msgstr "批次操作" + +#. translators: 1: Starting number of users on the current page, 2: Ending +#. number of users, 3: Total number of users. +#: wp-admin/includes/deprecated.php:614 +msgid "Displaying %1$s–%2$s of %3$s" +msgstr "目前顯示第 %1$s 到 %2$s 頁,總計 %3$s 頁" + +#: wp-admin/edit-comments.php:436 +msgid "Search Comments" +msgstr "搜尋留言" + +#: wp-admin/edit-form-comment.php:117 +msgid "Approved" +msgstr "已核准" + +#. translators: %s: Number of comments. +#: wp-admin/edit-comments.php:386 +msgid "%s comment permanently deleted." +msgid_plural "%s comments permanently deleted." +msgstr[0] "%s 則留言已永久刪除。" + +#. translators: %s: Number of comments. +#: wp-admin/edit-comments.php:356 +msgid "%s comment restored from the spam." +msgid_plural "%s comments restored from the spam." +msgstr[0] "%s 則留言已從垃圾留言還原。" + +#. translators: %s: Number of comments. +#: wp-admin/edit-comments.php:344 +msgid "%s comment marked as spam." +msgid_plural "%s comments marked as spam." +msgstr[0] "%s 則留言已標示為垃圾留言。" + +#. translators: %s: Number of comments. +#: wp-admin/edit-comments.php:334 +msgid "%s comment approved." +msgid_plural "%s comments approved." +msgstr[0] "%s 則留言已核准。" + +#: wp-admin/includes/class-wp-media-list-table.php:218 +#: wp-admin/includes/class-wp-media-list-table.php:657 +#: wp-admin/includes/class-wp-media-list-table.php:891 +msgid "Attach" +msgstr "產生關聯" + +#: wp-admin/includes/class-wp-media-list-table.php:576 +#: wp-admin/includes/class-wp-posts-list-table.php:1194 +msgid "Unpublished" +msgstr "已取消發佈" + +#. translators: %s: Attachment title. +#. translators: %s: Post title. +#: wp-admin/includes/class-wp-media-list-table.php:858 +#: wp-admin/includes/class-wp-posts-list-table.php:1559 +msgid "View “%s”" +msgstr "檢視〈%s〉" + +#: wp-admin/edit-form-comment.php:242 +#: wp-admin/includes/class-wp-comments-list-table.php:839 +#: wp-admin/includes/class-wp-media-list-table.php:843 +#: wp-admin/includes/class-wp-posts-list-table.php:1537 +#: wp-admin/includes/dashboard.php:794 wp-admin/includes/media.php:1753 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:857 +msgid "Delete Permanently" +msgstr "永久刪除" + +#. translators: %s: Link name. +#. translators: %s: Attachment title. +#. translators: %s: Post title. +#. translators: %s: Taxonomy term name. +#: wp-admin/includes/class-wp-links-list-table.php:210 +#: wp-admin/includes/class-wp-media-list-table.php:810 +#: wp-admin/includes/class-wp-posts-list-table.php:1488 +#: wp-admin/includes/class-wp-terms-list-table.php:489 +#: wp-admin/includes/dashboard.php:682 wp-admin/includes/dashboard.php:1050 +msgid "Edit “%s”" +msgstr "編輯〈%s〉" + +#: wp-admin/includes/class-custom-image-header.php:933 +msgid "Choose the part of the image you want to use as your header." +msgstr "請為圖片裁剪出要顯示在頁首的部分。" + +#: wp-admin/includes/class-custom-image-header.php:915 +#: wp-admin/includes/class-custom-image-header.php:1074 +msgid "Image Processing Error" +msgstr "處理圖片時發生錯誤" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-custom-image-header.php:533 +msgid "Header updated. Visit your site to see how it looks." +msgstr "頁首已更新。造訪這個網站以檢視外觀變化。" + +#: wp-admin/includes/class-custom-image-header.php:512 +#: wp-admin/includes/theme.php:336 +msgid "Custom Header" +msgstr "自訂頁首" + +#: wp-admin/includes/dashboard.php:251 wp-admin/includes/template.php:2621 +#: wp-admin/nav-menus.php:930 wp-admin/options.php:458 +msgid "Save Changes" +msgstr "儲存設定" + +#: wp-admin/includes/class-custom-background.php:353 +#: wp-admin/includes/class-custom-image-header.php:663 +msgid "Choose an image from your computer:" +msgstr "從個人裝置選取圖片:" + +#. translators: %s: Home URL. +#: wp-admin/includes/class-custom-background.php:264 +msgid "Background updated. Visit your site to see how it looks." +msgstr "背景已更新。造訪這個網站以檢視外觀變化。" + +#: wp-admin/includes/class-custom-background.php:243 +#: wp-admin/includes/theme.php:334 +msgid "Custom Background" +msgstr "自訂背景" + +#: wp-admin/comment.php:384 +msgid "Unknown action." +msgstr "未知的操作。" + +#: wp-admin/comment.php:148 +msgid "Approve comment" +msgstr "核准留言" + +#: wp-admin/comment.php:147 +msgid "You are about to approve the following comment:" +msgstr "即將核准以下留言:" + +#: wp-admin/comment.php:144 +msgid "Permanently delete comment" +msgstr "永久刪除留言" + +#: wp-admin/comment.php:143 +msgid "You are about to delete the following comment:" +msgstr "即將刪除以下留言:" + +#: wp-admin/comment.php:139 +msgid "You are about to move the following comment to the Trash:" +msgstr "即將移動以下留言至回收桶:" + +#: wp-admin/comment.php:135 +msgid "You are about to mark the following comment as spam:" +msgstr "即將標示以下留言為垃圾留言:" + +#: wp-admin/comment.php:89 +msgid "This comment is in the Trash. Please move it out of the Trash if you want to edit it." +msgstr "這則留言已移至回收桶。如需編輯這則留言,請從回收桶中將它還原。" + +#: wp-admin/comment.php:296 wp-admin/edit-comments.php:300 +#: wp-admin/includes/comment.php:55 +msgid "Sorry, you are not allowed to edit comments on this post." +msgstr "很抱歉,目前的登入身分沒有編輯這篇文章留言的權限。" + +#: wp-admin/authorize-application.php:98 wp-admin/authorize-application.php:116 +msgid "Go Back" +msgstr "返回" + +#: wp-admin/comment.php:59 wp-admin/edit-form-comment.php:22 +#: wp-admin/includes/template.php:462 +msgid "Edit Comment" +msgstr "編輯留言" + +#: wp-admin/admin.php:343 wp-admin/import.php:19 wp-admin/menu.php:392 +msgid "Import" +msgstr "匯入程式" + +#. translators: %s: Admin page generated by a plugin. +#: wp-admin/admin.php:274 +msgid "Cannot load %s." +msgstr "無法載入 %s。" + +#: wp-admin/admin.php:267 +msgid "Invalid plugin page." +msgstr "無效的外掛頁面。" + +#: wp-admin/includes/ajax-actions.php:2218 +#: wp-admin/includes/ajax-actions.php:2224 +#: wp-admin/includes/edit-tag-messages.php:18 +msgid "Item not updated." +msgstr "項目並未更新。" + +#. translators: %s: User's display name. +#: wp-admin/includes/ajax-actions.php:2095 +msgid "Saving is disabled: %s is currently editing this post." +msgstr "儲存功能已停用:「%s」正在編輯這篇文章。" + +#. translators: %s: User's display name. +#: wp-admin/includes/ajax-actions.php:2099 +msgid "Saving is disabled: %s is currently editing this page." +msgstr "儲存功能已停用:「%s」正在編輯這個頁面。" + +#: wp-admin/includes/ajax-actions.php:2092 +msgid "Someone" +msgstr "訪客" + +#. translators: %s: Date and time. +#: wp-admin/includes/misc.php:1376 +msgid "Draft saved at %s." +msgstr "草稿已於 %s 完成儲存。" + +#. translators: Draft saved date format, see +#. https://www.php.net/manual/datetime.format.php +#: wp-admin/includes/misc.php:1372 +msgid "g:i:s a" +msgstr "a g:i:s" + +#: wp-admin/includes/ajax-actions.php:1664 +#: wp-admin/includes/ajax-actions.php:1673 +msgid "Please provide a custom field value." +msgstr "請提供自訂欄位的值。" + +#: wp-admin/includes/ajax-actions.php:1354 +msgid "Sorry, you must be logged in to reply to a comment." +msgstr "很抱歉,必須登入才能回覆留言。" + +#: wp-admin/includes/taxonomy.php:136 +msgid "You did not enter a category name." +msgstr "尚未輸入分類名稱。" + +#. translators: %d: Comment ID. +#: wp-admin/includes/ajax-actions.php:993 +msgid "Comment %d does not exist" +msgstr "留言 %d 不存在" + +#: wp-admin/includes/media.php:2859 wp-admin/includes/nav-menu.php:546 +#: wp-admin/includes/nav-menu.php:918 +msgid "»" +msgstr "»" + +#: wp-admin/includes/media.php:2858 wp-admin/includes/nav-menu.php:545 +#: wp-admin/includes/nav-menu.php:917 +msgid "«" +msgstr "«" \ No newline at end of file diff --git a/languages/continents-cities-zh_TW.l10n.php b/languages/continents-cities-zh_TW.l10n.php new file mode 100644 index 0000000..1b9d441 --- /dev/null +++ b/languages/continents-cities-zh_TW.l10n.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2023-03-07 18:34:02+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'WordPress - 7.0.x - Development - Continents & Cities','language'=>'zh_TW','messages'=>['Kanton'=>'坎頓','Kyiv'=>'基輔','Qostanay'=>'庫斯塔奈','Nuuk'=>'努克','Saratov'=>'薩拉托夫','Yangon'=>'仰光','Famagusta'=>'法馬古斯塔','Atyrau'=>'阿特勞','Punta Arenas'=>'蓬塔阿雷納斯','Pohnpei'=>'波納佩島','Chuuk'=>'楚克島','Bougainville'=>'布干維爾島','Ulyanovsk'=>'烏里揚諾夫斯克','Kirov'=>'基洛夫','Busingen'=>'布辛根','Astrakhan'=>'阿斯特拉罕','Ust-Nera'=>'烏斯季涅拉','Tomsk'=>'托木斯克','Srednekolymsk'=>'中科雷姆斯克','Novokuznetsk'=>'新庫茲涅茨克','Khandyga'=>'漢德加','Kathmandu'=>'加德滿都','Hebron'=>'希伯侖','Chita'=>'赤塔','Barnaul'=>'巴爾瑙爾','Troll'=>'特羅爾站','Macquarie'=>'麥加利島','Sitka'=>'矽地卡','Santarem'=>'聖塔倫','Santa Isabel'=>'聖伊薩貝爾','Ojinaga'=>'奧希納加','Beulah'=>'比尤拉','Metlakatla'=>'梅特拉卡特拉','Matamoros'=>'馬塔莫羅斯','Lower Princes'=>'下太子區','Kralendijk'=>'克拉倫代克','Fort Nelson'=>'納爾遜堡','Creston'=>'克雷斯頓','Bahia Banderas'=>'班德拉斯灣','Salta'=>'薩爾塔','Juba'=>'朱巴','Yap'=>'雅浦島','Wallis'=>'瓦利斯','Wake'=>'威克島','Truk'=>'楚克','Tongatapu'=>'東加塔普','Tarawa'=>'塔拉瓦','Tahiti'=>'大溪地','Samoa'=>'薩摩亞','Saipan'=>'塞班島','Rarotonga'=>'拉洛東加島','Port Moresby'=>'莫爾斯貝港','Ponape'=>'波納佩島','Pitcairn'=>'皮特康群島','Palau'=>'帛琉','Pago Pago'=>'帕哥帕哥','Noumea'=>'諾米亞','Norfolk'=>'諾福克','Niue'=>'紐威島','Nauru'=>'諾魯','Midway'=>'中途島','Marquesas'=>'馬克沙斯','Majuro'=>'麥哲魯','Kwajalein'=>'瓜加林島','Kosrae'=>'科瑟爾','Kiritimati'=>'刻里提瑪斯','Johnston'=>'詹斯頓島','Honolulu'=>'檀香山','Guam'=>'關島','Guadalcanal'=>'瓜達卡那島','Gambier'=>'甘比爾群島','Galapagos'=>'加拉巴哥群島','Funafuti'=>'富納富提','Fiji'=>'斐濟','Fakaofo'=>'法克奧佛','Enderbury'=>'恩德伯里島','Efate'=>'愛發提','Easter'=>'復活節島','Chatham'=>'查塔姆群島','Auckland'=>'奧克蘭','Apia'=>'亞庇','Pacific'=>'太平洋','Reunion'=>'留尼旺','Mayotte'=>'馬約特島','Mauritius'=>'模里西斯','Maldives'=>'馬爾地夫','Mahe'=>'馬赫','Kerguelen'=>'凱爾蓋朗群島','Comoro'=>'葛摩','Cocos'=>'可可斯群島','Christmas'=>'聖誕島','Chagos'=>'查哥斯','Antananarivo'=>'安塔那那利佛','Indian'=>'印度','Zurich'=>'蘇黎世','Zaporozhye'=>'札波羅結','Zagreb'=>'札格雷布','Warsaw'=>'華沙','Volgograd'=>'伏爾加格勒','Vilnius'=>'維爾紐斯','Vienna'=>'維也納','Vatican'=>'梵蒂岡','Vaduz'=>'瓦都茲','Uzhgorod'=>'烏日霍羅德','Tiraspol'=>'提拉斯浦','Tirane'=>'地拉那','Tallinn'=>'塔林','Stockholm'=>'斯德哥爾摩','Sofia'=>'索菲亞','Skopje'=>'斯高彼亞','Simferopol'=>'欣佛洛普','Sarajevo'=>'塞拉耶佛','San Marino'=>'聖馬利諾','Samara'=>'沙馬拉','Rome'=>'羅馬','Riga'=>'里加','Prague'=>'布拉格','Podgorica'=>'波德戈里察','Paris'=>'巴黎','Oslo'=>'奧斯陸','Moscow'=>'莫斯科','Monaco'=>'摩納哥','Minsk'=>'明斯克','Mariehamn'=>'瑪麗港','Malta'=>'馬爾他','Madrid'=>'馬德里','Luxembourg'=>'盧森堡','London'=>'倫敦','Ljubljana'=>'盧布亞納','Lisbon'=>'里斯本','Kiev'=>'基輔','Kaliningrad'=>'卡里寧格勒','Jersey'=>'澤西島','Isle of Man'=>'曼島','Helsinki'=>'赫爾辛基','Guernsey'=>'根西島','Gibraltar'=>'直布羅陀','Dublin'=>'都柏林','Copenhagen'=>'哥本哈根','Chisinau'=>'奇西瑙','Budapest'=>'布達佩斯','Bucharest'=>'布加勒斯特','Brussels'=>'布魯塞爾','Bratislava'=>'布拉提斯拉瓦','Berlin'=>'柏林','Belgrade'=>'貝爾格勒','Belfast'=>'貝爾發斯特','Athens'=>'雅典','Andorra'=>'安道爾','Amsterdam'=>'阿姆斯特丹','Europe'=>'歐洲','Zulu'=>'祖魯','UTC'=>'國際標準時間 (UTC)','Universal'=>'國際標準時間','UCT'=>'UCT','Greenwich'=>'格林威治','GMT0'=>'GMT0','GMT-9'=>'GMT-9','GMT-8'=>'GMT-8','GMT-7'=>'GMT-7','GMT-6'=>'GMT-6','GMT-5'=>'GMT-5','GMT-4'=>'GMT-4','GMT-3'=>'GMT-3','GMT-2'=>'GMT-2','GMT-14'=>'GMT-14','GMT-13'=>'GMT-13','GMT-12'=>'GMT-12','GMT-11'=>'GMT-11','GMT-10'=>'GMT-10','GMT-1'=>'GMT-1','GMT-0'=>'GMT-0','GMT+9'=>'GMT+9','GMT+8'=>'GMT+8','GMT+7'=>'GMT+7','GMT+6'=>'GMT+6','GMT+5'=>'GMT+5','GMT+4'=>'GMT+4','GMT+3'=>'GMT+3','GMT+2'=>'GMT+2','GMT+12'=>'GMT+12','GMT+11'=>'GMT+11','GMT+10'=>'GMT+10','GMT+1'=>'GMT+1','GMT+0'=>'GMT+0','GMT'=>'格林威治標準時間 (GMT)','Etc'=>'其他','Yancowinna'=>'揚科維納','West'=>'西澳省','Victoria'=>'維多利亞省','Tasmania'=>'塔斯馬尼亞','Sydney'=>'雪梨','South'=>'南澳省','Queensland'=>'昆士蘭省','Perth'=>'伯斯','NSW'=>'新南威爾斯省','North'=>'北領地','Melbourne'=>'墨爾本','Lord Howe'=>'羅豪','Lindeman'=>'林德曼島','LHI'=>'羅豪島','Hobart'=>'霍巴特','Eucla'=>'尤克拉','Darwin'=>'達爾文','Currie'=>'柯里','Canberra'=>'坎培拉','Broken Hill'=>'布羅肯希爾','Brisbane'=>'布里斯本','Adelaide'=>'阿得雷德','ACT'=>'澳大利亞首都特區','Australia'=>'澳洲','Stanley'=>'史坦萊','St Helena'=>'聖赫勒拿島','South Georgia'=>'南喬治亞','Reykjavik'=>'雷克雅維克','Madeira'=>'馬迪拉群島','Jan Mayen'=>'央棉群島','Faroe'=>'法羅群島','Faeroe'=>'法羅群島','Cape Verde'=>'維德角','Canary'=>'加那利群島','Bermuda'=>'百慕達','Azores'=>'亞述群島','Atlantic'=>'大西洋','Yerevan'=>'葉里溫','Yekaterinburg'=>'耶卡特寧伯格','Yakutsk'=>'雅庫茨克','Vladivostok'=>'海參崴','Vientiane'=>'永珍','Urumqi'=>'烏魯木齊','Ulan Bator'=>'烏蘭巴托','Ulaanbaatar'=>'烏蘭巴托','Ujung Pandang'=>'錫江','Tokyo'=>'東京','Thimphu'=>'辛布','Thimbu'=>'辛布','Tel Aviv'=>'特拉維夫','Tehran'=>'德黑蘭','Tbilisi'=>'第比利斯','Tashkent'=>'塔什干','Taipei'=>'台北','Singapore'=>'新加坡','Shanghai'=>'上海','Seoul'=>'首爾','Samarkand'=>'撒馬爾罕','Sakhalin'=>'庫頁島','Saigon'=>'胡志明市','Riyadh'=>'利雅德','Rangoon'=>'仰光','Qyzylorda'=>'克孜勒奧爾達','Qatar'=>'卡達','Pyongyang'=>'平壤','Pontianak'=>'坤甸','Phnom Penh'=>'金邊','Oral'=>'烏拉爾','Omsk'=>'鄂木斯克','Novosibirsk'=>'新西伯利亞','Nicosia'=>'尼古西亞','Muscat'=>'馬斯喀特','Manila'=>'馬尼拉','Makassar'=>'瑪加沙','Magadan'=>'馬加丹','Macau'=>'澳門','Macao'=>'澳門','Kuwait'=>'科威特','Kuching'=>'古晉','Kuala Lumpur'=>'吉隆坡','Krasnoyarsk'=>'克拉斯諾亞爾斯克','Kolkata'=>'加爾各答','Katmandu'=>'加德滿都','Kashgar'=>'喀什市','Karachi'=>'克洛奇','Kamchatka'=>'堪察加','Kabul'=>'喀布爾','Jerusalem'=>'耶路撒冷','Jayapura'=>'嘉雅浦拉','Jakarta'=>'雅加達','Istanbul'=>'伊斯坦堡','Irkutsk'=>'伊爾庫次克','Hovd'=>'哈霍德','Hong Kong'=>'香港','Ho Chi Minh'=>'胡志明市','Harbin'=>'哈爾濱','Gaza'=>'加薩','Dushanbe'=>'杜尚貝','Dubai'=>'杜拜','Dili'=>'帝利','Dhaka'=>'達卡','Damascus'=>'大馬士革','Dacca'=>'達卡','Colombo'=>'可倫坡','Chungking'=>'重慶','Chongqing'=>'重慶','Choibalsan'=>'喬巴山','Calcutta'=>'加爾各答','Brunei'=>'汶萊','Bishkek'=>'比斯凱克','Beirut'=>'貝魯特','Bangkok'=>'曼谷','Baku'=>'巴庫','Bahrain'=>'巴林','Baghdad'=>'巴格達','Ashkhabad'=>'阿什哈巴德','Ashgabat'=>'阿什哈巴德','Aqtobe'=>'阿克托比','Aqtau'=>'阿克陶','Anadyr'=>'阿納底','Amman'=>'安曼','Almaty'=>'阿馬提','Aden'=>'亞頓','Asia'=>'亞洲','Longyearbyen'=>'龍宜爾比恩','Arctic'=>'北極','Vostok'=>'弗斯托克','Syowa'=>'昭和站','South Pole'=>'南極','Rothera'=>'羅瑟拉站','Palmer'=>'帕麥','McMurdo'=>'麥克馬多','Mawson'=>'茂遜','DumontDUrville'=>'迪蒙·迪維爾站','Davis'=>'戴維斯站','Casey'=>'開西站','Antarctica'=>'南極洲','Yellowknife'=>'耶洛奈夫','Yakutat'=>'亞庫塔特','Winnipeg'=>'溫尼柏','Whitehorse'=>'白馬鎮','Virgin'=>'維爾京群島','Vancouver'=>'溫哥華','Tortola'=>'托托拉','Toronto'=>'多倫多','Tijuana'=>'提華納','Thunder Bay'=>'桑德灣','Thule'=>'土里島','Tegucigalpa'=>'德古西加巴','Swift Current'=>'斯威夫特卡倫特','St Vincent'=>'聖文森','St Thomas'=>'聖湯瑪士','St Lucia'=>'聖露西亞','St Kitts'=>'聖克里斯多福','St Johns'=>'聖約翰','St Barthelemy'=>'聖巴泰勒米','Shiprock'=>'希普羅克峰','Scoresbysund'=>'斯可比','Sao Paulo'=>'聖保羅','Santo Domingo'=>'聖多明哥','Santiago'=>'聖地牙哥','Rosario'=>'羅沙略','Rio Branco'=>'里約布蘭科','Resolute'=>'努納武特','Regina'=>'雷吉納','Recife'=>'累西腓','Rankin Inlet'=>'蘭金音萊特','Rainy River'=>'雷尼河區','Puerto Rico'=>'波多黎各','Porto Velho'=>'韋柳港','Porto Acre'=>'亞克港','Port of Spain'=>'西班牙港','Port-au-Prince'=>'太子港','Phoenix'=>'鳳凰城','Paramaribo'=>'巴拉馬利波','Pangnirtung'=>'皮納唐','Panama'=>'巴拿馬','New Salem'=>'新薩勒姆','Center'=>'中心市','North Dakota'=>'北達科他','Noronha'=>'諾拉哈','Nome'=>'諾姆','Nipigon'=>'尼皮貢','New York'=>'紐約','Nassau'=>'拿索','Montserrat'=>'蒙特色拉特島','Montreal'=>'蒙特婁','Montevideo'=>'蒙特維多','Monterrey'=>'蒙特利','Moncton'=>'蒙克頓','Miquelon'=>'密克隆群島','Mexico City'=>'墨西哥城','Merida'=>'梅里達','Menominee'=>'梅諾米尼','Mazatlan'=>'馬札特蘭','Martinique'=>'馬丁尼克','Marigot'=>'馬里戈','Manaus'=>'瑪瑙斯','Managua'=>'馬納瓜','Maceio'=>'馬瑟歐','Los Angeles'=>'洛杉磯','Lima'=>'利馬','La Paz'=>'拉帕茲','Knox IN'=>'諾克斯','Monticello'=>'蒙蒂塞洛','Louisville'=>'路易維爾','Kentucky'=>'肯塔基州','Juneau'=>'朱諾','Jamaica'=>'牙買加','Iqaluit'=>'伊魁特','Inuvik'=>'因紐維克','Winamac'=>'威納馬克','Vincennes'=>'湯森斯','Vevay'=>'韋韋','Tell City'=>'特爾城','Petersburg'=>'聖彼得堡','Marengo'=>'馬倫戈','Knox'=>'諾克斯','Indianapolis'=>'印第安納波利斯','Indiana'=>'印第安那州','Hermosillo'=>'埃莫西約','Havana'=>'哈瓦那','Halifax'=>'哈利法克斯','Guyana'=>'蓋亞那','Guayaquil'=>'圭亞基爾','Guatemala'=>'瓜地馬拉','Guadeloupe'=>'瓜地洛普','Grenada'=>'格瑞那達','Grand Turk'=>'格蘭土克','Goose Bay'=>'古斯貝','Godthab'=>'哥特哈布','Glace Bay'=>'格萊斯貝','Fortaleza'=>'福塔力沙','Fort Wayne'=>'韋恩堡','Ensenada'=>'恩瑟納達','El Salvador'=>'薩爾瓦多','Eirunepe'=>'埃魯內佩','Edmonton'=>'艾德蒙頓','Dominica'=>'多明尼加','Detroit'=>'底特律','Denver'=>'丹佛','Dawson Creek'=>'道森河市','Dawson'=>'道森市','Danmarkshavn'=>'格陵蘭','Curacao'=>'古拉果','Cuiaba'=>'古雅巴','Costa Rica'=>'哥斯大黎加','Coral Harbour'=>'珊瑚港','Chihuahua'=>'赤瓦瓦','Chicago'=>'芝加哥','Cayman'=>'開曼群島','Cayenne'=>'開雲','Caracas'=>'卡拉卡斯','Cancun'=>'坎昆','Campo Grande'=>'格蘭德營','Cambridge Bay'=>'劍橋灣','Boise'=>'波夕','Bogota'=>'波哥大','Boa Vista'=>'博阿維斯塔島','Blanc-Sablon'=>'布郎薩布隆','Belize'=>'貝里斯','Belem'=>'貝倫','Barbados'=>'巴貝多','Bahia'=>'巴伊亞','Atka'=>'阿特卡','Atikokan'=>'阿蒂科肯','Asuncion'=>'亞松森','Aruba'=>'阿路巴','Ushuaia'=>'烏斯懷亞','Tucuman'=>'圖庫曼','San Luis'=>'聖路易斯','San Juan'=>'聖胡安','Rio Gallegos'=>'里奧加耶戈斯','Mendoza'=>'門多薩','La Rioja'=>'拉里奧哈','Jujuy'=>'胡胡伊','Cordoba'=>'科多瓦','ComodRivadavia'=>'科木多洛','Catamarca'=>'卡達馬卡','Buenos Aires'=>'布宜諾斯艾利斯','Argentina'=>'阿根廷','Araguaina'=>'阿拉瓜伊納','Antigua'=>'安地卡','Anguilla'=>'安圭拉','Anchorage'=>'安克拉治','Adak'=>'埃達克','America'=>'美洲','Windhoek'=>'溫吐克','Tunis'=>'突尼斯','Tripoli'=>'的黎波里','Timbuktu'=>'廷巴克圖','Sao Tome'=>'聖多美','Porto-Novo'=>'新港','Ouagadougou'=>'瓦加杜古','Nouakchott'=>'諾克少','Niamey'=>'尼阿美','Ndjamena'=>'恩加美納','Nairobi'=>'奈洛比','Monrovia'=>'蒙羅維亞','Mogadishu'=>'摩加迪休','Mbabane'=>'墨巴本','Maseru'=>'馬塞魯','Maputo'=>'馬布多','Malabo'=>'馬拉博','Lusaka'=>'路沙卡','Lubumbashi'=>'羅彭巴布','Luanda'=>'盧安達','Lome'=>'洛梅','Libreville'=>'自由市','Lagos'=>'拉哥斯','Kinshasa'=>'金夏沙','Kigali'=>'吉佳利','Khartoum'=>'喀土穆','Kampala'=>'坎帕拉','Johannesburg'=>'約翰尼斯堡','Harare'=>'哈拉雷','Gaborone'=>'嘉柏隆里','Freetown'=>'自由城','El Aaiun'=>'阿尤恩','Douala'=>'杜阿拉','Djibouti'=>'吉布地','Dar es Salaam'=>'達萊撒蘭','Dakar'=>'達卡','Conakry'=>'科納克里','Ceuta'=>'修達','Casablanca'=>'卡薩布蘭卡','Cairo'=>'開羅','Bujumbura'=>'布松布拉','Brazzaville'=>'布拉薩市','Blantyre'=>'布藍泰爾','Bissau'=>'比索','Banjul'=>'班竹','Bangui'=>'班基','Bamako'=>'巴馬科','Asmera'=>'阿斯馬拉','Asmara'=>'阿斯馬拉','Algiers'=>'阿爾及爾','Addis Ababa'=>'阿迪斯阿貝巴','Accra'=>'阿克拉','Abidjan'=>'阿必尚','Africa'=>'非洲']]; \ No newline at end of file diff --git a/languages/continents-cities-zh_TW.mo b/languages/continents-cities-zh_TW.mo new file mode 100644 index 0000000..5f18086 Binary files /dev/null and b/languages/continents-cities-zh_TW.mo differ diff --git a/languages/continents-cities-zh_TW.po b/languages/continents-cities-zh_TW.po new file mode 100644 index 0000000..3794707 --- /dev/null +++ b/languages/continents-cities-zh_TW.po @@ -0,0 +1,2124 @@ +# Translation of WordPress - 7.0.x - Development - Continents & Cities in Chinese (Taiwan) +# This file is distributed under the same license as the WordPress - 7.0.x - Development - Continents & Cities package. +msgid "" +msgstr "" +"PO-Revision-Date: 2023-03-07 18:34:02+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: WordPress - 7.0.x - Development - Continents & Cities\n" + +#: wp-admin/includes/continents-cities.php:523 +msgid "Kanton" +msgstr "坎頓" + +#: wp-admin/includes/continents-cities.php:451 +msgid "Kyiv" +msgstr "基輔" + +#: wp-admin/includes/continents-cities.php:319 +msgid "Qostanay" +msgstr "庫斯塔奈" + +#: wp-admin/includes/continents-cities.php:187 +msgid "Nuuk" +msgstr "努克" + +#: wp-admin/includes/continents-cities.php:472 +msgid "Saratov" +msgstr "薩拉托夫" + +#: wp-admin/includes/continents-cities.php:347 +msgid "Yangon" +msgstr "仰光" + +#: wp-admin/includes/continents-cities.php:281 +msgid "Famagusta" +msgstr "法馬古斯塔" + +#: wp-admin/includes/continents-cities.php:260 +msgid "Atyrau" +msgstr "阿特勞" + +#: wp-admin/includes/continents-cities.php:198 +msgid "Punta Arenas" +msgstr "蓬塔阿雷納斯" + +#: wp-admin/includes/continents-cities.php:537 +msgid "Pohnpei" +msgstr "波納佩島" + +#: wp-admin/includes/continents-cities.php:510 +msgid "Chuuk" +msgstr "楚克島" + +#: wp-admin/includes/continents-cities.php:508 +msgid "Bougainville" +msgstr "布干維爾島" + +#: wp-admin/includes/continents-cities.php:480 +msgid "Ulyanovsk" +msgstr "烏里揚諾夫斯克" + +#: wp-admin/includes/continents-cities.php:452 +msgid "Kirov" +msgstr "基洛夫" + +#: wp-admin/includes/continents-cities.php:439 +msgid "Busingen" +msgstr "布辛根" + +#: wp-admin/includes/continents-cities.php:430 +msgid "Astrakhan" +msgstr "阿斯特拉罕" + +#: wp-admin/includes/continents-cities.php:343 +msgid "Ust-Nera" +msgstr "烏斯季涅拉" + +#: wp-admin/includes/continents-cities.php:338 +msgid "Tomsk" +msgstr "托木斯克" + +#: wp-admin/includes/continents-cities.php:329 +msgid "Srednekolymsk" +msgstr "中科雷姆斯克" + +#: wp-admin/includes/continents-cities.php:311 +msgid "Novokuznetsk" +msgstr "新庫茲涅茨克" + +#: wp-admin/includes/continents-cities.php:298 +msgid "Khandyga" +msgstr "漢德加" + +#: wp-admin/includes/continents-cities.php:296 +msgid "Kathmandu" +msgstr "加德滿都" + +#: wp-admin/includes/continents-cities.php:284 +msgid "Hebron" +msgstr "希伯侖" + +#: wp-admin/includes/continents-cities.php:270 +msgid "Chita" +msgstr "赤塔" + +#: wp-admin/includes/continents-cities.php:265 +msgid "Barnaul" +msgstr "巴爾瑙爾" + +#: wp-admin/includes/continents-cities.php:245 +msgid "Troll" +msgstr "特羅爾站" + +#: wp-admin/includes/continents-cities.php:238 +msgid "Macquarie" +msgstr "麥加利島" + +#: wp-admin/includes/continents-cities.php:213 +msgid "Sitka" +msgstr "矽地卡" + +#: wp-admin/includes/continents-cities.php:207 +msgid "Santarem" +msgstr "聖塔倫" + +#: wp-admin/includes/continents-cities.php:206 +msgid "Santa Isabel" +msgstr "聖伊薩貝爾" + +#: wp-admin/includes/continents-cities.php:188 +msgid "Ojinaga" +msgstr "奧希納加" + +#: wp-admin/includes/continents-cities.php:184 +msgid "Beulah" +msgstr "比尤拉" + +#: wp-admin/includes/continents-cities.php:170 +msgid "Metlakatla" +msgstr "梅特拉卡特拉" + +#: wp-admin/includes/continents-cities.php:166 +msgid "Matamoros" +msgstr "馬塔莫羅斯" + +#: wp-admin/includes/continents-cities.php:160 +msgid "Lower Princes" +msgstr "下太子區" + +#: wp-admin/includes/continents-cities.php:156 +msgid "Kralendijk" +msgstr "克拉倫代克" + +#: wp-admin/includes/continents-cities.php:124 +msgid "Fort Nelson" +msgstr "納爾遜堡" + +#: wp-admin/includes/continents-cities.php:111 +msgid "Creston" +msgstr "克雷斯頓" + +#: wp-admin/includes/continents-cities.php:93 +msgid "Bahia Banderas" +msgstr "班德拉斯灣" + +#: wp-admin/includes/continents-cities.php:83 +msgid "Salta" +msgstr "薩爾塔" + +#: wp-admin/includes/continents-cities.php:39 +msgid "Juba" +msgstr "朱巴" + +#: wp-admin/includes/continents-cities.php:549 +msgid "Yap" +msgstr "雅浦島" + +#: wp-admin/includes/continents-cities.php:548 +msgid "Wallis" +msgstr "瓦利斯" + +#: wp-admin/includes/continents-cities.php:547 +msgid "Wake" +msgstr "威克島" + +#: wp-admin/includes/continents-cities.php:546 +msgid "Truk" +msgstr "楚克" + +#: wp-admin/includes/continents-cities.php:545 +msgid "Tongatapu" +msgstr "東加塔普" + +#: wp-admin/includes/continents-cities.php:544 +msgid "Tarawa" +msgstr "塔拉瓦" + +#: wp-admin/includes/continents-cities.php:543 +msgid "Tahiti" +msgstr "大溪地" + +#: wp-admin/includes/continents-cities.php:542 +msgid "Samoa" +msgstr "薩摩亞" + +#: wp-admin/includes/continents-cities.php:541 +msgid "Saipan" +msgstr "塞班島" + +#: wp-admin/includes/continents-cities.php:540 +msgid "Rarotonga" +msgstr "拉洛東加島" + +#: wp-admin/includes/continents-cities.php:539 +msgid "Port Moresby" +msgstr "莫爾斯貝港" + +#: wp-admin/includes/continents-cities.php:538 +msgid "Ponape" +msgstr "波納佩島" + +#: wp-admin/includes/continents-cities.php:536 +msgid "Pitcairn" +msgstr "皮特康群島" + +#: wp-admin/includes/continents-cities.php:535 +msgid "Palau" +msgstr "帛琉" + +#: wp-admin/includes/continents-cities.php:534 +msgid "Pago Pago" +msgstr "帕哥帕哥" + +#: wp-admin/includes/continents-cities.php:533 +msgid "Noumea" +msgstr "諾米亞" + +#: wp-admin/includes/continents-cities.php:532 +msgid "Norfolk" +msgstr "諾福克" + +#: wp-admin/includes/continents-cities.php:531 +msgid "Niue" +msgstr "紐威島" + +#: wp-admin/includes/continents-cities.php:530 +msgid "Nauru" +msgstr "諾魯" + +#: wp-admin/includes/continents-cities.php:529 +msgid "Midway" +msgstr "中途島" + +#: wp-admin/includes/continents-cities.php:528 +msgid "Marquesas" +msgstr "馬克沙斯" + +#: wp-admin/includes/continents-cities.php:527 +msgid "Majuro" +msgstr "麥哲魯" + +#: wp-admin/includes/continents-cities.php:526 +msgid "Kwajalein" +msgstr "瓜加林島" + +#: wp-admin/includes/continents-cities.php:525 +msgid "Kosrae" +msgstr "科瑟爾" + +#: wp-admin/includes/continents-cities.php:524 +msgid "Kiritimati" +msgstr "刻里提瑪斯" + +#: wp-admin/includes/continents-cities.php:522 +msgid "Johnston" +msgstr "詹斯頓島" + +#: wp-admin/includes/continents-cities.php:521 +msgid "Honolulu" +msgstr "檀香山" + +#: wp-admin/includes/continents-cities.php:520 +msgid "Guam" +msgstr "關島" + +#: wp-admin/includes/continents-cities.php:519 +msgid "Guadalcanal" +msgstr "瓜達卡那島" + +#: wp-admin/includes/continents-cities.php:518 +msgid "Gambier" +msgstr "甘比爾群島" + +#: wp-admin/includes/continents-cities.php:517 +msgid "Galapagos" +msgstr "加拉巴哥群島" + +#: wp-admin/includes/continents-cities.php:516 +msgid "Funafuti" +msgstr "富納富提" + +#: wp-admin/includes/continents-cities.php:515 +msgid "Fiji" +msgstr "斐濟" + +#: wp-admin/includes/continents-cities.php:514 +msgid "Fakaofo" +msgstr "法克奧佛" + +#: wp-admin/includes/continents-cities.php:513 +msgid "Enderbury" +msgstr "恩德伯里島" + +#: wp-admin/includes/continents-cities.php:512 +msgid "Efate" +msgstr "愛發提" + +#: wp-admin/includes/continents-cities.php:511 +msgid "Easter" +msgstr "復活節島" + +#: wp-admin/includes/continents-cities.php:509 +msgid "Chatham" +msgstr "查塔姆群島" + +#: wp-admin/includes/continents-cities.php:507 +msgid "Auckland" +msgstr "奧克蘭" + +#: wp-admin/includes/continents-cities.php:506 +msgid "Apia" +msgstr "亞庇" + +#: wp-admin/includes/continents-cities.php:505 +msgid "Pacific" +msgstr "太平洋" + +#: wp-admin/includes/continents-cities.php:503 +msgid "Reunion" +msgstr "留尼旺" + +#: wp-admin/includes/continents-cities.php:502 +msgid "Mayotte" +msgstr "馬約特島" + +#: wp-admin/includes/continents-cities.php:501 +msgid "Mauritius" +msgstr "模里西斯" + +#: wp-admin/includes/continents-cities.php:500 +msgid "Maldives" +msgstr "馬爾地夫" + +#: wp-admin/includes/continents-cities.php:499 +msgid "Mahe" +msgstr "馬赫" + +#: wp-admin/includes/continents-cities.php:498 +msgid "Kerguelen" +msgstr "凱爾蓋朗群島" + +#: wp-admin/includes/continents-cities.php:497 +msgid "Comoro" +msgstr "葛摩" + +#: wp-admin/includes/continents-cities.php:496 +msgid "Cocos" +msgstr "可可斯群島" + +#: wp-admin/includes/continents-cities.php:495 +msgid "Christmas" +msgstr "聖誕島" + +#: wp-admin/includes/continents-cities.php:494 +msgid "Chagos" +msgstr "查哥斯" + +#: wp-admin/includes/continents-cities.php:493 +msgid "Antananarivo" +msgstr "安塔那那利佛" + +#: wp-admin/includes/continents-cities.php:492 +msgid "Indian" +msgstr "印度" + +#: wp-admin/includes/continents-cities.php:490 +msgid "Zurich" +msgstr "蘇黎世" + +#: wp-admin/includes/continents-cities.php:489 +msgid "Zaporozhye" +msgstr "札波羅結" + +#: wp-admin/includes/continents-cities.php:488 +msgid "Zagreb" +msgstr "札格雷布" + +#: wp-admin/includes/continents-cities.php:487 +msgid "Warsaw" +msgstr "華沙" + +#: wp-admin/includes/continents-cities.php:486 +msgid "Volgograd" +msgstr "伏爾加格勒" + +#: wp-admin/includes/continents-cities.php:485 +msgid "Vilnius" +msgstr "維爾紐斯" + +#: wp-admin/includes/continents-cities.php:484 +msgid "Vienna" +msgstr "維也納" + +#: wp-admin/includes/continents-cities.php:483 +msgid "Vatican" +msgstr "梵蒂岡" + +#: wp-admin/includes/continents-cities.php:482 +msgid "Vaduz" +msgstr "瓦都茲" + +#: wp-admin/includes/continents-cities.php:481 +msgid "Uzhgorod" +msgstr "烏日霍羅德" + +#: wp-admin/includes/continents-cities.php:479 +msgid "Tiraspol" +msgstr "提拉斯浦" + +#: wp-admin/includes/continents-cities.php:478 +msgid "Tirane" +msgstr "地拉那" + +#: wp-admin/includes/continents-cities.php:477 +msgid "Tallinn" +msgstr "塔林" + +#: wp-admin/includes/continents-cities.php:476 +msgid "Stockholm" +msgstr "斯德哥爾摩" + +#: wp-admin/includes/continents-cities.php:475 +msgid "Sofia" +msgstr "索菲亞" + +#: wp-admin/includes/continents-cities.php:474 +msgid "Skopje" +msgstr "斯高彼亞" + +#: wp-admin/includes/continents-cities.php:473 +msgid "Simferopol" +msgstr "欣佛洛普" + +#: wp-admin/includes/continents-cities.php:471 +msgid "Sarajevo" +msgstr "塞拉耶佛" + +#: wp-admin/includes/continents-cities.php:470 +msgid "San Marino" +msgstr "聖馬利諾" + +#: wp-admin/includes/continents-cities.php:469 +msgid "Samara" +msgstr "沙馬拉" + +#: wp-admin/includes/continents-cities.php:468 +msgid "Rome" +msgstr "羅馬" + +#: wp-admin/includes/continents-cities.php:467 +msgid "Riga" +msgstr "里加" + +#: wp-admin/includes/continents-cities.php:466 +msgid "Prague" +msgstr "布拉格" + +#: wp-admin/includes/continents-cities.php:465 +msgid "Podgorica" +msgstr "波德戈里察" + +#: wp-admin/includes/continents-cities.php:464 +msgid "Paris" +msgstr "巴黎" + +#: wp-admin/includes/continents-cities.php:463 +msgid "Oslo" +msgstr "奧斯陸" + +#: wp-admin/includes/continents-cities.php:462 +msgid "Moscow" +msgstr "莫斯科" + +#: wp-admin/includes/continents-cities.php:461 +msgid "Monaco" +msgstr "摩納哥" + +#: wp-admin/includes/continents-cities.php:460 +msgid "Minsk" +msgstr "明斯克" + +#: wp-admin/includes/continents-cities.php:459 +msgid "Mariehamn" +msgstr "瑪麗港" + +#: wp-admin/includes/continents-cities.php:458 +msgid "Malta" +msgstr "馬爾他" + +#: wp-admin/includes/continents-cities.php:457 +msgid "Madrid" +msgstr "馬德里" + +#: wp-admin/includes/continents-cities.php:456 +msgid "Luxembourg" +msgstr "盧森堡" + +#: wp-admin/includes/continents-cities.php:455 +msgid "London" +msgstr "倫敦" + +#: wp-admin/includes/continents-cities.php:454 +msgid "Ljubljana" +msgstr "盧布亞納" + +#: wp-admin/includes/continents-cities.php:453 +msgid "Lisbon" +msgstr "里斯本" + +#: wp-admin/includes/continents-cities.php:450 +msgid "Kiev" +msgstr "基輔" + +#: wp-admin/includes/continents-cities.php:449 +msgid "Kaliningrad" +msgstr "卡里寧格勒" + +#: wp-admin/includes/continents-cities.php:448 +msgid "Jersey" +msgstr "澤西島" + +#: wp-admin/includes/continents-cities.php:446 +msgid "Isle of Man" +msgstr "曼島" + +#: wp-admin/includes/continents-cities.php:445 +msgid "Helsinki" +msgstr "赫爾辛基" + +#: wp-admin/includes/continents-cities.php:444 +msgid "Guernsey" +msgstr "根西島" + +#: wp-admin/includes/continents-cities.php:443 +msgid "Gibraltar" +msgstr "直布羅陀" + +#: wp-admin/includes/continents-cities.php:442 +msgid "Dublin" +msgstr "都柏林" + +#: wp-admin/includes/continents-cities.php:441 +msgid "Copenhagen" +msgstr "哥本哈根" + +#: wp-admin/includes/continents-cities.php:440 +msgid "Chisinau" +msgstr "奇西瑙" + +#: wp-admin/includes/continents-cities.php:438 +msgid "Budapest" +msgstr "布達佩斯" + +#: wp-admin/includes/continents-cities.php:437 +msgid "Bucharest" +msgstr "布加勒斯特" + +#: wp-admin/includes/continents-cities.php:436 +msgid "Brussels" +msgstr "布魯塞爾" + +#: wp-admin/includes/continents-cities.php:435 +msgid "Bratislava" +msgstr "布拉提斯拉瓦" + +#: wp-admin/includes/continents-cities.php:434 +msgid "Berlin" +msgstr "柏林" + +#: wp-admin/includes/continents-cities.php:433 +msgid "Belgrade" +msgstr "貝爾格勒" + +#: wp-admin/includes/continents-cities.php:432 +msgid "Belfast" +msgstr "貝爾發斯特" + +#: wp-admin/includes/continents-cities.php:431 +msgid "Athens" +msgstr "雅典" + +#: wp-admin/includes/continents-cities.php:429 +msgid "Andorra" +msgstr "安道爾" + +#: wp-admin/includes/continents-cities.php:428 +msgid "Amsterdam" +msgstr "阿姆斯特丹" + +#: wp-admin/includes/continents-cities.php:427 +msgid "Europe" +msgstr "歐洲" + +#: wp-admin/includes/continents-cities.php:425 +msgid "Zulu" +msgstr "祖魯" + +#: wp-admin/includes/continents-cities.php:423 +msgid "UTC" +msgstr "國際標準時間 (UTC)" + +#: wp-admin/includes/continents-cities.php:424 +msgid "Universal" +msgstr "國際標準時間" + +#: wp-admin/includes/continents-cities.php:422 +msgid "UCT" +msgstr "UCT" + +#: wp-admin/includes/continents-cities.php:421 +msgid "Greenwich" +msgstr "格林威治" + +#: wp-admin/includes/continents-cities.php:420 +msgid "GMT0" +msgstr "GMT0" + +#: wp-admin/includes/continents-cities.php:419 +msgid "GMT-9" +msgstr "GMT-9" + +#: wp-admin/includes/continents-cities.php:418 +msgid "GMT-8" +msgstr "GMT-8" + +#: wp-admin/includes/continents-cities.php:417 +msgid "GMT-7" +msgstr "GMT-7" + +#: wp-admin/includes/continents-cities.php:416 +msgid "GMT-6" +msgstr "GMT-6" + +#: wp-admin/includes/continents-cities.php:415 +msgid "GMT-5" +msgstr "GMT-5" + +#: wp-admin/includes/continents-cities.php:414 +msgid "GMT-4" +msgstr "GMT-4" + +#: wp-admin/includes/continents-cities.php:413 +msgid "GMT-3" +msgstr "GMT-3" + +#: wp-admin/includes/continents-cities.php:412 +msgid "GMT-2" +msgstr "GMT-2" + +#: wp-admin/includes/continents-cities.php:411 +msgid "GMT-14" +msgstr "GMT-14" + +#: wp-admin/includes/continents-cities.php:410 +msgid "GMT-13" +msgstr "GMT-13" + +#: wp-admin/includes/continents-cities.php:409 +msgid "GMT-12" +msgstr "GMT-12" + +#: wp-admin/includes/continents-cities.php:408 +msgid "GMT-11" +msgstr "GMT-11" + +#: wp-admin/includes/continents-cities.php:407 +msgid "GMT-10" +msgstr "GMT-10" + +#: wp-admin/includes/continents-cities.php:406 +msgid "GMT-1" +msgstr "GMT-1" + +#: wp-admin/includes/continents-cities.php:405 +msgid "GMT-0" +msgstr "GMT-0" + +#: wp-admin/includes/continents-cities.php:404 +msgid "GMT+9" +msgstr "GMT+9" + +#: wp-admin/includes/continents-cities.php:403 +msgid "GMT+8" +msgstr "GMT+8" + +#: wp-admin/includes/continents-cities.php:402 +msgid "GMT+7" +msgstr "GMT+7" + +#: wp-admin/includes/continents-cities.php:401 +msgid "GMT+6" +msgstr "GMT+6" + +#: wp-admin/includes/continents-cities.php:400 +msgid "GMT+5" +msgstr "GMT+5" + +#: wp-admin/includes/continents-cities.php:399 +msgid "GMT+4" +msgstr "GMT+4" + +#: wp-admin/includes/continents-cities.php:398 +msgid "GMT+3" +msgstr "GMT+3" + +#: wp-admin/includes/continents-cities.php:397 +msgid "GMT+2" +msgstr "GMT+2" + +#: wp-admin/includes/continents-cities.php:396 +msgid "GMT+12" +msgstr "GMT+12" + +#: wp-admin/includes/continents-cities.php:395 +msgid "GMT+11" +msgstr "GMT+11" + +#: wp-admin/includes/continents-cities.php:394 +msgid "GMT+10" +msgstr "GMT+10" + +#: wp-admin/includes/continents-cities.php:393 +msgid "GMT+1" +msgstr "GMT+1" + +#: wp-admin/includes/continents-cities.php:392 +msgid "GMT+0" +msgstr "GMT+0" + +#: wp-admin/includes/continents-cities.php:391 +msgid "GMT" +msgstr "格林威治標準時間 (GMT)" + +#: wp-admin/includes/continents-cities.php:390 +msgid "Etc" +msgstr "其他" + +#: wp-admin/includes/continents-cities.php:388 +msgid "Yancowinna" +msgstr "揚科維納" + +#: wp-admin/includes/continents-cities.php:387 +msgid "West" +msgstr "西澳省" + +#: wp-admin/includes/continents-cities.php:386 +msgid "Victoria" +msgstr "維多利亞省" + +#: wp-admin/includes/continents-cities.php:385 +msgid "Tasmania" +msgstr "塔斯馬尼亞" + +#: wp-admin/includes/continents-cities.php:384 +msgid "Sydney" +msgstr "雪梨" + +#: wp-admin/includes/continents-cities.php:383 +msgid "South" +msgstr "南澳省" + +#: wp-admin/includes/continents-cities.php:382 +msgid "Queensland" +msgstr "昆士蘭省" + +#: wp-admin/includes/continents-cities.php:381 +msgid "Perth" +msgstr "伯斯" + +#: wp-admin/includes/continents-cities.php:379 +msgid "NSW" +msgstr "新南威爾斯省" + +#: wp-admin/includes/continents-cities.php:380 +msgid "North" +msgstr "北領地" + +#: wp-admin/includes/continents-cities.php:378 +msgid "Melbourne" +msgstr "墨爾本" + +#: wp-admin/includes/continents-cities.php:377 +msgid "Lord Howe" +msgstr "羅豪" + +#: wp-admin/includes/continents-cities.php:376 +msgid "Lindeman" +msgstr "林德曼島" + +#: wp-admin/includes/continents-cities.php:375 +msgid "LHI" +msgstr "羅豪島" + +#: wp-admin/includes/continents-cities.php:374 +msgid "Hobart" +msgstr "霍巴特" + +#: wp-admin/includes/continents-cities.php:373 +msgid "Eucla" +msgstr "尤克拉" + +#: wp-admin/includes/continents-cities.php:372 +msgid "Darwin" +msgstr "達爾文" + +#: wp-admin/includes/continents-cities.php:371 +msgid "Currie" +msgstr "柯里" + +#: wp-admin/includes/continents-cities.php:370 +msgid "Canberra" +msgstr "坎培拉" + +#: wp-admin/includes/continents-cities.php:369 +msgid "Broken Hill" +msgstr "布羅肯希爾" + +#: wp-admin/includes/continents-cities.php:368 +msgid "Brisbane" +msgstr "布里斯本" + +#: wp-admin/includes/continents-cities.php:367 +msgid "Adelaide" +msgstr "阿得雷德" + +#: wp-admin/includes/continents-cities.php:366 +msgid "ACT" +msgstr "澳大利亞首都特區" + +#: wp-admin/includes/continents-cities.php:365 +msgid "Australia" +msgstr "澳洲" + +#: wp-admin/includes/continents-cities.php:363 +msgid "Stanley" +msgstr "史坦萊" + +#: wp-admin/includes/continents-cities.php:362 +msgid "St Helena" +msgstr "聖赫勒拿島" + +#: wp-admin/includes/continents-cities.php:361 +msgid "South Georgia" +msgstr "南喬治亞" + +#: wp-admin/includes/continents-cities.php:360 +msgid "Reykjavik" +msgstr "雷克雅維克" + +#: wp-admin/includes/continents-cities.php:359 +msgid "Madeira" +msgstr "馬迪拉群島" + +#: wp-admin/includes/continents-cities.php:358 +msgid "Jan Mayen" +msgstr "央棉群島" + +#: wp-admin/includes/continents-cities.php:357 +msgid "Faroe" +msgstr "法羅群島" + +#: wp-admin/includes/continents-cities.php:356 +msgid "Faeroe" +msgstr "法羅群島" + +#: wp-admin/includes/continents-cities.php:355 +msgid "Cape Verde" +msgstr "維德角" + +#: wp-admin/includes/continents-cities.php:354 +msgid "Canary" +msgstr "加那利群島" + +#: wp-admin/includes/continents-cities.php:353 +msgid "Bermuda" +msgstr "百慕達" + +#: wp-admin/includes/continents-cities.php:352 +msgid "Azores" +msgstr "亞述群島" + +#: wp-admin/includes/continents-cities.php:351 +msgid "Atlantic" +msgstr "大西洋" + +#: wp-admin/includes/continents-cities.php:349 +msgid "Yerevan" +msgstr "葉里溫" + +#: wp-admin/includes/continents-cities.php:348 +msgid "Yekaterinburg" +msgstr "耶卡特寧伯格" + +#: wp-admin/includes/continents-cities.php:346 +msgid "Yakutsk" +msgstr "雅庫茨克" + +#: wp-admin/includes/continents-cities.php:345 +msgid "Vladivostok" +msgstr "海參崴" + +#: wp-admin/includes/continents-cities.php:344 +msgid "Vientiane" +msgstr "永珍" + +#: wp-admin/includes/continents-cities.php:342 +msgid "Urumqi" +msgstr "烏魯木齊" + +#: wp-admin/includes/continents-cities.php:341 +msgid "Ulan Bator" +msgstr "烏蘭巴托" + +#: wp-admin/includes/continents-cities.php:340 +msgid "Ulaanbaatar" +msgstr "烏蘭巴托" + +#: wp-admin/includes/continents-cities.php:339 +msgid "Ujung Pandang" +msgstr "錫江" + +#: wp-admin/includes/continents-cities.php:337 +msgid "Tokyo" +msgstr "東京" + +#: wp-admin/includes/continents-cities.php:336 +msgid "Thimphu" +msgstr "辛布" + +#: wp-admin/includes/continents-cities.php:335 +msgid "Thimbu" +msgstr "辛布" + +#: wp-admin/includes/continents-cities.php:334 +msgid "Tel Aviv" +msgstr "特拉維夫" + +#: wp-admin/includes/continents-cities.php:333 +msgid "Tehran" +msgstr "德黑蘭" + +#: wp-admin/includes/continents-cities.php:332 +msgid "Tbilisi" +msgstr "第比利斯" + +#: wp-admin/includes/continents-cities.php:331 +msgid "Tashkent" +msgstr "塔什干" + +#: wp-admin/includes/continents-cities.php:330 +msgid "Taipei" +msgstr "台北" + +#: wp-admin/includes/continents-cities.php:328 +msgid "Singapore" +msgstr "新加坡" + +#: wp-admin/includes/continents-cities.php:327 +msgid "Shanghai" +msgstr "上海" + +#: wp-admin/includes/continents-cities.php:326 +msgid "Seoul" +msgstr "首爾" + +#: wp-admin/includes/continents-cities.php:325 +msgid "Samarkand" +msgstr "撒馬爾罕" + +#: wp-admin/includes/continents-cities.php:324 +msgid "Sakhalin" +msgstr "庫頁島" + +#: wp-admin/includes/continents-cities.php:323 +msgid "Saigon" +msgstr "胡志明市" + +#: wp-admin/includes/continents-cities.php:322 +msgid "Riyadh" +msgstr "利雅德" + +#: wp-admin/includes/continents-cities.php:321 +msgid "Rangoon" +msgstr "仰光" + +#: wp-admin/includes/continents-cities.php:320 +msgid "Qyzylorda" +msgstr "克孜勒奧爾達" + +#: wp-admin/includes/continents-cities.php:318 +msgid "Qatar" +msgstr "卡達" + +#: wp-admin/includes/continents-cities.php:317 +msgid "Pyongyang" +msgstr "平壤" + +#: wp-admin/includes/continents-cities.php:316 +msgid "Pontianak" +msgstr "坤甸" + +#: wp-admin/includes/continents-cities.php:315 +msgid "Phnom Penh" +msgstr "金邊" + +#: wp-admin/includes/continents-cities.php:314 +msgid "Oral" +msgstr "烏拉爾" + +#: wp-admin/includes/continents-cities.php:313 +msgid "Omsk" +msgstr "鄂木斯克" + +#: wp-admin/includes/continents-cities.php:312 +msgid "Novosibirsk" +msgstr "新西伯利亞" + +#: wp-admin/includes/continents-cities.php:310 +msgid "Nicosia" +msgstr "尼古西亞" + +#: wp-admin/includes/continents-cities.php:309 +msgid "Muscat" +msgstr "馬斯喀特" + +#: wp-admin/includes/continents-cities.php:308 +msgid "Manila" +msgstr "馬尼拉" + +#: wp-admin/includes/continents-cities.php:307 +msgid "Makassar" +msgstr "瑪加沙" + +#: wp-admin/includes/continents-cities.php:306 +msgid "Magadan" +msgstr "馬加丹" + +#: wp-admin/includes/continents-cities.php:305 +msgid "Macau" +msgstr "澳門" + +#: wp-admin/includes/continents-cities.php:304 +msgid "Macao" +msgstr "澳門" + +#: wp-admin/includes/continents-cities.php:303 +msgid "Kuwait" +msgstr "科威特" + +#: wp-admin/includes/continents-cities.php:302 +msgid "Kuching" +msgstr "古晉" + +#: wp-admin/includes/continents-cities.php:301 +msgid "Kuala Lumpur" +msgstr "吉隆坡" + +#: wp-admin/includes/continents-cities.php:300 +msgid "Krasnoyarsk" +msgstr "克拉斯諾亞爾斯克" + +#: wp-admin/includes/continents-cities.php:299 +msgid "Kolkata" +msgstr "加爾各答" + +#: wp-admin/includes/continents-cities.php:297 +msgid "Katmandu" +msgstr "加德滿都" + +#: wp-admin/includes/continents-cities.php:295 +msgid "Kashgar" +msgstr "喀什市" + +#: wp-admin/includes/continents-cities.php:294 +msgid "Karachi" +msgstr "克洛奇" + +#: wp-admin/includes/continents-cities.php:293 +msgid "Kamchatka" +msgstr "堪察加" + +#: wp-admin/includes/continents-cities.php:292 +msgid "Kabul" +msgstr "喀布爾" + +#: wp-admin/includes/continents-cities.php:291 +msgid "Jerusalem" +msgstr "耶路撒冷" + +#: wp-admin/includes/continents-cities.php:290 +msgid "Jayapura" +msgstr "嘉雅浦拉" + +#: wp-admin/includes/continents-cities.php:289 +msgid "Jakarta" +msgstr "雅加達" + +#: wp-admin/includes/continents-cities.php:447 +msgid "Istanbul" +msgstr "伊斯坦堡" + +#: wp-admin/includes/continents-cities.php:288 +msgid "Irkutsk" +msgstr "伊爾庫次克" + +#: wp-admin/includes/continents-cities.php:287 +msgid "Hovd" +msgstr "哈霍德" + +#: wp-admin/includes/continents-cities.php:286 +msgid "Hong Kong" +msgstr "香港" + +#: wp-admin/includes/continents-cities.php:285 +msgid "Ho Chi Minh" +msgstr "胡志明市" + +#: wp-admin/includes/continents-cities.php:283 +msgid "Harbin" +msgstr "哈爾濱" + +#: wp-admin/includes/continents-cities.php:282 +msgid "Gaza" +msgstr "加薩" + +#: wp-admin/includes/continents-cities.php:280 +msgid "Dushanbe" +msgstr "杜尚貝" + +#: wp-admin/includes/continents-cities.php:279 +msgid "Dubai" +msgstr "杜拜" + +#: wp-admin/includes/continents-cities.php:278 +msgid "Dili" +msgstr "帝利" + +#: wp-admin/includes/continents-cities.php:277 +msgid "Dhaka" +msgstr "達卡" + +#: wp-admin/includes/continents-cities.php:276 +msgid "Damascus" +msgstr "大馬士革" + +#: wp-admin/includes/continents-cities.php:275 +msgid "Dacca" +msgstr "達卡" + +#: wp-admin/includes/continents-cities.php:274 +msgid "Colombo" +msgstr "可倫坡" + +#: wp-admin/includes/continents-cities.php:273 +msgid "Chungking" +msgstr "重慶" + +#: wp-admin/includes/continents-cities.php:272 +msgid "Chongqing" +msgstr "重慶" + +#: wp-admin/includes/continents-cities.php:271 +msgid "Choibalsan" +msgstr "喬巴山" + +#: wp-admin/includes/continents-cities.php:269 +msgid "Calcutta" +msgstr "加爾各答" + +#: wp-admin/includes/continents-cities.php:268 +msgid "Brunei" +msgstr "汶萊" + +#: wp-admin/includes/continents-cities.php:267 +msgid "Bishkek" +msgstr "比斯凱克" + +#: wp-admin/includes/continents-cities.php:266 +msgid "Beirut" +msgstr "貝魯特" + +#: wp-admin/includes/continents-cities.php:264 +msgid "Bangkok" +msgstr "曼谷" + +#: wp-admin/includes/continents-cities.php:263 +msgid "Baku" +msgstr "巴庫" + +#: wp-admin/includes/continents-cities.php:262 +msgid "Bahrain" +msgstr "巴林" + +#: wp-admin/includes/continents-cities.php:261 +msgid "Baghdad" +msgstr "巴格達" + +#: wp-admin/includes/continents-cities.php:259 +msgid "Ashkhabad" +msgstr "阿什哈巴德" + +#: wp-admin/includes/continents-cities.php:258 +msgid "Ashgabat" +msgstr "阿什哈巴德" + +#: wp-admin/includes/continents-cities.php:257 +msgid "Aqtobe" +msgstr "阿克托比" + +#: wp-admin/includes/continents-cities.php:256 +msgid "Aqtau" +msgstr "阿克陶" + +#: wp-admin/includes/continents-cities.php:255 +msgid "Anadyr" +msgstr "阿納底" + +#: wp-admin/includes/continents-cities.php:254 +msgid "Amman" +msgstr "安曼" + +#: wp-admin/includes/continents-cities.php:253 +msgid "Almaty" +msgstr "阿馬提" + +#: wp-admin/includes/continents-cities.php:252 +msgid "Aden" +msgstr "亞頓" + +#: wp-admin/includes/continents-cities.php:251 +msgid "Asia" +msgstr "亞洲" + +#: wp-admin/includes/continents-cities.php:249 +msgid "Longyearbyen" +msgstr "龍宜爾比恩" + +#: wp-admin/includes/continents-cities.php:248 +msgid "Arctic" +msgstr "北極" + +#: wp-admin/includes/continents-cities.php:246 +msgid "Vostok" +msgstr "弗斯托克" + +#: wp-admin/includes/continents-cities.php:244 +msgid "Syowa" +msgstr "昭和站" + +#: wp-admin/includes/continents-cities.php:243 +msgid "South Pole" +msgstr "南極" + +#: wp-admin/includes/continents-cities.php:242 +msgid "Rothera" +msgstr "羅瑟拉站" + +#: wp-admin/includes/continents-cities.php:241 +msgid "Palmer" +msgstr "帕麥" + +#: wp-admin/includes/continents-cities.php:240 +msgid "McMurdo" +msgstr "麥克馬多" + +#: wp-admin/includes/continents-cities.php:239 +msgid "Mawson" +msgstr "茂遜" + +#: wp-admin/includes/continents-cities.php:237 +msgid "DumontDUrville" +msgstr "迪蒙·迪維爾站" + +#: wp-admin/includes/continents-cities.php:236 +msgid "Davis" +msgstr "戴維斯站" + +#: wp-admin/includes/continents-cities.php:235 +msgid "Casey" +msgstr "開西站" + +#: wp-admin/includes/continents-cities.php:234 +msgid "Antarctica" +msgstr "南極洲" + +#: wp-admin/includes/continents-cities.php:232 +msgid "Yellowknife" +msgstr "耶洛奈夫" + +#: wp-admin/includes/continents-cities.php:231 +msgid "Yakutat" +msgstr "亞庫塔特" + +#: wp-admin/includes/continents-cities.php:230 +msgid "Winnipeg" +msgstr "溫尼柏" + +#: wp-admin/includes/continents-cities.php:229 +msgid "Whitehorse" +msgstr "白馬鎮" + +#: wp-admin/includes/continents-cities.php:228 +msgid "Virgin" +msgstr "維爾京群島" + +#: wp-admin/includes/continents-cities.php:227 +msgid "Vancouver" +msgstr "溫哥華" + +#: wp-admin/includes/continents-cities.php:226 +msgid "Tortola" +msgstr "托托拉" + +#: wp-admin/includes/continents-cities.php:225 +msgid "Toronto" +msgstr "多倫多" + +#: wp-admin/includes/continents-cities.php:224 +msgid "Tijuana" +msgstr "提華納" + +#: wp-admin/includes/continents-cities.php:223 +msgid "Thunder Bay" +msgstr "桑德灣" + +#: wp-admin/includes/continents-cities.php:222 +msgid "Thule" +msgstr "土里島" + +#: wp-admin/includes/continents-cities.php:221 +msgid "Tegucigalpa" +msgstr "德古西加巴" + +#: wp-admin/includes/continents-cities.php:220 +msgid "Swift Current" +msgstr "斯威夫特卡倫特" + +#: wp-admin/includes/continents-cities.php:219 +msgid "St Vincent" +msgstr "聖文森" + +#: wp-admin/includes/continents-cities.php:218 +msgid "St Thomas" +msgstr "聖湯瑪士" + +#: wp-admin/includes/continents-cities.php:217 +msgid "St Lucia" +msgstr "聖露西亞" + +#: wp-admin/includes/continents-cities.php:216 +msgid "St Kitts" +msgstr "聖克里斯多福" + +#: wp-admin/includes/continents-cities.php:215 +msgid "St Johns" +msgstr "聖約翰" + +#: wp-admin/includes/continents-cities.php:214 +msgid "St Barthelemy" +msgstr "聖巴泰勒米" + +#: wp-admin/includes/continents-cities.php:212 +msgid "Shiprock" +msgstr "希普羅克峰" + +#: wp-admin/includes/continents-cities.php:211 +msgid "Scoresbysund" +msgstr "斯可比" + +#: wp-admin/includes/continents-cities.php:210 +msgid "Sao Paulo" +msgstr "聖保羅" + +#: wp-admin/includes/continents-cities.php:209 +msgid "Santo Domingo" +msgstr "聖多明哥" + +#: wp-admin/includes/continents-cities.php:208 +msgid "Santiago" +msgstr "聖地牙哥" + +#: wp-admin/includes/continents-cities.php:205 +msgid "Rosario" +msgstr "羅沙略" + +#: wp-admin/includes/continents-cities.php:204 +msgid "Rio Branco" +msgstr "里約布蘭科" + +#: wp-admin/includes/continents-cities.php:203 +msgid "Resolute" +msgstr "努納武特" + +#: wp-admin/includes/continents-cities.php:202 +msgid "Regina" +msgstr "雷吉納" + +#: wp-admin/includes/continents-cities.php:201 +msgid "Recife" +msgstr "累西腓" + +#: wp-admin/includes/continents-cities.php:200 +msgid "Rankin Inlet" +msgstr "蘭金音萊特" + +#: wp-admin/includes/continents-cities.php:199 +msgid "Rainy River" +msgstr "雷尼河區" + +#: wp-admin/includes/continents-cities.php:197 +msgid "Puerto Rico" +msgstr "波多黎各" + +#: wp-admin/includes/continents-cities.php:196 +msgid "Porto Velho" +msgstr "韋柳港" + +#: wp-admin/includes/continents-cities.php:195 +msgid "Porto Acre" +msgstr "亞克港" + +#: wp-admin/includes/continents-cities.php:194 +msgid "Port of Spain" +msgstr "西班牙港" + +#: wp-admin/includes/continents-cities.php:193 +msgid "Port-au-Prince" +msgstr "太子港" + +#: wp-admin/includes/continents-cities.php:192 +msgid "Phoenix" +msgstr "鳳凰城" + +#: wp-admin/includes/continents-cities.php:191 +msgid "Paramaribo" +msgstr "巴拉馬利波" + +#: wp-admin/includes/continents-cities.php:190 +msgid "Pangnirtung" +msgstr "皮納唐" + +#: wp-admin/includes/continents-cities.php:189 +msgid "Panama" +msgstr "巴拿馬" + +#: wp-admin/includes/continents-cities.php:186 +msgid "New Salem" +msgstr "新薩勒姆" + +#: wp-admin/includes/continents-cities.php:185 +msgid "Center" +msgstr "中心市" + +#: wp-admin/includes/continents-cities.php:183 +msgid "North Dakota" +msgstr "北達科他" + +#: wp-admin/includes/continents-cities.php:182 +msgid "Noronha" +msgstr "諾拉哈" + +#: wp-admin/includes/continents-cities.php:181 +msgid "Nome" +msgstr "諾姆" + +#: wp-admin/includes/continents-cities.php:180 +msgid "Nipigon" +msgstr "尼皮貢" + +#: wp-admin/includes/continents-cities.php:179 +msgid "New York" +msgstr "紐約" + +#: wp-admin/includes/continents-cities.php:178 +msgid "Nassau" +msgstr "拿索" + +#: wp-admin/includes/continents-cities.php:177 +msgid "Montserrat" +msgstr "蒙特色拉特島" + +#: wp-admin/includes/continents-cities.php:176 +msgid "Montreal" +msgstr "蒙特婁" + +#: wp-admin/includes/continents-cities.php:175 +msgid "Montevideo" +msgstr "蒙特維多" + +#: wp-admin/includes/continents-cities.php:174 +msgid "Monterrey" +msgstr "蒙特利" + +#: wp-admin/includes/continents-cities.php:173 +msgid "Moncton" +msgstr "蒙克頓" + +#: wp-admin/includes/continents-cities.php:172 +msgid "Miquelon" +msgstr "密克隆群島" + +#: wp-admin/includes/continents-cities.php:171 +msgid "Mexico City" +msgstr "墨西哥城" + +#: wp-admin/includes/continents-cities.php:169 +msgid "Merida" +msgstr "梅里達" + +#: wp-admin/includes/continents-cities.php:168 +msgid "Menominee" +msgstr "梅諾米尼" + +#: wp-admin/includes/continents-cities.php:167 +msgid "Mazatlan" +msgstr "馬札特蘭" + +#: wp-admin/includes/continents-cities.php:165 +msgid "Martinique" +msgstr "馬丁尼克" + +#: wp-admin/includes/continents-cities.php:164 +msgid "Marigot" +msgstr "馬里戈" + +#: wp-admin/includes/continents-cities.php:163 +msgid "Manaus" +msgstr "瑪瑙斯" + +#: wp-admin/includes/continents-cities.php:162 +msgid "Managua" +msgstr "馬納瓜" + +#: wp-admin/includes/continents-cities.php:161 +msgid "Maceio" +msgstr "馬瑟歐" + +#: wp-admin/includes/continents-cities.php:159 +msgid "Los Angeles" +msgstr "洛杉磯" + +#: wp-admin/includes/continents-cities.php:158 +msgid "Lima" +msgstr "利馬" + +#: wp-admin/includes/continents-cities.php:157 +msgid "La Paz" +msgstr "拉帕茲" + +#: wp-admin/includes/continents-cities.php:155 +msgid "Knox IN" +msgstr "諾克斯" + +#: wp-admin/includes/continents-cities.php:154 +msgid "Monticello" +msgstr "蒙蒂塞洛" + +#: wp-admin/includes/continents-cities.php:153 +msgid "Louisville" +msgstr "路易維爾" + +#: wp-admin/includes/continents-cities.php:152 +msgid "Kentucky" +msgstr "肯塔基州" + +#: wp-admin/includes/continents-cities.php:151 +msgid "Juneau" +msgstr "朱諾" + +#: wp-admin/includes/continents-cities.php:150 +msgid "Jamaica" +msgstr "牙買加" + +#: wp-admin/includes/continents-cities.php:149 +msgid "Iqaluit" +msgstr "伊魁特" + +#: wp-admin/includes/continents-cities.php:148 +msgid "Inuvik" +msgstr "因紐維克" + +#: wp-admin/includes/continents-cities.php:147 +msgid "Winamac" +msgstr "威納馬克" + +#: wp-admin/includes/continents-cities.php:146 +msgid "Vincennes" +msgstr "湯森斯" + +#: wp-admin/includes/continents-cities.php:145 +msgid "Vevay" +msgstr "韋韋" + +#: wp-admin/includes/continents-cities.php:144 +msgid "Tell City" +msgstr "特爾城" + +#: wp-admin/includes/continents-cities.php:143 +msgid "Petersburg" +msgstr "聖彼得堡" + +#: wp-admin/includes/continents-cities.php:142 +msgid "Marengo" +msgstr "馬倫戈" + +#: wp-admin/includes/continents-cities.php:141 +msgid "Knox" +msgstr "諾克斯" + +#: wp-admin/includes/continents-cities.php:140 +msgid "Indianapolis" +msgstr "印第安納波利斯" + +#: wp-admin/includes/continents-cities.php:139 +msgid "Indiana" +msgstr "印第安那州" + +#: wp-admin/includes/continents-cities.php:138 +msgid "Hermosillo" +msgstr "埃莫西約" + +#: wp-admin/includes/continents-cities.php:137 +msgid "Havana" +msgstr "哈瓦那" + +#: wp-admin/includes/continents-cities.php:136 +msgid "Halifax" +msgstr "哈利法克斯" + +#: wp-admin/includes/continents-cities.php:135 +msgid "Guyana" +msgstr "蓋亞那" + +#: wp-admin/includes/continents-cities.php:134 +msgid "Guayaquil" +msgstr "圭亞基爾" + +#: wp-admin/includes/continents-cities.php:133 +msgid "Guatemala" +msgstr "瓜地馬拉" + +#: wp-admin/includes/continents-cities.php:132 +msgid "Guadeloupe" +msgstr "瓜地洛普" + +#: wp-admin/includes/continents-cities.php:131 +msgid "Grenada" +msgstr "格瑞那達" + +#: wp-admin/includes/continents-cities.php:130 +msgid "Grand Turk" +msgstr "格蘭土克" + +#: wp-admin/includes/continents-cities.php:129 +msgid "Goose Bay" +msgstr "古斯貝" + +#: wp-admin/includes/continents-cities.php:128 +msgid "Godthab" +msgstr "哥特哈布" + +#: wp-admin/includes/continents-cities.php:127 +msgid "Glace Bay" +msgstr "格萊斯貝" + +#: wp-admin/includes/continents-cities.php:126 +msgid "Fortaleza" +msgstr "福塔力沙" + +#: wp-admin/includes/continents-cities.php:125 +msgid "Fort Wayne" +msgstr "韋恩堡" + +#: wp-admin/includes/continents-cities.php:123 +msgid "Ensenada" +msgstr "恩瑟納達" + +#: wp-admin/includes/continents-cities.php:122 +msgid "El Salvador" +msgstr "薩爾瓦多" + +#: wp-admin/includes/continents-cities.php:121 +msgid "Eirunepe" +msgstr "埃魯內佩" + +#: wp-admin/includes/continents-cities.php:120 +msgid "Edmonton" +msgstr "艾德蒙頓" + +#: wp-admin/includes/continents-cities.php:119 +msgid "Dominica" +msgstr "多明尼加" + +#: wp-admin/includes/continents-cities.php:118 +msgid "Detroit" +msgstr "底特律" + +#: wp-admin/includes/continents-cities.php:117 +msgid "Denver" +msgstr "丹佛" + +#: wp-admin/includes/continents-cities.php:116 +msgid "Dawson Creek" +msgstr "道森河市" + +#: wp-admin/includes/continents-cities.php:115 +msgid "Dawson" +msgstr "道森市" + +#: wp-admin/includes/continents-cities.php:114 +msgid "Danmarkshavn" +msgstr "格陵蘭" + +#: wp-admin/includes/continents-cities.php:113 +msgid "Curacao" +msgstr "古拉果" + +#: wp-admin/includes/continents-cities.php:112 +msgid "Cuiaba" +msgstr "古雅巴" + +#: wp-admin/includes/continents-cities.php:110 +msgid "Costa Rica" +msgstr "哥斯大黎加" + +#: wp-admin/includes/continents-cities.php:109 +msgid "Coral Harbour" +msgstr "珊瑚港" + +#: wp-admin/includes/continents-cities.php:108 +msgid "Chihuahua" +msgstr "赤瓦瓦" + +#: wp-admin/includes/continents-cities.php:107 +msgid "Chicago" +msgstr "芝加哥" + +#: wp-admin/includes/continents-cities.php:106 +msgid "Cayman" +msgstr "開曼群島" + +#: wp-admin/includes/continents-cities.php:105 +msgid "Cayenne" +msgstr "開雲" + +#: wp-admin/includes/continents-cities.php:104 +msgid "Caracas" +msgstr "卡拉卡斯" + +#: wp-admin/includes/continents-cities.php:103 +msgid "Cancun" +msgstr "坎昆" + +#: wp-admin/includes/continents-cities.php:102 +msgid "Campo Grande" +msgstr "格蘭德營" + +#: wp-admin/includes/continents-cities.php:101 +msgid "Cambridge Bay" +msgstr "劍橋灣" + +#: wp-admin/includes/continents-cities.php:100 +msgid "Boise" +msgstr "波夕" + +#: wp-admin/includes/continents-cities.php:99 +msgid "Bogota" +msgstr "波哥大" + +#: wp-admin/includes/continents-cities.php:98 +msgid "Boa Vista" +msgstr "博阿維斯塔島" + +#: wp-admin/includes/continents-cities.php:97 +msgid "Blanc-Sablon" +msgstr "布郎薩布隆" + +#: wp-admin/includes/continents-cities.php:96 +msgid "Belize" +msgstr "貝里斯" + +#: wp-admin/includes/continents-cities.php:95 +msgid "Belem" +msgstr "貝倫" + +#: wp-admin/includes/continents-cities.php:94 +msgid "Barbados" +msgstr "巴貝多" + +#: wp-admin/includes/continents-cities.php:92 +msgid "Bahia" +msgstr "巴伊亞" + +#: wp-admin/includes/continents-cities.php:91 +msgid "Atka" +msgstr "阿特卡" + +#: wp-admin/includes/continents-cities.php:90 +msgid "Atikokan" +msgstr "阿蒂科肯" + +#: wp-admin/includes/continents-cities.php:89 +msgid "Asuncion" +msgstr "亞松森" + +#: wp-admin/includes/continents-cities.php:88 +msgid "Aruba" +msgstr "阿路巴" + +#: wp-admin/includes/continents-cities.php:87 +msgid "Ushuaia" +msgstr "烏斯懷亞" + +#: wp-admin/includes/continents-cities.php:86 +msgid "Tucuman" +msgstr "圖庫曼" + +#: wp-admin/includes/continents-cities.php:85 +msgid "San Luis" +msgstr "聖路易斯" + +#: wp-admin/includes/continents-cities.php:84 +msgid "San Juan" +msgstr "聖胡安" + +#: wp-admin/includes/continents-cities.php:82 +msgid "Rio Gallegos" +msgstr "里奧加耶戈斯" + +#: wp-admin/includes/continents-cities.php:81 +msgid "Mendoza" +msgstr "門多薩" + +#: wp-admin/includes/continents-cities.php:80 +msgid "La Rioja" +msgstr "拉里奧哈" + +#: wp-admin/includes/continents-cities.php:79 +msgid "Jujuy" +msgstr "胡胡伊" + +#: wp-admin/includes/continents-cities.php:78 +msgid "Cordoba" +msgstr "科多瓦" + +#: wp-admin/includes/continents-cities.php:77 +msgid "ComodRivadavia" +msgstr "科木多洛" + +#: wp-admin/includes/continents-cities.php:76 +msgid "Catamarca" +msgstr "卡達馬卡" + +#: wp-admin/includes/continents-cities.php:75 +msgid "Buenos Aires" +msgstr "布宜諾斯艾利斯" + +#: wp-admin/includes/continents-cities.php:74 +msgid "Argentina" +msgstr "阿根廷" + +#: wp-admin/includes/continents-cities.php:73 +msgid "Araguaina" +msgstr "阿拉瓜伊納" + +#: wp-admin/includes/continents-cities.php:72 +msgid "Antigua" +msgstr "安地卡" + +#: wp-admin/includes/continents-cities.php:71 +msgid "Anguilla" +msgstr "安圭拉" + +#: wp-admin/includes/continents-cities.php:70 +msgid "Anchorage" +msgstr "安克拉治" + +#: wp-admin/includes/continents-cities.php:69 +msgid "Adak" +msgstr "埃達克" + +#: wp-admin/includes/continents-cities.php:68 +msgid "America" +msgstr "美洲" + +#: wp-admin/includes/continents-cities.php:66 +msgid "Windhoek" +msgstr "溫吐克" + +#: wp-admin/includes/continents-cities.php:65 +msgid "Tunis" +msgstr "突尼斯" + +#: wp-admin/includes/continents-cities.php:64 +msgid "Tripoli" +msgstr "的黎波里" + +#: wp-admin/includes/continents-cities.php:63 +msgid "Timbuktu" +msgstr "廷巴克圖" + +#: wp-admin/includes/continents-cities.php:62 +msgid "Sao Tome" +msgstr "聖多美" + +#: wp-admin/includes/continents-cities.php:61 +msgid "Porto-Novo" +msgstr "新港" + +#: wp-admin/includes/continents-cities.php:60 +msgid "Ouagadougou" +msgstr "瓦加杜古" + +#: wp-admin/includes/continents-cities.php:59 +msgid "Nouakchott" +msgstr "諾克少" + +#: wp-admin/includes/continents-cities.php:58 +msgid "Niamey" +msgstr "尼阿美" + +#: wp-admin/includes/continents-cities.php:57 +msgid "Ndjamena" +msgstr "恩加美納" + +#: wp-admin/includes/continents-cities.php:56 +msgid "Nairobi" +msgstr "奈洛比" + +#: wp-admin/includes/continents-cities.php:55 +msgid "Monrovia" +msgstr "蒙羅維亞" + +#: wp-admin/includes/continents-cities.php:54 +msgid "Mogadishu" +msgstr "摩加迪休" + +#: wp-admin/includes/continents-cities.php:53 +msgid "Mbabane" +msgstr "墨巴本" + +#: wp-admin/includes/continents-cities.php:52 +msgid "Maseru" +msgstr "馬塞魯" + +#: wp-admin/includes/continents-cities.php:51 +msgid "Maputo" +msgstr "馬布多" + +#: wp-admin/includes/continents-cities.php:50 +msgid "Malabo" +msgstr "馬拉博" + +#: wp-admin/includes/continents-cities.php:49 +msgid "Lusaka" +msgstr "路沙卡" + +#: wp-admin/includes/continents-cities.php:48 +msgid "Lubumbashi" +msgstr "羅彭巴布" + +#: wp-admin/includes/continents-cities.php:47 +msgid "Luanda" +msgstr "盧安達" + +#: wp-admin/includes/continents-cities.php:46 +msgid "Lome" +msgstr "洛梅" + +#: wp-admin/includes/continents-cities.php:45 +msgid "Libreville" +msgstr "自由市" + +#: wp-admin/includes/continents-cities.php:44 +msgid "Lagos" +msgstr "拉哥斯" + +#: wp-admin/includes/continents-cities.php:43 +msgid "Kinshasa" +msgstr "金夏沙" + +#: wp-admin/includes/continents-cities.php:42 +msgid "Kigali" +msgstr "吉佳利" + +#: wp-admin/includes/continents-cities.php:41 +msgid "Khartoum" +msgstr "喀土穆" + +#: wp-admin/includes/continents-cities.php:40 +msgid "Kampala" +msgstr "坎帕拉" + +#: wp-admin/includes/continents-cities.php:38 +msgid "Johannesburg" +msgstr "約翰尼斯堡" + +#: wp-admin/includes/continents-cities.php:37 +msgid "Harare" +msgstr "哈拉雷" + +#: wp-admin/includes/continents-cities.php:36 +msgid "Gaborone" +msgstr "嘉柏隆里" + +#: wp-admin/includes/continents-cities.php:35 +msgid "Freetown" +msgstr "自由城" + +#: wp-admin/includes/continents-cities.php:34 +msgid "El Aaiun" +msgstr "阿尤恩" + +#: wp-admin/includes/continents-cities.php:33 +msgid "Douala" +msgstr "杜阿拉" + +#: wp-admin/includes/continents-cities.php:32 +msgid "Djibouti" +msgstr "吉布地" + +#: wp-admin/includes/continents-cities.php:31 +msgid "Dar es Salaam" +msgstr "達萊撒蘭" + +#: wp-admin/includes/continents-cities.php:30 +msgid "Dakar" +msgstr "達卡" + +#: wp-admin/includes/continents-cities.php:29 +msgid "Conakry" +msgstr "科納克里" + +#: wp-admin/includes/continents-cities.php:28 +msgid "Ceuta" +msgstr "修達" + +#: wp-admin/includes/continents-cities.php:27 +msgid "Casablanca" +msgstr "卡薩布蘭卡" + +#: wp-admin/includes/continents-cities.php:26 +msgid "Cairo" +msgstr "開羅" + +#: wp-admin/includes/continents-cities.php:25 +msgid "Bujumbura" +msgstr "布松布拉" + +#: wp-admin/includes/continents-cities.php:24 +msgid "Brazzaville" +msgstr "布拉薩市" + +#: wp-admin/includes/continents-cities.php:23 +msgid "Blantyre" +msgstr "布藍泰爾" + +#: wp-admin/includes/continents-cities.php:22 +msgid "Bissau" +msgstr "比索" + +#: wp-admin/includes/continents-cities.php:21 +msgid "Banjul" +msgstr "班竹" + +#: wp-admin/includes/continents-cities.php:20 +msgid "Bangui" +msgstr "班基" + +#: wp-admin/includes/continents-cities.php:19 +msgid "Bamako" +msgstr "巴馬科" + +#: wp-admin/includes/continents-cities.php:18 +msgid "Asmera" +msgstr "阿斯馬拉" + +#: wp-admin/includes/continents-cities.php:17 +msgid "Asmara" +msgstr "阿斯馬拉" + +#: wp-admin/includes/continents-cities.php:16 +msgid "Algiers" +msgstr "阿爾及爾" + +#: wp-admin/includes/continents-cities.php:15 +msgid "Addis Ababa" +msgstr "阿迪斯阿貝巴" + +#: wp-admin/includes/continents-cities.php:14 +msgid "Accra" +msgstr "阿克拉" + +#: wp-admin/includes/continents-cities.php:13 +msgid "Abidjan" +msgstr "阿必尚" + +#: wp-admin/includes/continents-cities.php:12 +msgid "Africa" +msgstr "非洲" \ No newline at end of file diff --git a/languages/plugins/akismet-zh_TW.l10n.php b/languages/plugins/akismet-zh_TW.l10n.php new file mode 100644 index 0000000..115b91a --- /dev/null +++ b/languages/plugins/akismet-zh_TW.l10n.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2026-04-23 23:00:00+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'Plugins - Akismet Anti-spam: Spam Protection - Stable (latest release)','language'=>'zh_TW','messages'=>['Would you like to scan pending comments for spam?'=>'是否要掃描待處理的留言中是否出現垃圾訊息?','MCP (Model Context Protocol) allows AI assistants to access Akismet statistics and spam checking features.'=>'MCP (模型上下文協定) 允許 AI 助理存取 Akismet 統計資料和垃圾訊息檢查功能。',' clients to access Akismet data and functionality'=>' 用戶端可存取 Akismet 資料與功能','MCP'=>'MCP','Model Context Protocol'=>'模型上下文協定','Allow '=>'允許 ','Tool access'=>'工具存取權','Copy API key'=>'複製 API 金鑰','View detailed stats'=>'檢視詳細統計資料','If true, allow MCP clients to access Akismet data and functionality.'=>'如果是 True,即允許 MCP 用戶端存取 Akismet 資料與功能。','API key for Akismet.'=>'Akismet 的 API 金鑰。','Akismet API Key'=>'Akismet API 鑰匙','Protect your site from spam.'=>'保護你的網站防止垃圾訊息騷擾。','Abilities for spam protection and comment moderation with Akismet.'=>'透過 Akismet 提供的垃圾訊息防護和留言審核功能。','Failed to retrieve stats from Akismet API.'=>'無法從 Akismet API 擷取統計資料。','Error message if the operation could not be completed.'=>'如果作業無法完成,就會出現錯誤訊息。','The time interval for these stats.'=>'這些統計資料的時間間隔。','Date for this period.'=>'此期間的日期。','Number of legitimate comments incorrectly marked as spam in this period.'=>'這段期間內未正確標示為垃圾訊息的合法留言數目。','Number of spam comments that were missed in this period.'=>'這段期間內遺漏的垃圾訊息留言數目。','Total number of legitimate comments approved in this period.'=>'這段期間核准的合法留言總數。','Total number of spam comments blocked in this period.'=>'這段期間封鎖的垃圾訊息留言總數。','Monthly breakdown of statistics.'=>'每月統計資料明細。','Estimated time saved by Akismet blocking spam, in seconds.'=>'Akismet 封鎖垃圾訊息的預估節省時間 (秒)。','Accuracy percentage of spam detection.'=>'垃圾訊息偵測的精確度百分比。','Number of legitimate comments incorrectly marked as spam.'=>'未正確標示為垃圾訊息的合法留言數目。','Number of spam comments that were missed.'=>'遺漏的垃圾訊息留言數目。','Total number of legitimate comments approved.'=>'已核准的合法留言總數。','Total number of spam comments blocked.'=>'封鎖的垃圾訊息留言總數。','Whether the stats were successfully retrieved.'=>'是否成功擷取統計資料。','The time interval for stats. Options: "6-months", "all", or "60-days".'=>'統計資料的時間間隔。 選項:「6 個月」、「全部」或「60 天」。','Retrieves Akismet spam protection statistics including spam blocked count, accuracy percentage, and other key metrics.'=>'擷取 Akismet 垃圾訊息防護統計資料,包括垃圾訊息封鎖次數、精確度百分比和其他重要指標。','Get Akismet statistics'=>'取得 Akismet 統計資料','Failed to check comment with Akismet API.'=>'無法透過 Akismet API 確認留言。','Debug information to help troubleshoot issues.'=>'偵錯資訊可協助疑難排解問題。','Error message if the check could not be completed.'=>'如果無法完成檢查,就會出現錯誤訊息。','Unique identifier for this check, used for webhooks and updates.'=>'此檢查的唯一識別碼,用於 Webhook 和更新。','Optional recommendation from Akismet (e.g., "discard" for obvious spam).'=>'Akismet 的選用建議 (例如,對於明顯是垃圾訊息的「捨棄」)。','Whether the comment is identified as spam.'=>'留言是否被辨識為垃圾訊息。','Whether the check was successfully performed.'=>'是否已成功執行檢查。','The user role of the comment author if logged in.'=>'留言作者的使用者角色 (若登入)。','The HTTP_REFERER header.'=>'HTTP_REFERER 標頭。','User agent string of the web browser submitting the comment.'=>'提交留言之網頁瀏覽器的使用者代理程式字串。','IP address of the commenter.'=>'留言者的 IP 位址。','The permanent link to the post or page.'=>'文章或頁面的永久連結。','The ID of the post the comment is being submitted to.'=>'在其中提交留言的文章 ID。','The comment type (e.g., "comment", "trackback", "pingback").'=>'留言類型 (例如「留言」、「引用通知」、「引用通知」)。','The comment content/text.'=>'留言內容/文字。','URL/website of the comment author.'=>'留言作者的 URL/網站。','Email address of the comment author.'=>'留言作者的電子郵件地址。','Name of the comment author.'=>'留言者姓名。','Checks a comment against the Akismet spam filter to determine if it is spam or legitimate content.'=>'檢查留言是否符合 Akismet 垃圾訊息篩選條件,以判斷留言是否為垃圾訊息或合法內容。','Check comment for spam'=>'檢查留言中是否有垃圾訊息','Get started'=>'開始使用','Name your own price for personal sites. Businesses start on a paid plan.'=>'個人網站可以自訂付費價格,企業請採用付費方案。','Flexible pricing'=>'靈活的付費方式','Seamlessly integrates with plugins like Elementor, Contact Form 7, Jetpack and WPForms.'=>'可與 Elementor、Contact Form 7、Jetpack 及 WPForms 等外掛提供的聯絡表單無縫整合。','Works with popular contact forms'=>'可與常用的聯絡表單搭配使用','Akismet runs quietly in the background, saving you hours of manual moderation.'=>'Akismet 會在背景中悄無聲息的執行,節省網站管理員手動審閱的寶貴時間。','Zero effort'=>'無須煩心','Learns from billions of spam signals across the web to stop junk before it reaches you.'=>'從數十億個垃圾訊息信號中學習,進而在垃圾訊息開始侵擾網站前便加以阻擋。','Machine learning accuracy'=>'機器學習帶來的精確度','Protect your site from comment spam and contact form spam — automatically.'=>'自動保護這個網站,免受垃圾留言及垃圾聯絡表單回應的侵擾。','Increase your limit'=>'提高上限額度','Add an %s subscription'=>'新增 %s 訂閱','Your Akismet usage has been over your plan’s limit for two consecutive months. Next month, we will restrict your account after you reach the limit. Increase your limit to make sure your site stays protected from spam.'=>'你的 Akismet 用量已連續兩個月超過方案上限。 下個月,我們會在你達到上限後限制你的帳號。 提高上限額度,確保網站遠離垃圾訊息。','Please enter a new key or contact Akismet support'=>'請輸入新的金鑰,或聯絡 Akismet 支援團隊','Once you\'ve chosen a plan, return here to complete your setup.'=>'選擇方案後,請返回此處完成設定。','Please choose a free or paid plan so Akismet can protect your site from spam.'=>'請選擇免費或付費方案,讓 Akismet 保護你的網站不受垃圾訊息侵擾。','You can help us fight spam and upgrade your account by contributing a token amount'=>'只要支付一筆象徵性款項,就能協助我們打擊垃圾訊息,並且升級你的帳號','Please contact Akismet support for assistance.'=>'請向 Akismet 支援團隊尋求協助。','Please visit Akismet.com to purchase a new subscription.'=>'請造訪 Akismet.com 購買新的訂閱。','Please contact your web host or firewall administrator and give them this information about Akismet’s system requirements'=>'請聯絡你的網頁主機或防火牆管理員,向他們提供這項 Akismet 系統需求的資訊','Your web host or server administrator has disabled PHP’s gethostbynamel function.'=>'你的網頁主機服務供應商或伺服器管理員已停用 PHP 的 gethostbynamel 功能。','For more information, see the error documentation on akismet.com'=>'如需詳細資訊,請參閱 akismet.com上的錯誤說明文件','If you believe your site should not be classified as commercial, please get in touch'=>'如果認為你的網站不屬於為商業類別,請與我們聯絡','Your current subscription is for personal, non-commercial use. Please upgrade your plan to continue using Akismet.'=>'目前的訂閱為非商用的個人方案。 請升級方案,以繼續使用 Akismet。','Akismet provisionally cleared this comment.'=>'Akismet 已暫時清除這則留言。','Show less'=>'顯示較少','Show all %d plugins'=>'顯示全部 %d 個外掛','View documentation'=>'查看線上說明','Documentation for %s'=>'%s 線上說明','%s logo'=>'%s 標誌','See supported integrations'=>'查看支援的整合項目','Akismet works with other plugins to keep spam away.'=>'Akismet 可與其他外掛搭配使用,以防垃圾留言侵擾。','Compatible plugins'=>'相容外掛','Error getting compatible plugins.'=>'取得相容外掛時發生錯誤。','Upgrade plan'=>'升級方案','We detected commercial activity on your site'=>'系統在網站中偵測到商業活動','Almost done! Configure Akismet and say goodbye to spam'=>'即將完成!完成 Akismet 設定後,便能告別垃圾留言','This comment was not sent to Akismet when it was submitted because it was caught by the comment disallowed list.'=>'由於這則留言遭到留言封鎖清單攔截,因此並未於提交時傳送至 Akismet。','This comment was not sent to Akismet when it was submitted because it was caught by something else.'=>'由於這則留言遭到其他項目攔截,因此並未於提交時傳送至 Akismet。','Multiple comments matched request.'=>'多則留言符合條件。','Could not find matching comment.'=>'找不到符合條件的留言。','The \'comments\' parameter must be an array.'=>'comments 參數必須是陣列。','Akismet cleared this comment during a recheck. It did not update the comment status because it had already been modified by another user or plugin.'=>'Akismet 在重新檢查時已清除這則留言。由於其他使用者或外掛已修改留言狀態,因此 Akismet 不會更新留言狀態。','Akismet determined this comment was spam during a recheck. It did not update the comment status because it had already been modified by another user or plugin.'=>'Akismet 在重新檢查時已將這則留言判定為垃圾留言。由於其他使用者或外掛已修改留言狀態,因此 Akismet 不會更新留言狀態。','Akismet cleared this comment and updated its status via webhook.'=>'Akismet 已清除這則留言並透過 Webhook 更新其留言狀態。','Akismet caught this comment as spam and updated its status via webhook.'=>'Akismet 已將這則留言判定為垃圾留言並透過 Webhook 更新其留言狀態。','Akismet is now protecting your site from spam.'=>'Akismet 會持續保護這個網站免於垃圾留言的侵擾。','Account overview'=>'帳號總覽','Spam in the %1$s older than %2$d day is deleted automatically.'=>'%1$s中的垃圾留言將在保留 %2$d 天後自動刪除。','spam folder'=>'垃圾留言資料夾','Akismet detailed stats'=>'Akismet 詳細統計資料','Back to settings'=>'返回外掛設定頁面','Subscription type'=>'約期授權類型','To help your site with transparency under privacy laws like the GDPR, Akismet can display a notice to your users under your comment forms.'=>'為了協助這個網站符合個人資料保護法 (例如 GDPR) 的透明度規範,Akismet 可以在網站的留言表單下方向網站訪客顯示相關通知。','Spam filtering'=>'垃圾留言篩選方式','API key'=>'API 金鑰','Akismet stats'=>'Akismet 統計資料','Automattic - Anti-spam Team'=>'Automattic - 反垃圾留言團隊','Akismet Anti-spam: Spam Protection'=>'Akismet Anti-spam: 垃圾留言防護','WP-Cron has been disabled using the DISABLE_WP_CRON constant. Comment rechecks may not work properly.'=>'這個網站使用了 DISABLE_WP_CRON 常數,因此 WP-Cron 已停用,這會造成重新檢查留言的功能無法正確執行。','%1$s - %2$s'=>'%1$s - %2$s','(opens in a new tab)'=>'(在新分頁中開啟)','Upgrade to %s'=>'升級至 %s 方案','Since %1$s, your account made %2$s API calls, compared to your plan’s limit of %3$s.'=>'目前方案的使用量上限為可呼叫 %3$s 次,從 %1$s 年開始,你的 Akismet 帳號已呼叫 %2$s 次 API。','Your Akismet usage has been over your plan’s limit for three consecutive months. We have restricted your account for the rest of the month. Increase your limit to make sure your site stays protected from spam.'=>'你的 Akismet 用量已連續三個月超過方案上限。 我們已限制你的帳號,效期至本月底。 提高上限額度,確保網站遠離垃圾訊息。','Your Akismet usage is nearing your plan’s limit for the third consecutive month. We will restrict your account after you reach the limit. Increase your limit to make sure your site stays protected from spam.'=>'你的 Akismet 使用量已連續第三個月接近方案額度上限。 我們會在你達到上限後,限制你的帳號。 提高上限額度,確保網站遠離垃圾訊息。','Your account has been restricted'=>'你的 Akismet 帳號已受到限制。','Your Akismet account usage is approaching your plan’s limit'=>'你的 Akismet 帳號使用量已接近目前方案的使用量上限。','Your Akismet account usage is over your plan’s limit'=>'你的 Akismet 帳號使用量已超過目前方案的使用量上限。','Your API key is no longer valid.'=>'你的 API 金鑰已失效。','Checking for Spam (%1$s%)'=>'垃圾留言檢查進度: %1$s%','No comment history.'=>'尚無留言歷史記錄。','Akismet was unable to recheck this comment.'=>'Akismet 無法重新檢查這則留言。','Akismet was unable to check this comment but will automatically retry later.'=>'Akismet 無法檢查這則留言,稍後會自動重試。','Comment was caught by %s.'=>'留言已由 %s 進行判定。','Akismet is not configured. Please enter an API key.'=>'Akismet 尚未完成設定,請輸入 API 金鑰。','Enter your API key'=>'輸入 API 金鑰','Akismet could not recheck your comments for spam.'=>'Akismet 不會重新檢查已判定為垃圾留言的項目。','You don’t have permission to do that.'=>'目前的登入身分沒有進行這項操作的權限。','Stats response could not be decoded.'=>'無法解碼統計資料回應。','Currently unable to fetch stats. Please try again.'=>'目前無法擷取統計資料。請再試一次。','API key must be set to fetch stats.'=>'必須設定 API 金鑰才能擷取統計資料。','Do not display privacy notice.'=>'不顯示隱私權聲明','Display a privacy notice under your comment forms.'=>'在留言表單下方顯示隱私權聲明','Akismet privacy notice'=>'Akismet 隱私權聲明','Privacy'=>'隱私權','This site uses Akismet to reduce spam. Learn how your comment data is processed.'=>'這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料。','We collect information about visitors who comment on Sites that use our Akismet Anti-spam service. The information we collect depends on how the User sets up Akismet for the Site, but typically includes the commenter\'s IP address, user agent, referrer, and Site URL (along with other information directly provided by the commenter such as their name, username, email address, and the comment itself).'=>'Akismet 公司會在採用 Akismet 反垃圾留言服務的網站上,對進行留言的訪客收集相關資料。Akismet 公司收集的資訊取決於網站管理員在這個網站上為 Akismet 服務所進行的設定,但通常會包含留言者的 IP 地址、使用者代理程式,參照網址及網站網址,以及由留言者直接提供的其他資訊,例如姓名、使用者名稱、電子郵件地址及留言內容評論本身。','Comment discarded.'=>'留言已捨棄。','This site\'s API key is hardcoded and cannot be deleted.'=>'這個網站的 API 金鑰已強制寫入網站程式碼中,導致無法刪除 API 金鑰。','The value provided is not a valid and registered API key.'=>'目前所提供的 API 金鑰無效且未經註冊。','This site\'s API key is hardcoded and cannot be changed via the API.'=>'這個網站的 API 金鑰已強制寫入網站程式碼中,導致無法變更 API 金鑰。','The time period for which to retrieve stats. Options: 60-days, 6-months, all'=>'擷取指定時間週期的統計資料,可設定為 60 天、6 個月或全期','If true, show the number of approved comments beside each comment author in the comments list page.'=>'設定後 Akismet 會在留言清單頁面中,將已核准的留言數目顯示在每位留言者的名稱旁。','If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.'=>'設定後 Akismet 便會自動捨棄最嚴重的垃圾留言,而不會將其留置於垃圾留言資料夾。','A 12-character Akismet API key. Available at akismet.com/account'=>'一組 12 個字元的 Akismet API 金鑰,可於 akismet.com/account 取得。','Your site can’t connect to the Akismet servers.'=>'這個網站無法與 Akismet 伺服器進行連線。','An Akismet API key has been defined in the %s file for this site.'=>'Akismet API 金鑰已定義於這個網站的 %s 檔案中。','On this page, you are able to update your Akismet settings and view spam stats.'=>'網站管理員可以在這個頁面中為 Akismet 外掛變更設定並檢視垃圾留言統計資料。','Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. Akismet Anti-spam keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.'=>'數以百萬的使用者採用 Akismet,它是保護網站遠離垃圾留言的絕佳方式,也為這個網站提供不間斷的保護。使用方式很簡單,啟用 Akismet 外掛後前往 [Akismet 設定] 頁面,輸入 Akismet 的 API 金鑰後儲存設定。','Akismet Anti-spam'=>'Akismet Anti-Spam','Connect with API key'=>'連結 API 金鑰','Connect with Jetpack'=>'以 Jetpack 進行連結','Eliminate spam from your site'=>'為網站清除垃圾留言','Set up your Akismet account'=>'設定 Akismet 帳號','Statistics'=>'統計資料','Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. It keeps your site protected even while you sleep. To get started, just go to your Akismet Settings page to set up your API key.'=>'數以百萬的使用者採用 Akismet,它是保護網站遠離垃圾留言的絕佳方式,也為這個網站提供不間斷的保護。使用方式很簡單,僅需前往 [Akismet 設定] 頁面,輸入 Akismet 的 API 金鑰後儲存設定。','Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. Your site is fully configured and being protected, even while you sleep.'=>'數以百萬的使用者採用 Akismet,它是保護網站遠離垃圾留言的絕佳方式,這個網站已完成完整設定,並由 Akismet 提供不間斷的保護。','%s comment was caught as spam.'=>'已判定 %s 則留言為垃圾留言。','No comments were caught as spam.'=>'沒有遭到判定為垃圾留言的留言。','Akismet checked %s comment.'=>'Akismet 已檢查 %s 則留言。','There were no comments to check. Akismet will only check comments awaiting moderation.'=>'沒有可供檢查的留言。Akismet 目前僅會檢查在 [待審閱] 清單中的留言。','Comment not found.'=>'沒有留言。','%d comment could not be checked.'=>'有 %d 則留言無法進行檢查。','%d comment moved to Spam.'=>'%d 則留言已移至垃圾留言資料夾。','Processed %d comment.'=>'已處理 %d 則留言。','Comment #%d could not be checked.'=>'無法檢查留言 #%d。','Failed to connect to Akismet.'=>'無法與 Akismet 進行連結。','Comment #%d is not spam.'=>'留言 #%d 不是垃圾留言。','Comment #%d is spam.'=>'留言 #%d 是垃圾留言。','%s false positive'=>'%s 則誤判留言','%s missed spam'=>'%s 則遺漏的垃圾留言','You don’t have an Akismet plan.'=>'這個網站並未採用任何 Akismet 方案。','Your Akismet subscription is suspended.'=>'已暫停目前使用的 Akismet 約期授權。','Your Akismet plan has been cancelled.'=>'已取消目前使用的 Akismet 方案。','Akismet has saved you %d minute!'=>'Akismet 為網站管理員節省了 %d 分鐘的清理時間!','Akismet has saved you %d hour!'=>'Akismet 為網站管理員節省了 %d 小時的清理時間!','Akismet has saved you %s day!'=>'Akismet 為網站管理員節省了 %s 天的清理時間!','Akismet filters out spam, so you can focus on more important things.'=>'Akismet 會自動篩選垃圾留言,所以網站管理員可以專注於更重要的事情。','The connection to akismet.com could not be established. Please refer to our guide about firewalls and check your server configuration.'=>'無法建立與 akismet.com 的連線。 請參閱我們的防火牆指引,並檢查伺服器設定。','The API key you entered could not be verified.'=>'無法驗證你輸入的 API 金鑰。','All systems functional.'=>'所有系統均正常運作。','Enabled.'=>'已啟用。','Akismet encountered a problem with a previous SSL request and disabled it temporarily. It will begin using SSL for requests again shortly.'=>'Akismet 遇到先前 SSL 要求所造成的問題,這會造成 Akismet 的暫時停用。Akismet 會盡快重新透過 SSL 協定進行要求。','Temporarily disabled.'=>'暫時停用。','Your Web server cannot make SSL requests; contact your Web host and ask them to add support for SSL requests.'=>'這個網站的網站伺服器無法進行 SSL 要求,請聯絡主機服務提供商並要求它加入對 SSL 要求的支援。','Disabled.'=>'已停用。','SSL status'=>'SSL 狀態','This comment was reported as not spam.'=>'這則留言已回報為非垃圾留言。','This comment was reported as spam.'=>'這則留言已回報為垃圾留言。','https://automattic.com/wordpress-plugins/'=>'https://automattic.com/wordpress-plugins/','https://akismet.com/'=>'https://akismet.com/','Manually enter an API key'=>'手動輸入 API 金鑰','Contact Akismet support'=>'聯絡 Akismet 技術支援團隊','The key you entered is invalid. Please double-check it.'=>'你輸入的金鑰並不正確,請再確認一次。','There is a problem with your API key.'=>'這個網站的 API 金鑰發生問題。','Your firewall may be blocking Akismet from connecting to its API. Please contact your host and refer to our guide about firewalls'=>'你的防火牆可能封鎖了 Akismet 與其 API 之間的連線。 請聯絡你的主機服務提供者,並參閱我們的防火牆指引','Network functions are disabled.'=>'網路功能已停用。','Akismet error code: %s'=>'Akismet 錯誤代碼: %s','Some comments have not yet been checked for spam by Akismet. They have been temporarily held for moderation and will automatically be rechecked later.'=>'部分留言尚未經由 Akismet 檢查是否為垃圾留言。這些留言已暫時擱置以待審閱,並將在稍後自動重新檢查。','Akismet has detected a problem.'=>'Akismet 已偵測到問題。','Change'=>'變更','Upgrade'=>'升級','Next billing date'=>'下一個帳單日期','Active'=>'使用中','No subscription found'=>'找不到約期授權','Missing'=>'遺漏','Suspended'=>'已暫停','Cancelled'=>'已取消','Save changes'=>'儲存設定','Disconnect this account'=>'中斷連結這個帳號','Note:'=>'請注意:','Always put spam in the Spam folder for review.'=>'一律將垃圾留言移至垃圾留言資料夾中,以供稍後審閱','Silently discard the worst and most pervasive spam so I never see it.'=>'自動捨棄最嚴重和最普遍的垃圾留言,一勞永逸','Akismet Anti-spam strictness'=>'Akismet 反垃圾留言嚴謹度','Show the number of approved comments beside each comment author.'=>'將已核准的留言數目顯示在每位留言者的名稱旁','Accuracy'=>'精確度','All time'=>'採用 Akismet 後','Spam blocked'=>'已阻擋的垃圾留言','Past six months'=>'過去六個月','Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.'=>'請將 WordPress 升級至最新版本,或將 Akismet 外掛程式降級至 2.4 版。','Akismet %1$s requires WordPress %2$s or higher.'=>'Akismet %1$s 需要 WordPress %2$s 或更新版本。','Akismet cleared this comment during an automatic retry.'=>'Akismet 在自動重試時已清除這則留言。','Akismet caught this comment as spam during an automatic retry.'=>'Akismet 在自動重試時已將這則留言判定為垃圾留言。','%s reported this comment as not spam.'=>'%s 已將這則留言回報為非垃圾留言。','%s reported this comment as spam.'=>'%s 已將這則留言回報為垃圾留言。','%1$s changed the comment status to %2$s.'=>'「%1$s」已將留言狀態變更為 [%2$s]。','Akismet was unable to check this comment (response: %s) but will automatically retry later.'=>'Akismet 無法檢查這則留言 (回應代碼: %s),稍後會自動重試。','Akismet cleared this comment.'=>'Akismet 已清除這則留言。','Comment status was changed to %s'=>'留言狀態已變更為 [%s]','Akismet caught this comment as spam.'=>'Akismet 已將這則留言判定為垃圾留言。','%1$s spam blocked by Akismet'=>'Akismet 已阻擋 %1$s 則垃圾留言','Title:'=>'標題:','Spam Blocked'=>'已阻擋的垃圾留言','Display the number of spam comments Akismet has caught'=>'顯示 Akismet 判定為垃圾留言的數量','Akismet Widget'=>'Akismet 小工具','Cleaning up spam takes time.'=>'清除垃圾留言需要一點時間。','Please check your Akismet configuration and contact your web host if problems persist.'=>'請檢查這個網站的 Akismet 設定。如果問題持續發生,請聯絡這個網站的主機服務提供商。','%s ago'=>'%s前','%s approved'=>'%s 則已核准留言','History'=>'歷史記錄','View comment history'=>'檢視留言歷史記錄','Un-spammed by %s'=>'由 %s 取消垃圾留言標示','Flagged as spam by %s'=>'由 %s 標示為垃圾留言','Cleared by Akismet'=>'由 Akismet 清除','Flagged as spam by Akismet'=>'由 Akismet 標示為垃圾留言','Awaiting spam check'=>'等待垃圾留言檢查結果','Akismet was unable to recheck this comment (response: %s).'=>'Akismet 無法重新檢查這則留言 (回應代碼: %s)。','Akismet re-checked and cleared this comment.'=>'Akismet 已重新檢查並清除這則留言。','Akismet re-checked and caught this comment as spam.'=>'Akismet 已重新檢查並將這則留言判定為垃圾留言。','Check for Spam'=>'檢查是否有垃圾留言','There’s nothing in your spam queue at the moment.'=>'目前垃圾留言清單中並無任何垃圾留言。','There’s %1$s comment in your spam queue right now.'=>'目前有 %1$s 則留言在垃圾留言清單中。','Akismet blocks spam from getting to your blog. '=>'Akismet 可在這個網站中阻擋垃圾留言。','Akismet has protected your site from %2$s spam comment already. '=>'Akismet 已保護這個網站免於 %2$s 則垃圾留言的侵擾。','Akismet has protected your site from %3$s spam comment.'=>'Akismet 已保護這個網站免於 %3$s 則垃圾留言的侵擾。','commentsSpam'=>'垃圾留言','Cheatin’ uh?'=>'很抱歉,無法進行這項操作。','Akismet Support'=>'Akismet 技術支援','Akismet FAQ'=>'Akismet 常見問題集','For more information:'=>'進一步了解相關資訊:','The subscription status - active, cancelled or suspended'=>'約期授權狀態: 使用中、已取消或已暫停','Status'=>'狀態','The Akismet subscription plan'=>'Akismet 約期授權方案','Subscription Type'=>'約期授權類型','Account'=>'帳號','Choose to either discard the worst spam automatically or to always put all spam in spam folder.'=>'選擇自動捨棄最嚴重的垃圾留言,或是一律將全部垃圾留言移至垃圾留言資料夾。','Strictness'=>'嚴謹度','Show the number of approved comments beside each comment author in the comments list page.'=>'在留言清單頁面中,將已核准的留言數量顯示在每位留言者的名稱旁。','Comments'=>'留言','Enter/remove an API key.'=>'輸入/移除 API 金鑰。','API Key'=>'API 金鑰','Akismet Configuration'=>'Akismet 設定','On this page, you are able to view stats on spam filtered on your site.'=>'網站管理員可以在這個頁面中檢視這個網站的垃圾留言篩選統計資料。','Akismet Stats'=>'Akismet 統計資料','Click the Use this Key button.'=>'點擊 [使用此金鑰] 按鈕。','Copy and paste the API key into the text field.'=>'請複製 API 金鑰並在文字欄位內貼上。','If you already have an API key'=>'如果已有 API 金鑰','Enter an API Key'=>'輸入 API 金鑰','Sign up for an account on %s to get an API Key.'=>'在 %s 上註冊帳號以取得 API 金鑰。','You need to enter an API key to activate the Akismet service on your site.'=>'請輸入 API 金鑰,才能為這個網站啟用 Akismet 服務。','New to Akismet'=>'第一次使用 Akismet','On this page, you are able to set up the Akismet plugin.'=>'網站管理員可以在這個頁面中為 Akismet 外掛進行設定。','Akismet Setup'=>'Akismet 設定','Overview'=>'概觀','Re-adding...'=>'正在重新加入...','(undo)'=>'(復原)','URL removed'=>'網址已移除','Removing...'=>'正在移除...','Remove this URL'=>'移除這個網址','Akismet'=>'Akismet','Settings'=>'設定','Comment History'=>'留言歷史記錄']]; \ No newline at end of file diff --git a/languages/plugins/akismet-zh_TW.mo b/languages/plugins/akismet-zh_TW.mo new file mode 100644 index 0000000..69037c4 Binary files /dev/null and b/languages/plugins/akismet-zh_TW.mo differ diff --git a/languages/plugins/akismet-zh_TW.po b/languages/plugins/akismet-zh_TW.po new file mode 100644 index 0000000..b14d05a --- /dev/null +++ b/languages/plugins/akismet-zh_TW.po @@ -0,0 +1,1303 @@ +# Translation of Plugins - Akismet Anti-spam: Spam Protection - Stable (latest release) in Chinese (Taiwan) +# This file is distributed under the same license as the Plugins - Akismet Anti-spam: Spam Protection - Stable (latest release) package. +msgid "" +msgstr "" +"PO-Revision-Date: 2026-04-23 23:00:00+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: Plugins - Akismet Anti-spam: Spam Protection - Stable (latest release)\n" + +#. translators: The placeholder is a URL for checking pending comments. +#: views/notice.php:213 +msgid "Would you like to scan pending comments for spam?" +msgstr "是否要掃描待處理的留言中是否出現垃圾訊息?" + +#: views/config.php:268 +msgid "MCP (Model Context Protocol) allows AI assistants to access Akismet statistics and spam checking features." +msgstr "MCP (模型上下文協定) 允許 AI 助理存取 Akismet 統計資料和垃圾訊息檢查功能。" + +#: views/config.php:264 +msgid " clients to access Akismet data and functionality" +msgstr " 用戶端可存取 Akismet 資料與功能" + +#: views/config.php:264 +msgid "MCP" +msgstr "MCP" + +#: views/config.php:264 +msgid "Model Context Protocol" +msgstr "模型上下文協定" + +#: views/config.php:264 +msgid "Allow " +msgstr "允許 " + +#: views/config.php:251 +msgid "Tool access" +msgstr "工具存取權" + +#: views/config.php:104 +msgid "Copy API key" +msgstr "複製 API 金鑰" + +#: views/config.php:72 +msgid "View detailed stats" +msgstr "檢視詳細統計資料" + +#: class.akismet-rest-api.php:70 +msgid "If true, allow MCP clients to access Akismet data and functionality." +msgstr "如果是 True,即允許 MCP 用戶端存取 Akismet 資料與功能。" + +#: class.akismet-admin.php:119 +msgid "API key for Akismet." +msgstr "Akismet 的 API 金鑰。" + +#: class.akismet-admin.php:118 +msgid "Akismet API Key" +msgstr "Akismet API 鑰匙" + +#: class-akismet-connector.php:130 +msgid "Protect your site from spam." +msgstr "保護你的網站防止垃圾訊息騷擾。" + +#: class-akismet-abilities.php:67 +msgid "Abilities for spam protection and comment moderation with Akismet." +msgstr "透過 Akismet 提供的垃圾訊息防護和留言審核功能。" + +#: abilities/class-akismet-ability-get-stats.php:189 +msgid "Failed to retrieve stats from Akismet API." +msgstr "無法從 Akismet API 擷取統計資料。" + +#: abilities/class-akismet-ability-get-stats.php:137 +msgid "Error message if the operation could not be completed." +msgstr "如果作業無法完成,就會出現錯誤訊息。" + +#: abilities/class-akismet-ability-get-stats.php:133 +msgid "The time interval for these stats." +msgstr "這些統計資料的時間間隔。" + +#: abilities/class-akismet-ability-get-stats.php:126 +msgid "Date for this period." +msgstr "此期間的日期。" + +#: abilities/class-akismet-ability-get-stats.php:122 +msgid "Number of legitimate comments incorrectly marked as spam in this period." +msgstr "這段期間內未正確標示為垃圾訊息的合法留言數目。" + +#: abilities/class-akismet-ability-get-stats.php:118 +msgid "Number of spam comments that were missed in this period." +msgstr "這段期間內遺漏的垃圾訊息留言數目。" + +#: abilities/class-akismet-ability-get-stats.php:114 +msgid "Total number of legitimate comments approved in this period." +msgstr "這段期間核准的合法留言總數。" + +#: abilities/class-akismet-ability-get-stats.php:110 +msgid "Total number of spam comments blocked in this period." +msgstr "這段期間封鎖的垃圾訊息留言總數。" + +#: abilities/class-akismet-ability-get-stats.php:104 +msgid "Monthly breakdown of statistics." +msgstr "每月統計資料明細。" + +#: abilities/class-akismet-ability-get-stats.php:100 +msgid "Estimated time saved by Akismet blocking spam, in seconds." +msgstr "Akismet 封鎖垃圾訊息的預估節省時間 (秒)。" + +#: abilities/class-akismet-ability-get-stats.php:96 +msgid "Accuracy percentage of spam detection." +msgstr "垃圾訊息偵測的精確度百分比。" + +#: abilities/class-akismet-ability-get-stats.php:92 +msgid "Number of legitimate comments incorrectly marked as spam." +msgstr "未正確標示為垃圾訊息的合法留言數目。" + +#: abilities/class-akismet-ability-get-stats.php:88 +msgid "Number of spam comments that were missed." +msgstr "遺漏的垃圾訊息留言數目。" + +#: abilities/class-akismet-ability-get-stats.php:84 +msgid "Total number of legitimate comments approved." +msgstr "已核准的合法留言總數。" + +#: abilities/class-akismet-ability-get-stats.php:80 +msgid "Total number of spam comments blocked." +msgstr "封鎖的垃圾訊息留言總數。" + +#: abilities/class-akismet-ability-get-stats.php:76 +msgid "Whether the stats were successfully retrieved." +msgstr "是否成功擷取統計資料。" + +#: abilities/class-akismet-ability-get-stats.php:56 +msgid "The time interval for stats. Options: \"6-months\", \"all\", or \"60-days\"." +msgstr "統計資料的時間間隔。 選項:「6 個月」、「全部」或「60 天」。" + +#: abilities/class-akismet-ability-get-stats.php:42 +msgid "Retrieves Akismet spam protection statistics including spam blocked count, accuracy percentage, and other key metrics." +msgstr "擷取 Akismet 垃圾訊息防護統計資料,包括垃圾訊息封鎖次數、精確度百分比和其他重要指標。" + +#: abilities/class-akismet-ability-get-stats.php:33 +msgid "Get Akismet statistics" +msgstr "取得 Akismet 統計資料" + +#: abilities/class-akismet-ability-comment-check.php:195 +msgid "Failed to check comment with Akismet API." +msgstr "無法透過 Akismet API 確認留言。" + +#: abilities/class-akismet-ability-comment-check.php:138 +msgid "Debug information to help troubleshoot issues." +msgstr "偵錯資訊可協助疑難排解問題。" + +#: abilities/class-akismet-ability-comment-check.php:134 +msgid "Error message if the check could not be completed." +msgstr "如果無法完成檢查,就會出現錯誤訊息。" + +#: abilities/class-akismet-ability-comment-check.php:130 +msgid "Unique identifier for this check, used for webhooks and updates." +msgstr "此檢查的唯一識別碼,用於 Webhook 和更新。" + +#: abilities/class-akismet-ability-comment-check.php:126 +msgid "Optional recommendation from Akismet (e.g., \"discard\" for obvious spam)." +msgstr "Akismet 的選用建議 (例如,對於明顯是垃圾訊息的「捨棄」)。" + +#: abilities/class-akismet-ability-comment-check.php:122 +msgid "Whether the comment is identified as spam." +msgstr "留言是否被辨識為垃圾訊息。" + +#: abilities/class-akismet-ability-comment-check.php:118 +msgid "Whether the check was successfully performed." +msgstr "是否已成功執行檢查。" + +#: abilities/class-akismet-ability-comment-check.php:100 +msgid "The user role of the comment author if logged in." +msgstr "留言作者的使用者角色 (若登入)。" + +#: abilities/class-akismet-ability-comment-check.php:96 +msgid "The HTTP_REFERER header." +msgstr "HTTP_REFERER 標頭。" + +#: abilities/class-akismet-ability-comment-check.php:92 +msgid "User agent string of the web browser submitting the comment." +msgstr "提交留言之網頁瀏覽器的使用者代理程式字串。" + +#: abilities/class-akismet-ability-comment-check.php:88 +msgid "IP address of the commenter." +msgstr "留言者的 IP 位址。" + +#: abilities/class-akismet-ability-comment-check.php:83 +msgid "The permanent link to the post or page." +msgstr "文章或頁面的永久連結。" + +#: abilities/class-akismet-ability-comment-check.php:79 +msgid "The ID of the post the comment is being submitted to." +msgstr "在其中提交留言的文章 ID。" + +#: abilities/class-akismet-ability-comment-check.php:74 +msgid "The comment type (e.g., \"comment\", \"trackback\", \"pingback\")." +msgstr "留言類型 (例如「留言」、「引用通知」、「引用通知」)。" + +#: abilities/class-akismet-ability-comment-check.php:70 +msgid "The comment content/text." +msgstr "留言內容/文字。" + +#: abilities/class-akismet-ability-comment-check.php:65 +msgid "URL/website of the comment author." +msgstr "留言作者的 URL/網站。" + +#: abilities/class-akismet-ability-comment-check.php:60 +msgid "Email address of the comment author." +msgstr "留言作者的電子郵件地址。" + +#: abilities/class-akismet-ability-comment-check.php:56 +msgid "Name of the comment author." +msgstr "留言者姓名。" + +#: abilities/class-akismet-ability-comment-check.php:42 +msgid "Checks a comment against the Akismet spam filter to determine if it is spam or legitimate content." +msgstr "檢查留言是否符合 Akismet 垃圾訊息篩選條件,以判斷留言是否為垃圾訊息或合法內容。" + +#: abilities/class-akismet-ability-comment-check.php:33 +msgid "Check comment for spam" +msgstr "檢查留言中是否有垃圾訊息" + +#: views/setup.php:71 +msgid "Get started" +msgstr "開始使用" + +#: views/setup.php:60 +msgid "Name your own price for personal sites. Businesses start on a paid plan." +msgstr "個人網站可以自訂付費價格,企業請採用付費方案。" + +#: views/setup.php:57 +msgid "Flexible pricing" +msgstr "靈活的付費方式" + +#: views/setup.php:49 +msgid "Seamlessly integrates with plugins like Elementor, Contact Form 7, Jetpack and WPForms." +msgstr "可與 Elementor、Contact Form 7、Jetpack 及 WPForms 等外掛提供的聯絡表單無縫整合。" + +#: views/setup.php:46 +msgid "Works with popular contact forms" +msgstr "可與常用的聯絡表單搭配使用" + +#: views/setup.php:38 +msgid "Akismet runs quietly in the background, saving you hours of manual moderation." +msgstr "Akismet 會在背景中悄無聲息的執行,節省網站管理員手動審閱的寶貴時間。" + +#: views/setup.php:35 +msgid "Zero effort" +msgstr "無須煩心" + +#: views/setup.php:27 +msgid "Learns from billions of spam signals across the web to stop junk before it reaches you." +msgstr "從數十億個垃圾訊息信號中學習,進而在垃圾訊息開始侵擾網站前便加以阻擋。" + +#: views/setup.php:24 +msgid "Machine learning accuracy" +msgstr "機器學習帶來的精確度" + +#: views/setup.php:16 +msgid "Protect your site from comment spam and contact form spam — automatically." +msgstr "自動保護這個網站,免受垃圾留言及垃圾聯絡表單回應的侵擾。" + +#: views/notice.php:353 +msgid "Increase your limit" +msgstr "提高上限額度" + +#. translators: The placeholder is the name of an Akismet subscription plan, +#. like "Akismet Pro" or "Akismet Business" . +#: views/notice.php:348 +msgid "Add an %s subscription" +msgstr "新增 %s 訂閱" + +#: views/notice.php:306 +msgid "Your Akismet usage has been over your plan’s limit for two consecutive months. Next month, we will restrict your account after you reach the limit. Increase your limit to make sure your site stays protected from spam." +msgstr "你的 Akismet 用量已連續兩個月超過方案上限。 下個月,我們會在你達到上限後限制你的帳號。 提高上限額度,確保網站遠離垃圾訊息。" + +#. translators: The placeholder is a URL to the Akismet contact form. +#: views/notice.php:236 +msgid "Please enter a new key or contact Akismet support" +msgstr "請輸入新的金鑰,或聯絡 Akismet 支援團隊" + +#: views/notice.php:190 views/setup-jetpack.php:53 +msgid "Once you've chosen a plan, return here to complete your setup." +msgstr "選擇方案後,請返回此處完成設定。" + +#. translators: the placeholder is the URL to the Akismet pricing page. +#: views/notice.php:187 +msgid "Please choose a free or paid plan so Akismet can protect your site from spam." +msgstr "請選擇免費或付費方案,讓 Akismet 保護你的網站不受垃圾訊息侵擾。" + +#. translators: the placeholder is a clickable URL to the Akismet account +#. upgrade page. +#: views/notice.php:165 +msgid "You can help us fight spam and upgrade your account by contributing a token amount" +msgstr "只要支付一筆象徵性款項,就能協助我們打擊垃圾訊息,並且升級你的帳號" + +#. translators: The placeholder is a URL. +#. translators: The placeholder is a URL to the Akismet contact form. +#: views/notice.php:154 views/notice.php:176 +msgid "Please contact Akismet support for assistance." +msgstr "請向 Akismet 支援團隊尋求協助。" + +#. translators: The placeholder is a URL. +#: views/notice.php:143 +msgid "Please visit Akismet.com to purchase a new subscription." +msgstr "請造訪 Akismet.com 購買新的訂閱。" + +#. translators: The placeholder is a URL. +#: views/notice.php:121 +msgid "Please contact your web host or firewall administrator and give them this information about Akismet’s system requirements" +msgstr "請聯絡你的網頁主機或防火牆管理員,向他們提供這項 Akismet 系統需求的資訊" + +#: views/notice.php:115 +msgid "Your web host or server administrator has disabled PHP’s gethostbynamel function." +msgstr "你的網頁主機服務供應商或伺服器管理員已停用 PHP 的 gethostbynamel 功能。" + +#. translators: the placeholder is a clickable URL that leads to more +#. information regarding an error code. +#: views/notice.php:93 +msgid "For more information, see the error documentation on akismet.com" +msgstr "如需詳細資訊,請參閱 akismet.com上的錯誤說明文件" + +#. translators: The placeholder is a URL to the contact form. +#: views/notice.php:64 +msgid "If you believe your site should not be classified as commercial, please get in touch" +msgstr "如果認為你的網站不屬於為商業類別,請與我們聯絡" + +#. translators: The placeholder is a URL. +#: views/notice.php:58 +msgid "Your current subscription is for personal, non-commercial use. Please upgrade your plan to continue using Akismet." +msgstr "目前的訂閱為非商用的個人方案。 請升級方案,以繼續使用 Akismet。" + +#: class.akismet-admin.php:739 +msgid "Akismet provisionally cleared this comment." +msgstr "Akismet 已暫時清除這則留言。" + +#: views/compatible-plugins.php:111 +msgid "Show less" +msgstr "顯示較少" + +#. translators: %d: number of compatible plugins, which is guaranteed to be +#. more than 1. +#: views/compatible-plugins.php:107 views/compatible-plugins.php:115 +msgid "Show all %d plugins" +msgstr "顯示全部 %d 個外掛" + +#: views/compatible-plugins.php:92 +msgid "View documentation" +msgstr "查看線上說明" + +#. translators: The placeholder is the name of a plugin, like "Jetpack" . +#: views/compatible-plugins.php:86 +msgid "Documentation for %s" +msgstr "%s 線上說明" + +#. translators: The placeholder is the name of a plugin, like "Jetpack" . +#: views/compatible-plugins.php:61 +msgid "%s logo" +msgstr "%s 標誌" + +#: views/compatible-plugins.php:28 +msgid "See supported integrations" +msgstr "查看支援的整合項目" + +#: views/compatible-plugins.php:21 +msgid "Akismet works with other plugins to keep spam away." +msgstr "Akismet 可與其他外掛搭配使用,以防垃圾留言侵擾。" + +#: views/compatible-plugins.php:13 +msgid "Compatible plugins" +msgstr "相容外掛" + +#: class-akismet-compatible-plugins.php:81 +msgid "Error getting compatible plugins." +msgstr "取得相容外掛時發生錯誤。" + +#: views/notice.php:73 +msgid "Upgrade plan" +msgstr "升級方案" + +#: views/notice.php:54 +msgid "We detected commercial activity on your site" +msgstr "系統在網站中偵測到商業活動" + +#: views/notice.php:28 +msgid "Almost done! Configure Akismet and say goodbye to spam" +msgstr "即將完成!完成 Akismet 設定後,便能告別垃圾留言" + +#: class.akismet-admin.php:803 +msgid "This comment was not sent to Akismet when it was submitted because it was caught by the comment disallowed list." +msgstr "由於這則留言遭到留言封鎖清單攔截,因此並未於提交時傳送至 Akismet。" + +#: class.akismet-admin.php:800 +msgid "This comment was not sent to Akismet when it was submitted because it was caught by something else." +msgstr "由於這則留言遭到其他項目攔截,因此並未於提交時傳送至 Akismet。" + +#: class.akismet-rest-api.php:516 +msgid "Multiple comments matched request." +msgstr "多則留言符合條件。" + +#: class.akismet-rest-api.php:506 +msgid "Could not find matching comment." +msgstr "找不到符合條件的留言。" + +#: class.akismet-rest-api.php:464 +msgid "The 'comments' parameter must be an array." +msgstr "comments 參數必須是陣列。" + +#: class.akismet-admin.php:797 +msgid "Akismet cleared this comment during a recheck. It did not update the comment status because it had already been modified by another user or plugin." +msgstr "Akismet 在重新檢查時已清除這則留言。由於其他使用者或外掛已修改留言狀態,因此 Akismet 不會更新留言狀態。" + +#: class.akismet-admin.php:794 +msgid "Akismet determined this comment was spam during a recheck. It did not update the comment status because it had already been modified by another user or plugin." +msgstr "Akismet 在重新檢查時已將這則留言判定為垃圾留言。由於其他使用者或外掛已修改留言狀態,因此 Akismet 不會更新留言狀態。" + +#: class.akismet-admin.php:791 +msgid "Akismet cleared this comment and updated its status via webhook." +msgstr "Akismet 已清除這則留言並透過 Webhook 更新其留言狀態。" + +#: class.akismet-admin.php:788 +msgid "Akismet caught this comment as spam and updated its status via webhook." +msgstr "Akismet 已將這則留言判定為垃圾留言並透過 Webhook 更新其留言狀態。" + +#: views/notice.php:206 +msgid "Akismet is now protecting your site from spam." +msgstr "Akismet 會持續保護這個網站免於垃圾留言的侵擾。" + +#: views/config.php:331 +msgid "Account overview" +msgstr "帳號總覽" + +#. translators: %1$s: spam folder link, %2$d: delete interval in days +#: views/config.php:202 +msgid "Spam in the %1$s older than %2$d day is deleted automatically." +msgid_plural "Spam in the %1$s older than %2$d days is deleted automatically." +msgstr[0] "%1$s中的垃圾留言將在保留 %2$d 天後自動刪除。" + +#: views/config.php:197 +msgid "spam folder" +msgstr "垃圾留言資料夾" + +#: views/stats.php:15 +msgid "Akismet detailed stats" +msgstr "Akismet 詳細統計資料" + +#: views/stats.php:9 +msgid "Back to settings" +msgstr "返回外掛設定頁面" + +#: views/config.php:303 +msgid "Subscription type" +msgstr "約期授權類型" + +#: views/config.php:242 +msgid "To help your site with transparency under privacy laws like the GDPR, Akismet can display a notice to your users under your comment forms." +msgstr "為了協助這個網站符合個人資料保護法 (例如 GDPR) 的透明度規範,Akismet 可以在網站的留言表單下方向網站訪客顯示相關通知。" + +#: views/config.php:164 +msgid "Spam filtering" +msgstr "垃圾留言篩選方式" + +#: views/config.php:99 views/enter.php:9 +msgid "API key" +msgstr "API 金鑰" + +#: views/config.php:42 +msgid "Akismet stats" +msgstr "Akismet 統計資料" + +#. Author of the plugin +#: akismet.php +msgid "Automattic - Anti-spam Team" +msgstr "Automattic - 反垃圾留言團隊" + +#. Plugin Name of the plugin +#: akismet.php +msgid "Akismet Anti-spam: Spam Protection" +msgstr "Akismet Anti-spam: 垃圾留言防護" + +#: views/notice.php:47 +msgid "WP-Cron has been disabled using the DISABLE_WP_CRON constant. Comment rechecks may not work properly." +msgstr "這個網站使用了 DISABLE_WP_CRON 常數,因此 WP-Cron 已停用,這會造成重新檢查留言的功能無法正確執行。" + +#. translators: %1$s is a human-readable time difference, like "3 hours ago", +#. and %2$s is an already-translated phrase describing how a comment's status +#. changed, like "This comment was reported as spam." +#: class.akismet-admin.php:835 +msgid "%1$s - %2$s" +msgstr "%1$s - %2$s" + +#: views/get.php:31 +msgid "(opens in a new tab)" +msgstr "(在新分頁中開啟)" + +#. translators: The placeholder is the name of a subscription level, like +#. "Akismet Business" or "Akismet Enterprise" . +#: views/notice.php:359 +msgid "Upgrade to %s" +msgstr "升級至 %s 方案" + +#. translators: The first placeholder is a date, the second is a (formatted) +#. number, the third is another formatted number. +#: views/notice.php:293 +msgid "Since %1$s, your account made %2$s API calls, compared to your plan’s limit of %3$s." +msgstr "目前方案的使用量上限為可呼叫 %3$s 次,從 %1$s 年開始,你的 Akismet 帳號已呼叫 %2$s 次 API。" + +#: views/notice.php:323 +msgid "Your Akismet usage has been over your plan’s limit for three consecutive months. We have restricted your account for the rest of the month. Increase your limit to make sure your site stays protected from spam." +msgstr "你的 Akismet 用量已連續三個月超過方案上限。 我們已限制你的帳號,效期至本月底。 提高上限額度,確保網站遠離垃圾訊息。" + +#: views/notice.php:314 +msgid "Your Akismet usage is nearing your plan’s limit for the third consecutive month. We will restrict your account after you reach the limit. Increase your limit to make sure your site stays protected from spam." +msgstr "你的 Akismet 使用量已連續第三個月接近方案額度上限。 我們會在你達到上限後,限制你的帳號。 提高上限額度,確保網站遠離垃圾訊息。" + +#: views/notice.php:280 +msgid "Your account has been restricted" +msgstr "你的 Akismet 帳號已受到限制。" + +#: views/notice.php:276 +msgid "Your Akismet account usage is approaching your plan’s limit" +msgstr "你的 Akismet 帳號使用量已接近目前方案的使用量上限。" + +#: views/notice.php:273 +msgid "Your Akismet account usage is over your plan’s limit" +msgstr "你的 Akismet 帳號使用量已超過目前方案的使用量上限。" + +#: views/notice.php:230 +msgid "Your API key is no longer valid." +msgstr "你的 API 金鑰已失效。" + +#. translators: The placeholder is for showing how much of the process has +#. completed, as a percent. e.g., "Checking for Spam (40%)" +#: class.akismet-admin.php:520 +msgid "Checking for Spam (%1$s%)" +msgstr "垃圾留言檢查進度: %1$s%" + +#: class.akismet-admin.php:851 +msgid "No comment history." +msgstr "尚無留言歷史記錄。" + +#: class.akismet-admin.php:784 +msgid "Akismet was unable to recheck this comment." +msgstr "Akismet 無法重新檢查這則留言。" + +#: class.akismet-admin.php:776 +msgid "Akismet was unable to check this comment but will automatically retry later." +msgstr "Akismet 無法檢查這則留言,稍後會自動重試。" + +#. translators: The placeholder is a WordPress PHP function name. +#: class.akismet-admin.php:745 +msgid "Comment was caught by %s." +msgstr "留言已由 %s 進行判定。" + +#: abilities/class-akismet-ability-comment-check.php:185 class.akismet.php:1120 +msgid "Akismet is not configured. Please enter an API key." +msgstr "Akismet 尚未完成設定,請輸入 API 金鑰。" + +#: views/enter.php:7 +msgid "Enter your API key" +msgstr "輸入 API 金鑰" + +#: class.akismet-admin.php:1396 +msgid "Akismet could not recheck your comments for spam." +msgstr "Akismet 不會重新檢查已判定為垃圾留言的項目。" + +#: class.akismet-admin.php:553 +msgid "You don’t have permission to do that." +msgstr "目前的登入身分沒有進行這項操作的權限。" + +#: class.akismet-cli.php:167 +msgid "Stats response could not be decoded." +msgstr "無法解碼統計資料回應。" + +#: class.akismet-cli.php:161 +msgid "Currently unable to fetch stats. Please try again." +msgstr "目前無法擷取統計資料。請再試一次。" + +#: class.akismet-cli.php:135 +msgid "API key must be set to fetch stats." +msgstr "必須設定 API 金鑰才能擷取統計資料。" + +#: views/config.php:235 +msgid "Do not display privacy notice." +msgstr "不顯示隱私權聲明" + +#: views/config.php:227 +msgid "Display a privacy notice under your comment forms." +msgstr "在留言表單下方顯示隱私權聲明" + +#: views/config.php:221 +msgid "Akismet privacy notice" +msgstr "Akismet 隱私權聲明" + +#: views/config.php:216 +msgid "Privacy" +msgstr "隱私權" + +#. translators: %s: Akismet privacy URL +#: class.akismet.php:2280 +msgid "This site uses Akismet to reduce spam. Learn how your comment data is processed." +msgstr "這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料。" + +#: class.akismet-admin.php:108 +msgid "We collect information about visitors who comment on Sites that use our Akismet Anti-spam service. The information we collect depends on how the User sets up Akismet for the Site, but typically includes the commenter's IP address, user agent, referrer, and Site URL (along with other information directly provided by the commenter such as their name, username, email address, and the comment itself)." +msgstr "Akismet 公司會在採用 Akismet 反垃圾留言服務的網站上,對進行留言的訪客收集相關資料。Akismet 公司收集的資訊取決於網站管理員在這個網站上為 Akismet 服務所進行的設定,但通常會包含留言者的 IP 地址、使用者代理程式,參照網址及網站網址,以及由留言者直接提供的其他資訊,例如姓名、使用者名稱、電子郵件地址及留言內容評論本身。" + +#: class.akismet.php:621 +msgid "Comment discarded." +msgstr "留言已捨棄。" + +#: class.akismet-rest-api.php:211 +msgid "This site's API key is hardcoded and cannot be deleted." +msgstr "這個網站的 API 金鑰已強制寫入網站程式碼中,導致無法刪除 API 金鑰。" + +#: class.akismet-rest-api.php:195 +msgid "The value provided is not a valid and registered API key." +msgstr "目前所提供的 API 金鑰無效且未經註冊。" + +#: class.akismet-rest-api.php:189 +msgid "This site's API key is hardcoded and cannot be changed via the API." +msgstr "這個網站的 API 金鑰已強制寫入網站程式碼中,導致無法變更 API 金鑰。" + +#: class.akismet-rest-api.php:89 class.akismet-rest-api.php:102 +msgid "The time period for which to retrieve stats. Options: 60-days, 6-months, all" +msgstr "擷取指定時間週期的統計資料,可設定為 60 天、6 個月或全期" + +#: class.akismet-rest-api.php:65 +msgid "If true, show the number of approved comments beside each comment author in the comments list page." +msgstr "設定後 Akismet 會在留言清單頁面中,將已核准的留言數目顯示在每位留言者的名稱旁。" + +#: class.akismet-rest-api.php:60 +msgid "If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder." +msgstr "設定後 Akismet 便會自動捨棄最嚴重的垃圾留言,而不會將其留置於垃圾留言資料夾。" + +#: class.akismet-rest-api.php:31 class.akismet-rest-api.php:127 +#: class.akismet-rest-api.php:140 class.akismet-rest-api.php:153 +msgid "A 12-character Akismet API key. Available at akismet.com/account" +msgstr "一組 12 個字元的 Akismet API 金鑰,可於 akismet.com/account 取得。" + +#: views/notice.php:128 +msgid "Your site can’t connect to the Akismet servers." +msgstr "這個網站無法與 Akismet 伺服器進行連線。" + +#. translators: %s is the wp-config.php file +#: views/predefined.php:7 +msgid "An Akismet API key has been defined in the %s file for this site." +msgstr "Akismet API 金鑰已定義於這個網站的 %s 檔案中。" + +#: class.akismet-admin.php:300 +msgid "On this page, you are able to update your Akismet settings and view spam stats." +msgstr "網站管理員可以在這個頁面中為 Akismet 外掛變更設定並檢視垃圾留言統計資料。" + +#. Description of the plugin +#: akismet.php +msgid "Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. Akismet Anti-spam keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key." +msgstr "數以百萬的使用者採用 Akismet,它是保護網站遠離垃圾留言的絕佳方式,也為這個網站提供不間斷的保護。使用方式很簡單,啟用 Akismet 外掛後前往 [Akismet 設定] 頁面,輸入 Akismet 的 API 金鑰後儲存設定。" + +#: class-akismet-connector.php:129 class.akismet-admin.php:159 +#: class.akismet-admin.php:161 +msgid "Akismet Anti-spam" +msgstr "Akismet Anti-Spam" + +#: views/enter.php:10 +msgid "Connect with API key" +msgstr "連結 API 金鑰" + +#: views/setup-jetpack.php:69 +msgid "Connect with Jetpack" +msgstr "以 Jetpack 進行連結" + +#: views/setup.php:13 +msgid "Eliminate spam from your site" +msgstr "為網站清除垃圾留言" + +#: views/notice.php:26 +msgid "Set up your Akismet account" +msgstr "設定 Akismet 帳號" + +#: views/config.php:35 +msgid "Statistics" +msgstr "統計資料" + +#: class.akismet-admin.php:1525 +msgid "Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. It keeps your site protected even while you sleep. To get started, just go to your Akismet Settings page to set up your API key." +msgstr "數以百萬的使用者採用 Akismet,它是保護網站遠離垃圾留言的絕佳方式,也為這個網站提供不間斷的保護。使用方式很簡單,僅需前往 [Akismet 設定] 頁面,輸入 Akismet 的 API 金鑰後儲存設定。" + +#: class.akismet-admin.php:1523 +msgid "Used by millions, Akismet is quite possibly the best way in the world to protect your blog from spam. Your site is fully configured and being protected, even while you sleep." +msgstr "數以百萬的使用者採用 Akismet,它是保護網站遠離垃圾留言的絕佳方式,這個網站已完成完整設定,並由 Akismet 提供不間斷的保護。" + +#. translators: %s: Number of comments. +#: class.akismet-admin.php:1390 +msgid "%s comment was caught as spam." +msgid_plural "%s comments were caught as spam." +msgstr[0] "已判定 %s 則留言為垃圾留言。" + +#: class.akismet-admin.php:1387 +msgid "No comments were caught as spam." +msgstr "沒有遭到判定為垃圾留言的留言。" + +#. translators: %s: Number of comments. +#: class.akismet-admin.php:1383 +msgid "Akismet checked %s comment." +msgid_plural "Akismet checked %s comments." +msgstr[0] "Akismet 已檢查 %s 則留言。" + +#: class.akismet-admin.php:1380 +msgid "There were no comments to check. Akismet will only check comments awaiting moderation." +msgstr "沒有可供檢查的留言。Akismet 目前僅會檢查在 [待審閱] 清單中的留言。" + +#: class.akismet.php:1126 +msgid "Comment not found." +msgstr "沒有留言。" + +#. translators: %d: Number of comments. +#: class.akismet-cli.php:89 +msgid "%d comment could not be checked." +msgid_plural "%d comments could not be checked." +msgstr[0] "有 %d 則留言無法進行檢查。" + +#. translators: %d: Number of comments. +#: class.akismet-cli.php:85 +msgid "%d comment moved to Spam." +msgid_plural "%d comments moved to Spam." +msgstr[0] "%d 則留言已移至垃圾留言資料夾。" + +#. translators: %d: Number of comments. +#: class.akismet-cli.php:82 +msgid "Processed %d comment." +msgid_plural "Processed %d comments." +msgstr[0] "已處理 %d 則留言。" + +#. translators: %d: Comment ID. +#: class.akismet-cli.php:45 +msgid "Comment #%d could not be checked." +msgstr "無法檢查留言 #%d。" + +#. translators: %d: Comment ID. +#: class.akismet-cli.php:42 +msgid "Failed to connect to Akismet." +msgstr "無法與 Akismet 進行連結。" + +#. translators: %d: Comment ID. +#: class.akismet-cli.php:39 +msgid "Comment #%d is not spam." +msgstr "留言 #%d 不是垃圾留言。" + +#. translators: %d: Comment ID. +#: class.akismet-cli.php:36 +msgid "Comment #%d is spam." +msgstr "留言 #%d 是垃圾留言。" + +#. translators: %s: number of false positive spam flagged by Akismet +#: views/config.php:64 +msgid "%s false positive" +msgid_plural "%s false positives" +msgstr[0] "%s 則誤判留言" + +#. translators: %s: number of spam missed by Akismet +#: views/config.php:62 +msgid "%s missed spam" +msgid_plural "%s missed spam" +msgstr[0] "%s 則遺漏的垃圾留言" + +#: views/notice.php:183 +msgid "You don’t have an Akismet plan." +msgstr "這個網站並未採用任何 Akismet 方案。" + +#: views/notice.php:150 +msgid "Your Akismet subscription is suspended." +msgstr "已暫停目前使用的 Akismet 約期授權。" + +#: views/notice.php:139 +msgid "Your Akismet plan has been cancelled." +msgstr "已取消目前使用的 Akismet 方案。" + +#. translators: %s: Number of minutes. +#: class.akismet-admin.php:1286 +msgid "Akismet has saved you %d minute!" +msgid_plural "Akismet has saved you %d minutes!" +msgstr[0] "Akismet 為網站管理員節省了 %d 分鐘的清理時間!" + +#. translators: %s: Number of hours. +#: class.akismet-admin.php:1283 +msgid "Akismet has saved you %d hour!" +msgid_plural "Akismet has saved you %d hours!" +msgstr[0] "Akismet 為網站管理員節省了 %d 小時的清理時間!" + +#. translators: %s: Number of days. +#: class.akismet-admin.php:1280 +msgid "Akismet has saved you %s day!" +msgid_plural "Akismet has saved you %s days!" +msgstr[0] "Akismet 為網站管理員節省了 %s 天的清理時間!" + +#: class.akismet-admin.php:249 class.akismet-admin.php:287 +#: class.akismet-admin.php:299 +msgid "Akismet filters out spam, so you can focus on more important things." +msgstr "Akismet 會自動篩選垃圾留言,所以網站管理員可以專注於更重要的事情。" + +#. translators: The placeholder is a URL. +#: views/notice.php:253 +msgid "The connection to akismet.com could not be established. Please refer to our guide about firewalls and check your server configuration." +msgstr "無法建立與 akismet.com 的連線。 請參閱我們的防火牆指引,並檢查伺服器設定。" + +#: views/notice.php:247 +msgid "The API key you entered could not be verified." +msgstr "無法驗證你輸入的 API 金鑰。" + +#: views/config.php:131 +msgid "All systems functional." +msgstr "所有系統均正常運作。" + +#: views/config.php:130 +msgid "Enabled." +msgstr "已啟用。" + +#: views/config.php:128 +msgid "Akismet encountered a problem with a previous SSL request and disabled it temporarily. It will begin using SSL for requests again shortly." +msgstr "Akismet 遇到先前 SSL 要求所造成的問題,這會造成 Akismet 的暫時停用。Akismet 會盡快重新透過 SSL 協定進行要求。" + +#: views/config.php:127 +msgid "Temporarily disabled." +msgstr "暫時停用。" + +#: views/config.php:122 +msgid "Your Web server cannot make SSL requests; contact your Web host and ask them to add support for SSL requests." +msgstr "這個網站的網站伺服器無法進行 SSL 要求,請聯絡主機服務提供商並要求它加入對 SSL 要求的支援。" + +#: views/config.php:121 +msgid "Disabled." +msgstr "已停用。" + +#: views/config.php:118 +msgid "SSL status" +msgstr "SSL 狀態" + +#: class.akismet-admin.php:762 +msgid "This comment was reported as not spam." +msgstr "這則留言已回報為非垃圾留言。" + +#: class.akismet-admin.php:754 +msgid "This comment was reported as spam." +msgstr "這則留言已回報為垃圾留言。" + +#. Author URI of the plugin +#: akismet.php +msgid "https://automattic.com/wordpress-plugins/" +msgstr "https://automattic.com/wordpress-plugins/" + +#. Plugin URI of the plugin +#: akismet.php +msgid "https://akismet.com/" +msgstr "https://akismet.com/" + +#: views/enter.php:2 +msgid "Manually enter an API key" +msgstr "手動輸入 API 金鑰" + +#: views/notice.php:341 +msgid "Contact Akismet support" +msgstr "聯絡 Akismet 技術支援團隊" + +#: views/notice.php:225 +msgid "The key you entered is invalid. Please double-check it." +msgstr "你輸入的金鑰並不正確,請再確認一次。" + +#: views/notice.php:172 +msgid "There is a problem with your API key." +msgstr "這個網站的 API 金鑰發生問題。" + +#. translators: The placeholder is a URL. +#: views/notice.php:132 +msgid "Your firewall may be blocking Akismet from connecting to its API. Please contact your host and refer to our guide about firewalls" +msgstr "你的防火牆可能封鎖了 Akismet 與其 API 之間的連線。 請聯絡你的主機服務提供者,並參閱我們的防火牆指引" + +#: views/notice.php:112 +msgid "Network functions are disabled." +msgstr "網路功能已停用。" + +#. translators: The placeholder is an error code returned by Akismet. +#: views/notice.php:86 +msgid "Akismet error code: %s" +msgstr "Akismet 錯誤代碼: %s" + +#: views/notice.php:37 +msgid "Some comments have not yet been checked for spam by Akismet. They have been temporarily held for moderation and will automatically be rechecked later." +msgstr "部分留言尚未經由 Akismet 檢查是否為垃圾留言。這些留言已暫時擱置以待審閱,並將在稍後自動重新檢查。" + +#: views/notice.php:36 views/notice.php:46 +msgid "Akismet has detected a problem." +msgstr "Akismet 已偵測到問題。" + +#: views/config.php:339 +msgid "Change" +msgstr "變更" + +#: views/config.php:339 +msgid "Upgrade" +msgstr "升級" + +#: views/config.php:324 +msgid "Next billing date" +msgstr "下一個帳單日期" + +#: views/config.php:318 +msgid "Active" +msgstr "使用中" + +#: views/config.php:316 +msgid "No subscription found" +msgstr "找不到約期授權" + +#: views/config.php:314 +msgid "Missing" +msgstr "遺漏" + +#: views/config.php:312 +msgid "Suspended" +msgstr "已暫停" + +#: views/config.php:310 +msgid "Cancelled" +msgstr "已取消" + +#: views/config.php:286 +msgid "Save changes" +msgstr "儲存設定" + +#: views/config.php:278 +msgid "Disconnect this account" +msgstr "中斷連結這個帳號" + +#: views/config.php:190 +msgid "Note:" +msgstr "請注意:" + +#: views/config.php:183 +msgid "Always put spam in the Spam folder for review." +msgstr "一律將垃圾留言移至垃圾留言資料夾中,以供稍後審閱" + +#: views/config.php:175 +msgid "Silently discard the worst and most pervasive spam so I never see it." +msgstr "自動捨棄最嚴重和最普遍的垃圾留言,一勞永逸" + +#: views/config.php:169 +msgid "Akismet Anti-spam strictness" +msgstr "Akismet 反垃圾留言嚴謹度" + +#: views/config.php:156 +msgid "Show the number of approved comments beside each comment author." +msgstr "將已核准的留言數目顯示在每位留言者的名稱旁" + +#: views/config.php:57 +msgid "Accuracy" +msgstr "精確度" + +#: views/config.php:52 +msgid "All time" +msgstr "採用 Akismet 後" + +#: views/config.php:49 views/config.php:54 +msgid "Spam blocked" +msgid_plural "Spam blocked" +msgstr[0] "已阻擋的垃圾留言" + +#: views/config.php:47 +msgid "Past six months" +msgstr "過去六個月" + +#. translators: 1: WordPress documentation URL, 2: Akismet download URL. +#: class.akismet.php:2095 +msgid "Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin." +msgstr "請將 WordPress 升級至最新版本,或將 Akismet 外掛程式降級至 2.4 版。" + +#. translators: 1: Current Akismet version number, 2: Minimum WordPress version +#. number required. +#: class.akismet.php:2093 +msgid "Akismet %1$s requires WordPress %2$s or higher." +msgstr "Akismet %1$s 需要 WordPress %2$s 或更新版本。" + +#: class.akismet-admin.php:769 +msgid "Akismet cleared this comment during an automatic retry." +msgstr "Akismet 在自動重試時已清除這則留言。" + +#: class.akismet-admin.php:766 +msgid "Akismet caught this comment as spam during an automatic retry." +msgstr "Akismet 在自動重試時已將這則留言判定為垃圾留言。" + +#. translators: The placeholder is a username. +#: class.akismet-admin.php:760 +msgid "%s reported this comment as not spam." +msgstr "%s 已將這則留言回報為非垃圾留言。" + +#. translators: The placeholder is a username. +#: class.akismet-admin.php:752 +msgid "%s reported this comment as spam." +msgstr "%s 已將這則留言回報為垃圾留言。" + +#. translators: %1$s is a username; %2$s is a short string (like 'spam' or +#. 'approved') denoting the new comment status. +#: class.akismet-admin.php:817 +msgid "%1$s changed the comment status to %2$s." +msgstr "「%1$s」已將留言狀態變更為 [%2$s]。" + +#. translators: The placeholder is an error response returned by the API +#. server. +#: class.akismet-admin.php:774 +msgid "Akismet was unable to check this comment (response: %s) but will automatically retry later." +msgstr "Akismet 無法檢查這則留言 (回應代碼: %s),稍後會自動重試。" + +#: class.akismet-admin.php:736 +msgid "Akismet cleared this comment." +msgstr "Akismet 已清除這則留言。" + +#. translators: The placeholder is a short string (like 'spam' or 'approved') +#. denoting the new comment status. +#: class.akismet-admin.php:811 +msgid "Comment status was changed to %s" +msgstr "留言狀態已變更為 [%s]" + +#: class.akismet-admin.php:730 +msgid "Akismet caught this comment as spam." +msgstr "Akismet 已將這則留言判定為垃圾留言。" + +#. translators: The placeholder is the number of pieces of spam blocked by +#. Akismet. +#: class.akismet-widget.php:146 +msgid "%1$s spam blocked by Akismet" +msgid_plural "%1$s spam blocked by Akismet" +msgstr[0] "Akismet 已阻擋 %1$s 則垃圾留言" + +#: class.akismet-widget.php:39 +msgid "Title:" +msgstr "標題:" + +#: class.akismet-widget.php:34 class.akismet-widget.php:69 +msgid "Spam Blocked" +msgstr "已阻擋的垃圾留言" + +#: class.akismet-widget.php:21 +msgid "Display the number of spam comments Akismet has caught" +msgstr "顯示 Akismet 判定為垃圾留言的數量" + +#: class.akismet-widget.php:20 +msgid "Akismet Widget" +msgstr "Akismet 小工具" + +#: class.akismet-admin.php:1276 +msgid "Cleaning up spam takes time." +msgstr "清除垃圾留言需要一點時間。" + +#. translators: The Akismet configuration page URL. +#: class.akismet-admin.php:1148 +msgid "Please check your Akismet configuration and contact your web host if problems persist." +msgstr "請檢查這個網站的 Akismet 設定。如果問題持續發生,請聯絡這個網站的主機服務提供商。" + +#. translators: The placeholder is an amount of time, like "7 seconds" or "3 +#. days" returned by the function human_time_diff(). +#: class.akismet-admin.php:831 +msgid "%s ago" +msgstr "%s前" + +#. translators: %s: Number of comments. +#: class.akismet-admin.php:703 +msgid "%s approved" +msgid_plural "%s approved" +msgstr[0] "%s 則已核准留言" + +#: class.akismet-admin.php:677 +msgid "History" +msgstr "歷史記錄" + +#: class.akismet-admin.php:677 class.akismet-admin.php:685 +msgid "View comment history" +msgstr "檢視留言歷史記錄" + +#. translators: %s: Username. +#: class.akismet-admin.php:664 +msgid "Un-spammed by %s" +msgstr "由 %s 取消垃圾留言標示" + +#. translators: %s: Username. +#: class.akismet-admin.php:661 +msgid "Flagged as spam by %s" +msgstr "由 %s 標示為垃圾留言" + +#: class.akismet-admin.php:655 +msgid "Cleared by Akismet" +msgstr "由 Akismet 清除" + +#: class.akismet-admin.php:653 +msgid "Flagged as spam by Akismet" +msgstr "由 Akismet 標示為垃圾留言" + +#: class.akismet-admin.php:649 +msgid "Awaiting spam check" +msgstr "等待垃圾留言檢查結果" + +#. translators: The placeholder is an error response returned by the API +#. server. +#: class.akismet-admin.php:782 +msgid "Akismet was unable to recheck this comment (response: %s)." +msgstr "Akismet 無法重新檢查這則留言 (回應代碼: %s)。" + +#: class.akismet-admin.php:733 +msgid "Akismet re-checked and cleared this comment." +msgstr "Akismet 已重新檢查並清除這則留言。" + +#: class.akismet-admin.php:727 +msgid "Akismet re-checked and caught this comment as spam." +msgstr "Akismet 已重新檢查並將這則留言判定為垃圾留言。" + +#: class.akismet-admin.php:537 +msgid "Check for Spam" +msgstr "檢查是否有垃圾留言" + +#. translators: %s: Comments page URL. +#: class.akismet-admin.php:474 +msgid "There’s nothing in your spam queue at the moment." +msgstr "目前垃圾留言清單中並無任何垃圾留言。" + +#. translators: 1: Number of comments, 2: Comments page URL. +#: class.akismet-admin.php:463 +msgid "There’s %1$s comment in your spam queue right now." +msgid_plural "There are %1$s comments in your spam queue right now." +msgstr[0] "目前有 %1$s 則留言在垃圾留言清單中。" + +#. translators: %s: Akismet website URL. +#: class.akismet-admin.php:455 +msgid "Akismet blocks spam from getting to your blog. " +msgstr "Akismet 可在這個網站中阻擋垃圾留言。" + +#. translators: 1: Akismet website URL, 2: Number of spam comments. +#: class.akismet-admin.php:444 +msgid "Akismet has protected your site from %2$s spam comment already. " +msgid_plural "Akismet has protected your site from %2$s spam comments already. " +msgstr[0] "Akismet 已保護這個網站免於 %2$s 則垃圾留言的侵擾。" + +#. translators: 1: Akismet website URL, 2: Comments page URL, 3: Number of spam +#. comments. +#: class.akismet-admin.php:427 +msgid "Akismet has protected your site from %3$s spam comment." +msgid_plural "Akismet has protected your site from %3$s spam comments." +msgstr[0] "Akismet 已保護這個網站免於 %3$s 則垃圾留言的侵擾。" + +#: class.akismet-admin.php:423 +msgctxt "comments" +msgid "Spam" +msgstr "垃圾留言" + +#: class.akismet-admin.php:342 +msgid "Cheatin’ uh?" +msgstr "很抱歉,無法進行這項操作。" + +#: class.akismet-admin.php:336 +msgid "Akismet Support" +msgstr "Akismet 技術支援" + +#: class.akismet-admin.php:335 +msgid "Akismet FAQ" +msgstr "Akismet 常見問題集" + +#: class.akismet-admin.php:333 +msgid "For more information:" +msgstr "進一步了解相關資訊:" + +#: class.akismet-admin.php:324 +msgid "The subscription status - active, cancelled or suspended" +msgstr "約期授權狀態: 使用中、已取消或已暫停" + +#: class.akismet-admin.php:324 views/config.php:306 +msgid "Status" +msgstr "狀態" + +#: class.akismet-admin.php:323 +msgid "The Akismet subscription plan" +msgstr "Akismet 約期授權方案" + +#: class.akismet-admin.php:323 +msgid "Subscription Type" +msgstr "約期授權類型" + +#: class.akismet-admin.php:320 views/config.php:297 +msgid "Account" +msgstr "帳號" + +#: class.akismet-admin.php:312 +msgid "Choose to either discard the worst spam automatically or to always put all spam in spam folder." +msgstr "選擇自動捨棄最嚴重的垃圾留言,或是一律將全部垃圾留言移至垃圾留言資料夾。" + +#: class.akismet-admin.php:312 +msgid "Strictness" +msgstr "嚴謹度" + +#: class.akismet-admin.php:311 +msgid "Show the number of approved comments beside each comment author in the comments list page." +msgstr "在留言清單頁面中,將已核准的留言數量顯示在每位留言者的名稱旁。" + +#: class.akismet-admin.php:311 views/config.php:141 +msgid "Comments" +msgstr "留言" + +#: class.akismet-admin.php:310 +msgid "Enter/remove an API key." +msgstr "輸入/移除 API 金鑰。" + +#: class.akismet-admin.php:310 +msgid "API Key" +msgstr "API 金鑰" + +#: class.akismet-admin.php:298 class.akismet-admin.php:309 +#: class.akismet-admin.php:322 +msgid "Akismet Configuration" +msgstr "Akismet 設定" + +#: class.akismet-admin.php:288 +msgid "On this page, you are able to view stats on spam filtered on your site." +msgstr "網站管理員可以在這個頁面中檢視這個網站的垃圾留言篩選統計資料。" + +#: class.akismet-admin.php:286 +msgid "Akismet Stats" +msgstr "Akismet 統計資料" + +#: class.akismet-admin.php:275 +msgid "Click the Use this Key button." +msgstr "點擊 [使用此金鑰] 按鈕。" + +#: class.akismet-admin.php:274 +msgid "Copy and paste the API key into the text field." +msgstr "請複製 API 金鑰並在文字欄位內貼上。" + +#: class.akismet-admin.php:272 +msgid "If you already have an API key" +msgstr "如果已有 API 金鑰" + +#: class.akismet-admin.php:269 +msgid "Enter an API Key" +msgstr "輸入 API 金鑰" + +#. translators: %s: a link to the signup page with the text 'Akismet.com'. +#: class.akismet-admin.php:262 +msgid "Sign up for an account on %s to get an API Key." +msgstr "在 %s 上註冊帳號以取得 API 金鑰。" + +#: class.akismet-admin.php:260 +msgid "You need to enter an API key to activate the Akismet service on your site." +msgstr "請輸入 API 金鑰,才能為這個網站啟用 Akismet 服務。" + +#: class.akismet-admin.php:257 +msgid "New to Akismet" +msgstr "第一次使用 Akismet" + +#: class.akismet-admin.php:250 +msgid "On this page, you are able to set up the Akismet plugin." +msgstr "網站管理員可以在這個頁面中為 Akismet 外掛進行設定。" + +#: class.akismet-admin.php:248 class.akismet-admin.php:259 +#: class.akismet-admin.php:271 +msgid "Akismet Setup" +msgstr "Akismet 設定" + +#: class.akismet-admin.php:246 class.akismet-admin.php:284 +#: class.akismet-admin.php:296 +msgid "Overview" +msgstr "概觀" + +#: class.akismet-admin.php:214 +msgid "Re-adding..." +msgstr "正在重新加入..." + +#: class.akismet-admin.php:213 +msgid "(undo)" +msgstr "(復原)" + +#: class.akismet-admin.php:212 +msgid "URL removed" +msgstr "網址已移除" + +#: class.akismet-admin.php:211 +msgid "Removing..." +msgstr "正在移除..." + +#: class.akismet-admin.php:210 +msgid "Remove this URL" +msgstr "移除這個網址" + +#: class.akismet-admin.php:107 class.akismet-admin.php:1540 +msgid "Akismet" +msgstr "Akismet" + +#: class.akismet-admin.php:152 class.akismet-admin.php:307 +#: class.akismet-admin.php:858 views/config.php:88 +msgid "Settings" +msgstr "設定" + +#: class.akismet-admin.php:103 +msgid "Comment History" +msgstr "留言歷史記錄" \ No newline at end of file diff --git a/languages/plugins/all-in-one-wp-migration-zh_TW.l10n.php b/languages/plugins/all-in-one-wp-migration-zh_TW.l10n.php new file mode 100644 index 0000000..94aaa40 --- /dev/null +++ b/languages/plugins/all-in-one-wp-migration-zh_TW.l10n.php @@ -0,0 +1,44 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2026-04-02 20:26:11+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'Plugins - All-in-One WP Migration and Backup - Stable (latest release)','language'=>'zh_TW','messages'=>['This backup file is damaged and can\'t be imported.
Try downloading or transferring the file again.

Reason: File integrity check failed (CRC mismatch). Technical details'=>'這個備份檔案已損毀且無法匯入。
請嘗試再次下載或傳輸檔案。

原因: 檔案完整性檢查失敗 (CRC 不相符)。技術詳細資料','Validating archive checksum...'=>'正在驗證壓縮總和檢查碼...','Calculating archive checksum...'=>'正在計算壓縮總和檢查碼...','Subscribe on YouTube'=>'訂閱 YouTube 頻道','Share on Facebook'=>'分享至 Fackbook','Share on X'=>'分享至 X','Unpacking configuration...'=>'正在解壓縮組態檔案...','Database unpacked.'=>'資料庫已完成解壓縮。','Importing an encrypted backup is not supported on this server. The process cannot continue. Technical details: https://help.servmask.com/knowledgebase/unable-to-encrypt-and-decrypt-backups/'=>'這台伺服器不支援匯入加密的備份檔案,導致程序無法繼續。技術詳細資料: https://help.servmask.com/knowledgebase/unable-to-encrypt-and-decrypt-backups/','Compressed backup detected. Compression will be handled automatically.'=>'已偵測到壓縮的備份檔案,系統會自動處理相關程序。','Importing a compressed backup is not supported on this server. + Please ensure %s extension is enabled. Technical details'=>'這台伺服器不支援匯入壓縮的備份檔案。請確認 %s 擴充功能已啟用。技術詳細資料','Archiving configuration...'=>'正在壓縮組態檔案...','Download a file from encrypted backup is not supported on this server. The process cannot continue. Technical details'=>'這台伺服器不支援下載加密的備份檔案,導致程序無法繼續。技術詳細資料','I agree to let All-in-One WP Migration use my email to respond to my request.'=>'我同意授權 All-in-One WP Migration 使用我的電子郵件地址及相關資訊以回覆我的問題。','An unknown error (code: %s) occurred during the file upload. The process cannot continue. + Technical details'=>'檔案上傳時發生未知的錯誤 (錯誤代碼: %s),導致程序無法繼續。技術詳細資料','A PHP extension blocked this file upload. The process cannot continue. + Technical details'=>'某個 PHP 擴充功能封鎖了這個檔案的上傳,導致程序無法繼續。技術詳細資料','Could not save the uploaded file. Please check file permissions and try again. + Technical details'=>'無法儲存上傳的檔案,請檢查檔案權限然後再試一次。技術詳細資料','No temporary folder is available on the server. The process cannot continue. + Technical details'=>'這台伺服器上沒有可供使用的暫存資料夾,導致程序無法繼續。技術詳細資料','The uploaded file is too large for this server. The process cannot continue. + Technical details'=>'對這台伺服器來說上傳的檔案太大,導致程序無法繼續。技術詳細資料','Could not upload the file because %s. The process cannot continue. + Technical details'=>'由於「%s」因此無法上傳檔案,導致程序無法繼續。技術詳細資料','Invalid file data. Please ensure your file is a .wpress backup created with All-in-One WP Migration. + Technical details'=>'無效的檔案資料。請確認檔案是由 All-in-One WP Migration 建立的 .wpress 備份檔案。技術詳細資料','The uploaded file is missing an error code. The process cannot continue. + Technical details'=>'上傳檔案時找不到錯誤代碼,導致程序無法繼續。技術詳細資料','The uploaded file is missing a temporary path. The process cannot continue. + Technical details'=>'上傳檔案時找不到暫存路徑,導致程序無法繼續。技術詳細資料','Exclude plugins'=>'排除外掛','Exclude must-use plugins'=>'排除 [強制使用] 外掛','Exclude themes'=>'排除佈景主題','Exclude media library'=>'排除媒體庫','File Options'=>'檔案選項','Exclude database'=>'排除資料庫','Database Options'=>'資料庫選項','Security Options'=>'安全性選項',' + Download %2$s + Size: %4$s + '=>'下載 %2$s 的匯出檔檔案大小: %4$s','All-in-One WP Migration and Backup'=>'All-in-One WP Migration and Backup','» Save permalinks structure
+ » Review your migration experience
+ » Protect your site with real-time threat protection'=>'» 儲存永久連結結構
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站','» Protect your site with real-time threat protection'=>'» 使用即時威脅保護功能保護這個網站。','WordPress Multisite requires our All-in-One WP Migration Multisite Extension. Get it here: '=>'WordPress 多站網路需要 All-in-One WP Migration 的 Multisite 擴充功能。立即取得: ','Could not create %s folder. Please ensure the parent folder has read/write/execute permissions (0777).'=>'無法建立 %s 資料夾。請確認系統具備對上層資料夾的讀取、寫入及執行權限 (0777)。','Could not create %s file. Please ensure the parent folder has read/write permissions.'=>'無法建立 %s 檔案。請確認系統具備對上層資料夾的讀取及寫入權限。','Your host restricts uploads to %s.'=>'這個網站的主機上傳檔案大小上限為 %s。','» Save permalinks structure.
+ » Re-sign Oxygen Builder shortcodes.
+ » Review your migration experience.
+ » Protect your site with real-time threat protection'=>'» 儲存永久連結結構
» 重新簽署 Oxygen Builder 短代碼
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站','» Permalinks are set to default. Why?
+ » Re-sign Oxygen Builder shortcodes.
+ » Review your migration experience.
+ » Protect your site with real-time threat protection'=>'» [永久連結] 的設定值已設定為 [預設]。進一步了解成因
» 重新簽署 Oxygen Builder 短代碼
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站','» Permalinks are set to default. Why?
+ » Review your migration experience.
+ » Protect your site with real-time threat protection'=>'» [永久連結] 的設定值已設定為 [預設]。進一步了解成因
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站','» Review your migration experience.
'=>'» 為移轉經驗撰寫評論
','» Save permalinks structure.
'=>'» 儲存永久連結結構
','Hints'=>'提示','Use this screen to export your database, media, themes, and plugins into one .wpress file. Later, import that file to another WordPress site.'=>'使用這個畫面以匯出這個網站的資料庫、媒體、佈景主題及外掛至單一 .wpress 檔案,稍後還能將這個備份檔案匯入至其他 WordPress 網站。','Search for'=>'搜尋','Export Site To'=>'網站匯出方式','Exclude post revisions'=>'排除內容修訂','Exclude spam comments'=>'排除垃圾留言','Describe your issue or feedback...'=>'請使用英文說明相關問題或意見反應...','Email address'=>'電子郵件地址','I need help'=>'我需要協助','I have an idea'=>'我想提出建議','No backups found. Create a new one?'=>'找不到備份檔案。是否要建立新的備份檔案?','Over 2GB'=>'超過 2GB','Click to label this backup'=>'點擊以設定這個備份檔案的標籤','Your server uses 32-bit PHP and cannot process files larger than 2GB. Please switch to 64-bit PHP and try again. + Technical details'=>'這個網站在伺服器上的 PHP 執行環境為 32 位元版本,因此無法處理大於 2GB 的檔案。請改用 64 位元版本後再試一次。技術詳細資料','WordPress users prepared.'=>'WordPress 使用者已完成準備。','Preparing WordPress users...'=>'正在準備 WordPress 使用者...','Invalid file type. Please ensure your file is a .wpress backup created with All-in-One WP Migration. + Technical details'=>'無效的檔案類型。請確認檔案是由 All-in-One WP Migration 建立的 .wpress 備份檔案。技術詳細資料','WordPress permalinks settings retrieved.'=>'WordPress 永久連結設定已擷取。','WordPress options prepared.'=>'WordPress 選項已完成準備。','Preparing WordPress options...'=>'正在準備 WordPress 選項...','Mu-plugins activated.'=>'[強制使用] 外掛已啟用。','WordPress files gathered.'=>'WordPress 檔案已完成收集。','Gathering WordPress files...'=>'正在收集 WordPress 檔案...','Database restored.'=>'資料庫已還原。','Importing this file will only replace matching content. Other items stay unchanged. + Need a full reset first? Try Reset Hub in our Unlimited Extension.
+ Ensure you have a current backup. Proceed?'=>'匯入這個檔案僅會取代相符的內容,其他項目會保持不變。如果需要預先完整重設,請使用 Unlimited 擴充功能 中的 Reset Hub 功能。
確認這個網站有最新的備份檔案。確定要繼續執行?','Importing this file will only replace matching content. Other items stay unchanged. + Need a full reset first? Try Reset Hub in our Unlimited Extension (%s). + Ensure you have a current backup. Proceed?'=>'匯入這個檔案僅會取代相符的內容,其他項目會保持不變。如果需要預先完整重設,請使用 Unlimited 擴充功能 (%s) 中的 Reset Hub 功能。確認這個網站有最新的備份檔案。確定要繼續執行?','The decryption password is not valid. The process cannot continue.'=>'用於解密的密碼無效,導致程序無法繼續。','Decryption password validated.'=>'用於解密的密碼已驗證。','Blogs prepared.'=>'網站已完成準備。','Could not import a WordPress Network into a single WordPress site. The process cannot continue. Please check your import settings.'=>'無法將 WordPress 多站網路匯入至單一 WordPress 網站。程序無法繼續。請檢查外掛的匯入設定。','The archive must contain at least one WordPress site. The process cannot continue. Please check your export settings.'=>'壓縮檔必須包含至少一個 WordPress 網站,否則程序無法繼續。請重新檢查外掛的匯出設定。','The archive must contain only a single WordPress site. The process cannot continue. Please revisit your export settings.'=>'壓縮檔僅能包含單一 WordPress 網站,否則程序無法繼續。請重新檢查外掛的匯出設定。','Theme files gathered.'=>'佈景主題檔案已完成收集。','Gathering theme files...'=>'正在收集佈景主題檔案...','Database tables gathered.'=>'資料庫的資料表已完成收集。','Gathering database tables...'=>'正在收集資料庫的資料表...','Plugin files gathered.'=>'外掛檔案已完成收集。','Gathering plugin files...'=>'正在收集外掛檔案...','Media files gathered.'=>'媒體檔案已完成收集。','Gathering media files...'=>'正在收集媒體檔案...','Content files gathered.'=>'內容檔案已完成收集。','Gathering content files...'=>'正在收集內容檔案...','Database exported.'=>'資料庫已匯出。','Database archived.'=>'資料庫已完成壓縮。','Configuration prepared.'=>'組態檔案已完成準備。','Configuration archived.'=>'組態檔案已完成壓縮。','Checking for compatibility...'=>'正在檢查相容性...','Export file created.'=>'匯出檔案已建立。','Creating export file...'=>'正在建立匯出檔案...','An error occurred while submitting your request: %s'=>'提交要求時發生錯誤: %s','Please check the consent box so we can use your email to respond to you.'=>'請核取同意方塊,我們才能使用你的電子郵件地址進行回覆。','Please describe your issue or feedback.'=>'請使用英文說明相關問題或意見反應。','Please select a feedback type.'=>'請選取意見反應類型。','Please enter a valid email address.'=>'請輸入有效的電子郵件地址。','%1$s is out of date. You must update this extension before using it.
'=>'%1$s 太過老舊。在使用這個擴充功能前,必須先更新擴充功能
','%s is out of date. Please update this extension before using it.'=>'%s 太過老舊。在使用這個擴充功能前,必須先更新擴充功能。','Please enter a password to restore the backup'=>'請輸入密碼以還原備份檔案。','Could not download backup'=>'無法下載備份檔案。','Could not read backup content'=>'無法讀取備份檔案內容。','Not enough disk space.
Free up %s before restoring.'=>'沒有足夠的磁碟空間。
請在還原前釋放 %s。','"Restore" functionality is available in our Unlimited Extension.
If you would rather go the manual route, you can still restore by downloading your backup and using "Import from file".'=>'還原功能僅由 Unlimited 擴充功能提供。
如果網站管理員要手動還原,請先下載備份檔案,然後才匯入備份檔案。','Invalid file type. Please ensure that your file is a .wpress file created with All-in-One WP Migration. + Technical details'=>'無效的檔案類型。請確認檔案是由 All-in-One WP Migration 建立的 .wpress 備份檔案。技術詳細資料','Your file exceeds the upload limit set by your host web server.
%1$s
%2$s'=>'這個檔案已超過這個網站的網頁伺服器的檔案上傳大小限制。
%1$s
%2$s','Upload failed'=>'上傳失敗','Upload failed - connection lost or timeout. Try uploading the file again.'=>'上傳失敗 - 失去連線或連線逾時。請再次上傳檔案。','Stopping the import, please wait...'=>'請稍候,正在停止匯入程序...','Could not stop the import. Please refresh and try again.'=>'無法停止匯入程序,請重新整理頁面後再試一次。','Could not prepare blogs for import. Please refresh and try again.'=>'無法進行匯入程序準備工作,請重新整理頁面後再試一次。','Could not check the decryption password. Please refresh and try again.'=>'無法檢查用於解密的密碼。請重新整理頁面後再試一次。','Could not confirm the import. Please refresh and try again.'=>'無法確認匯入程序,請重新整理頁面後再試一次。','Could not start the import. Please refresh and try again.'=>'無法啟動匯入程序,請重新整理頁面後再試一次。','Are you sure you want to stop the import?'=>'確定要停止匯入程序?','If you prefer a manual fix, follow our step-by-step guide on raising your upload limit.'=>'如果想要手動修正這項限制,請依照我們的逐步指南以提高上傳限制。','Our Unlimited Extension bypasses this!'=>'我們的 Unlimited 擴充功能可以解除這項限制。','Your file exceeds the %1$s upload limit set by your host.
%2$s
%3$s'=>'這個檔案已超過這個網站的主機的檔案上傳大小限制 %1$s
%2$s
%3$s','Stopping the export, please wait...'=>'請稍候,正在停止匯出程序...','Could not stop the export. Please refresh and try again.'=>'無法停止匯出程序,請重新整理頁面後再試一次。','Could not run the export. Please refresh and try again.'=>'無法執行匯出程序,請重新整理頁面後再試一次。','Could not start the export. Please refresh and try again.'=>'無法啟動匯出程序,請重新整理頁面後再試一次。','Are you sure you want to stop the export?'=>'確定要停止匯出程序?','Thank you! We have received your request and will be in touch soon.'=>'感謝來信,我們已收到相關要求,並會盡快聯絡。','Import failed'=>'匯入失敗','Import failed: %s'=>'匯入失敗: %s','Import failed (database error). Code: %1$s. %2$s'=>'匯入失敗 (資料庫發生錯誤)。代碼: %1$s。訊息: %2$s','Import failed. Code: %1$s. %2$s'=>'匯入失敗。代碼: %1$s。訊息: %2$s','Export failed'=>'匯出失敗','Export failed: %s'=>'匯出失敗: %s','Export failed (database error). Code: %1$s. Message: %2$s'=>'匯出失敗 (資料庫發生錯誤)。代碼: %1$s。訊息: %2$s','Could not list the backup content. Please ensure the backup file is accessible and not corrupted.'=>'無法列出備份檔案內容。請確認備份檔案可存取且未損毀。','Could not decrypt data. The process cannot continue.'=>'無法解密資料,導致程序無法繼續。','Could not obtain cipher length. The process cannot continue.'=>'無法取得加密長度,導致程序無法繼續。','Could not encrypt data. The process cannot continue.'=>'無法加密資料,導致程序無法繼續。','Could not generate random bytes. The process cannot continue.'=>'無法產生隨機位元組,導致程序無法繼續。','Could not authenticate the secret key. The process cannot continue. Technical details'=>'無法驗證秘密金鑰,導致程序無法繼續。技術詳細資料','Could not get current pointer position of %s. The process cannot continue. Technical details'=>'無法取得 %s 目前的指標位置,導致程序無法繼續。技術詳細資料','Could not seek to offset %1$d on %2$s. The process cannot continue. Technical details'=>'在 %2$s 上找不到偏移量 %1$d,導致程序無法繼續。技術詳細資料','Could not read file: %s. The process cannot continue. Technical details'=>'無法讀取檔案 %s,導致程序無法繼續。技術詳細資料','Out of disk space. Could not write to: %s. The process cannot continue. Technical details'=>'已無足夠的磁碟空間,無法寫入 %s,導致程序無法繼續。技術詳細資料','Could not write to: %s. The process cannot continue. Technical details'=>'無法寫入 %s,導致程序無法繼續。技術詳細資料','Could not open %1$s with mode %2$s. The process cannot continue. Technical details'=>'無法使用 [%2$s] 模式開啟 %1$s,導致程序無法繼續。技術詳細資料','Your archive file name contains invalid characters: < > : " | ? * \\0. It must not include these characters. The process cannot continue. Technical details'=>'這個網站的壓縮檔檔案名稱包含無效的字元 < > : " | ? * \\0,導致程序無法繼續。技術詳細資料','Could not locate the archive path. The process cannot continue. Technical details'=>'找不到壓縮檔儲存資料夾路徑,導致程序無法繼續。技術詳細資料','Your storage directory name contains invalid characters: < > : " | ? * \\0. It must not include these characters. The process cannot continue. Technical details'=>'這個網站的儲存目錄名稱包含無效的字元 < > : " | ? * \\0,導致程序無法繼續。技術詳細資料','Could not locate the storage path. The process cannot continue. Technical details'=>'找不到儲存資料夾路徑,導致程序無法繼續。技術詳細資料','All-in-One WP Migration makes moving your entire WordPress site simple. Export or import your database, media, plugins, and themes with just a few clicks.'=>'All-in-One WP Migration 讓移轉整個 WordPress 網站變的簡單。僅需幾個點擊,便能匯出或匯入網站資料庫、媒體、外掛及佈景主題。','View Error Log'=>'檢視錯誤記錄','Invalid archive file type. Only .wpress files are allowed. The process cannot continue. Technical details'=>'無效的壓縮檔檔案類型 (僅可使用 .wpress 檔案),導致程序無法繼續。技術詳細資料',' + Download %3$s + Size: %4$s + '=>'下載 %3$s 的匯出檔檔案大小: %4$s','Reset Hub Demo'=>'[重設中心] 功能示範','Upgrade to Premium '=>'升級至 Premium 版','Please note, the features displayed below are part of an image showcasing the potential of Reset Hub in its Premium version. To activate and enjoy these advanced features, upgrade to Premium now! Elevate your website management experience with these exclusive functionalities and priority support.'=>'請注意,在下方顯示的功能是這個外掛 Premium 版 [重設中心] 部分功能的圖片展示。如需啟用並使用這些進階功能,請立即升級至 Premium 版。使用這些獨家功能及優先技術支援,便能提升網站管理員的網站管理體驗。','Experience Full Functionality with Premium!'=>'體驗 Premium 版的完整功能!','Star'=>'星形符號','Reset Hub'=>'重設中心','Premium'=>'Premium 版','Leverage the simplicity of Dropbox for your backup needs. Direct your scheduled backups to be stored in Dropbox. It\'s secure, straightforward, and keeps your backups at your fingertips.'=>'利用 Dropbox 的簡易性達成網站利用 Dropbox 的簡易性達成網站備份需求。將網站排程備份儲存至 Dropbox,安全、簡單,並讓網站備份觸手可及。備份需求。將網站排程備份儲存至 Dropbox,安全、簡單,並讓網站備份觸手可及。','Tailor your backup schedules to fit the complexity of your WordPress Multisite. Choose to export the entire network or only a selection of subsites according to your requirements. Effortless management for even the most intricate site networks.'=>'設定對應的備份排程以配合 WordPress 多站網路的複雜性。依據需求匯出整個多站網路,或是僅匯出選取的子網站,便能輕鬆管理複雜的多站網路。','We\'ve got you covered with an array of supported storage providers. Whether you prefer Box, Amazon S3, WebDav or something else, you can choose the one that fits your needs best. Secure your backups exactly where you want them.'=>'我們支援一系列使用者愛用的儲存空間服務提供商,無論是 Box、Amazon S3、WebDav 或其他服務,使用者都可以從中擇一選取最適合自己的服務。','Enjoy the flexibility of FTP storage. Direct your scheduled backups to your own FTP server. You\'ll have full control over your data, providing you with a versatile and private storage solution.'=>'善用 FTP 儲存空間的靈活性。將網站排程備份儲存至自有的 FTP 伺服器,便能完整控管網站資料,並成為私有儲存空間解決方案。','Harness the power of OneDrive for your backups. Set up your scheduled backups to be saved directly in your OneDrive. It\'s secure, integrated with your Microsoft account, and keeps your data readily accessible.'=>'利用 OneDrive 強大的功能為網站進行備份。網站備份排程直接儲存至 OneDrive,不僅安全,還能整合至使用者的 Microsoft 帳號,並讓資料可以隨時存取。','Benefit from the robustness of Google Drive. Schedule your backups to be saved directly to your Google Drive account. Simple, secure, and integrated into a platform you already use.'=>'Google 雲端硬碟強大的功能帶來許多優勢。網站備份排程直接儲存至 Google 雲端硬碟,簡單、安全,並能整合至多數使用者已在使用的 Google 平台。','Manage your storage effectively with our flexible retention settings. Decide how many backups you want to keep at a time. Old backups are automatically cleared, keeping your storage neat and efficient.'=>'使用外掛提供的靈活保留期設定,就能有效的管理儲存空間。只要設定同時要保留多少份備份,便會自動清除舊的備份檔案,以便保有儲存空間的餘裕。','Retention settings'=>'保留期設定','Stay informed, not overwhelmed. Tailor your notification preferences to get updates that matter to you. Whether it\'s the status of each backup, or just critical alerts, control what you want to be notified about.'=>'隨時掌握網站狀況,不會手足無措。設定網站的通知偏好設定,以獲得必要的重要更新。無論是每次備份的狀態,或僅是嚴重警告,都可以對這些通知進行掌控。','Notification settings'=>'通知設定','Never worry about forgetting to back up your site again. Choose from various scheduling options, from daily to monthly, and we\'ll automate the rest. Backups happen like clockwork, giving you peace of mind and a solid safety net'=>'不必再擔心忘記備份網站。這項功能可以讓使用者使用多種排程選項,從每日備份到每月備份,一經設定完畢,外掛便會完成餘下的工作。備份會定期執行,讓使用者高枕無憂,並享有堅實的安全網。','Enable this feature'=>'啟用這項功能','Backup scheduler'=>'備份排程程式','Multisite Schedules'=>'多站網路排程程式','More Storage Providers'=>'更多儲存空間服務提供商','FTP Storage'=>'FTP 儲存空間','OneDrive Storage'=>'OneDrive 儲存空間','Dropbox Storage'=>'Dropbox 儲存空間','Google Drive Storage'=>'Google 雲端硬碟儲存空間','Retention Settings'=>'保留期設定','Notification Settings'=>'通知設定','Backup Scheduler'=>'備份排程程式','Schedules'=>'排程','Backup is encrypted. Please provide decryption password: '=>'備份檔案已加密。請提供解密密碼: ','Password-protect and encrypt backups'=>'密碼保護及加密備份檔案','A password is required'=>'密碼為必填。','Encrypt this backup with a password'=>'使用密碼加密這個備份檔案','Importing an encrypted backup is not supported on this server. The process cannot continue. Technical details'=>'這台伺服器不支援匯入加密的備份檔案,導致程序無法繼續。技術詳細資料','The passwords do not match'=>'輸入的密碼不相符。','Repeat the password'=>'重複輸入密碼','Submit'=>'送出','The backup is encrypted'=>'備份檔案已加密','List'=>'內容清單','Show backup content'=>'顯示備份檔案內容','Downloading is not possible because backups directory is not accessible.'=>'由於備份檔案資料夾無法存取,因此無法下載檔案。','Reading...'=>'正在讀取...','List the content of the backup'=>'備份檔案內容清單','Error'=>'錯誤','More'=>'更多操作','You have %d backups'=>'這個網站有 %d 個備份檔案。','You have %d backup'=>'這個網站有 %d 個備份檔案。','Error: %s'=>'錯誤: %s','Archiving %1$d theme files...
%2$d%% complete'=>'正在壓縮 %1$d 個佈景主題檔案...
已完成 %2$d%%','Contact Support'=>'聯絡支援團隊','Retrieving WordPress permalinks settings...'=>'正在擷取 WordPress 永久連結設定...','» Reset Avada Fusion Builder cache.
'=>'» 重設 Avada Fusion Builder 快取
','» Re-sign Oxygen Builder shortcodes.
'=>'» 重新簽署 Oxygen Builder 短代碼
','» Permalinks are set to default. Why?
'=>'» [永久連結] 的設定值已設定為 [預設]。進一步了解成因
','Translate'=>'本地化','Archiving %1$d media files...
%2$d%% complete'=>'正在壓縮 %1$d 個媒體檔案...
已完成 %2$d%%','Archiving %1$d content files...
%2$d%% complete'=>'正在壓縮 %1$d 個內容檔案...
已完成 %2$d%%','I have enough disk space'=>'這台主機有足夠的磁碟空間','Your backup is from a PHP %1$s but the site that you are importing to is PHP %2$s. + This could cause the import to fail. Technical details: https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7/'=>'這份備份檔案來自執行環境為 PHP %1$s 的網站,卻要匯入至執行環境為 PHP %2$s 的主機,這種狀況可能會導致無法匯入。技術詳細資料: https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7/','Refreshing backup list...'=>'重新整理備份檔案清單...','

Could not import site

+

Please ensure the directory %s has read/write permissions.

+

Technical details

'=>'

無法匯入網站

請確認系統具備對 %s 目錄的讀取及寫入權限。

技術詳細資料

','

Could not export site

+

Please ensure the directory %s has read/write permissions.

+

Technical details

'=>'

無法匯出網站

請確認系統具備對 %s 目錄的讀取及寫入權限。

技術詳細資料

','

Could not restore site

+

Please ensure the directory %s has read/write permissions.

+

Technical details

'=>'

無法還原網站

請確認系統具備對 %s 目錄的讀取及寫入權限。

技術詳細資料

','Your current profile role does not have Export/Import capabilities enabled. + Technical details'=>'目前的登入身分沒有進行匯出/匯入的權限。技術詳細資料','To choose a file please go inside the link and click on the browse button.'=>'如需選取檔案,請點擊連結並點擊 [瀏覽] 按鈕。','Finish'=>'完成','Please ensure your file was created with the All-in-One WP Migration plugin. + Technical details'=>'請確認目前的檔案是由 All-in-One WP Migration 外掛所建立。技術詳細資料','The archive file appears to be corrupted. Follow this article for possible fixes.'=>'壓縮檔可能已損毀。請參考這篇文章以尋求可能的解決方式。','Your backup is from a PHP %1$s but the site that you are importing to is PHP %2$s. This could cause the import to fail. Technical details'=>'這份備份檔案來自執行環境為 PHP %1$s 的網站,卻要匯入至執行環境為 PHP %2$s 的主機,這種狀況可能會導致無法匯入。技術詳細資料','Drag & Drop a backup to import it'=>'拖放備份檔案以匯入','Exporting database...
%1$d%% complete
%2$s records saved'=>'正在匯出資料庫...
已完成 %1$d%%
%2$s 筆資料已儲存','Backup restore requires the Unlimited Extension. Get it here'=>'從網站主機伺服器直接還原備份檔案為付費版 Unlimited 擴充功能。立即購買','All-in-One WP Migration Command'=>'All-in-One WP Migration 命令','Preparing to export...'=>'正在準備匯出網站...','%s ago'=>'%s前','Your purchase ID is invalid. Please contact us.'=>'無效的購買 ID。請聯絡我們。','Are you sure you want to delete this backup?'=>'確定要刪除這個備份檔案?','Please do not close this browser window or your import will fail'=>'請不要關閉這個瀏覽器視窗,否則匯入程序會失敗。','Continue'=>'繼續','Proceed'=>'繼續','Stop import'=>'停止匯入程序','Stop export'=>'停止匯出程序','Close'=>'關閉','Preparing configuration...'=>'正在準備組態檔案⋯','Archiving database...
%d%% complete'=>'正在壓縮資料庫...
已完成 %d%%','Restoring database...
%d%% complete'=>'正在還原資料庫...
已完成 %d%%','Unpacking database...
%d%% complete'=>'正在解壓縮資料庫...
已完成 %d%%','Preparing to import...'=>'正在準備匯入...','Monthly'=>'每月','Weekly'=>'每週','Activating mu-plugins...'=>'正在啟用 [強制使用] 外掛...','Do not replace email domain'=>'不要變更電子郵件地址網域名稱','Preparing blogs...'=>'正在匯入網站...','Check for updates'=>'檢查更新','ServMask'=>'ServMask','https://servmask.com/'=>'https://servmask.com/','Import Site'=>'匯入網站','Import From'=>'匯入來源','Export Site'=>'匯出網站','Once the file is successfully downloaded on your computer, you can import it to any of your WordPress sites.'=>'檔案成功下載至個人裝置後,便可使用下載完成的檔案在任何 WordPress 網站進行匯入。','Press "Export" button and the site archive file will pop up in your browser.'=>'按下 [匯出] 按鈕且匯出成功後,網站匯出壓縮檔會顯示於瀏覽器的彈出式視窗。','In the advanced settings section you can configure more precisely the way of exporting.'=>'在 [進階選項] 中,可以更準確的設定匯出方式。','Add'=>'新增','in the database'=>'(搜尋/取代均於資料庫中進行)',''=>'<取代文字>','Replace with'=>'取代為',''=>'<原始文字>','File'=>'檔案','(click to expand)'=>'(點擊以展開)','Advanced options'=>'進階選項','Cancel'=>'取消','Send'=>'傳送','Enter a password'=>'輸入密碼','Leave Feedback'=>'意見反應','Create backup'=>'建立備份','Delete'=>'刪除','Restore'=>'還原','Download'=>'下載','Size'=>'檔案大小','Date'=>'備份日期','Name'=>'檔案名稱','Your site has been imported successfully!'=>'這個網站的匯入程序已完成!','Restoring %1$d files...
%2$d%% complete'=>'正在還原 %1$d 個檔案...
已完成 %2$d%%','Renaming export file...'=>'正在重新命名匯出檔案...','Archiving %1$d plugin files...
%2$d%% complete'=>'正在壓縮 %1$d 個外掛檔案...
已完成 %2$d%%','Backups'=>'備份','Import'=>'匯入','Export'=>'匯出','Get multisite'=>'購買 Multisite 擴充功能']]; \ No newline at end of file diff --git a/languages/plugins/all-in-one-wp-migration-zh_TW.mo b/languages/plugins/all-in-one-wp-migration-zh_TW.mo new file mode 100644 index 0000000..3de9074 Binary files /dev/null and b/languages/plugins/all-in-one-wp-migration-zh_TW.mo differ diff --git a/languages/plugins/all-in-one-wp-migration-zh_TW.po b/languages/plugins/all-in-one-wp-migration-zh_TW.po new file mode 100644 index 0000000..76e7c90 --- /dev/null +++ b/languages/plugins/all-in-one-wp-migration-zh_TW.po @@ -0,0 +1,1329 @@ +# Translation of Plugins - All-in-One WP Migration and Backup - Stable (latest release) in Chinese (Taiwan) +# This file is distributed under the same license as the Plugins - All-in-One WP Migration and Backup - Stable (latest release) package. +msgid "" +msgstr "" +"PO-Revision-Date: 2026-04-02 20:26:11+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: Plugins - All-in-One WP Migration and Backup - Stable (latest release)\n" + +#: lib/model/import/class-ai1wm-import-validate-crc.php:129 +msgid "This backup file is damaged and can't be imported.
Try downloading or transferring the file again.

Reason: File integrity check failed (CRC mismatch). Technical details" +msgstr "這個備份檔案已損毀且無法匯入。
請嘗試再次下載或傳輸檔案。

原因: 檔案完整性檢查失敗 (CRC 不相符)。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-validate-crc.php:43 +msgid "Validating archive checksum..." +msgstr "正在驗證壓縮總和檢查碼..." + +#: lib/model/export/class-ai1wm-export-archive-crc.php:38 +msgid "Calculating archive checksum..." +msgstr "正在計算壓縮總和檢查碼..." + +#: lib/view/common/share-buttons.php:56 lib/view/common/share-buttons.php:57 +msgid "Subscribe on YouTube" +msgstr "訂閱 YouTube 頻道" + +#: lib/view/common/share-buttons.php:47 lib/view/common/share-buttons.php:48 +msgid "Share on Facebook" +msgstr "分享至 Fackbook" + +#: lib/view/common/share-buttons.php:38 lib/view/common/share-buttons.php:39 +msgid "Share on X" +msgstr "分享至 X" + +#: lib/model/import/class-ai1wm-import-validate.php:65 +msgid "Unpacking configuration..." +msgstr "正在解壓縮組態檔案..." + +#: lib/model/import/class-ai1wm-import-database-file.php:118 +msgid "Database unpacked." +msgstr "資料庫已完成解壓縮。" + +#: lib/model/import/class-ai1wm-import-check-encryption.php:54 +msgid "Importing an encrypted backup is not supported on this server. The process cannot continue. Technical details: https://help.servmask.com/knowledgebase/unable-to-encrypt-and-decrypt-backups/" +msgstr "這台伺服器不支援匯入加密的備份檔案,導致程序無法繼續。技術詳細資料: https://help.servmask.com/knowledgebase/unable-to-encrypt-and-decrypt-backups/" + +#: lib/model/import/class-ai1wm-import-check-compression.php:69 +msgid "Compressed backup detected. Compression will be handled automatically." +msgstr "已偵測到壓縮的備份檔案,系統會自動處理相關程序。" + +#: lib/model/import/class-ai1wm-import-check-compression.php:56 +msgid "" +"Importing a compressed backup is not supported on this server.\n" +"\t\t\t\t\t\t\tPlease ensure %s extension is enabled. Technical details" +msgstr "這台伺服器不支援匯入壓縮的備份檔案。請確認 %s 擴充功能已啟用。技術詳細資料" + +#: lib/model/export/class-ai1wm-export-config-file.php:37 +msgid "Archiving configuration..." +msgstr "正在壓縮組態檔案..." + +#: lib/controller/class-ai1wm-backups-controller.php:260 +msgid "Download a file from encrypted backup is not supported on this server. The process cannot continue. Technical details" +msgstr "這台伺服器不支援下載加密的備份檔案,導致程序無法繼續。技術詳細資料" + +#: lib/view/common/leave-feedback.php:64 +msgid "I agree to let All-in-One WP Migration use my email to respond to my request." +msgstr "我同意授權 All-in-One WP Migration 使用我的電子郵件地址及相關資訊以回覆我的問題。" + +#: lib/model/import/class-ai1wm-import-upload.php:186 +msgid "" +"An unknown error (code: %s) occurred during the file upload. The process cannot continue.\n" +"\t\t\t\t\t\t\t\tTechnical details" +msgstr "檔案上傳時發生未知的錯誤 (錯誤代碼: %s),導致程序無法繼續。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:171 +msgid "" +"A PHP extension blocked this file upload. The process cannot continue.\n" +"\t\t\t\t\t\t\tTechnical details" +msgstr "某個 PHP 擴充功能封鎖了這個檔案的上傳,導致程序無法繼續。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:158 +msgid "" +"Could not save the uploaded file. Please check file permissions and try again.\n" +"\t\t\t\t\t\t\tTechnical details" +msgstr "無法儲存上傳的檔案,請檢查檔案權限然後再試一次。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:145 +msgid "" +"No temporary folder is available on the server. The process cannot continue.\n" +"\t\t\t\t\t\t\tTechnical details" +msgstr "這台伺服器上沒有可供使用的暫存資料夾,導致程序無法繼續。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:132 +msgid "" +"The uploaded file is too large for this server. The process cannot continue.\n" +"\t\t\t\t\t\t\tTechnical details" +msgstr "對這台伺服器來說上傳的檔案太大,導致程序無法繼續。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:111 +msgid "" +"Could not upload the file because %s. The process cannot continue.\n" +"\t\t\t\t\t\t\t\t\tTechnical details" +msgstr "由於「%s」因此無法上傳檔案,導致程序無法繼續。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:89 +msgid "" +"Invalid file data. Please ensure your file is a .wpress backup created with All-in-One WP Migration.\n" +"\t\t\t\t\t\tTechnical details" +msgstr "無效的檔案資料。請確認檔案是由 All-in-One WP Migration 建立的 .wpress 備份檔案。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:59 +msgid "" +"The uploaded file is missing an error code. The process cannot continue.\n" +"\t\t\t\t\t\tTechnical details" +msgstr "上傳檔案時找不到錯誤代碼,導致程序無法繼續。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-upload.php:42 +msgid "" +"The uploaded file is missing a temporary path. The process cannot continue.\n" +"\t\t\t\t\t\tTechnical details" +msgstr "上傳檔案時找不到暫存路徑,導致程序無法繼續。技術詳細資料" + +#: lib/view/export/advanced-settings.php:134 +msgid "Exclude plugins" +msgstr "排除外掛" + +#: lib/view/export/advanced-settings.php:127 +msgid "Exclude must-use plugins" +msgstr "排除 [強制使用] 外掛" + +#: lib/view/export/advanced-settings.php:118 +msgid "Exclude themes" +msgstr "排除佈景主題" + +#: lib/view/export/advanced-settings.php:112 +msgid "Exclude media library" +msgstr "排除媒體庫" + +#: lib/view/export/advanced-settings.php:108 +msgid "File Options" +msgstr "檔案選項" + +#: lib/view/export/advanced-settings.php:89 +msgid "Exclude database" +msgstr "排除資料庫" + +#: lib/view/export/advanced-settings.php:73 +msgid "Database Options" +msgstr "資料庫選項" + +#: lib/view/export/advanced-settings.php:41 +msgid "Security Options" +msgstr "安全性選項" + +#. translators: 1: Link to archive, 2: Archive title, 3: File name, 4: Archive +#. title, 5: File size. +#: lib/model/export/class-ai1wm-export-download.php:73 +msgid "" +"\n" +"\t\t\t\t\t\t\tDownload %2$s\n" +"\t\t\t\t\t\t\tSize: %4$s\n" +"\t\t\t\t\t\t\t" +msgstr "下載 %2$s 的匯出檔檔案大小: %4$s" + +#. Plugin Name of the plugin +#: all-in-one-wp-migration.php +msgid "All-in-One WP Migration and Backup" +msgstr "All-in-One WP Migration and Backup" + +#. translators: 1: Admin url, 2: Url +#: lib/view/import/done.php:50 +msgid "" +"» Save permalinks structure
\n" +"\t\t\t\t» Review your migration experience
\n" +"\t\t\t\t» Protect your site with real-time threat protection" +msgstr "» 儲存永久連結結構
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站" + +#. translators: Url +#: lib/view/import/avada.php:51 +msgid "» Protect your site with real-time threat protection" +msgstr "» 使用即時威脅保護功能保護這個網站。" + +#: lib/view/main/multisite-notice.php:36 +msgid "WordPress Multisite requires our All-in-One WP Migration Multisite Extension. Get it here: " +msgstr "WordPress 多站網路需要 All-in-One WP Migration 的 Multisite 擴充功能。立即取得: " + +#. translators: Backups folder path. +#. translators: Storage folder path. +#: lib/view/main/backups-path-notice.php:39 +#: lib/view/main/storage-path-notice.php:39 +msgid "Could not create %s folder. Please ensure the parent folder has read/write/execute permissions (0777)." +msgstr "無法建立 %s 資料夾。請確認系統具備對上層資料夾的讀取、寫入及執行權限 (0777)。" + +#. translators: File name. +#: lib/view/main/backups-htaccess-notice.php:39 +#: lib/view/main/backups-index-html-notice.php:39 +#: lib/view/main/backups-index-php-notice.php:39 +#: lib/view/main/backups-robots-txt-notice.php:39 +#: lib/view/main/backups-webconfig-notice.php:39 +#: lib/view/main/storage-htaccess-notice.php:39 +#: lib/view/main/storage-index-html-notice.php:39 +#: lib/view/main/storage-index-php-notice.php:39 +#: lib/view/main/storage-webconfig-notice.php:39 +#: lib/view/main/wordpress-htaccess-notice.php:39 +msgid "Could not create %s file. Please ensure the parent folder has read/write permissions." +msgstr "無法建立 %s 檔案。請確認系統具備對上層資料夾的讀取及寫入權限。" + +#. translators: Max upload file size +#: lib/view/import/pro.php:38 +msgid "Your host restricts uploads to %s." +msgstr "這個網站的主機上傳檔案大小上限為 %s。" + +#. translators: 1: Admin url, 2: Url +#: lib/view/import/oxygen.php:51 +msgid "" +"» Save permalinks structure.
\n" +"\t\t\t\t» Re-sign Oxygen Builder shortcodes.
\n" +"\t\t\t\t» Review your migration experience.
\n" +"\t\t\t\t» Protect your site with real-time threat protection" +msgstr "» 儲存永久連結結構
» 重新簽署 Oxygen Builder 短代碼
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站" + +#. translators: Url +#: lib/view/import/oxygen.php:36 +msgid "" +"» Permalinks are set to default. Why?
\n" +"\t\t\t\t» Re-sign Oxygen Builder shortcodes.
\n" +"\t\t\t\t» Review your migration experience.
\n" +"\t\t\t\t» Protect your site with real-time threat protection" +msgstr "» [永久連結] 的設定值已設定為 [預設]。進一步了解成因
» 重新簽署 Oxygen Builder 短代碼
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站" + +#. translators: Url +#: lib/view/import/done.php:36 +msgid "" +"» Permalinks are set to default. Why?
\n" +"\t\t\t\t» Review your migration experience.
\n" +"\t\t\t\t» Protect your site with real-time threat protection" +msgstr "» [永久連結] 的設定值已設定為 [預設]。進一步了解成因
» 為移轉經驗撰寫評論
» 使用即時威脅保護功能保護這個網站" + +#: lib/view/import/avada.php:47 +msgid "» Review your migration experience.
" +msgstr "» 為移轉經驗撰寫評論
" + +#. translators: Url +#: lib/view/import/avada.php:37 +msgid "» Save permalinks structure.
" +msgstr "» 儲存永久連結結構
" + +#: lib/view/export/help-section.php:38 +msgid "Hints" +msgstr "提示" + +#: lib/view/export/help-section.php:34 +msgid "Use this screen to export your database, media, themes, and plugins into one .wpress file. Later, import that file to another WordPress site." +msgstr "使用這個畫面以匯出這個網站的資料庫、媒體、佈景主題及外掛至單一 .wpress 檔案,稍後還能將這個備份檔案匯入至其他 WordPress 網站。" + +#: lib/view/export/find-replace.php:37 lib/view/export/find-replace.php:46 +msgid "Search for" +msgstr "搜尋" + +#: lib/view/export/export-buttons.php:37 +msgid "Export Site To" +msgstr "網站匯出方式" + +#: lib/view/export/advanced-settings.php:83 +msgid "Exclude post revisions" +msgstr "排除內容修訂" + +#: lib/view/export/advanced-settings.php:77 +msgid "Exclude spam comments" +msgstr "排除垃圾留言" + +#: lib/view/common/leave-feedback.php:59 +msgid "Describe your issue or feedback..." +msgstr "請使用英文說明相關問題或意見反應..." + +#: lib/view/common/leave-feedback.php:56 +msgid "Email address" +msgstr "電子郵件地址" + +#: lib/view/common/leave-feedback.php:49 +msgid "I need help" +msgstr "我需要協助" + +#: lib/view/common/leave-feedback.php:40 +msgid "I have an idea" +msgstr "我想提出建議" + +#: lib/view/backups/index.php:54 +msgid "No backups found. Create a new one?" +msgstr "找不到備份檔案。是否要建立新的備份檔案?" + +#: lib/view/backups/backups-list.php:90 +msgid "Over 2GB" +msgstr "超過 2GB" + +#: lib/view/backups/backups-list.php:66 +msgid "Click to label this backup" +msgstr "點擊以設定這個備份檔案的標籤" + +#: lib/model/import/class-ai1wm-import-validate.php:40 +msgid "" +"Your server uses 32-bit PHP and cannot process files larger than 2GB. Please switch to 64-bit PHP and try again.\n" +"\t\t\t\t\t\tTechnical details" +msgstr "這個網站在伺服器上的 PHP 執行環境為 32 位元版本,因此無法處理大於 2GB 的檔案。請改用 64 位元版本後再試一次。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-users.php:66 +msgid "WordPress users prepared." +msgstr "WordPress 使用者已完成準備。" + +#: lib/model/import/class-ai1wm-import-users.php:40 +msgid "Preparing WordPress users..." +msgstr "正在準備 WordPress 使用者..." + +#: lib/model/import/class-ai1wm-import-upload.php:74 +#: lib/model/import/class-ai1wm-import-validate.php:54 +msgid "" +"Invalid file type. Please ensure your file is a .wpress backup created with All-in-One WP Migration.\n" +"\t\t\t\t\t\tTechnical details" +msgstr "無效的檔案類型。請確認檔案是由 All-in-One WP Migration 建立的 .wpress 備份檔案。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-permalinks.php:44 +msgid "WordPress permalinks settings retrieved." +msgstr "WordPress 永久連結設定已擷取。" + +#: lib/model/import/class-ai1wm-import-options.php:75 +msgid "WordPress options prepared." +msgstr "WordPress 選項已完成準備。" + +#: lib/model/import/class-ai1wm-import-options.php:36 +msgid "Preparing WordPress options..." +msgstr "正在準備 WordPress 選項..." + +#: lib/model/import/class-ai1wm-import-mu-plugins.php:89 +msgid "Mu-plugins activated." +msgstr "[強制使用] 外掛已啟用。" + +#: lib/model/import/class-ai1wm-import-enumerate.php:52 +msgid "WordPress files gathered." +msgstr "WordPress 檔案已完成收集。" + +#: lib/model/import/class-ai1wm-import-enumerate.php:37 +msgid "Gathering WordPress files..." +msgstr "正在收集 WordPress 檔案..." + +#: lib/model/import/class-ai1wm-import-database.php:1016 +msgid "Database restored." +msgstr "資料庫已還原。" + +#. translators: Link to Unlimited Extension +#: lib/model/import/class-ai1wm-import-confirm.php:63 +msgid "" +"Importing this file will only replace matching content. Other items stay unchanged.\n" +"\t\t\t\t\tNeed a full reset first? Try Reset Hub in our Unlimited Extension.
\n" +"\t\t\t\t\tEnsure you have a current backup. Proceed?" +msgstr "匯入這個檔案僅會取代相符的內容,其他項目會保持不變。如果需要預先完整重設,請使用 Unlimited 擴充功能 中的 Reset Hub 功能。
確認這個網站有最新的備份檔案。確定要繼續執行?" + +#. translators: Link to Unlimited Extension +#: lib/model/import/class-ai1wm-import-confirm.php:52 +msgid "" +"Importing this file will only replace matching content. Other items stay unchanged.\n" +"\t\t\t\t\tNeed a full reset first? Try Reset Hub in our Unlimited Extension (%s).\n" +"\t\t\t\t\tEnsure you have a current backup. Proceed?" +msgstr "匯入這個檔案僅會取代相符的內容,其他項目會保持不變。如果需要預先完整重設,請使用 Unlimited 擴充功能 (%s) 中的 Reset Hub 功能。確認這個網站有最新的備份檔案。確定要繼續執行?" + +#: lib/controller/class-ai1wm-backups-controller.php:267 +#: lib/model/import/class-ai1wm-import-check-encryption.php:76 +msgid "The decryption password is not valid. The process cannot continue." +msgstr "用於解密的密碼無效,導致程序無法繼續。" + +#: lib/model/import/class-ai1wm-import-check-encryption.php:71 +msgid "Decryption password validated." +msgstr "用於解密的密碼已驗證。" + +#: lib/model/import/class-ai1wm-import-blogs.php:152 +msgid "Blogs prepared." +msgstr "網站已完成準備。" + +#: lib/model/import/class-ai1wm-import-blogs.php:142 +msgid "Could not import a WordPress Network into a single WordPress site. The process cannot continue. Please check your import settings." +msgstr "無法將 WordPress 多站網路匯入至單一 WordPress 網站。程序無法繼續。請檢查外掛的匯入設定。" + +#: lib/model/import/class-ai1wm-import-blogs.php:139 +msgid "The archive must contain at least one WordPress site. The process cannot continue. Please check your export settings." +msgstr "壓縮檔必須包含至少一個 WordPress 網站,否則程序無法繼續。請重新檢查外掛的匯出設定。" + +#: lib/model/import/class-ai1wm-import-blogs.php:136 +msgid "The archive must contain only a single WordPress site. The process cannot continue. Please revisit your export settings." +msgstr "壓縮檔僅能包含單一 WordPress 網站,否則程序無法繼續。請重新檢查外掛的匯出設定。" + +#: lib/model/export/class-ai1wm-export-enumerate-themes.php:108 +msgid "Theme files gathered." +msgstr "佈景主題檔案已完成收集。" + +#: lib/model/export/class-ai1wm-export-enumerate-themes.php:53 +msgid "Gathering theme files..." +msgstr "正在收集佈景主題檔案..." + +#: lib/model/export/class-ai1wm-export-enumerate-tables.php:89 +msgid "Database tables gathered." +msgstr "資料庫的資料表已完成收集。" + +#: lib/model/export/class-ai1wm-export-enumerate-tables.php:48 +msgid "Gathering database tables..." +msgstr "正在收集資料庫的資料表..." + +#: lib/model/export/class-ai1wm-export-enumerate-plugins.php:102 +msgid "Plugin files gathered." +msgstr "外掛檔案已完成收集。" + +#: lib/model/export/class-ai1wm-export-enumerate-plugins.php:53 +msgid "Gathering plugin files..." +msgstr "正在收集外掛檔案..." + +#: lib/model/export/class-ai1wm-export-enumerate-media.php:95 +msgid "Media files gathered." +msgstr "媒體檔案已完成收集。" + +#: lib/model/export/class-ai1wm-export-enumerate-media.php:53 +msgid "Gathering media files..." +msgstr "正在收集媒體檔案..." + +#: lib/model/export/class-ai1wm-export-enumerate-content.php:113 +msgid "Content files gathered." +msgstr "內容檔案已完成收集。" + +#: lib/model/export/class-ai1wm-export-enumerate-content.php:53 +msgid "Gathering content files..." +msgstr "正在收集內容檔案..." + +#: lib/model/export/class-ai1wm-export-database.php:164 +msgid "Database exported." +msgstr "資料庫已匯出。" + +#: lib/model/export/class-ai1wm-export-database-file.php:107 +msgid "Database archived." +msgstr "資料庫已完成壓縮。" + +#: lib/model/export/class-ai1wm-export-config.php:199 +msgid "Configuration prepared." +msgstr "組態檔案已完成準備。" + +#: lib/model/export/class-ai1wm-export-config-file.php:46 +msgid "Configuration archived." +msgstr "組態檔案已完成壓縮。" + +#: lib/model/export/class-ai1wm-export-compatibility.php:37 +#: lib/model/import/class-ai1wm-import-compatibility.php:38 +msgid "Checking for compatibility..." +msgstr "正在檢查相容性..." + +#: lib/model/export/class-ai1wm-export-archive.php:46 +msgid "Export file created." +msgstr "匯出檔案已建立。" + +#: lib/model/export/class-ai1wm-export-archive.php:39 +msgid "Creating export file..." +msgstr "正在建立匯出檔案..." + +#. translators: Error message. +#: lib/model/class-ai1wm-feedback.php:81 +msgid "An error occurred while submitting your request: %s" +msgstr "提交要求時發生錯誤: %s" + +#: lib/model/class-ai1wm-feedback.php:63 +msgid "Please check the consent box so we can use your email to respond to you." +msgstr "請核取同意方塊,我們才能使用你的電子郵件地址進行回覆。" + +#: lib/model/class-ai1wm-feedback.php:58 +msgid "Please describe your issue or feedback." +msgstr "請使用英文說明相關問題或意見反應。" + +#: lib/model/class-ai1wm-feedback.php:53 +msgid "Please select a feedback type." +msgstr "請選取意見反應類型。" + +#: lib/model/class-ai1wm-feedback.php:48 +msgid "Please enter a valid email address." +msgstr "請輸入有效的電子郵件地址。" + +#. translators: 1: Extension name, 2: Plugins update page. +#: lib/model/class-ai1wm-compatibility.php:56 +msgid "%1$s is out of date. You must update this extension before using it.
" +msgstr "%1$s 太過老舊。在使用這個擴充功能前,必須先更新擴充功能
" + +#. translators: Extension name. +#: lib/model/class-ai1wm-compatibility.php:53 +msgid "%s is out of date. Please update this extension before using it." +msgstr "%s 太過老舊。在使用這個擴充功能前,必須先更新擴充功能。" + +#: lib/controller/class-ai1wm-main-controller.php:852 +msgid "Please enter a password to restore the backup" +msgstr "請輸入密碼以還原備份檔案。" + +#: lib/controller/class-ai1wm-main-controller.php:831 +msgid "Could not download backup" +msgstr "無法下載備份檔案。" + +#: lib/controller/class-ai1wm-main-controller.php:895 +msgid "Could not read backup content" +msgstr "無法讀取備份檔案內容。" + +#. translators: Disk space to free up. +#: lib/controller/class-ai1wm-main-controller.php:860 +msgid "Not enough disk space.
Free up %s before restoring." +msgstr "沒有足夠的磁碟空間。
請在還原前釋放 %s。" + +#. translators: 1: Link to Unlimited Extension +#: lib/controller/class-ai1wm-main-controller.php:891 +msgid "\"Restore\" functionality is available in our Unlimited Extension.
If you would rather go the manual route, you can still restore by downloading your backup and using \"Import from file\"." +msgstr "還原功能僅由 Unlimited 擴充功能提供。
如果網站管理員要手動還原,請先下載備份檔案,然後才匯入備份檔案。" + +#: lib/controller/class-ai1wm-main-controller.php:879 +msgid "" +"Invalid file type. Please ensure that your file is a .wpress file created with All-in-One WP Migration.\n" +"\t\t\t\t\tTechnical details" +msgstr "無效的檔案類型。請確認檔案是由 All-in-One WP Migration 建立的 .wpress 備份檔案。技術詳細資料" + +#. translators: 1: Link to Unlimited Extension, 2: Link to how to article +#: lib/controller/class-ai1wm-main-controller.php:863 +msgid "Your file exceeds the upload limit set by your host web server.
%1$s
%2$s" +msgstr "這個檔案已超過這個網站的網頁伺服器的檔案上傳大小限制。
%1$s
%2$s" + +#: lib/controller/class-ai1wm-main-controller.php:858 +msgid "Upload failed" +msgstr "上傳失敗" + +#: lib/controller/class-ai1wm-main-controller.php:857 +msgid "Upload failed - connection lost or timeout. Try uploading the file again." +msgstr "上傳失敗 - 失去連線或連線逾時。請再次上傳檔案。" + +#: lib/controller/class-ai1wm-main-controller.php:843 +msgid "Stopping the import, please wait..." +msgstr "請稍候,正在停止匯入程序..." + +#: lib/controller/class-ai1wm-main-controller.php:842 +msgid "Could not stop the import. Please refresh and try again." +msgstr "無法停止匯入程序,請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:841 +msgid "Could not prepare blogs for import. Please refresh and try again." +msgstr "無法進行匯入程序準備工作,請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:840 +msgid "Could not check the decryption password. Please refresh and try again." +msgstr "無法檢查用於解密的密碼。請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:839 +msgid "Could not confirm the import. Please refresh and try again." +msgstr "無法確認匯入程序,請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:838 +msgid "Could not start the import. Please refresh and try again." +msgstr "無法啟動匯入程序,請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:835 +msgid "Are you sure you want to stop the import?" +msgstr "確定要停止匯入程序?" + +#. translators: Link to how to article +#: lib/controller/class-ai1wm-main-controller.php:801 +#: lib/controller/class-ai1wm-main-controller.php:874 +#: lib/view/import/pro.php:61 +msgid "If you prefer a manual fix, follow our step-by-step guide on raising your upload limit." +msgstr "如果想要手動修正這項限制,請依照我們的逐步指南以提高上傳限制。" + +#. translators: Link to Unlimited Extension +#: lib/controller/class-ai1wm-main-controller.php:796 +#: lib/controller/class-ai1wm-main-controller.php:869 +#: lib/view/import/pro.php:49 +msgid "Our Unlimited Extension bypasses this!" +msgstr "我們的 Unlimited 擴充功能可以解除這項限制。" + +#. translators: 1: Max upload file size +#: lib/controller/class-ai1wm-main-controller.php:789 +msgid "Your file exceeds the %1$s upload limit set by your host.
%2$s
%3$s" +msgstr "這個檔案已超過這個網站的主機的檔案上傳大小限制 %1$s
%2$s
%3$s" + +#: lib/controller/class-ai1wm-main-controller.php:824 +msgid "Stopping the export, please wait..." +msgstr "請稍候,正在停止匯出程序..." + +#: lib/controller/class-ai1wm-main-controller.php:823 +msgid "Could not stop the export. Please refresh and try again." +msgstr "無法停止匯出程序,請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:822 +msgid "Could not run the export. Please refresh and try again." +msgstr "無法執行匯出程序,請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:821 +msgid "Could not start the export. Please refresh and try again." +msgstr "無法啟動匯出程序,請重新整理頁面後再試一次。" + +#: lib/controller/class-ai1wm-main-controller.php:818 +msgid "Are you sure you want to stop the export?" +msgstr "確定要停止匯出程序?" + +#: lib/controller/class-ai1wm-main-controller.php:811 +msgid "Thank you! We have received your request and will be in touch soon." +msgstr "感謝來信,我們已收到相關要求,並會盡快聯絡。" + +#: lib/controller/class-ai1wm-import-controller.php:110 +#: lib/controller/class-ai1wm-import-controller.php:112 +#: lib/controller/class-ai1wm-import-controller.php:115 +#: lib/controller/class-ai1wm-main-controller.php:837 +msgid "Import failed" +msgstr "匯入失敗" + +#. translators: Error message. +#: lib/controller/class-ai1wm-import-controller.php:106 +msgid "Import failed: %s" +msgstr "匯入失敗: %s" + +#. translators: 1: Error code, 2: Error message. +#: lib/controller/class-ai1wm-import-controller.php:95 +msgid "Import failed (database error). Code: %1$s. %2$s" +msgstr "匯入失敗 (資料庫發生錯誤)。代碼: %1$s。訊息: %2$s" + +#. translators: 1: Error code, 2: Error message. +#: lib/controller/class-ai1wm-import-controller.php:84 +msgid "Import failed. Code: %1$s. %2$s" +msgstr "匯入失敗。代碼: %1$s。訊息: %2$s" + +#: lib/controller/class-ai1wm-export-controller.php:98 +#: lib/controller/class-ai1wm-export-controller.php:99 +#: lib/controller/class-ai1wm-main-controller.php:820 +msgid "Export failed" +msgstr "匯出失敗" + +#. translators: 1: Error message. +#: lib/controller/class-ai1wm-export-controller.php:95 +msgid "Export failed: %s" +msgstr "匯出失敗: %s" + +#. translators: 1: Error code, 2: Error message. +#: lib/controller/class-ai1wm-export-controller.php:84 +msgid "Export failed (database error). Code: %1$s. Message: %2$s" +msgstr "匯出失敗 (資料庫發生錯誤)。代碼: %1$s。訊息: %2$s" + +#: lib/controller/class-ai1wm-backups-controller.php:306 +msgid "Could not list the backup content. Please ensure the backup file is accessible and not corrupted." +msgstr "無法列出備份檔案內容。請確認備份檔案可存取且未損毀。" + +#: functions.php:2383 +msgid "Could not decrypt data. The process cannot continue." +msgstr "無法解密資料,導致程序無法繼續。" + +#: functions.php:2360 +msgid "Could not obtain cipher length. The process cannot continue." +msgstr "無法取得加密長度,導致程序無法繼續。" + +#: functions.php:2345 +msgid "Could not encrypt data. The process cannot continue." +msgstr "無法加密資料,導致程序無法繼續。" + +#: functions.php:2339 +msgid "Could not generate random bytes. The process cannot continue." +msgstr "無法產生隨機位元組,導致程序無法繼續。" + +#: functions.php:1952 +msgid "Could not authenticate the secret key. The process cannot continue. Technical details" +msgstr "無法驗證秘密金鑰,導致程序無法繼續。技術詳細資料" + +#. translators: 1: Meta data stream URI. +#: functions.php:1711 +msgid "Could not get current pointer position of %s. The process cannot continue. Technical details" +msgstr "無法取得 %s 目前的指標位置,導致程序無法繼續。技術詳細資料" + +#. translators: 1: File offset, 2: Meta data stream URI. +#: functions.php:1688 +msgid "Could not seek to offset %1$d on %2$s. The process cannot continue. Technical details" +msgstr "在 %2$s 上找不到偏移量 %1$d,導致程序無法繼續。技術詳細資料" + +#. translators: 1: Meta data stream URI. +#: functions.php:1660 +msgid "Could not read file: %s. The process cannot continue. Technical details" +msgstr "無法讀取檔案 %s,導致程序無法繼續。技術詳細資料" + +#. translators: 1: Meta data stream URI. +#: functions.php:1634 +msgid "Out of disk space. Could not write to: %s. The process cannot continue. Technical details" +msgstr "已無足夠的磁碟空間,無法寫入 %s,導致程序無法繼續。技術詳細資料" + +#. translators: 1: Meta data stream URI. +#: functions.php:1622 functions.php:1746 +msgid "Could not write to: %s. The process cannot continue. Technical details" +msgstr "無法寫入 %s,導致程序無法繼續。技術詳細資料" + +#. translators: 1: File path, 2: mode +#: functions.php:1574 functions.php:1597 +msgid "Could not open %1$s with mode %2$s. The process cannot continue. Technical details" +msgstr "無法使用 [%2$s] 模式開啟 %1$s,導致程序無法繼續。技術詳細資料" + +#: functions.php:110 functions.php:172 +msgid "Your archive file name contains invalid characters: < > : \" | ? * \\0. It must not include these characters. The process cannot continue. Technical details" +msgstr "這個網站的壓縮檔檔案名稱包含無效的字元 < > : \" | ? * \\0,導致程序無法繼續。技術詳細資料" + +#: functions.php:100 functions.php:162 +msgid "Could not locate the archive path. The process cannot continue. Technical details" +msgstr "找不到壓縮檔儲存資料夾路徑,導致程序無法繼續。技術詳細資料" + +#: functions.php:52 +msgid "Your storage directory name contains invalid characters: < > : \" | ? * \\0. It must not include these characters. The process cannot continue. Technical details" +msgstr "這個網站的儲存目錄名稱包含無效的字元 < > : \" | ? * \\0,導致程序無法繼續。技術詳細資料" + +#: functions.php:42 +msgid "Could not locate the storage path. The process cannot continue. Technical details" +msgstr "找不到儲存資料夾路徑,導致程序無法繼續。技術詳細資料" + +#. Description of the plugin +#: all-in-one-wp-migration.php +msgid "All-in-One WP Migration makes moving your entire WordPress site simple. Export or import your database, media, plugins, and themes with just a few clicks." +msgstr "All-in-One WP Migration 讓移轉整個 WordPress 網站變的簡單。僅需幾個點擊,便能匯出或匯入網站資料庫、媒體、外掛及佈景主題。" + +#: lib/controller/class-ai1wm-main-controller.php:832 +msgid "View Error Log" +msgstr "檢視錯誤記錄" + +#: functions.php:120 functions.php:182 +msgid "Invalid archive file type. Only .wpress files are allowed. The process cannot continue. Technical details" +msgstr "無效的壓縮檔檔案類型 (僅可使用 .wpress 檔案),導致程序無法繼續。技術詳細資料" + +#. translators: 1: Archive title, 2: File name, 3: Archive title, 4: File size. +#: lib/model/export/class-ai1wm-export-download.php:90 +msgid "" +"\n" +"\t\t\t\t\t\t\tDownload %3$s\n" +"\t\t\t\t\t\t\tSize: %4$s\n" +"\t\t\t\t\t\t\t" +msgstr "下載 %3$s 的匯出檔檔案大小: %4$s" + +#: lib/view/reset/index.php:41 +msgid "Reset Hub Demo" +msgstr "[重設中心] 功能示範" + +#: lib/view/reset/index.php:41 +msgid "Upgrade to Premium " +msgstr "升級至 Premium 版" + +#: lib/view/reset/index.php:39 +msgid "Please note, the features displayed below are part of an image showcasing the potential of Reset Hub in its Premium version. To activate and enjoy these advanced features, upgrade to Premium now! Elevate your website management experience with these exclusive functionalities and priority support." +msgstr "請注意,在下方顯示的功能是這個外掛 Premium 版 [重設中心] 部分功能的圖片展示。如需啟用並使用這些進階功能,請立即升級至 Premium 版。使用這些獨家功能及優先技術支援,便能提升網站管理員的網站管理體驗。" + +#: lib/view/reset/index.php:37 +msgid "Experience Full Functionality with Premium!" +msgstr "體驗 Premium 版的完整功能!" + +#: lib/view/reset/index.php:36 +msgid "Star" +msgstr "星形符號" + +#: lib/controller/class-ai1wm-main-controller.php:731 +#: lib/controller/class-ai1wm-main-controller.php:732 +msgid "Reset Hub" +msgstr "重設中心" + +#: lib/view/main/premium-badge.php:33 +msgid "Premium" +msgstr "Premium 版" + +#: lib/view/schedules/index.php:111 +msgid "Leverage the simplicity of Dropbox for your backup needs. Direct your scheduled backups to be stored in Dropbox. It's secure, straightforward, and keeps your backups at your fingertips." +msgstr "利用 Dropbox 的簡易性達成網站利用 Dropbox 的簡易性達成網站備份需求。將網站排程備份儲存至 Dropbox,安全、簡單,並讓網站備份觸手可及。備份需求。將網站排程備份儲存至 Dropbox,安全、簡單,並讓網站備份觸手可及。" + +#: lib/view/schedules/index.php:163 +msgid "Tailor your backup schedules to fit the complexity of your WordPress Multisite. Choose to export the entire network or only a selection of subsites according to your requirements. Effortless management for even the most intricate site networks." +msgstr "設定對應的備份排程以配合 WordPress 多站網路的複雜性。依據需求匯出整個多站網路,或是僅匯出選取的子網站,便能輕鬆管理複雜的多站網路。" + +#: lib/view/schedules/index.php:150 +msgid "We've got you covered with an array of supported storage providers. Whether you prefer Box, Amazon S3, WebDav or something else, you can choose the one that fits your needs best. Secure your backups exactly where you want them." +msgstr "我們支援一系列使用者愛用的儲存空間服務提供商,無論是 Box、Amazon S3、WebDav 或其他服務,使用者都可以從中擇一選取最適合自己的服務。" + +#: lib/view/schedules/index.php:137 +msgid "Enjoy the flexibility of FTP storage. Direct your scheduled backups to your own FTP server. You'll have full control over your data, providing you with a versatile and private storage solution." +msgstr "善用 FTP 儲存空間的靈活性。將網站排程備份儲存至自有的 FTP 伺服器,便能完整控管網站資料,並成為私有儲存空間解決方案。" + +#: lib/view/schedules/index.php:124 +msgid "Harness the power of OneDrive for your backups. Set up your scheduled backups to be saved directly in your OneDrive. It's secure, integrated with your Microsoft account, and keeps your data readily accessible." +msgstr "利用 OneDrive 強大的功能為網站進行備份。網站備份排程直接儲存至 OneDrive,不僅安全,還能整合至使用者的 Microsoft 帳號,並讓資料可以隨時存取。" + +#: lib/view/schedules/index.php:98 +msgid "Benefit from the robustness of Google Drive. Schedule your backups to be saved directly to your Google Drive account. Simple, secure, and integrated into a platform you already use." +msgstr "Google 雲端硬碟強大的功能帶來許多優勢。網站備份排程直接儲存至 Google 雲端硬碟,簡單、安全,並能整合至多數使用者已在使用的 Google 平台。" + +#: lib/view/schedules/index.php:85 +msgid "Manage your storage effectively with our flexible retention settings. Decide how many backups you want to keep at a time. Old backups are automatically cleared, keeping your storage neat and efficient." +msgstr "使用外掛提供的靈活保留期設定,就能有效的管理儲存空間。只要設定同時要保留多少份備份,便會自動清除舊的備份檔案,以便保有儲存空間的餘裕。" + +#: lib/view/schedules/index.php:77 lib/view/schedules/index.php:82 +msgid "Retention settings" +msgstr "保留期設定" + +#: lib/view/schedules/index.php:72 +msgid "Stay informed, not overwhelmed. Tailor your notification preferences to get updates that matter to you. Whether it's the status of each backup, or just critical alerts, control what you want to be notified about." +msgstr "隨時掌握網站狀況,不會手足無措。設定網站的通知偏好設定,以獲得必要的重要更新。無論是每次備份的狀態,或僅是嚴重警告,都可以對這些通知進行掌控。" + +#: lib/view/schedules/index.php:64 lib/view/schedules/index.php:69 +msgid "Notification settings" +msgstr "通知設定" + +#: lib/view/schedules/index.php:59 +msgid "Never worry about forgetting to back up your site again. Choose from various scheduling options, from daily to monthly, and we'll automate the rest. Backups happen like clockwork, giving you peace of mind and a solid safety net" +msgstr "不必再擔心忘記備份網站。這項功能可以讓使用者使用多種排程選項,從每日備份到每月備份,一經設定完畢,外掛便會完成餘下的工作。備份會定期執行,讓使用者高枕無憂,並享有堅實的安全網。" + +#: lib/view/schedules/index.php:56 lib/view/schedules/index.php:69 +#: lib/view/schedules/index.php:82 lib/view/schedules/index.php:95 +#: lib/view/schedules/index.php:108 lib/view/schedules/index.php:121 +#: lib/view/schedules/index.php:134 lib/view/schedules/index.php:147 +#: lib/view/schedules/index.php:160 +msgid "Enable this feature" +msgstr "啟用這項功能" + +#: lib/view/schedules/index.php:51 +msgid "Backup scheduler" +msgstr "備份排程程式" + +#: lib/view/schedules/index.php:45 lib/view/schedules/index.php:155 +#: lib/view/schedules/index.php:160 +msgid "Multisite Schedules" +msgstr "多站網路排程程式" + +#: lib/view/schedules/index.php:44 lib/view/schedules/index.php:142 +#: lib/view/schedules/index.php:147 +msgid "More Storage Providers" +msgstr "更多儲存空間服務提供商" + +#: lib/view/schedules/index.php:43 lib/view/schedules/index.php:129 +#: lib/view/schedules/index.php:134 +msgid "FTP Storage" +msgstr "FTP 儲存空間" + +#: lib/view/schedules/index.php:42 lib/view/schedules/index.php:116 +#: lib/view/schedules/index.php:121 +msgid "OneDrive Storage" +msgstr "OneDrive 儲存空間" + +#: lib/view/schedules/index.php:41 lib/view/schedules/index.php:103 +#: lib/view/schedules/index.php:108 +msgid "Dropbox Storage" +msgstr "Dropbox 儲存空間" + +#: lib/view/schedules/index.php:40 lib/view/schedules/index.php:90 +#: lib/view/schedules/index.php:95 +msgid "Google Drive Storage" +msgstr "Google 雲端硬碟儲存空間" + +#: lib/view/schedules/index.php:39 +msgid "Retention Settings" +msgstr "保留期設定" + +#: lib/view/schedules/index.php:38 +msgid "Notification Settings" +msgstr "通知設定" + +#: lib/view/schedules/index.php:37 lib/view/schedules/index.php:56 +msgid "Backup Scheduler" +msgstr "備份排程程式" + +#: lib/controller/class-ai1wm-main-controller.php:740 +#: lib/controller/class-ai1wm-main-controller.php:741 +msgid "Schedules" +msgstr "排程" + +#: lib/model/import/class-ai1wm-import-check-encryption.php:63 +msgid "Backup is encrypted. Please provide decryption password: " +msgstr "備份檔案已加密。請提供解密密碼: " + +#: lib/view/export/advanced-settings.php:66 +msgid "Password-protect and encrypt backups" +msgstr "密碼保護及加密備份檔案" + +#: lib/view/export/advanced-settings.php:53 +msgid "A password is required" +msgstr "密碼為必填。" + +#: lib/view/export/advanced-settings.php:46 +msgid "Encrypt this backup with a password" +msgstr "使用密碼加密這個備份檔案" + +#: lib/model/import/class-ai1wm-import-check-encryption.php:56 +msgid "Importing an encrypted backup is not supported on this server. The process cannot continue. Technical details" +msgstr "這台伺服器不支援匯入加密的備份檔案,導致程序無法繼續。技術詳細資料" + +#: lib/controller/class-ai1wm-main-controller.php:856 +#: lib/view/export/advanced-settings.php:58 +msgid "The passwords do not match" +msgstr "輸入的密碼不相符。" + +#: lib/controller/class-ai1wm-main-controller.php:855 +#: lib/view/export/advanced-settings.php:56 +msgid "Repeat the password" +msgstr "重複輸入密碼" + +#: lib/controller/class-ai1wm-main-controller.php:853 +#: lib/controller/class-ai1wm-main-controller.php:899 +msgid "Submit" +msgstr "送出" + +#: lib/controller/class-ai1wm-main-controller.php:851 +msgid "The backup is encrypted" +msgstr "備份檔案已加密" + +#: lib/view/backups/backups-list.php:131 +msgid "List" +msgstr "內容清單" + +#: lib/view/backups/backups-list.php:129 +msgid "Show backup content" +msgstr "顯示備份檔案內容" + +#: lib/view/backups/backups-list.php:122 +msgid "Downloading is not possible because backups directory is not accessible." +msgstr "由於備份檔案資料夾無法存取,因此無法下載檔案。" + +#: lib/controller/class-ai1wm-main-controller.php:897 +msgid "Reading..." +msgstr "正在讀取..." + +#: lib/controller/class-ai1wm-main-controller.php:896 +msgid "List the content of the backup" +msgstr "備份檔案內容清單" + +#: lib/controller/class-ai1wm-main-controller.php:894 +msgid "Error" +msgstr "錯誤" + +#: lib/view/backups/backups-list.php:95 +msgid "More" +msgstr "更多操作" + +#. translators: 1: Number of backups. +#: lib/controller/class-ai1wm-main-controller.php:830 +msgid "You have %d backups" +msgstr "這個網站有 %d 個備份檔案。" + +#. translators: 1: Number of backups. +#. translators: Numbers of backups. +#: lib/controller/class-ai1wm-main-controller.php:828 +#: lib/view/main/backups.php:33 +msgid "You have %d backup" +msgid_plural "You have %d backups" +msgstr[0] "這個網站有 %d 個備份檔案。" + +#. translators: 1: Error message. +#: lib/view/updater/error.php:33 +msgid "Error: %s" +msgstr "錯誤: %s" + +#. translators: 1: Number of files, 2: Progress. +#: lib/model/export/class-ai1wm-export-themes.php:109 +#: lib/model/export/class-ai1wm-export-themes.php:152 +msgid "Archiving %1$d theme files...
%2$d%% complete" +msgstr "正在壓縮 %1$d 個佈景主題檔案...
已完成 %2$d%%" + +#: lib/view/main/contact-support.php:33 +msgid "Contact Support" +msgstr "聯絡支援團隊" + +#: lib/model/import/class-ai1wm-import-permalinks.php:38 +msgid "Retrieving WordPress permalinks settings..." +msgstr "正在擷取 WordPress 永久連結設定..." + +#: lib/view/import/avada.php:46 +msgid "» Reset Avada Fusion Builder cache.
" +msgstr "» 重設 Avada Fusion Builder 快取
" + +#: lib/view/import/avada.php:43 +msgid "» Re-sign Oxygen Builder shortcodes.
" +msgstr "» 重新簽署 Oxygen Builder 短代碼
" + +#: lib/view/import/avada.php:33 +msgid "» Permalinks are set to default. Why?
" +msgstr "» [永久連結] 的設定值已設定為 [預設]。進一步了解成因
" + +#: lib/view/main/translate.php:33 +msgid "Translate" +msgstr "本地化" + +#. translators: 1: Number of files, 2: Progress. +#: lib/model/export/class-ai1wm-export-media.php:109 +#: lib/model/export/class-ai1wm-export-media.php:152 +msgid "Archiving %1$d media files...
%2$d%% complete" +msgstr "正在壓縮 %1$d 個媒體檔案...
已完成 %2$d%%" + +#. translators: 1: Number of files, 2: Progress. +#: lib/model/export/class-ai1wm-export-content.php:109 +#: lib/model/export/class-ai1wm-export-content.php:152 +msgid "Archiving %1$d content files...
%2$d%% complete" +msgstr "正在壓縮 %1$d 個內容檔案...
已完成 %2$d%%" + +#: lib/controller/class-ai1wm-main-controller.php:848 +msgid "I have enough disk space" +msgstr "這台主機有足夠的磁碟空間" + +#. translators: 1: Source PHP version, 2: Target PHP version. +#: lib/model/import/class-ai1wm-import-confirm.php:97 +msgid "" +"Your backup is from a PHP %1$s but the site that you are importing to is PHP %2$s.\n" +"\t\t\t\t\t\t\tThis could cause the import to fail. Technical details: https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7/" +msgstr "這份備份檔案來自執行環境為 PHP %1$s 的網站,卻要匯入至執行環境為 PHP %2$s 的主機,這種狀況可能會導致無法匯入。技術詳細資料: https://help.servmask.com/knowledgebase/migrate-wordpress-from-php-5-to-php-7/" + +#: lib/view/backups/backups-list.php:48 lib/view/backups/index.php:51 +msgid "Refreshing backup list..." +msgstr "重新整理備份檔案清單..." + +#. translators: Storage path +#: lib/view/import/import-permissions.php:38 +msgid "" +"

Could not import site

\n" +"\t\t\t\t

Please ensure the directory %s has read/write permissions.

\n" +"\t\t\t\t

Technical details

" +msgstr "

無法匯入網站

請確認系統具備對 %s 目錄的讀取及寫入權限。

技術詳細資料

" + +#. translators: Storage path. +#: lib/view/export/export-permissions.php:38 +msgid "" +"

Could not export site

\n" +"\t\t\t\t

Please ensure the directory %s has read/write permissions.

\n" +"\t\t\t\t

Technical details

" +msgstr "

無法匯出網站

請確認系統具備對 %s 目錄的讀取及寫入權限。

技術詳細資料

" + +#. translators: Backups path +#: lib/view/backups/backups-permissions.php:38 +msgid "" +"

Could not restore site

\n" +"\t\t\t\t

Please ensure the directory %s has read/write permissions.

\n" +"\t\t\t\t

Technical details

" +msgstr "

無法還原網站

請確認系統具備對 %s 目錄的讀取及寫入權限。

技術詳細資料

" + +#: lib/view/main/missing-role-capability-notice.php:37 +msgid "" +"Your current profile role does not have Export/Import capabilities enabled.\n" +"\t\t\t\tTechnical details" +msgstr "目前的登入身分沒有進行匯出/匯入的權限。技術詳細資料" + +#: lib/view/import/button-file.php:33 +msgid "To choose a file please go inside the link and click on the browse button." +msgstr "如需選取檔案,請點擊連結並點擊 [瀏覽] 按鈕。" + +#: lib/controller/class-ai1wm-main-controller.php:846 +msgid "Finish" +msgstr "完成" + +#: lib/model/import/class-ai1wm-import-validate.php:87 +msgid "" +"Please ensure your file was created with the All-in-One WP Migration plugin.\n" +"\t\t\t\t\t\tTechnical details" +msgstr "請確認目前的檔案是由 All-in-One WP Migration 外掛所建立。技術詳細資料" + +#: lib/model/import/class-ai1wm-import-validate.php:74 +msgid "The archive file appears to be corrupted. Follow this article for possible fixes." +msgstr "壓縮檔可能已損毀。請參考這篇文章以尋求可能的解決方式。" + +#. translators: 1: Source PHP version, 2: Target PHP version. +#: lib/model/import/class-ai1wm-import-confirm.php:109 +msgid "Your backup is from a PHP %1$s but the site that you are importing to is PHP %2$s. This could cause the import to fail. Technical details" +msgstr "這份備份檔案來自執行環境為 PHP %1$s 的網站,卻要匯入至執行環境為 PHP %2$s 的主機,這種狀況可能會導致無法匯入。技術詳細資料" + +#: lib/view/import/import-buttons.php:41 +msgid "Drag & Drop a backup to import it" +msgstr "拖放備份檔案以匯入" + +#. translators: 1: Progress, 2: Number of records. +#: lib/model/export/class-ai1wm-export-database.php:81 +#: lib/model/export/class-ai1wm-export-database.php:191 +msgid "Exporting database...
%1$d%% complete
%2$s records saved" +msgstr "正在匯出資料庫...
已完成 %1$d%%
%2$s 筆資料已儲存" + +#: lib/controller/class-ai1wm-main-controller.php:888 +msgid "Backup restore requires the Unlimited Extension. Get it here" +msgstr "從網站主機伺服器直接還原備份檔案為付費版 Unlimited 擴充功能。立即購買" + +#: lib/controller/class-ai1wm-main-controller.php:254 +msgid "All-in-One WP Migration Command" +msgstr "All-in-One WP Migration 命令" + +#: lib/controller/class-ai1wm-main-controller.php:819 +#: lib/model/export/class-ai1wm-export-init.php:47 +msgid "Preparing to export..." +msgstr "正在準備匯出網站..." + +#. translators: Human time diff +#: lib/view/backups/backups-list.php:84 +msgid "%s ago" +msgstr "%s前" + +#: lib/controller/class-ai1wm-main-controller.php:815 +msgid "Your purchase ID is invalid. Please contact us." +msgstr "無效的購買 ID。請聯絡我們。" + +#: lib/controller/class-ai1wm-main-controller.php:887 +msgid "Are you sure you want to delete this backup?" +msgstr "確定要刪除這個備份檔案?" + +#: lib/controller/class-ai1wm-main-controller.php:850 +msgid "Please do not close this browser window or your import will fail" +msgstr "請不要關閉這個瀏覽器視窗,否則匯入程序會失敗。" + +#: lib/controller/class-ai1wm-main-controller.php:849 +msgid "Continue" +msgstr "繼續" + +#: lib/controller/class-ai1wm-main-controller.php:847 +msgid "Proceed" +msgstr "繼續" + +#: lib/controller/class-ai1wm-main-controller.php:845 +msgid "Stop import" +msgstr "停止匯入程序" + +#: lib/controller/class-ai1wm-main-controller.php:826 +msgid "Stop export" +msgstr "停止匯出程序" + +#: lib/controller/class-ai1wm-main-controller.php:825 +#: lib/controller/class-ai1wm-main-controller.php:844 +#: lib/controller/class-ai1wm-main-controller.php:898 +msgid "Close" +msgstr "關閉" + +#: lib/model/export/class-ai1wm-export-config.php:38 +msgid "Preparing configuration..." +msgstr "正在準備組態檔案⋯" + +#. translators: Progress. +#: lib/model/export/class-ai1wm-export-database-file.php:95 +#: lib/model/export/class-ai1wm-export-database-file.php:137 +msgid "Archiving database...
%d%% complete" +msgstr "正在壓縮資料庫...
已完成 %d%%" + +#. translators: Progress. +#: lib/model/import/class-ai1wm-import-database.php:81 +#: lib/model/import/class-ai1wm-import-database.php:1037 +msgid "Restoring database...
%d%% complete" +msgstr "正在還原資料庫...
已完成 %d%%" + +#. translators: Progress. +#: lib/model/import/class-ai1wm-import-database-file.php:85 +#: lib/model/import/class-ai1wm-import-database-file.php:142 +msgid "Unpacking database...
%d%% complete" +msgstr "正在解壓縮資料庫...
已完成 %d%%" + +#: lib/controller/class-ai1wm-main-controller.php:836 +msgid "Preparing to import..." +msgstr "正在準備匯入..." + +#: lib/controller/class-ai1wm-main-controller.php:1369 +msgid "Monthly" +msgstr "每月" + +#: lib/controller/class-ai1wm-main-controller.php:1365 +msgid "Weekly" +msgstr "每週" + +#: lib/model/import/class-ai1wm-import-mu-plugins.php:37 +msgid "Activating mu-plugins..." +msgstr "正在啟用 [強制使用] 外掛..." + +#: lib/view/export/advanced-settings.php:97 +msgid "Do not replace email domain" +msgstr "不要變更電子郵件地址網域名稱" + +#: lib/model/import/class-ai1wm-import-blogs.php:37 +msgid "Preparing blogs..." +msgstr "正在匯入網站..." + +#: lib/controller/class-ai1wm-main-controller.php:814 +#: lib/view/updater/check.php:33 +msgid "Check for updates" +msgstr "檢查更新" + +#. Author of the plugin +#: all-in-one-wp-migration.php +msgid "ServMask" +msgstr "ServMask" + +#. Plugin URI of the plugin +#. Author URI of the plugin +#: all-in-one-wp-migration.php +msgid "https://servmask.com/" +msgstr "https://servmask.com/" + +#: lib/view/import/index.php:39 +msgid "Import Site" +msgstr "匯入網站" + +#: lib/view/import/import-buttons.php:45 +msgid "Import From" +msgstr "匯入來源" + +#: lib/view/export/index.php:39 +msgid "Export Site" +msgstr "匯出網站" + +#: lib/view/export/help-section.php:52 +msgid "Once the file is successfully downloaded on your computer, you can import it to any of your WordPress sites." +msgstr "檔案成功下載至個人裝置後,便可使用下載完成的檔案在任何 WordPress 網站進行匯入。" + +#: lib/view/export/help-section.php:48 +msgid "Press \"Export\" button and the site archive file will pop up in your browser." +msgstr "按下 [匯出] 按鈕且匯出成功後,網站匯出壓縮檔會顯示於瀏覽器的彈出式視窗。" + +#: lib/view/export/help-section.php:44 +msgid "In the advanced settings section you can configure more precisely the way of exporting." +msgstr "在 [進階選項] 中,可以更準確的設定匯出方式。" + +#: lib/view/export/find-replace.php:54 +msgid "Add" +msgstr "新增" + +#: lib/view/export/find-replace.php:41 +msgid "in the database" +msgstr "(搜尋/取代均於資料庫中進行)" + +#: lib/view/export/find-replace.php:40 +msgid "" +msgstr "<取代文字>" + +#: lib/view/export/find-replace.php:39 lib/view/export/find-replace.php:47 +msgid "Replace with" +msgstr "取代為" + +#: lib/view/export/find-replace.php:38 +msgid "" +msgstr "<原始文字>" + +#: lib/view/export/button-file.php:33 lib/view/import/button-file.php:34 +msgid "File" +msgstr "檔案" + +#: lib/view/export/advanced-settings.php:38 +msgid "(click to expand)" +msgstr "(點擊以展開)" + +#: lib/view/export/advanced-settings.php:37 +msgid "Advanced options" +msgstr "進階選項" + +#: lib/view/common/leave-feedback.php:69 +msgid "Cancel" +msgstr "取消" + +#: lib/view/common/leave-feedback.php:72 +msgid "Send" +msgstr "傳送" + +#: lib/controller/class-ai1wm-main-controller.php:854 +#: lib/view/export/advanced-settings.php:51 +msgid "Enter a password" +msgstr "輸入密碼" + +#: lib/view/common/sidebar-right.php:41 +msgid "Leave Feedback" +msgstr "意見反應" + +#: lib/view/backups/index.php:59 +msgid "Create backup" +msgstr "建立備份" + +#: lib/view/backups/backups-list.php:136 lib/view/backups/backups-list.php:138 +msgid "Delete" +msgstr "刪除" + +#: lib/view/backups/backups-list.php:101 lib/view/backups/backups-list.php:103 +msgid "Restore" +msgstr "還原" + +#: lib/view/backups/backups-list.php:109 lib/view/backups/backups-list.php:111 +#: lib/view/backups/backups-list.php:114 lib/view/backups/backups-list.php:116 +#: lib/view/backups/backups-list.php:124 +msgid "Download" +msgstr "下載" + +#: lib/view/backups/backups-list.php:40 +msgid "Size" +msgstr "檔案大小" + +#: lib/view/backups/backups-list.php:39 +msgid "Date" +msgstr "備份日期" + +#: lib/view/backups/backups-list.php:38 +msgid "Name" +msgstr "檔案名稱" + +#: lib/model/import/class-ai1wm-import-done.php:365 +#: lib/model/import/class-ai1wm-import-done.php:367 +#: lib/model/import/class-ai1wm-import-done.php:369 +msgid "Your site has been imported successfully!" +msgstr "這個網站的匯入程序已完成!" + +#. translators: 1: Number of files, 2: Progress. +#: lib/model/import/class-ai1wm-import-content.php:109 +#: lib/model/import/class-ai1wm-import-content.php:242 +msgid "Restoring %1$d files...
%2$d%% complete" +msgstr "正在還原 %1$d 個檔案...
已完成 %2$d%%" + +#: lib/model/export/class-ai1wm-export-download.php:43 +msgid "Renaming export file..." +msgstr "正在重新命名匯出檔案..." + +#. translators: 1: Number of files, 2: Progress. +#: lib/model/export/class-ai1wm-export-plugins.php:109 +#: lib/model/export/class-ai1wm-export-plugins.php:152 +msgid "Archiving %1$d plugin files...
%2$d%% complete" +msgstr "正在壓縮 %1$d 個外掛檔案...
已完成 %2$d%%" + +#: lib/controller/class-ai1wm-main-controller.php:721 +#: lib/controller/class-ai1wm-main-controller.php:722 +#: lib/view/backups/index.php:39 +msgid "Backups" +msgstr "備份" + +#: lib/controller/class-ai1wm-main-controller.php:712 +#: lib/controller/class-ai1wm-main-controller.php:713 +msgid "Import" +msgstr "匯入" + +#: lib/controller/class-ai1wm-main-controller.php:703 +#: lib/controller/class-ai1wm-main-controller.php:704 +msgid "Export" +msgstr "匯出" + +#: lib/view/main/multisite-notice.php:43 +msgid "Get multisite" +msgstr "購買 Multisite 擴充功能" \ No newline at end of file diff --git a/languages/plugins/code-snippets-zh_TW-8e7e663fbc1df75c44eda18fbbd51bbd.json b/languages/plugins/code-snippets-zh_TW-8e7e663fbc1df75c44eda18fbbd51bbd.json new file mode 100644 index 0000000..e8f3535 --- /dev/null +++ b/languages/plugins/code-snippets-zh_TW-8e7e663fbc1df75c44eda18fbbd51bbd.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-01-29 16:31:52+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"You are about to delete this snippet.":["\u5373\u5c07\u522a\u9664\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Delete?":["\u78ba\u5b9a\u8981\u522a\u9664\uff1f"],"Disabled":["\u5df2\u505c\u7528"],"Enabled":["\u5df2\u555f\u7528"],"Snippet created<\/strong>.":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u65b0\u589e<\/strong>\u3002"],"Back to all snippets":["\u8fd4\u56de\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6e05\u55ae"],"Back to all conditions":["\u8fd4\u56de\u689d\u4ef6\u6e05\u55ae"],"This snippet type is not supported in this version of Code Snippets.":["\u9019\u500b\u7248\u672c\u7684 Code Snippets \u4e0d\u652f\u63f4\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u985e\u578b\u3002"],"Enter snippet title":["\u8f38\u5165\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6a19\u984c"],"Expand":["\u5c55\u958b"],"Minimize":["\u6536\u5408"],"Snippet Content":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5167\u5bb9"],"Snippet Tags":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6a19\u7c64"],"Snippet Type":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u985e\u578b"],"Get Started":["\u958b\u59cb\u4f7f\u7528"],"Unlock cloud sync, snippet conditions, AI features<\/strong> and much more with Code Snippets Pro.":["\u4f7f\u7528 Code Snippets Pro \u4fbf\u80fd\u7372\u5f97\u96f2\u7aef\u540c\u6b65\u3001\u7a0b\u5f0f\u78bc\u7247\u6bb5\u689d\u4ef6\u3001AI \u76f8\u95dc\u529f\u80fd<\/strong>\u7b49\u9032\u968e\u9805\u76ee\u3002"],"Inactive":["\u672a\u555f\u7528"],"Active":["\u5df2\u555f\u7528"],"Status":["\u72c0\u614b"],"Save and Activate":["\u5132\u5b58\u4e26\u555f\u7528"],"Save and Deactivate":["\u5132\u5b58\u4e26\u505c\u7528"],"Save and Execute Once":["\u5132\u5b58\u4e26\u57f7\u884c\u4e00\u6b21"],"Save Condition":["\u5132\u5b58\u689d\u4ef6"],"Instead of running on every site, allow this snippet to be activated on individual sites on the network.":["\u4e0d\u5728\u591a\u7ad9\u7db2\u8def\u4e2d\u7684\u5168\u90e8\u7db2\u7ad9\u4e0a\u57f7\u884c\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\uff0c\u800c\u662f\u5728\u500b\u5225\u7db2\u8def\u4e0a\u555f\u7528\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Share with Subsites":["\u8207\u5b50\u7db2\u7ad9\u5206\u4eab"],"Close Popup":["\u95dc\u9589\u5f48\u51fa\u5f0f\u8a0a\u606f"],"Embed Snippet with Shortcode":["\u4f7f\u7528\u77ed\u4ee3\u78bc\u5d4c\u5165\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"See options":["\u67e5\u770b\u9078\u9805"],"Shortcode":["\u77ed\u4ee3\u78bc"],"Replace [shortcodes] embedded within the snippet.":["\u53d6\u4ee3\u5728\u7a0b\u5f0f\u78bc\u7247\u6bb5\u4e2d\u63d2\u5165\u7684 [\u77ed\u4ee3\u78bc]\u3002"],"Wrap output in paragraphs and apply formatting.":["\u5c07\u7d50\u679c\u8f38\u51fa\u70ba\u6bb5\u843d\u4e26\u5957\u7528\u683c\u5f0f\u3002"],"Run code within tags.":["\u5728 \u6a19\u7c64\u5340\u6bb5\u5167\u57f7\u884c\u7a0b\u5f0f\u78bc\u3002"],"https:\/\/codesnippets.pro\/doc\/inserting-content-snippets\/":["https:\/\/codesnippets.pro\/doc\/inserting-content-snippets\/"],"You can also use the Classic Editor button, Block editor (Pro) or Elementor widget (Pro).":["\u4e5f\u53ef\u4ee5\u4f7f\u7528\u50b3\u7d71\u7de8\u8f2f\u5668\u6309\u9215\u3001\u5340\u584a\u7de8\u8f2f\u5668 (Pro \u7248)\u3001Elementor \u5c0f\u5de5\u5177 (Pro \u7248)\u3002"],"Copy the below shortcode to insert this snippet into a post, page, or other content.":["\u8907\u88fd\u4e0b\u65b9\u77ed\u4ee3\u78bc\u4fbf\u80fd\u5c07\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u63d2\u5165\u6587\u7ae0\u3001\u9801\u9762\u6216\u5176\u4ed6\u5167\u5bb9\u3002"],"Copy":["\u8907\u88fd"],"Location":["\u57f7\u884c\u4f4d\u7f6e"],"Administration area":["\u7ba1\u7406\u5f8c\u53f0\u5340\u57df"],"Site front-end":["\u7db2\u7ad9\u524d\u7aef"],"In site footer (end of )":["\u5728\u7db2\u7ad9\u7684\u9801\u5c3e ( \u6a19\u7c64\u5340\u6bb5\u7d50\u5c3e)"],"In site section":["\u5728\u7db2\u7ad9\u7684 \u6a19\u7c64\u5340\u6bb5"],"Where inserted in editor":["\u5728\u7de8\u8f2f\u5668\u4e2d\u7684\u63d2\u5165\u4f4d\u7f6e"],"Run everywhere":["\u5168\u57df\u57f7\u884c"],"Add Conditions":["\u65b0\u589e\u689d\u4ef6"],"Edit Conditions":["\u7de8\u8f2f\u689d\u4ef6"],"beta":["Beta \u7248"],"Conditions":["\u689d\u4ef6"],"And much more!":["\u4ee5\u53ca\u66f4\u591a\u529f\u80fd..."],"WP-CLI commands":["WP-CLI \u547d\u4ee4"],"Cloud bundles and teams":["\u96f2\u7aef\u5957\u4ef6\u7d44\u5408\u53ca\u5718\u968a"],"Cloud share and deploy":["\u96f2\u7aef\u5206\u4eab\u53ca\u90e8\u7f72"],"Cloud sync and backup":["\u96f2\u7aef\u540c\u6b65\u53ca\u5099\u4efd"],"Editor blocks and Elementor widgets":["\u5340\u584a\u7de8\u8f2f\u5668\u53ca Elementor \u5c0f\u5de5\u5177"],"Minified JavaScript snippets":["\u6700\u5c0f\u5316\u7684 JavaScript \u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Control when snippets run with Conditions":["\u63a7\u5236\u4f7f\u7528\u689d\u4ef6\u57f7\u884c\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Create, explain and verify snippets with AI":["\u4f7f\u7528 AI \u65b0\u589e\u3001\u64f4\u5145\u4e26\u9a57\u8b49\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Here's what else you get with Pro:":["\u9019\u88e1\u5217\u51fa Pro \u7248\u7684\u5176\u4ed6\u529f\u80fd:"],"Explore Code Snippets Pro":["\u9032\u4e00\u6b65\u4e86\u89e3 Code Snippets Pro"],"With Code Snippets Pro you can connect your WordPress sites to the code snippets cloud platform and be able to backup, synchronise, collaborate, and deploy<\/strong> your snippets from one central location.":["\u4f7f\u7528 Code Snippets Pro \u4fbf\u80fd\u8b93\u9019\u500b WordPress \u7db2\u7ad9\u5b58\u53d6 Code Snippets \u5718\u968a\u5efa\u7f6e\u7684\u96f2\u7aef\u5e73\u53f0\uff0c\u4e26\u80fd\u5728\u540c\u4e00\u4f4d\u7f6e\u96c6\u4e2d\u5099\u4efd\u3001\u540c\u6b65\u3001\u5354\u540c\u4f5c\u696d\u53ca\u90e8\u7f72<\/strong>\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Unlock all cloud sync features and many more, with Code Snippets Pro<\/span>":["\u4f7f\u7528 Code Snippets Pro<\/span> \u4fbf\u80fd\u7372\u5f97\u96f2\u7aef\u540c\u6b65\u53ca\u5176\u4ed6\u9032\u968e\u529f\u80fd"],"Code Snippets logo":["Code Snippets \u6a19\u8a8c"],"Could not update condition.":["\u7121\u6cd5\u66f4\u65b0\u689d\u4ef6\u3002"],"Could not create condition.":["\u7121\u6cd5\u65b0\u589e\u689d\u4ef6\u3002"],"Edit Condition":["\u7de8\u8f2f\u689d\u4ef6"],"Add New Condition":["\u65b0\u589e\u689d\u4ef6"],"Condition created<\/strong>.":["\u689d\u4ef6\u5df2\u65b0\u589e<\/strong>\u3002"],"Pro":["Pro \u7248"],"Continue?":["\u662f\u5426\u7e7c\u7e8c\u57f7\u884c\uff1f"],"This snippet has no title.":["\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6c92\u6709\u6a19\u984c\u3002"],"This snippet has no snippet code.":["\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6c92\u6709\u7a0b\u5f0f\u78bc\u3002"],"This snippet has no code or title.":["\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6c92\u6709\u7a0b\u5f0f\u78bc\u6216\u6a19\u984c\u3002"],"Upgrade to Pro\u0004Pro":["Pro \u7248"],"Auto-indent current line or selection":["\u81ea\u52d5\u63d2\u5165\u7e2e\u6392\u9019\u884c\u5167\u5bb9\u6216\u9078\u53d6\u7684\u5167\u5bb9"],"Swap line down":["\u4e0b\u79fb\u4e00\u884c"],"Swap line up":["\u4e0a\u79fb\u4e00\u884c"],"Toggle comment":["\u555f\u7528\/\u505c\u7528\u8a3b\u89e3\u529f\u80fd"],"Select all":["\u5168\u90e8\u9078\u53d6"],"keyboard key\u0004]":["]"],"keyboard key\u0004\/":["\/"],"keyboard key\u0004Z":["Z"],"keyboard key\u0004Y":["Y"],"keyboard key\u0004D":["D"],"keyboard key\u0004A":["A"],"keyboard key\u0004Down":["\u5411\u4e0b\u9375"],"keyboard key\u0004Up":["\u5411\u4e0a\u9375"],"keyboard key\u0004Tab":["Tab"],"keyboard shortcut separator\u0004-":["-"],"Snippet automatically deactivated due to an error on line %d:":["\u7531\u65bc\u7b2c %d \u884c\u4e2d\u51fa\u73fe\u7684\u932f\u8aa4\uff0c\u5c0e\u81f4\u9019\u500b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u505c\u7528:"],"Dismiss notice.":["\u95dc\u9589\u9019\u9805\u901a\u77e5"],"Learn more":["\u9032\u4e00\u6b65\u4e86\u89e3"],"CSS stylesheet snippets":["CSS \u6a23\u5f0f\u8868\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Are you sure?":["\u78ba\u5b9a\u8981\u7e7c\u7e8c\u64cd\u4f5c\u55ce\uff1f"],"Continue":["\u7e7c\u7e8c"],"Snippet incomplete":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u4e0d\u5b8c\u6574\u3002"],"Could not delete snippet.":["\u7121\u6cd5\u522a\u9664\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Could not create snippet.":["\u7121\u6cd5\u65b0\u589e\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Could not update snippet.":["\u7121\u6cd5\u66f4\u65b0\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Could not download export file.":["\u7121\u6cd5\u4e0b\u8f09\u532f\u51fa\u6a94\u3002"],"The server did not send a valid response.":["\u4f3a\u670d\u5668\u7121\u6cd5\u50b3\u9001\u6709\u6548\u7684\u56de\u61c9\u3002"],"Cancel":["\u53d6\u6d88"],"OK":["\u78ba\u5b9a"],"Export Code":["\u532f\u51fa\u7a0b\u5f0f\u78bc"],"Evaluate additional shortcode tags":["\u6aa2\u67e5\u984d\u5916\u7684\u77ed\u4ee3\u78bc\u6a19\u7c64"],"Add paragraphs and formatting":["\u65b0\u589e\u6bb5\u843d\u4e26\u683c\u5f0f\u5316"],"Evaluate PHP code":["\u6aa2\u67e5 PHP \u7a0b\u5f0f\u78bc"],"Shortcode Options":["\u77ed\u4ee3\u78bc\u9078\u9805"],"Scripts":["\u6307\u4ee4\u78bc"],"Styles":["\u6a23\u5f0f"],"Content":["\u5167\u5bb9"],"Functions":["\u51fd\u5f0f"],"Persistent search":["\u6301\u7e8c\u641c\u5c0b"],"Replace all":["\u5168\u90e8\u53d6\u4ee3"],"Replace":["\u53d6\u4ee3"],"Find previous":["\u5c0b\u627e\u4e0a\u4e00\u7b46"],"Find next":["\u5c0b\u627e\u4e0b\u4e00\u7b46"],"Begin searching":["\u6b63\u5728\u641c\u5c0b"],"Save changes":["\u5132\u5b58\u8a2d\u5b9a"],"keyboard key\u0004S":["S"],"keyboard key\u0004R":["R"],"keyboard key\u0004G":["G"],"keyboard key\u0004F":["F"],"keyboard key\u0004Alt":["Alt"],"keyboard key\u0004Option":["Option"],"keyboard key\u0004Shift":["Shift"],"keyboard key\u0004Ctrl":["Ctrl"],"keyboard key\u0004Cmd":["CMD"],"RTL":["RTL (\u5f9e\u53f3\u81f3\u5de6)"],"LTR":["LTR (\u5f9e\u5de6\u81f3\u53f3)"],"Code Direction":["\u7a0b\u5f0f\u78bc\u6587\u5b57\u65b9\u5411"],"Save Snippet":["\u5132\u5b58\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Save Changes":["\u5132\u5b58\u8a2d\u5b9a"],"Priority":["\u512a\u5148\u9806\u5e8f"],"Snippets with a lower priority number will run before those with a higher number.":["\u512a\u5148\u9806\u5e8f\u6578\u503c\u8f03\u5c0f\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\uff0c\u6703\u6bd4\u6578\u503c\u8f03\u5927\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u66f4\u512a\u5148\u57f7\u884c\u3002"],"Snippet updated<\/strong> and executed<\/strong>.":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u66f4\u65b0<\/strong>\u4e26\u5df2\u57f7\u884c<\/strong>\u3002"],"Only run once":["\u50c5\u57f7\u884c\u4e00\u6b21"],"snippet\u0004Add New":["\u65b0\u589e\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Name":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u540d\u7a31"],"Delete":["\u522a\u9664"],"Export":["\u532f\u51fa"],"Snippet updated<\/strong> and deactivated<\/strong>":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u66f4\u65b0<\/strong>\u4e26\u5df2\u505c\u7528<\/strong>\u3002"],"Snippet created<\/strong> and activated<\/strong>.":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u65b0\u589e<\/strong>\u4e26\u5df2\u555f\u7528<\/strong>\u3002"],"Snippet updated<\/strong> and activated<\/strong>.":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u66f4\u65b0<\/strong>\u4e26\u5df2\u555f\u7528<\/strong>\u3002"],"Condition updated<\/strong>.":["\u689d\u4ef6\u5df2\u66f4\u65b0<\/strong>\u3002"],"Snippet updated<\/strong>.":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u66f4\u65b0<\/strong>\u3002"],"Only run on site front-end":["\u50c5\u57f7\u884c\u65bc\u7db2\u7ad9\u524d\u7aef"],"Only run in administration area":["\u50c5\u57f7\u884c\u65bc\u7ba1\u7406\u5f8c\u53f0\u5340\u57df"],"Description":["\u7528\u9014\u8aaa\u660e"],"Add New Snippet":["\u65b0\u589e\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Edit Snippet":["\u7de8\u8f2f\u7a0b\u5f0f\u78bc\u7247\u6bb5"]}},"comment":{"reference":"dist\/edit.js"}} \ No newline at end of file diff --git a/languages/plugins/code-snippets-zh_TW-9de91ad3ddd4c6aad2b7c32263b41486.json b/languages/plugins/code-snippets-zh_TW-9de91ad3ddd4c6aad2b7c32263b41486.json new file mode 100644 index 0000000..b060992 --- /dev/null +++ b/languages/plugins/code-snippets-zh_TW-9de91ad3ddd4c6aad2b7c32263b41486.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-01-29 16:31:52+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Import from other plugins":["\u5f9e\u5176\u4ed6\u5916\u639b\u532f\u5165"],"No snippets were found for the selected plugin. Make sure the plugin is installed and has snippets configured.":["\u627e\u4e0d\u5230\u9078\u53d6\u7684\u5916\u639b\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002\u8acb\u78ba\u8a8d\u76f8\u95dc\u5916\u639b\u5df2\u5b89\u88dd\uff0c\u4e26\u5df2\u5b8c\u6210\u5fc5\u8981\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u7d44\u614b\u3002"],"No snippets found":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"We successfully imported all snippets to your library. Go to ":["\u5168\u90e8\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u6210\u529f\u532f\u5165\u9019\u500b\u7db2\u7ad9\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5eab\u3002\u8acb\u524d\u5f80 "],"Snippets imported!":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5df2\u532f\u5165\u3002"],"Error importing snippets":["\u532f\u5165\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6642\u767c\u751f\u932f\u8aa4\u3002"],"Error loading snippets":["\u8f09\u5165\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6642\u767c\u751f\u932f\u8aa4\u3002"],"If you are using another Snippets plugin, you can import all existing snippets to your Code Snippets library.":["\u5982\u679c\u9019\u500b\u7db2\u7ad9\u4f7f\u7528\u5176\u4ed6\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5916\u639b\uff0c\u7db2\u7ad9\u7ba1\u7406\u54e1\u53ef\u4ee5\u5c07\u9019\u985e\u5916\u639b\u73fe\u6709\u7684\u5168\u90e8\u7a0b\u5f0f\u78bc\u7247\u6bb5\u532f\u5165 Code Snippets \u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5eab\u3002"],"Error loading importers:":["\u8f09\u5165\u532f\u5165\u7a0b\u5f0f\u6642\u767c\u751f\u932f\u8aa4:"],"Loading importers...":["\u6b63\u5728\u8f09\u5165\u532f\u5165\u7a0b\u5f0f..."],"Please select an importer.":["\u8acb\u9078\u53d6\u532f\u5165\u7a0b\u5f0f\u3002"],"Code Snippets Library":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u5eab"],"Snippet Name":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u540d\u7a31"],"We found the following snippets.":["\u7cfb\u7d71\u5df2\u627e\u5230\u4ee5\u4e0b\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Add tag...":["\u65b0\u589e\u6a19\u7c64..."],"For your convenience, we can add a tag on every imported snippet.":["\u70ba\u4e86\u65b9\u4fbf\u7ba1\u7406\uff0c\u53ef\u4ee5\u70ba\u532f\u5165\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u500b\u5225\u65b0\u589e\u6a19\u7c64\u3002"],"Automatically add Tag":["\u81ea\u52d5\u65b0\u589e\u6a19\u7c64"],"Import options":["\u532f\u5165\u9078\u9805"],"Loading snippets...":["\u6b63\u5728\u8f09\u5165\u7a0b\u5f0f\u78bc\u7247\u6bb5..."],"(Inactive)":["(\u5df2\u505c\u7528)"],"-- Select an importer --":["-- \u9078\u53d6\u532f\u5165\u7a0b\u5f0f --"],"Select Plugin":["\u9078\u53d6\u5916\u639b"],"Import Selected":["\u532f\u5165\u9078\u53d6\u9805\u76ee"],"Importing...":["\u6b63\u5728\u532f\u5165..."],"Select All":["\u5168\u90e8\u9078\u53d6"],"Deselect All":["\u53d6\u6d88\u5168\u9078"],"Select the snippets you want to import:":["\u9078\u53d6\u8981\u532f\u5165\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5:"],"Available Snippets":["\u53ef\u7528\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"\u2190 Upload Different Files":["\u2190 \u4e0a\u50b3\u4e0d\u540c\u7684\u6a94\u6848"],"Uploading files...":["\u6b63\u5728\u4e0a\u50b3\u6a94\u6848..."],"Choose one or more Code Snippets (.xml or .json) files to parse and preview.":["\u9078\u53d6\u4e00\u6216\u591a\u500b Code Snippets \u5916\u639b\u7684\u6a94\u6848 (.xml \u6216 .json) \u4ee5\u5256\u6790\u6216\u9810\u89bd\u3002"],"Choose Files":["\u9078\u53d6\u6a94\u6848"]," page to activate the imported snippets.":[" \u9801\u9762\u4ee5\u555f\u7528\u532f\u5165\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Afterward, you will need to visit the ":["\u4e4b\u5f8c\u8acb\u52d9\u5fc5\u524d\u5f80 "],"Please select snippets to import.":["\u8acb\u9078\u53d6\u8981\u532f\u5165\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"An unknown error occurred.":["\u767c\u751f\u672a\u77e5\u7684\u932f\u8aa4\u3002"],"Please select files to upload.":["\u8acb\u9078\u53d6\u8981\u4e0a\u50b3\u7684\u6a94\u6848\u3002"],"Warnings:":["\u8b66\u544a:"]," to activate your imported snippets.":[" \u4ee5\u555f\u7528\u532f\u5165\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Go to ":["\u524d\u5f80 "],"Import Failed":["\u532f\u5165\u5931\u6557\u3002"],"Import Successful!":["\u5df2\u5b8c\u6210\u532f\u5165\u3002"],"No description":["\u6c92\u6709\u5167\u5bb9\u8aaa\u660e"],"Remove file":["\u79fb\u9664\u6a94\u6848"],"Selected Files:":["\u9078\u53d6\u7684\u6a94\u6848:"],"Supports JSON and XML files":["\u652f\u63f4 JSON \u53ca XML \u6a94\u6848"],"Drag and drop files here, or click to browse":["\u8acb\u5c07\u6a94\u6848\u62d6\u653e\u81f3\u9019\u88e1\uff0c\u6216\u9ede\u64ca\u4ee5\u700f\u89bd"],"All Snippets":["\u5168\u90e8\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Type":["\u985e\u578b"],"Upload files":["\u4e0a\u50b3\u6a94\u6848"],"Do not import any duplicate snippets; leave all existing snippets unchanged.":["\u4e0d\u532f\u5165\u4efb\u4f55\u540d\u7a31\u76f8\u540c\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\uff0c\u4e26\u4fdd\u6301\u73fe\u6709\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u4e0d\u906d\u8b8a\u66f4\u3002"],"Replace any existing snippets with a newly imported snippet of the same name.":["\u5982\u679c\u540d\u7a31\u76f8\u540c\uff0c\u4fbf\u4ee5\u532f\u5165\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u53d6\u4ee3\u73fe\u6709\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"Ignore any duplicate snippets: import all snippets from the file regardless and leave all existing snippets unchanged.":["\u4e0d\u8655\u7406\u91cd\u8907\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u540d\u7a31\uff0c\u7121\u8ad6\u5982\u4f55\u90fd\u532f\u5165\u5168\u90e8\u7a0b\u5f0f\u78bc\u7247\u6bb5\uff0c\u4e26\u4fdd\u6301\u73fe\u6709\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u4e0d\u906d\u8b8a\u66f4\u3002"],"What should happen if an existing snippet is found with an identical name to an imported snippet?":["\u8acb\u5728\u4e0b\u65b9\u9078\u53d6\u532f\u5165\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u8207\u73fe\u6709\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5\u540d\u7a31\u76f8\u540c\u6642\u7684\u8655\u7406\u65b9\u5f0f\u3002"],"Duplicate Snippets":["\u91cd\u8907\u7684\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Upload one or more Code Snippets export files and the snippets will be imported.":["\u4e0a\u50b3\u4e00\u6216\u591a\u500b Code Snippets \u5916\u639b\u7684\u8cc7\u6599\u532f\u51fa\u6a94\uff0c\u4fbf\u80fd\u532f\u5165\u7a0b\u5f0f\u78bc\u7247\u6bb5\u3002"],"No snippets were imported.":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u4e26\u672a\u532f\u5165\u3002"],"ID":["ID"],"Name":["\u7a0b\u5f0f\u78bc\u7247\u6bb5\u540d\u7a31"],"Import Snippets":["\u532f\u5165\u7a0b\u5f0f\u78bc\u7247\u6bb5"],"Tags":["\u6a19\u7c64"],"Description":["\u7528\u9014\u8aaa\u660e"]}},"comment":{"reference":"dist\/import.js"}} \ No newline at end of file diff --git a/languages/plugins/code-snippets-zh_TW-fd1aaddbce8f2200f86f46a5a5a3974d.json b/languages/plugins/code-snippets-zh_TW-fd1aaddbce8f2200f86f46a5a5a3974d.json new file mode 100644 index 0000000..0200b93 --- /dev/null +++ b/languages/plugins/code-snippets-zh_TW-fd1aaddbce8f2200f86f46a5a5a3974d.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-01-29 16:31:52+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"An error occurred when attempting to activate":["\u5617\u8a66\u555f\u7528\u7a0b\u5f0f\u78bc\u7247\u6bb5\u6642\u767c\u751f\u932f\u8aa4\u3002"],"Activate":["\u555f\u7528"],"Deactivate":["\u505c\u7528"]}},"comment":{"reference":"dist\/manage.js"}} \ No newline at end of file diff --git a/languages/plugins/code-snippets-zh_TW.l10n.php b/languages/plugins/code-snippets-zh_TW.l10n.php new file mode 100644 index 0000000..5d20b4b --- /dev/null +++ b/languages/plugins/code-snippets-zh_TW.l10n.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2026-01-29 16:31:52+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'Plugins - Code Snippets - Stable (latest release)','language'=>'zh_TW','messages'=>['Insert PHP Code Snippet'=>'插入 PHP 程式碼片段','WPCode (Insert Headers and Footers)'=>'WPCode (Insert Headers and Footers)','Header Footer Code Manager'=>'Header Footer Code Manager','Unknown upload error.'=>'未知的上傳錯誤。','A PHP extension stopped the file upload.'=>'檔案上傳已由 PHP 擴充功能停止。','Failed to write file to disk.'=>'無法將檔案寫入磁碟。','Missing a temporary folder.'=>'找不到暫存資料夾。','No file was uploaded.'=>'檔案並未上傳。','File was only partially uploaded.'=>'檔案僅部分上傳。','File exceeds the MAX_FILE_SIZE directive.'=>'檔案超過 MAX_FILE_SIZE 的限制。','File exceeds the upload_max_filesize directive.'=>'檔案超過 upload_max_filesize 的限制。','Invalid XML in file %s'=>'檔案 %s 中的 XML 資料無效','Untitled Snippet'=>'未命名的程式碼片段','No snippets found in file %s'=>'在檔案 %s 中找不到程式碼片段','Invalid JSON in file %1$s: %2$s'=>'檔案 %1$s 中的 JSON 資料無效: %2$s','Unsupported file type.'=>'不支援的檔案類型。','File not found or is not a valid file.'=>'找不到檔案或無效的檔案。','No snippet data provided for import.'=>'沒有提供可供匯入的程式碼片段資料。','Found %d snippet ready for import.'=>'已找到 %d 個可供匯入的程式碼片段。','No valid snippets found in the uploaded files.'=>'在上傳的檔案中找不到有效的程式碼片段。','Error parsing %1$s: %2$s'=>'剖析 %1$s 時發生錯誤: %2$s','Invalid file type for %s. Only JSON and XML files are allowed.'=>'%s 的檔案類型無效。僅可使用 JSON 或 XML 檔案。','Upload error for file %1$s: %2$s'=>'上傳檔案 %1$s 時發生錯誤: %2$s','Invalid file upload data.'=>'無效的檔案上傳資料。','No files were uploaded.'=>'檔案並未上傳。','Cookie check failed'=>'Cookie 檢查失敗','Whether to import to network table'=>'是否匯入至多站網路的資料表','Action to take when duplicate snippets are found'=>'找到重複程式碼片段時要進行的操作','Array of snippet data to import'=>'要匯入的程式碼片段資料陣列','Selected snippets trashed.'=>'選取的程式碼片段已移至回收桶。','Snippet trashed.'=>'程式碼片段已移至回收桶。','Selected snippets trashed. Undo'=>'選取的程式碼片段已移至回收桶復原','Snippet trashed. Undo'=>'程式碼片段已移至回收桶復原','Selected snippets permanently deleted.'=>'選取的程式碼片段已永久刪除。','Snippet permanently deleted.'=>'程式碼片段已永久刪除。','Trashed (%s)'=>'回收桶 (%s)','Network Snippets (%s)'=>'多站網路程式碼片段 (%s)','Shared with Subsites (%s)'=>'與子網站共用 (%s)','Move to Trash'=>'移至回收桶','Shared with Subsites'=>'與子網站共用','Trash'=>'回收桶','Delete Permanently'=>'永久刪除','Restore'=>'還原','Network Snippet'=>'多站網路程式碼片段','Version'=>'版本','Refresh Versions'=>'重新整理版本','Enable the ability to switch or rollback versions of the Code Snippets core plugin.'=>'啟用切換或指定 Code Snippets 核心功能外掛版本的功能','Version Change'=>'版本變更','Refreshed!'=>'已重新整理。','Refreshing...'=>'正在重新整理...','An error occurred while switching versions. Please try again.'=>'切換版本時發生錯誤。請再試一次。','An error occurred.'=>'發生錯誤。','Processing version switch. Please wait...'=>'正在處理版本切換,請稍候...','Switching...'=>'正在切換...','Please select a different version to switch to.'=>'請選取要切換的不同目標版本。','Switching versions may cause compatibility issues. Always backup your site before switching versions.'=>'切換版本有可能會造成相容問題。在切換版本前,請先備份網站。','Available versions updated successfully.'=>'可供使用的版本已成功更新。','You do not have permission to manage options.'=>'目前的登入身分沒有管理選項的權限。','Check for the latest available plugin versions from WordPress.org.'=>'檢查 WordPress.org 上外掛的最新可用版本。','Refresh Available Versions'=>'重新整理可供使用的版本','Security check failed.'=>'安全性檢查失敗。','Switch Version'=>'切換版本',' (Current)'=>' (目前版本)','Select a version...'=>'選取版本...','Switch to Version:'=>'切換至目標版本:','Version switch in progress. Please wait...'=>'正在切換版本,請稍候...','Current Version:'=>'目前版本:','Successfully switched to version %s. Please refresh the page to see changes.'=>'已成功切換至 %s 版。請重新整理頁面以查看相關變更。','Already on the specified version.'=>'已是指定的版本。','You do not have permission to update plugins.'=>'目前的登入身分沒有更新外掛的權限。','Failed to switch versions. Please try again.'=>'無法切換版本,請再試一次。','Invalid version specified.'=>'指定的版本無效。','No target version specified.'=>'尚未指定目標版本。','unitpx'=>'px','Snippets will be executed directly from files instead of the database.'=>'程式碼片段會直接透過檔案而非資料庫執行→','Enable file-based execution'=>'啟用直接執行檔案','Pro'=>'Pro 版','Core'=>'主程式','Safe mode is active and snippets will not execute! Remove the %1$s constant from %2$s file to turn off safe mode.'=>'[安全模式] 已啟用,現有的程式碼片段均不會執行,移除 %2$s 中的常數 %1$s 便能停用 [安全模式]。','Warning:'=>'警告:','Upgrade to Pro'=>'升級至 Pro 版','Share feedback'=>'分享意見反應','https://codesnippets.pro/beta-testing/feedback/'=>'https://codesnippets.pro/beta-testing/feedback/','Ok'=>'確定','Hide notices inviting you to upgrade to Code Snippets Pro.'=>'隱藏升級至 Code Snippets Pro 的通知','Hide Upgrade Notices'=>'隱藏升級通知','Error message if the snippet code could not be parsed.'=>'如果這個程式碼片段無法剖析,就顯示錯誤訊息。','Identifier of condition linked to this snippet.'=>'連結至這個程式碼片段的識別碼。','This snippet type is only available in Code Snippets Pro'=>'這個程式碼片段類型僅由 Code Snippets Pro 提供支援。','Unknown'=>'未知','Footer scripts'=>'footer 指令碼','Head scripts'=>'head 指令碼','Snippet #%d'=>'程式碼片段 #%d','If you\'re not sure about the types of snippets you can add, take a look at the Code Snippets Pro Docs for inspiration.'=>'如果不清楚能新增的程式碼片段類型,請參考 Code Snippets Pro 線上說明以進一步了解。','You can find out how to enable safe mode in the Code Snippets Pro Docs.'=>'Code Snippets Pro 線上說明提供使用者開啟安全模式的方式。','Successfully imported %d snippet.'=>'%d 個程式碼片段已成功匯入。','Create New Snippet'=>'新增程式碼片段','Synced cloud data has been successfully refreshed.'=>'同步的雲端資料已成功重新整理。','Help'=>'線上說明','Update Available'=>'已有更新可供安裝','Partner image'=>'合作夥伴圖片','Go to Partner'=>'前往合作夥伴網站','Partners and apps'=>'合作夥伴及應用程式','Feature image'=>'精選圖片','Helpful articles'=>'實用文章','Latest changes'=>'近期更新','Read the full changelog'=>'閱讀完整變更記錄','Latest news image'=>'最新消息圖片','Read more'=>'進一步了解','Latest news'=>'最新消息','Resources and What\'s New'=>'相關資源及最新消息','Code Snippets Logo'=>'Code Snippets 標誌','Other'=>'其他','Bug fixes'=>'程式碼錯誤修正','Improvements'=>'改進項目','New features'=>'新功能','Discord'=>'Discord','Cloud'=>'雲端服務','Welcome to Code Snippets'=>'感謝採用 Code Snippets','menu labelWhat\'s New'=>'最新消息','Successfully reset snippets caches.'=>'程式碼片段快取已成功重設。','Use this button to manually clear snippets caches.'=>'點擊這個按鈕便能手動清除程式碼片段快取。','Reset Caches'=>'重設快取','Successfully performed database table upgrade.'=>'資料庫資料表已成功升級。','Debug'=>'偵錯','Use this button to manually upgrade the Code Snippets database table. This action will only affect the snippets table and should be used only when necessary.'=>'點擊這個按鈕便能手動升級 Code Snippets 在資料庫中的資料表。這項操作僅會影響程式碼片段資料表,並僅有在需要時才使用這項功能。','Upgrade Database Table'=>'升級資料庫資料表','Database Table Upgrade'=>'資料庫資料表升級','Community'=>'社群','Docs and Support'=>'線上說明文件及技術支援','top-level menu labelGo Pro'=>'升級至 Pro 版','e.g. Remove unused javascript…'=>'例如: Remove unused javascript (僅接受英文)','Name of codevault'=>'程式碼保存庫名稱','Search by keyword(s)'=>'依據關鍵字搜尋','Search Cloud'=>'搜尋雲端','Search cloud snippets'=>'搜尋雲端程式碼片段','(Note: codevault name is case and spelling sensitive and only public snippets will be shown)'=>'(注意事項: 程式碼保存庫名稱區分大小寫,並僅會顯示設定為 [公開] 的程式碼片段)','Use the search bar below to search cloud snippets by entering either the name of a codevault or keywords.'=>'在下方搜尋列中輸入程式碼保存庫名稱或關鍵字,便能搜尋雲端程式碼片段。','Learn more about Code Snippets Cloud →'=>'進一步了解 Code Snippets Cloud →','See all your public and private snippets that are stored in your Code Snippet Cloud codevault.'=>'查看個人儲存於 Code Snippet Cloud 服務的程式碼保存庫中公開或私密程式碼片段。','Learn more about javascript snippets →'=>'進一步了解 JavaScript 程式碼片段 →','Learn more about style snippets →'=>'進一步了解樣式程式碼片段 →','Learn more about content snippets →'=>'進一步了解內容程式碼片段 →','Learn more about function snippets →'=>'進一步了解函式程式碼片段 →','Find more about Pro (opens in external tab)'=>'進一步了解 Pro 版 (在新分頁中開啟外部連結)','Thank you for testing this beta version of Code Snippets. We would love to hear your thoughts.'=>'感謝測試 Code Snippets Beta 版,我們樂於聽取使用者的意見。','Last page'=>'最末頁','Next page'=>'下一頁','paging%1$s of %2$s'=>'第 %1$s 頁,總計 %2$s 頁','Current page'=>'目前頁面','Previous page'=>'上一頁','First page'=>'第一頁','%s item'=>'%s 個項目','Preview'=>'預覽','View'=>'檢視','Please enter a term to start searching code snippets in the cloud.'=>'請輸入關鍵字以搜尋儲存於雲端的程式碼片段。','No snippets or codevault could be found with that search term. Please try again.'=>'找不到與搜尋關鍵字相符的程式碼片段或程式碼保存庫。請再試一次。','Snippet has not undergone any review yet.'=>'程式碼片段尚未經過任何檢閱。','Snippet has been tested by our AI bot.'=>'程式碼片段已由我們的 AI 驗證程式完成測試。','Snippet has passed basic review.'=>'程式碼片段已通過基本檢閱。','Last Updated:'=>'最後更新:','Codevault:'=>'程式碼保存庫:','Preview this snippet'=>'預覽這個程式碼片段','Snippet Code:'=>'程式碼片段程式碼:','Pro Verified'=>'已經由專家驗證','AI Verified'=>'已經由 AI 驗證','Unverified'=>'尚未驗證','Public'=>'公開','Private'=>'私密','Updated'=>'已更新','Invalid action.'=>'無效的操作。','Bundles'=>'套件組合','Codevault'=>'程式碼保存庫','Cloud Search'=>'雲端搜尋','AI'=>'AI','Learn more.'=>'進一步了解','Select a snippet to display'=>'選取要顯示的程式碼片段','Font Size'=>'字型大小','Height'=>'高度','Off'=>'關閉','On'=>'開啟','Word Wrap'=>'自動換行','Highlight Lines'=>'強調顯示的行數','Scripts (JS)'=>'指令碼 (JS)','Styles (CSS)'=>'樣式 (CSS)','Content (Mixed)'=>'內容 (混合)','Functions (PHP)'=>'函式 (PHP)','Code Snippet Source'=>'程式碼片段原始程式碼','Select a snippet to show'=>'選取要顯示的程式碼片段','Text Color'=>'文字色彩','Justified'=>'左右對齊','Right'=>'靠右對齊','Center'=>'置中對齊','Left'=>'靠左對齊','Alignment'=>'對齊方式','Processing Options'=>'處理選項','JavaScript loaded just before the closing &lt;/body&gt; tag'=>'僅在結尾標籤 前方載入 JavaScript','JavaScript loaded in the site &lt;head&gt; section'=>'僅在網站的 標籤區段中載入 JavaScript','Administration area stylesheet'=>'管理區域樣式表','Site front-end stylesheet'=>'網站前端樣式表','View Full Script'=>'檢視完整指令碼','View Full Stylesheet'=>'檢視完整樣式表','Minify snippet output by removing whitespace and optimizing code to reduce load times.'=>'透過移除空白字元及程式碼最佳化以降低載入時間,進而壓縮程式碼片段輸出。','Minify Snippet Output'=>'程式碼片段壓縮輸出','Thanks'=>'謝謝','Notice'=>'注意事項','Success'=>'成功','You can now safely remove the free version of Code Snippets'=>'現在可以安全的移除免費版本的 Code Snippets','Could not activate snippet.'=>'無法啟用程式碼片段。','Could not activate snippet: code did not pass validation.'=>'無法啟用程式碼片段: 程式碼無法通過驗證。','Could not locate snippet with ID %d.'=>'找不到 ID 為 %d 的程式碼片段。','Sublime Text'=>'Sublime Text','Emacs'=>'Emacs','Vim'=>'Vim','The set of keyboard shortcuts to use in the code editor.'=>'用於程式碼編輯器的鍵盤快速鍵集。','Keymap'=>'按鍵對應','Allow folding functions or other blocks into a single line.'=>'允許將函式或其他區塊折疊為單行','Code Folding'=>'程式碼折疊','Soft-wrap long lines of code instead of horizontally scrolling.'=>'較長的程式碼不使用水平捲動,改為使用自動換行','The number of spaces to indent a block.'=>'區塊要縮排的空格數。','unitspaces'=>'個空格','Disable syntax highlighting when displaying snippet code on the front-end.'=>'在網站前端顯示程式碼片段程式碼時,停用語法醒目提示','Disable Syntax Highlighter'=>'停用語法醒目提示','unitrows'=>'列','Description Editor Height'=>'用途說明編輯器高度','Default'=>'預設','Date and time when the snippet was last modified, in ISO format.'=>'程式碼片段的最後修改日期及時間 (ISO 格式)。','If a network snippet, whether can be activated on discrete sites instead of network-wide.'=>'如果是要用於多站網路的程式碼片段,決定是執行於個別網站或整個多站網路。','Whether the snippet is network-wide instead of site-wide.'=>'程式碼片段執行於整個多站網路或個別網站。','Relative priority in which the snippet is executed.'=>'執行程式碼片段的相對優先順序。','Snippet activation status.'=>'程式碼片段啟用狀態。','Context in which the snippet is executable.'=>'程式碼片段可執行的內容。','List of tag categories the snippet belongs to.'=>'程式碼片段所屬的標籤清單。','Executable snippet code.'=>'可執行的程式碼片段程式碼。','Descriptive text associated with snippet.'=>'與程式碼片段相關的描述性文字。','Descriptive title for the snippet.'=>'程式碼片段的描述性標題。','Unique identifier for the snippet.'=>'程式碼片段的唯一識別碼。','The snippet could not be deactivated.'=>'這個程式碼片段無法停用。','The snippet could not be deleted.'=>'這個程式碼片段無法刪除。','The snippet could not be updated.'=>'這個程式碼片段無法更新。','Cannot update a snippet without a valid ID.'=>'無法更新沒有有效 ID 的程式碼片段。','The snippet could not be created.'=>'無法新增程式碼片段。','The snippet could not be found.'=>'找不到符合條件的程式碼片段。','Script snippets are loaded on the site front-end in a JavaScript file, either in the head or body sections.'=>'指令碼程式碼片段會以 JavaScript 檔案的方式在網站前端的 head 或 body 標籤區段中載入。','Style snippets are written in CSS and loaded in the admin area or on the site front-end, just like the theme style.css.'=>'樣式程式碼片段會以 CSS 的方式 (類似佈景主題的 style.css) 在網站管理區域或網站前端載入。','Export Code'=>'匯出程式碼','Join our community on Facebook'=>'加入我們在 Facebook 上的社群','Loading edit page…'=>'正在載入編輯頁面...','Search Snippets'=>'搜尋程式碼片段','All Snippets'=>'全部程式碼片段','Highlight the line that is currently being edited.'=>'為目前編輯的內容行進行醒目提示','Highlight Active Line'=>'編輯行顯示醒目提示','Modified (oldest first)'=>'修改日期 (最舊的在前)','Modified (latest first)'=>'修改日期 (最新的在前)','Name (Z-A)'=>'名稱 (Z-A 遞減排序)','Name (A-Z)'=>'名稱 (A-Z 遞增排序)','Default way to order snippets on the All Snippets admin menu.'=>'在 [全部程式碼片段] 頁面的程式碼片段預設排序方式。','Snippets List Order'=>'程式碼片段清單順序','Show line numbers'=>'顯示行號','Insert Snippet Source'=>'插入程式碼片段原始程式碼','Snippet Source Code'=>'程式碼片段原始程式碼','Enable shortcodes'=>'啟用短代碼功能','Apply formatting'=>'套用格式化','Run PHP code'=>'執行 PHP 程式碼','Snippet'=>'程式碼片段','Insert Content Snippet'=>'插入內容程式碼片段','Content Snippet'=>'內容程式碼片段','%1$s is currently inactive. You can edit this snippet to activate it and make it visible. This message will not appear in the published post.'=>'[%1$s] 目前為非使用狀態。網站管理員可以編輯這個程式碼片段以啟用並顯示對應的內容。這個訊息不會顯示在已發佈的內容中。','Could not load snippet with an invalid ID: %d.'=>'無法載入無效 ID 的程式碼片段。無效 ID: %d。','Shortcode for inserting the current year into a post or page..'=>'在文章或頁面中使用這個短代碼便能插入目前年份。','Current year'=>'目前年份','Allows smiley conversion in obscure places.'=>'在網站中的幾個小地方允許表情文字轉換成表情符號圖片。','Allow smilies'=>'允許表情文字轉換','Turns off the WordPress admin bar for everyone except administrators.'=>'停用除了網站管理員外全部使用者的 WordPress 工具列。','Disable admin bar'=>'停用工具列','Makes sure that image and file uploads have lowercase filenames.'=>'將上傳的圖片及檔案的檔案名稱變更為小寫字元。','Make upload filenames lowercase'=>'將上傳檔案的檔案名稱變更為全部小寫字元','This is a sample snippet. Feel free to use it, edit it, or remove it.'=>'這是範例程式碼片段,隨時都可以使用、編輯或移除它。','Front-end styles'=>'前端樣式','Admin styles'=>'管理後台樣式','Footer content'=>'footer 標籤內容','Head content'=>'head 標籤內容','Single-use function'=>'僅執行一次的函式','Front-end function'=>'前端函式','Admin function'=>'管理後台函式','Global function'=>'全域函式','Scripts'=>'指令碼','Styles'=>'樣式','Content snippets are bits of reusable PHP and HTML content that can be inserted into posts and pages.'=>'內容程式碼片段是可重複使用、可插入至文章或頁面的 PHP 及 HTML 內容。','Function snippets are run on your site as if there were in a plugin or theme functions.php file.'=>'函式程式碼片段在網站上的執行方式與外掛或佈景主題的 functions.php 檔案一樣。','Content'=>'內容','Functions'=>'函式','%s [CLONE]'=>'%s - 再製','It looks like you don\'t have any snippets of this type.'=>'找不到符合這個類型條件的程式碼片段。','Type'=>'類型','If something goes wrong with a snippet, and you can\'t use WordPress, you can cause all snippets to stop executing by turning on safe mode.'=>'如果執行程式碼片段發生錯誤,並且無法再使用 WordPress 網站,請開啟安全模式停用全部程式碼片段。','Active Snippets'=>'已啟用的程式碼片段','Last modified %s'=>'最後修改日期: %s','Upgrade to Pro'=>'升級至 Pro 版','Upgrade to Code Snippets Pro'=>'升級至 Code Snippets Pro','Find out how to get support with Code Snippets'=>'進一步了解取得 Code Snippets 技術支援的方式','Change plugin settings'=>'變更外掛設定','Please upgrade your server to the latest version of PHP to continue using Code Snippets.'=>'請將這台伺服器升級至最新版 PHP 執行環境以繼續使用 Code Snippets 外掛。','Code Snippets requires PHP %s or later.'=>'Code Snippets 需要 PHP %s 或更新版本。','Another version of Code Snippets appears to be installed. Deactivating this version.'=>'已安裝其他版本的 Code Snippets 外掛。請停用這個版本的外掛。','Cannot redeclare %s.'=>'無法重新宣告 %s。','Cannot redeclare interface %s.'=>'無法重新宣告 %s 介面。','Cannot redeclare class %s.'=>'無法重新宣告 %s 類別。','Cannot redeclare function %s.'=>'無法重新宣告 %s 函式。','Parse error: syntax error, unexpected end of snippet.'=>'剖析錯誤: 語法錯誤,程式碼片段未預期的結束。',' for “%1$s” on line %2$d'=>'「%1$s」的搜尋結果 (第 %2$d 行)','No snippets were found matching the current search query. Please enter a new query or use the "Clear Filters" button above.'=>'找不到符合目前搜尋查詢條件的程式碼片段。請輸入新的查詢條件或使用上方 [清除篩選條件] 按鈕。','Modified'=>'修改日期','date and time format%1$s at %2$s'=>'%1$s%2$s','Y/m/d'=>'Y 年 n 月 j 日','%s ago'=>'%s前','Here you can load snippets from a code snippets export file into the database alongside existing snippets.'=>'這個畫面可以讓網站管理員載入 Code Snippets 外掛的資料匯出檔,將現有的程式碼片段匯入至資料庫中。','Here you can add a new snippet, or edit an existing one.'=>'這個畫面可以讓網站管理員新增程式碼片段,或編輯現有的程式碼片段。','Here you can manage your existing snippets and perform tasks on them such as activating, deactivating, deleting and exporting.'=>'這個畫面可以讓網站管理員管理現有的程式碼片段,並對這些程式碼片段進行啟用、停用、刪除及匯出等多項操作。','Snippets are similar to plugins - they both extend and expand the functionality of WordPress. Snippets are more light-weight, just a few lines of code, and do not put as much load on your server. '=>'程式碼片段與外掛功能相似,他們都擴充了 WordPress 的功能。程式碼片段更加輕量化,往往僅有幾行程式碼,因此不會為網站伺服器帶來太多的負載。','menu labelEdit Snippet'=>'編輯程式碼片段','https://codesnippets.pro'=>'https://codesnippets.pro','Code Snippets Pro'=>'Code Snippets Pro',' in tag “%s”'=>'標籤為〈%s〉的搜尋結果',' for “%s”'=>'「%s」的搜尋結果','It looks like you don\'t have any snippets.'=>'找不到符合條件的程式碼片段。','Clone'=>'再製','snippetsImport'=>'匯入','snippetsSettings'=>'設定','snippetsManage'=>'管理','Selected snippets cloned.'=>'選取的程式碼片段已再製。','Snippet cloned.'=>'程式碼片段已再製。','tools submenu labelSnippets'=>'程式碼片段','Priority'=>'優先順序','When the plugin is deleted from the Plugins menu, also delete all snippets and plugin settings.'=>'在 [外掛] 選單中刪除這個外掛時,同時在資料庫中刪除全部程式碼片段及外掛設定','Complete Uninstall'=>'完整解除安裝','Download'=>'下載','Run Once'=>'執行一次','Snippets » Settings'=>'程式碼片段 » 設定','Reset to Default'=>'重設為預設值','All settings have been reset to their defaults.'=>'全部設定已重設為預設值。','Snippet executed.'=>'程式碼片段已執行。','Perhaps you would like to add a new one?'=>'請新增新的程式碼片段','Network Only'=>'僅能由多站網路管理員啟用','Network Active'=>'已於多站網路中啟用','An easy, clean and simple way to run code snippets on your site. No need to edit to your theme\'s functions.php file again!'=>'透過易用、簡潔的方式在網站中執行程式碼片段,這樣便不再需要編輯佈景主題的 functions.php 檔案。','snippetAdd New'=>'新增程式碼片段','Settings saved.'=>'設定已儲存。','Editor Preview'=>'編輯器預覽','Code Editor'=>'程式碼編輯器','General'=>'一般','Highlight all instances of a currently selected word.'=>'程式碼片段的字詞如與選取字詞相符,即以醒目提示方式顯示','Highlight Selection Matches'=>'符合選取項目顯示醒目提示','Auto-close brackets and quotes when typed.'=>'輸入程式碼時自動關閉括號及引號','Auto Close Brackets'=>'自動關閉括號','Show line numbers to the left of the editor.'=>'在編輯器左側顯示行號','Line Numbers'=>'行號','Wrap Lines'=>'自動換行','Indent Unit'=>'縮排單位','The width of a tab character.'=>'設定 Tab 定位字元的寬度。','Tab Size'=>'Tab 定位字元寬度','Use hard tabs instead of spaces for indentation.'=>'使用 Tab 定位字元 (不使用空格) 進行縮排','Indent With Tabs'=>'使用 Tab 定位字元進行縮排','Theme'=>'外觀樣式','Show snippet descriptions on admin pages.'=>'在外掛管理頁面顯示程式碼片段用途說明','Enable Snippet Descriptions'=>'啟用程式碼片段用途說明','Show snippet tags on admin pages.'=>'在外掛管理頁面顯示程式碼片段標籤','Enable Snippet Tags'=>'啟用程式碼片段標籤','Make the \'Save and Activate\' button the default action when saving a snippet.'=>'將 [儲存設定並啟用] 按鈕設定為儲存程式碼片段的預設操作按鈕','Activate by Default'=>'預設啟用程式碼片段','Clear Filters'=>'清除篩選條件','Search results'=>'搜尋結果: ','Clear List'=>'清除清單','Filter'=>'篩選','Show all tags'=>'顯示全部標籤','Recently Active (%s)'=>'近 7 日內停用 (%s)','Inactive (%s)'=>'未啟用 (%s)','Active (%s)'=>'已啟用 (%s)','All (%s)'=>'全部 (%s)','ID'=>'ID','Name'=>'程式碼片段名稱','\'Cancel\' to stop, \'OK\' to delete.'=>'點擊 [取消] 以停止操作,點擊 [確定] 以進行刪除。','You are about to permanently delete the selected item.'=>'這項操作會永久刪除選取項目。','Export'=>'匯出','Edit'=>'編輯','Activate'=>'啟用','Network Activate'=>'於多站網路中啟用','Deactivate'=>'停用','Network Deactivate'=>'於多站網路中停用','Snippets per page'=>'每頁顯示程式碼片段數量','You can save your snippets to a code snippets export file using the Manage Snippets page.'=>'網站管理員可以透過 [管理程式碼片段] 頁面,將程式碼片段儲存為 Code Snippets 外掛的資料匯出檔。','Exporting'=>'匯出','Imported snippets will be added to the database along with your existing snippets. Regardless of whether the snippets were active on the previous site, imported snippets are always inactive until activated using the Manage Snippets page.'=>'匯入的程式碼片段會新增至包含現有程式碼片段的資料庫中。無論這些匯入的程式碼片段在之前的網站是否啟用,匯入的程式碼片段在 [管理程式碼片段] 頁面中啟用前均為未啟用狀態。','You can load your snippets from a code snippets export file using this page.'=>'這個畫面可以讓網站管理員從 Code Snippets 的資料匯出檔載入程式碼片段。','Importing'=>'匯入','Please be sure to check that your snippet is valid PHP code and will not produce errors before adding it through this page. While doing so will not become active straight away, it will help to minimize the chance of a faulty snippet becoming active on your site.'=>'請在透過這個頁面新增程式碼片段前,務必檢查要新增的程式碼片段是否為有效、不會產生錯誤的 PHP 程式碼。這麼做雖然無法避開全部問題程式碼產生的錯誤,但確實有助於大幅降低不良的程式碼片段啟用於網站後造成錯誤的可能性。','You need to fill out the name and code fields for your snippet to be added. While the description field will add more information about how your snippet works, what is does and where you found it, it is completely optional.'=>'新增程式碼片段必須填寫 [程式碼片段名稱] 及 [程式碼] 欄位。[用途說明] 欄位雖為選填,但可以加入程式碼片段執行方式、執行效果及相關出處的詳細資訊。','Adding Snippets'=>'新增程式碼片段','Be sure to check your snippets for errors before you activate them, as a faulty snippet could bring your whole blog down. If your site starts doing strange things, deactivate all your snippets and activate them one at a time.'=>'在啟用任何程式碼片段前,請檢查他們是否還有錯誤;一旦啟用含有錯誤的程式碼片段,有可能會導致整個網站停擺。如果這個網站因為啟用的程式碼片段造成不正常的狀況,請先停用全部程式碼片段,然後一次啟用一個進行偵錯。','Safe Mode'=>'安全模式','Overview'=>'概觀','Plugin Website'=>'外掛網站','Support Forum'=>'技術支援論壇','FAQ'=>'常見問題集','About Plugin'=>'關於這個外掛','For more information:'=>'進一步了解相關資訊:','Dismiss'=>'關閉','Take the survey now'=>'立即填寫問卷','Have feedback on Code Snippets? Please take the time to answer a short survey on how you use this plugin and what you\'d like to see changed or added in the future.'=>'如果對 Code Snippets 有任何意見反應,請撥冗回答你對這個外掛的使用方式,以及希望將來加強或新增哪些功能的簡短問卷。','Support'=>'技術支援','Manage your existing snippets'=>'管理這個網站現有的程式碼片段','Settings'=>'設定','Snippets Settings'=>'程式碼片段設定','menu labelSettings'=>'設定','Selected snippets restored.'=>'選取的程式碼片段已還原。','Snippet restored.'=>'程式碼片段已還原。','Selected snippets deactivated.'=>'選取的程式碼片段已停用。','Snippet deactivated.'=>'程式碼片段已停用。','Selected snippets activated.'=>'選取的程式碼片段已啟用。','Snippet activated.'=>'程式碼片段已啟用。','top-level menu labelSnippets'=>'程式碼片段','Snippets'=>'程式碼片段','menu labelAll Snippets'=>'全部程式碼片段','Import snippets from a code snippets export file'=>'從 Code Snippets 資料匯出檔匯入程式碼片段。','Code Snippets'=>'Code Snippets','Import Snippets'=>'匯入程式碼片段','menu labelImport'=>'匯入','Tags'=>'標籤','Description'=>'用途說明','menu labelAdd New'=>'新增程式碼片段','Edit Snippet'=>'編輯程式碼片段','You are not authorized to access this page.'=>'目前的登入身分沒有存取這個頁面的權限。']]; \ No newline at end of file diff --git a/languages/plugins/code-snippets-zh_TW.mo b/languages/plugins/code-snippets-zh_TW.mo new file mode 100644 index 0000000..8b2cafc Binary files /dev/null and b/languages/plugins/code-snippets-zh_TW.mo differ diff --git a/languages/plugins/code-snippets-zh_TW.po b/languages/plugins/code-snippets-zh_TW.po new file mode 100644 index 0000000..0d444d5 --- /dev/null +++ b/languages/plugins/code-snippets-zh_TW.po @@ -0,0 +1,1830 @@ +# Translation of Plugins - Code Snippets - Stable (latest release) in Chinese (Taiwan) +# This file is distributed under the same license as the Plugins - Code Snippets - Stable (latest release) package. +msgid "" +msgstr "" +"PO-Revision-Date: 2026-01-29 16:31:52+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: Plugins - Code Snippets - Stable (latest release)\n" + +#: php/migration/importers/plugins/insert-php-code-snippet.php:28 +msgid "Insert PHP Code Snippet" +msgstr "插入 PHP 程式碼片段" + +#: php/migration/importers/plugins/insert-headers-and-footers.php:34 +msgid "WPCode (Insert Headers and Footers)" +msgstr "WPCode (Insert Headers and Footers)" + +#: php/migration/importers/plugins/header-footer-code-manager.php:27 +msgid "Header Footer Code Manager" +msgstr "Header Footer Code Manager" + +#: php/migration/importers/files/file-upload-importer.php:404 +msgid "Unknown upload error." +msgstr "未知的上傳錯誤。" + +#: php/migration/importers/files/file-upload-importer.php:401 +msgid "A PHP extension stopped the file upload." +msgstr "檔案上傳已由 PHP 擴充功能停止。" + +#: php/migration/importers/files/file-upload-importer.php:400 +msgid "Failed to write file to disk." +msgstr "無法將檔案寫入磁碟。" + +#: php/migration/importers/files/file-upload-importer.php:399 +msgid "Missing a temporary folder." +msgstr "找不到暫存資料夾。" + +#: php/migration/importers/files/file-upload-importer.php:398 +msgid "No file was uploaded." +msgstr "檔案並未上傳。" + +#: php/migration/importers/files/file-upload-importer.php:397 +msgid "File was only partially uploaded." +msgstr "檔案僅部分上傳。" + +#: php/migration/importers/files/file-upload-importer.php:396 +msgid "File exceeds the MAX_FILE_SIZE directive." +msgstr "檔案超過 MAX_FILE_SIZE 的限制。" + +#: php/migration/importers/files/file-upload-importer.php:395 +msgid "File exceeds the upload_max_filesize directive." +msgstr "檔案超過 upload_max_filesize 的限制。" + +#. translators: %s: file name +#: php/migration/importers/files/file-upload-importer.php:302 +msgid "Invalid XML in file %s" +msgstr "檔案 %s 中的 XML 資料無效" + +#: php/migration/importers/files/file-upload-importer.php:281 +#: php/migration/importers/files/file-upload-importer.php:334 +msgid "Untitled Snippet" +msgstr "未命名的程式碼片段" + +#. translators: %s: file name +#: php/migration/importers/files/file-upload-importer.php:269 +msgid "No snippets found in file %s" +msgstr "在檔案 %s 中找不到程式碼片段" + +#. translators: %1$s: file name, %2$s: error message +#: php/migration/importers/files/file-upload-importer.php:257 +msgid "Invalid JSON in file %1$s: %2$s" +msgstr "檔案 %1$s 中的 JSON 資料無效: %2$s" + +#: php/migration/importers/files/file-upload-importer.php:244 +msgid "Unsupported file type." +msgstr "不支援的檔案類型。" + +#: php/migration/importers/files/file-upload-importer.php:232 +msgid "File not found or is not a valid file." +msgstr "找不到檔案或無效的檔案。" + +#: php/migration/importers/files/file-upload-importer.php:176 +msgid "No snippet data provided for import." +msgstr "沒有提供可供匯入的程式碼片段資料。" + +#. translators: %d: number of snippets +#: php/migration/importers/files/file-upload-importer.php:151 +msgid "Found %d snippet ready for import." +msgid_plural "Found %d snippets ready for import." +msgstr[0] "已找到 %d 個可供匯入的程式碼片段。" + +#: php/migration/importers/files/file-upload-importer.php:138 +msgid "No valid snippets found in the uploaded files." +msgstr "在上傳的檔案中找不到有效的程式碼片段。" + +#. translators: %1$s: file name, %2$s: error message +#: php/migration/importers/files/file-upload-importer.php:126 +msgid "Error parsing %1$s: %2$s" +msgstr "剖析 %1$s 時發生錯誤: %2$s" + +#. translators: %s: file name +#: php/migration/importers/files/file-upload-importer.php:115 +msgid "Invalid file type for %s. Only JSON and XML files are allowed." +msgstr "%s 的檔案類型無效。僅可使用 JSON 或 XML 檔案。" + +#. translators: %1$s: file name, %2$s: error message +#: php/migration/importers/files/file-upload-importer.php:101 +msgid "Upload error for file %1$s: %2$s" +msgstr "上傳檔案 %1$s 時發生錯誤: %2$s" + +#: php/migration/importers/files/file-upload-importer.php:82 +msgid "Invalid file upload data." +msgstr "無效的檔案上傳資料。" + +#: php/migration/importers/files/file-upload-importer.php:71 +msgid "No files were uploaded." +msgstr "檔案並未上傳。" + +#: php/migration/importers/files/file-upload-importer.php:62 +msgid "Cookie check failed" +msgstr "Cookie 檢查失敗" + +#: php/migration/importers/files/file-upload-importer.php:48 +msgid "Whether to import to network table" +msgstr "是否匯入至多站網路的資料表" + +#: php/migration/importers/files/file-upload-importer.php:42 +msgid "Action to take when duplicate snippets are found" +msgstr "找到重複程式碼片段時要進行的操作" + +#: php/migration/importers/files/file-upload-importer.php:37 +msgid "Array of snippet data to import" +msgstr "要匯入的程式碼片段資料陣列" + +#: php/views/partials/list-table-notices.php:54 +msgid "Selected snippets trashed." +msgstr "選取的程式碼片段已移至回收桶。" + +#: php/views/partials/list-table-notices.php:53 +msgid "Snippet trashed." +msgstr "程式碼片段已移至回收桶。" + +#. translators: %s: Undo URL. +#: php/views/partials/list-table-notices.php:94 +msgid "Selected snippets trashed. Undo" +msgstr "選取的程式碼片段已移至回收桶復原" + +#. translators: %s: Undo URL. +#: php/views/partials/list-table-notices.php:78 +msgid "Snippet trashed. Undo" +msgstr "程式碼片段已移至回收桶復原" + +#: php/views/partials/list-table-notices.php:56 +msgid "Selected snippets permanently deleted." +msgstr "選取的程式碼片段已永久刪除。" + +#: php/views/partials/list-table-notices.php:55 +msgid "Snippet permanently deleted." +msgstr "程式碼片段已永久刪除。" + +#. translators: %s: total number of trashed snippets. +#: php/class-list-table.php:638 +msgid "Trashed (%s)" +msgid_plural "Trashed (%s)" +msgstr[0] "回收桶 (%s)" + +#: php/class-list-table.php:627 +msgid "Network Snippets (%s)" +msgid_plural "Network Snippets (%s)" +msgstr[0] "多站網路程式碼片段 (%s)" + +#: php/class-list-table.php:622 +msgid "Shared with Subsites (%s)" +msgid_plural "Shared with Subsites (%s)" +msgstr[0] "與子網站共用 (%s)" + +#: php/class-list-table.php:538 +msgid "Move to Trash" +msgstr "移至回收桶" + +#: php/class-list-table.php:330 +msgid "Shared with Subsites" +msgstr "與子網站共用" + +#: php/class-list-table.php:307 +msgid "Trash" +msgstr "回收桶" + +#: php/class-list-table.php:275 php/class-list-table.php:529 +msgid "Delete Permanently" +msgstr "永久刪除" + +#: php/class-list-table.php:270 php/class-list-table.php:528 +msgid "Restore" +msgstr "還原" + +#: php/class-list-table.php:252 +msgid "Network Snippet" +msgstr "多站網路程式碼片段" + +#: php/settings/settings.php:148 +msgid "Version" +msgstr "版本" + +#: php/settings/settings-fields.php:104 +msgid "Refresh Versions" +msgstr "重新整理版本" + +#: php/settings/settings-fields.php:93 +msgid "Enable the ability to switch or rollback versions of the Code Snippets core plugin." +msgstr "啟用切換或指定 Code Snippets 核心功能外掛版本的功能" + +#: php/settings/settings-fields.php:91 +msgid "Version Change" +msgstr "版本變更" + +#: php/settings/editor-preview.php:81 +msgid "Refreshed!" +msgstr "已重新整理。" + +#: php/settings/editor-preview.php:80 +msgid "Refreshing..." +msgstr "正在重新整理..." + +#: php/settings/editor-preview.php:79 +msgid "An error occurred while switching versions. Please try again." +msgstr "切換版本時發生錯誤。請再試一次。" + +#: php/settings/editor-preview.php:78 +msgid "An error occurred." +msgstr "發生錯誤。" + +#: php/settings/editor-preview.php:77 +msgid "Processing version switch. Please wait..." +msgstr "正在處理版本切換,請稍候..." + +#: php/settings/editor-preview.php:76 +msgid "Switching..." +msgstr "正在切換..." + +#: php/settings/editor-preview.php:75 +msgid "Please select a different version to switch to." +msgstr "請選取要切換的不同目標版本。" + +#: php/settings/class-version-switch.php:354 +msgid "Switching versions may cause compatibility issues. Always backup your site before switching versions." +msgstr "切換版本有可能會造成相容問題。在切換版本前,請先備份網站。" + +#: php/settings/class-version-switch.php:345 +msgid "Available versions updated successfully." +msgstr "可供使用的版本已成功更新。" + +#: php/settings/class-version-switch.php:337 +msgid "You do not have permission to manage options." +msgstr "目前的登入身分沒有管理選項的權限。" + +#: php/settings/class-version-switch.php:326 +msgid "Check for the latest available plugin versions from WordPress.org." +msgstr "檢查 WordPress.org 上外掛的最新可用版本。" + +#: php/settings/class-version-switch.php:323 +msgid "Refresh Available Versions" +msgstr "重新整理可供使用的版本" + +#: php/settings/class-version-switch.php:294 +#: php/settings/class-version-switch.php:332 +msgid "Security check failed." +msgstr "安全性檢查失敗。" + +#: php/settings/class-version-switch.php:283 +#: php/settings/settings-fields.php:99 +msgid "Switch Version" +msgstr "切換版本" + +#: php/settings/class-version-switch.php:273 +msgid " (Current)" +msgstr " (目前版本)" + +#: php/settings/class-version-switch.php:267 +msgid "Select a version..." +msgstr "選取版本..." + +#: php/settings/class-version-switch.php:264 +msgid "Switch to Version:" +msgstr "切換至目標版本:" + +#: php/settings/class-version-switch.php:259 +msgid "Version switch in progress. Please wait..." +msgstr "正在切換版本,請稍候..." + +#: php/settings/class-version-switch.php:253 +msgid "Current Version:" +msgstr "目前版本:" + +#: php/settings/class-version-switch.php:238 +msgid "Successfully switched to version %s. Please refresh the page to see changes." +msgstr "已成功切換至 %s 版。請重新整理頁面以查看相關變更。" + +#: php/settings/class-version-switch.php:220 +msgid "Already on the specified version." +msgstr "已是指定的版本。" + +#: php/settings/class-version-switch.php:209 +#: php/settings/class-version-switch.php:299 +msgid "You do not have permission to update plugins." +msgstr "目前的登入身分沒有更新外掛的權限。" + +#: php/settings/class-version-switch.php:195 +msgid "Failed to switch versions. Please try again." +msgstr "無法切換版本,請再試一次。" + +#: php/settings/class-version-switch.php:104 +msgid "Invalid version specified." +msgstr "指定的版本無效。" + +#: php/settings/class-version-switch.php:87 +#: php/settings/class-version-switch.php:307 +msgid "No target version specified." +msgstr "尚未指定目標版本。" + +#: php/settings/settings-fields.php:198 +msgctxt "unit" +msgid "px" +msgstr "px" + +#: php/flat-files/classes/class-snippet-files.php:588 +msgid "Snippets will be executed directly from files instead of the database." +msgstr "程式碼片段會直接透過檔案而非資料庫執行→" + +#: php/flat-files/classes/class-snippet-files.php:586 +msgid "Enable file-based execution" +msgstr "啟用直接執行檔案" + +#: php/views/welcome.php:44 dist/edit.js:2 +msgid "Pro" +msgstr "Pro 版" + +#: php/views/welcome.php:43 +msgid "Core" +msgstr "主程式" + +#. translators: 1: constant name, 2: file name. +#: php/views/partials/list-table-notices.php:29 +msgid "Safe mode is active and snippets will not execute! Remove the %1$s constant from %2$s file to turn off safe mode." +msgstr "[安全模式] 已啟用,現有的程式碼片段均不會執行,移除 %2$s 中的常數 %1$s 便能停用 [安全模式]。" + +#: php/settings/class-version-switch.php:353 +#: php/views/partials/list-table-notices.php:26 +msgid "Warning:" +msgstr "警告:" + +#: php/views/manage.php:65 +msgid "Upgrade to Pro" +msgstr "升級至 Pro 版" + +#: php/views/manage.php:36 +msgid "Share feedback" +msgstr "分享意見反應" + +#: php/views/manage.php:35 +msgid "https://codesnippets.pro/beta-testing/feedback/" +msgstr "https://codesnippets.pro/beta-testing/feedback/" + +#: php/strings.php:13 +msgid "Ok" +msgstr "確定" + +#: php/settings/settings-fields.php:160 +msgid "Hide notices inviting you to upgrade to Code Snippets Pro." +msgstr "隱藏升級至 Code Snippets Pro 的通知" + +#: php/settings/settings-fields.php:158 +msgid "Hide Upgrade Notices" +msgstr "隱藏升級通知" + +#: php/rest-api/class-snippets-rest-controller.php:609 +msgid "Error message if the snippet code could not be parsed." +msgstr "如果這個程式碼片段無法剖析,就顯示錯誤訊息。" + +#: php/rest-api/class-snippets-rest-controller.php:582 +msgid "Identifier of condition linked to this snippet." +msgstr "連結至這個程式碼片段的識別碼。" + +#: php/cloud/list-table-shared-ops.php:133 +msgid "This snippet type is only available in Code Snippets Pro" +msgstr "這個程式碼片段類型僅由 Code Snippets Pro 提供支援。" + +#: php/cloud/class-cloud-api.php:477 +msgid "Unknown" +msgstr "未知" + +#: php/class-snippet.php:359 +msgid "Footer scripts" +msgstr "footer 指令碼" + +#: php/class-snippet.php:357 +msgid "Head scripts" +msgstr "head 指令碼" + +#. translators: %s: snippet identifier. +#: php/class-snippet.php:280 +msgid "Snippet #%d" +msgstr "程式碼片段 #%d" + +#. translators: %s: URL to Code Snippets Pro Docs +#: php/class-contextual-help.php:162 +msgid "If you're not sure about the types of snippets you can add, take a look at the Code Snippets Pro Docs for inspiration." +msgstr "如果不清楚能新增的程式碼片段類型,請參考 Code Snippets Pro 線上說明以進一步了解。" + +#. translators: %s: URL to Code Snippets Pro Docs +#: php/class-contextual-help.php:146 +msgid "You can find out how to enable safe mode in the Code Snippets Pro Docs." +msgstr "Code Snippets Pro 線上說明提供使用者開啟安全模式的方式。" + +#. translators: %d: number of snippets +#: php/migration/importers/files/file-upload-importer.php:215 +msgid "Successfully imported %d snippet." +msgid_plural "Successfully imported %d snippets." +msgstr[0] "%d 個程式碼片段已成功匯入。" + +#: php/admin-menus/class-edit-menu.php:70 +msgid "Create New Snippet" +msgstr "新增程式碼片段" + +#: php/views/partials/list-table-notices.php:61 +msgid "Synced cloud data has been successfully refreshed." +msgstr "同步的雲端資料已成功重新整理。" + +#: php/views/partials/list-table-notices.php:34 +msgid "Help" +msgstr "線上說明" + +#: php/cloud/list-table-shared-ops.php:98 +msgid "Update Available" +msgstr "已有更新可供安裝" + +#: php/views/welcome.php:180 +msgid "Partner image" +msgstr "合作夥伴圖片" + +#: php/views/welcome.php:177 +msgid "Go to Partner" +msgstr "前往合作夥伴網站" + +#: php/views/welcome.php:172 +msgid "Partners and apps" +msgstr "合作夥伴及應用程式" + +#: php/views/welcome.php:156 +msgid "Feature image" +msgstr "精選圖片" + +#: php/views/welcome.php:148 +msgid "Helpful articles" +msgstr "實用文章" + +#: php/views/welcome.php:103 +msgid "Latest changes" +msgstr "近期更新" + +#: php/views/welcome.php:100 +msgid "Read the full changelog" +msgstr "閱讀完整變更記錄" + +#: php/views/welcome.php:95 +msgid "Latest news image" +msgstr "最新消息圖片" + +#: php/views/welcome.php:85 php/views/welcome.php:153 +msgid "Read more" +msgstr "進一步了解" + +#: php/views/welcome.php:82 +msgid "Latest news" +msgstr "最新消息" + +#: php/views/welcome.php:56 +msgid "Resources and What's New" +msgstr "相關資源及最新消息" + +#: php/views/welcome.php:54 +msgid "Code Snippets Logo" +msgstr "Code Snippets 標誌" + +#: php/views/welcome.php:37 +msgid "Other" +msgstr "其他" + +#: php/views/welcome.php:33 +msgid "Bug fixes" +msgstr "程式碼錯誤修正" + +#: php/views/welcome.php:29 +msgid "Improvements" +msgstr "改進項目" + +#: php/views/welcome.php:25 +msgid "New features" +msgstr "新功能" + +#: php/admin-menus/class-welcome-menu.php:74 +msgid "Discord" +msgstr "Discord" + +#: php/admin-menus/class-welcome-menu.php:59 +msgid "Cloud" +msgstr "雲端服務" + +#: php/admin-menus/class-welcome-menu.php:29 +msgid "Welcome to Code Snippets" +msgstr "感謝採用 Code Snippets" + +#: php/admin-menus/class-welcome-menu.php:28 +msgctxt "menu label" +msgid "What's New" +msgstr "最新消息" + +#: php/settings/settings.php:294 +msgid "Successfully reset snippets caches." +msgstr "程式碼片段快取已成功重設。" + +#: php/settings/settings-fields.php:88 +msgid "Use this button to manually clear snippets caches." +msgstr "點擊這個按鈕便能手動清除程式碼片段快取。" + +#: php/settings/settings-fields.php:86 +msgid "Reset Caches" +msgstr "重設快取" + +#: php/settings/settings.php:278 +msgid "Successfully performed database table upgrade." +msgstr "資料庫資料表已成功升級。" + +#: php/settings/settings.php:142 +msgid "Debug" +msgstr "偵錯" + +#: php/settings/settings-fields.php:83 +msgid "Use this button to manually upgrade the Code Snippets database table. This action will only affect the snippets table and should be used only when necessary." +msgstr "點擊這個按鈕便能手動升級 Code Snippets 在資料庫中的資料表。這項操作僅會影響程式碼片段資料表,並僅有在需要時才使用這項功能。" + +#: php/settings/settings-fields.php:82 +msgid "Upgrade Database Table" +msgstr "升級資料庫資料表" + +#: php/settings/settings-fields.php:80 +msgid "Database Table Upgrade" +msgstr "資料庫資料表升級" + +#: php/admin-menus/class-welcome-menu.php:69 php/class-admin.php:190 +msgid "Community" +msgstr "社群" + +#: php/class-admin.php:184 +msgid "Docs and Support" +msgstr "線上說明文件及技術支援" + +#: php/admin-menus/class-manage-menu.php:88 +msgctxt "top-level menu label" +msgid "Go Pro" +msgstr "升級至 Pro 版" + +#: php/views/partials/cloud-search.php:56 +msgid "e.g. Remove unused javascript…" +msgstr "例如: Remove unused javascript (僅接受英文)" + +#: php/views/partials/cloud-search.php:51 +msgid "Name of codevault" +msgstr "程式碼保存庫名稱" + +#: php/views/partials/cloud-search.php:48 +msgid "Search by keyword(s)" +msgstr "依據關鍵字搜尋" + +#: php/views/partials/cloud-search.php:42 +#: php/views/partials/cloud-search.php:59 +msgid "Search Cloud" +msgstr "搜尋雲端" + +#: php/views/partials/cloud-search.php:33 +msgid "Search cloud snippets" +msgstr "搜尋雲端程式碼片段" + +#: php/views/partials/cloud-search.php:26 +msgid "(Note: codevault name is case and spelling sensitive and only public snippets will be shown)" +msgstr "(注意事項: 程式碼保存庫名稱區分大小寫,並僅會顯示設定為 [公開] 的程式碼片段)" + +#: php/views/partials/cloud-search.php:23 +msgid "Use the search bar below to search cloud snippets by entering either the name of a codevault or keywords." +msgstr "在下方搜尋列中輸入程式碼保存庫名稱或關鍵字,便能搜尋雲端程式碼片段。" + +#: php/views/manage.php:96 +msgid "Learn more about Code Snippets Cloud →" +msgstr "進一步了解 Code Snippets Cloud →" + +#: php/views/manage.php:95 +msgid "See all your public and private snippets that are stored in your Code Snippet Cloud codevault." +msgstr "查看個人儲存於 Code Snippet Cloud 服務的程式碼保存庫中公開或私密程式碼片段。" + +#: php/views/manage.php:91 +msgid "Learn more about javascript snippets →" +msgstr "進一步了解 JavaScript 程式碼片段 →" + +#: php/views/manage.php:86 +msgid "Learn more about style snippets →" +msgstr "進一步了解樣式程式碼片段 →" + +#: php/views/manage.php:81 +msgid "Learn more about content snippets →" +msgstr "進一步了解內容程式碼片段 →" + +#: php/views/manage.php:76 +msgid "Learn more about function snippets →" +msgstr "進一步了解函式程式碼片段 →" + +#: php/class-admin.php:415 php/views/manage.php:64 +msgid "Find more about Pro (opens in external tab)" +msgstr "進一步了解 Pro 版 (在新分頁中開啟外部連結)" + +#: php/views/manage.php:29 +msgid "Thank you for testing this beta version of Code Snippets. We would love to hear your thoughts." +msgstr "感謝測試 Code Snippets Beta 版,我們樂於聽取使用者的意見。" + +#: php/cloud/list-table-shared-ops.php:249 +msgid "Last page" +msgstr "最末頁" + +#: php/cloud/list-table-shared-ops.php:238 +msgid "Next page" +msgstr "下一頁" + +#. translators: 1: Current page, 2: Total pages. +#: php/cloud/list-table-shared-ops.php:229 +msgctxt "paging" +msgid "%1$s of %2$s" +msgstr "第 %1$s 頁,總計 %2$s 頁" + +#: php/cloud/list-table-shared-ops.php:213 +#: php/cloud/list-table-shared-ops.php:219 +msgid "Current page" +msgstr "目前頁面" + +#: php/cloud/list-table-shared-ops.php:207 +msgid "Previous page" +msgstr "上一頁" + +#: php/cloud/list-table-shared-ops.php:197 +msgid "First page" +msgstr "第一頁" + +#. translators: %s: Number of items. +#: php/cloud/list-table-shared-ops.php:163 +msgid "%s item" +msgid_plural "%s items" +msgstr[0] "%s 個項目" + +#: php/cloud/list-table-shared-ops.php:144 +msgid "Preview" +msgstr "預覽" + +#: php/cloud/list-table-shared-ops.php:104 +msgid "View" +msgstr "檢視" + +#: php/cloud/class-cloud-search-list-table.php:263 +msgid "Please enter a term to start searching code snippets in the cloud." +msgstr "請輸入關鍵字以搜尋儲存於雲端的程式碼片段。" + +#: php/cloud/class-cloud-search-list-table.php:260 +msgid "No snippets or codevault could be found with that search term. Please try again." +msgstr "找不到與搜尋關鍵字相符的程式碼片段或程式碼保存庫。請再試一次。" + +#: php/cloud/class-cloud-search-list-table.php:127 +msgid "Snippet has not undergone any review yet." +msgstr "程式碼片段尚未經過任何檢閱。" + +#: php/cloud/class-cloud-search-list-table.php:125 +msgid "Snippet has been tested by our AI bot." +msgstr "程式碼片段已由我們的 AI 驗證程式完成測試。" + +#: php/cloud/class-cloud-search-list-table.php:123 +msgid "Snippet has passed basic review." +msgstr "程式碼片段已通過基本檢閱。" + +#: php/cloud/class-cloud-search-list-table.php:227 +msgid "Last Updated:" +msgstr "最後更新:" + +#: php/cloud/class-cloud-search-list-table.php:188 +msgid "Codevault:" +msgstr "程式碼保存庫:" + +#: php/cloud/class-cloud-search-list-table.php:164 +msgid "Preview this snippet" +msgstr "預覽這個程式碼片段" + +#: php/cloud/class-cloud-api.php:509 +msgid "Snippet Code:" +msgstr "程式碼片段程式碼:" + +#: php/cloud/class-cloud-api.php:474 +msgid "Pro Verified" +msgstr "已經由專家驗證" + +#: php/cloud/class-cloud-api.php:473 +msgid "AI Verified" +msgstr "已經由 AI 驗證" + +#: php/cloud/class-cloud-api.php:472 +msgid "Unverified" +msgstr "尚未驗證" + +#: php/cloud/class-cloud-api.php:471 +msgid "Public" +msgstr "公開" + +#: php/cloud/class-cloud-api.php:470 +msgid "Private" +msgstr "私密" + +#: php/cloud/class-cloud-api.php:402 +msgid "Updated" +msgstr "已更新" + +#: php/cloud/class-cloud-api.php:336 +msgid "Invalid action." +msgstr "無效的操作。" + +#: php/class-plugin.php:399 +msgid "Bundles" +msgstr "套件組合" + +#: php/class-plugin.php:397 +msgid "Codevault" +msgstr "程式碼保存庫" + +#: php/class-plugin.php:398 +msgid "Cloud Search" +msgstr "雲端搜尋" + +#: php/class-admin.php:350 +msgid "AI" +msgstr "AI" + +#: php/flat-files/classes/class-snippet-files.php:591 +msgid "Learn more." +msgstr "進一步了解" + +#: php/strings.php:52 +msgid "Select a snippet to display" +msgstr "選取要顯示的程式碼片段" + +#: php/settings/settings-fields.php:196 php/strings.php:51 +msgid "Font Size" +msgstr "字型大小" + +#: php/strings.php:50 +msgid "Height" +msgstr "高度" + +#: php/strings.php:49 +msgid "Off" +msgstr "關閉" + +#: php/strings.php:48 +msgid "On" +msgstr "開啟" + +#: php/strings.php:47 +msgid "Word Wrap" +msgstr "自動換行" + +#: php/strings.php:46 +msgid "Highlight Lines" +msgstr "強調顯示的行數" + +#: php/strings.php:45 +msgid "Scripts (JS)" +msgstr "指令碼 (JS)" + +#: php/strings.php:44 +msgid "Styles (CSS)" +msgstr "樣式 (CSS)" + +#: php/strings.php:43 +msgid "Content (Mixed)" +msgstr "內容 (混合)" + +#: php/strings.php:42 +msgid "Functions (PHP)" +msgstr "函式 (PHP)" + +#: php/strings.php:41 +msgid "Code Snippet Source" +msgstr "程式碼片段原始程式碼" + +#: php/strings.php:38 +msgid "Select a snippet to show" +msgstr "選取要顯示的程式碼片段" + +#: php/strings.php:37 +msgid "Text Color" +msgstr "文字色彩" + +#: php/strings.php:36 +msgid "Justified" +msgstr "左右對齊" + +#: php/strings.php:35 +msgid "Right" +msgstr "靠右對齊" + +#: php/strings.php:34 +msgid "Center" +msgstr "置中對齊" + +#: php/strings.php:33 +msgid "Left" +msgstr "靠左對齊" + +#: php/strings.php:32 +msgid "Alignment" +msgstr "對齊方式" + +#: php/strings.php:31 +msgid "Processing Options" +msgstr "處理選項" + +#: php/strings.php:27 +msgid "JavaScript loaded just before the closing &lt;/body&gt; tag" +msgstr "僅在結尾標籤 前方載入 JavaScript" + +#: php/strings.php:26 +msgid "JavaScript loaded in the site &lt;head&gt; section" +msgstr "僅在網站的 標籤區段中載入 JavaScript" + +#: php/strings.php:25 +msgid "Administration area stylesheet" +msgstr "管理區域樣式表" + +#: php/strings.php:24 +msgid "Site front-end stylesheet" +msgstr "網站前端樣式表" + +#: php/strings.php:21 +msgid "View Full Script" +msgstr "檢視完整指令碼" + +#: php/strings.php:20 +msgid "View Full Stylesheet" +msgstr "檢視完整樣式表" + +#: php/strings.php:17 +msgid "Minify snippet output by removing whitespace and optimizing code to reduce load times." +msgstr "透過移除空白字元及程式碼最佳化以降低載入時間,進而壓縮程式碼片段輸出。" + +#: php/strings.php:16 +msgid "Minify Snippet Output" +msgstr "程式碼片段壓縮輸出" + +#: php/strings.php:12 +msgid "Thanks" +msgstr "謝謝" + +#: php/strings.php:11 +msgid "Notice" +msgstr "注意事項" + +#: php/strings.php:10 +msgid "Success" +msgstr "成功" + +#: php/strings.php:8 +msgid "You can now safely remove the free version of Code Snippets" +msgstr "現在可以安全的移除免費版本的 Code Snippets" + +#: php/snippet-ops.php:316 +msgid "Could not activate snippet." +msgstr "無法啟用程式碼片段。" + +#: php/snippet-ops.php:303 +msgid "Could not activate snippet: code did not pass validation." +msgstr "無法啟用程式碼片段: 程式碼無法通過驗證。" + +#. translators: %d: snippet identifier. +#: php/snippet-ops.php:297 +msgid "Could not locate snippet with ID %d." +msgstr "找不到 ID 為 %d 的程式碼片段。" + +#: php/settings/settings-fields.php:248 +msgid "Sublime Text" +msgstr "Sublime Text" + +#: php/settings/settings-fields.php:247 +msgid "Emacs" +msgstr "Emacs" + +#: php/settings/settings-fields.php:246 +msgid "Vim" +msgstr "Vim" + +#: php/settings/settings-fields.php:243 +msgid "The set of keyboard shortcuts to use in the code editor." +msgstr "用於程式碼編輯器的鍵盤快速鍵集。" + +#: php/settings/settings-fields.php:241 +msgid "Keymap" +msgstr "按鍵對應" + +#: php/settings/settings-fields.php:213 +msgid "Allow folding functions or other blocks into a single line." +msgstr "允許將函式或其他區塊折疊為單行" + +#: php/settings/settings-fields.php:211 +msgid "Code Folding" +msgstr "程式碼折疊" + +#: php/settings/settings-fields.php:206 +msgid "Soft-wrap long lines of code instead of horizontally scrolling." +msgstr "較長的程式碼不使用水平捲動,改為使用自動換行" + +#: php/settings/settings-fields.php:190 +msgid "The number of spaces to indent a block." +msgstr "區塊要縮排的空格數。" + +#: php/settings/settings-fields.php:183 php/settings/settings-fields.php:191 +msgctxt "unit" +msgid "spaces" +msgstr "個空格" + +#: php/settings/settings-fields.php:152 +msgid "Disable syntax highlighting when displaying snippet code on the front-end." +msgstr "在網站前端顯示程式碼片段程式碼時,停用語法醒目提示" + +#: php/settings/settings-fields.php:150 +msgid "Disable Syntax Highlighter" +msgstr "停用語法醒目提示" + +#: php/settings/settings-fields.php:134 +msgctxt "unit" +msgid "rows" +msgstr "列" + +#: php/settings/settings-fields.php:132 +msgid "Description Editor Height" +msgstr "用途說明編輯器高度" + +#: php/settings/editor-preview.php:94 php/settings/settings-fields.php:245 +msgid "Default" +msgstr "預設" + +#: php/rest-api/class-snippets-rest-controller.php:603 +msgid "Date and time when the snippet was last modified, in ISO format." +msgstr "程式碼片段的最後修改日期及時間 (ISO 格式)。" + +#: php/rest-api/class-snippets-rest-controller.php:599 +msgid "If a network snippet, whether can be activated on discrete sites instead of network-wide." +msgstr "如果是要用於多站網路的程式碼片段,決定是執行於個別網站或整個多站網路。" + +#: php/rest-api/class-snippets-rest-controller.php:594 +msgid "Whether the snippet is network-wide instead of site-wide." +msgstr "程式碼片段執行於整個多站網路或個別網站。" + +#: php/rest-api/class-snippets-rest-controller.php:590 +msgid "Relative priority in which the snippet is executed." +msgstr "執行程式碼片段的相對優先順序。" + +#: php/rest-api/class-snippets-rest-controller.php:586 +msgid "Snippet activation status." +msgstr "程式碼片段啟用狀態。" + +#: php/rest-api/class-snippets-rest-controller.php:578 +msgid "Context in which the snippet is executable." +msgstr "程式碼片段可執行的內容。" + +#: php/rest-api/class-snippets-rest-controller.php:571 +msgid "List of tag categories the snippet belongs to." +msgstr "程式碼片段所屬的標籤清單。" + +#: php/rest-api/class-snippets-rest-controller.php:567 +msgid "Executable snippet code." +msgstr "可執行的程式碼片段程式碼。" + +#: php/rest-api/class-snippets-rest-controller.php:563 +msgid "Descriptive text associated with snippet." +msgstr "與程式碼片段相關的描述性文字。" + +#: php/rest-api/class-snippets-rest-controller.php:559 +msgid "Descriptive title for the snippet." +msgstr "程式碼片段的描述性標題。" + +#: php/rest-api/class-snippets-rest-controller.php:554 +msgid "Unique identifier for the snippet." +msgstr "程式碼片段的唯一識別碼。" + +#: php/rest-api/class-snippets-rest-controller.php:398 +msgid "The snippet could not be deactivated." +msgstr "這個程式碼片段無法停用。" + +#: php/rest-api/class-snippets-rest-controller.php:358 +msgid "The snippet could not be deleted." +msgstr "這個程式碼片段無法刪除。" + +#: php/rest-api/class-snippets-rest-controller.php:338 +msgid "The snippet could not be updated." +msgstr "這個程式碼片段無法更新。" + +#: php/rest-api/class-snippets-rest-controller.php:323 +msgid "Cannot update a snippet without a valid ID." +msgstr "無法更新沒有有效 ID 的程式碼片段。" + +#: php/rest-api/class-snippets-rest-controller.php:304 +msgid "The snippet could not be created." +msgstr "無法新增程式碼片段。" + +#: php/rest-api/class-snippets-rest-controller.php:280 +msgid "The snippet could not be found." +msgstr "找不到符合條件的程式碼片段。" + +#: php/views/manage.php:90 +msgid "Script snippets are loaded on the site front-end in a JavaScript file, either in the head or body sections." +msgstr "指令碼程式碼片段會以 JavaScript 檔案的方式在網站前端的 head 或 body 標籤區段中載入。" + +#: php/views/manage.php:85 +msgid "Style snippets are written in CSS and loaded in the admin area or on the site front-end, just like the theme style.css." +msgstr "樣式程式碼片段會以 CSS 的方式 (類似佈景主題的 style.css) 在網站管理區域或網站前端載入。" + +#: php/class-list-table.php:536 dist/edit.js:2 +msgid "Export Code" +msgstr "匯出程式碼" + +#: php/class-admin.php:189 +msgid "Join our community on Facebook" +msgstr "加入我們在 Facebook 上的社群" + +#: php/admin-menus/class-edit-menu.php:118 +msgid "Loading edit page…" +msgstr "正在載入編輯頁面..." + +#: php/views/partials/list-table.php:22 +msgid "Search Snippets" +msgstr "搜尋程式碼片段" + +#: php/views/manage.php:23 dist/import.js:2 +msgid "All Snippets" +msgstr "全部程式碼片段" + +#: php/settings/settings-fields.php:236 +msgid "Highlight the line that is currently being edited." +msgstr "為目前編輯的內容行進行醒目提示" + +#: php/settings/settings-fields.php:235 +msgid "Highlight Active Line" +msgstr "編輯行顯示醒目提示" + +#: php/settings/settings-fields.php:146 +msgid "Modified (oldest first)" +msgstr "修改日期 (最舊的在前)" + +#: php/settings/settings-fields.php:145 +msgid "Modified (latest first)" +msgstr "修改日期 (最新的在前)" + +#: php/settings/settings-fields.php:144 +msgid "Name (Z-A)" +msgstr "名稱 (Z-A 遞減排序)" + +#: php/settings/settings-fields.php:143 +msgid "Name (A-Z)" +msgstr "名稱 (A-Z 遞增排序)" + +#: php/settings/settings-fields.php:140 +msgid "Default way to order snippets on the All Snippets admin menu." +msgstr "在 [全部程式碼片段] 頁面的程式碼片段預設排序方式。" + +#: php/settings/settings-fields.php:138 +msgid "Snippets List Order" +msgstr "程式碼片段清單順序" + +#: php/front-end/mce-strings.php:28 +msgid "Show line numbers" +msgstr "顯示行號" + +#: php/front-end/mce-strings.php:27 +msgid "Insert Snippet Source" +msgstr "插入程式碼片段原始程式碼" + +#: php/front-end/mce-strings.php:26 +msgid "Snippet Source Code" +msgstr "程式碼片段原始程式碼" + +#: php/front-end/mce-strings.php:24 +msgid "Enable shortcodes" +msgstr "啟用短代碼功能" + +#: php/front-end/mce-strings.php:23 +msgid "Apply formatting" +msgstr "套用格式化" + +#: php/front-end/mce-strings.php:22 +msgid "Run PHP code" +msgstr "執行 PHP 程式碼" + +#: php/front-end/mce-strings.php:21 +msgid "Snippet" +msgstr "程式碼片段" + +#: php/front-end/mce-strings.php:20 +msgid "Insert Content Snippet" +msgstr "插入內容程式碼片段" + +#: php/front-end/mce-strings.php:19 +msgid "Content Snippet" +msgstr "內容程式碼片段" + +#. translators: 1: snippet name, 2: snippet edit link +#: php/front-end/class-front-end.php:369 +msgid "%1$s is currently inactive. You can edit this snippet to activate it and make it visible. This message will not appear in the published post." +msgstr "[%1$s] 目前為非使用狀態。網站管理員可以編輯這個程式碼片段以啟用並顯示對應的內容。這個訊息不會顯示在已發佈的內容中。" + +#. translators: %d: snippet ID. +#: php/front-end/class-front-end.php:207 +msgid "Could not load snippet with an invalid ID: %d." +msgstr "無法載入無效 ID 的程式碼片段。無效 ID: %d。" + +#: php/class-upgrade.php:213 +msgid "Shortcode for inserting the current year into a post or page.." +msgstr "在文章或頁面中使用這個短代碼便能插入目前年份。" + +#: php/class-upgrade.php:211 +msgid "Current year" +msgstr "目前年份" + +#: php/class-upgrade.php:207 +msgid "Allows smiley conversion in obscure places." +msgstr "在網站中的幾個小地方允許表情文字轉換成表情符號圖片。" + +#: php/class-upgrade.php:205 +msgid "Allow smilies" +msgstr "允許表情文字轉換" + +#: php/class-upgrade.php:200 +msgid "Turns off the WordPress admin bar for everyone except administrators." +msgstr "停用除了網站管理員外全部使用者的 WordPress 工具列。" + +#: php/class-upgrade.php:198 +msgid "Disable admin bar" +msgstr "停用工具列" + +#: php/class-upgrade.php:194 +msgid "Makes sure that image and file uploads have lowercase filenames." +msgstr "將上傳的圖片及檔案的檔案名稱變更為小寫字元。" + +#: php/class-upgrade.php:192 +msgid "Make upload filenames lowercase" +msgstr "將上傳檔案的檔案名稱變更為全部小寫字元" + +#: php/class-upgrade.php:188 +msgid "This is a sample snippet. Feel free to use it, edit it, or remove it." +msgstr "這是範例程式碼片段,隨時都可以使用、編輯或移除它。" + +#: php/class-snippet.php:355 +msgid "Front-end styles" +msgstr "前端樣式" + +#: php/class-snippet.php:353 +msgid "Admin styles" +msgstr "管理後台樣式" + +#: php/class-snippet.php:351 +msgid "Footer content" +msgstr "footer 標籤內容" + +#: php/class-snippet.php:349 +msgid "Head content" +msgstr "head 標籤內容" + +#: php/class-snippet.php:345 +msgid "Single-use function" +msgstr "僅執行一次的函式" + +#: php/class-snippet.php:343 +msgid "Front-end function" +msgstr "前端函式" + +#: php/class-snippet.php:341 +msgid "Admin function" +msgstr "管理後台函式" + +#: php/class-snippet.php:339 +msgid "Global function" +msgstr "全域函式" + +#: php/class-plugin.php:396 dist/edit.js:2 +msgid "Scripts" +msgstr "指令碼" + +#: php/class-plugin.php:395 dist/edit.js:2 +msgid "Styles" +msgstr "樣式" + +#: php/views/manage.php:80 +msgid "Content snippets are bits of reusable PHP and HTML content that can be inserted into posts and pages." +msgstr "內容程式碼片段是可重複使用、可插入至文章或頁面的 PHP 及 HTML 內容。" + +#: php/views/manage.php:75 +msgid "Function snippets are run on your site as if there were in a plugin or theme functions.php file." +msgstr "函式程式碼片段在網站上的執行方式與外掛或佈景主題的 functions.php 檔案一樣。" + +#: php/class-plugin.php:394 php/class-snippet.php:347 dist/edit.js:2 +msgid "Content" +msgstr "內容" + +#: php/class-plugin.php:393 dist/edit.js:2 +msgid "Functions" +msgstr "函式" + +#. translators: %s: snippet title. +#: php/class-list-table.php:1512 +msgid "%s [CLONE]" +msgstr "%s - 再製" + +#: php/class-list-table.php:1025 +msgid "It looks like you don't have any snippets of this type." +msgstr "找不到符合這個類型條件的程式碼片段。" + +#: php/class-list-table.php:477 dist/import.js:2 +msgid "Type" +msgstr "類型" + +#: php/class-contextual-help.php:144 +msgid "If something goes wrong with a snippet, and you can't use WordPress, you can cause all snippets to stop executing by turning on safe mode." +msgstr "如果執行程式碼片段發生錯誤,並且無法再使用 WordPress 網站,請開啟安全模式停用全部程式碼片段。" + +#: php/class-admin.php:241 +msgid "Active Snippets" +msgstr "已啟用的程式碼片段" + +#. translators: %s: formatted last modified date +#: php/class-admin.php:224 +msgid "Last modified %s" +msgstr "最後修改日期: %s" + +#: php/admin-menus/class-manage-menu.php:94 +#: php/admin-menus/class-welcome-menu.php:82 php/class-admin.php:155 +msgid "Upgrade to Pro" +msgstr "升級至 Pro 版" + +#: php/class-admin.php:154 +msgid "Upgrade to Code Snippets Pro" +msgstr "升級至 Code Snippets Pro" + +#: php/class-admin.php:183 +msgid "Find out how to get support with Code Snippets" +msgstr "進一步了解取得 Code Snippets 技術支援的方式" + +#: php/class-admin.php:137 +msgid "Change plugin settings" +msgstr "變更外掛設定" + +#. translators: %s: Update PHP URL. +#: php/deactivation-notice.php:40 +msgid "Please upgrade your server to the latest version of PHP to continue using Code Snippets." +msgstr "請將這台伺服器升級至最新版 PHP 執行環境以繼續使用 Code Snippets 外掛。" + +#. translators: %s: required PHP version number. +#: php/deactivation-notice.php:32 +msgid "Code Snippets requires PHP %s or later." +msgstr "Code Snippets 需要 PHP %s 或更新版本。" + +#: php/deactivation-notice.php:50 +msgid "Another version of Code Snippets appears to be installed. Deactivating this version." +msgstr "已安裝其他版本的 Code Snippets 外掛。請停用這個版本的外掛。" + +#. translators: %s: PHP identifier name +#: php/class-validator.php:220 +msgid "Cannot redeclare %s." +msgstr "無法重新宣告 %s。" + +#. translators: %s: PHP interface name +#: php/class-validator.php:216 +msgid "Cannot redeclare interface %s." +msgstr "無法重新宣告 %s 介面。" + +#. translators: %s: PHP class name +#: php/class-validator.php:212 +msgid "Cannot redeclare class %s." +msgstr "無法重新宣告 %s 類別。" + +#. translators: %s: PHP function name +#: php/class-validator.php:208 +msgid "Cannot redeclare function %s." +msgstr "無法重新宣告 %s 函式。" + +#: php/class-validator.php:195 php/class-validator.php:258 +msgid "Parse error: syntax error, unexpected end of snippet." +msgstr "剖析錯誤: 語法錯誤,程式碼片段未預期的結束。" + +#. translators: 1: search query, 2: line number. +#: php/class-list-table.php:1450 +msgid " for “%1$s” on line %2$d" +msgstr "「%1$s」的搜尋結果 (第 %2$d 行)" + +#: php/class-list-table.php:1017 +msgid "No snippets were found matching the current search query. Please enter a new query or use the \"Clear Filters\" button above." +msgstr "找不到符合目前搜尋查詢條件的程式碼片段。請輸入新的查詢條件或使用上方 [清除篩選條件] 按鈕。" + +#: php/class-list-table.php:480 +msgid "Modified" +msgstr "修改日期" + +#. translators: 1: date format, 2: time format. +#: php/class-snippet.php:469 +msgctxt "date and time format" +msgid "%1$s at %2$s" +msgstr "%1$s%2$s" + +#: php/class-snippet.php:461 +msgid "Y/m/d" +msgstr "Y 年 n 月 j 日" + +#. translators: %s: Human-readable time difference. +#: php/class-snippet.php:459 php/cloud/class-cloud-search-list-table.php:230 +msgid "%s ago" +msgstr "%s前" + +#: php/class-contextual-help.php:186 +msgid "Here you can load snippets from a code snippets export file into the database alongside existing snippets." +msgstr "這個畫面可以讓網站管理員載入 Code Snippets 外掛的資料匯出檔,將現有的程式碼片段匯入至資料庫中。" + +#: php/class-contextual-help.php:160 +msgid "Here you can add a new snippet, or edit an existing one." +msgstr "這個畫面可以讓網站管理員新增程式碼片段,或編輯現有的程式碼片段。" + +#: php/class-contextual-help.php:136 +msgid "Here you can manage your existing snippets and perform tasks on them such as activating, deactivating, deleting and exporting." +msgstr "這個畫面可以讓網站管理員管理現有的程式碼片段,並對這些程式碼片段進行啟用、停用、刪除及匯出等多項操作。" + +#: php/class-contextual-help.php:125 +msgid "Snippets are similar to plugins - they both extend and expand the functionality of WordPress. Snippets are more light-weight, just a few lines of code, and do not put as much load on your server. " +msgstr "程式碼片段與外掛功能相似,他們都擴充了 WordPress 的功能。程式碼片段更加輕量化,往往僅有幾行程式碼,因此不會為網站伺服器帶來太多的負載。" + +#: php/admin-menus/class-edit-menu.php:38 +msgctxt "menu label" +msgid "Edit Snippet" +msgstr "編輯程式碼片段" + +#. Plugin URI of the plugin +#. Author URI of the plugin +#: code-snippets.php +msgid "https://codesnippets.pro" +msgstr "https://codesnippets.pro" + +#. Author of the plugin +#: code-snippets.php +msgid "Code Snippets Pro" +msgstr "Code Snippets Pro" + +#. translators: %s: tag name. +#: php/class-list-table.php:1466 +msgid " in tag “%s”" +msgstr "標籤為〈%s〉的搜尋結果" + +#. translators: %s: search query. +#: php/class-list-table.php:1459 +msgid " for “%s”" +msgstr "「%s」的搜尋結果" + +#: php/class-list-table.php:1023 +msgid "It looks like you don't have any snippets." +msgstr "找不到符合條件的程式碼片段。" + +#: php/class-list-table.php:297 php/class-list-table.php:535 +msgid "Clone" +msgstr "再製" + +#: php/admin-menus/class-admin-menu.php:180 +msgctxt "snippets" +msgid "Import" +msgstr "匯入" + +#: php/admin-menus/class-admin-menu.php:183 +msgctxt "snippets" +msgid "Settings" +msgstr "設定" + +#: php/admin-menus/class-admin-menu.php:174 +#: php/admin-menus/class-settings-menu.php:114 +msgctxt "snippets" +msgid "Manage" +msgstr "管理" + +#: php/views/partials/list-table-notices.php:60 +msgid "Selected snippets cloned." +msgstr "選取的程式碼片段已再製。" + +#: php/views/partials/list-table-notices.php:59 +msgid "Snippet cloned." +msgstr "程式碼片段已再製。" + +#: php/admin-menus/class-manage-menu.php:155 +msgctxt "tools submenu label" +msgid "Snippets" +msgstr "程式碼片段" + +#: php/class-list-table.php:481 php/settings/settings-fields.php:142 +#: dist/edit.js:2 +msgid "Priority" +msgstr "優先順序" + +#: php/settings/settings-fields.php:168 +msgid "When the plugin is deleted from the Plugins menu, also delete all snippets and plugin settings." +msgstr "在 [外掛] 選單中刪除這個外掛時,同時在資料庫中刪除全部程式碼片段及外掛設定" + +#: php/settings/settings-fields.php:166 +msgid "Complete Uninstall" +msgstr "完整解除安裝" + +#: php/cloud/list-table-shared-ops.php:126 +#: php/cloud/list-table-shared-ops.php:132 +msgid "Download" +msgstr "下載" + +#: php/class-list-table.php:342 +msgid "Run Once" +msgstr "執行一次" + +#: php/class-admin.php:88 +msgid "Snippets » Settings" +msgstr "程式碼片段 » 設定" + +#: php/admin-menus/class-settings-menu.php:144 +msgid "Reset to Default" +msgstr "重設為預設值" + +#: php/settings/settings.php:264 +msgid "All settings have been reset to their defaults." +msgstr "全部設定已重設為預設值。" + +#: php/views/partials/list-table-notices.php:48 +msgid "Snippet executed." +msgstr "程式碼片段已執行。" + +#: php/class-list-table.php:1032 +msgid "Perhaps you would like to add a new one?" +msgstr "請新增新的程式碼片段" + +#: php/class-list-table.php:290 +msgid "Network Only" +msgstr "僅能由多站網路管理員啟用" + +#: php/class-list-table.php:288 +msgid "Network Active" +msgstr "已於多站網路中啟用" + +#. Description of the plugin +#: code-snippets.php +msgid "An easy, clean and simple way to run code snippets on your site. No need to edit to your theme's functions.php file again!" +msgstr "透過易用、簡潔的方式在網站中執行程式碼片段,這樣便不再需要編輯佈景主題的 functions.php 檔案。" + +#: php/admin-menus/class-admin-menu.php:177 +#: php/admin-menus/class-settings-menu.php:115 dist/edit.js:2 +msgctxt "snippet" +msgid "Add New" +msgstr "新增程式碼片段" + +#: php/admin-menus/class-settings-menu.php:220 php/settings/settings.php:343 +msgid "Settings saved." +msgstr "設定已儲存。" + +#: php/settings/settings.php:194 +msgid "Editor Preview" +msgstr "編輯器預覽" + +#: php/settings/settings.php:141 +msgid "Code Editor" +msgstr "程式碼編輯器" + +#: php/settings/settings.php:140 +msgid "General" +msgstr "一般" + +#: php/settings/settings-fields.php:230 +msgid "Highlight all instances of a currently selected word." +msgstr "程式碼片段的字詞如與選取字詞相符,即以醒目提示方式顯示" + +#: php/settings/settings-fields.php:229 +msgid "Highlight Selection Matches" +msgstr "符合選取項目顯示醒目提示" + +#: php/settings/settings-fields.php:225 +msgid "Auto-close brackets and quotes when typed." +msgstr "輸入程式碼時自動關閉括號及引號" + +#: php/settings/settings-fields.php:223 +msgid "Auto Close Brackets" +msgstr "自動關閉括號" + +#: php/settings/settings-fields.php:219 +msgid "Show line numbers to the left of the editor." +msgstr "在編輯器左側顯示行號" + +#: php/settings/settings-fields.php:217 +msgid "Line Numbers" +msgstr "行號" + +#: php/settings/settings-fields.php:204 +msgid "Wrap Lines" +msgstr "自動換行" + +#: php/settings/settings-fields.php:188 +msgid "Indent Unit" +msgstr "縮排單位" + +#: php/settings/settings-fields.php:182 +msgid "The width of a tab character." +msgstr "設定 Tab 定位字元的寬度。" + +#: php/settings/settings-fields.php:180 +msgid "Tab Size" +msgstr "Tab 定位字元寬度" + +#: php/settings/settings-fields.php:176 +msgid "Use hard tabs instead of spaces for indentation." +msgstr "使用 Tab 定位字元 (不使用空格) 進行縮排" + +#: php/settings/settings-fields.php:174 +msgid "Indent With Tabs" +msgstr "使用 Tab 定位字元進行縮排" + +#: php/settings/settings-fields.php:253 +msgid "Theme" +msgstr "外觀樣式" + +#: php/settings/settings-fields.php:129 +msgid "Show snippet descriptions on admin pages." +msgstr "在外掛管理頁面顯示程式碼片段用途說明" + +#: php/settings/settings-fields.php:127 +msgid "Enable Snippet Descriptions" +msgstr "啟用程式碼片段用途說明" + +#: php/settings/settings-fields.php:124 +msgid "Show snippet tags on admin pages." +msgstr "在外掛管理頁面顯示程式碼片段標籤" + +#: php/settings/settings-fields.php:122 +msgid "Enable Snippet Tags" +msgstr "啟用程式碼片段標籤" + +#: php/settings/settings-fields.php:119 +msgid "Make the 'Save and Activate' button the default action when saving a snippet." +msgstr "將 [儲存設定並啟用] 按鈕設定為儲存程式碼片段的預設操作按鈕" + +#: php/settings/settings-fields.php:117 +msgid "Activate by Default" +msgstr "預設啟用程式碼片段" + +#: php/class-list-table.php:1475 +msgid "Clear Filters" +msgstr "清除篩選條件" + +#: php/class-list-table.php:1442 +msgid "Search results" +msgstr "搜尋結果: " + +#: php/class-list-table.php:738 +msgid "Clear List" +msgstr "清除清單" + +#: php/class-list-table.php:730 +msgid "Filter" +msgstr "篩選" + +#: php/class-list-table.php:715 +msgid "Show all tags" +msgstr "顯示全部標籤" + +#. translators: %s: total number of recently activated snippets. +#: php/class-list-table.php:608 +msgid "Recently Active (%s)" +msgid_plural "Recently Active (%s)" +msgstr[0] "近 7 日內停用 (%s)" + +#. translators: %s: total number of inactive snippets. +#: php/class-list-table.php:598 +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "未啟用 (%s)" + +#. translators: %s: total number of active snippets. +#: php/class-list-table.php:588 +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "已啟用 (%s)" + +#. translators: %s: total number of snippets. +#: php/class-list-table.php:578 +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "全部 (%s)" + +#: php/class-list-table.php:482 dist/import.js:2 +msgid "ID" +msgstr "ID" + +#: php/class-list-table.php:476 dist/edit.js:2 dist/import.js:2 +msgid "Name" +msgstr "程式碼片段名稱" + +#: php/class-list-table.php:281 +msgid "'Cancel' to stop, 'OK' to delete." +msgstr "點擊 [取消] 以停止操作,點擊 [確定] 以進行刪除。" + +#: php/class-list-table.php:280 +msgid "You are about to permanently delete the selected item." +msgstr "這項操作會永久刪除選取項目。" + +#: php/class-list-table.php:298 php/class-list-table.php:537 dist/edit.js:2 +msgid "Export" +msgstr "匯出" + +#: php/class-list-table.php:259 php/class-list-table.php:296 +msgid "Edit" +msgstr "編輯" + +#: php/class-list-table.php:361 php/class-list-table.php:533 dist/manage.js:2 +msgid "Activate" +msgstr "啟用" + +#: php/class-list-table.php:360 php/class-list-table.php:533 +msgid "Network Activate" +msgstr "於多站網路中啟用" + +#: php/class-list-table.php:361 php/class-list-table.php:534 dist/manage.js:2 +msgid "Deactivate" +msgstr "停用" + +#: php/class-list-table.php:360 php/class-list-table.php:534 +msgid "Network Deactivate" +msgstr "於多站網路中停用" + +#: php/class-list-table.php:90 +msgid "Snippets per page" +msgstr "每頁顯示程式碼片段數量" + +#. translators: %s: URL to Manage Snippets admin menu +#: php/class-contextual-help.php:201 +msgid "You can save your snippets to a code snippets export file using the Manage Snippets page." +msgstr "網站管理員可以透過 [管理程式碼片段] 頁面,將程式碼片段儲存為 Code Snippets 外掛的資料匯出檔。" + +#: php/class-contextual-help.php:199 +msgid "Exporting" +msgstr "匯出" + +#. translators: %s: URL to Snippets admin menu +#: php/class-contextual-help.php:194 +msgid "Imported snippets will be added to the database along with your existing snippets. Regardless of whether the snippets were active on the previous site, imported snippets are always inactive until activated using the Manage Snippets page." +msgstr "匯入的程式碼片段會新增至包含現有程式碼片段的資料庫中。無論這些匯入的程式碼片段在之前的網站是否啟用,匯入的程式碼片段在 [管理程式碼片段] 頁面中啟用前均為未啟用狀態。" + +#: php/class-contextual-help.php:192 +msgid "You can load your snippets from a code snippets export file using this page." +msgstr "這個畫面可以讓網站管理員從 Code Snippets 的資料匯出檔載入程式碼片段。" + +#: php/class-contextual-help.php:191 +msgid "Importing" +msgstr "匯入" + +#: php/class-contextual-help.php:171 +msgid "Please be sure to check that your snippet is valid PHP code and will not produce errors before adding it through this page. While doing so will not become active straight away, it will help to minimize the chance of a faulty snippet becoming active on your site." +msgstr "請在透過這個頁面新增程式碼片段前,務必檢查要新增的程式碼片段是否為有效、不會產生錯誤的 PHP 程式碼。這麼做雖然無法避開全部問題程式碼產生的錯誤,但確實有助於大幅降低不良的程式碼片段啟用於網站後造成錯誤的可能性。" + +#: php/class-contextual-help.php:170 +msgid "You need to fill out the name and code fields for your snippet to be added. While the description field will add more information about how your snippet works, what is does and where you found it, it is completely optional." +msgstr "新增程式碼片段必須填寫 [程式碼片段名稱] 及 [程式碼] 欄位。[用途說明] 欄位雖為選填,但可以加入程式碼片段執行方式、執行效果及相關出處的詳細資訊。" + +#: php/class-contextual-help.php:168 +msgid "Adding Snippets" +msgstr "新增程式碼片段" + +#: php/class-contextual-help.php:143 +msgid "Be sure to check your snippets for errors before you activate them, as a faulty snippet could bring your whole blog down. If your site starts doing strange things, deactivate all your snippets and activate them one at a time." +msgstr "在啟用任何程式碼片段前,請檢查他們是否還有錯誤;一旦啟用含有錯誤的程式碼片段,有可能會導致整個網站停擺。如果這個網站因為啟用的程式碼片段造成不正常的狀況,請先停用全部程式碼片段,然後一次啟用一個進行偵錯。" + +#: php/class-contextual-help.php:141 +msgid "Safe Mode" +msgstr "安全模式" + +#: php/class-contextual-help.php:134 php/class-contextual-help.php:157 +#: php/class-contextual-help.php:184 +msgid "Overview" +msgstr "概觀" + +#: php/class-contextual-help.php:72 +msgid "Plugin Website" +msgstr "外掛網站" + +#: php/class-contextual-help.php:71 +msgid "Support Forum" +msgstr "技術支援論壇" + +#: php/class-contextual-help.php:70 +msgid "FAQ" +msgstr "常見問題集" + +#: php/class-contextual-help.php:69 +msgid "About Plugin" +msgstr "關於這個外掛" + +#: php/class-contextual-help.php:81 +msgid "For more information:" +msgstr "進一步了解相關資訊:" + +#: php/class-admin.php:324 +msgid "Dismiss" +msgstr "關閉" + +#: php/class-admin.php:302 +msgid "Take the survey now" +msgstr "立即填寫問卷" + +#: php/class-admin.php:303 +msgid "Have feedback on Code Snippets? Please take the time to answer a short survey on how you use this plugin and what you'd like to see changed or added in the future." +msgstr "如果對 Code Snippets 有任何意見反應,請撥冗回答你對這個外掛的使用方式,以及希望將來加強或新增哪些功能的簡短問卷。" + +#: php/admin-menus/class-welcome-menu.php:64 +msgid "Support" +msgstr "技術支援" + +#: php/class-admin.php:143 +msgid "Manage your existing snippets" +msgstr "管理這個網站現有的程式碼片段" + +#: php/admin-menus/class-settings-menu.php:110 php/class-admin.php:138 +msgid "Settings" +msgstr "設定" + +#: php/admin-menus/class-settings-menu.php:30 +msgid "Snippets Settings" +msgstr "程式碼片段設定" + +#: php/admin-menus/class-settings-menu.php:29 +msgctxt "menu label" +msgid "Settings" +msgstr "設定" + +#: php/views/partials/list-table-notices.php:58 +msgid "Selected snippets restored." +msgstr "選取的程式碼片段已還原。" + +#: php/views/partials/list-table-notices.php:57 +msgid "Snippet restored." +msgstr "程式碼片段已還原。" + +#: php/views/partials/list-table-notices.php:52 +msgid "Selected snippets deactivated." +msgstr "選取的程式碼片段已停用。" + +#: php/views/partials/list-table-notices.php:51 +msgid "Snippet deactivated." +msgstr "程式碼片段已停用。" + +#: php/views/partials/list-table-notices.php:50 +msgid "Selected snippets activated." +msgstr "選取的程式碼片段已啟用。" + +#: php/views/partials/list-table-notices.php:49 +msgid "Snippet activated." +msgstr "程式碼片段已啟用。" + +#: php/admin-menus/class-manage-menu.php:64 +msgctxt "top-level menu label" +msgid "Snippets" +msgstr "程式碼片段" + +#: php/admin-menus/class-manage-menu.php:37 +#: php/admin-menus/class-manage-menu.php:63 +#: php/admin-menus/class-manage-menu.php:154 php/class-admin.php:87 +#: php/class-admin.php:110 php/class-admin.php:144 php/views/manage.php:46 +msgid "Snippets" +msgstr "程式碼片段" + +#: php/admin-menus/class-manage-menu.php:36 +msgctxt "menu label" +msgid "All Snippets" +msgstr "全部程式碼片段" + +#: php/admin-menus/class-import-menu.php:57 +msgid "Import snippets from a code snippets export file" +msgstr "從 Code Snippets 資料匯出檔匯入程式碼片段。" + +#. Plugin Name of the plugin +#: code-snippets.php php/admin-menus/class-import-menu.php:56 +msgid "Code Snippets" +msgstr "Code Snippets" + +#: php/admin-menus/class-import-menu.php:20 php/views/import.php:27 +#: dist/import.js:2 +msgid "Import Snippets" +msgstr "匯入程式碼片段" + +#: php/admin-menus/class-import-menu.php:19 +msgctxt "menu label" +msgid "Import" +msgstr "匯入" + +#: php/class-list-table.php:479 dist/import.js:2 +msgid "Tags" +msgstr "標籤" + +#: php/class-list-table.php:478 dist/edit.js:2 dist/import.js:2 +msgid "Description" +msgstr "用途說明" + +#: php/admin-menus/class-edit-menu.php:69 +msgctxt "menu label" +msgid "Add New" +msgstr "新增程式碼片段" + +#: php/admin-menus/class-edit-menu.php:39 dist/edit.js:2 +msgid "Edit Snippet" +msgstr "編輯程式碼片段" + +#: php/admin-menus/class-admin-menu.php:131 +msgid "You are not authorized to access this page." +msgstr "目前的登入身分沒有存取這個頁面的權限。" \ No newline at end of file diff --git a/languages/plugins/hello-dolly-zh_TW.mo b/languages/plugins/hello-dolly-zh_TW.mo new file mode 100644 index 0000000..0975a14 Binary files /dev/null and b/languages/plugins/hello-dolly-zh_TW.mo differ diff --git a/languages/plugins/hello-dolly-zh_TW.po b/languages/plugins/hello-dolly-zh_TW.po new file mode 100644 index 0000000..74ef4ca --- /dev/null +++ b/languages/plugins/hello-dolly-zh_TW.po @@ -0,0 +1,32 @@ +# Translation of Plugins - Hello Dolly - Stable (latest release) in Chinese (Taiwan) +# This file is distributed under the same license as the Plugins - Hello Dolly - Stable (latest release) package. +msgid "" +msgstr "" +"PO-Revision-Date: 2019-04-03 10:42:20+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/2.4.0-alpha\n" +"Language: zh_TW\n" +"Project-Id-Version: Plugins - Hello Dolly - Stable (latest release)\n" + +#. Author URI of the plugin +msgid "https://ma.tt/" +msgstr "https://ma.tt/" + +#. Author of the plugin +msgid "Matt Mullenweg" +msgstr "Matt Mullenweg" + +#. Description of the plugin +msgid "This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from Hello, Dolly in the upper right of your admin screen on every page." +msgstr "Hello Dolly 不僅是一款外掛,這兩個字更是由 Louis Armstrong 演唱的著名歌曲,同時也象徵了整整一個世代的希望和熱情。啟用這個外掛後,網站管理後台各個頁面的右上角便會隨機出現〈Hello, Dolly〉這首歌曲的歌詞。" + +#. Plugin URI of the plugin +msgid "https://wordpress.org/plugins/hello-dolly/" +msgstr "https://tw.wordpress.org/plugins/hello-dolly/" + +#. Plugin Name of the plugin +msgid "Hello Dolly" +msgstr "Hello Dolly" \ No newline at end of file diff --git a/languages/plugins/wp-mail-smtp-zh_TW.l10n.php b/languages/plugins/wp-mail-smtp-zh_TW.l10n.php new file mode 100644 index 0000000..dd6198c --- /dev/null +++ b/languages/plugins/wp-mail-smtp-zh_TW.l10n.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2021-05-27 10:11:04+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'Plugins - WP Mail SMTP by WPForms – The Most Popular SMTP and Email Log Plugin - Stable (latest release)','language'=>'zh_TW','messages'=>['Tools'=>'工具','Unable to create directory %s. Is its parent directory writable by the server?'=>'無法建立目錄 %s。它的上層目錄是否可由伺服器進行寫入?','Smash Balloon Facebook Feeds'=>'Smash Balloon Facebook Feeds','Smash Balloon YouTube Feeds'=>'Smash Balloon YouTube Feeds','Smash Balloon Twitter Feeds'=>'Smash Balloon Twitter Feeds','Launch Setup Wizard'=>'啟動設定精靈','SeedProd'=>'SeedProd','Smash Balloon Instagram Feeds'=>'Smash Balloon Instagram Feeds','You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook.'=>'這個網站已成功透過外掛與 Microsoft API 專案進行連結,並可開始使用 Outlook 服務傳送電子郵件。','Copy Error Log'=>'複製錯誤記錄','Copied'=>'已複製','Error Message:'=>'錯誤訊息:','%1$s, %2$s'=>'%1$s: %2$s','Continue'=>'繼續','You\'re currently using %1$sWP Mail SMTP Lite%2$s - no license needed. Enjoy!'=>'這個網站目前使用的是不需要使用授權的 %1$sWP Mail SMTP Lite%2$s,請放心使用。','The following plugin will be installed for free: WPForms'=>'指定外掛將會免費安裝: WPForms','Return to Plugin Settings'=>'返回外掛設定','Please fill out all the required fields to continue.'=>'請填寫全部必填欄位以繼續。','Enable Auto TLS'=>'啟用自動 TLS','I\'ll do it later'=>'稍後完成','Verify License Key'=>'驗證授權金鑰','Yikes! WordPress Update Required'=>'請注意,WordPress 必須更新','Settings Updated'=>'設定已更新','Could Not Save Changes'=>'無法儲存變更','Return to Mailer Settings'=>'返回郵件程式設定','Welcome to the WP Mail SMTP Setup Wizard!'=>'歡迎使用 WP Mail SMTP 設定精靈','Close and exit the Setup Wizard'=>'關閉並離開設定精靈','Import Data and Continue'=>'匯入資料並繼續','Skip this Step'=>'略過這個步驟','Previous Step'=>'上一步','Easy WP SMTP'=>'Easy WP SMTP','SMTP Mailer'=>'SMTP 郵件程式','WP SMTP'=>'WP SMTP','Redirect URI'=>'重新導向 URI','Authorized Redirect URI'=>'已授權的重新導向 URI','Access Key ID'=>'存取金鑰 ID','Secret Access Key'=>'私密存取金鑰','Copied!'=>'已完成複製!','Verify Email'=>'驗證電子郵件地址','Resend'=>'重新傳送','Please enter a valid email address'=>'請輸入有效的電子郵件地址','Post SMTP Mailer'=>'Post SMTP Mailer','Start Troubleshooting'=>'開始疑難排解','is a PRO Feature'=>'為 Pro 版專屬功能','Yikes! PHP Update Required'=>'請注意,PHP 必須更新','Go back to the Dashboard'=>'返回 [控制台]','Connect'=>'連線','Setup Wizard'=>'設定精靈','Contact Us'=>'聯絡我們','All in One SEO'=>'All in One SEO','Smash Balloon Social Photo Feed'=>'Smash Balloon Social Photo Feed','Paste license key here'=>'請在這裡貼上授權金鑰','Invalid SendGrid API key'=>'無效的 SendGrid API 金鑰','Save the plugin settings.'=>'儲存外掛設定。','OK'=>'確定','Almost Done'=>'即將完成','Oops!'=>'很抱歉!','Multisite'=>'多站網路','Simply enable network-wide settings and every site on your network will inherit the same SMTP settings. Save time and only configure your SMTP provider once.'=>'為整個多站網路啟用外掛設定,多站網路中的每個網站便會繼承相同的 SMTP 設定。這能節省設定時間並僅需設定一次 SMTP 服務提供商。','Settings control'=>'設定控制','Make the plugin settings global network-wide'=>'將外掛設定套用至整個多站網路','If disabled, each subsite of this multisite will have its own WP Mail SMTP settings page that has to be configured separately.'=>'停用這項設定後,這個多站網路的每個子網站便會有可進行專屬設定的獨立 WP Mail SMTP 設定頁。','If enabled, these global settings will manage email sending for all subsites of this multisite.'=>'啟用這項設定後,這些全域設定便會控管這個多站網路的全部子網站的電子郵件傳送。','Please make sure your Google Client ID and Secret in the plugin settings are valid. Save the settings and try the Authorization again.'=>'請確認在外掛設定中的用戶端 ID 及密碼為有效資料。請儲存設定並再嘗試授權。','The response object is invalid (missing getId method).'=>'無效的回應物件 (缺少 getId 方法)。','The email message ID is missing.'=>'缺少電子郵件訊息 ID。','The password is encrypted in the database, but for improved security we recommend using your site\'s WordPress configuration file to set your password.'=>'在這個欄位中所輸入的密碼,會以加密方式儲存於資料庫。建議網站管理員將密碼設定於 WordPress 組態檔中,以提高安全性。','Pro+ badge icon'=>'Pro+ 徽章圖示','Loading'=>'正在載入','Optionally configure settings at the network level or manage separately for each subsite'=>'選用組態設定可在多站網路層級進行,或在個別網站獨立管理','All Global Network Settings'=>'全部多站網路全域設定','No Global Network Settings'=>'沒有多站網路全域設定','Microsoft Outlook (with Office365 support), Amazon SES and Zoho Mail'=>'Microsoft Outlook (同時支援 Office 365)、 Amazon SES 及 Zoho Mail','Additional Mailer Options'=>'額外的郵件程式選項','Access is limited to standard mailer options only'=>'僅能存取有限的標準郵件程式','Limited Mailers'=>'有限的郵件程式','Access to all Email Logging options right inside WordPress'=>'存取 WordPress 網站內全部電子郵件記錄選項','WordPress Multisite'=>'WordPress 多站網路','Mailer Options'=>'郵件程式選項','None selected'=>'尚未選取','M j, Y @ g:ia'=>'Y 年 n 月 j 日a g:i','Lite install date'=>'Lite 版安裝日期','We\'re sorry, the Zoho Mail mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features.'=>'很抱歉,目前使用的版本不提供 Zoho Mail 郵件程式。請升級至 Pro 版,以取得全部強大的功能。','Zoho Mail'=>'Zoho Mail','Dismiss this message.'=>'關閉這項訊息','By allowing us to track usage data we can better help you because we know with which WordPress configurations, themes and plugins we should test.'=>'允許系統追蹤使用方式資料後,開發團隊便能收到這個 WordPress 網站的組態、佈景主題及外掛並進行測試,以提供使用者更進一步的協助。','Allow Usage Tracking'=>'允許追蹤使用方式','Next message'=>'下一則訊息','Previous message'=>'前一則訊息','Dismiss this message'=>'關閉這項訊息','Plugin icon'=>'外掛圖示','Missing table: %s'=>'找不到的資料表: %s','WP Mail SMTP DB tables check has failed'=>'WP Mail SMTP 資料庫資料表檢查失敗','WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it looks like they exist in your database.'=>'WP Mail SMTP 的某些功能使用自訂的資料庫資料表。為了能正常運作,必須建立自訂資料表。目前已在網站資料庫中找到這些自訂資料表。','WP Mail SMTP DB tables are created'=>'WP Mail SMTP 資料庫資料表已建立','No DB tables found.'=>'找不到找不到符合條件的資料庫資料表。','DB tables'=>'資料庫資料表','Do WP Mail SMTP DB tables exist?'=>'WP Mail SMTP 的資料庫資料表是否存在?','Error'=>'錯誤','General error'=>'一般錯誤','Heads up!'=>'注意!','Cancel'=>'取消','Warning icon'=>'警告圖示','I already did'=>'已撰寫過外掛評分','There was an error while upgrading the database. Please contact %1$s support with this information: %2$s.'=>'升級資料庫時發生錯誤。請將這裡顯示的錯誤訊息提供給 %1$s 的技術支援人員: %2$s。','

The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues.

Please consider selecting and configuring one of the other mailers.

'=>'

已選取預設 (PHP) 郵件程式。由於這個郵件程式在大多數的狀況中無法解決電子郵件傳送問題,因此不建議使用。

請考慮使用及設定其他郵件程式。

','Verify that the host\'s SSL certificate is valid.'=>'驗證主機的 SSL 憑證是否正確。','SMTP.com API Error.'=>'SMTP.com API 發生錯誤。','GuzzleHttp requirements.'=>'GuzzleHttp 環境需求。','PCRE library issue'=>'PCRE 函式庫發生問題','Are you enjoying WP Mail SMTP?'=>'WP Mail SMTP 是否對這個網站有所幫助?','Yes'=>'是','We\'re sorry to hear you aren\'t enjoying WP Mail SMTP. We would love a chance to improve. Could you take a minute and let us know what we can do better?'=>'很遺憾聽到你不喜歡 WP Mail SMTP。請給我們一個改進的機會,請花少許時間讓我們知道改進的方式。','For a quick fix, until your web hosting resolves this, you can downgrade to PHP version 7.3 on your server.'=>'如需快速修正,在網站的主機託管服務商解決這個問題前,(如果可以的話) 請先在主機伺服器上將 PHP 降級至 7.3。','They should be able to resolve this issue for you.'=>'廠商應該能為網站解決這個問題。','Contact your web hosting provider and inform them you are having issues with libpcre2 library on PHP 7.4.'=>'聯絡網站主機託管服務提供商,並通知他們目前網站遭遇 PHP 7.4 上的 libpcre2 函式庫問題。','There is a known issue with PHP version 7.4.x, when using libpcre2 library version lower than 10.33.'=>'當主機執行的 PHP 為 7.4.x 且搭配的 libpcre2 函式庫版本低於 10.33,發生這個狀況是已知問題。','It looks like your server is running PHP version 7.4.x with an outdated PCRE library (libpcre2) that has a known issue with email address validation.'=>'目前網站伺服器執行的是 PHP 7.4.x,且搭配的是會造成電子郵件地址驗證的已知問題的過期 PCRE 函式庫 (libpcre2)。','If you don\'t know how to do the above we strongly suggest contacting your hosting support and provide them the "full Error Log for debugging" below and these steps. They should be able to fix this issue for you.'=>'如果網站管理員不知道如何處理上述問題,強烈建議聯絡網站主機託管服務商的技術支援,並提供他們下方的偵錯用的完整錯誤記錄及相關步驟。他們應該能為網站修正這個問題。','(If cURL can\'t be enabled on your hosting server) Enable PHP setting: allow_url_fopen, by adding "allow_url_fopen = On" to the php.ini file (without the quotation marks)'=>'(前提: 在目前託管的伺服器上無法啟用 cURL) 啟用 PHP 設定: 如需啟用 allow_url_fopen,請在 php.ini 檔案中加入 allow_url_fopen = On。','(Recommended) Enable PHP extension: cURL, by adding "extension=curl" to the php.ini file (without the quotation marks) OR'=>'(建議設定) 啟用 PHP 擴充功能: 如需啟用 cURL,請在 php.ini 檔案中加入 extension=curl,或','Edit your php.ini file on your hosting server.'=>'編輯這個網站伺服器上的 php.ini 檔案。','GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.'=>'GuzzleHttp 需要在 ini 中針對 cURL、allow_url_fopen 進行設定,或自訂 HTTP 處理常式。','Please make sure you entered an accurate Sender Name in WP Mail SMTP plugin settings.'=>'請確認在 WP Mail SMTP 外掛設定中正確輸入 [寄件者名稱]。','Your Sender Name option is incorrect.'=>'[寄件者名稱] 設定不正確。','Contact your hosting support, show them the "full Error Log for debugging" below and share this link with them.'=>'請聯絡網站主機託管服務商的技術支援,並提供他們偵錯用的完整錯誤記錄及分享這個連結。','There are a few reasons why this is happening. It could be that the host certificate is misconfigured, or this server\'s OpenSSL is using an outdated CA bundle.'=>'發生這個狀況有幾個原因。有可能是主機憑證設定錯誤,或這個網站的伺服器使用了過期的 CA 組合套件。','This means OpenSSL on your server isn\'t able to verify the host certificate.'=>'這代表這個網站伺服器上的 OpenSSL 無法驗證主機憑證。','Misconfigured server certificate.'=>'設定錯誤的伺服器憑證。','Please read this support article if you want to enable this option using constants.'=>'如果要使用常數啟用這個功能,請閱讀這篇技術支援文章。','Then click the “Allow plugin to send emails using your Google account” button and re-enable access.'=>'然後點擊 [授予外掛使用 Google 帳戶傳送電子郵件的權限]','Please re-grant Google app permissions!'=>'請重新授予 Google 應用程式權限。','No thanks'=>'不用了,謝謝','If you\'d prefer not to set up SSL, or need an SMTP solution in the meantime, please select a different mailer option.'=>'如果不想設定 SSL,或現在需要 SMTP 解決方案,就必須選取不同的郵件程式。','%s requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out WPBeginner\'s tutorial on how to set up SSL.'=>'%s 需要網站已安裝正確的 SSL 憑證,因此這個網站無法使用這項服務。請聯絡網站主機託管服務提供商並要求他們為網站安裝 SSL 憑證,或參考 WPBeginner 的〈如何設定 SSL 教學〉。','Learn More'=>'進一步了解','Get Started with Pepipost'=>'開始使用 Pepipost','Get Started with SMTP.com'=>'開始使用 SMTP.com','SMTP.com'=>'SMTP.com','Follow this link to get an API Key from SMTP.com: %s.'=>'請依照〈%s〉中的指示,從 SMTP.com 取得 API 金鑰。','Get API Key'=>'取得 API 金鑰','Sender Name'=>'寄件者名稱','Follow this link to get a Sender Name from SMTP.com: %s.'=>'請依照〈%s〉中的指示,從 SMTP.com 取得寄件者名稱。','Get Sender Name'=>'取得寄件者名稱','Go to WP Mail SMTP Settings page'=>'前往 WP Mail SMTP 設定頁面','Don\'t see what you\'re looking for?'=>'找不到需要的郵件程式?','Api Key:'=>'API 金鑰:','Channel:'=>'通道:','Changes that you made to the settings are not saved!'=>'變更的設定尚未儲存。','RafflePress Pro'=>'RafflePress Pro','Is WP Mail SMTP mailer setup complete?'=>'WP Mail SMTP 的郵件程式是否設定完成?','License key type'=>'授權金鑰類型','Debug'=>'偵錯','No debug notices found.'=>'目前尚無偵錯注意事項。','Current mailer'=>'目前郵件程式','WP Mail SMTP mailer setup is complete'=>'WP Mail SMTP 的郵件程式設定已完成','The WP Mail SMTP plugin mailer setup is complete. You can send a test email, to make sure it\'s working properly.'=>'WP Mail SMTP 的郵件程式設定已完成。網站管理員可以傳送測試電子郵件,藉以確認郵件程式是否正常運作。','Test email sending'=>'傳送測試電子郵件','You currently have the default mailer selected, which means that you haven’t set up SMTP yet.'=>'這個網站目前選取的是預設郵件程式,代表這個網站並未設定 SMTP。','WP Mail SMTP mailer setup is incomplete'=>'WP Mail SMTP 的郵件程式設定尚未完成','The WP Mail SMTP plugin mailer setup is incomplete. Please click on the link below to access plugin settings and configure the mailer.'=>'WP Mail SMTP 的郵件程式設定尚未完成。請點擊下方連結以進入外掛設定頁面,然後設定郵件程式。','Configure mailer'=>'設定郵件程式','RafflePress'=>'RafflePress','WP Mail SMTP is brought to you by the same team that\'s behind the most user friendly WordPress forms, WPForms, the largest WordPress resource site, WPBeginner, the most popular lead-generation software, OptinMonster, the best WordPress analytics plugin, MonsterInsights, and more.'=>'WP Mail SMTP 是由最使用者友善的 WordPress 表單外掛 WPForms、最大的 WordPress 資源網站 WPBeginner、最受歡迎的潛在客戶開發軟體 OptinMonster、WordPress 最佳網站分析外掛 MonsterInsights 及 WordPress 最強大競品外掛的同一個幕後團隊所開發。','Suggest a Mailer'=>'提出郵件程式建議','Pepipost SMTP'=>'Pepipost SMTP','Get the API Key'=>'取得 API 金鑰','Read our Pepipost documentation to learn how to configure Pepipost and improve your email deliverability.'=>'請參閱這份 Pepipost 設定教學,以進一步了解如何設定 Pepipost 服務及提高電子郵件寄達率。','Pepipost is a transactional email service. Every month Pepipost delivers over 8 billion emails from 20,000+ customers. Their mission is to reliably send emails in the most efficient way and at the most disruptive pricing ever. Pepipost provides users 30,000 free emails the first 30 days.'=>'Pepipost 是交易式電子郵件服務,他們服務全球超過 2 萬個客戶,且每月傳送超過 80 億封電子郵件。他們的使命是以最高效率的方式及最具破壞性的價格確實地傳送電子郵件。Pepipost 為使用者提供前 30 天 30,000 封免費電子郵件額度。','Download'=>'下載','EMAILING DISABLED: The %s is currently blocking all emails from being sent.'=>'電子郵件已停用: %s 目前封鎖了全部電子郵件的傳送。','To send emails, change the value of the %1$s constant to %2$s.'=>'如需傳送電子郵件,請將常數 %1$s 的值變更為 %2$s。','To send emails, go to plugin Misc settings and disable the "Do Not Send" option.'=>'如需傳送電子郵件,請至外掛的 [其他] 設定分頁中停用 [停止傳送郵件] 設定。','Amazon SES'=>'Amazon SES','We\'re sorry, the Amazon SES mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features.'=>'很抱歉,目前使用的版本不提供 Amazon SES 郵件程式。請升級至 Pro 版,以取得全部強大的功能。','We\'re sorry, the Microsoft Outlook mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features.'=>'很抱歉,目前使用的版本不提供 Microsoft Outlook 郵件程式。請升級至 Pro 版,以取得全部強大的功能。','%name% is a PRO Feature'=>'%name% 為 Pro 版專屬功能','Upgrade to Pro'=>'升級至 Pro 版','Already purchased?'=>'已購買授權?','Bonus: WP Mail SMTP users get %s off regular price,
applied at checkout.'=>'優惠通知: 凡是 WP Mail SMTP 的使用者,在結帳時均享有 %s 折價優惠。','Educational notice for this mailer was successfully dismissed.'=>'這個郵件程式的使用方式通知已關閉。','Hide Email Delivery Errors'=>'隱藏電子郵件傳送錯誤','Email Delivery Errors were disabled using a %s filter.'=>'已使用 %s 篩選器停用電子郵件傳送錯誤。','This is not recommended and should only be done for staging or development sites.'=>'這項設定不建議啟用,且僅該使用於測試或開發網站。','Follow this link to get an API Key: %s.'=>'請點擊右側連結取得 API 金鑰: %s','Get v3 API Key'=>'取得 v3 API 金鑰','The Gmail mailer works well for sites that send low numbers of emails. However, Gmail\'s API has rate limitations and a number of additional restrictions that can lead to challenges during setup.

If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option.'=>'Gmail 郵件程式非常適合僅需傳送少量電子郵件的網站。Gmail 的 API 限制了郵件傳送速率,並有多項讓設定產生一定難度的限制。

如果希望傳送大量電子郵件,或發現這個網站的主機與 Gmail API 限制不相容,我們建議改用其他郵件程式。','Meanwhile you can switch to some other mailers.'=>'這時也可以改用其他郵件程式。','https://wpmailsmtp.com/'=>'https://wpmailsmtp.com/','There was an error while processing the Google authentication request. Please make sure that you have Client ID and Client Secret both valid and saved.'=>'處理 Google 驗證要求時發生錯誤,請確認你填寫的用戶端 ID 及用戶端密碼均為有效且已正確儲存。','You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail.'=>'這個網站已成功透過外掛與 Google API 專案進行連結,並可開始使用 Gmail 服務傳送電子郵件。','Activate'=>'啟用','Your site is running an insecure version of PHP that is no longer supported. Please contact your web hosting provider to update your PHP version or switch to a recommended WordPress hosting company.'=>'這個網站執行的是不再支援的 PHP 不安全版本。請聯絡這個網站的主機服務提供商,為 PHP 版本進行更新或改用我們推薦的 WordPress 主機服務提供商。','WP Mail SMTP plugin is disabled on your site until you fix the issue. Read more for additional information.'=>'WP Mail SMTP 外掛的功能會停用至這個網站的問題得到修正為止。進一步了解相關資訊','WP Mail SMTP Pro related message was successfully dismissed.'=>'WP Mail SMTP Pro 相關訊息已關閉。','Processing...'=>'正在處理...','Could not install a plugin. Please download from WordPress.org and install manually.'=>'無法安裝外掛。請從 WordPress.org 下載並進行手動安裝。','Install and Activate'=>'安裝並啟用','License'=>'使用授權','Your license key provides access to updates and support.'=>'授權金鑰能為網站提供這個外掛的升級及技術支援。','License Key'=>'授權金鑰','To access our world class support, please upgrade to WP Mail SMTP Pro. Along with getting expert support, you will also get Notification controls, Email Logging, and integrations for Amazon SES, Office 365, and Outlook.com.'=>'如需存取我們世界級的技術支援,請升級至 WP Mail SMTP Pro。除了可以獲得專家技術支援外,還可以使用通知控制項、電子郵件記錄,以及整合 Amazon SES、Office 365、Outlook.com 電子郵件服務等多項功能。','Additionally, you can take advantage of our White Glove Setup. Sit back and relax while we handle everything for you! If you simply don\'t have time or maybe you feel a bit in over your head - we got you covered.'=>'此外,Pro 版使用者可以利用我們的代客安裝服務。我們可以為付費使用者處理外掛相關技術問題,無須使用者煩心。如果真的沒有時間或忙過頭,我們的服務包君滿意。','As a valued WP Mail SMTP user, you will get %s off regular pricing, automatically applied at checkout!'=>'每位我們所重視的 WP Mail SMTP Lite 使用者,均享有 %s 折價優惠,並且會在結帳時自動套用這項優惠。','Inactive'=>'非使用中','Yup, we know a thing or two about building awesome products that customers love.'=>'我們對開發符合客戶需求的產品瞭若指掌。','The WPForms Team photo'=>'WPForms 團隊照片','The WPForms Team'=>' WPForms 團隊','Status: %s'=>'安裝狀態: %s','MonsterInsights'=>'MonsterInsights','MonsterInsights Pro'=>'MonsterInsights Pro','OptinMonster'=>'OptinMonster','Contact Forms by WPForms'=>'Contact Forms by WPForms','WPForms Pro'=>'WPForms Pro','Could not activate the plugin. Please activate it from the Plugins page.'=>'無法啟用外掛,請在管理後台的 [外掛] 頁面啟用這個外掛。','Plugin activated.'=>'外掛已啟用。','Could not install the plugin.'=>'無法安裝外掛。','Plugin installed & activated.'=>'外掛已安裝並完成啟用。','Plugin installed.'=>'外掛已安裝。','Get the most out of WP Mail SMTP by upgrading to Pro and unlocking all of the powerful features.'=>'升級至 Pro 版便能獲得完整功能,讓 WP Mail SMTP 發揮最大效益。','Feature'=>'功能','Pro'=>'Pro','Get WP Mail SMTP Pro Today and Unlock all of these Powerful Features'=>'立即升級至 WP Mail SMTP Pro 並取得 Pro 版的全部強大功能','Email Controls'=>'電子郵件控制項','Customer Support'=>'客戶技術支援','Emails are not logged'=>'不記錄任何電子郵件','No controls over whether default WordPress emails are sent'=>'對 WordPress 的預設電子郵件傳送不提供管理控制項','Complete Email Controls management for most default WordPress emails'=>'對 WordPress 的預設電子郵件進行完整的電子郵件控制項管理','Limited Support'=>'有限的技術支援','Priority Support'=>'優先技術支援','Enter email address where test email will be sent.'=>'請輸入接收測試電子郵件的電子郵件地址。','It seems that you forgot to activate your Mailgun account.'=>'可能的原因是尚未啟用 Mailgun 帳號。','Check your inbox you used to create a Mailgun account. Click the activation link in an email from Mailgun.'=>'請檢查用於建立 Mailgun 帳號的電子郵件收件匣,然後點擊來自 Mailgun 電子郵件中的帳號啟用連結。','If you do not see activation email, go to your Mailgun control panel and resend the activation email.'=>'如果沒有收到帳號啟用電子郵件,','Bonus: WP Mail SMTP Lite users get %s off regular price, automatically applied at checkout.'=>'優惠通知: 凡是 WP Mail SMTP Lite 的使用者,透過上方連結購買 Pro 版授權時均享有 %s 折價優惠,並且會在結帳時自動套用這項優惠。','Email deliverability has been a well-documented problem for all WordPress websites. However as WPForms grew, we became more aware of this painful issue that affects our users and the larger WordPress community. So we decided to solve this problem and make a solution that\'s beginner friendly.'=>'電子郵件寄達率是每個 WordPress 網站管理員都銘記在心的事。隨著 WPForms 使用者人數的增長,我們也意識到這個會影響我們使用者及廣大 WordPress 社群的嚴重問題,因此我們決定著手解決這個問題,並讓解決方案對新手而言更加友善。','Our goal is to make reliable email deliverability easy for WordPress.'=>'我們的目標是讓 WordPress 網站都能輕易達到可靠的電子郵件寄達率。','Email Log'=>'電子郵件記錄','About Us'=>'關於我們','%s vs Pro'=>'%s 及 Pro 版本功能比較','Hello and welcome to WP Mail SMTP, the easiest and most popular WordPress SMTP plugin. We build software that helps your site reliably deliver emails every time.'=>'感謝採用 WP Mail SMTP 這個 WordPress 上最易用、最受歡迎的 SMTP 外掛,這個外掛能讓 WordPress 網站確實完成傳送電子郵件的工作。','Please copy this URL into the "Authorized redirect URIs" field of your Google web application.'=>'請將這個網址複製到 Google API 網站上的網路應用程式專案的 [已授權的重新導向 URI] 欄位。','You need to save settings with Client ID and Client Secret before you can proceed.'=>'在這個網站開始處理電子郵件前,必須先儲存包含用戶端 ID 及用戶端密碼的設定。','Upgrade to WP Mail SMTP Pro'=>'升級至 WP Mail SMTP Pro','%1$s \\a\\t %2$s'=>'%1$s%2$s','Connected as %s'=>'目前是以 %s 的身分進行連線。','To change the password you need to change the value of the constant there: %s'=>'如需變更密碼,必須變更常數 %s 的值。','If you want to disable the use of constants, find in %1$s file the constant %2$s and turn if off:'=>'如需停用相關常數,請在 %1$s 檔案中關閉常數 %2$s。','All the defined constants will stop working and you will be able to change all the values on this page.'=>'全部已定義的常數會停止運作,然後網站管理員便能變更這個頁面全部的值。','The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation.'=>'這個欄位的值應使用 WordPress 網站 %2$s 檔案中的常數 %1$s。','Please deactivate the free version of the WP Mail SMTP plugin before activating WP Mail SMTP Pro.'=>'在啟用 WP Mail SMTP Pro 前,請先停用免費版的 WP Mail SMTP 外掛。','This means your web server was unable to connect to the host server.'=>'這代表這個網站的伺服器無法連線至 SMTP 伺服器。','Install'=>'安裝','Status'=>'安裝狀態','Version'=>'版本','Type'=>'安裝類型','Source'=>'安裝來源','Not Installed'=>'尚未安裝','Recommended'=>'建議安裝','Dismiss this notice'=>'關閉這項通知','Authorization'=>'驗證','Please review your WP Mail SMTP settings in plugin admin area.'=>'請在外掛設定頁中檢視 WP Mail SMTP 設定。','Need support?'=>'需要協助嗎?','Recommended next steps:'=>'建議的處理步驟:','Try using a different mailer.'=>'請改用其他郵件程式。','Contact your web hosting provider and ask them to verify your server can make outside connections. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue.'=>'聯絡這個網站的主機服務提供商,並要求它確認網站伺服器是否可進行外部連線。此外,同時詢問它是否有防火牆或安全性原則禁止了相關連線,因為有不少共用主機會封鎖相關的特定通訊埠。
請注意,這是造成這個問題的最常見原因。','Your host is rejecting the connection.'=>'SMTP 伺服器拒絕連線。','Plugin settings are incorrect (wrong SMTP settings, invalid Mailer configuration, etc).'=>'外掛設定不正確,例如錯誤的 SMTP 設定、不正確的郵件程式設定等。','This means your test email was unable to be sent.'=>'這代表無法傳送測試郵件。','An issue was detected.'=>'檢測出問題。','Try to use a separate project for your emails, so the project has only 1 Gmail API in it enabled. You will need to remove the old project and create a new one from scratch.'=>'試著為電子郵件建立僅啟用一個 Gmail API 的獨立專案。這會需要移除舊專案,並從頭開始建立新專案。','You may have added a new API to a project'=>'你可能已為專案新增了新的 API。','Please follow our Gmail tutorial to be sure that all the correct project and data is applied.'=>'請依照這篇 Gmail 教學課程,以確認套用了正確的專案及資料。','Make sure that the used Client ID/Secret correspond to a proper project that has Gmail API enabled.'=>'確認使用的用戶端 ID/用戶端密碼對應的是啟用了 Gmail API 的正確專案。','Make sure that you have Gmail API enabled, and you can do that here.'=>'確認 Gmail API 已啟用,這項操作可在這裡進行。','There are various reasons for that, please review the steps below.'=>'有許多原因會造成這個狀況,請檢閱以下步驟。','Make sure there is no aggressive caching on site admin area pages or try to clean cache between attempts.'=>'確認網站後台管理頁面並未採用加強式快取,或在每次嘗試連線後清除快取。','Reinstall the plugin with clean plugin data turned on on Misc page. This will remove all the plugin options and you will be safe to retry.'=>'在 [其他] 分頁中啟用清除外掛資料重新安裝外掛的設定。這會移除全部外掛設定資料,以便進行重新設定。','Make sure that you are not trying to manually clean up the plugin options to retry the "Allow..." step.'=>'確認未曾嘗試手動清除外掛設定,以便重試 [允許] 步驟。','Authentication code that Google returned to you has already been used on your previous auth attempt.'=>'Google 傳回的驗證代碼已使用於之前的驗證嘗試。','Unfortunately, this error can be due to many different reasons.'=>'不過,這項錯誤通常由許多不同原因造成。','Make sure that the generated email has a TO header, useful when you are responsible for email creation.'=>'確認產生的電子郵件具備 TO (收件者) 標頭,這對負責建立電子郵件的人員會非常有幫助。','It should be something like this: %1$s. These are incorrect values: %2$s.'=>'有效電子郵件地址的範例: %1$s。無效電子郵件地址的範例: %2$s。','Check the "Send To" email address used and confirm it is a valid email and was not empty.'=>'檢查輸入於 [收件者] 欄位的電子郵件地址,並確認它是有效的電子郵件地址且非空值。','if you are using regular Gmail account, please read this article to proceed.'=>'如果是用的是一般 Gmail 帳戶,請閱讀這份線上說明以繼續進行。','Please click "Agree", if you see that button. If not - you will need to enable less secure apps first:'=>'如果有 [允許] 按鈕,請點擊該按鈕;如果並未出現該按鈕,必須先啟用低安全性應用程式:','You have not properly configured Gmail mailer.'=>'這代表 Gmail 郵件程式目前並未正確設定。','Google API Error.'=>'Google API 發生錯誤。','Your Mailgun account does not have access to send emails.'=>'目前的 Mailgun 帳號沒有傳送電子郵件的權限。','Mailgun failed.'=>'存取 Mailgun 發生錯誤。','no'=>'不','Triple check your SMTP settings including host address, email, and password, port, and security.'=>'請反覆檢查 SMTP 相關設定是否正確,包含 SMTP 伺服器位址、寄件帳號及密碼、通訊埠及安全性設定。','Contact your web hosting provider and ask them to verify your server can connect to %1$s on port %2$s using %3$s encryption. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue.'=>'請聯絡這個網站的主機服務提供商,並要求它確認目前的網站伺服器能以通訊埠 %2$s 連線至使用 %3$s 加密的 %1$s。此外,同時詢問它是否有防火牆或安全性原則禁止了相關連線,因為有不少共用主機會封鎖相關的特定通訊埠。
請注意,這是造成這個問題的最常見原因。','Your SMTP host is rejecting the connection.'=>'SMTP 伺服器拒絕連線。','Your web server is blocking the connection.'=>'目前的網站伺服器封鎖了傳送至 SMTP 伺服器的連線。','SMTP settings are incorrect (wrong port, security setting, incorrect host).'=>'SMTP 的相關設定不正確,例如錯誤的通訊埠號、安全性設定有誤或不正確的 SMTP 伺服器位址。','Typically this error is returned for one of the following reasons:'=>'一般來說,傳回這項錯誤是因為以下其中一項原因所造成:','Could not connect to the SMTP host.'=>'無法連線至 SMTP 伺服器。','Enter correct SMTP Username (usually this is an email address) and Password in the appropriate fields.'=>'在對應的欄位輸入正確的 SMTP 使用者名稱 (通常就是電子郵件地址) 及密碼。','Enable Authentication'=>'啟用驗證','Go to WP Mail SMTP plugin Settings page.'=>'前往 WP Mail SMTP 外掛 [設定] 頁面。','This means the connection to your SMTP host was made successfully, but you should enable Authentication and provide correct Username and Password.'=>'這代表可成功連線至 SMTP 伺服器,但必須啟用外掛的中的 [驗證] 設定並提供正確的 [STMP 使用者名稱] 及 [SMTP 密碼]。','Unauthenticated senders are not allowed.'=>'不接受未驗證的寄件者。','Verify with them your SMTP account is in good standing and your account has not been flagged.'=>'請聯絡 SMTP 服務提供商,確認目前的 SMTP 帳號是否仍具備使用資格,以及帳號是否已遭標幟。','Contact your SMTP host to ask about sending/rate limits.'=>'請聯絡 SMTP 服務提供商洽詢關於電子郵件傳送配額限制的相關資訊。','This means the connection to your SMTP host was made successfully, but the host rejected the email.'=>'這代表可成功連線至 SMTP 伺服器,但 SMTP 伺服器拒絕傳送郵件。','Error due to unsolicited and/or bulk e-mail.'=>'由於來路不明電子郵件及/或大量電子郵件導致發生錯誤。','Verify with your SMTP host that your account has permissions to send emails using outside connections.'=>'請聯絡 SMTP 服務提供商,確認目前使用的帳號是否具備以外部連線傳送電子郵件的權限。','Contact your SMTP host to confirm you are using the correct username and password.'=>'請聯絡 SMTP 服務提供商,確認目前使用的使用者名稱及密碼是否正確。','Triple check your SMTP settings including host address, email, and password. If you have recently reset your password you will need to update the settings.'=>'請反覆檢查 SMTP 相關設定是否正確,包含 SMTP 伺服器位址、寄件帳號及密碼。如果最近變更過寄件密碼,請更新外掛中的相關設定。','Typically this error is returned when the email or password is not correct or is not what the SMTP host is expecting.'=>'一般來說,傳回這項錯誤是因為設定了不正確的寄件帳號/密碼或設定不符合 SMTP 伺服器規則。','This means we were able to connect to your SMTP host, but were not able to proceed using the email/password in the settings.'=>'這代表外掛能夠連線至指定的 SMTP 伺服器,但無法以設定中的電子郵件地址 (帳號)/密碼繼續執行。','Could not authenticate your SMTP account.'=>'無法驗證 SMTP 帳號。','Contact your web hosting provider and inform them you are having issues making outbound connections.'=>'聯絡這個網站的主機服務提供商,並通知它網站主機在進行外寄連線時發生問題。','Could not connect to your host.'=>'無法連線至 SMTP 伺服器。','If using "Other SMTP" Mailer, contact your SMTP host to confirm they are accepting outside connections with the settings you have configured (address, username, port, security, etc).'=>'如果使用了 [其他 SMTP] 郵件程式,請聯絡 SMTP 服務提供商以確認 SMTP 伺服器是否接受包含目前設定 (SMTP 伺服器位址、使用者名稱、通訊埠、安全性設定等等) 的外部連線。','If using "Other SMTP" Mailer, triple check your SMTP settings including host address, email, and password.'=>'如果使用了 [其他 SMTP] 郵件程式,請反覆檢查 SMTP 相關設定是否正確,包含 SMTP 伺服器位址、寄件帳號及密碼。','Contact your web hosting provider and ask them to verify your server can connect to %s. Additionally, ask them if a firewall or security policy may be preventing the connection.'=>'聯絡這個網站的主機服務提供商,並要求它確認網站伺服器是否連線至 %s。此外,同時詢問它是否有防火牆或安全性原則禁止了相關連線。','Typically this error is returned your web server is blocking the connections or the SMTP host denying the request.'=>'一般來說,傳回這項錯誤是因為這個網站的伺服器封鎖了傳送至 SMTP 伺服器的連線或 SMTP 伺服器拒絕了連線要求。','This means your web server was unable to connect to %s.'=>'這代表這個網站的伺服器無法連線至 %s。','Could not connect to host.'=>'無法連線至 SMTP 伺服器。','Ask them to resolve the issue then try again.'=>'要求它解決問題然後再試一次。','The exact error you can provide them is in the Error log, available at the bottom of this page.'=>'請提供錯誤記錄中的確切錯誤,這些資訊可於本頁底部找到。','Contact your web hosting provider and inform them your site has an issue with SSL certificates.'=>'聯絡這個網站的主機服務提供商,並通知它這個網站有 SSL 憑證的問題。','Typically this error is returned when web server is not configured properly.'=>'一般來說,傳回這項錯誤是因為網頁伺服器並未正確設定。','This means your web server cannot reliably make secure connections (make requests to HTTPS sites).'=>'這代表這個網站的伺服器無法可靠地建立安全連線 (向 HTTPS 網站發出要求)。','SSL certificate issue.'=>'SSL 憑證問題。','If checked, the From Name setting above will be used for all emails, ignoring values set by other plugins.'=>'啟用這項設定後,上方 [寄件者名稱] 中的設定便會套用至全部外寄電子郵件,並忽略其他外掛的相關設定。','Force From Name'=>'強制使用 [寄件者名稱] 設定','If checked, the From Email setting above will be used for all emails, ignoring values set by other plugins.'=>'啟用這項設定後,上方 [寄件者電子郵件地址] 中的設定便會套用至全部外寄電子郵件,並忽略其他外掛的相關設定。','Force From Email'=>'強制使用 [寄件者電子郵件地址] 設定','Please note that other plugins can change this, to prevent this use the setting below.'=>'請注意,其他外掛能變更這項設定值;如需防止變更,請使用下方的設定。','Uninstall WP Mail SMTP'=>'解除安裝 WP Mail SMTP','Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, please select and configure your Mailer.'=>'感謝採用 WP Mail SMTP。要完成外掛設定並開始傳送電子郵件,請先選取郵件程式並加以設定。','Auto TLS'=>'自動 TLS','For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS.'=>'對多數的伺服器來說,TLS 是建議設定。如果 SMTP 服務提供商同時提供了 SSL 及 TLS 設定,建議採用 TLS。','To send emails you will need only a %s access level for this API key.'=>'僅需取得 %s 存取層級的 API 金鑰,便能傳送郵件。','Create API Key'=>'建立 API 金鑰','API Key'=>'API 金鑰','SendGrid'=>'SendGrid','Other SMTP'=>'其他 SMTP','Pepipost'=>'Pepipost','SMTP Password'=>'SMTP 密碼','SMTP Username'=>'SMTP 使用者名稱','Off'=>'停用','On'=>'啟用','TLS'=>'TLS','SSL'=>'SSL','None'=>'無','Get a Domain Name'=>'取得網域名稱','Domain Name'=>'網域名稱','Private API Key'=>'私密 API 金鑰','Mailgun'=>'Mailgun','Default (none)'=>'不使用其他服務 (預設)','Click the button above to confirm authorization.'=>'按一下上方按鈕以確認授權。','Copy URL to clipboard'=>'複製網址至剪貼簿','Authorized redirect URI'=>'已授權的重新導向 URI','Client Secret'=>'用戶端密碼','Client ID'=>'用戶端 ID','There was a problem while sending the test email.'=>'傳送測試電子郵件時發生問題。','Test email to %s'=>'傳送至 %s 的測試電子郵件','Test failed. Please use a valid email address and try to resend the test email.'=>'測試失敗。請輸入有效的電子郵件地址並重新傳送測試電子郵件。','Send Email'=>'傳送電子郵件','Send To'=>'收件者','Email Test'=>'電子郵件測試','Settings were successfully saved.'=>'設定已成功儲存。','Save Settings'=>'儲存設定','General'=>'一般','Misc'=>'其他','There was an error while processing the authentication request. Please make sure that you have Client ID and Client Secret both valid and saved.'=>'處理驗證要求時發生錯誤,請確認你填寫的用戶端 ID 及用戶端密碼均為有效且已正確儲存。','There was an error while processing the authentication request. Please try again.'=>'處理驗證要求時發生錯誤,請稍後再試。','There was an error while processing the authentication request: %s. Please try again.'=>'處理 %s 的驗證要求時發生錯誤,請稍後再試。','Hide Announcements'=>'隱藏通知','WPForms'=>'WPForms','Return Path indicates where non-delivery receipts - or bounce messages - are to be sent.'=>'傳回路徑會指出未傳送的收件者或退回的郵件會傳送至何處。','Do Not Send'=>'停止傳送郵件','You will need to consult with their documentation to switch them to use default WordPress email delivery.'=>'網站管理員需要查閱這類外掛的相關說明文件,將其切換為使用預設的 WordPress 電子郵件傳送方式。','Test emails are allowed to be sent, regardless of this option.'=>'無論這項設定為何,外掛都會傳送測試電子郵件。','HTML'=>'HTML 格式電子郵件','Send this email in HTML or in plain text format.'=>'設定要以 HTML 或純文字格式傳送測試電子郵件。','You cannot send an email. Mailer is not properly configured. Please check your settings.'=>'由於郵件程式並未正確設定,因此這個網站無法傳送電子郵件。請檢查相關設定。','Region'=>'寄件/資料儲存地區','US'=>'美國','EU'=>'歐盟','Define which endpoint you want to use for sending messages.'=>'請選取要用於傳送訊息的端點。','If you are operating under EU laws, you may be required to use EU region.'=>'如果相關業務的營運必須遵守歐盟法規,請選取歐盟地區。','More information on Mailgun.com.'=>'請參考 Mailgun.com 上的進一步說明。','WP Mail SMTP is a free plugin, and the team behind WPForms maintains it to give back to the WordPress community.'=>'WP Mail SMTP 是免費外掛,由 WPForms 的幕後開發團隊開發維護,並將它貢獻給 WordPress 社群。','%1$s requires PHP %2$s to work and does not support your current PHP version %3$s. Please contact your host and request a PHP upgrade to the latest one.'=>'%1$s 需要 PHP %2$s (或更新版本) 才能正確執行,它不支援這台主機目前所使用的 PHP %3$s。請聯絡你的主機服務商,並提出將 PHP 升級至最新版的要求。','Are you sure you want to reset the current provider connection? You will need to immediately create a new one to be able to send emails.'=>'確定要重設目前的服務提供商連線嗎?這樣會需要立即建立新的連線,才能傳送電子郵件。','Activated'=>'已啟用','Install Plugin'=>'安裝外掛','As a WP Mail SMTP Pro user you have access to WP Mail SMTP priority support. Please log in to your WPMailSMTP.com account and submit a support ticket.'=>'每一位 WP Mail SMTP Pro 的使用者均可存取 WP Mail SMTP 的優先技術支援。請登入 WPMailSMTP.com 帳號,並提交技術支援需求。','Typically this error is returned when you are sending too many e-mails or e-mails that have been identified as spam.'=>'一般來說,傳回這項錯誤是因為傳送過量的電子郵件或外寄的電子郵件遭判定為垃圾郵件。','Active'=>'使用中','Go to our how-to guide for setting up Mailgun with WP Mail SMTP.'=>'請參考這篇〈如何使用 WP Mail SMTP 外掛以 Mailgun 為 WordPress 網站傳送電子郵件 〉以進行必要的設定。','Complete the steps in section "2. Verify Your Domain".'=>'請完成〈2. 驗證網域名稱〉章節中的步驟。','Follow this link to get a Domain Name from Mailgun: %s.'=>'請依照〈%s〉中的指示,從 Mailgun 取得網域名稱。','Follow this link to get an API Key from SendGrid: %s.'=>'請依照〈%s〉中的指示,從 SendGrid 取得 API 金鑰。','Some plugins, like BuddyPress and Events Manager, are using their own email delivery solutions. By default, this option does not block their emails, as those plugins do not use default wp_mail() function to send emails.'=>'某些外掛 (如 BuddyPress 及 Events Manager) 會採用自有的電子郵件傳送解決方案。依照預設,這項設定不會封鎖這類外掛傳送電子郵件,因為他們並不是使用預設的 wp_mail() 函式傳送電子郵件。','After the click you should be redirected to a Gmail authorization screen, where you will be asked a permission to send emails on your behalf.'=>'點擊按鈕後,會重新導向至 Gmail 驗證畫面;在這個畫面中,外掛會要求授予以指定的 Gmail 帳戶傳送電子郵件的權限。','Go to plugin Settings page and click the "Allow plugin to send emails using your Google account" button.'=>'前往外掛設定頁面並點擊 [授予外掛使用 Google 帳戶傳送電子郵件的權限] 按鈕。','Make sure that you have clicked the "Allow plugin to send emails using your Google account" button under Gmail settings.'=>'確認在外掛的 Gmail 設定中已點擊過 [授予外掛使用 Google 帳戶傳送電子郵件的權限] 按鈕。','If you\'re using an email provider (Yahoo, Outlook.com, etc) this should be your email address for that account.'=>'如果採用的是 Yahoo、Outlook.com 這類電子郵件服務提供商,請填寫服務帳號的電子郵件地址。','Allow plugin to send emails using your Google account'=>'授予外掛使用 Google 帳戶傳送電子郵件的權限','Please rate WP Mail SMTP ★★★★★ on WordPress.org to help us spread the word. Thank you from the WP Mail SMTP team!'=>'請在 WordPress.org 上給予 WP Mail SMTP 5 星評分,協助我們推廣這個外掛。WP Mail SMTP 團隊先行致謝。','Please read this article to learn more about what can cause this error and follow the steps below.'=>'請參考這篇文章以進一步了解造成這項錯誤的原因,並依照以下步驟進行修正。','Alternatively, we also offer limited support on the WordPress.org support forums. You can create a support thread there, but please understand that free support is not guaranteed and is limited to simple issues. If you have an urgent or complex issue, then please consider upgrading to WP Mail SMTP Pro to access our priority support ticket system.'=>'此外,我們也在 WordPress.org 技術支援論壇提供有限的技術支援。有需要的使用者可以自行建立技術支援討論貼文,但請了解免費技術支援不提供任何保證,並僅限於簡單的問題。如果發生緊急或狀況複雜的問題,請考慮升級至 WP Mail SMTP Pro,便能存取我們的優先技術支援需求系統。','The name that emails are sent from.'=>'設定用於傳送電子郵件的寄件者名稱。','The email address that emails are sent from.'=>'設定用於傳送電子郵件的電子郵件地址。','By default, TLS encryption is automatically used if the server supports it (recommended). In some cases, due to server misconfigurations, this can cause issues and may need to be disabled.'=>'依照預設,如果伺服器支援 TLS 加密 (建議採用),便會自動使用 TLS 加密。在某些情況下,由於伺服器設定錯誤導致 TLS 加密可能發生問題,這時便會需要停用 TLS 加密。','You have successfully linked the current site with your Zoho Mail API project. Now you can start sending emails through Zoho Mail.'=>'這個網站已成功透過外掛與 Zoho Mail API 專案進行連結,並可開始使用 Zoho Mail 服務傳送電子郵件。','If unchecked, bounce messages may be lost.'=>'如果未啟用這項設定,便會遺失退回的郵件。','Send a Test Email'=>'傳送測試郵件','Encryption'=>'加密方式','SMTP Port'=>'SMTP 通訊埠','Return Path'=>'傳回路徑','From Name'=>'寄件者名稱','Mailer'=>'郵件程式','Authentication'=>'驗證','From Email'=>'寄件者電子郵件地址','SMTP Host'=>'SMTP 伺服器','WP Mail SMTP'=>'WP Mail SMTP','Settings'=>'設定','Save Changes'=>'儲存設定']]; \ No newline at end of file diff --git a/languages/plugins/wp-mail-smtp-zh_TW.mo b/languages/plugins/wp-mail-smtp-zh_TW.mo new file mode 100644 index 0000000..7c6881e Binary files /dev/null and b/languages/plugins/wp-mail-smtp-zh_TW.mo differ diff --git a/languages/plugins/wp-mail-smtp-zh_TW.po b/languages/plugins/wp-mail-smtp-zh_TW.po new file mode 100644 index 0000000..496a489 --- /dev/null +++ b/languages/plugins/wp-mail-smtp-zh_TW.po @@ -0,0 +1,1858 @@ +# Translation of Plugins - WP Mail SMTP by WPForms – The Most Popular SMTP and Email Log Plugin - Stable (latest release) in Chinese (Taiwan) +# This file is distributed under the same license as the Plugins - WP Mail SMTP by WPForms – The Most Popular SMTP and Email Log Plugin - Stable (latest release) package. +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-27 10:11:04+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: Plugins - WP Mail SMTP by WPForms – The Most Popular SMTP and Email Log Plugin - Stable (latest release)\n" + +#: src/Admin/Pages/Tools.php:41 +msgid "Tools" +msgstr "工具" + +#. translators: %s: Directory path. +#: src/Uploads.php:58 +msgid "Unable to create directory %s. Is its parent directory writable by the server?" +msgstr "無法建立目錄 %s。它的上層目錄是否可由伺服器進行寫入?" + +#: src/Admin/Pages/AboutTab.php:370 src/Admin/Pages/AboutTab.php:376 +msgid "Smash Balloon Facebook Feeds" +msgstr "Smash Balloon Facebook Feeds" + +#: src/Admin/Pages/AboutTab.php:384 src/Admin/Pages/AboutTab.php:390 +msgid "Smash Balloon YouTube Feeds" +msgstr "Smash Balloon YouTube Feeds" + +#: src/Admin/Pages/AboutTab.php:398 src/Admin/Pages/AboutTab.php:404 +msgid "Smash Balloon Twitter Feeds" +msgstr "Smash Balloon Twitter Feeds" + +#: src/Admin/Pages/SettingsTab.php:120 +msgid "Launch Setup Wizard" +msgstr "啟動設定精靈" + +#: src/Admin/Pages/AboutTab.php:321 src/Admin/Pages/AboutTab.php:327 +msgid "SeedProd" +msgstr "SeedProd" + +#: src/Admin/Pages/AboutTab.php:356 src/Admin/Pages/AboutTab.php:362 +msgid "Smash Balloon Instagram Feeds" +msgstr "Smash Balloon Instagram Feeds" + +#: assets/languages/wp-mail-smtp-vue.php:806 +msgid "You have successfully linked the current site with your Microsoft API project. Now you can start sending emails through Outlook." +msgstr "這個網站已成功透過外掛與 Microsoft API 專案進行連結,並可開始使用 Outlook 服務傳送電子郵件。" + +#: src/Admin/Pages/TestTab.php:1554 +msgid "Copy Error Log" +msgstr "複製錯誤記錄" + +#: src/Admin/Pages/TestTab.php:1557 +msgid "Copied" +msgstr "已複製" + +#: assets/languages/wp-mail-smtp-vue.php:5 +msgid "Error Message:" +msgstr "錯誤訊息:" + +#. Translators: Error status and error text. +#: assets/languages/wp-mail-smtp-vue.php:83 +msgid "%1$s, %2$s" +msgstr "%1$s: %2$s" + +#: assets/languages/wp-mail-smtp-vue.php:693 +msgid "Continue" +msgstr "繼續" + +#. Translators: %1$s and %2$s are bold tags. +#: assets/languages/wp-mail-smtp-vue.php:690 +msgid "You're currently using %1$sWP Mail SMTP Lite%2$s - no license needed. Enjoy!" +msgstr "這個網站目前使用的是不需要使用授權的 %1$sWP Mail SMTP Lite%2$s,請放心使用。" + +#: assets/languages/wp-mail-smtp-vue.php:164 +msgid "The following plugin will be installed for free: WPForms" +msgstr "指定外掛將會免費安裝: WPForms" + +#: assets/languages/wp-mail-smtp-vue.php:51 +msgid "Return to Plugin Settings" +msgstr "返回外掛設定" + +#: assets/languages/wp-mail-smtp-vue.php:15 +msgid "Please fill out all the required fields to continue." +msgstr "請填寫全部必填欄位以繼續。" + +#: assets/languages/wp-mail-smtp-vue.php:598 +msgid "Enable Auto TLS" +msgstr "啟用自動 TLS" + +#: assets/languages/wp-mail-smtp-vue.php:705 +msgid "I'll do it later" +msgstr "稍後完成" + +#: assets/languages/wp-mail-smtp-vue.php:722 +msgid "Verify License Key" +msgstr "驗證授權金鑰" + +#: assets/languages/wp-mail-smtp-vue.php:44 +msgid "Yikes! WordPress Update Required" +msgstr "請注意,WordPress 必須更新" + +#: assets/languages/wp-mail-smtp-vue.php:18 +msgid "Settings Updated" +msgstr "設定已更新" + +#: assets/languages/wp-mail-smtp-vue.php:21 +msgid "Could Not Save Changes" +msgstr "無法儲存變更" + +#: assets/languages/wp-mail-smtp-vue.php:24 +msgid "Return to Mailer Settings" +msgstr "返回郵件程式設定" + +#: assets/languages/wp-mail-smtp-vue.php:138 +msgid "Welcome to the WP Mail SMTP Setup Wizard!" +msgstr "歡迎使用 WP Mail SMTP 設定精靈" + +#: assets/languages/wp-mail-smtp-vue.php:290 +msgid "Close and exit the Setup Wizard" +msgstr "關閉並離開設定精靈" + +#: assets/languages/wp-mail-smtp-vue.php:373 +msgid "Import Data and Continue" +msgstr "匯入資料並繼續" + +#: assets/languages/wp-mail-smtp-vue.php:376 +msgid "Skip this Step" +msgstr "略過這個步驟" + +#: assets/languages/wp-mail-smtp-vue.php:161 +msgid "Previous Step" +msgstr "上一步" + +#: assets/languages/wp-mail-smtp-vue.php:379 +msgid "Easy WP SMTP" +msgstr "Easy WP SMTP" + +#: assets/languages/wp-mail-smtp-vue.php:388 +msgid "SMTP Mailer" +msgstr "SMTP 郵件程式" + +#: assets/languages/wp-mail-smtp-vue.php:391 +msgid "WP SMTP" +msgstr "WP SMTP" + +#: assets/languages/wp-mail-smtp-vue.php:471 +msgid "Redirect URI" +msgstr "重新導向 URI" + +#: assets/languages/wp-mail-smtp-vue.php:749 +msgid "Authorized Redirect URI" +msgstr "已授權的重新導向 URI" + +#: assets/languages/wp-mail-smtp-vue.php:628 +msgid "Access Key ID" +msgstr "存取金鑰 ID" + +#: assets/languages/wp-mail-smtp-vue.php:631 +msgid "Secret Access Key" +msgstr "私密存取金鑰" + +#: assets/languages/wp-mail-smtp-vue.php:337 +msgid "Copied!" +msgstr "已完成複製!" + +#: assets/languages/wp-mail-smtp-vue.php:858 +msgid "Verify Email" +msgstr "驗證電子郵件地址" + +#: assets/languages/wp-mail-smtp-vue.php:870 +#: src/Providers/Resend/Options.php:60 +msgid "Resend" +msgstr "重新傳送" + +#: assets/languages/wp-mail-smtp-vue.php:845 +msgid "Please enter a valid email address" +msgstr "請輸入有效的電子郵件地址" + +#: assets/languages/wp-mail-smtp-vue.php:385 +msgid "Post SMTP Mailer" +msgstr "Post SMTP Mailer" + +#: assets/languages/wp-mail-smtp-vue.php:358 +msgid "Start Troubleshooting" +msgstr "開始疑難排解" + +#: assets/languages/wp-mail-smtp-vue.php:674 +msgid "is a PRO Feature" +msgstr "為 Pro 版專屬功能" + +#: assets/languages/wp-mail-smtp-vue.php:37 +msgid "Yikes! PHP Update Required" +msgstr "請注意,PHP 必須更新" + +#: assets/languages/wp-mail-smtp-vue.php:147 src/Admin/SetupWizard.php:303 +msgid "Go back to the Dashboard" +msgstr "返回 [控制台]" + +#: assets/languages/wp-mail-smtp-vue.php:725 +#: src/Admin/Pages/SettingsTab.php:170 +msgid "Connect" +msgstr "連線" + +#: src/Admin/Pages/SettingsTab.php:116 +msgid "Setup Wizard" +msgstr "設定精靈" + +#: src/Admin/SetupWizard.php:514 +msgid "Contact Us" +msgstr "聯絡我們" + +#: src/Admin/SetupWizard.php:1068 +msgid "All in One SEO" +msgstr "All in One SEO" + +#: src/Admin/SetupWizard.php:1092 +msgid "Smash Balloon Social Photo Feed" +msgstr "Smash Balloon Social Photo Feed" + +#: src/Admin/Pages/SettingsTab.php:168 +msgid "Paste license key here" +msgstr "請在這裡貼上授權金鑰" + +#: src/Admin/Pages/TestTab.php:765 +msgid "Invalid SendGrid API key" +msgstr "無效的 SendGrid API 金鑰" + +#: src/Admin/Pages/TestTab.php:772 +msgid "Save the plugin settings." +msgstr "儲存外掛設定。" + +#: assets/languages/wp-mail-smtp-vue.php:9 +#: src/Admin/Pages/DebugEventsTab.php:152 src/Connect.php:58 +msgid "OK" +msgstr "確定" + +#: src/Connect.php:56 +msgid "Almost Done" +msgstr "即將完成" + +#: src/Connect.php:57 +msgid "Oops!" +msgstr "很抱歉!" + +#: src/Admin/Area.php:407 +msgid "Multisite" +msgstr "多站網路" + +#: src/Admin/Area.php:411 +msgid "Simply enable network-wide settings and every site on your network will inherit the same SMTP settings. Save time and only configure your SMTP provider once." +msgstr "為整個多站網路啟用外掛設定,多站網路中的每個網站便會繼承相同的 SMTP 設定。這能節省設定時間並僅需設定一次 SMTP 服務提供商。" + +#: src/Admin/Area.php:418 +msgid "Settings control" +msgstr "設定控制" + +#: src/Admin/Area.php:424 +msgid "Make the plugin settings global network-wide" +msgstr "將外掛設定套用至整個多站網路" + +#: src/Admin/Area.php:428 +msgid "If disabled, each subsite of this multisite will have its own WP Mail SMTP settings page that has to be configured separately." +msgstr "停用這項設定後,這個多站網路的每個子網站便會有可進行專屬設定的獨立 WP Mail SMTP 設定頁。" + +#: src/Admin/Area.php:430 +msgid "If enabled, these global settings will manage email sending for all subsites of this multisite." +msgstr "啟用這項設定後,這些全域設定便會控管這個多站網路的全部子網站的電子郵件傳送。" + +#: src/Providers/Gmail/Auth.php:151 +msgid "Please make sure your Google Client ID and Secret in the plugin settings are valid. Save the settings and try the Authorization again." +msgstr "請確認在外掛設定中的用戶端 ID 及密碼為有效資料。請儲存設定並再嘗試授權。" + +#: src/Providers/Gmail/Mailer.php:129 +msgid "The response object is invalid (missing getId method)." +msgstr "無效的回應物件 (缺少 getId 方法)。" + +#: src/Providers/Gmail/Mailer.php:134 +msgid "The email message ID is missing." +msgstr "缺少電子郵件訊息 ID。" + +#: src/Providers/OptionsAbstract.php:411 +msgid "The password is encrypted in the database, but for improved security we recommend using your site's WordPress configuration file to set your password." +msgstr "在這個欄位中所輸入的密碼,會以加密方式儲存於資料庫。建議網站管理員將密碼設定於 WordPress 組態檔中,以提高安全性。" + +#: src/Admin/Area.php:408 +msgid "Pro+ badge icon" +msgstr "Pro+ 徽章圖示" + +#: assets/languages/wp-mail-smtp-vue.php:907 src/Core.php:1108 +msgid "Loading" +msgstr "正在載入" + +#: src/Admin/Pages/VersusTab.php:249 +msgid "Optionally configure settings at the network level or manage separately for each subsite" +msgstr "選用組態設定可在多站網路層級進行,或在個別網站獨立管理" + +#: src/Admin/Pages/VersusTab.php:249 +msgid "All Global Network Settings" +msgstr "全部多站網路全域設定" + +#: src/Admin/Pages/VersusTab.php:243 +msgid "No Global Network Settings" +msgstr "沒有多站網路全域設定" + +#: src/Admin/Pages/VersusTab.php:235 +msgid "Microsoft Outlook (with Office365 support), Amazon SES and Zoho Mail" +msgstr "Microsoft Outlook (同時支援 Office 365)、 Amazon SES 及 Zoho Mail" + +#: src/Admin/Pages/VersusTab.php:235 +msgid "Additional Mailer Options" +msgstr "額外的郵件程式選項" + +#: src/Admin/Pages/VersusTab.php:229 +msgid "Access is limited to standard mailer options only" +msgstr "僅能存取有限的標準郵件程式" + +#: src/Admin/Pages/VersusTab.php:229 +msgid "Limited Mailers" +msgstr "有限的郵件程式" + +#: src/Admin/Pages/VersusTab.php:207 +msgid "Access to all Email Logging options right inside WordPress" +msgstr "存取 WordPress 網站內全部電子郵件記錄選項" + +#: src/Admin/Pages/VersusTab.php:179 +msgid "WordPress Multisite" +msgstr "WordPress 多站網路" + +#: src/Admin/Pages/VersusTab.php:178 +msgid "Mailer Options" +msgstr "郵件程式選項" + +#: src/SiteHealth.php:176 +msgid "None selected" +msgstr "尚未選取" + +#: src/SiteHealth.php:160 +msgid "M j, Y @ g:ia" +msgstr "Y 年 n 月 j 日a g:i" + +#: src/SiteHealth.php:159 +msgid "Lite install date" +msgstr "Lite 版安裝日期" + +#: src/Providers/Zoho/Options.php:41 +msgid "We're sorry, the Zoho Mail mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features." +msgstr "很抱歉,目前使用的版本不提供 Zoho Mail 郵件程式。請升級至 Pro 版,以取得全部強大的功能。" + +#: src/Providers/Zoho/Options.php:25 +msgid "Zoho Mail" +msgstr "Zoho Mail" + +#: src/Admin/Education.php:86 +msgid "Dismiss this message." +msgstr "關閉這項訊息" + +#: assets/languages/wp-mail-smtp-vue.php:412 src/Admin/Pages/MiscTab.php:288 +msgid "By allowing us to track usage data we can better help you because we know with which WordPress configurations, themes and plugins we should test." +msgstr "允許系統追蹤使用方式資料後,開發團隊便能收到這個 WordPress 網站的組態、佈景主題及外掛並進行測試,以提供使用者更進一步的協助。" + +#: src/Admin/Pages/MiscTab.php:273 +msgid "Allow Usage Tracking" +msgstr "允許追蹤使用方式" + +#: src/Admin/Notifications.php:494 +msgid "Next message" +msgstr "下一則訊息" + +#: src/Admin/Notifications.php:490 +msgid "Previous message" +msgstr "前一則訊息" + +#: src/Admin/Notifications.php:485 +msgid "Dismiss this message" +msgstr "關閉這項訊息" + +#: src/Admin/Pages/AboutTab.php:161 +msgid "Plugin icon" +msgstr "外掛圖示" + +#. translators: %s - the list of missing tables separated by comma. +#: src/SiteHealth.php:288 +msgid "Missing table: %s" +msgid_plural "Missing tables: %s" +msgstr[0] "找不到的資料表: %s" + +#: src/SiteHealth.php:282 +msgid "WP Mail SMTP DB tables check has failed" +msgstr "WP Mail SMTP 資料庫資料表檢查失敗" + +#: src/SiteHealth.php:264 +msgid "WP Mail SMTP is using custom database tables for some of its features. In order to work properly, the custom tables should be created, and it looks like they exist in your database." +msgstr "WP Mail SMTP 的某些功能使用自訂的資料庫資料表。為了能正常運作,必須建立自訂資料表。目前已在網站資料庫中找到這些自訂資料表。" + +#: src/SiteHealth.php:258 +msgid "WP Mail SMTP DB tables are created" +msgstr "WP Mail SMTP 資料庫資料表已建立" + +#: src/SiteHealth.php:147 +msgid "No DB tables found." +msgstr "找不到找不到符合條件的資料庫資料表。" + +#: src/SiteHealth.php:145 +msgid "DB tables" +msgstr "資料庫資料表" + +#: src/SiteHealth.php:102 +msgid "Do WP Mail SMTP DB tables exist?" +msgstr "WP Mail SMTP 的資料庫資料表是否存在?" + +#: assets/languages/wp-mail-smtp-vue.php:1133 src/Admin/Area.php:586 +#: src/Admin/DebugEvents/Event.php:184 src/Providers/PepipostAPI/Mailer.php:342 +msgid "Error" +msgstr "錯誤" + +#: src/Providers/PepipostAPI/Mailer.php:341 +msgid "General error" +msgstr "一般錯誤" + +#: assets/languages/wp-mail-smtp-vue.php:12 src/Admin/Area.php:534 +#: src/Admin/Pages/DebugEventsTab.php:153 +msgid "Heads up!" +msgstr "注意!" + +#: src/Admin/Area.php:540 src/Admin/Pages/DebugEventsTab.php:149 +msgid "Cancel" +msgstr "取消" + +#: src/Admin/Area.php:541 +msgid "Warning icon" +msgstr "警告圖示" + +#: src/Admin/Review.php:167 +msgid "I already did" +msgstr "已撰寫過外掛評分" + +#. translators: %1$s - WP Mail SMTP, %2$s - error message. +#: src/Migration.php:135 +msgid "There was an error while upgrading the database. Please contact %1$s support with this information: %2$s." +msgstr "升級資料庫時發生錯誤。請將這裡顯示的錯誤訊息提供給 %1$s 的技術支援人員: %2$s。" + +#: src/Admin/Area.php:536 +msgid "

The Default (PHP) mailer is currently selected, but is not recommended because in most cases it does not resolve email delivery issues.

Please consider selecting and configuring one of the other mailers.

" +msgstr "

已選取預設 (PHP) 郵件程式。由於這個郵件程式在大多數的狀況中無法解決電子郵件傳送問題,因此不建議使用。

請考慮使用及設定其他郵件程式。

" + +#: src/Admin/Pages/TestTab.php:876 +msgid "Verify that the host's SSL certificate is valid." +msgstr "驗證主機的 SSL 憑證是否正確。" + +#: src/Admin/Pages/TestTab.php:1238 +msgid "SMTP.com API Error." +msgstr "SMTP.com API 發生錯誤。" + +#: src/Admin/Pages/TestTab.php:1252 +msgid "GuzzleHttp requirements." +msgstr "GuzzleHttp 環境需求。" + +#: src/Admin/Pages/TestTab.php:1324 +msgid "PCRE library issue" +msgstr "PCRE 函式庫發生問題" + +#: src/Admin/Review.php:137 +msgid "Are you enjoying WP Mail SMTP?" +msgstr "WP Mail SMTP 是否對這個網站有所幫助?" + +#: src/Admin/Pages/DebugEventsTab.php:151 src/Admin/Review.php:139 +msgid "Yes" +msgstr "是" + +#: src/Admin/Review.php:144 +msgid "We're sorry to hear you aren't enjoying WP Mail SMTP. We would love a chance to improve. Could you take a minute and let us know what we can do better?" +msgstr "很遺憾聽到你不喜歡 WP Mail SMTP。請給我們一個改進的機會,請花少許時間讓我們知道改進的方式。" + +#: src/Admin/Pages/TestTab.php:1332 +msgid "For a quick fix, until your web hosting resolves this, you can downgrade to PHP version 7.3 on your server." +msgstr "如需快速修正,在網站的主機託管服務商解決這個問題前,(如果可以的話) 請先在主機伺服器上將 PHP 降級至 7.3。" + +#: src/Admin/Pages/TestTab.php:1331 +msgid "They should be able to resolve this issue for you." +msgstr "廠商應該能為網站解決這個問題。" + +#: src/Admin/Pages/TestTab.php:1330 +msgid "Contact your web hosting provider and inform them you are having issues with libpcre2 library on PHP 7.4." +msgstr "聯絡網站主機託管服務提供商,並通知他們目前網站遭遇 PHP 7.4 上的 libpcre2 函式庫問題。" + +#: src/Admin/Pages/TestTab.php:1327 +msgid "There is a known issue with PHP version 7.4.x, when using libpcre2 library version lower than 10.33." +msgstr "當主機執行的 PHP 為 7.4.x 且搭配的 libpcre2 函式庫版本低於 10.33,發生這個狀況是已知問題。" + +#: src/Admin/Pages/TestTab.php:1326 +msgid "It looks like your server is running PHP version 7.4.x with an outdated PCRE library (libpcre2) that has a known issue with email address validation." +msgstr "目前網站伺服器執行的是 PHP 7.4.x,且搭配的是會造成電子郵件地址驗證的已知問題的過期 PCRE 函式庫 (libpcre2)。" + +#: src/Admin/Pages/TestTab.php:1260 +msgid "If you don't know how to do the above we strongly suggest contacting your hosting support and provide them the \"full Error Log for debugging\" below and these steps. They should be able to fix this issue for you." +msgstr "如果網站管理員不知道如何處理上述問題,強烈建議聯絡網站主機託管服務商的技術支援,並提供他們下方的偵錯用的完整錯誤記錄及相關步驟。他們應該能為網站修正這個問題。" + +#: src/Admin/Pages/TestTab.php:1259 +msgid "(If cURL can't be enabled on your hosting server) Enable PHP setting: allow_url_fopen, by adding \"allow_url_fopen = On\" to the php.ini file (without the quotation marks)" +msgstr "(前提: 在目前託管的伺服器上無法啟用 cURL) 啟用 PHP 設定: 如需啟用 allow_url_fopen,請在 php.ini 檔案中加入 allow_url_fopen = On。" + +#: src/Admin/Pages/TestTab.php:1258 +msgid "(Recommended) Enable PHP extension: cURL, by adding \"extension=curl\" to the php.ini file (without the quotation marks) OR" +msgstr "(建議設定) 啟用 PHP 擴充功能: 如需啟用 cURL,請在 php.ini 檔案中加入 extension=curl,或" + +#: src/Admin/Pages/TestTab.php:1257 +msgid "Edit your php.ini file on your hosting server." +msgstr "編輯這個網站伺服器上的 php.ini 檔案。" + +#: src/Admin/Pages/TestTab.php:1254 +msgid "GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler." +msgstr "GuzzleHttp 需要在 ini 中針對 cURL、allow_url_fopen 進行設定,或自訂 HTTP 處理常式。" + +#: src/Admin/Pages/TestTab.php:1243 +msgid "Please make sure you entered an accurate Sender Name in WP Mail SMTP plugin settings." +msgstr "請確認在 WP Mail SMTP 外掛設定中正確輸入 [寄件者名稱]。" + +#: src/Admin/Pages/TestTab.php:1240 +msgid "Your Sender Name option is incorrect." +msgstr "[寄件者名稱] 設定不正確。" + +#. translators: %s - URL to the PHP openssl manual +#: src/Admin/Pages/TestTab.php:879 +msgid "Contact your hosting support, show them the \"full Error Log for debugging\" below and share this link with them." +msgstr "請聯絡網站主機託管服務商的技術支援,並提供他們偵錯用的完整錯誤記錄及分享這個連結。" + +#: src/Admin/Pages/TestTab.php:873 +msgid "There are a few reasons why this is happening. It could be that the host certificate is misconfigured, or this server's OpenSSL is using an outdated CA bundle." +msgstr "發生這個狀況有幾個原因。有可能是主機憑證設定錯誤,或這個網站的伺服器使用了過期的 CA 組合套件。" + +#: src/Admin/Pages/TestTab.php:872 +msgid "This means OpenSSL on your server isn't able to verify the host certificate." +msgstr "這代表這個網站伺服器上的 OpenSSL 無法驗證主機憑證。" + +#: src/Admin/Pages/TestTab.php:870 +msgid "Misconfigured server certificate." +msgstr "設定錯誤的伺服器憑證。" + +#. translators: %s - The URL to the constants support article. +#: src/Admin/Pages/MiscTab.php:124 +msgid "Please read this support article if you want to enable this option using constants." +msgstr "如果要使用常數啟用這個功能,請閱讀這篇技術支援文章。" + +#: src/Admin/Pages/TestTab.php:1120 src/Providers/Gmail/Mailer.php:259 +msgid "Then click the “Allow plugin to send emails using your Google account” button and re-enable access." +msgstr "然後點擊 [授予外掛使用 Google 帳戶傳送電子郵件的權限]" + +#: src/Providers/Gmail/Mailer.php:257 +msgid "Please re-grant Google app permissions!" +msgstr "請重新授予 Google 應用程式權限。" + +#: src/Admin/Review.php:156 +msgid "No thanks" +msgstr "不用了,謝謝" + +#: src/Providers/OptionsAbstract.php:517 +msgid "If you'd prefer not to set up SSL, or need an SMTP solution in the meantime, please select a different mailer option." +msgstr "如果不想設定 SSL,或現在需要 SMTP 解決方案,就必須選取不同的郵件程式。" + +#. translators: %s - Provider name +#: src/Providers/OptionsAbstract.php:504 +msgid "%s requires an SSL certificate, and so is not currently compatible with your site. Please contact your host to request a SSL certificate, or check out WPBeginner's tutorial on how to set up SSL." +msgstr "%s 需要網站已安裝正確的 SSL 憑證,因此這個網站無法使用這項服務。請聯絡網站主機託管服務提供商並要求他們為網站安裝 SSL 憑證,或參考 WPBeginner 的〈如何設定 SSL 教學〉。" + +#: src/Providers/OptionsAbstract.php:417 +msgid "Learn More" +msgstr "進一步了解" + +#: src/Providers/PepipostAPI/Options.php:55 +msgid "Get Started with Pepipost" +msgstr "開始使用 Pepipost" + +#: assets/languages/wp-mail-smtp-vue.php:501 +#: src/Providers/SMTPcom/Options.php:69 +msgid "Get Started with SMTP.com" +msgstr "開始使用 SMTP.com" + +#: src/Providers/SMTPcom/Options.php:83 +msgid "SMTP.com" +msgstr "SMTP.com" + +#. translators: %s - API key link. +#: src/Providers/SMTPcom/Options.php:133 +msgid "Follow this link to get an API Key from SMTP.com: %s." +msgstr "請依照〈%s〉中的指示,從 SMTP.com 取得 API 金鑰。" + +#: src/Providers/ElasticEmail/Options.php:122 +#: src/Providers/MailerSend/Options.php:117 +#: src/Providers/Mandrill/Options.php:118 +#: src/Providers/Sendlayer/Options.php:212 +#: src/Providers/SMTPcom/Options.php:135 +#: src/Providers/SparkPost/Options.php:120 +msgid "Get API Key" +msgstr "取得 API 金鑰" + +#: assets/languages/wp-mail-smtp-vue.php:490 +#: src/Providers/SMTPcom/Options.php:146 +msgid "Sender Name" +msgstr "寄件者名稱" + +#. translators: %s - Channel/Sender Name link for smtp.com documentation. +#: src/Providers/SMTPcom/Options.php:162 +msgid "Follow this link to get a Sender Name from SMTP.com: %s." +msgstr "請依照〈%s〉中的指示,從 SMTP.com 取得寄件者名稱。" + +#: src/Providers/SMTPcom/Options.php:164 +msgid "Get Sender Name" +msgstr "取得寄件者名稱" + +#: src/Admin/Area.php:1315 +msgid "Go to WP Mail SMTP Settings page" +msgstr "前往 WP Mail SMTP 設定頁面" + +#: src/Admin/ConnectionSettings.php:269 +msgid "Don't see what you're looking for?" +msgstr "找不到需要的郵件程式?" + +#: src/Providers/SMTPcom/Mailer.php:476 +msgid "Api Key:" +msgstr "API 金鑰:" + +#: src/Providers/SMTPcom/Mailer.php:478 +msgid "Channel:" +msgstr "通道:" + +#: src/Admin/Area.php:532 +msgid "Changes that you made to the settings are not saved!" +msgstr "變更的設定尚未儲存。" + +#: src/Admin/Pages/AboutTab.php:341 +msgid "RafflePress Pro" +msgstr "RafflePress Pro" + +#: src/SiteHealth.php:97 +msgid "Is WP Mail SMTP mailer setup complete?" +msgstr "WP Mail SMTP 的郵件程式是否設定完成?" + +#: src/SiteHealth.php:137 +msgid "License key type" +msgstr "授權金鑰類型" + +#: src/Admin/DebugEvents/Event.php:185 src/SiteHealth.php:141 +msgid "Debug" +msgstr "偵錯" + +#: src/SiteHealth.php:142 +msgid "No debug notices found." +msgstr "目前尚無偵錯注意事項。" + +#: src/SiteHealth.php:198 +msgid "Current mailer" +msgstr "目前郵件程式" + +#: src/SiteHealth.php:203 +msgid "WP Mail SMTP mailer setup is complete" +msgstr "WP Mail SMTP 的郵件程式設定已完成" + +#: src/SiteHealth.php:212 +msgid "The WP Mail SMTP plugin mailer setup is complete. You can send a test email, to make sure it's working properly." +msgstr "WP Mail SMTP 的郵件程式設定已完成。網站管理員可以傳送測試電子郵件,藉以確認郵件程式是否正常運作。" + +#: src/SiteHealth.php:217 +msgid "Test email sending" +msgstr "傳送測試電子郵件" + +#: src/SiteHealth.php:225 +msgid "You currently have the default mailer selected, which means that you haven’t set up SMTP yet." +msgstr "這個網站目前選取的是預設郵件程式,代表這個網站並未設定 SMTP。" + +#: src/SiteHealth.php:230 +msgid "WP Mail SMTP mailer setup is incomplete" +msgstr "WP Mail SMTP 的郵件程式設定尚未完成" + +#: src/SiteHealth.php:236 +msgid "The WP Mail SMTP plugin mailer setup is incomplete. Please click on the link below to access plugin settings and configure the mailer." +msgstr "WP Mail SMTP 的郵件程式設定尚未完成。請點擊下方連結以進入外掛設定頁面,然後設定郵件程式。" + +#: src/SiteHealth.php:241 src/SiteHealth.php:375 +msgid "Configure mailer" +msgstr "設定郵件程式" + +#: src/Admin/Pages/AboutTab.php:335 +msgid "RafflePress" +msgstr "RafflePress" + +#. translators: %1$s - WPForms URL, %2$s - WPBeginner URL, %3$s - OptinMonster +#. URL, %4$s - MonsterInsights URL, %5$s - Awesome Motive URL +#: src/Admin/Pages/AboutTab.php:85 +msgid "WP Mail SMTP is brought to you by the same team that's behind the most user friendly WordPress forms, WPForms, the largest WordPress resource site, WPBeginner, the most popular lead-generation software, OptinMonster, the best WordPress analytics plugin, MonsterInsights, and more." +msgstr "WP Mail SMTP 是由最使用者友善的 WordPress 表單外掛 WPForms、最大的 WordPress 資源網站 WPBeginner、最受歡迎的潛在客戶開發軟體 OptinMonster、WordPress 最佳網站分析外掛 MonsterInsights 及 WordPress 最強大競品外掛的同一個幕後團隊所開發。" + +#: src/Admin/ConnectionSettings.php:274 +msgid "Suggest a Mailer" +msgstr "提出郵件程式建議" + +#: src/Providers/Pepipost/Options.php:25 +msgid "Pepipost SMTP" +msgstr "Pepipost SMTP" + +#: src/Providers/PepipostAPI/Options.php:117 +msgid "Get the API Key" +msgstr "取得 API 金鑰" + +#. translators: %1$s - URL to wpmailsmtp.com doc. +#: src/Providers/PepipostAPI/Options.php:35 +msgid "Read our Pepipost documentation to learn how to configure Pepipost and improve your email deliverability." +msgstr "請參閱這份 Pepipost 設定教學,以進一步了解如何設定 Pepipost 服務及提高電子郵件寄達率。" + +#. translators: %1$s - URL to pepipost.com site. +#: src/Providers/PepipostAPI/Options.php:32 +msgid "Pepipost is a transactional email service. Every month Pepipost delivers over 8 billion emails from 20,000+ customers. Their mission is to reliably send emails in the most efficient way and at the most disruptive pricing ever. Pepipost provides users 30,000 free emails the first 30 days." +msgstr "Pepipost 是交易式電子郵件服務,他們服務全球超過 2 萬個客戶,且每月傳送超過 80 億封電子郵件。他們的使命是以最高效率的方式及最具破壞性的價格確實地傳送電子郵件。Pepipost 為使用者提供前 30 天 30,000 封免費電子郵件額度。" + +#: src/Admin/Area.php:675 +msgid "Download" +msgstr "下載" + +#. translators: %s - plugin name and its version. +#: src/Core.php:478 +msgid "EMAILING DISABLED: The %s is currently blocking all emails from being sent." +msgstr "電子郵件已停用: %s 目前封鎖了全部電子郵件的傳送。" + +#. translators: %1$s - constant name; %2$s - constant value. +#: src/Core.php:485 +msgid "To send emails, change the value of the %1$s constant to %2$s." +msgstr "如需傳送電子郵件,請將常數 %1$s 的值變更為 %2$s。" + +#. translators: %s - plugin Misc settings page URL. +#: src/Core.php:492 +msgid "To send emails, go to plugin Misc settings and disable the \"Do Not Send\" option." +msgstr "如需傳送電子郵件,請至外掛的 [其他] 設定分頁中停用 [停止傳送郵件] 設定。" + +#: src/Providers/AmazonSES/Options.php:25 +msgid "Amazon SES" +msgstr "Amazon SES" + +#: src/Providers/AmazonSES/Options.php:39 +msgid "We're sorry, the Amazon SES mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features." +msgstr "很抱歉,目前使用的版本不提供 Amazon SES 郵件程式。請升級至 Pro 版,以取得全部強大的功能。" + +#: src/Providers/Outlook/Options.php:39 +msgid "We're sorry, the Microsoft Outlook mailer is not available on your plan. Please upgrade to the PRO plan to unlock all these awesome features." +msgstr "很抱歉,目前使用的版本不提供 Microsoft Outlook 郵件程式。請升級至 Pro 版,以取得全部強大的功能。" + +#: src/Admin/Area.php:546 +msgid "%name% is a PRO Feature" +msgstr "%name% 為 Pro 版專屬功能" + +#: src/Admin/Area.php:348 src/Admin/Area.php:349 src/Admin/Area.php:548 +#: src/Admin/Pages/SettingsTab.php:91 src/Admin/SetupWizard.php:248 +#: src/Reports/Emails/Summary.php:313 +msgid "Upgrade to Pro" +msgstr "升級至 Pro 版" + +#: src/Admin/Area.php:567 src/Admin/SetupWizard.php:267 +msgid "Already purchased?" +msgstr "已購買授權?" + +#. Translators: %s - discount value $50. +#: src/Admin/Area.php:553 +msgid "Bonus: WP Mail SMTP users get %s off regular price,
applied at checkout." +msgstr "優惠通知: 凡是 WP Mail SMTP 的使用者,在結帳時均享有 %s 折價優惠。" + +#: src/Admin/Area.php:1274 +msgid "Educational notice for this mailer was successfully dismissed." +msgstr "這個郵件程式的使用方式通知已關閉。" + +#: src/Admin/Pages/MiscTab.php:199 +msgid "Hide Email Delivery Errors" +msgstr "隱藏電子郵件傳送錯誤" + +#. translators: %s - filter that was used to disabled. +#: src/Admin/Pages/MiscTab.php:224 +msgid "Email Delivery Errors were disabled using a %s filter." +msgstr "已使用 %s 篩選器停用電子郵件傳送錯誤。" + +#: src/Admin/Pages/MiscTab.php:233 +msgid "This is not recommended and should only be done for staging or development sites." +msgstr "這項設定不建議啟用,且僅該使用於測試或開發網站。" + +#. translators: %s - link to get an API Key. +#: src/Providers/PepipostAPI/Options.php:115 +#: src/Providers/Sendinblue/Options.php:139 +msgid "Follow this link to get an API Key: %s." +msgstr "請點擊右側連結取得 API 金鑰: %s" + +#: src/Providers/Sendinblue/Options.php:141 +msgid "Get v3 API Key" +msgstr "取得 v3 API 金鑰" + +#: src/Providers/Gmail/Options.php:55 +msgid "The Gmail mailer works well for sites that send low numbers of emails. However, Gmail's API has rate limitations and a number of additional restrictions that can lead to challenges during setup.

If you expect to send a high volume of emails, or if you find that your web host is not compatible with the Gmail API restrictions, then we recommend considering a different mailer option." +msgstr "Gmail 郵件程式非常適合僅需傳送少量電子郵件的網站。Gmail 的 API 限制了郵件傳送速率,並有多項讓設定產生一定難度的限制。

如果希望傳送大量電子郵件,或發現這個網站的主機與 Gmail API 限制不相容,我們建議改用其他郵件程式。" + +#: src/Providers/OptionsAbstract.php:485 +msgid "Meanwhile you can switch to some other mailers." +msgstr "這時也可以改用其他郵件程式。" + +#. Plugin URI of the plugin +#. Author URI of the plugin +#: wp_mail_smtp.php +msgid "https://wpmailsmtp.com/" +msgstr "https://wpmailsmtp.com/" + +#: src/Providers/Gmail/Auth.php:264 +msgid "There was an error while processing the Google authentication request. Please make sure that you have Client ID and Client Secret both valid and saved." +msgstr "處理 Google 驗證要求時發生錯誤,請確認你填寫的用戶端 ID 及用戶端密碼均為有效且已正確儲存。" + +#: assets/languages/wp-mail-smtp-vue.php:803 src/Admin/Area.php:190 +msgid "You have successfully linked the current site with your Google API project. Now you can start sending emails through Gmail." +msgstr "這個網站已成功透過外掛與 Google API 專案進行連結,並可開始使用 Gmail 服務傳送電子郵件。" + +#: src/Admin/Area.php:666 src/Admin/Area.php:674 +#: src/Admin/Pages/AboutTab.php:233 src/Connect.php:55 +msgid "Activate" +msgstr "啟用" + +#. translators: %1$s - WPBeginner URL for recommended WordPress hosting. +#: wp_mail_smtp.php:197 +msgid "Your site is running an insecure version of PHP that is no longer supported. Please contact your web hosting provider to update your PHP version or switch to a recommended WordPress hosting company." +msgstr "這個網站執行的是不再支援的 PHP 不安全版本。請聯絡這個網站的主機服務提供商,為 PHP 版本進行更新或改用我們推薦的 WordPress 主機服務提供商。" + +#. translators: %s - WPMailSMTP.com docs URL with more details. +#: wp_mail_smtp.php:225 +msgid "WP Mail SMTP plugin is disabled on your site until you fix the issue. Read more for additional information." +msgstr "WP Mail SMTP 外掛的功能會停用至這個網站的問題得到修正為止。進一步了解相關資訊" + +#: src/Admin/Area.php:1212 +msgid "WP Mail SMTP Pro related message was successfully dismissed." +msgstr "WP Mail SMTP Pro 相關訊息已關閉。" + +#: src/Admin/Area.php:670 +msgid "Processing..." +msgstr "正在處理..." + +#: src/Admin/Area.php:672 +msgid "Could not install a plugin. Please download from WordPress.org and install manually." +msgstr "無法安裝外掛。請從 WordPress.org 下載並進行手動安裝。" + +#: src/Admin/Area.php:673 +msgid "Install and Activate" +msgstr "安裝並啟用" + +#: src/Admin/Pages/SettingsTab.php:64 +msgid "License" +msgstr "使用授權" + +#: src/Admin/Pages/SettingsTab.php:67 +msgid "Your license key provides access to updates and support." +msgstr "授權金鑰能為網站提供這個外掛的升級及技術支援。" + +#: src/Admin/Pages/SettingsTab.php:98 +msgid "License Key" +msgstr "授權金鑰" + +#. translators: %s - WPMailSMTP.com URL. +#: src/Admin/Pages/TestTab.php:1488 +msgid "To access our world class support, please upgrade to WP Mail SMTP Pro. Along with getting expert support, you will also get Notification controls, Email Logging, and integrations for Amazon SES, Office 365, and Outlook.com." +msgstr "如需存取我們世界級的技術支援,請升級至 WP Mail SMTP Pro。除了可以獲得專家技術支援外,還可以使用通知控制項、電子郵件記錄,以及整合 Amazon SES、Office 365、Outlook.com 電子郵件服務等多項功能。" + +#: src/Admin/Pages/TestTab.php:1503 +msgid "Additionally, you can take advantage of our White Glove Setup. Sit back and relax while we handle everything for you! If you simply don't have time or maybe you feel a bit in over your head - we got you covered." +msgstr "此外,Pro 版使用者可以利用我們的代客安裝服務。我們可以為付費使用者處理外掛相關技術問題,無須使用者煩心。如果真的沒有時間或忙過頭,我們的服務包君滿意。" + +#. Translators: %s - discount value $50 +#: src/Admin/Pages/TestTab.php:1510 +msgid "As a valued WP Mail SMTP user, you will get %s off regular pricing, automatically applied at checkout!" +msgstr "每位我們所重視的 WP Mail SMTP Lite 使用者,均享有 %s 折價優惠,並且會在結帳時自動套用這項優惠。" + +#: src/Admin/Area.php:669 src/Admin/Pages/AboutTab.php:230 +msgid "Inactive" +msgstr "非使用中" + +#: src/Admin/Pages/AboutTab.php:104 +msgid "Yup, we know a thing or two about building awesome products that customers love." +msgstr "我們對開發符合客戶需求的產品瞭若指掌。" + +#: src/Admin/Pages/AboutTab.php:110 +msgid "The WPForms Team photo" +msgstr "WPForms 團隊照片" + +#: src/Admin/Pages/AboutTab.php:112 +msgid "The WPForms Team" +msgstr " WPForms 團隊" + +#. translators: %s - status HTML text. +#: src/Admin/Pages/AboutTab.php:175 +msgid "Status: %s" +msgstr "安裝狀態: %s" + +#: src/Admin/Pages/AboutTab.php:293 +msgid "MonsterInsights" +msgstr "MonsterInsights" + +#: src/Admin/Pages/AboutTab.php:299 +msgid "MonsterInsights Pro" +msgstr "MonsterInsights Pro" + +#: src/Admin/Pages/AboutTab.php:272 +msgid "OptinMonster" +msgstr "OptinMonster" + +#: src/Admin/SetupWizard.php:1062 +msgid "Contact Forms by WPForms" +msgstr "Contact Forms by WPForms" + +#: src/Admin/Pages/AboutTab.php:285 +msgid "WPForms Pro" +msgstr "WPForms Pro" + +#: src/Admin/Pages/AboutTab.php:526 +msgid "Could not activate the plugin. Please activate it from the Plugins page." +msgstr "無法啟用外掛,請在管理後台的 [外掛] 頁面啟用這個外掛。" + +#: src/Admin/Pages/AboutTab.php:558 +msgid "Plugin activated." +msgstr "外掛已啟用。" + +#: src/Admin/Pages/AboutTab.php:571 +msgid "Could not install the plugin." +msgstr "無法安裝外掛。" + +#: src/Admin/Pages/AboutTab.php:652 src/Connect.php:210 src/Connect.php:218 +#: src/Connect.php:298 +msgid "Plugin installed & activated." +msgstr "外掛已安裝並完成啟用。" + +#: src/Admin/Pages/AboutTab.php:660 +msgid "Plugin installed." +msgstr "外掛已安裝。" + +#: src/Admin/Pages/VersusTab.php:80 +msgid "Get the most out of WP Mail SMTP by upgrading to Pro and unlocking all of the powerful features." +msgstr "升級至 Pro 版便能獲得完整功能,讓 WP Mail SMTP 發揮最大效益。" + +#: src/Admin/Pages/VersusTab.php:89 +msgid "Feature" +msgstr "功能" + +#: src/Admin/Pages/VersusTab.php:99 +msgid "Pro" +msgstr "Pro" + +#: src/Admin/Pages/VersusTab.php:140 +msgid "Get WP Mail SMTP Pro Today and Unlock all of these Powerful Features" +msgstr "立即升級至 WP Mail SMTP Pro 並取得 Pro 版的全部強大功能" + +#: src/Admin/Pages/ControlTab.php:35 src/Admin/Pages/ControlTab.php:237 +#: src/Admin/Pages/VersusTab.php:177 +msgid "Email Controls" +msgstr "電子郵件控制項" + +#: src/Admin/Pages/VersusTab.php:180 +msgid "Customer Support" +msgstr "客戶技術支援" + +#: src/Admin/Pages/VersusTab.php:201 +msgid "Emails are not logged" +msgstr "不記錄任何電子郵件" + +#: src/Admin/Pages/VersusTab.php:215 +msgid "No controls over whether default WordPress emails are sent" +msgstr "對 WordPress 的預設電子郵件傳送不提供管理控制項" + +#: src/Admin/Pages/VersusTab.php:221 +msgid "Complete Email Controls management for most default WordPress emails" +msgstr "對 WordPress 的預設電子郵件進行完整的電子郵件控制項管理" + +#: src/Admin/Pages/VersusTab.php:257 +msgid "Limited Support" +msgstr "有限的技術支援" + +#: src/Admin/Pages/VersusTab.php:263 +msgid "Priority Support" +msgstr "優先技術支援" + +#: src/Admin/Pages/TestTab.php:164 +msgid "Enter email address where test email will be sent." +msgstr "請輸入接收測試電子郵件的電子郵件地址。" + +#: src/Admin/Pages/TestTab.php:950 +msgid "It seems that you forgot to activate your Mailgun account." +msgstr "可能的原因是尚未啟用 Mailgun 帳號。" + +#: src/Admin/Pages/TestTab.php:953 +msgid "Check your inbox you used to create a Mailgun account. Click the activation link in an email from Mailgun." +msgstr "請檢查用於建立 Mailgun 帳號的電子郵件收件匣,然後點擊來自 Mailgun 電子郵件中的帳號啟用連結。" + +#: src/Admin/Pages/TestTab.php:954 +msgid "If you do not see activation email, go to your Mailgun control panel and resend the activation email." +msgstr "如果沒有收到帳號啟用電子郵件," + +#. Translators: %s - discount value $50. +#: src/Admin/Pages/VersusTab.php:148 +msgid "Bonus: WP Mail SMTP Lite users get %s off regular price, automatically applied at checkout." +msgstr "優惠通知: 凡是 WP Mail SMTP Lite 的使用者,透過上方連結購買 Pro 版授權時均享有 %s 折價優惠,並且會在結帳時自動套用這項優惠。" + +#: src/Admin/Pages/AboutTab.php:75 +msgid "Email deliverability has been a well-documented problem for all WordPress websites. However as WPForms grew, we became more aware of this painful issue that affects our users and the larger WordPress community. So we decided to solve this problem and make a solution that's beginner friendly." +msgstr "電子郵件寄達率是每個 WordPress 網站管理員都銘記在心的事。隨著 WPForms 使用者人數的增長,我們也意識到這個會影響我們使用者及廣大 WordPress 社群的嚴重問題,因此我們決定著手解決這個問題,並讓解決方案對新手而言更加友善。" + +#: src/Admin/Pages/AboutTab.php:78 +msgid "Our goal is to make reliable email deliverability easy for WordPress." +msgstr "我們的目標是讓 WordPress 網站都能輕易達到可靠的電子郵件寄達率。" + +#: src/Admin/Area.php:327 src/Admin/Area.php:328 src/Admin/Pages/Logs.php:48 +#: src/Admin/Pages/LogsTab.php:51 src/Admin/Pages/LogsTab.php:143 +#: src/Admin/Pages/VersusTab.php:176 +msgid "Email Log" +msgstr "電子郵件記錄" + +#: src/Admin/Pages/About.php:50 src/Admin/Pages/AboutTab.php:44 +msgid "About Us" +msgstr "關於我們" + +#. translators: %s - plugin current license type. +#: src/Admin/Pages/VersusTab.php:72 +msgid "%s vs Pro" +msgstr "%s 及 Pro 版本功能比較" + +#: src/Admin/Pages/AboutTab.php:71 +msgid "Hello and welcome to WP Mail SMTP, the easiest and most popular WordPress SMTP plugin. We build software that helps your site reliably deliver emails every time." +msgstr "感謝採用 WP Mail SMTP 這個 WordPress 上最易用、最受歡迎的 SMTP 外掛,這個外掛能讓 WordPress 網站確實完成傳送電子郵件的工作。" + +#: src/Providers/Gmail/Options.php:171 +msgid "Please copy this URL into the \"Authorized redirect URIs\" field of your Google web application." +msgstr "請將這個網址複製到 Google API 網站上的網路應用程式專案的 [已授權的重新導向 URI] 欄位。" + +#: src/Providers/Gmail/Options.php:261 +msgid "You need to save settings with Client ID and Client Secret before you can proceed." +msgstr "在這個網站開始處理電子郵件前,必須先儲存包含用戶端 ID 及用戶端密碼的設定。" + +#: src/Admin/Area.php:437 src/Admin/Area.php:1308 +#: src/Admin/DashboardWidget.php:287 src/Admin/FlyoutMenu.php:100 +#: src/Admin/Pages/AdditionalConnectionsTab.php:115 +#: src/Admin/Pages/AdditionalConnectionsTab.php:125 +#: src/Admin/Pages/AlertsTab.php:90 src/Admin/Pages/AlertsTab.php:402 +#: src/Admin/Pages/ControlTab.php:246 src/Admin/Pages/ControlTab.php:299 +#: src/Admin/Pages/EmailReportsTab.php:137 +#: src/Admin/Pages/EmailReportsTab.php:175 src/Admin/Pages/ExportTab.php:89 +#: src/Admin/Pages/ExportTab.php:146 src/Admin/Pages/LogsTab.php:152 +#: src/Admin/Pages/LogsTab.php:190 src/Admin/Pages/SettingsTab.php:279 +#: src/Admin/Pages/SmartRoutingTab.php:111 +#: src/Admin/Pages/SmartRoutingTab.php:308 +msgid "Upgrade to WP Mail SMTP Pro" +msgstr "升級至 WP Mail SMTP Pro" + +#. translators: %1$s - date, \a\t - specially escaped "at", %2$s - time. +#: src/WP.php:248 +msgid "%1$s \\a\\t %2$s" +msgstr "%1$s%2$s" + +#. translators: %s - email address, as received from Google API. +#: src/Providers/Gmail/Options.php:226 +msgid "Connected as %s" +msgstr "目前是以 %s 的身分進行連線。" + +#. translators: %s - constant name: WPMS_SMTP_PASS. +#: src/Providers/OptionsAbstract.php:374 +msgid "To change the password you need to change the value of the constant there: %s" +msgstr "如需變更密碼,必須變更常數 %s 的值。" + +#. translators: %1$s - wp-config.php file, %2$s - WPMS_ON constant name. +#: src/Providers/OptionsAbstract.php:382 +msgid "If you want to disable the use of constants, find in %1$s file the constant %2$s and turn if off:" +msgstr "如需停用相關常數,請在 %1$s 檔案中關閉常數 %2$s。" + +#: src/Providers/OptionsAbstract.php:392 +msgid "All the defined constants will stop working and you will be able to change all the values on this page." +msgstr "全部已定義的常數會停止運作,然後網站管理員便能變更這個頁面全部的值。" + +#. translators: %1$s - constant that was used; %2$s - file where it was used. +#: src/Options.php:1752 +msgid "The value of this field was set using a constant %1$s most likely inside %2$s of your WordPress installation." +msgstr "這個欄位的值應使用 WordPress 網站 %2$s 檔案中的常數 %1$s。" + +#: wp_mail_smtp.php:169 +msgid "Please deactivate the free version of the WP Mail SMTP plugin before activating WP Mail SMTP Pro." +msgstr "在啟用 WP Mail SMTP Pro 前,請先停用免費版的 WP Mail SMTP 外掛。" + +#: src/Admin/Pages/TestTab.php:747 src/Admin/Pages/TestTab.php:789 +#: src/Admin/Pages/TestTab.php:905 +msgid "This means your web server was unable to connect to the host server." +msgstr "這代表這個網站的伺服器無法連線至 SMTP 伺服器。" + +#: assets/languages/wp-mail-smtp-vue.php:898 +msgid "Install" +msgstr "安裝" + +#: src/Admin/Pages/ExportTab.php:121 +msgid "Status" +msgstr "安裝狀態" + +#: src/SiteHealth.php:133 +msgid "Version" +msgstr "版本" + +#: src/Admin/DebugEvents/Event.php:360 src/Admin/DebugEvents/Table.php:170 +msgid "Type" +msgstr "安裝類型" + +#: src/Admin/DebugEvents/Event.php:375 src/Admin/DebugEvents/Table.php:172 +#: src/Admin/Pages/ExportTab.php:128 +msgid "Source" +msgstr "安裝來源" + +#: src/Admin/Pages/AboutTab.php:241 +msgid "Not Installed" +msgstr "尚未安裝" + +#: assets/languages/wp-mail-smtp-vue.php:1137 +msgid "Recommended" +msgstr "建議安裝" + +#: src/Admin/ConnectionSettings.php:302 +msgid "Dismiss this notice" +msgstr "關閉這項通知" + +#: assets/languages/wp-mail-smtp-vue.php:474 +#: src/Providers/Gmail/Options.php:180 +msgid "Authorization" +msgstr "驗證" + +#. translators: %s - plugin admin page URL. +#: src/Core.php:560 +msgid "Please review your WP Mail SMTP settings in plugin admin area." +msgstr "請在外掛設定頁中檢視 WP Mail SMTP 設定。" + +#: src/Admin/Pages/TestTab.php:1455 +msgid "Need support?" +msgstr "需要協助嗎?" + +#: src/Admin/Pages/TestTab.php:1447 +msgid "Recommended next steps:" +msgstr "建議的處理步驟:" + +#: src/Admin/Pages/TestTab.php:1392 +msgid "Try using a different mailer." +msgstr "請改用其他郵件程式。" + +#: src/Admin/Pages/TestTab.php:1386 +msgid "Contact your web hosting provider and ask them to verify your server can make outside connections. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue." +msgstr "聯絡這個網站的主機服務提供商,並要求它確認網站伺服器是否可進行外部連線。此外,同時詢問它是否有防火牆或安全性原則禁止了相關連線,因為有不少共用主機會封鎖相關的特定通訊埠。
請注意,這是造成這個問題的最常見原因。" + +#: src/Admin/Pages/TestTab.php:1379 +msgid "Your host is rejecting the connection." +msgstr "SMTP 伺服器拒絕連線。" + +#: src/Admin/Pages/TestTab.php:1373 +msgid "Plugin settings are incorrect (wrong SMTP settings, invalid Mailer configuration, etc)." +msgstr "外掛設定不正確,例如錯誤的 SMTP 設定、不正確的郵件程式設定等。" + +#: src/Admin/Pages/TestTab.php:1369 +msgid "This means your test email was unable to be sent." +msgstr "這代表無法傳送測試郵件。" + +#: src/Admin/Pages/TestTab.php:1367 +msgid "An issue was detected." +msgstr "檢測出問題。" + +#: src/Admin/Pages/TestTab.php:1229 +msgid "Try to use a separate project for your emails, so the project has only 1 Gmail API in it enabled. You will need to remove the old project and create a new one from scratch." +msgstr "試著為電子郵件建立僅啟用一個 Gmail API 的獨立專案。這會需要移除舊專案,並從頭開始建立新專案。" + +#: src/Admin/Pages/TestTab.php:1225 +msgid "You may have added a new API to a project" +msgstr "你可能已為專案新增了新的 API。" + +#. translators: %s - Gmail documentation URL. +#: src/Admin/Pages/TestTab.php:1203 +msgid "Please follow our Gmail tutorial to be sure that all the correct project and data is applied." +msgstr "請依照這篇 Gmail 教學課程,以確認套用了正確的專案及資料。" + +#: src/Admin/Pages/TestTab.php:1200 src/Admin/Pages/TestTab.php:1228 +msgid "Make sure that the used Client ID/Secret correspond to a proper project that has Gmail API enabled." +msgstr "確認使用的用戶端 ID/用戶端密碼對應的是啟用了 Gmail API 的正確專案。" + +#. translators: %s - Google Developers Console URL. +#: src/Admin/Pages/TestTab.php:1178 +msgid "Make sure that you have Gmail API enabled, and you can do that here." +msgstr "確認 Gmail API 已啟用,這項操作可在這裡進行。" + +#: src/Admin/Pages/TestTab.php:1147 +msgid "There are various reasons for that, please review the steps below." +msgstr "有許多原因會造成這個狀況,請檢閱以下步驟。" + +#: src/Admin/Pages/TestTab.php:1136 +msgid "Make sure there is no aggressive caching on site admin area pages or try to clean cache between attempts." +msgstr "確認網站後台管理頁面並未採用加強式快取,或在每次嘗試連線後清除快取。" + +#: src/Admin/Pages/TestTab.php:1135 +msgid "Reinstall the plugin with clean plugin data turned on on Misc page. This will remove all the plugin options and you will be safe to retry." +msgstr "在 [其他] 分頁中啟用清除外掛資料重新安裝外掛的設定。這會移除全部外掛設定資料,以便進行重新設定。" + +#: src/Admin/Pages/TestTab.php:1134 +msgid "Make sure that you are not trying to manually clean up the plugin options to retry the \"Allow...\" step." +msgstr "確認未曾嘗試手動清除外掛設定,以便重試 [允許] 步驟。" + +#: src/Admin/Pages/TestTab.php:1131 +msgid "Authentication code that Google returned to you has already been used on your previous auth attempt." +msgstr "Google 傳回的驗證代碼已使用於之前的驗證嘗試。" + +#: src/Admin/Pages/TestTab.php:1103 +msgid "Unfortunately, this error can be due to many different reasons." +msgstr "不過,這項錯誤通常由許多不同原因造成。" + +#: src/Admin/Pages/TestTab.php:1092 +msgid "Make sure that the generated email has a TO header, useful when you are responsible for email creation." +msgstr "確認產生的電子郵件具備 TO (收件者) 標頭,這對負責建立電子郵件的人員會非常有幫助。" + +#. translators: 1 - correct email address example. 2 - incorrect email address +#. example. +#: src/Admin/Pages/TestTab.php:1088 +msgid "It should be something like this: %1$s. These are incorrect values: %2$s." +msgstr "有效電子郵件地址的範例: %1$s。無效電子郵件地址的範例: %2$s。" + +#: src/Admin/Pages/TestTab.php:1086 +msgid "Check the \"Send To\" email address used and confirm it is a valid email and was not empty." +msgstr "檢查輸入於 [收件者] 欄位的電子郵件地址,並確認它是有效的電子郵件地址且非空值。" + +#. translators: %s - Google support article URL. +#: src/Admin/Pages/TestTab.php:1045 +msgid "if you are using regular Gmail account, please read this article to proceed." +msgstr "如果是用的是一般 Gmail 帳戶,請閱讀這份線上說明以繼續進行。" + +#: src/Admin/Pages/TestTab.php:1040 +msgid "Please click \"Agree\", if you see that button. If not - you will need to enable less secure apps first:" +msgstr "如果有 [允許] 按鈕,請點擊該按鈕;如果並未出現該按鈕,必須先啟用低安全性應用程式:" + +#: src/Admin/Pages/TestTab.php:1034 +msgid "You have not properly configured Gmail mailer." +msgstr "這代表 Gmail 郵件程式目前並未正確設定。" + +#: src/Admin/Pages/TestTab.php:1032 src/Admin/Pages/TestTab.php:1081 +#: src/Admin/Pages/TestTab.php:1101 src/Admin/Pages/TestTab.php:1129 +#: src/Admin/Pages/TestTab.php:1145 src/Admin/Pages/TestTab.php:1197 +#: src/Admin/Pages/TestTab.php:1223 +msgid "Google API Error." +msgstr "Google API 發生錯誤。" + +#: src/Admin/Pages/TestTab.php:1005 +msgid "Your Mailgun account does not have access to send emails." +msgstr "目前的 Mailgun 帳號沒有傳送電子郵件的權限。" + +#: src/Admin/Pages/TestTab.php:948 src/Admin/Pages/TestTab.php:963 +#: src/Admin/Pages/TestTab.php:1003 +msgid "Mailgun failed." +msgstr "存取 Mailgun 發生錯誤。" + +#: src/Admin/Pages/TestTab.php:936 +msgid "no" +msgstr "不" + +#: src/Admin/Pages/TestTab.php:920 +msgid "Triple check your SMTP settings including host address, email, and password, port, and security." +msgstr "請反覆檢查 SMTP 相關設定是否正確,包含 SMTP 伺服器位址、寄件帳號及密碼、通訊埠及安全性設定。" + +#. translators: %1$s - SMTP host address, %2$s - SMTP port, %3$s - SMTP +#. encryption. +#: src/Admin/Pages/TestTab.php:923 +msgid "Contact your web hosting provider and ask them to verify your server can connect to %1$s on port %2$s using %3$s encryption. Additionally, ask them if a firewall or security policy may be preventing the connection - many shared hosts block certain ports.
Note: this is the most common cause of this issue." +msgstr "請聯絡這個網站的主機服務提供商,並要求它確認目前的網站伺服器能以通訊埠 %2$s 連線至使用 %3$s 加密的 %1$s。此外,同時詢問它是否有防火牆或安全性原則禁止了相關連線,因為有不少共用主機會封鎖相關的特定通訊埠。
請注意,這是造成這個問題的最常見原因。" + +#: src/Admin/Pages/TestTab.php:915 +msgid "Your SMTP host is rejecting the connection." +msgstr "SMTP 伺服器拒絕連線。" + +#: src/Admin/Pages/TestTab.php:912 src/Admin/Pages/TestTab.php:1376 +msgid "Your web server is blocking the connection." +msgstr "目前的網站伺服器封鎖了傳送至 SMTP 伺服器的連線。" + +#: src/Admin/Pages/TestTab.php:909 +msgid "SMTP settings are incorrect (wrong port, security setting, incorrect host)." +msgstr "SMTP 的相關設定不正確,例如錯誤的通訊埠號、安全性設定有誤或不正確的 SMTP 伺服器位址。" + +#: src/Admin/Pages/TestTab.php:906 src/Admin/Pages/TestTab.php:1370 +msgid "Typically this error is returned for one of the following reasons:" +msgstr "一般來說,傳回這項錯誤是因為以下其中一項原因所造成:" + +#: src/Admin/Pages/TestTab.php:898 +msgid "Could not connect to the SMTP host." +msgstr "無法連線至 SMTP 伺服器。" + +#: src/Admin/Pages/TestTab.php:859 +msgid "Enter correct SMTP Username (usually this is an email address) and Password in the appropriate fields." +msgstr "在對應的欄位輸入正確的 SMTP 使用者名稱 (通常就是電子郵件地址) 及密碼。" + +#: assets/languages/wp-mail-smtp-vue.php:607 src/Admin/Pages/TestTab.php:858 +msgid "Enable Authentication" +msgstr "啟用驗證" + +#: src/Admin/Pages/TestTab.php:770 src/Admin/Pages/TestTab.php:857 +msgid "Go to WP Mail SMTP plugin Settings page." +msgstr "前往 WP Mail SMTP 外掛 [設定] 頁面。" + +#: src/Admin/Pages/TestTab.php:854 +msgid "This means the connection to your SMTP host was made successfully, but you should enable Authentication and provide correct Username and Password." +msgstr "這代表可成功連線至 SMTP 伺服器,但必須啟用外掛的中的 [驗證] 設定並提供正確的 [STMP 使用者名稱] 及 [SMTP 密碼]。" + +#: src/Admin/Pages/TestTab.php:852 +msgid "Unauthenticated senders are not allowed." +msgstr "不接受未驗證的寄件者。" + +#: src/Admin/Pages/TestTab.php:843 +msgid "Verify with them your SMTP account is in good standing and your account has not been flagged." +msgstr "請聯絡 SMTP 服務提供商,確認目前的 SMTP 帳號是否仍具備使用資格,以及帳號是否已遭標幟。" + +#: src/Admin/Pages/TestTab.php:842 +msgid "Contact your SMTP host to ask about sending/rate limits." +msgstr "請聯絡 SMTP 服務提供商洽詢關於電子郵件傳送配額限制的相關資訊。" + +#: src/Admin/Pages/TestTab.php:837 +msgid "This means the connection to your SMTP host was made successfully, but the host rejected the email." +msgstr "這代表可成功連線至 SMTP 伺服器,但 SMTP 伺服器拒絕傳送郵件。" + +#: src/Admin/Pages/TestTab.php:835 +msgid "Error due to unsolicited and/or bulk e-mail." +msgstr "由於來路不明電子郵件及/或大量電子郵件導致發生錯誤。" + +#: src/Admin/Pages/TestTab.php:812 src/Admin/Pages/TestTab.php:939 +msgid "Verify with your SMTP host that your account has permissions to send emails using outside connections." +msgstr "請聯絡 SMTP 服務提供商,確認目前使用的帳號是否具備以外部連線傳送電子郵件的權限。" + +#: src/Admin/Pages/TestTab.php:811 src/Admin/Pages/TestTab.php:938 +msgid "Contact your SMTP host to confirm you are using the correct username and password." +msgstr "請聯絡 SMTP 服務提供商,確認目前使用的使用者名稱及密碼是否正確。" + +#: src/Admin/Pages/TestTab.php:810 +msgid "Triple check your SMTP settings including host address, email, and password. If you have recently reset your password you will need to update the settings." +msgstr "請反覆檢查 SMTP 相關設定是否正確,包含 SMTP 伺服器位址、寄件帳號及密碼。如果最近變更過寄件密碼,請更新外掛中的相關設定。" + +#: src/Admin/Pages/TestTab.php:807 +msgid "Typically this error is returned when the email or password is not correct or is not what the SMTP host is expecting." +msgstr "一般來說,傳回這項錯誤是因為設定了不正確的寄件帳號/密碼或設定不符合 SMTP 伺服器規則。" + +#: src/Admin/Pages/TestTab.php:806 +msgid "This means we were able to connect to your SMTP host, but were not able to proceed using the email/password in the settings." +msgstr "這代表外掛能夠連線至指定的 SMTP 伺服器,但無法以設定中的電子郵件地址 (帳號)/密碼繼續執行。" + +#: src/Admin/Pages/TestTab.php:804 +msgid "Could not authenticate your SMTP account." +msgstr "無法驗證 SMTP 帳號。" + +#: src/Admin/Pages/TestTab.php:793 +msgid "Contact your web hosting provider and inform them you are having issues making outbound connections." +msgstr "聯絡這個網站的主機服務提供商,並通知它網站主機在進行外寄連線時發生問題。" + +#: src/Admin/Pages/TestTab.php:782 +msgid "Could not connect to your host." +msgstr "無法連線至 SMTP 伺服器。" + +#: src/Admin/Pages/TestTab.php:756 +msgid "If using \"Other SMTP\" Mailer, contact your SMTP host to confirm they are accepting outside connections with the settings you have configured (address, username, port, security, etc)." +msgstr "如果使用了 [其他 SMTP] 郵件程式,請聯絡 SMTP 服務提供商以確認 SMTP 伺服器是否接受包含目前設定 (SMTP 伺服器位址、使用者名稱、通訊埠、安全性設定等等) 的外部連線。" + +#: src/Admin/Pages/TestTab.php:755 +msgid "If using \"Other SMTP\" Mailer, triple check your SMTP settings including host address, email, and password." +msgstr "如果使用了 [其他 SMTP] 郵件程式,請反覆檢查 SMTP 相關設定是否正確,包含 SMTP 伺服器位址、寄件帳號及密碼。" + +#. translators: %s - SMTP host address. +#: src/Admin/Pages/TestTab.php:752 +msgid "Contact your web hosting provider and ask them to verify your server can connect to %s. Additionally, ask them if a firewall or security policy may be preventing the connection." +msgstr "聯絡這個網站的主機服務提供商,並要求它確認網站伺服器是否連線至 %s。此外,同時詢問它是否有防火牆或安全性原則禁止了相關連線。" + +#: src/Admin/Pages/TestTab.php:748 +msgid "Typically this error is returned your web server is blocking the connections or the SMTP host denying the request." +msgstr "一般來說,傳回這項錯誤是因為這個網站的伺服器封鎖了傳送至 SMTP 伺服器的連線或 SMTP 伺服器拒絕了連線要求。" + +#. translators: %s - SMTP host address. +#: src/Admin/Pages/TestTab.php:744 src/Admin/Pages/TestTab.php:786 +#: src/Admin/Pages/TestTab.php:902 +msgid "This means your web server was unable to connect to %s." +msgstr "這代表這個網站的伺服器無法連線至 %s。" + +#: src/Admin/Pages/TestTab.php:740 +msgid "Could not connect to host." +msgstr "無法連線至 SMTP 伺服器。" + +#: src/Admin/Pages/TestTab.php:730 src/Admin/Pages/TestTab.php:795 +msgid "Ask them to resolve the issue then try again." +msgstr "要求它解決問題然後再試一次。" + +#: src/Admin/Pages/TestTab.php:729 src/Admin/Pages/TestTab.php:794 +msgid "The exact error you can provide them is in the Error log, available at the bottom of this page." +msgstr "請提供錯誤記錄中的確切錯誤,這些資訊可於本頁底部找到。" + +#: src/Admin/Pages/TestTab.php:728 +msgid "Contact your web hosting provider and inform them your site has an issue with SSL certificates." +msgstr "聯絡這個網站的主機服務提供商,並通知它這個網站有 SSL 憑證的問題。" + +#: src/Admin/Pages/TestTab.php:725 src/Admin/Pages/TestTab.php:790 +msgid "Typically this error is returned when web server is not configured properly." +msgstr "一般來說,傳回這項錯誤是因為網頁伺服器並未正確設定。" + +#: src/Admin/Pages/TestTab.php:724 +msgid "This means your web server cannot reliably make secure connections (make requests to HTTPS sites)." +msgstr "這代表這個網站的伺服器無法可靠地建立安全連線 (向 HTTPS 網站發出要求)。" + +#: src/Admin/Pages/TestTab.php:722 +msgid "SSL certificate issue." +msgstr "SSL 憑證問題。" + +#: src/Admin/ConnectionSettings.php:190 +msgid "If checked, the From Name setting above will be used for all emails, ignoring values set by other plugins." +msgstr "啟用這項設定後,上方 [寄件者名稱] 中的設定便會套用至全部外寄電子郵件,並忽略其他外掛的相關設定。" + +#: assets/languages/wp-mail-smtp-vue.php:249 +#: src/Admin/ConnectionSettings.php:169 +msgid "Force From Name" +msgstr "強制使用 [寄件者名稱] 設定" + +#: src/Admin/ConnectionSettings.php:126 +msgid "If checked, the From Email setting above will be used for all emails, ignoring values set by other plugins." +msgstr "啟用這項設定後,上方 [寄件者電子郵件地址] 中的設定便會套用至全部外寄電子郵件,並忽略其他外掛的相關設定。" + +#: assets/languages/wp-mail-smtp-vue.php:259 +#: src/Admin/ConnectionSettings.php:105 +msgid "Force From Email" +msgstr "強制使用 [寄件者電子郵件地址] 設定" + +#: src/Admin/ConnectionSettings.php:98 +msgid "Please note that other plugins can change this, to prevent this use the setting below." +msgstr "請注意,其他外掛能變更這項設定值;如需防止變更,請使用下方的設定。" + +#: src/Admin/Pages/MiscTab.php:400 +msgid "Uninstall WP Mail SMTP" +msgstr "解除安裝 WP Mail SMTP" + +#. translators: %s - Mailer anchor link. +#: src/Admin/Area.php:221 +msgid "Thanks for using WP Mail SMTP! To complete the plugin setup and start sending emails, please select and configure your Mailer." +msgstr "感謝採用 WP Mail SMTP。要完成外掛設定並開始傳送電子郵件,請先選取郵件程式並加以設定。" + +#: assets/languages/wp-mail-smtp-vue.php:595 +#: src/Providers/OptionsAbstract.php:307 +msgid "Auto TLS" +msgstr "自動 TLS" + +#: assets/languages/wp-mail-smtp-vue.php:616 +#: src/Providers/OptionsAbstract.php:285 +msgid "For most servers TLS is the recommended option. If your SMTP provider offers both SSL and TLS options, we recommend using TLS." +msgstr "對多數的伺服器來說,TLS 是建議設定。如果 SMTP 服務提供商同時提供了 SSL 及 TLS 設定,建議採用 TLS。" + +#. translators: %s - SendGrid access level. +#: src/Providers/Sendgrid/Options.php:105 +msgid "To send emails you will need only a %s access level for this API key." +msgstr "僅需取得 %s 存取層級的 API 金鑰,便能傳送郵件。" + +#: src/Providers/Sendgrid/Options.php:97 +msgid "Create API Key" +msgstr "建立 API 金鑰" + +#: assets/languages/wp-mail-smtp-vue.php:294 +#: src/Providers/ElasticEmail/Options.php:93 +#: src/Providers/MailerSend/Options.php:88 src/Providers/Mailjet/Options.php:93 +#: src/Providers/Mandrill/Options.php:89 +#: src/Providers/PepipostAPI/Options.php:96 src/Providers/Resend/Options.php:94 +#: src/Providers/Sendgrid/Options.php:68 +#: src/Providers/Sendinblue/Options.php:112 +#: src/Providers/Sendlayer/Options.php:178 src/Providers/SMTP2GO/Options.php:94 +#: src/Providers/SMTPcom/Options.php:107 src/Providers/SparkPost/Options.php:88 +msgid "API Key" +msgstr "API 金鑰" + +#: src/Providers/Sendgrid/Options.php:30 +msgid "SendGrid" +msgstr "SendGrid" + +#: src/Providers/SMTP/Options.php:28 +msgid "Other SMTP" +msgstr "其他 SMTP" + +#: src/Providers/PepipostAPI/Options.php:63 +msgid "Pepipost" +msgstr "Pepipost" + +#: assets/languages/wp-mail-smtp-vue.php:613 +#: src/Providers/OptionsAbstract.php:362 +msgid "SMTP Password" +msgstr "SMTP 密碼" + +#: assets/languages/wp-mail-smtp-vue.php:610 +#: src/Providers/OptionsAbstract.php:348 +msgid "SMTP Username" +msgstr "SMTP 使用者名稱" + +#: src/Helpers/UI.php:38 +msgid "Off" +msgstr "停用" + +#: src/Helpers/UI.php:37 +msgid "On" +msgstr "啟用" + +#: assets/languages/wp-mail-smtp-vue.php:625 +#: src/Providers/OptionsAbstract.php:281 +msgid "TLS" +msgstr "TLS" + +#: assets/languages/wp-mail-smtp-vue.php:622 +#: src/Providers/OptionsAbstract.php:272 +msgid "SSL" +msgstr "SSL" + +#: assets/languages/wp-mail-smtp-vue.php:619 +#: src/Admin/Pages/SettingsTab.php:368 src/Providers/OptionsAbstract.php:263 +msgid "None" +msgstr "無" + +#: src/Providers/Mailgun/Options.php:120 +msgid "Get a Domain Name" +msgstr "取得網域名稱" + +#: assets/languages/wp-mail-smtp-vue.php:224 +#: src/Providers/Mailgun/Options.php:106 +msgid "Domain Name" +msgstr "網域名稱" + +#: assets/languages/wp-mail-smtp-vue.php:221 +msgid "Private API Key" +msgstr "私密 API 金鑰" + +#: src/Providers/Mailgun/Options.php:29 +msgid "Mailgun" +msgstr "Mailgun" + +#: src/Providers/Mail/Options.php:26 +msgid "Default (none)" +msgstr "不使用其他服務 (預設)" + +#: src/Providers/Gmail/Options.php:211 +msgid "Click the button above to confirm authorization." +msgstr "按一下上方按鈕以確認授權。" + +#: src/Providers/Gmail/Options.php:166 +msgid "Copy URL to clipboard" +msgstr "複製網址至剪貼簿" + +#: src/Providers/Gmail/Options.php:158 +msgid "Authorized redirect URI" +msgstr "已授權的重新導向 URI" + +#: assets/languages/wp-mail-smtp-vue.php:468 +#: src/Providers/Gmail/Options.php:128 +msgid "Client Secret" +msgstr "用戶端密碼" + +#: assets/languages/wp-mail-smtp-vue.php:465 +#: src/Providers/Gmail/Options.php:113 +msgid "Client ID" +msgstr "用戶端 ID" + +#: src/Admin/Pages/TestTab.php:1430 +msgid "There was a problem while sending the test email." +msgstr "傳送測試電子郵件時發生問題。" + +#. translators: %s - email address a test email will be sent to. +#: src/Admin/Pages/TestTab.php:330 src/Admin/Pages/TestTab.php:337 +msgid "Test email to %s" +msgstr "傳送至 %s 的測試電子郵件" + +#: src/Admin/Pages/TestTab.php:318 +msgid "Test failed. Please use a valid email address and try to resend the test email." +msgstr "測試失敗。請輸入有效的電子郵件地址並重新傳送測試電子郵件。" + +#: src/Admin/Pages/TestTab.php:218 +msgid "Send Email" +msgstr "傳送電子郵件" + +#: src/Admin/Pages/AlertsTab.php:153 src/Admin/Pages/TestTab.php:158 +msgid "Send To" +msgstr "收件者" + +#: src/Admin/Pages/TestTab.php:113 +msgid "Email Test" +msgstr "電子郵件測試" + +#: src/Admin/Pages/DebugEventsTab.php:375 src/Admin/Pages/MiscTab.php:537 +#: src/Admin/Pages/SettingsTab.php:435 +msgid "Settings were successfully saved." +msgstr "設定已成功儲存。" + +#: src/Admin/Area.php:539 src/Admin/PageAbstract.php:192 +msgid "Save Settings" +msgstr "儲存設定" + +#: src/Admin/Area.php:393 src/Admin/Area.php:399 +#: src/Admin/Pages/SettingsTab.php:38 +msgid "General" +msgstr "一般" + +#: src/Admin/Pages/MiscTab.php:40 +msgid "Misc" +msgstr "其他" + +#: src/Admin/Area.php:174 +msgid "There was an error while processing the authentication request. Please make sure that you have Client ID and Client Secret both valid and saved." +msgstr "處理驗證要求時發生錯誤,請確認你填寫的用戶端 ID 及用戶端密碼均為有效且已正確儲存。" + +#: assets/languages/wp-mail-smtp-vue.php:788 src/Admin/Area.php:167 +msgid "There was an error while processing the authentication request. Please try again." +msgstr "處理驗證要求時發生錯誤,請稍後再試。" + +#. translators: %s - error code, returned by Google API. +#: src/Admin/Area.php:160 +msgid "There was an error while processing the authentication request: %s. Please try again." +msgstr "處理 %s 的驗證要求時發生錯誤,請稍後再試。" + +#: src/Admin/Pages/MiscTab.php:174 +msgid "Hide Announcements" +msgstr "隱藏通知" + +#: src/Admin/Pages/AboutTab.php:279 src/Admin/Pages/SmartRoutingTab.php:278 +msgid "WPForms" +msgstr "WPForms" + +#: src/Admin/ConnectionSettings.php:216 +msgid "Return Path indicates where non-delivery receipts - or bounce messages - are to be sent." +msgstr "傳回路徑會指出未傳送的收件者或退回的郵件會傳送至何處。" + +#: src/Admin/Pages/MiscTab.php:79 +msgid "Do Not Send" +msgstr "停止傳送郵件" + +#: src/Admin/Pages/MiscTab.php:96 +msgid "You will need to consult with their documentation to switch them to use default WordPress email delivery." +msgstr "網站管理員需要查閱這類外掛的相關說明文件,將其切換為使用預設的 WordPress 電子郵件傳送方式。" + +#: src/Admin/Pages/MiscTab.php:98 +msgid "Test emails are allowed to be sent, regardless of this option." +msgstr "無論這項設定為何,外掛都會傳送測試電子郵件。" + +#: src/Admin/Pages/TestTab.php:181 +msgid "HTML" +msgstr "HTML 格式電子郵件" + +#: src/Admin/Pages/TestTab.php:194 +msgid "Send this email in HTML or in plain text format." +msgstr "設定要以 HTML 或純文字格式傳送測試電子郵件。" + +#: src/Admin/Pages/TestTab.php:214 +msgid "You cannot send an email. Mailer is not properly configured. Please check your settings." +msgstr "由於郵件程式並未正確設定,因此這個網站無法傳送電子郵件。請檢查相關設定。" + +#: assets/languages/wp-mail-smtp-vue.php:227 +#: src/Providers/Mailgun/Options.php:131 +#: src/Providers/SparkPost/Options.php:131 +msgid "Region" +msgstr "寄件/資料儲存地區" + +#: assets/languages/wp-mail-smtp-vue.php:284 +#: src/Providers/Mailgun/Options.php:141 +#: src/Providers/SparkPost/Options.php:141 +msgid "US" +msgstr "美國" + +#: assets/languages/wp-mail-smtp-vue.php:287 +#: src/Providers/Mailgun/Options.php:150 +#: src/Providers/SparkPost/Options.php:150 +msgid "EU" +msgstr "歐盟" + +#: src/Providers/Mailgun/Options.php:154 +msgid "Define which endpoint you want to use for sending messages." +msgstr "請選取要用於傳送訊息的端點。" + +#: src/Providers/Mailgun/Options.php:155 +msgid "If you are operating under EU laws, you may be required to use EU region." +msgstr "如果相關業務的營運必須遵守歐盟法規,請選取歐盟地區。" + +#. translators: %s - URL to Mailgun.com page. +#: src/Providers/Mailgun/Options.php:160 +msgid "More information on Mailgun.com." +msgstr "請參考 Mailgun.com 上的進一步說明。" + +#: src/Admin/Pages/TestTab.php:1481 +msgid "WP Mail SMTP is a free plugin, and the team behind WPForms maintains it to give back to the WordPress community." +msgstr "WP Mail SMTP 是免費外掛,由 WPForms 的幕後開發團隊開發維護,並將它貢獻給 WordPress 社群。" + +#. translators: %1$s - Provider name; %2$s - PHP version required by Provider; +#. %3$s - current PHP version. +#: src/Providers/OptionsAbstract.php:478 +msgid "%1$s requires PHP %2$s to work and does not support your current PHP version %3$s. Please contact your host and request a PHP upgrade to the latest one." +msgstr "%1$s 需要 PHP %2$s (或更新版本) 才能正確執行,它不支援這台主機目前所使用的 PHP %3$s。請聯絡你的主機服務商,並提出將 PHP 升級至最新版的要求。" + +#: src/Admin/Area.php:531 +msgid "Are you sure you want to reset the current provider connection? You will need to immediately create a new one to be able to send emails." +msgstr "確定要重設目前的服務提供商連線嗎?這樣會需要立即建立新的連線,才能傳送電子郵件。" + +#: assets/languages/wp-mail-smtp-vue.php:904 src/Admin/Area.php:667 +#: src/Admin/Pages/AboutTab.php:225 +msgid "Activated" +msgstr "已啟用" + +#: src/Admin/Pages/AboutTab.php:244 +msgid "Install Plugin" +msgstr "安裝外掛" + +#. translators: %s - WPMailSMTP.com account area link. +#: src/Admin/Pages/TestTab.php:1463 +msgid "As a WP Mail SMTP Pro user you have access to WP Mail SMTP priority support. Please log in to your WPMailSMTP.com account and submit a support ticket." +msgstr "每一位 WP Mail SMTP Pro 的使用者均可存取 WP Mail SMTP 的優先技術支援。請登入 WPMailSMTP.com 帳號,並提交技術支援需求。" + +#: src/Admin/Pages/TestTab.php:838 +msgid "Typically this error is returned when you are sending too many e-mails or e-mails that have been identified as spam." +msgstr "一般來說,傳回這項錯誤是因為傳送過量的電子郵件或外寄的電子郵件遭判定為垃圾郵件。" + +#: src/Admin/Area.php:668 src/Admin/Pages/AboutTab.php:222 +msgid "Active" +msgstr "使用中" + +#. translators: %s - Mailgun documentation URL. +#: src/Admin/Pages/TestTab.php:1011 +msgid "Go to our how-to guide for setting up Mailgun with WP Mail SMTP." +msgstr "請參考這篇〈如何使用 WP Mail SMTP 外掛以 Mailgun 為 WordPress 網站傳送電子郵件 〉以進行必要的設定。" + +#: src/Admin/Pages/TestTab.php:1023 +msgid "Complete the steps in section \"2. Verify Your Domain\"." +msgstr "請完成〈2. 驗證網域名稱〉章節中的步驟。" + +#. translators: %s - Domain Name link. +#: src/Providers/Mailgun/Options.php:118 +msgid "Follow this link to get a Domain Name from Mailgun: %s." +msgstr "請依照〈%s〉中的指示,從 Mailgun 取得網域名稱。" + +#. translators: %s - API key link. +#: src/Providers/Sendgrid/Options.php:95 +msgid "Follow this link to get an API Key from SendGrid: %s." +msgstr "請依照〈%s〉中的指示,從 SendGrid 取得 API 金鑰。" + +#: src/Admin/Pages/MiscTab.php:87 +msgid "Some plugins, like BuddyPress and Events Manager, are using their own email delivery solutions. By default, this option does not block their emails, as those plugins do not use default wp_mail() function to send emails." +msgstr "某些外掛 (如 BuddyPress 及 Events Manager) 會採用自有的電子郵件傳送解決方案。依照預設,這項設定不會封鎖這類外掛傳送電子郵件,因為他們並不是使用預設的 wp_mail() 函式傳送電子郵件。" + +#: src/Admin/Pages/TestTab.php:1039 +msgid "After the click you should be redirected to a Gmail authorization screen, where you will be asked a permission to send emails on your behalf." +msgstr "點擊按鈕後,會重新導向至 Gmail 驗證畫面;在這個畫面中,外掛會要求授予以指定的 Gmail 帳戶傳送電子郵件的權限。" + +#: src/Admin/Pages/TestTab.php:1038 +msgid "Go to plugin Settings page and click the \"Allow plugin to send emails using your Google account\" button." +msgstr "前往外掛設定頁面並點擊 [授予外掛使用 Google 帳戶傳送電子郵件的權限] 按鈕。" + +#: src/Admin/Pages/TestTab.php:1035 +msgid "Make sure that you have clicked the \"Allow plugin to send emails using your Google account\" button under Gmail settings." +msgstr "確認在外掛的 Gmail 設定中已點擊過 [授予外掛使用 Google 帳戶傳送電子郵件的權限] 按鈕。" + +#: src/Admin/ConnectionSettings.php:95 +msgid "If you're using an email provider (Yahoo, Outlook.com, etc) this should be your email address for that account." +msgstr "如果採用的是 Yahoo、Outlook.com 這類電子郵件服務提供商,請填寫服務帳號的電子郵件地址。" + +#: src/Providers/Gmail/Options.php:208 +msgid "Allow plugin to send emails using your Google account" +msgstr "授予外掛使用 Google 帳戶傳送電子郵件的權限" + +#. translators: %1$s - WP.org link; %2$s - same WP.org link. +#: src/Admin/Area.php:753 +msgid "Please rate WP Mail SMTP ★★★★★ on WordPress.org to help us spread the word. Thank you from the WP Mail SMTP team!" +msgstr "請在 WordPress.org 上給予 WP Mail SMTP 5 星評分,協助我們推廣這個外掛。WP Mail SMTP 團隊先行致謝。" + +#. translators: %s - Blog article URL. +#: src/Admin/Pages/TestTab.php:1106 +msgid "Please read this article to learn more about what can cause this error and follow the steps below." +msgstr "請參考這篇文章以進一步了解造成這項錯誤的原因,並依照以下步驟進行修正。" + +#. translators: %1$s - WP Mail SMTP support policy URL, %2$s - WP Mail SMTP +#. support forum URL, %3$s - WPMailSMTP.com URL. +#: src/Admin/Pages/TestTab.php:1526 +msgid "Alternatively, we also offer limited support on the WordPress.org support forums. You can create a support thread there, but please understand that free support is not guaranteed and is limited to simple issues. If you have an urgent or complex issue, then please consider upgrading to WP Mail SMTP Pro to access our priority support ticket system." +msgstr "此外,我們也在 WordPress.org 技術支援論壇提供有限的技術支援。有需要的使用者可以自行建立技術支援討論貼文,但請了解免費技術支援不提供任何保證,並僅限於簡單的問題。如果發生緊急或狀況複雜的問題,請考慮升級至 WP Mail SMTP Pro,便能存取我們的優先技術支援需求系統。" + +#: assets/languages/wp-mail-smtp-vue.php:274 +#: src/Admin/ConnectionSettings.php:162 +msgid "The name that emails are sent from." +msgstr "設定用於傳送電子郵件的寄件者名稱。" + +#: assets/languages/wp-mail-smtp-vue.php:278 +#: src/Admin/ConnectionSettings.php:92 +#: src/Providers/Sendlayer/QuickConnect.php:674 +msgid "The email address that emails are sent from." +msgstr "設定用於傳送電子郵件的電子郵件地址。" + +#: assets/languages/wp-mail-smtp-vue.php:601 +#: src/Providers/OptionsAbstract.php:321 +msgid "By default, TLS encryption is automatically used if the server supports it (recommended). In some cases, due to server misconfigurations, this can cause issues and may need to be disabled." +msgstr "依照預設,如果伺服器支援 TLS 加密 (建議採用),便會自動使用 TLS 加密。在某些情況下,由於伺服器設定錯誤導致 TLS 加密可能發生問題,這時便會需要停用 TLS 加密。" + +#: assets/languages/wp-mail-smtp-vue.php:809 +msgid "You have successfully linked the current site with your Zoho Mail API project. Now you can start sending emails through Zoho Mail." +msgstr "這個網站已成功透過外掛與 Zoho Mail API 專案進行連結,並可開始使用 Zoho Mail 服務傳送電子郵件。" + +#: src/Admin/ConnectionSettings.php:217 +msgid "If unchecked, bounce messages may be lost." +msgstr "如果未啟用這項設定,便會遺失退回的郵件。" + +#: assets/languages/wp-mail-smtp-vue.php:537 src/Admin/Pages/TestTab.php:253 +#: src/SiteHealth.php:352 +msgid "Send a Test Email" +msgstr "傳送測試郵件" + +#: assets/languages/wp-mail-smtp-vue.php:589 +#: src/Providers/OptionsAbstract.php:253 +msgid "Encryption" +msgstr "加密方式" + +#: assets/languages/wp-mail-smtp-vue.php:592 +#: src/Providers/OptionsAbstract.php:293 +msgid "SMTP Port" +msgstr "SMTP 通訊埠" + +#: src/Admin/ConnectionSettings.php:200 +msgid "Return Path" +msgstr "傳回路徑" + +#: assets/languages/wp-mail-smtp-vue.php:244 +#: src/Admin/ConnectionSettings.php:150 src/Admin/Pages/ExportTab.php:111 +msgid "From Name" +msgstr "寄件者名稱" + +#: assets/languages/wp-mail-smtp-vue.php:655 +#: src/Admin/ConnectionSettings.php:225 src/Admin/Pages/ExportTab.php:125 +msgid "Mailer" +msgstr "郵件程式" + +#: assets/languages/wp-mail-smtp-vue.php:604 +#: src/Providers/OptionsAbstract.php:329 +msgid "Authentication" +msgstr "驗證" + +#: assets/languages/wp-mail-smtp-vue.php:254 +#: src/Admin/ConnectionSettings.php:80 src/Admin/Pages/SmartRoutingTab.php:180 +#: src/Admin/Pages/SmartRoutingTab.php:210 +msgid "From Email" +msgstr "寄件者電子郵件地址" + +#: assets/languages/wp-mail-smtp-vue.php:586 +#: src/Providers/OptionsAbstract.php:239 +msgid "SMTP Host" +msgstr "SMTP 伺服器" + +#. Plugin Name of the plugin +#. Author of the plugin +#: wp_mail_smtp.php src/Admin/Area.php:307 src/Admin/Area.php:308 +#: src/Admin/Area.php:365 src/Admin/Area.php:366 +#: src/Admin/DashboardWidget.php:172 src/Admin/DashboardWidget.php:575 +#: src/Providers/Outlook/Provider.php:57 src/SiteHealth.php:43 +msgid "WP Mail SMTP" +msgstr "WP Mail SMTP" + +#: src/Admin/Area.php:318 src/Admin/Area.php:319 src/Admin/Area.php:1316 +msgid "Settings" +msgstr "設定" + +#: src/Admin/DashboardWidget.php:583 +msgid "Save Changes" +msgstr "儲存設定" \ No newline at end of file diff --git a/languages/themes/twentytwentyfive-zh_TW.l10n.php b/languages/themes/twentytwentyfive-zh_TW.l10n.php new file mode 100644 index 0000000..0b0bb55 --- /dev/null +++ b/languages/themes/twentytwentyfive-zh_TW.l10n.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2025-09-26 05:19:19+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'Themes - Twenty Twenty-Five','language'=>'zh_TW','messages'=>['Twenty Twenty-Five emphasizes simplicity and adaptability. It offers flexible design options, supported by a variety of patterns for different page types, such as services and landing pages, making it ideal for building personal blogs, professional portfolios, online magazines, or business websites. Its templates cater to various blog styles, from text-focused to image-heavy layouts. Additionally, it supports international typography and diverse color palettes, ensuring accessibility and customization for users worldwide.'=>'Twenty Twenty-Five 強調簡潔性與適應性,提供靈活的設計選項,並支援不同頁面類型的區塊版面配置 (例如服務頁面和到達頁面),使這個佈景主題成為建置個人部落格、專業作品集、線上雜誌或商務網站的最佳選擇。它的範本適用於從文字為主到著重圖片版面配置的各類網站風格;此外,它還支援國際排版樣式及多樣化的調色盤,因此世界各地的使用者都能輕鬆使用並進行客製化。','Twenty Twenty-Five'=>'Twenty Twenty-Five','Pattern titleRight-aligned home'=>'靠右對齊的首頁','Pattern titleRight-aligned archive'=>'靠右對齊的彙整頁面','Pattern titleText blog search results'=>'純文字網站的搜尋結果頁面','Pattern titleRight-aligned query loop'=>'靠右對齊的查詢迴圈','Pattern titleText blog query loop'=>'純文字網站查詢迴圈','Answer in the FAQs pattern.This exquisite compilation showcases a diverse array of photographs that capture the essence of different eras and cultures, reflecting the unique styles and perspectives of each artist.'=>'這本精美的合輯展示捕捉了不同時代及文化精髓的相片,並反映了每位藝術家的獨特風格及視角。','Custom template namePage No Title'=>'沒有標題的頁面','Template part nameSidebar'=>'資訊欄','Template part nameFooter Newsletter'=>'頁尾電子報','Template part nameFooter Columns'=>'多欄式頁尾','Template part nameFooter'=>'頁尾','Template part nameHeader with large title'=>'包含大型標題的頁首','Template part nameVertical site header'=>'垂直網站頁首','Template part nameHeader'=>'頁首','Font family nameBeiruti'=>'Beiruti','Font family nameRoboto Slab'=>'Roboto Slab','Font family namePlatypi'=>'Platypi','Font family nameYsabeau Office'=>'Ysabeau Office','Font family nameFira Sans'=>'Fira Sans','Font family nameFira Code'=>'Fira Code','Font family nameVollkorn'=>'Vollkorn','Font family nameLiterata'=>'Literata','Font family nameManrope'=>'Manrope','Space size nameXX-Large'=>'特大型','Space size nameX-Large'=>'超大型','Space size nameLarge'=>'大型','Space size nameRegular'=>'標準','Space size nameSmall'=>'小型','Space size nameX-Small'=>'超小型','Space size nameTiny'=>'特小型','Style variation nameLiterata & Fira Sans'=>'Literata 及 Fira Sans','Style variation namePlatypi & Literata'=>'Platypi 及 Literata','Style variation nameLiterata & Ysabeau Office'=>'Literata 及 Ysabeau Office','Style variation nameRoboto Slab & Manrope'=>'Roboto Slab 及 Manrope','Style variation namePlatypi & Ysabeau Office'=>'Platypi 及 Ysabeau Office','Style variation nameVollkorn & Fira Code'=>'Vollkorn 及 Fira Code','Style variation nameBeiruti & Literata'=>'Beiruti 及 Literata','Style variation nameStyle 5'=>'樣式 5','Style variation nameStyle 4'=>'樣式 4','Style variation nameStyle 3'=>'樣式 3','Style variation nameStyle 2'=>'樣式 2','Style variation nameStyle 1'=>'樣式 1','Style variation namePill shaped'=>'膠囊形狀','Style variation nameAnnotation'=>'註解','Style variation nameSubtitle'=>'子標題','Style variation nameDisplay'=>'展示','Duotone nameMidnight filter'=>'午夜滲漉','Style variation nameMidnight'=>'午夜','Style variation nameSunrise'=>'朝陽','Style variation nameMorning'=>'晨曦','Style variation nameTwilight'=>'暮光','Style variation nameAfternoon'=>'午後','Style variation nameDusk'=>'暮色','Font size nameExtra Extra Large'=>'超巨大型','Font size nameExtra Large'=>'超大型','Font size nameLarge'=>'大型','Font size nameMedium'=>'中型','Font size nameSmall'=>'小型','Style variation nameNoon'=>'正午','Color nameAccent 6'=>'強調色 6','Color nameAccent 5'=>'強調色 5','Color nameAccent 4'=>'強調色 4','Color nameAccent 3'=>'強調色 3','Color nameAccent 2'=>'強調色 2','Color nameAccent 1'=>'強調色 1','Color nameContrast'=>'對比色彩','Color nameBase'=>'基準色彩','Style variation nameEvening'=>'傍晚','Pattern descriptionVertical site header with site title and navigation.'=>'包含網站標題及導覽列的垂直網站頁首。','Pattern titleVertical site header'=>'垂直網站頁首','Question in the FAQs pattern.Are signed copies available?'=>'是否會發售作者簽名版?','Question in the FAQs pattern.When will The Stories Book be released?'=>'《故事輯錄》的發售日期為何?','Question in the FAQs pattern.How much does The Stories Book cost?'=>'《故事輯錄》的售價為何?','Question in the FAQs pattern.What is The Stories Book about?'=>'《故事輯錄》的內容為何?','Heading of the FAQs pattern.Frequently Asked Questions'=>'常見問題集','Pattern descriptionA FAQs section with a FAQ heading and list of questions and answers.'=>'包含標題、問題及答案清單的常見問題集區段。','Pattern titleFAQs'=>'常見問題集','Alt text for testimonial image.Picture of a person typing on a typewriter.'=>'某個人在使用打字機打字的圖片。','Testimonial heading.What people are saying'=>'大家在討論的話題','Pattern descriptionA testimonial with a large image on the right.'=>'包含右側大型圖片的證言內容。','Pattern titleReview with large image on right'=>'包含右側大型圖片的評論','Testimonial section heading.What people are saying'=>'大家在討論的話題','Pattern descriptionA section with three columns and two rows, each containing a testimonial and citation.'=>'包含 3 欄及 2 列總計 6 則證言及引文的區段。','Pattern title3 column layout with 6 testimonials'=>'包含 6 則証言的 3 欄版面配置','Sample testimonial citation.Otto Reid
Springfield, IL'=>'王至誠
高雄市鳳山區','Sample testimonial.“Amazing quality and care. I love all your products.”'=>'“絕佳的品質及售後服務,我喜歡你們的全部商品。”','Sample testimonial citation.Jo Mulligan
Atlanta, GA'=>'木藍裘
嘉義縣民雄鄉','Sample testimonial.“Superb product and customer service!”'=>'“一流的商品及客戶服務!”','Alt text for testimonial image.Picture of a person'=>'人物圖片','Pattern descriptionTwo columns with testimonials and avatars.'=>'包含証言集及個人頭像的 2 個欄位','Pattern title2 columns with avatar'=>'包含個人頭像的 2 個欄位','Pattern titleRight-aligned single post'=>'靠右對齊的單篇內容','Pattern titleText blog single post'=>'純文字網站的單篇內容','Next Photo'=>'下一張照片','Previous Photo'=>'上一張照片','Prefix before one or more tags. The tags are displayed in a separate block on the next line.Tagged:'=>'標籤:','Prefix before one or more categories. The categories are displayed in a separate block on the next line.Categories:'=>'分類:','Prefix before the author name. The post author name is displayed in a separate block on the next line.Posted by'=>'作者:','Pattern titlePhoto blog single post'=>'照片網站的單篇內容','Prefix before the post date block.Published on'=>'發佈日期:','Pattern titleOffset post without featured image'=>'沒有精選圖片的交錯排列文章','Pattern titleNews blog single post with sidebar'=>'包含資訊欄的新聞網站的單篇內容','Separator between date and categories.·'=>'|','Prefix before the author name. The post author name is displayed in a separate block.by'=>'作者:','Pattern titlePost with left-aligned content'=>'包含靠左對齊內容的文章','Pattern titleRight-aligned blog, search'=>'靠右對齊網站的搜尋頁面','Pattern titlePhoto blog search results'=>'照片網站的搜尋結果頁面','Pattern titleNews blog search results'=>'新聞網站的搜尋結果頁面','Pattern descriptionA list of posts, 1 column, with featured image and post date.'=>'包含精選圖片及文章發佈日期的 1 欄式文章清單。','Pattern titleList of posts, 1 column'=>'1 欄式內容清單','Pattern titleRight-aligned page'=>'靠右對齊的頁面','Pattern descriptionA list of posts, 3 columns, with only featured images.'=>'僅包含精選圖片的 3 欄式文章清單。','Pattern titlePhoto blog posts'=>'照片網站文章','Older Posts'=>'較舊的文章','Newer Posts'=>'較新的文章','Prefix before the author name. The post author name is displayed in a separate block.Written by'=>'作者:','Pattern titleNews blog query loop'=>'新聞網站查詢迴圈','Pattern titlePhoto blog page'=>'照片網站頁面','The Latest'=>'最新消息','Pattern titleNews blog with sidebar'=>'包含資訊欄的新聞網站','Pattern titleText blog home'=>'純文字網站首頁','Architecture'=>'架構','Pattern titleNews blog with featured posts grid'=>'包含格狀排列精選文章的新聞網站','Pattern titlePhoto blog home'=>'照片網站首頁','Pattern titleNews blog home'=>'新聞網站首頁','Pattern titleText blog archive'=>'純文字網站彙整頁面','Pattern titlePhoto blog archive'=>'照片網站彙整頁面','Pattern titleNews blog archive'=>'新聞網站彙整頁面','Pattern titleRight-aligned 404'=>'靠右對齊的 404 頁面','Man in hat, standing in front of a building.'=>'站在建築物前方的戴帽子男人。','Picture of a person typing on a typewriter.'=>'某個人在使用打字機打字的圖片。','Portrait of a nurse'=>'護理師肖像','Our small team is a group of driven, detail-oriented people who are passionate about their customers.'=>'我們是由一群充滿幹勁、注重細節、對客戶充滿熱情的成員所組成的小型團隊。','Pattern descriptionDisplay team photos in a services section with grid layout.'=>'使用格狀排列顯示團隊成員照片的服務區段。','Pattern titleServices, team photos'=>'服務及團隊照片','Smartphones capturing a scenic wildflower meadow with trees'=>'顯示樹林、野花及草地風景的智慧型手機','View plans'=>'查看方案','Subscribe to get unlimited access'=>'付費後便能不受限制的存取','Pattern descriptionA subscriber-only section highlighting exclusive services and offerings.'=>'突顯專屬服務及項目的訂閱者專區。','Pattern titleServices, subscriber only section'=>'服務的訂閱者專區','Deliver'=>'商品配送','Assemble'=>'花藝設計','Like flowers that bloom in unexpected places, every story unfolds with beauty and resilience'=>'如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開','Collect'=>'收購花卉','Image for service'=>'服務圖片','Our services'=>'我們的服務項目','Pattern descriptionThree columns with images and text to showcase services.'=>'包含用於展示服務的圖片及文字的 3 個欄位。','Pattern titleServices, 3 columns'=>'3 欄式服務項目','40€'=>'NTD 1400','Get access to our paid newsletter and an unlimited pass.'=>'可閱讀我們撰寫的付費電子報內容及參加不限場次的活動。','Name of membership package.Expert'=>'專家方案','Month'=>'月','20€'=>'NTD 700','Get access to our paid newsletter and a limited pass for one event.'=>'可閱讀我們撰寫的付費電子報內容及參加單場活動。','Get access to our free articles and weekly newsletter.'=>'可閱讀我們撰寫的免費文章及每週電子報。','Choose your membership'=>'選取會員資格','Pattern descriptionA three-column boxed pricing table designed to showcase services, descriptions, and pricing options.'=>'專為展示服務、相關說明及定價選項所設計的 3 欄式區塊價目表。','Pattern titlePricing, 3 columns'=>'3 欄式價目表','20€/month'=>'NTD 700/月','Name of membership package.Single'=>'個人方案','Button text, refers to joining a community. Verb.Join'=>'加入','Join our forums.'=>'加入我們的官方論壇。','An elegant addition of home decor collection.'=>'居家裝飾系列中的雅致之選。','Get a free tote bag.'=>'可獲得免費的托特包。','Join our IRL events.'=>'參加 IRL 活動。','Get access to our paid articles and weekly newsletter.'=>'可閱讀我們撰寫的付費文章及每週寄送的電子報。','0€'=>'NTD 0','Free'=>'免費方案','Cancel or pause anytime.'=>'隨時都可以取消或暫停。','Pricing'=>'方案價格','Pattern descriptionPricing section with two columns, pricing plan, description, and call-to-action buttons.'=>'包含 2 欄方案價格、相關說明及行動號召按鈕的價目表區段。','Pattern titlePricing, 2 columns'=>'2 欄式價目表','Post navigation'=>'文章導覽','Pattern descriptionNext and previous post links.'=>'前往上一篇內容及下一篇內容的連結。','Pattern titlePost navigation'=>'文章導覽','Pattern descriptionA shop homepage pattern.'=>'商店首頁區塊版面配置。','Pattern titleShop homepage'=>'商店首頁','Phone number.+1 555 349 1806'=>'+886 2 7777 9168','email@example.com'=>'email@example.com','My name is Anna Möller and these are some of my photo projects.'=>'我是 Anna Möller,這些是我部分的攝影專案。','Pattern descriptionA portfolio homepage pattern.'=>'作品集首頁區塊版面配置。','Pattern titlePortfolio homepage'=>'作品集首頁','I’m Asahachi Kōno, a Japanese photographer, a member of Los Angeles’s Japanese Camera Pictorialists of California. Before returning to Japan, I worked as a photo retoucher.'=>'我是日本攝影師 Asahachi Kōno,同時也是加州洛杉磯日本攝影師協會的會員。在回到日本前,我曾是一名照片修圖師。','Black and white photo focusing on a woman and a child from afar.'=>'從遠處對焦一名婦女及兒童的黑白照片。','Pattern descriptionA full-width, full-height link in bio section with an image, a paragraph and social links.'=>'包含圖片、段落及社交網路服務連結的全幅寬度、全幅高度簡歷連結區段。','Pattern titleLink in bio with tight margins'=>'包含緊密邊界的簡歷連結','Pattern placeholder text.I’m Nora, a dedicated public interest attorney based in Denver. I’m a graduate of Stanford University.'=>'我是呂諾拉,畢業於文化大學,目前是高雄市的專職公益律師。','Nora Winslow Keene'=>'呂諾拉','Pattern descriptionA link in bio landing page with social links, a profile photo and a brief description.'=>'包含社交網路服務連結、個人資料照片及簡介的簡歷連結到達網頁。','Pattern titleLink in bio with profile, links and wide margins'=>'包含個人資料、相關連結及寬幅邊界的簡歷連結','Photo of a woman worker.'=>'女性工作者照片。','Lewis W. Hine studied sociology before moving to New York in 1901 to work at the Ethical Culture School, where he took up photography to enhance his teaching practices'=>'Lewis W. Hine 曾在 1901 年移居紐約前學習社會學,在 Ethical Culture School 工作期間,開始學習攝影,以加強他的教學實踐。','Lewis Hine'=>'Lewis Hine','Pattern descriptionA link in bio landing page with a heading, paragraph, links and a full height image.'=>'包含標題、段落、連結及完整高度圖片的簡歷連結到達網頁。','Pattern titleLink in bio heading, paragraph, links and full-height image'=>'包含標題、段落、連結及完整高度圖片的簡歷連結','Pattern descriptionA landing page for the podcast with a hero section, description, logos, grid with videos and newsletter signup.'=>'包含宣傳內容區段、內容說明、標誌、格狀排列影片及訂閱電子報的 Podcast 到達網頁。','Pattern titleLanding page for podcast'=>'Podcast 的到達網頁','Pattern descriptionA landing page for the event with a hero section, description, FAQs and call to action.'=>'包含宣傳內容區段、內容說明、常見問題集及行動號召的活動到達網頁。','Pattern titleLanding page for event'=>'活動的到達網頁','Pattern descriptionA landing page for the book with a hero section, pre-order links, locations, FAQs and newsletter signup.'=>'包含宣傳內容區段、預購連結、預購地點、常見問題集及訂閱電子報的書籍介紹到達網頁。','Pattern titleLanding page for book'=>'書籍介紹的到達網頁','Link to a page with information about what the person is working on right now.Now'=>'目前努力達成的目標','LinkedIn'=>'LinkedIn','Woman on beach, splashing water.'=>'在沙灘上潑水的女人。','Pattern placeholder text.My name is Nora Winslow Keene, and I’m a committed public interest attorney. Living in Denver, Colorado, I’ve spent years championing the rights of underrepresented workers. A graduate of Stanford University, I played a key role in securing critical protections for agricultural laborers, ensuring better wages and access to healthcare. My work has focused on advocating for environmental justice and improving the quality of life for rural communities. Every case I take on is driven by the belief that everyone deserves dignity and fair treatment in the workplace.'=>'我是呂諾拉,一名致力於公眾利益的律師,目前住在高雄市鳳山區,多年來一直致力於維護能見度不足的勞工的權益。我畢業於文化大學,在保障農民的重要權益、確保他們獲得更高的所得及醫療保健方面,扮演了關鍵的角色。我的工作重點是倡議環境正義並改善農村社區的生活品質。我執行的每個案子都是基於相同的信念「每個人都應該在工作場所獲得尊嚴及公平的待遇」。','Example heading in pattern.Hey,'=>'你好,','Pattern descriptionA pattern for a CV/Bio landing page.'=>'履歷/簡歷到達網頁的區塊版面配置。','Pattern titleCV/bio'=>'履歷/簡歷','Subscribe to get notified when our website is ready.'=>'訂閱以獲得這個網站上線的通知。','Something great is coming soon'=>'美好的事物即將來臨','Event'=>'活動','Pattern descriptionA full-width cover banner that can be applied to a page or it can work as a single landing page.'=>'可用於頁面或單頁到達網頁的全幅寬度封面橫幅。','Pattern titleComing soon'=>'即將推出','Pattern descriptionA business homepage pattern.'=>'商務網站首頁區塊版面配置。','Pattern titleBusiness homepage'=>'商務網站首頁','Pattern descriptionA section with overlapping images, and a description.'=>'包含覆疊圖片及內容說明的區段。','Pattern titleOverlapping images and paragraph on right'=>'覆疊圖片及右側段落','More posts'=>'更多文章','Pattern descriptionDisplays a list of posts with title and date.'=>'顯示包含標題及日期的文章清單。','Pattern titleMore posts'=>'更多文章','Close up of two flowers on a dark background.'=>'深色背景前的兩朵花特寫。','Portrait of an African Woman dressed in traditional costume, wearing decorative jewelry.'=>'穿著傳統服飾、配戴珠寶首飾的非洲女性肖像。','Profile portrait of a native person.'=>'原住民肖像。','Example username for social media account.@example'=>'@example','Pattern descriptionA grid section with photos and a link to an Instagram profile.'=>'連結至 Instagram 個人資料、包含格狀排列的照片區段。','Pattern titleInstagram grid'=>'格狀排列的 Instagram 項目','The Stories Podcast is sponsored by'=>'《故事選輯》Podcast 的贊助商','Pattern descriptionShowcasing the podcast\'s clients with a heading and a series of client logos.'=>'展示包含標題及客戶標誌的 Podcast 客戶。','Pattern titleLogos'=>'標誌','in'=>'分類:','Written by '=>'作者: ','Pattern titleWritten by'=>'作者','Message explaining that there are no results returned from a search.Sorry, but nothing was found. Please try a search with different keywords.'=>'很抱歉,找不到符合條件的項目,請改用不同關鍵字搜尋。','Add text or blocks that will display when a query returns no results.'=>'新增能顯示查詢傳回找不到符合條件的結果的文字或區塊。','Other Posts'=>'其他文章','Pattern titleSidebar'=>'資訊欄','Button text. Verb.Search'=>'搜尋','Pattern titleSearch'=>'搜尋','Pattern descriptionHidden heading for the home page and index template.'=>'為首頁及索引範本隱藏標題。','Pattern titleHidden blog heading'=>'隱藏網站標題','404 error messageThe page you are looking for doesn\'t exist, or it has been moved. Please try searching using the form below.'=>'要求的頁面不存在或已移除,請使用下方搜尋功能進行搜尋。','404 error messagePage not found'=>'找不到符合條件的頁面','image descriptionSmall totara tree on ridge above Long Point'=>'Long Point 山脊上的小圖塔拉樹。','Pattern title404'=>'404 錯誤','Button textRSS'=>'RSS','Button textPocket Casts'=>'Pocket Casts','Button textSpotify'=>'Spotify','Button textApple Podcasts'=>'Apple Podcasts','Button textYouTube'=>'YouTube','Subscribe on your favorite platform'=>'請從你偏好的平台訂閱我們','Podcast descriptionStorytelling, expert analysis, and vivid descriptions. The Stories Podcast brings history to life, making it accessible and engaging for a global audience.'=>'說故事、專家分析及生動的講解。《故事選輯》Podcast 會將歷史生動的呈現給全球聽中,並讓他們親身體驗歷史的魅力。','The Stories Podcast'=>'《故事選輯》Podcast','Alt text for hero image.Picture of a person'=>'人物圖片','Pattern titleHero podcast'=>'精選 Podcast','Book Image'=>'書籍圖片','Hero - Overlapped book cover pattern subline textA fine collection of moments in time featuring photographs from Louis Fleckenstein, Paul Strand and Asahachi Kōno.'=>'這本精美的合輯收錄了 Louis Fleckenstein、Paul Strand 及 Asahachi Kōno 的精彩瞬間照片集。','Hero - Overlapped book cover pattern headline textThe Stories Book'=>'故事輯錄','Pattern descriptionA hero with an overlapped book cover and links.'=>'包含覆疊書籍封面及連結的宣傳內容。','Pattern titleHero, overlapped book cover with links'=>'包含連結的覆疊書籍封面宣傳內容','Sample hero paragraphLike flowers that bloom in unexpected places, every story unfolds with beauty and resilience, revealing hidden wonders.'=>'如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開,展現隱藏的奇蹟。','Sample hero headingTell your story'=>'聊聊你的故事','Alt text for cover image.Picture of a flower'=>'花的圖片','Pattern descriptionA hero with a full width image, heading, short paragraph and button.'=>'包含全幅寬度圖片、標題、簡短段落及按鈕的宣傳內容。','Pattern titleHero, full width image'=>'包含全幅寬度圖片的宣傳內容','CTA text of the hero section.Available for pre-order now.'=>'現在即可預購。','Content of the hero section.A fine collection of moments in time featuring photographs from Louis Fleckenstein, Paul Strand and Asahachi Kōno.'=>'這本精美的合輯收錄了 Louis Fleckenstein、Paul Strand 及 Asahachi Kōno 的精彩瞬間照片集。','Heading of the hero section.The Stories Book'=>'故事輯錄','Image of the book'=>'書籍圖片','Pattern descriptionA hero section for the book with a description and pre-order link.'=>'包含內容說明及預購連結的書籍宣傳區段。','Pattern titleHero book'=>'宣傳書籍','Alt text for Overview picture.Cliff Palace, Colorado'=>'科羅拉多州懸崖皇宮','Event Overview Text.Held over a weekend, the event is structured around a series of exhibitions, workshops, and panel discussions. The exhibitions showcase a curated selection of photographs that tell compelling stories from various corners of the globe, each image accompanied by detailed narratives that provide context and deeper insight into the historical significance of the scenes depicted. These photographs are drawn from the archives of renowned photographers, as well as emerging talents, ensuring a blend of both classical and contemporary perspectives.'=>'這項活動將在週末舉行,包含一系列的展覽、研討會及小組討論。展覽展出的精選攝影作品,訴說著來自全球不同角落引人入勝的故事,每張照片都附有詳細內容說明、提供背景資料,讓與會者能更深入了解其中場景的歷史意義。這些照片來自知名攝影師及新進攝影師,讓古典及當代視角能夠相互融合。','About the event'=>'活動資訊','Pattern descriptionA two-column section with a heading and paragraph on the left, and an image on the right.'=>'包含標題、左側段落及右側圖片的 2 欄式區段。','Pattern titleHeading and paragraph with image on the right'=>'包含右側圖片的標題及段落','Pattern descriptionSite header with site title and navigation.'=>'包含網站標題及導覽列的網站頁首。','Pattern titleHeader'=>'頁首','Pattern descriptionSite header with large site title and right-aligned navigation.'=>'包含大型網站標題及靠右對齊導覽列的網站頁首。','Pattern titleHeader with large title'=>'包含大型標題的頁首','Pattern descriptionSite header with site title and navigation in columns.'=>'包含多欄排列網站標題及導覽列的網站頁首。','Pattern titleHeader with columns'=>'包含多個欄位的頁首','Pattern descriptionSite header with centered site title and navigation.'=>'包含置中對齊網站標題及導覽列的網站頁首。','Pattern titleCentered site header'=>'置中對齊的網站頁首','Sunflowers'=>'向日葵','Cactus'=>'仙人掌','Anthuriums'=>'火鶴花','Close up of a red anthurium.'=>'火鶴花特寫。','Top Categories'=>'熱門分類','Pattern descriptionA grid section with different categories.'=>'包含不同分類的格狀排列區段。','Pattern titleGrid with categories'=>'格狀排列的分類','Podcast'=>'Podcast','Explore the episodes'=>'查看單集','Pattern descriptionA grid with videos.'=>'顯示格狀排列影片的區段。','Pattern titleGrid with videos'=>'格狀排列的影片','https://example.com'=>'https://example.com','The Stories Book, a fine collection of moments in time featuring photographs from Louis Fleckenstein, Paul Strand and Asahachi Kōno, is available for pre-order'=>'這本精美的合輯收錄了 Louis Fleckenstein、Paul Strand 及 Asahachi Kōno 的精彩瞬間照片集,現在開始預購。','Pattern descriptionA link post format with a description and an emphasized link for key content.'=>'包含內容說明及關鍵內容的強調連結的文章格式連結。','Pattern titleLink format'=>'連結格式','Acoma Pueblo, in New Mexico, stands as a testament to the resilience and cultural heritage of the Acoma people'=>'新墨西哥州的阿科瑪部落,是阿科瑪人復原能力及文化遺產的證明。','Episode 1: Acoma Pueblo with Prof. Fiona Presley'=>'第 1 集: Acoma Pueblo 與 Fiona Presley 教授','Pattern descriptionAn audio post format with an image, title, audio player, and description.'=>'包含圖片、標題、音訊播放器及內容說明的音訊文章格式。','Pattern titleAudio format'=>'音訊格式','Pattern descriptionFooter columns with logo, title, tagline and links.'=>'包含網站標誌、標題、說明及連結的頁尾欄位。','Pattern titleFooter'=>'頁尾','Pattern descriptionFooter with centered site title and social links.'=>'包含置中對齊的網站標題及社交網路服務連結的頁尾。','Pattern titleCentered footer with social links'=>'包含社交網路服務連結、置中對齊的頁尾','Receive our articles in your inbox.'=>'在收件匣接收我們撰寫的文章。','Pattern descriptionFooter with large site title and newsletter signup.'=>'包含大型網站標題及註冊電子報功能的頁尾。','Pattern titleFooter with newsletter signup'=>'包含註冊電子報功能的頁尾','Themes'=>'佈景主題','Patterns'=>'區塊版面配置','Shop'=>'商店','Featured'=>'精選','Authors'=>'作者','FAQs'=>'常見問題集','About'=>'關於','Blog'=>'部落格','Pattern descriptionFooter columns with title, tagline and links.'=>'包含網站標題、網站說明及連結的頁尾。','Pattern titleFooter with columns'=>'包含多個欄位的頁尾','Designed with %s'=>'使用 %s 設計','Pattern descriptionFooter with centered site title and tagline.'=>'包含置中對齊的網站標題及網站說明的頁尾。','Pattern titleCentered footer'=>'置中對齊的頁尾','An introduction to African dialects'=>'非洲方言入門','Black and white photo of an African woman.'=>'非洲女性的黑白照片。','Ancient buildings and symbols'=>'古代建築及符號','The Acropolis of Athens.'=>'雅典的雅典衛城。','Things you didn’t know about the deep ocean'=>'深海中的未解之謎','View of the deep ocean.'=>'深海景色。','Pattern placeholder text with link.Lecture by Prof. Fiona Presley'=>'主講者: Fiona Presley 教授','Example event time in pattern.9 AM — 11 AM'=>'上午 9 點至 11 點','Fauna from North America and its characteristics'=>'北美洲的動物群及其特徵','Birds on a lake.'=>'湖上的鳥。','Agenda'=>'議程','Pattern descriptionA section with specified dates and times for an event.'=>'包含活動指定日期及時間資訊的區段。','Pattern titleEvent schedule'=>'活動行程','Close up photo of white flowers on a grey background'=>'灰色背景的白花特寫照片。','Abbreviation for "Please respond".RSVP'=>'邀請回覆','This immersive event celebrates the universal human experience through the lenses of history and ancestry, featuring a diverse array of photographers whose works capture the essence of different cultures and historical moments.'=>'這場使與會者身歷其境的活動,透過記錄歷史及先民的鏡頭,歡慶人類的共同經驗,同時展出多位攝影師的作品,他們的作品捕捉了不同文化及歷史的精彩時刻。','Free Workshop'=>'免費研討會','Pattern descriptionRSVP for an upcoming event with a cover image and event details.'=>'包含封面圖片及活動詳細資訊的即將舉辦的活動的邀請回覆。','Pattern titleEvent RSVP'=>'活動邀請回覆','Event details'=>'活動詳細資訊','Event image'=>'活動圖片','These are some of the upcoming events.'=>'部分即將舉辦的活動。','Events'=>'活動','Pattern descriptionA header with title and text and three columns that show 3 events with their images and titles.'=>'包含標題、文字及顯示對應圖片、標題的 3 個活動的 3 欄式頁首。','Pattern titleEvents, 3 columns with event images and titles'=>'包含活動圖片及標題的 3 欄式活動資訊','Subscribe'=>'訂閱','Get access to a curated collection of moments in time featuring photographs from historical relevance.'=>'獲得以歷史照片為特色的精彩瞬間照片集。','Sign up to get daily stories'=>'註冊以獲得每日故事選輯','Pattern titleNewsletter sign-up'=>'註冊電子報','Search input field placeholder text.Type here...'=>'請在這裡輸入...','Search form label.Search'=>'搜尋','What are you looking for?'=>'請輸入關鍵字開始搜尋。','Pattern descriptionLarge heading with a search form for quick navigation.'=>'包含快速導覽列搜尋表單的大型標題。','Pattern titleHeading and search form'=>'標題及搜尋表單','Shop now'=>'立即選購','Botany flowers'=>'植物花卉','Cancel anytime'=>'隨時可以取消','Free shipping'=>'免費配送','Tailored to your needs'=>'針對個人需求量身打造','Flora of Akaka Falls State Park'=>'阿卡卡瀑布州立公園的植物','30€'=>'NTD 1050','Starting at%s/month'=>'最低%s/月','Closeup of plantlife in the Malibu Canyon area'=>'馬里布峽谷地區的植物特寫。','Delivered every week'=>'每週送貨','Black and white flower'=>'黑白花朵','Our online store.'=>'我們的線上商店。','Pattern descriptionA call to action featuring product images.'=>'以商品圖片為主的行動號召。','Pattern titleCall to action with grid layout with products and link'=>'包含格狀排列版面配置、商品及連結的行動號召','Thornville, OH, USA'=>'台南市中西區','Mexico City, Mexico'=>'高雄市左營區','Buy Tickets'=>'購買門票','Example event date in pattern.Mon, Jan 1'=>'1 月 1 日星期一','Atlanta, GA, USA'=>'嘉義縣民雄鄉','These are some of the upcoming events'=>'以下是即將舉辦的部分活動。','Upcoming events'=>'即將舉辦的活動','Pattern descriptionA list of events with call to action.'=>'包含行動號召的活動清單。','Pattern titleEvents list'=>'活動清單','Learn more'=>'進一步了解','Like flowers that bloom in unexpected places, every story unfolds with beauty and resilience, revealing hidden wonders.'=>'如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開,展現隱藏的奇蹟。','Tell your story'=>'聊聊你的故事','Pattern descriptionA hero with a centered heading, paragraph and button.'=>'包含置中對齊標題、段落及按鈕的宣傳內容。','Pattern titleCentered heading'=>'置中對齊的標題','United Kingdom'=>'英國','United States'=>'美國','Switzerland'=>'瑞士','New Zealand'=>'紐西蘭','Japan'=>'日本','Canada'=>'加拿大','Brazil'=>'巴西','Book Store'=>'獨立書店','Australia'=>'澳洲','The Stories Book will be available from these international retailers.'=>'《故事輯錄》可在所列的國際零售書店購得。','International editions'=>'國際版','Pattern descriptionA call to action section with links to get the book in the most popular locations.'=>'包含購買書籍最熱門地點連結的行動號召區段。','Pattern titleCall to action with locations'=>'包含地點的行動號召','Pattern placeholder text with link.Outside Europe? View international editions.'=>'如果身處台灣以外地區,請參考選購國際版。','Example brand name.Simon & Schuster'=>'Simon & Schuster','Example brand name.BAM!'=>'BAM!','Example brand name.Spotify'=>'Spotify','Example brand name.Bookshop.org'=>'Bookshop.org','Example brand name.Apple Books'=>'Apple Books','Example brand name.Barnes & Noble'=>'Barnes & Noble','Example brand name.Audible'=>'Audible','Example brand name.Amazon'=>'Amazon','Buy your copy of The Stories Book'=>'購買《故事輯錄》','Pattern descriptionA call to action section with links to get the book in different websites.'=>'包含在不同網站購買書籍連結的行動號召區段。','Pattern titleCall to action with book links'=>'包含書籍連結的行動號召','The business location'=>'營業地點','Get directions'=>'規劃路線','Visit us at 123 Example St. Manhattan, NY 10300, United States'=>'我們位於高雄市苓雅區四維三路 2 號','Pattern descriptionContact section with a location address, a directions link, and an image of the location.'=>'包含地址、規劃路線連結及地點圖片的聯絡方式區段。','Pattern titleContact location and link'=>'聯絡地點及連結','Portland'=>'台南市','Salt Lake City'=>'彰化縣','San Diego'=>'嘉義縣','123 Example St. Manhattan, NY 10300 United States'=>'高雄市苓雅區四維三路 2 號','New York'=>'高雄市','example@example.com'=>'example@example.com','Email'=>'電子郵件地址','TikTok'=>'TikTok','Facebook'=>'Facebook','Instagram'=>'Instagram','Refers to the social media platform formerly known as Twitter.X'=>'X','Social media'=>'社交網路服務','How to get in touch with us'=>'我們的聯絡方式','Pattern descriptionContact section with social media links, email, and multiple location details.'=>'包含社交網路服務連結、電子郵件地址及多個地點的聯絡資訊區段。','Pattern titleContact, info and locations'=>'聯絡方式、資訊及地點','Heading of the Contact social link patternGot questions?
Feel free to reach out.'=>'遇到問題?
歡迎隨時洽詢。','Pattern descriptionCentered contact section with a prominent message and social media links.'=>'包含顯眼訊息及社交網路服務連結的置中對齊聯絡資訊區段。','Pattern titleCentered link and social links'=>'置中對齊的連結及社交網路服務連結','Comments'=>'留言','Pattern descriptionComments area with comments list, pagination, and comment form.'=>'包含留言清單、分頁頁次及留言表單的留言區域。','Pattern titleComments'=>'留言','Pattern descriptionPrints the name of the post format with the help of the Block Bindings API.'=>'透過 Block Bindings API 的協助,列印文章格式的名稱。','Pattern titlePost format name'=>'文章格式名稱','Black and white photography close up of a flower.'=>'花朵特寫的黑白攝影。','Photography close up of a red flower.'=>'紅花特寫攝影。','%s is a flower delivery and subscription business. Based in the EU, our mission is not only to deliver stunning flower arrangements across but also foster knowledge and enthusiasm on the beautiful gift of nature: flowers.'=>'%s 是一家總部設於歐盟,提供鮮花配送及客戶定期回購服務的公司。我們的使名不僅是配送令人驚艷的插花作品,更要培養大眾對大自然美麗獻禮 - 花朵的知識及熱愛。','About Us'=>'關於我們','Pattern descriptionA banner with a short paragraph, and two images displayed in a grid layout.'=>'包含簡短段落、格狀排列 2 張圖片的橫幅。','Pattern titleBanner with description and images grid'=>'包含內容說明及格狀排列圖片的橫幅','#stories'=>'#故事選輯','Let’s hear them.'=>'靜心聆聽...','Fuego Bar, Mexico City'=>'高雄市獨立酒吧','Example event date in pattern.Aug 08—10 2025'=>'2025 年 8 月 8 日至 10 日','Placeholder heading in four languages.“Stories, historias, iсторії, iστορίες”'=>'“故事選輯historiasiсторіїiστορίες”','Picture of a historical building in ruins.'=>'歷史建築廢墟圖片。','Pattern descriptionA section that can be used as a banner or a landing page to announce an event.'=>'可用於橫幅或公告活動到達網頁的區段。','Pattern titlePoster-like section'=>'宣傳圖片區段','Example brand name.Fleurs'=>'Fleurs','Pattern placeholder text.We\'re %s, our mission is to deliver exquisite flower arrangements that not only adorn living spaces but also inspire a deeper appreciation for natural beauty.'=>'我們是提供精美插花作品的 %s,這些作品不僅能點綴生活空間,還能激發人們對自然美有更加深刻的了解。','Pattern descriptionA large left-aligned heading with a brand name emphasized in bold.'=>'包含以粗體強調品牌名稱的靠左對齊大型標題。','Pattern titleIntro with left-aligned description'=>'包含靠左對齊內容說明的簡介','Sample description for banner with flower.Like flowers that bloom in unexpected places, every story unfolds with beauty and resilience, revealing hidden wonders.'=>'如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開,展現隱藏的奇蹟。','Heading for banner pattern.New arrivals'=>'新品上市','Alt text for intro picture.Picture of a flower'=>'花的圖片','Pattern descriptionA Intro pattern with Short heading, paragraph and image on the left.'=>'包含左側圖片的簡短標題及段落的簡介區塊版面配置。','Pattern titleShort heading and paragraph and image on the left'=>'包含左側圖片的簡短標題及段落','Stories'=>'故事選輯','Photo of a field full of flowers, a blue sky and a tree.'=>'開滿花海的田園、藍天及樹木。','Pattern descriptionA full-width cover section with a large background image and an oversized heading.'=>'包含大型背景圖片及超大型標題的全幅寬度封面區段。','Pattern titleCover with big heading'=>'包含大型標題的封面','Image of a book'=>'書籍圖片','Pattern placeholder text.This exquisite compilation showcases a diverse array of photographs that capture the essence of different eras and cultures, reflecting the unique styles and perspectives of each artist. Fleckenstein’s evocative imagery, Strand’s groundbreaking modernist approach, and Kōno’s meticulous documentation of Japanese life come together in a harmonious blend that celebrates the art of photography. Each image in “The Stories Book” is accompanied by insightful commentary, providing historical context and revealing the stories behind the photographs. This collection is not only a visual feast but also a tribute to the power of photography to preserve and narrate the multifaceted experiences of humanity.'=>'這本精美的合輯展示捕捉了不同時代及文化精髓的相片,並反映了每位藝術家的獨特風格及視角。這本合輯將 Fleckenstein 令人回味的意象,Strand 突破性的現代主義手法,以及 Kōno 對日本生活觀察入微的記錄,以和諧的方式融合在一起,並讚頌了攝影藝術。《故事輯錄》中的每張圖片都附有精闢的評論,提供歷史背景並提供照片的背景故事。這本攝影集不僅是一場視覺饗宴,也是對攝影在保存及闡述人類多樣性上的致敬。','About the book'=>'書籍介紹','Pattern descriptionBanner with book description and accompanying image for promotion.'=>'供宣傳書籍用、包含書籍內容說明及附圖的橫幅。','Pattern titleBanner with book description'=>'包含書籍內容說明的橫幅','Label for the block binding placeholder in the editorPost format name'=>'文章格式名稱','A collection of post format patterns.'=>'文章格式區塊版面配置組合。','Post formats'=>'文章格式','A collection of full page layouts.'=>'完整頁面版面配置集合。','Pages'=>'頁面','Checkmark'=>'核取記號','https://wordpress.org'=>'https://tw.wordpress.org','the WordPress team'=>'WordPress 團隊','https://wordpress.org/themes/twentytwentyfive/'=>'https://tw.wordpress.org/themes/twentytwentyfive/']]; \ No newline at end of file diff --git a/languages/themes/twentytwentyfive-zh_TW.mo b/languages/themes/twentytwentyfive-zh_TW.mo new file mode 100644 index 0000000..2183da9 Binary files /dev/null and b/languages/themes/twentytwentyfive-zh_TW.mo differ diff --git a/languages/themes/twentytwentyfive-zh_TW.po b/languages/themes/twentytwentyfive-zh_TW.po new file mode 100644 index 0000000..6972bd6 --- /dev/null +++ b/languages/themes/twentytwentyfive-zh_TW.po @@ -0,0 +1,2441 @@ +# Translation of Themes - Twenty Twenty-Five in Chinese (Taiwan) +# This file is distributed under the same license as the Themes - Twenty Twenty-Five package. +msgid "" +msgstr "" +"PO-Revision-Date: 2025-09-26 05:19:19+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: Themes - Twenty Twenty-Five\n" + +#. Description of the theme +#: style.css +#, gp-priority: high +msgid "Twenty Twenty-Five emphasizes simplicity and adaptability. It offers flexible design options, supported by a variety of patterns for different page types, such as services and landing pages, making it ideal for building personal blogs, professional portfolios, online magazines, or business websites. Its templates cater to various blog styles, from text-focused to image-heavy layouts. Additionally, it supports international typography and diverse color palettes, ensuring accessibility and customization for users worldwide." +msgstr "Twenty Twenty-Five 強調簡潔性與適應性,提供靈活的設計選項,並支援不同頁面類型的區塊版面配置 (例如服務頁面和到達頁面),使這個佈景主題成為建置個人部落格、專業作品集、線上雜誌或商務網站的最佳選擇。它的範本適用於從文字為主到著重圖片版面配置的各類網站風格;此外,它還支援國際排版樣式及多樣化的調色盤,因此世界各地的使用者都能輕鬆使用並進行客製化。" + +#. Theme Name of the theme +#: style.css patterns/footer-columns.php:66 patterns/footer-newsletter.php:42 +#: patterns/footer.php:75 patterns/page-portfolio-home.php:226 +#, gp-priority: high +msgid "Twenty Twenty-Five" +msgstr "Twenty Twenty-Five" + +#: patterns/template-home-vertical-header-blog.php +msgctxt "Pattern title" +msgid "Right-aligned home" +msgstr "靠右對齊的首頁" + +#: patterns/template-archive-vertical-header-blog.php +msgctxt "Pattern title" +msgid "Right-aligned archive" +msgstr "靠右對齊的彙整頁面" + +#: patterns/template-search-text-blog.php +msgctxt "Pattern title" +msgid "Text blog search results" +msgstr "純文字網站的搜尋結果頁面" + +#: patterns/template-query-loop-vertical-header-blog.php +msgctxt "Pattern title" +msgid "Right-aligned query loop" +msgstr "靠右對齊的查詢迴圈" + +#: patterns/template-query-loop-text-blog.php +msgctxt "Pattern title" +msgid "Text blog query loop" +msgstr "純文字網站查詢迴圈" + +#: patterns/text-faqs.php:35 patterns/text-faqs.php:51 +#: patterns/text-faqs.php:71 patterns/text-faqs.php:87 +msgctxt "Answer in the FAQs pattern." +msgid "This exquisite compilation showcases a diverse array of photographs that capture the essence of different eras and cultures, reflecting the unique styles and perspectives of each artist." +msgstr "這本精美的合輯展示捕捉了不同時代及文化精髓的相片,並反映了每位藝術家的獨特風格及視角。" + +#: theme.json +msgctxt "Custom template name" +msgid "Page No Title" +msgstr "沒有標題的頁面" + +#: theme.json +msgctxt "Template part name" +msgid "Sidebar" +msgstr "資訊欄" + +#: theme.json +msgctxt "Template part name" +msgid "Footer Newsletter" +msgstr "頁尾電子報" + +#: theme.json +msgctxt "Template part name" +msgid "Footer Columns" +msgstr "多欄式頁尾" + +#: theme.json +msgctxt "Template part name" +msgid "Footer" +msgstr "頁尾" + +#: theme.json +msgctxt "Template part name" +msgid "Header with large title" +msgstr "包含大型標題的頁首" + +#: theme.json +msgctxt "Template part name" +msgid "Vertical site header" +msgstr "垂直網站頁首" + +#: theme.json +msgctxt "Template part name" +msgid "Header" +msgstr "頁首" + +#: styles/02-noon.json styles/typography/typography-preset-1.json +msgctxt "Font family name" +msgid "Beiruti" +msgstr "Beiruti" + +#: styles/05-twilight.json styles/typography/typography-preset-4.json +msgctxt "Font family name" +msgid "Roboto Slab" +msgstr "Roboto Slab" + +#: styles/04-afternoon.json styles/07-sunrise.json +#: styles/typography/typography-preset-3.json +#: styles/typography/typography-preset-6.json +msgctxt "Font family name" +msgid "Platypi" +msgstr "Platypi" + +#: styles/04-afternoon.json styles/06-morning.json +#: styles/typography/typography-preset-3.json +#: styles/typography/typography-preset-5.json +msgctxt "Font family name" +msgid "Ysabeau Office" +msgstr "Ysabeau Office" + +#: styles/08-midnight.json styles/typography/typography-preset-7.json +msgctxt "Font family name" +msgid "Fira Sans" +msgstr "Fira Sans" + +#: theme.json styles/03-dusk.json styles/typography/typography-preset-2.json +msgctxt "Font family name" +msgid "Fira Code" +msgstr "Fira Code" + +#: styles/03-dusk.json styles/typography/typography-preset-2.json +msgctxt "Font family name" +msgid "Vollkorn" +msgstr "Vollkorn" + +#: styles/02-noon.json styles/06-morning.json styles/07-sunrise.json +#: styles/08-midnight.json styles/typography/typography-preset-1.json +#: styles/typography/typography-preset-5.json +#: styles/typography/typography-preset-6.json +#: styles/typography/typography-preset-7.json +msgctxt "Font family name" +msgid "Literata" +msgstr "Literata" + +#: theme.json styles/05-twilight.json +#: styles/typography/typography-preset-4.json +msgctxt "Font family name" +msgid "Manrope" +msgstr "Manrope" + +#: theme.json +msgctxt "Space size name" +msgid "XX-Large" +msgstr "特大型" + +#: theme.json +msgctxt "Space size name" +msgid "X-Large" +msgstr "超大型" + +#: theme.json +msgctxt "Space size name" +msgid "Large" +msgstr "大型" + +#: theme.json +msgctxt "Space size name" +msgid "Regular" +msgstr "標準" + +#: theme.json +msgctxt "Space size name" +msgid "Small" +msgstr "小型" + +#: theme.json +msgctxt "Space size name" +msgid "X-Small" +msgstr "超小型" + +#: theme.json +msgctxt "Space size name" +msgid "Tiny" +msgstr "特小型" + +#: styles/typography/typography-preset-7.json +msgctxt "Style variation name" +msgid "Literata & Fira Sans" +msgstr "Literata 及 Fira Sans" + +#: styles/typography/typography-preset-6.json +msgctxt "Style variation name" +msgid "Platypi & Literata" +msgstr "Platypi 及 Literata" + +#: styles/typography/typography-preset-5.json +msgctxt "Style variation name" +msgid "Literata & Ysabeau Office" +msgstr "Literata 及 Ysabeau Office" + +#: styles/typography/typography-preset-4.json +msgctxt "Style variation name" +msgid "Roboto Slab & Manrope" +msgstr "Roboto Slab 及 Manrope" + +#: styles/typography/typography-preset-3.json +msgctxt "Style variation name" +msgid "Platypi & Ysabeau Office" +msgstr "Platypi 及 Ysabeau Office" + +#: styles/typography/typography-preset-2.json +msgctxt "Style variation name" +msgid "Vollkorn & Fira Code" +msgstr "Vollkorn 及 Fira Code" + +#: styles/typography/typography-preset-1.json +msgctxt "Style variation name" +msgid "Beiruti & Literata" +msgstr "Beiruti 及 Literata" + +#: styles/sections/section-5.json +msgctxt "Style variation name" +msgid "Style 5" +msgstr "樣式 5" + +#: styles/sections/section-4.json +msgctxt "Style variation name" +msgid "Style 4" +msgstr "樣式 4" + +#: styles/sections/section-3.json +msgctxt "Style variation name" +msgid "Style 3" +msgstr "樣式 3" + +#: styles/sections/section-2.json +msgctxt "Style variation name" +msgid "Style 2" +msgstr "樣式 2" + +#: styles/sections/section-1.json +msgctxt "Style variation name" +msgid "Style 1" +msgstr "樣式 1" + +#: styles/blocks/post-terms-1.json +msgctxt "Style variation name" +msgid "Pill shaped" +msgstr "膠囊形狀" + +#: styles/blocks/03-annotation.json +msgctxt "Style variation name" +msgid "Annotation" +msgstr "註解" + +#: styles/blocks/02-subtitle.json +msgctxt "Style variation name" +msgid "Subtitle" +msgstr "子標題" + +#: styles/blocks/01-display.json +msgctxt "Style variation name" +msgid "Display" +msgstr "展示" + +#: styles/08-midnight.json styles/colors/08-midnight.json +msgctxt "Duotone name" +msgid "Midnight filter" +msgstr "午夜滲漉" + +#: styles/08-midnight.json styles/colors/08-midnight.json +msgctxt "Style variation name" +msgid "Midnight" +msgstr "午夜" + +#: styles/07-sunrise.json styles/colors/07-sunrise.json +msgctxt "Style variation name" +msgid "Sunrise" +msgstr "朝陽" + +#: styles/06-morning.json styles/colors/06-morning.json +msgctxt "Style variation name" +msgid "Morning" +msgstr "晨曦" + +#: styles/05-twilight.json styles/colors/05-twilight.json +msgctxt "Style variation name" +msgid "Twilight" +msgstr "暮光" + +#: styles/04-afternoon.json styles/colors/04-afternoon.json +msgctxt "Style variation name" +msgid "Afternoon" +msgstr "午後" + +#: styles/03-dusk.json styles/colors/03-dusk.json +msgctxt "Style variation name" +msgid "Dusk" +msgstr "暮色" + +#: theme.json styles/02-noon.json styles/04-afternoon.json +#: styles/05-twilight.json styles/06-morning.json styles/08-midnight.json +#: styles/typography/typography-preset-1.json +#: styles/typography/typography-preset-3.json +#: styles/typography/typography-preset-4.json +#: styles/typography/typography-preset-5.json +#: styles/typography/typography-preset-7.json +msgctxt "Font size name" +msgid "Extra Extra Large" +msgstr "超巨大型" + +#: theme.json styles/02-noon.json styles/04-afternoon.json +#: styles/05-twilight.json styles/06-morning.json styles/08-midnight.json +#: styles/typography/typography-preset-1.json +#: styles/typography/typography-preset-3.json +#: styles/typography/typography-preset-4.json +#: styles/typography/typography-preset-5.json +#: styles/typography/typography-preset-7.json +msgctxt "Font size name" +msgid "Extra Large" +msgstr "超大型" + +#: theme.json styles/02-noon.json styles/04-afternoon.json +#: styles/05-twilight.json styles/06-morning.json styles/08-midnight.json +#: styles/typography/typography-preset-1.json +#: styles/typography/typography-preset-3.json +#: styles/typography/typography-preset-4.json +#: styles/typography/typography-preset-5.json +#: styles/typography/typography-preset-7.json +msgctxt "Font size name" +msgid "Large" +msgstr "大型" + +#: theme.json styles/02-noon.json styles/04-afternoon.json +#: styles/05-twilight.json styles/06-morning.json styles/08-midnight.json +#: styles/typography/typography-preset-1.json +#: styles/typography/typography-preset-3.json +#: styles/typography/typography-preset-4.json +#: styles/typography/typography-preset-5.json +#: styles/typography/typography-preset-7.json +msgctxt "Font size name" +msgid "Medium" +msgstr "中型" + +#: theme.json styles/02-noon.json styles/04-afternoon.json +#: styles/05-twilight.json styles/06-morning.json styles/08-midnight.json +#: styles/typography/typography-preset-1.json +#: styles/typography/typography-preset-3.json +#: styles/typography/typography-preset-4.json +#: styles/typography/typography-preset-5.json +#: styles/typography/typography-preset-7.json +msgctxt "Font size name" +msgid "Small" +msgstr "小型" + +#: styles/02-noon.json styles/colors/02-noon.json +msgctxt "Style variation name" +msgid "Noon" +msgstr "正午" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Accent 6" +msgstr "強調色 6" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Accent 5" +msgstr "強調色 5" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Accent 4" +msgstr "強調色 4" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Accent 3" +msgstr "強調色 3" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Accent 2" +msgstr "強調色 2" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Accent 1" +msgstr "強調色 1" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Contrast" +msgstr "對比色彩" + +#: theme.json styles/01-evening.json styles/02-noon.json styles/03-dusk.json +#: styles/04-afternoon.json styles/05-twilight.json styles/06-morning.json +#: styles/07-sunrise.json styles/08-midnight.json styles/colors/01-evening.json +#: styles/colors/02-noon.json styles/colors/03-dusk.json +#: styles/colors/04-afternoon.json styles/colors/05-twilight.json +#: styles/colors/06-morning.json styles/colors/07-sunrise.json +#: styles/colors/08-midnight.json +msgctxt "Color name" +msgid "Base" +msgstr "基準色彩" + +#: styles/01-evening.json styles/colors/01-evening.json +msgctxt "Style variation name" +msgid "Evening" +msgstr "傍晚" + +#: patterns/vertical-header.php +msgctxt "Pattern description" +msgid "Vertical site header with site title and navigation." +msgstr "包含網站標題及導覽列的垂直網站頁首。" + +#: patterns/vertical-header.php +msgctxt "Pattern title" +msgid "Vertical site header" +msgstr "垂直網站頁首" + +#: patterns/text-faqs.php:83 +msgctxt "Question in the FAQs pattern." +msgid "Are signed copies available?" +msgstr "是否會發售作者簽名版?" + +#: patterns/text-faqs.php:67 +msgctxt "Question in the FAQs pattern." +msgid "When will The Stories Book be released?" +msgstr "《故事輯錄》的發售日期為何?" + +#: patterns/text-faqs.php:47 +msgctxt "Question in the FAQs pattern." +msgid "How much does The Stories Book cost?" +msgstr "《故事輯錄》的售價為何?" + +#: patterns/text-faqs.php:31 +msgctxt "Question in the FAQs pattern." +msgid "What is The Stories Book about?" +msgstr "《故事輯錄》的內容為何?" + +#: patterns/text-faqs.php:21 +msgctxt "Heading of the FAQs pattern." +msgid "Frequently Asked Questions" +msgstr "常見問題集" + +#: patterns/text-faqs.php +msgctxt "Pattern description" +msgid "A FAQs section with a FAQ heading and list of questions and answers." +msgstr "包含標題、問題及答案清單的常見問題集區段。" + +#: patterns/text-faqs.php +msgctxt "Pattern title" +msgid "FAQs" +msgstr "常見問題集" + +#: patterns/testimonials-large.php:47 +msgctxt "Alt text for testimonial image." +msgid "Picture of a person typing on a typewriter." +msgstr "某個人在使用打字機打字的圖片。" + +#: patterns/testimonials-large.php:24 +msgctxt "Testimonial heading." +msgid "What people are saying" +msgstr "大家在討論的話題" + +#: patterns/testimonials-large.php +msgctxt "Pattern description" +msgid "A testimonial with a large image on the right." +msgstr "包含右側大型圖片的證言內容。" + +#: patterns/testimonials-large.php +msgctxt "Pattern title" +msgid "Review with large image on right" +msgstr "包含右側大型圖片的評論" + +#: patterns/testimonials-6-col.php:18 +msgctxt "Testimonial section heading." +msgid "What people are saying" +msgstr "大家在討論的話題" + +#: patterns/testimonials-6-col.php +msgctxt "Pattern description" +msgid "A section with three columns and two rows, each containing a testimonial and citation." +msgstr "包含 3 欄及 2 列總計 6 則證言及引文的區段。" + +#: patterns/testimonials-6-col.php +msgctxt "Pattern title" +msgid "3 column layout with 6 testimonials" +msgstr "包含 6 則証言的 3 欄版面配置" + +#: patterns/testimonials-2-col.php:67 patterns/testimonials-6-col.php:34 +#: patterns/testimonials-6-col.php:51 patterns/testimonials-6-col.php:68 +#: patterns/testimonials-6-col.php:89 patterns/testimonials-6-col.php:104 +#: patterns/testimonials-6-col.php:119 +msgctxt "Sample testimonial citation." +msgid "Otto Reid
Springfield, IL" +msgstr "王至誠
高雄市鳳山區" + +#: patterns/testimonials-2-col.php:65 patterns/testimonials-6-col.php:30 +#: patterns/testimonials-6-col.php:47 patterns/testimonials-6-col.php:64 +#: patterns/testimonials-6-col.php:85 patterns/testimonials-6-col.php:101 +#: patterns/testimonials-6-col.php:116 +msgctxt "Sample testimonial." +msgid "“Amazing quality and care. I love all your products.”" +msgstr "“絕佳的品質及售後服務,我喜歡你們的全部商品。”" + +#: patterns/testimonials-2-col.php:38 patterns/testimonials-large.php:36 +msgctxt "Sample testimonial citation." +msgid "Jo Mulligan
Atlanta, GA" +msgstr "木藍裘
嘉義縣民雄鄉" + +#: patterns/testimonials-2-col.php:36 patterns/testimonials-large.php:32 +msgctxt "Sample testimonial." +msgid "“Superb product and customer service!”" +msgstr "“一流的商品及客戶服務!”" + +#: patterns/testimonials-2-col.php:26 patterns/testimonials-2-col.php:55 +msgctxt "Alt text for testimonial image." +msgid "Picture of a person" +msgstr "人物圖片" + +#: patterns/testimonials-2-col.php +msgctxt "Pattern description" +msgid "Two columns with testimonials and avatars." +msgstr "包含証言集及個人頭像的 2 個欄位" + +#: patterns/testimonials-2-col.php +msgctxt "Pattern title" +msgid "2 columns with avatar" +msgstr "包含個人頭像的 2 個欄位" + +#: patterns/template-single-vertical-header-blog.php +msgctxt "Pattern title" +msgid "Right-aligned single post" +msgstr "靠右對齊的單篇內容" + +#: patterns/template-single-text-blog.php +msgctxt "Pattern title" +msgid "Text blog single post" +msgstr "純文字網站的單篇內容" + +#: patterns/template-single-photo-blog.php:79 +msgid "Next Photo" +msgstr "下一張照片" + +#: patterns/template-single-photo-blog.php:78 +msgid "Previous Photo" +msgstr "上一張照片" + +#: patterns/template-single-photo-blog.php:61 +msgctxt "Prefix before one or more tags. The tags are displayed in a separate block on the next line." +msgid "Tagged:" +msgstr "標籤:" + +#: patterns/template-single-photo-blog.php:53 +msgctxt "Prefix before one or more categories. The categories are displayed in a separate block on the next line." +msgid "Categories:" +msgstr "分類:" + +#: patterns/template-single-photo-blog.php:42 +msgctxt "Prefix before the author name. The post author name is displayed in a separate block on the next line." +msgid "Posted by" +msgstr "作者:" + +#: patterns/template-single-photo-blog.php +msgctxt "Pattern title" +msgid "Photo blog single post" +msgstr "照片網站的單篇內容" + +#: patterns/template-single-offset.php:40 +#: patterns/template-single-photo-blog.php:36 +msgctxt "Prefix before the post date block." +msgid "Published on" +msgstr "發佈日期:" + +#: patterns/template-single-offset.php +msgctxt "Pattern title" +msgid "Offset post without featured image" +msgstr "沒有精選圖片的交錯排列文章" + +#: patterns/template-single-news-blog.php +msgctxt "Pattern title" +msgid "News blog single post with sidebar" +msgstr "包含資訊欄的新聞網站的單篇內容" + +#: patterns/template-home-with-sidebar-news-blog.php:88 +#: patterns/template-single-left-aligned-content.php:56 +#: patterns/template-single-news-blog.php:39 +msgctxt "Separator between date and categories." +msgid "·" +msgstr "|" + +#: patterns/template-single-left-aligned-content.php:31 +msgctxt "Prefix before the author name. The post author name is displayed in a separate block." +msgid "by" +msgstr "作者:" + +#: patterns/template-single-left-aligned-content.php +msgctxt "Pattern title" +msgid "Post with left-aligned content" +msgstr "包含靠左對齊內容的文章" + +#: patterns/template-search-vertical-header-blog.php +msgctxt "Pattern title" +msgid "Right-aligned blog, search" +msgstr "靠右對齊網站的搜尋頁面" + +#: patterns/template-search-photo-blog.php +msgctxt "Pattern title" +msgid "Photo blog search results" +msgstr "照片網站的搜尋結果頁面" + +#: patterns/template-search-news-blog.php +msgctxt "Pattern title" +msgid "News blog search results" +msgstr "新聞網站的搜尋結果頁面" + +#: patterns/template-query-loop.php +msgctxt "Pattern description" +msgid "A list of posts, 1 column, with featured image and post date." +msgstr "包含精選圖片及文章發佈日期的 1 欄式文章清單。" + +#: patterns/template-query-loop.php +msgctxt "Pattern title" +msgid "List of posts, 1 column" +msgstr "1 欄式內容清單" + +#: patterns/template-page-vertical-header-blog.php +msgctxt "Pattern title" +msgid "Right-aligned page" +msgstr "靠右對齊的頁面" + +#: patterns/template-query-loop-photo-blog.php +msgctxt "Pattern description" +msgid "A list of posts, 3 columns, with only featured images." +msgstr "僅包含精選圖片的 3 欄式文章清單。" + +#: patterns/template-query-loop-photo-blog.php +msgctxt "Pattern title" +msgid "Photo blog posts" +msgstr "照片網站文章" + +#: patterns/template-query-loop-news-blog.php:49 +msgid "Older Posts" +msgstr "較舊的文章" + +#: patterns/template-query-loop-news-blog.php:45 +msgid "Newer Posts" +msgstr "較新的文章" + +#: patterns/template-query-loop-news-blog.php:30 +msgctxt "Prefix before the author name. The post author name is displayed in a separate block." +msgid "Written by" +msgstr "作者:" + +#: patterns/template-query-loop-news-blog.php +msgctxt "Pattern title" +msgid "News blog query loop" +msgstr "新聞網站查詢迴圈" + +#: patterns/template-page-photo-blog.php +msgctxt "Pattern title" +msgid "Photo blog page" +msgstr "照片網站頁面" + +#: patterns/template-home-with-sidebar-news-blog.php:42 +msgid "The Latest" +msgstr "最新消息" + +#: patterns/template-home-with-sidebar-news-blog.php +msgctxt "Pattern title" +msgid "News blog with sidebar" +msgstr "包含資訊欄的新聞網站" + +#: patterns/template-home-text-blog.php +msgctxt "Pattern title" +msgid "Text blog home" +msgstr "純文字網站首頁" + +#: patterns/template-home-posts-grid-news-blog.php:114 +msgid "Architecture" +msgstr "架構" + +#: patterns/template-home-posts-grid-news-blog.php +msgctxt "Pattern title" +msgid "News blog with featured posts grid" +msgstr "包含格狀排列精選文章的新聞網站" + +#: patterns/template-home-photo-blog.php +msgctxt "Pattern title" +msgid "Photo blog home" +msgstr "照片網站首頁" + +#: patterns/template-home-news-blog.php +msgctxt "Pattern title" +msgid "News blog home" +msgstr "新聞網站首頁" + +#: patterns/template-archive-text-blog.php +msgctxt "Pattern title" +msgid "Text blog archive" +msgstr "純文字網站彙整頁面" + +#: patterns/template-archive-photo-blog.php +msgctxt "Pattern title" +msgid "Photo blog archive" +msgstr "照片網站彙整頁面" + +#: patterns/template-archive-news-blog.php +msgctxt "Pattern title" +msgid "News blog archive" +msgstr "新聞網站彙整頁面" + +#: patterns/template-404-vertical-header-blog.php +msgctxt "Pattern title" +msgid "Right-aligned 404" +msgstr "靠右對齊的 404 頁面" + +#: patterns/services-team-photos.php:50 +msgid "Man in hat, standing in front of a building." +msgstr "站在建築物前方的戴帽子男人。" + +#: patterns/services-team-photos.php:44 +msgid "Picture of a person typing on a typewriter." +msgstr "某個人在使用打字機打字的圖片。" + +#: patterns/services-team-photos.php:38 +msgid "Portrait of a nurse" +msgstr "護理師肖像" + +#: patterns/services-team-photos.php:21 +msgid "Our small team is a group of driven, detail-oriented people who are passionate about their customers." +msgstr "我們是由一群充滿幹勁、注重細節、對客戶充滿熱情的成員所組成的小型團隊。" + +#: patterns/services-team-photos.php +msgctxt "Pattern description" +msgid "Display team photos in a services section with grid layout." +msgstr "使用格狀排列顯示團隊成員照片的服務區段。" + +#: patterns/services-team-photos.php +msgctxt "Pattern title" +msgid "Services, team photos" +msgstr "服務及團隊照片" + +#: patterns/services-subscriber-only-section.php:69 +msgid "Smartphones capturing a scenic wildflower meadow with trees" +msgstr "顯示樹林、野花及草地風景的智慧型手機" + +#: patterns/services-subscriber-only-section.php:55 +msgid "View plans" +msgstr "查看方案" + +#: patterns/services-subscriber-only-section.php:21 +msgid "Subscribe to get unlimited access" +msgstr "付費後便能不受限制的存取" + +#: patterns/services-subscriber-only-section.php +msgctxt "Pattern description" +msgid "A subscriber-only section highlighting exclusive services and offerings." +msgstr "突顯專屬服務及項目的訂閱者專區。" + +#: patterns/services-subscriber-only-section.php +msgctxt "Pattern title" +msgid "Services, subscriber only section" +msgstr "服務的訂閱者專區" + +#: patterns/services-3-col.php:68 +msgid "Deliver" +msgstr "商品配送" + +#: patterns/services-3-col.php:50 +msgid "Assemble" +msgstr "花藝設計" + +#: patterns/services-3-col.php:36 patterns/services-3-col.php:54 +#: patterns/services-3-col.php:72 +msgid "Like flowers that bloom in unexpected places, every story unfolds with beauty and resilience" +msgstr "如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開" + +#: patterns/services-3-col.php:32 +msgid "Collect" +msgstr "收購花卉" + +#: patterns/services-3-col.php:27 patterns/services-3-col.php:45 +#: patterns/services-3-col.php:63 +msgid "Image for service" +msgstr "服務圖片" + +#: patterns/services-3-col.php:17 +msgid "Our services" +msgstr "我們的服務項目" + +#: patterns/services-3-col.php +msgctxt "Pattern description" +msgid "Three columns with images and text to showcase services." +msgstr "包含用於展示服務的圖片及文字的 3 個欄位。" + +#: patterns/services-3-col.php +msgctxt "Pattern title" +msgid "Services, 3 columns" +msgstr "3 欄式服務項目" + +#: patterns/pricing-3-col.php:125 +msgid "40€" +msgstr "NTD 1400" + +#: patterns/pricing-3-col.php:117 +msgid "Get access to our paid newsletter and an unlimited pass." +msgstr "可閱讀我們撰寫的付費電子報內容及參加不限場次的活動。" + +#: patterns/pricing-3-col.php:113 +msgctxt "Name of membership package." +msgid "Expert" +msgstr "專家方案" + +#: patterns/pricing-3-col.php:89 patterns/pricing-3-col.php:129 +msgid "Month" +msgstr "月" + +#: patterns/pricing-3-col.php:85 +msgid "20€" +msgstr "NTD 700" + +#: patterns/pricing-3-col.php:77 +msgid "Get access to our paid newsletter and a limited pass for one event." +msgstr "可閱讀我們撰寫的付費電子報內容及參加單場活動。" + +#: patterns/pricing-3-col.php:41 +msgid "Get access to our free articles and weekly newsletter." +msgstr "可閱讀我們撰寫的免費文章及每週電子報。" + +#: patterns/pricing-3-col.php:19 +msgid "Choose your membership" +msgstr "選取會員資格" + +#: patterns/pricing-3-col.php +msgctxt "Pattern description" +msgid "A three-column boxed pricing table designed to showcase services, descriptions, and pricing options." +msgstr "專為展示服務、相關說明及定價選項所設計的 3 欄式區塊價目表。" + +#: patterns/pricing-3-col.php +msgctxt "Pattern title" +msgid "Pricing, 3 columns" +msgstr "3 欄式價目表" + +#: patterns/pricing-2-col.php:82 +msgid "20€/month" +msgstr "NTD 700/月" + +#: patterns/pricing-2-col.php:78 patterns/pricing-3-col.php:73 +msgctxt "Name of membership package." +msgid "Single" +msgstr "個人方案" + +#: patterns/pricing-2-col.php:68 patterns/pricing-2-col.php:112 +#: patterns/pricing-3-col.php:59 patterns/pricing-3-col.php:99 +#: patterns/pricing-3-col.php:139 +msgctxt "Button text, refers to joining a community. Verb." +msgid "Join" +msgstr "加入" + +#: patterns/pricing-2-col.php:60 patterns/pricing-2-col.php:104 +#: patterns/services-subscriber-only-section.php:43 +msgid "Join our forums." +msgstr "加入我們的官方論壇。" + +#: patterns/pricing-2-col.php:56 patterns/pricing-2-col.php:100 +#: patterns/services-subscriber-only-section.php:39 +msgid "An elegant addition of home decor collection." +msgstr "居家裝飾系列中的雅致之選。" + +#: patterns/pricing-2-col.php:52 patterns/pricing-2-col.php:96 +#: patterns/services-subscriber-only-section.php:35 +msgid "Get a free tote bag." +msgstr "可獲得免費的托特包。" + +#: patterns/pricing-2-col.php:48 patterns/pricing-2-col.php:92 +#: patterns/services-subscriber-only-section.php:31 +msgid "Join our IRL events." +msgstr "參加 IRL 活動。" + +#: patterns/pricing-2-col.php:44 patterns/pricing-2-col.php:88 +#: patterns/services-subscriber-only-section.php:27 +msgid "Get access to our paid articles and weekly newsletter." +msgstr "可閱讀我們撰寫的付費文章及每週寄送的電子報。" + +#: patterns/pricing-2-col.php:38 patterns/pricing-3-col.php:49 +msgid "0€" +msgstr "NTD 0" + +#: patterns/pricing-2-col.php:34 patterns/pricing-3-col.php:37 +msgid "Free" +msgstr "免費方案" + +#: patterns/pricing-2-col.php:22 +#: patterns/services-subscriber-only-section.php:61 +msgid "Cancel or pause anytime." +msgstr "隨時都可以取消或暫停。" + +#: patterns/pricing-2-col.php:18 patterns/pricing-3-col.php:23 +msgid "Pricing" +msgstr "方案價格" + +#: patterns/pricing-2-col.php +msgctxt "Pattern description" +msgid "Pricing section with two columns, pricing plan, description, and call-to-action buttons." +msgstr "包含 2 欄方案價格、相關說明及行動號召按鈕的價目表區段。" + +#: patterns/pricing-2-col.php +msgctxt "Pattern title" +msgid "Pricing, 2 columns" +msgstr "2 欄式價目表" + +#: patterns/post-navigation.php:17 patterns/post-navigation.php:18 +#: patterns/template-single-left-aligned-content.php:78 +#: patterns/template-single-left-aligned-content.php:79 +#: patterns/template-single-news-blog.php:95 +#: patterns/template-single-news-blog.php:96 +#: patterns/template-single-offset.php:61 +#: patterns/template-single-offset.php:62 +#: patterns/template-single-photo-blog.php:76 +#: patterns/template-single-photo-blog.php:77 +#: patterns/template-single-text-blog.php:36 +#: patterns/template-single-text-blog.php:37 +#: patterns/template-single-vertical-header-blog.php:82 +#: patterns/template-single-vertical-header-blog.php:83 +msgid "Post navigation" +msgstr "文章導覽" + +#: patterns/post-navigation.php +msgctxt "Pattern description" +msgid "Next and previous post links." +msgstr "前往上一篇內容及下一篇內容的連結。" + +#: patterns/post-navigation.php +msgctxt "Pattern title" +msgid "Post navigation" +msgstr "文章導覽" + +#: patterns/page-shop-home.php +msgctxt "Pattern description" +msgid "A shop homepage pattern." +msgstr "商店首頁區塊版面配置。" + +#: patterns/page-shop-home.php +msgctxt "Pattern title" +msgid "Shop homepage" +msgstr "商店首頁" + +#: patterns/page-portfolio-home.php:229 +msgctxt "Phone number." +msgid "+1 555 349 1806" +msgstr "+886 2 7777 9168" + +#: patterns/page-portfolio-home.php:229 +msgid "email@example.com" +msgstr "email@example.com" + +#: patterns/page-portfolio-home.php:27 +msgid "My name is Anna Möller and these are some of my photo projects." +msgstr "我是 Anna Möller,這些是我部分的攝影專案。" + +#: patterns/page-portfolio-home.php +msgctxt "Pattern description" +msgid "A portfolio homepage pattern." +msgstr "作品集首頁區塊版面配置。" + +#: patterns/page-portfolio-home.php +msgctxt "Pattern title" +msgid "Portfolio homepage" +msgstr "作品集首頁" + +#: patterns/page-link-in-bio-with-tight-margins.php:42 +msgid "I’m Asahachi Kōno, a Japanese photographer, a member of Los Angeles’s Japanese Camera Pictorialists of California. Before returning to Japan, I worked as a photo retoucher." +msgstr "我是日本攝影師 Asahachi Kōno,同時也是加州洛杉磯日本攝影師協會的會員。在回到日本前,我曾是一名照片修圖師。" + +#: patterns/page-link-in-bio-with-tight-margins.php:27 +msgid "Black and white photo focusing on a woman and a child from afar." +msgstr "從遠處對焦一名婦女及兒童的黑白照片。" + +#: patterns/page-link-in-bio-with-tight-margins.php +msgctxt "Pattern description" +msgid "A full-width, full-height link in bio section with an image, a paragraph and social links." +msgstr "包含圖片、段落及社交網路服務連結的全幅寬度、全幅高度簡歷連結區段。" + +#: patterns/page-link-in-bio-with-tight-margins.php +msgctxt "Pattern title" +msgid "Link in bio with tight margins" +msgstr "包含緊密邊界的簡歷連結" + +#: patterns/page-link-in-bio-wide-margins.php:38 +msgctxt "Pattern placeholder text." +msgid "I’m Nora, a dedicated public interest attorney based in Denver. I’m a graduate of Stanford University." +msgstr "我是呂諾拉,畢業於文化大學,目前是高雄市的專職公益律師。" + +#: patterns/page-link-in-bio-wide-margins.php:34 +msgid "Nora Winslow Keene" +msgstr "呂諾拉" + +#: patterns/page-link-in-bio-wide-margins.php +msgctxt "Pattern description" +msgid "A link in bio landing page with social links, a profile photo and a brief description." +msgstr "包含社交網路服務連結、個人資料照片及簡介的簡歷連結到達網頁。" + +#: patterns/page-link-in-bio-wide-margins.php +msgctxt "Pattern title" +msgid "Link in bio with profile, links and wide margins" +msgstr "包含個人資料、相關連結及寬幅邊界的簡歷連結" + +#: patterns/page-link-in-bio-heading-paragraph-links-image.php:57 +msgid "Photo of a woman worker." +msgstr "女性工作者照片。" + +#: patterns/page-link-in-bio-heading-paragraph-links-image.php:30 +msgid "Lewis W. Hine studied sociology before moving to New York in 1901 to work at the Ethical Culture School, where he took up photography to enhance his teaching practices" +msgstr "Lewis W. Hine 曾在 1901 年移居紐約前學習社會學,在 Ethical Culture School 工作期間,開始學習攝影,以加強他的教學實踐。" + +#: patterns/page-link-in-bio-heading-paragraph-links-image.php:26 +msgid "Lewis Hine" +msgstr "Lewis Hine" + +#: patterns/page-link-in-bio-heading-paragraph-links-image.php +msgctxt "Pattern description" +msgid "A link in bio landing page with a heading, paragraph, links and a full height image." +msgstr "包含標題、段落、連結及完整高度圖片的簡歷連結到達網頁。" + +#: patterns/page-link-in-bio-heading-paragraph-links-image.php +msgctxt "Pattern title" +msgid "Link in bio heading, paragraph, links and full-height image" +msgstr "包含標題、段落、連結及完整高度圖片的簡歷連結" + +#: patterns/page-landing-podcast.php +msgctxt "Pattern description" +msgid "A landing page for the podcast with a hero section, description, logos, grid with videos and newsletter signup." +msgstr "包含宣傳內容區段、內容說明、標誌、格狀排列影片及訂閱電子報的 Podcast 到達網頁。" + +#: patterns/page-landing-podcast.php +msgctxt "Pattern title" +msgid "Landing page for podcast" +msgstr "Podcast 的到達網頁" + +#: patterns/page-landing-event.php +msgctxt "Pattern description" +msgid "A landing page for the event with a hero section, description, FAQs and call to action." +msgstr "包含宣傳內容區段、內容說明、常見問題集及行動號召的活動到達網頁。" + +#: patterns/page-landing-event.php +msgctxt "Pattern title" +msgid "Landing page for event" +msgstr "活動的到達網頁" + +#: patterns/page-landing-book.php +msgctxt "Pattern description" +msgid "A landing page for the book with a hero section, pre-order links, locations, FAQs and newsletter signup." +msgstr "包含宣傳內容區段、預購連結、預購地點、常見問題集及訂閱電子報的書籍介紹到達網頁。" + +#: patterns/page-landing-book.php +msgctxt "Pattern title" +msgid "Landing page for book" +msgstr "書籍介紹的到達網頁" + +#: patterns/page-cv-bio.php:47 +msgctxt "Link to a page with information about what the person is working on right now." +msgid "Now" +msgstr "目前努力達成的目標" + +#: patterns/page-cv-bio.php:47 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: patterns/page-cv-bio.php:43 patterns/page-link-in-bio-wide-margins.php:24 +#: patterns/services-team-photos.php:32 +msgid "Woman on beach, splashing water." +msgstr "在沙灘上潑水的女人。" + +#: patterns/page-cv-bio.php:31 +msgctxt "Pattern placeholder text." +msgid "My name is Nora Winslow Keene, and I’m a committed public interest attorney. Living in Denver, Colorado, I’ve spent years championing the rights of underrepresented workers. A graduate of Stanford University, I played a key role in securing critical protections for agricultural laborers, ensuring better wages and access to healthcare. My work has focused on advocating for environmental justice and improving the quality of life for rural communities. Every case I take on is driven by the belief that everyone deserves dignity and fair treatment in the workplace." +msgstr "我是呂諾拉,一名致力於公眾利益的律師,目前住在高雄市鳳山區,多年來一直致力於維護能見度不足的勞工的權益。我畢業於文化大學,在保障農民的重要權益、確保他們獲得更高的所得及醫療保健方面,扮演了關鍵的角色。我的工作重點是倡議環境正義並改善農村社區的生活品質。我執行的每個案子都是基於相同的信念「每個人都應該在工作場所獲得尊嚴及公平的待遇」。" + +#: patterns/page-cv-bio.php:28 +msgctxt "Example heading in pattern." +msgid "Hey," +msgstr "你好," + +#: patterns/page-cv-bio.php +msgctxt "Pattern description" +msgid "A pattern for a CV/Bio landing page." +msgstr "履歷/簡歷到達網頁的區塊版面配置。" + +#: patterns/page-cv-bio.php +msgctxt "Pattern title" +msgid "CV/bio" +msgstr "履歷/簡歷" + +#: patterns/page-coming-soon.php:33 +msgid "Subscribe to get notified when our website is ready." +msgstr "訂閱以獲得這個網站上線的通知。" + +#: patterns/page-coming-soon.php:29 +msgid "Something great is coming soon" +msgstr "美好的事物即將來臨" + +#: patterns/page-coming-soon.php:24 +msgid "Event" +msgstr "活動" + +#: patterns/page-coming-soon.php +msgctxt "Pattern description" +msgid "A full-width cover banner that can be applied to a page or it can work as a single landing page." +msgstr "可用於頁面或單頁到達網頁的全幅寬度封面橫幅。" + +#: patterns/page-coming-soon.php +msgctxt "Pattern title" +msgid "Coming soon" +msgstr "即將推出" + +#: patterns/page-business-home.php +msgctxt "Pattern description" +msgid "A business homepage pattern." +msgstr "商務網站首頁區塊版面配置。" + +#: patterns/page-business-home.php +msgctxt "Pattern title" +msgid "Business homepage" +msgstr "商務網站首頁" + +#: patterns/overlapped-images.php +msgctxt "Pattern description" +msgid "A section with overlapping images, and a description." +msgstr "包含覆疊圖片及內容說明的區段。" + +#: patterns/overlapped-images.php +msgctxt "Pattern title" +msgid "Overlapping images and paragraph on right" +msgstr "覆疊圖片及右側段落" + +#: patterns/more-posts.php:18 +msgid "More posts" +msgstr "更多文章" + +#: patterns/more-posts.php +msgctxt "Pattern description" +msgid "Displays a list of posts with title and date." +msgstr "顯示包含標題及日期的文章清單。" + +#: patterns/more-posts.php +msgctxt "Pattern title" +msgid "More posts" +msgstr "更多文章" + +#: patterns/media-instagram-grid.php:56 +msgid "Close up of two flowers on a dark background." +msgstr "深色背景前的兩朵花特寫。" + +#: patterns/media-instagram-grid.php:48 +msgid "Portrait of an African Woman dressed in traditional costume, wearing decorative jewelry." +msgstr "穿著傳統服飾、配戴珠寶首飾的非洲女性肖像。" + +#: patterns/media-instagram-grid.php:40 +msgid "Profile portrait of a native person." +msgstr "原住民肖像。" + +#: patterns/media-instagram-grid.php:28 +msgctxt "Example username for social media account." +msgid "@example" +msgstr "@example" + +#: patterns/media-instagram-grid.php +msgctxt "Pattern description" +msgid "A grid section with photos and a link to an Instagram profile." +msgstr "連結至 Instagram 個人資料、包含格狀排列的照片區段。" + +#: patterns/media-instagram-grid.php +msgctxt "Pattern title" +msgid "Instagram grid" +msgstr "格狀排列的 Instagram 項目" + +#: patterns/logos.php:17 +msgid "The Stories Podcast is sponsored by" +msgstr "《故事選輯》Podcast 的贊助商" + +#: patterns/logos.php +msgctxt "Pattern description" +msgid "Showcasing the podcast's clients with a heading and a series of client logos." +msgstr "展示包含標題及客戶標誌的 Podcast 客戶。" + +#: patterns/logos.php +msgctxt "Pattern title" +msgid "Logos" +msgstr "標誌" + +#: patterns/hidden-written-by.php:20 +msgid "in" +msgstr "分類:" + +#: patterns/hidden-written-by.php:16 +msgid "Written by " +msgstr "作者: " + +#: patterns/hidden-written-by.php +msgctxt "Pattern title" +msgid "Written by" +msgstr "作者" + +#: patterns/hidden-sidebar.php:38 patterns/page-portfolio-home.php:65 +#: patterns/page-portfolio-home.php:87 patterns/page-portfolio-home.php:121 +#: patterns/page-portfolio-home.php:154 patterns/page-portfolio-home.php:176 +#: patterns/page-portfolio-home.php:203 patterns/template-home-news-blog.php:40 +#: patterns/template-home-posts-grid-news-blog.php:35 +#: patterns/template-home-posts-grid-news-blog.php:60 +#: patterns/template-home-posts-grid-news-blog.php:78 +#: patterns/template-home-posts-grid-news-blog.php:103 +#: patterns/template-home-with-sidebar-news-blog.php:62 +#: patterns/template-home-with-sidebar-news-blog.php:119 +#: patterns/template-query-loop-news-blog.php:55 +#: patterns/template-query-loop-photo-blog.php:22 +#: patterns/template-query-loop-text-blog.php:19 +#: patterns/template-query-loop-vertical-header-blog.php:47 +#: patterns/template-query-loop.php:31 +msgctxt "Message explaining that there are no results returned from a search." +msgid "Sorry, but nothing was found. Please try a search with different keywords." +msgstr "很抱歉,找不到符合條件的項目,請改用不同關鍵字搜尋。" + +#: patterns/hidden-sidebar.php:37 +#: patterns/template-home-posts-grid-news-blog.php:34 +#: patterns/template-home-with-sidebar-news-blog.php:61 +msgid "Add text or blocks that will display when a query returns no results." +msgstr "新增能顯示查詢傳回找不到符合條件的結果的文字或區塊。" + +#: patterns/hidden-sidebar.php:14 +msgid "Other Posts" +msgstr "其他文章" + +#: patterns/hidden-sidebar.php +msgctxt "Pattern title" +msgid "Sidebar" +msgstr "資訊欄" + +#: patterns/cta-heading-search.php:21 patterns/hidden-search.php:14 +msgctxt "Button text. Verb." +msgid "Search" +msgstr "搜尋" + +#: patterns/hidden-search.php +msgctxt "Pattern title" +msgid "Search" +msgstr "搜尋" + +#: patterns/hidden-blog-heading.php +msgctxt "Pattern description" +msgid "Hidden heading for the home page and index template." +msgstr "為首頁及索引範本隱藏標題。" + +#: patterns/hidden-blog-heading.php +msgctxt "Pattern title" +msgid "Hidden blog heading" +msgstr "隱藏網站標題" + +#: patterns/hidden-404.php:36 +msgctxt "404 error message" +msgid "The page you are looking for doesn't exist, or it has been moved. Please try searching using the form below." +msgstr "要求的頁面不存在或已移除,請使用下方搜尋功能進行搜尋。" + +#: patterns/hidden-404.php:32 +msgctxt "404 error message" +msgid "Page not found" +msgstr "找不到符合條件的頁面" + +#: patterns/hidden-404.php:21 +msgctxt "image description" +msgid "Small totara tree on ridge above Long Point" +msgstr "Long Point 山脊上的小圖塔拉樹。" + +#: patterns/hidden-404.php +msgctxt "Pattern title" +msgid "404" +msgstr "404 錯誤" + +#: patterns/hero-podcast.php:65 +msgctxt "Button text" +msgid "RSS" +msgstr "RSS" + +#: patterns/hero-podcast.php:61 +msgctxt "Button text" +msgid "Pocket Casts" +msgstr "Pocket Casts" + +#: patterns/hero-podcast.php:57 +msgctxt "Button text" +msgid "Spotify" +msgstr "Spotify" + +#: patterns/hero-podcast.php:53 +msgctxt "Button text" +msgid "Apple Podcasts" +msgstr "Apple Podcasts" + +#: patterns/hero-podcast.php:49 +msgctxt "Button text" +msgid "YouTube" +msgstr "YouTube" + +#: patterns/hero-podcast.php:43 +msgid "Subscribe on your favorite platform" +msgstr "請從你偏好的平台訂閱我們" + +#: patterns/hero-podcast.php:36 +msgctxt "Podcast description" +msgid "Storytelling, expert analysis, and vivid descriptions. The Stories Podcast brings history to life, making it accessible and engaging for a global audience." +msgstr "說故事、專家分析及生動的講解。《故事選輯》Podcast 會將歷史生動的呈現給全球聽中,並讓他們親身體驗歷史的魅力。" + +#: patterns/hero-podcast.php:32 +msgid "The Stories Podcast" +msgstr "《故事選輯》Podcast" + +#: patterns/hero-podcast.php:22 +msgctxt "Alt text for hero image." +msgid "Picture of a person" +msgstr "人物圖片" + +#: patterns/hero-podcast.php +msgctxt "Pattern title" +msgid "Hero podcast" +msgstr "精選 Podcast" + +#: patterns/hero-overlapped-book-cover-with-links.php:113 +msgid "Book Image" +msgstr "書籍圖片" + +#: patterns/hero-overlapped-book-cover-with-links.php:34 +msgctxt "Hero - Overlapped book cover pattern subline text" +msgid "A fine collection of moments in time featuring photographs from Louis Fleckenstein, Paul Strand and Asahachi Kōno." +msgstr "這本精美的合輯收錄了 Louis Fleckenstein、Paul Strand 及 Asahachi Kōno 的精彩瞬間照片集。" + +#: patterns/hero-overlapped-book-cover-with-links.php:28 +msgctxt "Hero - Overlapped book cover pattern headline text" +msgid "The Stories Book" +msgstr "故事輯錄" + +#: patterns/hero-overlapped-book-cover-with-links.php +msgctxt "Pattern description" +msgid "A hero with an overlapped book cover and links." +msgstr "包含覆疊書籍封面及連結的宣傳內容。" + +#: patterns/hero-overlapped-book-cover-with-links.php +msgctxt "Pattern title" +msgid "Hero, overlapped book cover with links" +msgstr "包含連結的覆疊書籍封面宣傳內容" + +#: patterns/hero-full-width-image.php:27 +msgctxt "Sample hero paragraph" +msgid "Like flowers that bloom in unexpected places, every story unfolds with beauty and resilience, revealing hidden wonders." +msgstr "如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開,展現隱藏的奇蹟。" + +#: patterns/hero-full-width-image.php:23 +msgctxt "Sample hero heading" +msgid "Tell your story" +msgstr "聊聊你的故事" + +#: patterns/hero-full-width-image.php:18 +msgctxt "Alt text for cover image." +msgid "Picture of a flower" +msgstr "花的圖片" + +#: patterns/hero-full-width-image.php +msgctxt "Pattern description" +msgid "A hero with a full width image, heading, short paragraph and button." +msgstr "包含全幅寬度圖片、標題、簡短段落及按鈕的宣傳內容。" + +#: patterns/hero-full-width-image.php +msgctxt "Pattern title" +msgid "Hero, full width image" +msgstr "包含全幅寬度圖片的宣傳內容" + +#: patterns/hero-book.php:46 +msgctxt "CTA text of the hero section." +msgid "Available for pre-order now." +msgstr "現在即可預購。" + +#: patterns/hero-book.php:42 +msgctxt "Content of the hero section." +msgid "A fine collection of moments in time featuring photographs from Louis Fleckenstein, Paul Strand and Asahachi Kōno." +msgstr "這本精美的合輯收錄了 Louis Fleckenstein、Paul Strand 及 Asahachi Kōno 的精彩瞬間照片集。" + +#: patterns/hero-book.php:38 +msgctxt "Heading of the hero section." +msgid "The Stories Book" +msgstr "故事輯錄" + +#: patterns/hero-book.php:24 +msgid "Image of the book" +msgstr "書籍圖片" + +#: patterns/hero-book.php +msgctxt "Pattern description" +msgid "A hero section for the book with a description and pre-order link." +msgstr "包含內容說明及預購連結的書籍宣傳區段。" + +#: patterns/hero-book.php +msgctxt "Pattern title" +msgid "Hero book" +msgstr "宣傳書籍" + +#: patterns/heading-and-paragraph-with-image.php:36 +msgctxt "Alt text for Overview picture." +msgid "Cliff Palace, Colorado" +msgstr "科羅拉多州懸崖皇宮" + +#: patterns/heading-and-paragraph-with-image.php:27 +msgctxt "Event Overview Text." +msgid "Held over a weekend, the event is structured around a series of exhibitions, workshops, and panel discussions. The exhibitions showcase a curated selection of photographs that tell compelling stories from various corners of the globe, each image accompanied by detailed narratives that provide context and deeper insight into the historical significance of the scenes depicted. These photographs are drawn from the archives of renowned photographers, as well as emerging talents, ensuring a blend of both classical and contemporary perspectives." +msgstr "這項活動將在週末舉行,包含一系列的展覽、研討會及小組討論。展覽展出的精選攝影作品,訴說著來自全球不同角落引人入勝的故事,每張照片都附有詳細內容說明、提供背景資料,讓與會者能更深入了解其中場景的歷史意義。這些照片來自知名攝影師及新進攝影師,讓古典及當代視角能夠相互融合。" + +#: patterns/heading-and-paragraph-with-image.php:23 +msgid "About the event" +msgstr "活動資訊" + +#: patterns/heading-and-paragraph-with-image.php +msgctxt "Pattern description" +msgid "A two-column section with a heading and paragraph on the left, and an image on the right." +msgstr "包含標題、左側段落及右側圖片的 2 欄式區段。" + +#: patterns/heading-and-paragraph-with-image.php +msgctxt "Pattern title" +msgid "Heading and paragraph with image on the right" +msgstr "包含右側圖片的標題及段落" + +#: patterns/header.php +msgctxt "Pattern description" +msgid "Site header with site title and navigation." +msgstr "包含網站標題及導覽列的網站頁首。" + +#: patterns/header.php +msgctxt "Pattern title" +msgid "Header" +msgstr "頁首" + +#: patterns/header-large-title.php +msgctxt "Pattern description" +msgid "Site header with large site title and right-aligned navigation." +msgstr "包含大型網站標題及靠右對齊導覽列的網站頁首。" + +#: patterns/header-large-title.php +msgctxt "Pattern title" +msgid "Header with large title" +msgstr "包含大型標題的頁首" + +#: patterns/header-columns.php +msgctxt "Pattern description" +msgid "Site header with site title and navigation in columns." +msgstr "包含多欄排列網站標題及導覽列的網站頁首。" + +#: patterns/header-columns.php +msgctxt "Pattern title" +msgid "Header with columns" +msgstr "包含多個欄位的頁首" + +#: patterns/header-centered.php +msgctxt "Pattern description" +msgid "Site header with centered site title and navigation." +msgstr "包含置中對齊網站標題及導覽列的網站頁首。" + +#: patterns/header-centered.php +msgctxt "Pattern title" +msgid "Centered site header" +msgstr "置中對齊的網站頁首" + +#: patterns/grid-with-categories.php:64 +msgid "Sunflowers" +msgstr "向日葵" + +#: patterns/grid-with-categories.php:50 +msgid "Cactus" +msgstr "仙人掌" + +#: patterns/grid-with-categories.php:36 +msgid "Anthuriums" +msgstr "火鶴花" + +#: patterns/grid-with-categories.php:29 +msgid "Close up of a red anthurium." +msgstr "火鶴花特寫。" + +#: patterns/grid-with-categories.php:22 +msgid "Top Categories" +msgstr "熱門分類" + +#: patterns/grid-with-categories.php +msgctxt "Pattern description" +msgid "A grid section with different categories." +msgstr "包含不同分類的格狀排列區段。" + +#: patterns/grid-with-categories.php +msgctxt "Pattern title" +msgid "Grid with categories" +msgstr "格狀排列的分類" + +#: patterns/grid-videos.php:23 +msgid "Podcast" +msgstr "Podcast" + +#: patterns/grid-videos.php:19 +msgid "Explore the episodes" +msgstr "查看單集" + +#: patterns/grid-videos.php +msgctxt "Pattern description" +msgid "A grid with videos." +msgstr "顯示格狀排列影片的區段。" + +#: patterns/grid-videos.php +msgctxt "Pattern title" +msgid "Grid with videos" +msgstr "格狀排列的影片" + +#: patterns/format-link.php:23 +msgid "https://example.com" +msgstr "https://example.com" + +#: patterns/format-link.php:17 +msgid "The Stories Book, a fine collection of moments in time featuring photographs from Louis Fleckenstein, Paul Strand and Asahachi Kōno, is available for pre-order" +msgstr "這本精美的合輯收錄了 Louis Fleckenstein、Paul Strand 及 Asahachi Kōno 的精彩瞬間照片集,現在開始預購。" + +#: patterns/format-link.php +msgctxt "Pattern description" +msgid "A link post format with a description and an emphasized link for key content." +msgstr "包含內容說明及關鍵內容的強調連結的文章格式連結。" + +#: patterns/format-link.php +msgctxt "Pattern title" +msgid "Link format" +msgstr "連結格式" + +#: patterns/format-audio.php:30 +msgid "Acoma Pueblo, in New Mexico, stands as a testament to the resilience and cultural heritage of the Acoma people" +msgstr "新墨西哥州的阿科瑪部落,是阿科瑪人復原能力及文化遺產的證明。" + +#: patterns/format-audio.php:26 +msgid "Episode 1: Acoma Pueblo with Prof. Fiona Presley" +msgstr "第 1 集: Acoma Pueblo 與 Fiona Presley 教授" + +#: patterns/format-audio.php +msgctxt "Pattern description" +msgid "An audio post format with an image, title, audio player, and description." +msgstr "包含圖片、標題、音訊播放器及內容說明的音訊文章格式。" + +#: patterns/format-audio.php +msgctxt "Pattern title" +msgid "Audio format" +msgstr "音訊格式" + +#: patterns/footer.php +msgctxt "Pattern description" +msgid "Footer columns with logo, title, tagline and links." +msgstr "包含網站標誌、標題、說明及連結的頁尾欄位。" + +#: patterns/footer.php +msgctxt "Pattern title" +msgid "Footer" +msgstr "頁尾" + +#: patterns/footer-social.php +msgctxt "Pattern description" +msgid "Footer with centered site title and social links." +msgstr "包含置中對齊的網站標題及社交網路服務連結的頁尾。" + +#: patterns/footer-social.php +msgctxt "Pattern title" +msgid "Centered footer with social links" +msgstr "包含社交網路服務連結、置中對齊的頁尾" + +#: patterns/footer-newsletter.php:24 +msgid "Receive our articles in your inbox." +msgstr "在收件匣接收我們撰寫的文章。" + +#: patterns/footer-newsletter.php +msgctxt "Pattern description" +msgid "Footer with large site title and newsletter signup." +msgstr "包含大型網站標題及註冊電子報功能的頁尾。" + +#: patterns/footer-newsletter.php +msgctxt "Pattern title" +msgid "Footer with newsletter signup" +msgstr "包含註冊電子報功能的頁尾" + +#: patterns/footer-columns.php:52 patterns/footer.php:61 +msgid "Themes" +msgstr "佈景主題" + +#: patterns/footer-columns.php:51 patterns/footer.php:59 +msgid "Patterns" +msgstr "區塊版面配置" + +#: patterns/footer-columns.php:50 patterns/footer.php:57 +msgid "Shop" +msgstr "商店" + +#: patterns/footer-columns.php:48 +msgid "Featured" +msgstr "精選" + +#: patterns/footer-columns.php:39 patterns/footer.php:51 +msgid "Authors" +msgstr "作者" + +#: patterns/footer-columns.php:38 patterns/footer.php:49 +msgid "FAQs" +msgstr "常見問題集" + +#: patterns/footer-columns.php:37 patterns/footer.php:47 +msgid "About" +msgstr "關於" + +#: patterns/footer-columns.php:36 patterns/footer.php:45 +#: patterns/hidden-blog-heading.php:15 patterns/template-home-text-blog.php:20 +msgid "Blog" +msgstr "部落格" + +#: patterns/footer-columns.php +msgctxt "Pattern description" +msgid "Footer columns with title, tagline and links." +msgstr "包含網站標題、網站說明及連結的頁尾。" + +#: patterns/footer-columns.php +msgctxt "Pattern title" +msgid "Footer with columns" +msgstr "包含多個欄位的頁尾" + +#. translators: Designed with WordPress. %s: WordPress link. +#: patterns/footer-centered.php:33 patterns/footer-columns.php:73 +#: patterns/footer-newsletter.php:49 patterns/footer-social.php:35 +#: patterns/footer.php:82 +msgid "Designed with %s" +msgstr "使用 %s 設計" + +#: patterns/footer-centered.php +msgctxt "Pattern description" +msgid "Footer with centered site title and tagline." +msgstr "包含置中對齊的網站標題及網站說明的頁尾。" + +#: patterns/footer-centered.php +msgctxt "Pattern title" +msgid "Centered footer" +msgstr "置中對齊的頁尾" + +#: patterns/event-schedule.php:174 +msgid "An introduction to African dialects" +msgstr "非洲方言入門" + +#: patterns/event-schedule.php:163 +msgid "Black and white photo of an African woman." +msgstr "非洲女性的黑白照片。" + +#: patterns/event-schedule.php:142 +msgid "Ancient buildings and symbols" +msgstr "古代建築及符號" + +#: patterns/event-schedule.php:132 patterns/media-instagram-grid.php:52 +msgid "The Acropolis of Athens." +msgstr "雅典的雅典衛城。" + +#: patterns/event-schedule.php:89 +msgid "Things you didn’t know about the deep ocean" +msgstr "深海中的未解之謎" + +#: patterns/event-schedule.php:78 patterns/media-instagram-grid.php:44 +msgid "View of the deep ocean." +msgstr "深海景色。" + +#: patterns/event-schedule.php:65 patterns/event-schedule.php:97 +#: patterns/event-schedule.php:150 patterns/event-schedule.php:182 +msgctxt "Pattern placeholder text with link." +msgid "Lecture by Prof. Fiona Presley" +msgstr "主講者: Fiona Presley 教授" + +#: patterns/event-schedule.php:60 patterns/event-schedule.php:92 +#: patterns/event-schedule.php:145 patterns/event-schedule.php:177 +msgctxt "Example event time in pattern." +msgid "9 AM — 11 AM" +msgstr "上午 9 點至 11 點" + +#: patterns/event-schedule.php:57 +msgid "Fauna from North America and its characteristics" +msgstr "北美洲的動物群及其特徵" + +#: patterns/event-schedule.php:46 patterns/media-instagram-grid.php:60 +msgid "Birds on a lake." +msgstr "湖上的鳥。" + +#: patterns/event-schedule.php:20 +msgid "Agenda" +msgstr "議程" + +#: patterns/event-schedule.php +msgctxt "Pattern description" +msgid "A section with specified dates and times for an event." +msgstr "包含活動指定日期及時間資訊的區段。" + +#: patterns/event-schedule.php +msgctxt "Pattern title" +msgid "Event schedule" +msgstr "活動行程" + +#: patterns/event-rsvp.php:91 +msgid "Close up photo of white flowers on a grey background" +msgstr "灰色背景的白花特寫照片。" + +#: patterns/event-rsvp.php:81 +msgctxt "Abbreviation for \"Please respond\"." +msgid "RSVP" +msgstr "邀請回覆" + +#: patterns/event-rsvp.php:73 +msgid "This immersive event celebrates the universal human experience through the lenses of history and ancestry, featuring a diverse array of photographers whose works capture the essence of different cultures and historical moments." +msgstr "這場使與會者身歷其境的活動,透過記錄歷史及先民的鏡頭,歡慶人類的共同經驗,同時展出多位攝影師的作品,他們的作品捕捉了不同文化及歷史的精彩時刻。" + +#: patterns/event-rsvp.php:57 +msgid "Free Workshop" +msgstr "免費研討會" + +#: patterns/event-rsvp.php +msgctxt "Pattern description" +msgid "RSVP for an upcoming event with a cover image and event details." +msgstr "包含封面圖片及活動詳細資訊的即將舉辦的活動的邀請回覆。" + +#: patterns/event-rsvp.php +msgctxt "Pattern title" +msgid "Event RSVP" +msgstr "活動邀請回覆" + +#: patterns/event-3-col.php:50 patterns/event-3-col.php:74 +#: patterns/event-3-col.php:98 +msgid "Event details" +msgstr "活動詳細資訊" + +#: patterns/event-3-col.php:34 patterns/event-3-col.php:58 +#: patterns/event-3-col.php:82 patterns/format-audio.php:20 +msgid "Event image" +msgstr "活動圖片" + +#: patterns/event-3-col.php:24 patterns/event-schedule.php:23 +msgid "These are some of the upcoming events." +msgstr "部分即將舉辦的活動。" + +#: patterns/event-3-col.php:20 patterns/footer-columns.php:49 +#: patterns/footer.php:55 +msgid "Events" +msgstr "活動" + +#: patterns/event-3-col.php +msgctxt "Pattern description" +msgid "A header with title and text and three columns that show 3 events with their images and titles." +msgstr "包含標題、文字及顯示對應圖片、標題的 3 個活動的 3 欄式頁首。" + +#: patterns/event-3-col.php +msgctxt "Pattern title" +msgid "Events, 3 columns with event images and titles" +msgstr "包含活動圖片及標題的 3 欄式活動資訊" + +#: patterns/cta-newsletter.php:32 patterns/footer-newsletter.php:30 +#: patterns/page-coming-soon.php:39 +#: patterns/services-subscriber-only-section.php:51 +msgid "Subscribe" +msgstr "訂閱" + +#: patterns/cta-newsletter.php:23 +msgid "Get access to a curated collection of moments in time featuring photographs from historical relevance." +msgstr "獲得以歷史照片為特色的精彩瞬間照片集。" + +#: patterns/cta-newsletter.php:19 +msgid "Sign up to get daily stories" +msgstr "註冊以獲得每日故事選輯" + +#: patterns/cta-newsletter.php +msgctxt "Pattern title" +msgid "Newsletter sign-up" +msgstr "註冊電子報" + +#: patterns/cta-heading-search.php:21 patterns/hidden-search.php:14 +msgctxt "Search input field placeholder text." +msgid "Type here..." +msgstr "請在這裡輸入..." + +#: patterns/cta-heading-search.php:21 patterns/hidden-search.php:14 +msgctxt "Search form label." +msgid "Search" +msgstr "搜尋" + +#: patterns/cta-heading-search.php:18 +msgid "What are you looking for?" +msgstr "請輸入關鍵字開始搜尋。" + +#: patterns/cta-heading-search.php +msgctxt "Pattern description" +msgid "Large heading with a search form for quick navigation." +msgstr "包含快速導覽列搜尋表單的大型標題。" + +#: patterns/cta-heading-search.php +msgctxt "Pattern title" +msgid "Heading and search form" +msgstr "標題及搜尋表單" + +#: patterns/cta-grid-products-link.php:134 +msgid "Shop now" +msgstr "立即選購" + +#: patterns/cta-grid-products-link.php:114 +msgid "Botany flowers" +msgstr "植物花卉" + +#: patterns/cta-grid-products-link.php:100 +msgid "Cancel anytime" +msgstr "隨時可以取消" + +#: patterns/cta-grid-products-link.php:84 +msgid "Free shipping" +msgstr "免費配送" + +#: patterns/cta-grid-products-link.php:76 +msgid "Tailored to your needs" +msgstr "針對個人需求量身打造" + +#: patterns/cta-grid-products-link.php:70 +msgid "Flora of Akaka Falls State Park" +msgstr "阿卡卡瀑布州立公園的植物" + +#: patterns/cta-grid-products-link.php:59 +msgid "30€" +msgstr "NTD 1050" + +#. translators: %s: Starting price, split into three rows using HTML
tags. +#. The price value has a font size set. +#: patterns/cta-grid-products-link.php:58 +msgid "Starting at%s/month" +msgstr "最低%s/月" + +#: patterns/cta-grid-products-link.php:38 +msgid "Closeup of plantlife in the Malibu Canyon area" +msgstr "馬里布峽谷地區的植物特寫。" + +#: patterns/cta-grid-products-link.php:32 +msgid "Delivered every week" +msgstr "每週送貨" + +#: patterns/cta-grid-products-link.php:26 +#: patterns/cta-grid-products-link.php:126 +msgid "Black and white flower" +msgstr "黑白花朵" + +#: patterns/cta-grid-products-link.php:20 +msgid "Our online store." +msgstr "我們的線上商店。" + +#: patterns/cta-grid-products-link.php +msgctxt "Pattern description" +msgid "A call to action featuring product images." +msgstr "以商品圖片為主的行動號召。" + +#: patterns/cta-grid-products-link.php +msgctxt "Pattern title" +msgid "Call to action with grid layout with products and link" +msgstr "包含格狀排列版面配置、商品及連結的行動號召" + +#: patterns/cta-events-list.php:106 patterns/cta-events-list.php:144 +msgid "Thornville, OH, USA" +msgstr "台南市中西區" + +#: patterns/cta-events-list.php:75 +msgid "Mexico City, Mexico" +msgstr "高雄市左營區" + +#: patterns/cta-events-list.php:51 patterns/cta-events-list.php:89 +#: patterns/cta-events-list.php:120 patterns/cta-events-list.php:158 +msgid "Buy Tickets" +msgstr "購買門票" + +#: patterns/cta-events-list.php:45 patterns/cta-events-list.php:83 +#: patterns/cta-events-list.php:114 patterns/cta-events-list.php:152 +#: patterns/event-3-col.php:44 patterns/event-3-col.php:68 +#: patterns/event-3-col.php:92 patterns/event-rsvp.php:37 +#: patterns/event-schedule.php:35 patterns/event-schedule.php:121 +msgctxt "Example event date in pattern." +msgid "Mon, Jan 1" +msgstr "1 月 1 日星期一" + +#: patterns/cta-events-list.php:37 +msgid "Atlanta, GA, USA" +msgstr "嘉義縣民雄鄉" + +#: patterns/cta-events-list.php:23 +msgid "These are some of the upcoming events" +msgstr "以下是即將舉辦的部分活動。" + +#: patterns/cta-events-list.php:19 +msgid "Upcoming events" +msgstr "即將舉辦的活動" + +#: patterns/cta-events-list.php +msgctxt "Pattern description" +msgid "A list of events with call to action." +msgstr "包含行動號召的活動清單。" + +#: patterns/cta-events-list.php +msgctxt "Pattern title" +msgid "Events list" +msgstr "活動清單" + +#: patterns/banner-intro-image.php:42 patterns/cta-centered-heading.php:28 +#: patterns/hero-full-width-image.php:33 +msgid "Learn more" +msgstr "進一步了解" + +#: patterns/cta-centered-heading.php:22 +msgid "Like flowers that bloom in unexpected places, every story unfolds with beauty and resilience, revealing hidden wonders." +msgstr "如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開,展現隱藏的奇蹟。" + +#: patterns/cta-centered-heading.php:19 patterns/cta-events-list.php:33 +#: patterns/cta-events-list.php:102 patterns/event-3-col.php:40 +#: patterns/event-3-col.php:64 patterns/event-3-col.php:88 +#: patterns/template-home-photo-blog.php:27 +msgid "Tell your story" +msgstr "聊聊你的故事" + +#: patterns/cta-centered-heading.php +msgctxt "Pattern description" +msgid "A hero with a centered heading, paragraph and button." +msgstr "包含置中對齊標題、段落及按鈕的宣傳內容。" + +#: patterns/cta-centered-heading.php +msgctxt "Pattern title" +msgid "Centered heading" +msgstr "置中對齊的標題" + +#: patterns/cta-book-locations.php:131 +msgid "United Kingdom" +msgstr "英國" + +#: patterns/cta-book-locations.php:119 +msgid "United States" +msgstr "美國" + +#: patterns/cta-book-locations.php:107 +msgid "Switzerland" +msgstr "瑞士" + +#: patterns/cta-book-locations.php:95 +msgid "New Zealand" +msgstr "紐西蘭" + +#: patterns/cta-book-locations.php:79 +msgid "Japan" +msgstr "日本" + +#: patterns/cta-book-locations.php:67 +msgid "Canada" +msgstr "加拿大" + +#: patterns/cta-book-locations.php:55 +msgid "Brazil" +msgstr "巴西" + +#: patterns/cta-book-locations.php:47 patterns/cta-book-locations.php:59 +#: patterns/cta-book-locations.php:71 patterns/cta-book-locations.php:83 +#: patterns/cta-book-locations.php:99 patterns/cta-book-locations.php:111 +#: patterns/cta-book-locations.php:123 patterns/cta-book-locations.php:135 +msgid "Book Store" +msgstr "獨立書店" + +#: patterns/cta-book-locations.php:43 +msgid "Australia" +msgstr "澳洲" + +#: patterns/cta-book-locations.php:27 +msgid "The Stories Book will be available from these international retailers." +msgstr "《故事輯錄》可在所列的國際零售書店購得。" + +#: patterns/cta-book-locations.php:23 +msgid "International editions" +msgstr "國際版" + +#: patterns/cta-book-locations.php +msgctxt "Pattern description" +msgid "A call to action section with links to get the book in the most popular locations." +msgstr "包含購買書籍最熱門地點連結的行動號召區段。" + +#: patterns/cta-book-locations.php +msgctxt "Pattern title" +msgid "Call to action with locations" +msgstr "包含地點的行動號召" + +#: patterns/cta-book-links.php:57 +#: patterns/hero-overlapped-book-cover-with-links.php:100 +msgctxt "Pattern placeholder text with link." +msgid "Outside Europe? View international editions." +msgstr "如果身處台灣以外地區,請參考選購國際版。" + +#: patterns/cta-book-links.php:51 +msgctxt "Example brand name." +msgid "Simon & Schuster" +msgstr "Simon & Schuster" + +#: patterns/cta-book-links.php:47 +msgctxt "Example brand name." +msgid "BAM!" +msgstr "BAM!" + +#: patterns/cta-book-links.php:43 +msgctxt "Example brand name." +msgid "Spotify" +msgstr "Spotify" + +#: patterns/cta-book-links.php:39 +msgctxt "Example brand name." +msgid "Bookshop.org" +msgstr "Bookshop.org" + +#: patterns/cta-book-links.php:35 +#: patterns/hero-overlapped-book-cover-with-links.php:62 +msgctxt "Example brand name." +msgid "Apple Books" +msgstr "Apple Books" + +#: patterns/cta-book-links.php:31 +#: patterns/hero-overlapped-book-cover-with-links.php:84 +msgctxt "Example brand name." +msgid "Barnes & Noble" +msgstr "Barnes & Noble" + +#: patterns/cta-book-links.php:27 +#: patterns/hero-overlapped-book-cover-with-links.php:77 +msgctxt "Example brand name." +msgid "Audible" +msgstr "Audible" + +#: patterns/cta-book-links.php:23 +#: patterns/hero-overlapped-book-cover-with-links.php:55 +msgctxt "Example brand name." +msgid "Amazon" +msgstr "Amazon" + +#: patterns/cta-book-links.php:17 +msgid "Buy your copy of The Stories Book" +msgstr "購買《故事輯錄》" + +#: patterns/cta-book-links.php +msgctxt "Pattern description" +msgid "A call to action section with links to get the book in different websites." +msgstr "包含在不同網站購買書籍連結的行動號召區段。" + +#: patterns/cta-book-links.php +msgctxt "Pattern title" +msgid "Call to action with book links" +msgstr "包含書籍連結的行動號召" + +#: patterns/contact-location-and-link.php:36 +msgid "The business location" +msgstr "營業地點" + +#: patterns/contact-location-and-link.php:26 +msgid "Get directions" +msgstr "規劃路線" + +#: patterns/contact-location-and-link.php:22 +msgid "Visit us at 123 Example St. Manhattan, NY 10300, United States" +msgstr "我們位於高雄市苓雅區四維三路 2 號" + +#: patterns/contact-location-and-link.php +msgctxt "Pattern description" +msgid "Contact section with a location address, a directions link, and an image of the location." +msgstr "包含地址、規劃路線連結及地點圖片的聯絡方式區段。" + +#: patterns/contact-location-and-link.php +msgctxt "Pattern title" +msgid "Contact location and link" +msgstr "聯絡地點及連結" + +#: patterns/contact-info-locations.php:86 +msgid "Portland" +msgstr "台南市" + +#: patterns/contact-info-locations.php:74 +msgid "Salt Lake City" +msgstr "彰化縣" + +#: patterns/contact-info-locations.php:62 +msgid "San Diego" +msgstr "嘉義縣" + +#: patterns/contact-info-locations.php:54 +#: patterns/contact-info-locations.php:66 +#: patterns/contact-info-locations.php:78 +#: patterns/contact-info-locations.php:90 +msgid "123 Example St. Manhattan, NY 10300 United States" +msgstr "高雄市苓雅區四維三路 2 號" + +#: patterns/contact-info-locations.php:51 +msgid "New York" +msgstr "高雄市" + +#: patterns/contact-info-locations.php:41 +msgid "example@example.com" +msgstr "example@example.com" + +#: patterns/contact-info-locations.php:38 +msgid "Email" +msgstr "電子郵件地址" + +#: patterns/contact-info-locations.php:35 +#: patterns/page-link-in-bio-heading-paragraph-links-image.php:44 +#: patterns/page-link-in-bio-with-tight-margins.php:56 +msgid "TikTok" +msgstr "TikTok" + +#: patterns/contact-info-locations.php:34 patterns/footer-social.php:21 +msgid "Facebook" +msgstr "Facebook" + +#: patterns/contact-info-locations.php:33 patterns/footer-social.php:22 +#: patterns/media-instagram-grid.php:24 patterns/page-cv-bio.php:47 +#: patterns/page-link-in-bio-heading-paragraph-links-image.php:36 +#: patterns/page-link-in-bio-with-tight-margins.php:48 +msgid "Instagram" +msgstr "Instagram" + +#: patterns/contact-info-locations.php:32 patterns/footer-social.php:23 +#: patterns/page-link-in-bio-heading-paragraph-links-image.php:40 +#: patterns/page-link-in-bio-with-tight-margins.php:52 +msgctxt "Refers to the social media platform formerly known as Twitter." +msgid "X" +msgstr "X" + +#: patterns/contact-info-locations.php:29 +#: patterns/contact-info-locations.php:31 patterns/footer-social.php:20 +msgid "Social media" +msgstr "社交網路服務" + +#: patterns/contact-info-locations.php:21 +msgid "How to get in touch with us" +msgstr "我們的聯絡方式" + +#: patterns/contact-info-locations.php +msgctxt "Pattern description" +msgid "Contact section with social media links, email, and multiple location details." +msgstr "包含社交網路服務連結、電子郵件地址及多個地點的聯絡資訊區段。" + +#: patterns/contact-info-locations.php +msgctxt "Pattern title" +msgid "Contact, info and locations" +msgstr "聯絡方式、資訊及地點" + +#: patterns/contact-centered-social-link.php:21 +msgctxt "Heading of the Contact social link pattern" +msgid "Got questions?
Feel free to reach out." +msgstr "遇到問題?
歡迎隨時洽詢。" + +#: patterns/contact-centered-social-link.php +msgctxt "Pattern description" +msgid "Centered contact section with a prominent message and social media links." +msgstr "包含顯眼訊息及社交網路服務連結的置中對齊聯絡資訊區段。" + +#: patterns/contact-centered-social-link.php +msgctxt "Pattern title" +msgid "Centered link and social links" +msgstr "置中對齊的連結及社交網路服務連結" + +#: patterns/comments.php:18 +msgid "Comments" +msgstr "留言" + +#: patterns/comments.php +msgctxt "Pattern description" +msgid "Comments area with comments list, pagination, and comment form." +msgstr "包含留言清單、分頁頁次及留言表單的留言區域。" + +#: patterns/comments.php +msgctxt "Pattern title" +msgid "Comments" +msgstr "留言" + +#: patterns/binding-format.php +msgctxt "Pattern description" +msgid "Prints the name of the post format with the help of the Block Bindings API." +msgstr "透過 Block Bindings API 的協助,列印文章格式的名稱。" + +#: patterns/binding-format.php +msgctxt "Pattern title" +msgid "Post format name" +msgstr "文章格式名稱" + +#: patterns/banner-with-description-and-images-grid.php:48 +#: patterns/overlapped-images.php:26 +msgid "Black and white photography close up of a flower." +msgstr "花朵特寫的黑白攝影。" + +#: patterns/banner-with-description-and-images-grid.php:42 +#: patterns/overlapped-images.php:21 +msgid "Photography close up of a red flower." +msgstr "紅花特寫攝影。" + +#. translators: %s is the brand name, e.g., 'Fleurs'. +#: patterns/banner-with-description-and-images-grid.php:31 +#: patterns/overlapped-images.php:47 +msgid "%s is a flower delivery and subscription business. Based in the EU, our mission is not only to deliver stunning flower arrangements across but also foster knowledge and enthusiasm on the beautiful gift of nature: flowers." +msgstr "%s 是一家總部設於歐盟,提供鮮花配送及客戶定期回購服務的公司。我們的使名不僅是配送令人驚艷的插花作品,更要培養大眾對大自然美麗獻禮 - 花朵的知識及熱愛。" + +#: patterns/banner-with-description-and-images-grid.php:23 +#: patterns/overlapped-images.php:37 +msgid "About Us" +msgstr "關於我們" + +#: patterns/banner-with-description-and-images-grid.php +msgctxt "Pattern description" +msgid "A banner with a short paragraph, and two images displayed in a grid layout." +msgstr "包含簡短段落、格狀排列 2 張圖片的橫幅。" + +#: patterns/banner-with-description-and-images-grid.php +msgctxt "Pattern title" +msgid "Banner with description and images grid" +msgstr "包含內容說明及格狀排列圖片的橫幅" + +#: patterns/banner-poster.php:59 +msgid "#stories" +msgstr "#故事選輯" + +#: patterns/banner-poster.php:51 +msgid "Let’s hear them." +msgstr "靜心聆聽..." + +#: patterns/banner-poster.php:39 +msgid "Fuego Bar, Mexico City" +msgstr "高雄市獨立酒吧" + +#: patterns/banner-poster.php:39 +msgctxt "Example event date in pattern." +msgid "Aug 08—10 2025" +msgstr "2025 年 8 月 8 日至 10 日" + +#. translators: This string contains the word "Stories" in four different +#. languages with the first item in the locale's language. +#: patterns/banner-poster.php:28 patterns/cta-events-list.php:68 +#: patterns/cta-events-list.php:137 patterns/event-rsvp.php:30 +msgctxt "Placeholder heading in four languages." +msgid "“Stories, historias, iсторії, iστορίες”" +msgstr "“故事選輯historiasiсторіїiστορίες”" + +#: patterns/banner-poster.php:15 +msgid "Picture of a historical building in ruins." +msgstr "歷史建築廢墟圖片。" + +#: patterns/banner-poster.php +msgctxt "Pattern description" +msgid "A section that can be used as a banner or a landing page to announce an event." +msgstr "可用於橫幅或公告活動到達網頁的區段。" + +#: patterns/banner-poster.php +msgctxt "Pattern title" +msgid "Poster-like section" +msgstr "宣傳圖片區段" + +#: patterns/banner-intro.php:22 +#: patterns/banner-with-description-and-images-grid.php:32 +#: patterns/footer-columns.php:46 patterns/overlapped-images.php:48 +msgctxt "Example brand name." +msgid "Fleurs" +msgstr "Fleurs" + +#. translators: %s is the brand name, e.g., 'Fleurs'. +#: patterns/banner-intro.php:21 +msgctxt "Pattern placeholder text." +msgid "We're %s, our mission is to deliver exquisite flower arrangements that not only adorn living spaces but also inspire a deeper appreciation for natural beauty." +msgstr "我們是提供精美插花作品的 %s,這些作品不僅能點綴生活空間,還能激發人們對自然美有更加深刻的了解。" + +#: patterns/banner-intro.php +msgctxt "Pattern description" +msgid "A large left-aligned heading with a brand name emphasized in bold." +msgstr "包含以粗體強調品牌名稱的靠左對齊大型標題。" + +#: patterns/banner-intro.php +msgctxt "Pattern title" +msgid "Intro with left-aligned description" +msgstr "包含靠左對齊內容說明的簡介" + +#: patterns/banner-intro-image.php:35 +msgctxt "Sample description for banner with flower." +msgid "Like flowers that bloom in unexpected places, every story unfolds with beauty and resilience, revealing hidden wonders." +msgstr "如同在意料之外的地方盛開的花朵,每個故事都以美麗和堅韌的姿態展開,展現隱藏的奇蹟。" + +#: patterns/banner-intro-image.php:31 +msgctxt "Heading for banner pattern." +msgid "New arrivals" +msgstr "新品上市" + +#: patterns/banner-intro-image.php:22 +msgctxt "Alt text for intro picture." +msgid "Picture of a flower" +msgstr "花的圖片" + +#: patterns/banner-intro-image.php +msgctxt "Pattern description" +msgid "A Intro pattern with Short heading, paragraph and image on the left." +msgstr "包含左側圖片的簡短標題及段落的簡介區塊版面配置。" + +#: patterns/banner-intro-image.php +msgctxt "Pattern title" +msgid "Short heading and paragraph and image on the left" +msgstr "包含左側圖片的簡短標題及段落" + +#: patterns/banner-cover-big-heading.php:27 patterns/footer-columns.php:33 +#: patterns/footer-columns.php:35 patterns/footer-newsletter.php:20 +#: patterns/template-home-photo-blog.php:22 +msgid "Stories" +msgstr "故事選輯" + +#: patterns/banner-cover-big-heading.php:20 +#: patterns/media-instagram-grid.php:36 patterns/page-coming-soon.php:19 +msgid "Photo of a field full of flowers, a blue sky and a tree." +msgstr "開滿花海的田園、藍天及樹木。" + +#: patterns/banner-cover-big-heading.php +msgctxt "Pattern description" +msgid "A full-width cover section with a large background image and an oversized heading." +msgstr "包含大型背景圖片及超大型標題的全幅寬度封面區段。" + +#: patterns/banner-cover-big-heading.php +msgctxt "Pattern title" +msgid "Cover with big heading" +msgstr "包含大型標題的封面" + +#: patterns/banner-about-book.php:34 +msgid "Image of a book" +msgstr "書籍圖片" + +#: patterns/banner-about-book.php:26 +msgctxt "Pattern placeholder text." +msgid "This exquisite compilation showcases a diverse array of photographs that capture the essence of different eras and cultures, reflecting the unique styles and perspectives of each artist. Fleckenstein’s evocative imagery, Strand’s groundbreaking modernist approach, and Kōno’s meticulous documentation of Japanese life come together in a harmonious blend that celebrates the art of photography. Each image in “The Stories Book” is accompanied by insightful commentary, providing historical context and revealing the stories behind the photographs. This collection is not only a visual feast but also a tribute to the power of photography to preserve and narrate the multifaceted experiences of humanity." +msgstr "這本精美的合輯展示捕捉了不同時代及文化精髓的相片,並反映了每位藝術家的獨特風格及視角。這本合輯將 Fleckenstein 令人回味的意象,Strand 突破性的現代主義手法,以及 Kōno 對日本生活觀察入微的記錄,以和諧的方式融合在一起,並讚頌了攝影藝術。《故事輯錄》中的每張圖片都附有精闢的評論,提供歷史背景並提供照片的背景故事。這本攝影集不僅是一場視覺饗宴,也是對攝影在保存及闡述人類多樣性上的致敬。" + +#: patterns/banner-about-book.php:22 +msgid "About the book" +msgstr "書籍介紹" + +#: patterns/banner-about-book.php +msgctxt "Pattern description" +msgid "Banner with book description and accompanying image for promotion." +msgstr "供宣傳書籍用、包含書籍內容說明及附圖的橫幅。" + +#: patterns/banner-about-book.php +msgctxt "Pattern title" +msgid "Banner with book description" +msgstr "包含書籍內容說明的橫幅" + +#: functions.php:142 +msgctxt "Label for the block binding placeholder in the editor" +msgid "Post format name" +msgstr "文章格式名稱" + +#: functions.php:122 +msgid "A collection of post format patterns." +msgstr "文章格式區塊版面配置組合。" + +#: functions.php:121 +msgid "Post formats" +msgstr "文章格式" + +#: functions.php:114 +msgid "A collection of full page layouts." +msgstr "完整頁面版面配置集合。" + +#: functions.php:113 +msgid "Pages" +msgstr "頁面" + +#: functions.php:84 +msgid "Checkmark" +msgstr "核取記號" + +#. Author URI of the theme +#: style.css patterns/footer-centered.php:34 patterns/footer-columns.php:74 +#: patterns/footer-newsletter.php:50 patterns/footer-social.php:36 +#: patterns/footer.php:83 +#, gp-priority: low +msgid "https://wordpress.org" +msgstr "https://tw.wordpress.org" + +#. Author of the theme +#: style.css +#, gp-priority: low +msgid "the WordPress team" +msgstr "WordPress 團隊" + +#. Theme URI of the theme +#: style.css +#, gp-priority: low +msgid "https://wordpress.org/themes/twentytwentyfive/" +msgstr "https://tw.wordpress.org/themes/twentytwentyfive/" \ No newline at end of file diff --git a/languages/themes/twentytwentyfour-zh_TW.l10n.php b/languages/themes/twentytwentyfour-zh_TW.l10n.php new file mode 100644 index 0000000..913d67a --- /dev/null +++ b/languages/themes/twentytwentyfour-zh_TW.l10n.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.3','translation-revision-date'=>'2025-01-08 20:10:12+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'Themes - Twenty Twenty-Four','language'=>'zh_TW','messages'=>['Twenty Twenty-Four is designed to be flexible, versatile and applicable to any website. Its collection of templates and patterns tailor to different needs, such as presenting a business, blogging and writing or showcasing work. A multitude of possibilities open up with just a few adjustments to color and typography. Twenty Twenty-Four comes with style variations and full page designs to help speed up the site building process, is fully compatible with the site editor, and takes advantage of new design tools introduced in WordPress 6.4.'=>'Twenty Twenty-Four 的設計目的在於靈活、多功能,並且能適用於任何網站。使用者可以不同依據,例如宣傳業務、撰寫部落格文章或展示作品,自訂它所內建的範本及區塊版面配置;僅需對色彩配置及排版樣式進行些許調整,便能開啟多種可能性。使用網站編輯器及 WordPress 6.4 導入的全新設計工具,搭配 Twenty Twenty-Four 內建的樣式變化及完整頁面設計,便能加速網站建置程序。','Twenty Twenty-Four'=>'Twenty Twenty-Four','Pattern descriptionA centered text statement with a large amount of padding on all sides.'=>'包含大型邊框間距的置中文字聲明。','Pattern titlePosts heading'=>'文章標題','Pattern descriptionA title, a paragraph and a CTA button on the left with an image on the right.'=>'包含右方圖片的標題、段落及行動號召按鈕。','Pattern descriptionA text-only section for project details.'=>'僅有文字內容區段的專案詳細資料。','Pattern descriptionA feature grid of 2 rows and 3 columns with headings and text.'=>'包含標題及文字的 3 欄 2 列格狀排列說明。','Question in the FAQ patternWho is behind Études?'=>'Études 的幕後推手','Pattern descriptionA FAQ section with a large FAQ heading and a group of questions and answers.'=>'包含大型常見問題集標題及問答組。','Pattern descriptionA centered italic text statement with compact padding.'=>'包含密集邊框間距的居中斜體文字聲明。','Pattern descriptionA text section, then a two-column section with text in one column and an image in the other.'=>'文字區段及包含 1 欄文字、1 欄圖片的 2 欄式區段。','Pattern descriptionA centered testimonial section with an avatar, name, and job title.'=>'包含個人頭像、名字及職稱的置中證言內容區段。','Pattern descriptionA team section, with a heading, a paragraph, and 4 columns for team members.'=>'包含標題、段落及 4 欄團隊成員介紹的團隊介紹區段。','Pattern descriptionA list of posts without images, 1 column.'=>'不包含圖片的 1 欄式內容清單。','Pattern descriptionA list of posts with featured images only, 4 columns.'=>'僅顯示精選圖片的 4 欄式內容。','Pattern descriptionA list of posts with featured images only, 3 columns.'=>'僅顯示精選圖片的 3 欄式內容。','Pattern descriptionA grid of posts featuring the first post, 2 columns.'=>'強調第一篇內容的 2 欄式格狀排列內容。','Pattern descriptionA list of posts, 3 columns.'=>'3 欄式內容清單。','Pattern descriptionA list of posts, 1 column.'=>'1 欄式內容清單。','Pattern descriptionA full portfolio page with a section for project description, project details, a full screen image, and a gallery section with two images.'=>'包含專案說明區段、專案詳細資料、全螢幕圖片及 2 張圖片圖庫區段的完整作品集頁面。','Pattern descriptionA block with a newsletter subscription CTA for a landing page.'=>'包含電子報訂閱行動號召的到達網頁區塊。','Pattern descriptionA portfolio home page with a description and a 4-column post section with only feature images.'=>'包含內容說明、僅有精選圖片的 4 欄文章區段的作品集首頁。','Pattern descriptionA portfolio home page that features a gallery.'=>'包含內容精選圖庫的作品集首頁。','Pattern descriptionA business home page with a hero section, a text section, a services section, a team section, a clients section, a FAQ section, and a CTA section.'=>'包含宣傳內容區段、文字區段、服務項目區段、團隊介紹區段、客戶介紹區段、常見問題集區段及行動號召區段的商務首頁。','Pattern descriptionA blogging home page with a hero section, a text section, a blog section, and a CTA section.'=>'包含宣傳內容區段、文字區段、部落格區段及行動號召區段的部落格首頁。','Pattern descriptionA business about page with a hero section, a text section, a services section, a team section, a clients section, a FAQ section, and a CTA section.'=>'包含宣傳內容區段、文字區段、服務項目區段、團隊介紹區段、客戶介紹區段、常見問題集區段及行動號召區段的商務內容簡介頁面。','Pattern descriptionA gallery section with a project layout with 2 images.'=>'包含 2 張圖片的專案版面配置的圖庫區段。','Pattern descriptionA gallery section with 4 columns and offset images.'=>'包含 4 欄交錯圖片的圖庫區段。','Pattern descriptionA gallery section with 3 columns and offset images.'=>'包含 3 欄交錯圖片的圖庫區段。','Pattern descriptionA gallery section with 2 columns and offset images.'=>'包含 2 欄交錯圖片的圖庫區段。','Pattern descriptionA cover image section that covers the entire width.'=>'覆蓋全部寬度的封面圖片區段。','Pattern descriptionA footer section with a colophon and 4 columns.'=>'包含版權宣告的 4 欄式頁尾區段。','Pattern descriptionA footer section with a colophon and 3 columns.'=>'包含版權宣告的 3 欄式頁尾區段。','Pattern descriptionA footer section with a centered logo, navigation, and WordPress credits.'=>'包含置中標誌、導覽列及「本站採用 WordPress 建置」字樣的頁尾區段。','Pattern descriptionSubscribers CTA section with a title, a paragraph and a CTA button.'=>'包含標題、段落及行動號召按鈕的訂閱者行動號召區段。','Pattern descriptionAn image, title, paragraph and a CTA button to describe services.'=>'用於說明服務項目的圖片、標題、段落及行動號召按鈕。','Pattern descriptionA large RSVP heading sideways, a description, and a CTA button.'=>'包含大型「確認是否參加」的側邊標題、內容說明及行動號召按鈕。','Pattern descriptionA pricing section with a title, a paragraph and three pricing levels.'=>'包含標題、段落及 3 個價格方案的價格區段。','Pattern descriptionA title, paragraph, two CTA buttons, and an image for a general CTA section.'=>'包含標題、段落、2 個行動號召按鈕及圖片的行動號召區段。','Pattern descriptionProject description section with title, paragraph, and an image.'=>'包括標題、段落及圖片的專案說明區段。','Pattern descriptionA hero section with a title, a paragraph, a CTA button, and an image.'=>'包含標題、段落、行動號召按鈕及圖片的宣傳內容區段。','Twitter/X'=>'Twitter/X','Contact Us'=>'聯絡資訊','Terms and Conditions'=>'條款及條件','Privacy Policy'=>'隱私權政策','Careers'=>'職涯發展','History'=>'發展沿革','Team'=>'團隊介紹','Pattern titleList of posts without images, 1 column'=>'不包含圖片的 1 欄式內容清單','I’m Leia Acosta, a passionate photographer who finds inspiration in capturing the fleeting beauty of life.'=>'我是高雷亞,一個充滿熱情的攝影師,擅長捕捉生活中轉瞬即逝的美好靈感。','A collection of full page layouts.'=>'完整頁面版面配置集合。','Block pattern categoryPages'=>'頁面','Custom template nameSingle with Sidebar'=>'包含資訊欄的單篇內容','Custom template namePage with Wide Image'=>'包含寬幅寬度圖片的頁面','Custom template namePage with Sidebar'=>'包含資訊欄的頁面','Custom template namePage No Title'=>'沒有標題的頁面','Template part namePost Meta'=>'文章中繼資料','Template part nameSidebar'=>'資訊欄','Template part nameFooter'=>'頁尾','Template part nameHeader'=>'頁首','Space size name6'=>'6','Space size name5'=>'5','Space size name4'=>'4','Space size name3'=>'3','Space size name2'=>'2','Space size name1'=>'1','Gradient nameVertical hard pewter to white'=>'白鑞色直向固化至白色','Gradient nameVertical hard mint to white'=>'薄荷綠直向固化至白色','Gradient nameVertical hard sage to white'=>'灰綠色直向固化至白色','Gradient nameVertical hard rust to white'=>'鐵鏽色直向固化至白色','Gradient nameVertical hard sandstone to white'=>'灰紅色直向固化至白色','Gradient nameVertical hard beige to white'=>'米黃色直向固化至白色','Gradient nameVertical soft pewter to white'=>'白鑞色直向柔化至白色','Gradient nameVertical soft mint to white'=>'薄荷綠直向柔化至白色','Gradient nameVertical soft sage to white'=>'灰綠色直向柔化至白色','Gradient nameVertical soft rust to white'=>'鐵鏽色直向柔化至白色','Gradient nameVertical soft sandstone to white'=>'灰紅色直向柔化至白色','Gradient nameVertical soft beige to white'=>'米黃色直向柔化至白色','Duotone nameBlack and pastel blue'=>'黑色及淺藍色','Duotone nameBlack and sage'=>'黑色及灰綠色','Duotone nameBlack and rust'=>'黑色及鐵鏽色','Duotone nameBlack and sandstone'=>'黑色及灰紅色','Duotone nameBlack and white'=>'黑色及白色','Color nameBase / 2'=>'基準色 2','Gradient nameVertical hard rust to beige'=>'鐵鏽色直向固化至米黃色','Gradient nameVertical rust to beige'=>'鐵鏽色直向至米黃色','Gradient nameVertical hard transparent rust to beige'=>'鐵鏽色直向固化透明至米黃色','Gradient nameVertical transparent rust to beige'=>'鐵鏽色直向透明至米黃色','Duotone nameDark rust to beige'=>'深鐵鏽色至米黃色','Style variation nameRust'=>'斑斑鏽跡','Color nameAccent / Five'=>'強調色 5','Color nameAccent / Four'=>'強調色 4','Color nameAccent / Three'=>'強調色 3','Color nameAccent / Two'=>'強調色 2','Color nameAccent'=>'強調色','Gradient nameVertical hard pewter to dark gray'=>'白鑞色直向固化至深灰色','Gradient nameVertical hard steel to dark gray'=>'鋼色直向固化至深灰色','Gradient nameVertical hard olive to dark gray'=>'橄欖綠直向固化至深灰色','Gradient nameVertical hard cinnamon to dark gray'=>'肉桂色直向固化至深灰色','Gradient nameVertical hard walnut to dark gray'=>'胡桃色直向固化至深灰色','Gradient nameVertical hard beige to dark gray'=>'米黃色直向固化至深灰色','Gradient nameVertical soft pewter to dark gray'=>'白鑞色直向柔化至深灰色','Gradient nameVertical soft steel to dark gray'=>'鋼色直向柔化至深灰色','Gradient nameVertical soft olive to dark gray'=>'橄欖綠直向柔化至深灰色','Gradient nameVertical soft cinnamon to dark gray'=>'肉桂色直向柔化至深灰色','Gradient nameVertical soft walnut to dark gray'=>'胡桃色直向柔化至深灰色','Gradient nameVertical soft driftwood to dark gray'=>'浮木色直向柔化至深灰色','Duotone nameDark gray and steel'=>'深灰色及鋼色','Duotone nameDark gray and olive'=>'深灰色及橄欖色','Duotone nameDark gray and cinnamon'=>'深灰色及肉桂色','Duotone nameDark gray and walnut'=>'深灰色及胡桃色','Duotone nameDark gray and white'=>'深灰色及白色','Style variation nameOnyx'=>'神秘瑪瑙','Style variation nameMint'=>'清新薄荷','Color nameContrast / 3'=>'對比色彩 / 3','Style variation nameMaelstrom'=>'無盡漩渦','Gradient nameVertical hard ink to ocean'=>'墨黑色直向固化至海洋藍','Gradient nameVertical hard ocean to slate'=>'海洋藍直向固化至石版灰','Gradient nameVertical hard ink to ice'=>'墨黑色直向固化至冰藍色','Gradient nameVertical hard ocean to ice'=>'海洋藍直向固化至冰藍色','Gradient nameVertical hard slate to ice'=>'石版灰直向固化至冰藍色','Gradient nameVertical hard ice to azure'=>'冰藍色直向固化至天藍色','Gradient nameVertical ink to ocean'=>'墨黑色直向至海洋藍','Gradient nameVertical ocean to slate'=>'海洋藍直向至石版灰','Gradient nameVertical ink to ice'=>'墨黑色直向至冰藍色','Gradient nameVertical ocean to ice'=>'海洋藍直向至冰藍色','Gradient nameVertical slate to ice'=>'石版灰直向至冰藍色','Gradient nameVertical azure to ice'=>'天藍色直向至冰藍色','Style variation nameIce'=>'凜冬將至','Font size nameExtra Extra Large'=>'超巨大型','Font size nameExtra Large'=>'超大型','Font size nameLarge'=>'大型','Font size nameMedium'=>'中型','Font size nameSmall'=>'小型','Font family nameCardo'=>'Cardo','Font family nameInter'=>'Inter','Color nameContrast / Three'=>'對比色彩 3','Color nameContrast / Two'=>'對比色彩 2','Style variation nameFossil'=>'堅若磐石','Font family nameSystem Serif'=>'系統有襯線字型','Font family nameSystem Sans-serif'=>'系統無襯線字型','Font family nameJost'=>'Jost','Font family nameInstrument Sans'=>'Instrument Sans','Color nameBase / Two'=>'基準色 2','Color nameContrast'=>'對比色彩','Color nameContrast / 2'=>'對比色彩 / 2','Color nameBase'=>'基準色','Gradient nameVertical hard ebony to sable'=>'黑檀色直向固化至深紫色','Gradient nameVertical hard sable to taupe'=>'深紫色直向固化至灰褐色','Gradient nameVertical hard ebony to beige'=>'黑檀色直向固化至米黃色','Gradient nameVertical hard sable to beige'=>'深紫色直向固化至米黃色','Gradient nameVertical hard taupe to beige'=>'灰褐色直向固化至米黃色','Gradient nameVertical hard beige to linen'=>'米黃色直向固化至亞麻色','Gradient nameVertical ebony to sable'=>'黑檀色直向至灰褐色','Gradient nameVertical ebony to beige'=>'黑檀色直向至米黃色','Gradient nameVertical sable to beige'=>'深紫色直向至米黃色','Gradient nameVertical taupe to beige'=>'灰褐色直向至米黃色','Gradient nameVertical linen to beige'=>'亞麻色直向至米黃色','Duotone nameOrange and white'=>'橘色及白色','Style variation nameEmber'=>'餘焰微光','Call to Action button textAbout us'=>'關於我們','Description for the About patternLeaving an indelible mark on the landscape of tomorrow.'=>'在未來的景色中留下深刻的印記。','Headline for the About patternÉtudes offers comprehensive consulting, management, design, and research solutions. Every architectural endeavor is an opportunity to shape the future.'=>'Études 提供全方位的諮詢、管理、設計及研究解決方案。為每座建築付出的努力,都是一次次型塑未來的機會。','Pattern titleTitle text and button on left with image on right'=>'包含右方圖片的標題文字及按鈕','Descriptive text for the feature areaThe revitalized Art Gallery is set to redefine the cultural landscape of Toronto, serving as a nexus of artistic expression, community engagement, and architectural marvel. The expansion and renovation project pay homage to the Art Gallery\'s rich history while embracing the future, ensuring that the gallery remains a beacon of inspiration.'=>'煥然一新的美術館將重新定義多倫多的文化景觀,成為藝術表達、社區參與及建築景觀的結合。擴建及翻新專案在向美術館的豐富歷史致敬之際,同時也擁抱未來,讓美術館繼續成為靈感之源。','Descriptive title for the feature areaWith meticulous attention to detail and a commitment to excellence, we create spaces that inspire, elevate, and enrich the lives of those who inhabit them.'=>'憑藉著對細節的一絲不苟及追求卓越的精神,我們創造出能激發、提升和豐富住戶生活的建築空間。','Title text for the feature areaThe revitalized art gallery is set to redefine cultural landscape.'=>'煥然一新的美術館會重新定義文化景觀。','Pattern titleProject details'=>'專案詳細資料','Sample contentExperience the fusion of imagination and expertise with Études Architectural Solutions.'=>'體驗 Études Architectural Solutions 創造力及專業知識的融合。','Sample headingArchitectural Solutions'=>'建築解決方案','Sample feature headingProject Management'=>'專案管理','Sample feature headingConsulting'=>'諮詢服務','Sample feature headingApp Access'=>'有 App 可供使用','Sample feature headingContinuous Support'=>'持續支援','Sample feature contentExperience the fusion of imagination and expertise with Études Architectural Solutions.'=>'體驗 Études Architectural Solutions 創造力及專業知識的融合。','Sample feature headingRenovation and restoration'=>'翻新及修復','Sub-heading of the featuresOur comprehensive suite of professional services caters to a diverse clientele, ranging from homeowners to commercial developers.'=>'我們全方位的專業服務組合可以配合從屋主到商業開發商等不同客戶。','Heading of the featuresA passion for creating spaces'=>'對空間創造的熱情','Pattern titleFeature grid, 3 columns'=>'3 欄式格狀排列重點內容','Question in the FAQ patternCan I apply to be a part of the team or work as a contractor?'=>'我可以申請成為貴團隊的一員,或成為承包商嗎?','Question in the FAQ patternI\'d like to get to meet fellow architects, how can I do that?'=>'我想認識其他建築師,該如何進行?','Answer in the FAQ patternÉtudes offers comprehensive consulting, management, design, and research solutions. Our vision is to be at the forefront of architectural innovation, fostering a global community of architects and enthusiasts united by a passion for creating spaces. Every architectural endeavor is an opportunity to shape the future.'=>'Études 提供全方位的諮詢、管理、設計及研究解決方案。我們的院警示走在建築創新的最尖端,並培養出遊建築師及建築愛好者組成的全球性社群。為每座建築付出的努力,都是一次次型塑未來的機會。','Question in the FAQ patternWhat is your process working in smaller projects?'=>'Études在小型專案中的工作流程為何?','Heading of the FAQsFAQs'=>'常見問題集','Name of the FAQ patternFAQs'=>'常見問題集','Pattern titleFAQ'=>'常見問題集','Études is not confined to the past—we are passionate about the cutting edge designs shaping our world today.'=>'Études 不拘泥於過往,而是全情投入塑造當今的頂尖設計。','Pattern titleCentered statement'=>'置中的聲明','I write about finance, management and economy, my book “%1$s” is out now.'=>'我撰寫財經、管理及經濟相關領域的書籍,新書《%1$s》業已出版。','Money Studies'=>'貨幣研究','Pattern titleCentered statement, small'=>'小型置中的聲明','Sample list itemExclusive access to design insights.'=>'獨家訪問設計深入解析案例。','Sample list itemCase studies that celebrate architecture.'=>'值得探討的建築案例研究。','Sample list itemA world of thought-provoking articles.'=>'發人深省的世界級內容。','Sample headingÉtudes Newsletter'=>'Études 電子報','Windows of a building in Nuremberg, Germany'=>'德國紐倫堡一棟建築的窗戶','Tourist taking photo of a building'=>'遊客拍攝建築物的照片','Sample list headingÉtudes Architect App'=>'Études Architect 行動 App','Sample subheading contentOur comprehensive suite of professional services caters to a diverse clientele, ranging from homeowners to commercial developers.'=>'我們全方位的專業服務組合可以配合從屋主到商業開發商等不同客戶。','Sample heading contentAn array of resources'=>'系列資源','Pattern titleText with alternating images'=>'包含替代圖片的文字','Designation of Person Provided TestimonialCEO, Greenprint'=>'Greenprint CEO','Name of Person Provided the TestimonialAnnie Steiner'=>'施安霓','Name of testimonial citation groupTestimonial source'=>'證言內容來源','Testimonial Text or Review Text Got From the Person“Études has saved us thousands of hours of work and has unlocked insights we never thought possible.”'=>'“Études 為我們節省了數千小時的工作時間,並啟發了我們從未想過的深入解析。”','Name of testimonial patternTestimonial'=>'證言內容','Pattern titleCentered testimonial'=>'置中的證言內容','Pattern titlePortfolio single post template'=>'作品集單篇內容範本','Pattern titleBlogging search template'=>'部落格搜尋範本','Pattern titlePortfolio search template'=>'作品集搜尋範本','Pattern titlePortfolio index template'=>'作品集索引範本','Pattern titleBlogging index template'=>'部落格索引範本','Pattern titlePortfolio home template with post featured images'=>'包含內容精選圖片的作品集首頁範本','Pattern titleBusiness home template'=>'商務首頁範本','Pattern titleBlogging home template'=>'部落格首頁範本','Pattern titlePortfolio archive template'=>'作品集彙整頁面範本','Pattern titleBlogging archive template'=>'部落格彙整頁面範本','Sample role of a team memberProject Manager'=>'專案經理','Sample name of a team memberIvan Lawrence'=>'羅倫范','Sample role of a team memberArchitect'=>'建築師','Sample name of a team memberHelga Steiner'=>'施泰爾','Sample role of a team memberEngineering Manager'=>'工程經理','Sample name of a team memberRhye Moore'=>'莫飛易','Sample role of a team memberFounder, CEO & Architect'=>'創辦人、CEO 兼建築師','Sample name of a team memberFrancesca Piovani'=>'皮凡卡','Sample descriptive text of the team patternOur comprehensive suite of professionals caters to a diverse team, ranging from seasoned architects to renowned engineers.'=>'從經驗豐富的建築師到知名的工程師,我們全方位的專業成員組成了多元化的團隊。','Sample heading for the team patternMeet our team'=>'認識團隊','Name of team patternTeam members'=>'團隊成員','Pattern titleTeam members, 4 columns'=>'4 欄式團隊成員','Pattern titleOffset posts with featured images only, 4 columns'=>'僅顯示精選圖片的 4 欄式交錯內容','Pattern titlePosts with featured images only, 3 columns'=>'僅顯示精選圖片的 3 欄式內容','Watch, Read, Listen'=>'觀看、閱讀、聆聽','Pattern titleGrid of posts featuring the first post, 2 columns'=>'強調第一篇內容的 2 欄式格狀排列內容','Pattern titleList of posts, 3 columns'=>'3 欄式內容清單','Pattern titleList of posts, 1 column'=>'1 欄式內容清單','Green staircase at Western University, London, Canada'=>'加拿大倫敦西安大略大學的綠色階梯','Name of RSVP landing page patternRSVP Landing Page'=>'邀請回覆到達網頁','Pattern titleRSVP landing'=>'邀請回覆到達網頁','Pattern titlePortfolio project overview'=>'作品集專案概觀','Sample content for newsletter subscribe buttonSign up'=>'註冊','sample content for newsletter subscriptionSubscribe to the newsletter and stay connected with our community'=>'訂閱電子報並與我們的社群保持聯繫','Pattern titleNewsletter landing'=>'電子報到達網頁','Pattern titlePortfolio home with post featured images'=>'包含文章精選圖片的作品集首頁','Pattern titlePortfolio home image gallery'=>'作品集首頁圖庫','Pattern titleBusiness home'=>'商務首頁','Pattern titleBlogging home'=>'部落格首頁','Pattern titleAbout'=>'相關資訊','search form placeholderSearch...'=>'搜尋...','Search the website'=>'搜尋這個網站','Financial apps for families'=>'適合全家使用的財經 App','Latest inflation report'=>'最新通貨膨脹報告','Links I found useful and wanted to share.'=>'實用、並想分享給大家的連結。','Useful Links'=>'實用連結','Popular Categories'=>'熱門分類','About the author'=>'關於作者','Pattern titleSidebar'=>'資訊欄','search button textSearch'=>'搜尋','search form labelSearch'=>'搜尋','Pattern titleSearch'=>'搜尋','Label before the title of the next post. There is a space after the colon.Next: '=>'下一篇: ','Label before the title of the previous post. There is a space after the colon.Previous: '=>'上一篇: ','Posts'=>'文章','Pattern titlePost navigation'=>'文章導覽','Prefix for the post category block: in category namein '=>'分類: ','Prefix for the post author block: By author nameby'=>'作者:','Pattern titlePost meta'=>'文章中繼資料','Pattern titlePortfolio hero'=>'作品集宣傳內容','Message explaining that there are no results returned from a searchNo posts were found.'=>'找不到符合條件的內容。','Pattern titleNo results'=>'找不到符合條件的結果','Comments'=>'留言','Pattern titleComments'=>'留言','Message to convey that a webpage could not be foundThe page you are looking for does not exist, or it has been moved. Please try searching using the form below.'=>'要求的頁面不存在或已移除,請使用下方搜尋功能進行搜尋。','Heading for a webpage that is not foundPage Not Found'=>'找不到符合條件的頁面','Pattern title404'=>'404 錯誤','Art Gallery of Ontario, Toronto, Canada'=>'加拿大多倫多安大略美術館','Sample text for the feature area2. Case studies that celebrate the artistry can fuel curiosity and ignite inspiration.'=>'2. 推廣藝術性的案例研究可以激發好奇心並觸發靈感。','Sample text for the feature areaOur comprehensive suite of professional services caters to a diverse clientele, ranging from homeowners to commercial developers. With a commitment to innovation and sustainability, Études is the bridge that transforms architectural dreams into remarkable built realities.'=>'我們全方位的專業服務組合可以配合從屋主到商業開發商等不同客戶,Études 致力於創新及永續發展,因為這兩項是將建築夢想轉化為實際卓越建築的橋樑。','Sample text for the feature area1. Through Études, we aspire to redefine architectural boundaries and usher in a new era of design excellence that leaves an indelible mark on the built environment.'=>'1. 透過 Études,我們渴望重新定義建築界限,並開創一個卓越設計的新時代,以便在建築界留下深刻的印記。','An empty staircase under an angular roof in Darling Harbour, Sydney, Australia'=>'澳大利亞雪梨達令港稜角分明屋頂下的空樓梯','Pattern titleProject layout'=>'專案版面配置','Pattern titleOffset gallery, 4 columns'=>'4 欄式交錯圖庫','Pattern titleOffset gallery, 3 columns'=>'3 欄式交錯圖庫','Pattern titleOffset gallery, 2 columns'=>'2 欄式交錯圖庫','Pattern titleFull screen image'=>'全螢幕圖片','Social Media'=>'社交網路服務','Social'=>'社交網路服務','Privacy'=>'隱私權','About'=>'關於','Pattern titleFooter with colophon, 4 columns'=>'包含版權宣告的 4 欄式頁尾','©'=>'©','Facebook'=>'Facebook','Instagram'=>'Instagram','Follow'=>'追蹤','Example email in site footerinfo@example.com'=>'info@example.com','Contact'=>'聯絡資訊','Keep up, get in touch.'=>'持續關注,保持聯絡','Pattern titleFooter with colophon, 3 columns'=>'包含版權宣告的 3 欄式頁尾','Designed with %1$s'=>'本站採用 %1$s 設計','Pattern titleFooter with centered logo and navigation'=>'包含置中標誌及導覽列的頁尾','Sample text for Sign Up ButtonSign up'=>'註冊','Sample text for Subscriber DescriptionStay in the loop with everything you need to know.'=>'隨時能獲知你想要了解的一切。','Sample text for Subscriber Heading with numbersJoin 900+ subscribers'=>'加入超過 900 位訂閱者的行列','Pattern titleCentered call to action'=>'置中的行動號召','Sample button text to view the servicesOur services'=>'我們的服務項目','Sample description of the services patternExperience the fusion of imagination and expertise with Études—the catalyst for architectural transformations that enrich the world around us.'=>'體驗 Études 創造力及專業知識的融合,以豐富我們周遭世界的方式催化建築的轉型。','Sample heading of the services patternGuiding your business through the project'=>'透過專案引導相關業務','Pattern titleServices call to action with image on left'=>'包含左方圖片的服務行動號召','A ramp along a curved wall in the Kiasma Museu, Helsinki, Finland'=>'芬蘭赫爾辛基基亞斯瑪當代藝術博物館曲面牆的坡道','Call to action button text for the reservation buttonReserve your spot'=>'保留專屬席位','RSVP call to action descriptionExperience the fusion of imagination and expertise with Études Arch Summit, February 2025.'=>'誠摯邀請參加 2025 年 2 月的 Études Arch 峰會,體驗創造力及專業知識的融合。','Initials for ´please respond´RSVP'=>'邀請回覆','Name of RSVP patternRSVP'=>'邀請回覆','Pattern titleRSVP'=>'邀請回覆','Button text for the third pricing levelSubscribe'=>'訂閱','Feature for pricing levelExclusive access to the Études app for iOS and Android'=>'獨家 iOS 及 Android 版 Études 行動 App 使用授權。','Feature for pricing levelExclusive, unlimited access to Études Articles.'=>'無限暢讀獨家 Études 專文。','Sample price for the third pricing level$28'=>'NTD 1000','Sample heading for the third pricing levelExpert'=>'專家方案','Button text for the second pricing levelSubscribe'=>'訂閱','Feature for pricing levelAccess to 20 exclusive Études Articles per month.'=>'每個月可閱讀 20 篇獨家 Études 專文。','Sample price for the second pricing level$12'=>'NTD 500','Sample heading for the second pricing levelConnoisseur'=>'品味方案','Button text for the first pricing levelSubscribe'=>'訂閱','Feature for pricing levelExclusive access to the Études app for iOS and Android.'=>'獨家 iOS 及 Android 版 Études 行動 App 使用授權。','Feature for pricing levelWeekly print edition.'=>'每週寄送印刷版本。','Feature for pricing levelAccess to 5 exclusive Études Articles per month.'=>'每個月可閱讀 5 篇獨家 Études 專文。','Sample price for the first pricing level$0'=>'NTD 0','Sample heading for the first pricing levelFree'=>'免費方案','Sample description for a pricing tableWe offer flexible options, which you can adapt to the different needs of each project.'=>'我們提供可依據每個專案不同需求調整的彈性方案。','Sample heading for pricing patternOur Services'=>'我們的服務項目','Name for the pricing patternPricing Table'=>'價目表','Pattern titlePricing'=>'價目表','White abstract geometric artwork from Dresden, Germany'=>'來自德國德累斯頓的白色抽象幾何藝術品','Button text of this sectionHow it works'=>'運作方式','Button text of this sectionDownload app'=>'下載 App','Sample list itemExperience the world of architecture.'=>'體驗建築世界的點點滴滴。','Sample list itemShowcase your projects.'=>'展示自己的相關專案。','Sample list itemCollaborate with fellow architects.'=>'與其他建築師協同合作。','Sample headingEnhance your architectural journey with the Études Architect app.'=>'使用 Études Architect 行動 App 強化客戶的建築之旅','Pattern titleCall to action with image on right'=>'包含右方圖片的行動號召','Hyatt Regency San Francisco, San Francisco, United States'=>'美國舊金山凱悅飯店','Sample descriptive text for a project or post.This transformative project seeks to enhance the gallery\'s infrastructure, accessibility, and exhibition spaces while preserving its rich cultural heritage.'=>'這個革命性的專案主要在於加強畫廊的基礎設施、無障礙設施及展覽空間,同時保護其豐富的文化遺產。','Sample title for a project or postArt Gallery — Overview'=>'美術館概觀','Pattern titleProject description'=>'專案內容說明','Building exterior in Toronto, Canada'=>'加拿大多倫多的建築外觀','Button text of the hero sectionAbout us'=>'關於我們','Content of the hero sectionÉtudes is a pioneering firm that seamlessly merges creativity and functionality to redefine architectural excellence.'=>'Études 是一間將創造力及功能性緊密整合、具備開創性的公司,並重新定義了卓越的建築。','Heading of the hero sectionA commitment to innovation and sustainability'=>'對創新及永續發展的承諾','Pattern titleHero'=>'宣傳內容','With asterisk'=>'包含星號','With arrow'=>'包含箭號','Checkmark'=>'核取記號','Pill'=>'膠囊形狀','Arrow icon'=>'箭號圖示','https://wordpress.org'=>'https://tw.wordpress.org','the WordPress team'=>'WordPress 團隊','https://wordpress.org/themes/twentytwentyfour/'=>'https://tw.wordpress.org/themes/twentytwentyfour/']]; \ No newline at end of file diff --git a/languages/themes/twentytwentyfour-zh_TW.mo b/languages/themes/twentytwentyfour-zh_TW.mo new file mode 100644 index 0000000..604fde4 Binary files /dev/null and b/languages/themes/twentytwentyfour-zh_TW.mo differ diff --git a/languages/themes/twentytwentyfour-zh_TW.po b/languages/themes/twentytwentyfour-zh_TW.po new file mode 100644 index 0000000..baca096 --- /dev/null +++ b/languages/themes/twentytwentyfour-zh_TW.po @@ -0,0 +1,1780 @@ +# Translation of Themes - Twenty Twenty-Four in Chinese (Taiwan) +# This file is distributed under the same license as the Themes - Twenty Twenty-Four package. +msgid "" +msgstr "" +"PO-Revision-Date: 2025-01-08 20:10:12+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.3\n" +"Language: zh_TW\n" +"Project-Id-Version: Themes - Twenty Twenty-Four\n" + +#. Description of the theme +#: style.css +#, gp-priority: high +msgid "Twenty Twenty-Four is designed to be flexible, versatile and applicable to any website. Its collection of templates and patterns tailor to different needs, such as presenting a business, blogging and writing or showcasing work. A multitude of possibilities open up with just a few adjustments to color and typography. Twenty Twenty-Four comes with style variations and full page designs to help speed up the site building process, is fully compatible with the site editor, and takes advantage of new design tools introduced in WordPress 6.4." +msgstr "Twenty Twenty-Four 的設計目的在於靈活、多功能,並且能適用於任何網站。使用者可以不同依據,例如宣傳業務、撰寫部落格文章或展示作品,自訂它所內建的範本及區塊版面配置;僅需對色彩配置及排版樣式進行些許調整,便能開啟多種可能性。使用網站編輯器及 WordPress 6.4 導入的全新設計工具,搭配 Twenty Twenty-Four 內建的樣式變化及完整頁面設計,便能加速網站建置程序。" + +#. Theme Name of the theme +#: style.css +#, gp-priority: high +msgid "Twenty Twenty-Four" +msgstr "Twenty Twenty-Four" + +#: patterns/text-centered-statement.php +msgctxt "Pattern description" +msgid "A centered text statement with a large amount of padding on all sides." +msgstr "包含大型邊框間距的置中文字聲明。" + +#: patterns/hidden-posts-heading.php +msgctxt "Pattern title" +msgid "Posts heading" +msgstr "文章標題" + +#: patterns/text-title-left-image-right.php +msgctxt "Pattern description" +msgid "A title, a paragraph and a CTA button on the left with an image on the right." +msgstr "包含右方圖片的標題、段落及行動號召按鈕。" + +#: patterns/text-project-details.php +msgctxt "Pattern description" +msgid "A text-only section for project details." +msgstr "僅有文字內容區段的專案詳細資料。" + +#: patterns/text-feature-grid-3-col.php +msgctxt "Pattern description" +msgid "A feature grid of 2 rows and 3 columns with headings and text." +msgstr "包含標題及文字的 3 欄 2 列格狀排列說明。" + +#: patterns/text-faq.php:35 +msgctxt "Question in the FAQ pattern" +msgid "Who is behind Études?" +msgstr "Études 的幕後推手" + +#: patterns/text-faq.php +msgctxt "Pattern description" +msgid "A FAQ section with a large FAQ heading and a group of questions and answers." +msgstr "包含大型常見問題集標題及問答組。" + +#: patterns/text-centered-statement-small.php +msgctxt "Pattern description" +msgid "A centered italic text statement with compact padding." +msgstr "包含密集邊框間距的居中斜體文字聲明。" + +#: patterns/text-alternating-images.php +msgctxt "Pattern description" +msgid "A text section, then a two-column section with text in one column and an image in the other." +msgstr "文字區段及包含 1 欄文字、1 欄圖片的 2 欄式區段。" + +#: patterns/testimonial-centered.php +msgctxt "Pattern description" +msgid "A centered testimonial section with an avatar, name, and job title." +msgstr "包含個人頭像、名字及職稱的置中證言內容區段。" + +#: patterns/team-4-col.php +msgctxt "Pattern description" +msgid "A team section, with a heading, a paragraph, and 4 columns for team members." +msgstr "包含標題、段落及 4 欄團隊成員介紹的團隊介紹區段。" + +#: patterns/posts-list.php +msgctxt "Pattern description" +msgid "A list of posts without images, 1 column." +msgstr "不包含圖片的 1 欄式內容清單。" + +#: patterns/posts-images-only-offset-4-col.php +msgctxt "Pattern description" +msgid "A list of posts with featured images only, 4 columns." +msgstr "僅顯示精選圖片的 4 欄式內容。" + +#: patterns/posts-images-only-3-col.php +msgctxt "Pattern description" +msgid "A list of posts with featured images only, 3 columns." +msgstr "僅顯示精選圖片的 3 欄式內容。" + +#: patterns/posts-grid-2-col.php +msgctxt "Pattern description" +msgid "A grid of posts featuring the first post, 2 columns." +msgstr "強調第一篇內容的 2 欄式格狀排列內容。" + +#: patterns/posts-3-col.php +msgctxt "Pattern description" +msgid "A list of posts, 3 columns." +msgstr "3 欄式內容清單。" + +#: patterns/posts-1-col.php +msgctxt "Pattern description" +msgid "A list of posts, 1 column." +msgstr "1 欄式內容清單。" + +#: patterns/page-portfolio-overview.php +msgctxt "Pattern description" +msgid "A full portfolio page with a section for project description, project details, a full screen image, and a gallery section with two images." +msgstr "包含專案說明區段、專案詳細資料、全螢幕圖片及 2 張圖片圖庫區段的完整作品集頁面。" + +#: patterns/page-newsletter-landing.php +msgctxt "Pattern description" +msgid "A block with a newsletter subscription CTA for a landing page." +msgstr "包含電子報訂閱行動號召的到達網頁區塊。" + +#: patterns/page-home-portfolio.php +msgctxt "Pattern description" +msgid "A portfolio home page with a description and a 4-column post section with only feature images." +msgstr "包含內容說明、僅有精選圖片的 4 欄文章區段的作品集首頁。" + +#: patterns/page-home-portfolio-gallery.php +msgctxt "Pattern description" +msgid "A portfolio home page that features a gallery." +msgstr "包含內容精選圖庫的作品集首頁。" + +#: patterns/page-home-business.php +msgctxt "Pattern description" +msgid "A business home page with a hero section, a text section, a services section, a team section, a clients section, a FAQ section, and a CTA section." +msgstr "包含宣傳內容區段、文字區段、服務項目區段、團隊介紹區段、客戶介紹區段、常見問題集區段及行動號召區段的商務首頁。" + +#: patterns/page-home-blogging.php +msgctxt "Pattern description" +msgid "A blogging home page with a hero section, a text section, a blog section, and a CTA section." +msgstr "包含宣傳內容區段、文字區段、部落格區段及行動號召區段的部落格首頁。" + +#: patterns/page-about-business.php +msgctxt "Pattern description" +msgid "A business about page with a hero section, a text section, a services section, a team section, a clients section, a FAQ section, and a CTA section." +msgstr "包含宣傳內容區段、文字區段、服務項目區段、團隊介紹區段、客戶介紹區段、常見問題集區段及行動號召區段的商務內容簡介頁面。" + +#: patterns/gallery-project-layout.php +msgctxt "Pattern description" +msgid "A gallery section with a project layout with 2 images." +msgstr "包含 2 張圖片的專案版面配置的圖庫區段。" + +#: patterns/gallery-offset-images-grid-4-col.php +msgctxt "Pattern description" +msgid "A gallery section with 4 columns and offset images." +msgstr "包含 4 欄交錯圖片的圖庫區段。" + +#: patterns/gallery-offset-images-grid-3-col.php +msgctxt "Pattern description" +msgid "A gallery section with 3 columns and offset images." +msgstr "包含 3 欄交錯圖片的圖庫區段。" + +#: patterns/gallery-offset-images-grid-2-col.php +msgctxt "Pattern description" +msgid "A gallery section with 2 columns and offset images." +msgstr "包含 2 欄交錯圖片的圖庫區段。" + +#: patterns/gallery-full-screen-image.php +msgctxt "Pattern description" +msgid "A cover image section that covers the entire width." +msgstr "覆蓋全部寬度的封面圖片區段。" + +#: patterns/footer.php +msgctxt "Pattern description" +msgid "A footer section with a colophon and 4 columns." +msgstr "包含版權宣告的 4 欄式頁尾區段。" + +#: patterns/footer-colophon-3-col.php +msgctxt "Pattern description" +msgid "A footer section with a colophon and 3 columns." +msgstr "包含版權宣告的 3 欄式頁尾區段。" + +#: patterns/footer-centered-logo-nav.php +msgctxt "Pattern description" +msgid "A footer section with a centered logo, navigation, and WordPress credits." +msgstr "包含置中標誌、導覽列及「本站採用 WordPress 建置」字樣的頁尾區段。" + +#: patterns/cta-subscribe-centered.php +msgctxt "Pattern description" +msgid "Subscribers CTA section with a title, a paragraph and a CTA button." +msgstr "包含標題、段落及行動號召按鈕的訂閱者行動號召區段。" + +#: patterns/cta-services-image-left.php +msgctxt "Pattern description" +msgid "An image, title, paragraph and a CTA button to describe services." +msgstr "用於說明服務項目的圖片、標題、段落及行動號召按鈕。" + +#: patterns/cta-rsvp.php patterns/page-rsvp-landing.php +msgctxt "Pattern description" +msgid "A large RSVP heading sideways, a description, and a CTA button." +msgstr "包含大型「確認是否參加」的側邊標題、內容說明及行動號召按鈕。" + +#: patterns/cta-pricing.php +msgctxt "Pattern description" +msgid "A pricing section with a title, a paragraph and three pricing levels." +msgstr "包含標題、段落及 3 個價格方案的價格區段。" + +#: patterns/cta-content-image-on-right.php +msgctxt "Pattern description" +msgid "A title, paragraph, two CTA buttons, and an image for a general CTA section." +msgstr "包含標題、段落、2 個行動號召按鈕及圖片的行動號召區段。" + +#: patterns/banner-project-description.php +msgctxt "Pattern description" +msgid "Project description section with title, paragraph, and an image." +msgstr "包括標題、段落及圖片的專案說明區段。" + +#: patterns/banner-hero.php +msgctxt "Pattern description" +msgid "A hero section with a title, a paragraph, a CTA button, and an image." +msgstr "包含標題、段落、行動號召按鈕及圖片的宣傳內容區段。" + +#: patterns/footer.php:96 +msgid "Twitter/X" +msgstr "Twitter/X" + +#: patterns/footer.php:74 +msgid "Contact Us" +msgstr "聯絡資訊" + +#: patterns/footer.php:73 +msgid "Terms and Conditions" +msgstr "條款及條件" + +#: patterns/footer.php:72 +msgid "Privacy Policy" +msgstr "隱私權政策" + +#: patterns/footer.php:51 +msgid "Careers" +msgstr "職涯發展" + +#: patterns/footer.php:50 +msgid "History" +msgstr "發展沿革" + +#: patterns/footer.php:49 +msgid "Team" +msgstr "團隊介紹" + +#: patterns/posts-list.php +msgctxt "Pattern title" +msgid "List of posts without images, 1 column" +msgstr "不包含圖片的 1 欄式內容清單" + +#: patterns/hidden-portfolio-hero.php:16 +msgid "I’m Leia Acosta, a passionate photographer who finds inspiration in capturing the fleeting beauty of life." +msgstr "我是高雷亞,一個充滿熱情的攝影師,擅長捕捉生活中轉瞬即逝的美好靈感。" + +#: functions.php:200 +msgid "A collection of full page layouts." +msgstr "完整頁面版面配置集合。" + +#: functions.php:199 +msgctxt "Block pattern category" +msgid "Pages" +msgstr "頁面" + +#: theme.json +msgctxt "Custom template name" +msgid "Single with Sidebar" +msgstr "包含資訊欄的單篇內容" + +#: theme.json +msgctxt "Custom template name" +msgid "Page with Wide Image" +msgstr "包含寬幅寬度圖片的頁面" + +#: theme.json +msgctxt "Custom template name" +msgid "Page with Sidebar" +msgstr "包含資訊欄的頁面" + +#: theme.json +msgctxt "Custom template name" +msgid "Page No Title" +msgstr "沒有標題的頁面" + +#: theme.json +msgctxt "Template part name" +msgid "Post Meta" +msgstr "文章中繼資料" + +#: theme.json +msgctxt "Template part name" +msgid "Sidebar" +msgstr "資訊欄" + +#: theme.json +msgctxt "Template part name" +msgid "Footer" +msgstr "頁尾" + +#: theme.json +msgctxt "Template part name" +msgid "Header" +msgstr "頁首" + +#: theme.json +msgctxt "Space size name" +msgid "6" +msgstr "6" + +#: theme.json +msgctxt "Space size name" +msgid "5" +msgstr "5" + +#: theme.json +msgctxt "Space size name" +msgid "4" +msgstr "4" + +#: theme.json +msgctxt "Space size name" +msgid "3" +msgstr "3" + +#: theme.json +msgctxt "Space size name" +msgid "2" +msgstr "2" + +#: theme.json +msgctxt "Space size name" +msgid "1" +msgstr "1" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical hard pewter to white" +msgstr "白鑞色直向固化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical hard mint to white" +msgstr "薄荷綠直向固化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical hard sage to white" +msgstr "灰綠色直向固化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical hard rust to white" +msgstr "鐵鏽色直向固化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical hard sandstone to white" +msgstr "灰紅色直向固化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical hard beige to white" +msgstr "米黃色直向固化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical soft pewter to white" +msgstr "白鑞色直向柔化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical soft mint to white" +msgstr "薄荷綠直向柔化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical soft sage to white" +msgstr "灰綠色直向柔化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical soft rust to white" +msgstr "鐵鏽色直向柔化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical soft sandstone to white" +msgstr "灰紅色直向柔化至白色" + +#: theme.json +msgctxt "Gradient name" +msgid "Vertical soft beige to white" +msgstr "米黃色直向柔化至白色" + +#: theme.json +msgctxt "Duotone name" +msgid "Black and pastel blue" +msgstr "黑色及淺藍色" + +#: theme.json +msgctxt "Duotone name" +msgid "Black and sage" +msgstr "黑色及灰綠色" + +#: theme.json +msgctxt "Duotone name" +msgid "Black and rust" +msgstr "黑色及鐵鏽色" + +#: theme.json +msgctxt "Duotone name" +msgid "Black and sandstone" +msgstr "黑色及灰紅色" + +#: theme.json +msgctxt "Duotone name" +msgid "Black and white" +msgstr "黑色及白色" + +#: styles/rust.json +msgctxt "Color name" +msgid "Base / 2" +msgstr "基準色 2" + +#: styles/rust.json +msgctxt "Gradient name" +msgid "Vertical hard rust to beige" +msgstr "鐵鏽色直向固化至米黃色" + +#: styles/rust.json +msgctxt "Gradient name" +msgid "Vertical rust to beige" +msgstr "鐵鏽色直向至米黃色" + +#: styles/rust.json +msgctxt "Gradient name" +msgid "Vertical hard transparent rust to beige" +msgstr "鐵鏽色直向固化透明至米黃色" + +#: styles/rust.json +msgctxt "Gradient name" +msgid "Vertical transparent rust to beige" +msgstr "鐵鏽色直向透明至米黃色" + +#: styles/rust.json +msgctxt "Duotone name" +msgid "Dark rust to beige" +msgstr "深鐵鏽色至米黃色" + +#: styles/rust.json +msgctxt "Style variation name" +msgid "Rust" +msgstr "斑斑鏽跡" + +#: theme.json styles/onyx.json +msgctxt "Color name" +msgid "Accent / Five" +msgstr "強調色 5" + +#: theme.json styles/onyx.json +msgctxt "Color name" +msgid "Accent / Four" +msgstr "強調色 4" + +#: theme.json styles/onyx.json +msgctxt "Color name" +msgid "Accent / Three" +msgstr "強調色 3" + +#: theme.json styles/onyx.json +msgctxt "Color name" +msgid "Accent / Two" +msgstr "強調色 2" + +#: theme.json styles/onyx.json +msgctxt "Color name" +msgid "Accent" +msgstr "強調色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical hard pewter to dark gray" +msgstr "白鑞色直向固化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical hard steel to dark gray" +msgstr "鋼色直向固化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical hard olive to dark gray" +msgstr "橄欖綠直向固化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical hard cinnamon to dark gray" +msgstr "肉桂色直向固化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical hard walnut to dark gray" +msgstr "胡桃色直向固化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical hard beige to dark gray" +msgstr "米黃色直向固化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical soft pewter to dark gray" +msgstr "白鑞色直向柔化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical soft steel to dark gray" +msgstr "鋼色直向柔化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical soft olive to dark gray" +msgstr "橄欖綠直向柔化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical soft cinnamon to dark gray" +msgstr "肉桂色直向柔化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical soft walnut to dark gray" +msgstr "胡桃色直向柔化至深灰色" + +#: styles/onyx.json +msgctxt "Gradient name" +msgid "Vertical soft driftwood to dark gray" +msgstr "浮木色直向柔化至深灰色" + +#: styles/onyx.json +msgctxt "Duotone name" +msgid "Dark gray and steel" +msgstr "深灰色及鋼色" + +#: styles/onyx.json +msgctxt "Duotone name" +msgid "Dark gray and olive" +msgstr "深灰色及橄欖色" + +#: styles/onyx.json +msgctxt "Duotone name" +msgid "Dark gray and cinnamon" +msgstr "深灰色及肉桂色" + +#: styles/onyx.json +msgctxt "Duotone name" +msgid "Dark gray and walnut" +msgstr "深灰色及胡桃色" + +#: styles/onyx.json +msgctxt "Duotone name" +msgid "Dark gray and white" +msgstr "深灰色及白色" + +#: styles/onyx.json +msgctxt "Style variation name" +msgid "Onyx" +msgstr "神秘瑪瑙" + +#: styles/mint.json +msgctxt "Style variation name" +msgid "Mint" +msgstr "清新薄荷" + +#: styles/maelstrom.json +msgctxt "Color name" +msgid "Contrast / 3" +msgstr "對比色彩 / 3" + +#: styles/maelstrom.json +msgctxt "Style variation name" +msgid "Maelstrom" +msgstr "無盡漩渦" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical hard ink to ocean" +msgstr "墨黑色直向固化至海洋藍" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical hard ocean to slate" +msgstr "海洋藍直向固化至石版灰" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical hard ink to ice" +msgstr "墨黑色直向固化至冰藍色" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical hard ocean to ice" +msgstr "海洋藍直向固化至冰藍色" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical hard slate to ice" +msgstr "石版灰直向固化至冰藍色" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical hard ice to azure" +msgstr "冰藍色直向固化至天藍色" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical ink to ocean" +msgstr "墨黑色直向至海洋藍" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical ocean to slate" +msgstr "海洋藍直向至石版灰" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical ink to ice" +msgstr "墨黑色直向至冰藍色" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical ocean to ice" +msgstr "海洋藍直向至冰藍色" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical slate to ice" +msgstr "石版灰直向至冰藍色" + +#: styles/ice.json +msgctxt "Gradient name" +msgid "Vertical azure to ice" +msgstr "天藍色直向至冰藍色" + +#: styles/ice.json +msgctxt "Style variation name" +msgid "Ice" +msgstr "凜冬將至" + +#: theme.json styles/fossil.json styles/ice.json styles/maelstrom.json +msgctxt "Font size name" +msgid "Extra Extra Large" +msgstr "超巨大型" + +#: theme.json styles/fossil.json styles/ice.json styles/maelstrom.json +msgctxt "Font size name" +msgid "Extra Large" +msgstr "超大型" + +#: theme.json styles/fossil.json styles/ice.json styles/maelstrom.json +msgctxt "Font size name" +msgid "Large" +msgstr "大型" + +#: theme.json styles/fossil.json styles/ice.json styles/maelstrom.json +msgctxt "Font size name" +msgid "Medium" +msgstr "中型" + +#: theme.json styles/fossil.json styles/ice.json styles/maelstrom.json +msgctxt "Font size name" +msgid "Small" +msgstr "小型" + +#: theme.json styles/fossil.json styles/maelstrom.json +msgctxt "Font family name" +msgid "Cardo" +msgstr "Cardo" + +#: theme.json styles/fossil.json styles/ice.json +msgctxt "Font family name" +msgid "Inter" +msgstr "Inter" + +#: theme.json styles/fossil.json styles/ice.json styles/mint.json +#: styles/onyx.json +msgctxt "Color name" +msgid "Contrast / Three" +msgstr "對比色彩 3" + +#: theme.json styles/fossil.json styles/ice.json styles/mint.json +#: styles/onyx.json +msgctxt "Color name" +msgid "Contrast / Two" +msgstr "對比色彩 2" + +#: styles/fossil.json +msgctxt "Style variation name" +msgid "Fossil" +msgstr "堅若磐石" + +#: theme.json styles/ember.json styles/fossil.json styles/ice.json +#: styles/maelstrom.json styles/mint.json +msgctxt "Font family name" +msgid "System Serif" +msgstr "系統有襯線字型" + +#: theme.json styles/ember.json styles/fossil.json styles/ice.json +#: styles/maelstrom.json styles/mint.json +msgctxt "Font family name" +msgid "System Sans-serif" +msgstr "系統無襯線字型" + +#: styles/ember.json styles/ice.json styles/maelstrom.json styles/mint.json +msgctxt "Font family name" +msgid "Jost" +msgstr "Jost" + +#: styles/ember.json styles/mint.json +msgctxt "Font family name" +msgid "Instrument Sans" +msgstr "Instrument Sans" + +#: theme.json styles/ember.json styles/fossil.json styles/ice.json +#: styles/maelstrom.json styles/mint.json styles/onyx.json +msgctxt "Color name" +msgid "Base / Two" +msgstr "基準色 2" + +#: theme.json styles/ember.json styles/fossil.json styles/ice.json +#: styles/maelstrom.json styles/mint.json styles/onyx.json styles/rust.json +msgctxt "Color name" +msgid "Contrast" +msgstr "對比色彩" + +#: styles/ember.json styles/maelstrom.json +msgctxt "Color name" +msgid "Contrast / 2" +msgstr "對比色彩 / 2" + +#: theme.json styles/ember.json styles/fossil.json styles/ice.json +#: styles/maelstrom.json styles/mint.json styles/onyx.json styles/rust.json +msgctxt "Color name" +msgid "Base" +msgstr "基準色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical hard ebony to sable" +msgstr "黑檀色直向固化至深紫色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical hard sable to taupe" +msgstr "深紫色直向固化至灰褐色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical hard ebony to beige" +msgstr "黑檀色直向固化至米黃色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical hard sable to beige" +msgstr "深紫色直向固化至米黃色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical hard taupe to beige" +msgstr "灰褐色直向固化至米黃色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical hard beige to linen" +msgstr "米黃色直向固化至亞麻色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical ebony to sable" +msgstr "黑檀色直向至灰褐色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical ebony to beige" +msgstr "黑檀色直向至米黃色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical sable to beige" +msgstr "深紫色直向至米黃色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical taupe to beige" +msgstr "灰褐色直向至米黃色" + +#: styles/ember.json styles/fossil.json +msgctxt "Gradient name" +msgid "Vertical linen to beige" +msgstr "亞麻色直向至米黃色" + +#: styles/ember.json +msgctxt "Duotone name" +msgid "Orange and white" +msgstr "橘色及白色" + +#: styles/ember.json +msgctxt "Style variation name" +msgid "Ember" +msgstr "餘焰微光" + +#: patterns/text-title-left-image-right.php:35 +msgctxt "Call to Action button text" +msgid "About us" +msgstr "關於我們" + +#: patterns/text-title-left-image-right.php:28 +msgctxt "Description for the About pattern" +msgid "Leaving an indelible mark on the landscape of tomorrow." +msgstr "在未來的景色中留下深刻的印記。" + +#: patterns/text-title-left-image-right.php:21 +msgctxt "Headline for the About pattern" +msgid "Études offers comprehensive consulting, management, design, and research solutions. Every architectural endeavor is an opportunity to shape the future." +msgstr "Études 提供全方位的諮詢、管理、設計及研究解決方案。為每座建築付出的努力,都是一次次型塑未來的機會。" + +#: patterns/text-title-left-image-right.php +msgctxt "Pattern title" +msgid "Title text and button on left with image on right" +msgstr "包含右方圖片的標題文字及按鈕" + +#: patterns/text-project-details.php:35 patterns/text-project-details.php:43 +msgctxt "Descriptive text for the feature area" +msgid "The revitalized Art Gallery is set to redefine the cultural landscape of Toronto, serving as a nexus of artistic expression, community engagement, and architectural marvel. The expansion and renovation project pay homage to the Art Gallery's rich history while embracing the future, ensuring that the gallery remains a beacon of inspiration." +msgstr "煥然一新的美術館將重新定義多倫多的文化景觀,成為藝術表達、社區參與及建築景觀的結合。擴建及翻新專案在向美術館的豐富歷史致敬之際,同時也擁抱未來,讓美術館繼續成為靈感之源。" + +#: patterns/text-project-details.php:27 +msgctxt "Descriptive title for the feature area" +msgid "With meticulous attention to detail and a commitment to excellence, we create spaces that inspire, elevate, and enrich the lives of those who inhabit them." +msgstr "憑藉著對細節的一絲不苟及追求卓越的精神,我們創造出能激發、提升和豐富住戶生活的建築空間。" + +#: patterns/text-project-details.php:18 +msgctxt "Title text for the feature area" +msgid "The revitalized art gallery is set to redefine cultural landscape." +msgstr "煥然一新的美術館會重新定義文化景觀。" + +#: patterns/text-project-details.php +msgctxt "Pattern title" +msgid "Project details" +msgstr "專案詳細資料" + +#: patterns/text-feature-grid-3-col.php:112 +msgctxt "Sample content" +msgid "Experience the fusion of imagination and expertise with Études Architectural Solutions." +msgstr "體驗 Études Architectural Solutions 創造力及專業知識的融合。" + +#: patterns/text-feature-grid-3-col.php:108 +msgctxt "Sample heading" +msgid "Architectural Solutions" +msgstr "建築解決方案" + +#: patterns/text-feature-grid-3-col.php:96 +msgctxt "Sample feature heading" +msgid "Project Management" +msgstr "專案管理" + +#: patterns/text-feature-grid-3-col.php:84 +msgctxt "Sample feature heading" +msgid "Consulting" +msgstr "諮詢服務" + +#: patterns/text-feature-grid-3-col.php:63 +msgctxt "Sample feature heading" +msgid "App Access" +msgstr "有 App 可供使用" + +#: patterns/text-feature-grid-3-col.php:51 +msgctxt "Sample feature heading" +msgid "Continuous Support" +msgstr "持續支援" + +#: patterns/text-feature-grid-3-col.php:43 +#: patterns/text-feature-grid-3-col.php:55 +#: patterns/text-feature-grid-3-col.php:67 +#: patterns/text-feature-grid-3-col.php:88 +#: patterns/text-feature-grid-3-col.php:100 +msgctxt "Sample feature content" +msgid "Experience the fusion of imagination and expertise with Études Architectural Solutions." +msgstr "體驗 Études Architectural Solutions 創造力及專業知識的融合。" + +#: patterns/text-feature-grid-3-col.php:39 +msgctxt "Sample feature heading" +msgid "Renovation and restoration" +msgstr "翻新及修復" + +#: patterns/text-feature-grid-3-col.php:24 +msgctxt "Sub-heading of the features" +msgid "Our comprehensive suite of professional services caters to a diverse clientele, ranging from homeowners to commercial developers." +msgstr "我們全方位的專業服務組合可以配合從屋主到商業開發商等不同客戶。" + +#: patterns/text-feature-grid-3-col.php:16 +msgctxt "Heading of the features" +msgid "A passion for creating spaces" +msgstr "對空間創造的熱情" + +#: patterns/text-feature-grid-3-col.php +msgctxt "Pattern title" +msgid "Feature grid, 3 columns" +msgstr "3 欄式格狀排列重點內容" + +#: patterns/text-faq.php:57 +msgctxt "Question in the FAQ pattern" +msgid "Can I apply to be a part of the team or work as a contractor?" +msgstr "我可以申請成為貴團隊的一員,或成為承包商嗎?" + +#: patterns/text-faq.php:46 +msgctxt "Question in the FAQ pattern" +msgid "I'd like to get to meet fellow architects, how can I do that?" +msgstr "我想認識其他建築師,該如何進行?" + +#: patterns/text-faq.php:27 patterns/text-faq.php:38 patterns/text-faq.php:49 +#: patterns/text-faq.php:60 +msgctxt "Answer in the FAQ pattern" +msgid "Études offers comprehensive consulting, management, design, and research solutions. Our vision is to be at the forefront of architectural innovation, fostering a global community of architects and enthusiasts united by a passion for creating spaces. Every architectural endeavor is an opportunity to shape the future." +msgstr "Études 提供全方位的諮詢、管理、設計及研究解決方案。我們的院警示走在建築創新的最尖端,並培養出遊建築師及建築愛好者組成的全球性社群。為每座建築付出的努力,都是一次次型塑未來的機會。" + +#: patterns/text-faq.php:24 +msgctxt "Question in the FAQ pattern" +msgid "What is your process working in smaller projects?" +msgstr "Études在小型專案中的工作流程為何?" + +#: patterns/text-faq.php:15 +msgctxt "Heading of the FAQs" +msgid "FAQs" +msgstr "常見問題集" + +#: patterns/text-faq.php:12 +msgctxt "Name of the FAQ pattern" +msgid "FAQs" +msgstr "常見問題集" + +#: patterns/text-faq.php +msgctxt "Pattern title" +msgid "FAQ" +msgstr "常見問題集" + +#: patterns/text-centered-statement.php:21 +msgid "Études is not confined to the past—we are passionate about the cutting edge designs shaping our world today." +msgstr "Études 不拘泥於過往,而是全情投入塑造當今的頂尖設計。" + +#: patterns/text-centered-statement.php +msgctxt "Pattern title" +msgid "Centered statement" +msgstr "置中的聲明" + +#. Translators: About text placeholder +#: patterns/text-centered-statement-small.php:23 +msgid "I write about finance, management and economy, my book “%1$s” is out now." +msgstr "我撰寫財經、管理及經濟相關領域的書籍,新書《%1$s》業已出版。" + +#. Translators: About link placeholder +#: patterns/text-centered-statement-small.php:20 +msgid "Money Studies" +msgstr "貨幣研究" + +#: patterns/text-centered-statement-small.php +msgctxt "Pattern title" +msgid "Centered statement, small" +msgstr "小型置中的聲明" + +#: patterns/text-alternating-images.php:105 +msgctxt "Sample list item" +msgid "Exclusive access to design insights." +msgstr "獨家訪問設計深入解析案例。" + +#: patterns/text-alternating-images.php:101 +msgctxt "Sample list item" +msgid "Case studies that celebrate architecture." +msgstr "值得探討的建築案例研究。" + +#: patterns/text-alternating-images.php:97 +msgctxt "Sample list item" +msgid "A world of thought-provoking articles." +msgstr "發人深省的世界級內容。" + +#: patterns/text-alternating-images.php:91 +msgctxt "Sample heading" +msgid "Études Newsletter" +msgstr "Études 電子報" + +#: patterns/text-alternating-images.php:82 +msgid "Windows of a building in Nuremberg, Germany" +msgstr "德國紐倫堡一棟建築的窗戶" + +#: patterns/text-alternating-images.php:64 +msgid "Tourist taking photo of a building" +msgstr "遊客拍攝建築物的照片" + +#: patterns/text-alternating-images.php:37 +msgctxt "Sample list heading" +msgid "Études Architect App" +msgstr "Études Architect 行動 App" + +#: patterns/text-alternating-images.php:23 +msgctxt "Sample subheading content" +msgid "Our comprehensive suite of professional services caters to a diverse clientele, ranging from homeowners to commercial developers." +msgstr "我們全方位的專業服務組合可以配合從屋主到商業開發商等不同客戶。" + +#: patterns/text-alternating-images.php:19 +msgctxt "Sample heading content" +msgid "An array of resources" +msgstr "系列資源" + +#: patterns/text-alternating-images.php +msgctxt "Pattern title" +msgid "Text with alternating images" +msgstr "包含替代圖片的文字" + +#: patterns/testimonial-centered.php:39 +msgctxt "Designation of Person Provided Testimonial" +msgid "CEO, Greenprint" +msgstr "Greenprint CEO" + +#: patterns/testimonial-centered.php:35 +msgctxt "Name of Person Provided the Testimonial" +msgid "Annie Steiner" +msgstr "施安霓" + +#: patterns/testimonial-centered.php:26 +msgctxt "Name of testimonial citation group" +msgid "Testimonial source" +msgstr "證言內容來源" + +#: patterns/testimonial-centered.php:18 +msgctxt "Testimonial Text or Review Text Got From the Person" +msgid "“Études has saved us thousands of hours of work and has unlocked insights we never thought possible.”" +msgstr "“Études 為我們節省了數千小時的工作時間,並啟發了我們從未想過的深入解析。”" + +#: patterns/testimonial-centered.php:12 +msgctxt "Name of testimonial pattern" +msgid "Testimonial" +msgstr "證言內容" + +#: patterns/testimonial-centered.php +msgctxt "Pattern title" +msgid "Centered testimonial" +msgstr "置中的證言內容" + +#: patterns/template-single-portfolio.php +msgctxt "Pattern title" +msgid "Portfolio single post template" +msgstr "作品集單篇內容範本" + +#: patterns/template-search-blogging.php +msgctxt "Pattern title" +msgid "Blogging search template" +msgstr "部落格搜尋範本" + +#: patterns/template-search-portfolio.php +msgctxt "Pattern title" +msgid "Portfolio search template" +msgstr "作品集搜尋範本" + +#: patterns/template-index-portfolio.php +msgctxt "Pattern title" +msgid "Portfolio index template" +msgstr "作品集索引範本" + +#: patterns/template-index-blogging.php +msgctxt "Pattern title" +msgid "Blogging index template" +msgstr "部落格索引範本" + +#: patterns/template-home-portfolio.php +msgctxt "Pattern title" +msgid "Portfolio home template with post featured images" +msgstr "包含內容精選圖片的作品集首頁範本" + +#: patterns/template-home-business.php +msgctxt "Pattern title" +msgid "Business home template" +msgstr "商務首頁範本" + +#: patterns/template-home-blogging.php +msgctxt "Pattern title" +msgid "Blogging home template" +msgstr "部落格首頁範本" + +#: patterns/template-archive-portfolio.php +msgctxt "Pattern title" +msgid "Portfolio archive template" +msgstr "作品集彙整頁面範本" + +#: patterns/template-archive-blogging.php +msgctxt "Pattern title" +msgid "Blogging archive template" +msgstr "部落格彙整頁面範本" + +#: patterns/team-4-col.php:121 +msgctxt "Sample role of a team member" +msgid "Project Manager" +msgstr "專案經理" + +#: patterns/team-4-col.php:116 +msgctxt "Sample name of a team member" +msgid "Ivan Lawrence" +msgstr "羅倫范" + +#: patterns/team-4-col.php:97 +msgctxt "Sample role of a team member" +msgid "Architect" +msgstr "建築師" + +#: patterns/team-4-col.php:92 +msgctxt "Sample name of a team member" +msgid "Helga Steiner" +msgstr "施泰爾" + +#: patterns/team-4-col.php:73 +msgctxt "Sample role of a team member" +msgid "Engineering Manager" +msgstr "工程經理" + +#: patterns/team-4-col.php:68 +msgctxt "Sample name of a team member" +msgid "Rhye Moore" +msgstr "莫飛易" + +#: patterns/team-4-col.php:49 +msgctxt "Sample role of a team member" +msgid "Founder, CEO & Architect" +msgstr "創辦人、CEO 兼建築師" + +#: patterns/team-4-col.php:44 +msgctxt "Sample name of a team member" +msgid "Francesca Piovani" +msgstr "皮凡卡" + +#: patterns/team-4-col.php:20 +msgctxt "Sample descriptive text of the team pattern" +msgid "Our comprehensive suite of professionals caters to a diverse team, ranging from seasoned architects to renowned engineers." +msgstr "從經驗豐富的建築師到知名的工程師,我們全方位的專業成員組成了多元化的團隊。" + +#: patterns/team-4-col.php:16 +msgctxt "Sample heading for the team pattern" +msgid "Meet our team" +msgstr "認識團隊" + +#: patterns/team-4-col.php:11 +msgctxt "Name of team pattern" +msgid "Team members" +msgstr "團隊成員" + +#: patterns/team-4-col.php +msgctxt "Pattern title" +msgid "Team members, 4 columns" +msgstr "4 欄式團隊成員" + +#: patterns/posts-images-only-offset-4-col.php +msgctxt "Pattern title" +msgid "Offset posts with featured images only, 4 columns" +msgstr "僅顯示精選圖片的 4 欄式交錯內容" + +#: patterns/posts-images-only-3-col.php +msgctxt "Pattern title" +msgid "Posts with featured images only, 3 columns" +msgstr "僅顯示精選圖片的 3 欄式內容" + +#: patterns/posts-grid-2-col.php:14 patterns/posts-list.php:14 +#: patterns/template-index-blogging.php:16 +msgid "Watch, Read, Listen" +msgstr "觀看、閱讀、聆聽" + +#: patterns/posts-grid-2-col.php +msgctxt "Pattern title" +msgid "Grid of posts featuring the first post, 2 columns" +msgstr "強調第一篇內容的 2 欄式格狀排列內容" + +#: patterns/posts-3-col.php +msgctxt "Pattern title" +msgid "List of posts, 3 columns" +msgstr "3 欄式內容清單" + +#: patterns/posts-1-col.php +msgctxt "Pattern title" +msgid "List of posts, 1 column" +msgstr "1 欄式內容清單" + +#: patterns/page-rsvp-landing.php:49 +msgid "Green staircase at Western University, London, Canada" +msgstr "加拿大倫敦西安大略大學的綠色階梯" + +#: patterns/page-rsvp-landing.php:14 +msgctxt "Name of RSVP landing page pattern" +msgid "RSVP Landing Page" +msgstr "邀請回覆到達網頁" + +#: patterns/page-rsvp-landing.php +msgctxt "Pattern title" +msgid "RSVP landing" +msgstr "邀請回覆到達網頁" + +#: patterns/page-portfolio-overview.php +msgctxt "Pattern title" +msgid "Portfolio project overview" +msgstr "作品集專案概觀" + +#: patterns/page-newsletter-landing.php:40 +msgctxt "Sample content for newsletter subscribe button" +msgid "Sign up" +msgstr "註冊" + +#: patterns/page-newsletter-landing.php:29 +msgctxt "sample content for newsletter subscription" +msgid "Subscribe to the newsletter and stay connected with our community" +msgstr "訂閱電子報並與我們的社群保持聯繫" + +#: patterns/page-newsletter-landing.php +msgctxt "Pattern title" +msgid "Newsletter landing" +msgstr "電子報到達網頁" + +#: patterns/page-home-portfolio.php +msgctxt "Pattern title" +msgid "Portfolio home with post featured images" +msgstr "包含文章精選圖片的作品集首頁" + +#: patterns/page-home-portfolio-gallery.php +msgctxt "Pattern title" +msgid "Portfolio home image gallery" +msgstr "作品集首頁圖庫" + +#: patterns/page-home-business.php +msgctxt "Pattern title" +msgid "Business home" +msgstr "商務首頁" + +#: patterns/page-home-blogging.php +msgctxt "Pattern title" +msgid "Blogging home" +msgstr "部落格首頁" + +#: patterns/page-about-business.php +msgctxt "Pattern title" +msgid "About" +msgstr "相關資訊" + +#: patterns/hidden-sidebar.php:75 +msgctxt "search form placeholder" +msgid "Search..." +msgstr "搜尋..." + +#: patterns/hidden-sidebar.php:72 +msgid "Search the website" +msgstr "搜尋這個網站" + +#: patterns/hidden-sidebar.php:60 +msgid "Financial apps for families" +msgstr "適合全家使用的財經 App" + +#: patterns/hidden-sidebar.php:59 +msgid "Latest inflation report" +msgstr "最新通貨膨脹報告" + +#: patterns/hidden-sidebar.php:53 +msgid "Links I found useful and wanted to share." +msgstr "實用、並想分享給大家的連結。" + +#: patterns/hidden-sidebar.php:49 +msgid "Useful Links" +msgstr "實用連結" + +#: patterns/hidden-sidebar.php:33 +msgid "Popular Categories" +msgstr "熱門分類" + +#: patterns/hidden-sidebar.php:17 +msgid "About the author" +msgstr "關於作者" + +#: patterns/hidden-sidebar.php +msgctxt "Pattern title" +msgid "Sidebar" +msgstr "資訊欄" + +#: patterns/hidden-search.php:9 +msgctxt "search button text" +msgid "Search" +msgstr "搜尋" + +#: patterns/hidden-search.php:9 patterns/hidden-sidebar.php:75 +msgctxt "search form label" +msgid "Search" +msgstr "搜尋" + +#: patterns/hidden-search.php +msgctxt "Pattern title" +msgid "Search" +msgstr "搜尋" + +#: patterns/hidden-post-navigation.php:12 +msgctxt "Label before the title of the next post. There is a space after the colon." +msgid "Next: " +msgstr "下一篇: " + +#: patterns/hidden-post-navigation.php:11 +msgctxt "Label before the title of the previous post. There is a space after the colon." +msgid "Previous: " +msgstr "上一篇: " + +#: patterns/hidden-post-navigation.php:9 patterns/hidden-post-navigation.php:10 +#: patterns/hidden-posts-heading.php:10 +#: patterns/template-index-portfolio.php:16 +msgid "Posts" +msgstr "文章" + +#: patterns/hidden-post-navigation.php +msgctxt "Pattern title" +msgid "Post navigation" +msgstr "文章導覽" + +#: patterns/hidden-post-meta.php:25 +msgctxt "Prefix for the post category block: in category name" +msgid "in " +msgstr "分類: " + +#: patterns/hidden-post-meta.php:20 +msgctxt "Prefix for the post author block: By author name" +msgid "by" +msgstr "作者:" + +#: patterns/hidden-post-meta.php +msgctxt "Pattern title" +msgid "Post meta" +msgstr "文章中繼資料" + +#: patterns/hidden-portfolio-hero.php +msgctxt "Pattern title" +msgid "Portfolio hero" +msgstr "作品集宣傳內容" + +#: patterns/hidden-no-results.php:9 +msgctxt "Message explaining that there are no results returned from a search" +msgid "No posts were found." +msgstr "找不到符合條件的內容。" + +#: patterns/hidden-no-results.php +msgctxt "Pattern title" +msgid "No results" +msgstr "找不到符合條件的結果" + +#: patterns/hidden-comments.php:12 +msgid "Comments" +msgstr "留言" + +#: patterns/hidden-comments.php +msgctxt "Pattern title" +msgid "Comments" +msgstr "留言" + +#: patterns/hidden-404.php:13 +msgctxt "Message to convey that a webpage could not be found" +msgid "The page you are looking for does not exist, or it has been moved. Please try searching using the form below." +msgstr "要求的頁面不存在或已移除,請使用下方搜尋功能進行搜尋。" + +#: patterns/hidden-404.php:10 +msgctxt "Heading for a webpage that is not found" +msgid "Page Not Found" +msgstr "找不到符合條件的頁面" + +#: patterns/hidden-404.php +msgctxt "Pattern title" +msgid "404" +msgstr "404 錯誤" + +#: patterns/gallery-project-layout.php:54 +msgid "Art Gallery of Ontario, Toronto, Canada" +msgstr "加拿大多倫多安大略美術館" + +#: patterns/gallery-project-layout.php:49 +msgctxt "Sample text for the feature area" +msgid "2. Case studies that celebrate the artistry can fuel curiosity and ignite inspiration." +msgstr "2. 推廣藝術性的案例研究可以激發好奇心並觸發靈感。" + +#: patterns/gallery-project-layout.php:38 +msgctxt "Sample text for the feature area" +msgid "Our comprehensive suite of professional services caters to a diverse clientele, ranging from homeowners to commercial developers. With a commitment to innovation and sustainability, Études is the bridge that transforms architectural dreams into remarkable built realities." +msgstr "我們全方位的專業服務組合可以配合從屋主到商業開發商等不同客戶,Études 致力於創新及永續發展,因為這兩項是將建築夢想轉化為實際卓越建築的橋樑。" + +#: patterns/gallery-project-layout.php:26 +msgctxt "Sample text for the feature area" +msgid "1. Through Études, we aspire to redefine architectural boundaries and usher in a new era of design excellence that leaves an indelible mark on the built environment." +msgstr "1. 透過 Études,我們渴望重新定義建築界限,並開創一個卓越設計的新時代,以便在建築界留下深刻的印記。" + +#: patterns/gallery-project-layout.php:21 +msgid "An empty staircase under an angular roof in Darling Harbour, Sydney, Australia" +msgstr "澳大利亞雪梨達令港稜角分明屋頂下的空樓梯" + +#: patterns/gallery-project-layout.php +msgctxt "Pattern title" +msgid "Project layout" +msgstr "專案版面配置" + +#: patterns/gallery-offset-images-grid-4-col.php +msgctxt "Pattern title" +msgid "Offset gallery, 4 columns" +msgstr "4 欄式交錯圖庫" + +#: patterns/gallery-offset-images-grid-3-col.php +msgctxt "Pattern title" +msgid "Offset gallery, 3 columns" +msgstr "3 欄式交錯圖庫" + +#: patterns/gallery-offset-images-grid-2-col.php +msgctxt "Pattern title" +msgid "Offset gallery, 2 columns" +msgstr "2 欄式交錯圖庫" + +#: patterns/gallery-full-screen-image.php +msgctxt "Pattern title" +msgid "Full screen image" +msgstr "全螢幕圖片" + +#: patterns/footer.php:92 +msgid "Social Media" +msgstr "社交網路服務" + +#: patterns/footer.php:86 +msgid "Social" +msgstr "社交網路服務" + +#: patterns/footer.php:64 patterns/footer.php:70 +msgid "Privacy" +msgstr "隱私權" + +#: patterns/footer.php:41 patterns/footer.php:47 +msgid "About" +msgstr "關於" + +#: patterns/footer.php +msgctxt "Pattern title" +msgid "Footer with colophon, 4 columns" +msgstr "包含版權宣告的 4 欄式頁尾" + +#: patterns/footer-colophon-3-col.php:82 +msgid "©" +msgstr "©" + +#: patterns/footer-colophon-3-col.php:60 patterns/footer.php:94 +msgid "Facebook" +msgstr "Facebook" + +#: patterns/footer-colophon-3-col.php:60 patterns/footer.php:95 +msgid "Instagram" +msgstr "Instagram" + +#: patterns/footer-colophon-3-col.php:57 +msgid "Follow" +msgstr "追蹤" + +#: patterns/footer-colophon-3-col.php:42 +msgctxt "Example email in site footer" +msgid "info@example.com" +msgstr "info@example.com" + +#: patterns/footer-colophon-3-col.php:39 +msgid "Contact" +msgstr "聯絡資訊" + +#: patterns/footer-colophon-3-col.php:30 +msgid "Keep up, get in touch." +msgstr "持續關注,保持聯絡" + +#: patterns/footer-colophon-3-col.php +msgctxt "Pattern title" +msgid "Footer with colophon, 3 columns" +msgstr "包含版權宣告的 3 欄式頁尾" + +#. Translators: Designed with WordPress +#: patterns/footer-centered-logo-nav.php:25 +#: patterns/footer-colophon-3-col.php:94 patterns/footer.php:120 +msgid "Designed with %1$s" +msgstr "本站採用 %1$s 設計" + +#: patterns/footer-centered-logo-nav.php +msgctxt "Pattern title" +msgid "Footer with centered logo and navigation" +msgstr "包含置中標誌及導覽列的頁尾" + +#: patterns/cta-subscribe-centered.php:31 +msgctxt "Sample text for Sign Up Button" +msgid "Sign up" +msgstr "註冊" + +#: patterns/cta-subscribe-centered.php:24 +msgctxt "Sample text for Subscriber Description" +msgid "Stay in the loop with everything you need to know." +msgstr "隨時能獲知你想要了解的一切。" + +#: patterns/cta-subscribe-centered.php:20 +msgctxt "Sample text for Subscriber Heading with numbers" +msgid "Join 900+ subscribers" +msgstr "加入超過 900 位訂閱者的行列" + +#: patterns/cta-subscribe-centered.php +msgctxt "Pattern title" +msgid "Centered call to action" +msgstr "置中的行動號召" + +#: patterns/cta-services-image-left.php:39 +msgctxt "Sample button text to view the services" +msgid "Our services" +msgstr "我們的服務項目" + +#: patterns/cta-services-image-left.php:32 +msgctxt "Sample description of the services pattern" +msgid "Experience the fusion of imagination and expertise with Études—the catalyst for architectural transformations that enrich the world around us." +msgstr "體驗 Études 創造力及專業知識的融合,以豐富我們周遭世界的方式催化建築的轉型。" + +#: patterns/cta-services-image-left.php:28 +msgctxt "Sample heading of the services pattern" +msgid "Guiding your business through the project" +msgstr "透過專案引導相關業務" + +#: patterns/cta-services-image-left.php +msgctxt "Pattern title" +msgid "Services call to action with image on left" +msgstr "包含左方圖片的服務行動號召" + +#: patterns/cta-rsvp.php:50 patterns/text-title-left-image-right.php:51 +msgid "A ramp along a curved wall in the Kiasma Museu, Helsinki, Finland" +msgstr "芬蘭赫爾辛基基亞斯瑪當代藝術博物館曲面牆的坡道" + +#: patterns/cta-rsvp.php:34 patterns/page-rsvp-landing.php:34 +msgctxt "Call to action button text for the reservation button" +msgid "Reserve your spot" +msgstr "保留專屬席位" + +#: patterns/cta-rsvp.php:27 patterns/page-rsvp-landing.php:28 +msgctxt "RSVP call to action description" +msgid "Experience the fusion of imagination and expertise with Études Arch Summit, February 2025." +msgstr "誠摯邀請參加 2025 年 2 月的 Études Arch 峰會,體驗創造力及專業知識的融合。" + +#: patterns/cta-rsvp.php:21 patterns/page-rsvp-landing.php:23 +msgctxt "Initials for ´please respond´" +msgid "RSVP" +msgstr "邀請回覆" + +#: patterns/cta-rsvp.php:11 +msgctxt "Name of RSVP pattern" +msgid "RSVP" +msgstr "邀請回覆" + +#: patterns/cta-rsvp.php +msgctxt "Pattern title" +msgid "RSVP" +msgstr "邀請回覆" + +#: patterns/cta-pricing.php:203 +msgctxt "Button text for the third pricing level" +msgid "Subscribe" +msgstr "訂閱" + +#: patterns/cta-pricing.php:189 +msgctxt "Feature for pricing level" +msgid "Exclusive access to the Études app for iOS and Android" +msgstr "獨家 iOS 及 Android 版 Études 行動 App 使用授權。" + +#: patterns/cta-pricing.php:173 +msgctxt "Feature for pricing level" +msgid "Exclusive, unlimited access to Études Articles." +msgstr "無限暢讀獨家 Études 專文。" + +#: patterns/cta-pricing.php:162 +msgctxt "Sample price for the third pricing level" +msgid "$28" +msgstr "NTD 1000" + +#: patterns/cta-pricing.php:157 +msgctxt "Sample heading for the third pricing level" +msgid "Expert" +msgstr "專家方案" + +#: patterns/cta-pricing.php:145 +msgctxt "Button text for the second pricing level" +msgid "Subscribe" +msgstr "訂閱" + +#: patterns/cta-pricing.php:115 +msgctxt "Feature for pricing level" +msgid "Access to 20 exclusive Études Articles per month." +msgstr "每個月可閱讀 20 篇獨家 Études 專文。" + +#: patterns/cta-pricing.php:104 +msgctxt "Sample price for the second pricing level" +msgid "$12" +msgstr "NTD 500" + +#: patterns/cta-pricing.php:99 +msgctxt "Sample heading for the second pricing level" +msgid "Connoisseur" +msgstr "品味方案" + +#: patterns/cta-pricing.php:87 +msgctxt "Button text for the first pricing level" +msgid "Subscribe" +msgstr "訂閱" + +#: patterns/cta-pricing.php:72 patterns/cta-pricing.php:131 +msgctxt "Feature for pricing level" +msgid "Exclusive access to the Études app for iOS and Android." +msgstr "獨家 iOS 及 Android 版 Études 行動 App 使用授權。" + +#: patterns/cta-pricing.php:62 patterns/cta-pricing.php:123 +#: patterns/cta-pricing.php:181 +msgctxt "Feature for pricing level" +msgid "Weekly print edition." +msgstr "每週寄送印刷版本。" + +#: patterns/cta-pricing.php:53 +msgctxt "Feature for pricing level" +msgid "Access to 5 exclusive Études Articles per month." +msgstr "每個月可閱讀 5 篇獨家 Études 專文。" + +#: patterns/cta-pricing.php:42 +msgctxt "Sample price for the first pricing level" +msgid "$0" +msgstr "NTD 0" + +#: patterns/cta-pricing.php:37 +msgctxt "Sample heading for the first pricing level" +msgid "Free" +msgstr "免費方案" + +#: patterns/cta-pricing.php:22 +msgctxt "Sample description for a pricing table" +msgid "We offer flexible options, which you can adapt to the different needs of each project." +msgstr "我們提供可依據每個專案不同需求調整的彈性方案。" + +#: patterns/cta-pricing.php:18 +msgctxt "Sample heading for pricing pattern" +msgid "Our Services" +msgstr "我們的服務項目" + +#: patterns/cta-pricing.php:11 +msgctxt "Name for the pricing pattern" +msgid "Pricing Table" +msgstr "價目表" + +#: patterns/cta-pricing.php +msgctxt "Pattern title" +msgid "Pricing" +msgstr "價目表" + +#: patterns/cta-content-image-on-right.php:59 +#: patterns/cta-services-image-left.php:19 +msgid "White abstract geometric artwork from Dresden, Germany" +msgstr "來自德國德累斯頓的白色抽象幾何藝術品" + +#: patterns/cta-content-image-on-right.php:47 +msgctxt "Button text of this section" +msgid "How it works" +msgstr "運作方式" + +#: patterns/cta-content-image-on-right.php:41 +msgctxt "Button text of this section" +msgid "Download app" +msgstr "下載 App" + +#: patterns/cta-content-image-on-right.php:32 +#: patterns/text-alternating-images.php:52 +msgctxt "Sample list item" +msgid "Experience the world of architecture." +msgstr "體驗建築世界的點點滴滴。" + +#: patterns/cta-content-image-on-right.php:28 +#: patterns/text-alternating-images.php:48 +msgctxt "Sample list item" +msgid "Showcase your projects." +msgstr "展示自己的相關專案。" + +#: patterns/cta-content-image-on-right.php:24 +#: patterns/text-alternating-images.php:44 +msgctxt "Sample list item" +msgid "Collaborate with fellow architects." +msgstr "與其他建築師協同合作。" + +#: patterns/cta-content-image-on-right.php:18 +msgctxt "Sample heading" +msgid "Enhance your architectural journey with the Études Architect app." +msgstr "使用 Études Architect 行動 App 強化客戶的建築之旅" + +#: patterns/cta-content-image-on-right.php +msgctxt "Pattern title" +msgid "Call to action with image on right" +msgstr "包含右方圖片的行動號召" + +#: patterns/banner-project-description.php:41 +msgid "Hyatt Regency San Francisco, San Francisco, United States" +msgstr "美國舊金山凱悅飯店" + +#: patterns/banner-project-description.php:26 +msgctxt "Sample descriptive text for a project or post." +msgid "This transformative project seeks to enhance the gallery's infrastructure, accessibility, and exhibition spaces while preserving its rich cultural heritage." +msgstr "這個革命性的專案主要在於加強畫廊的基礎設施、無障礙設施及展覽空間,同時保護其豐富的文化遺產。" + +#: patterns/banner-project-description.php:17 +msgctxt "Sample title for a project or post" +msgid "Art Gallery — Overview" +msgstr "美術館概觀" + +#: patterns/banner-project-description.php +msgctxt "Pattern title" +msgid "Project description" +msgstr "專案內容說明" + +#: patterns/banner-hero.php:52 +msgid "Building exterior in Toronto, Canada" +msgstr "加拿大多倫多的建築外觀" + +#: patterns/banner-hero.php:37 +msgctxt "Button text of the hero section" +msgid "About us" +msgstr "關於我們" + +#: patterns/banner-hero.php:26 +msgctxt "Content of the hero section" +msgid "Études is a pioneering firm that seamlessly merges creativity and functionality to redefine architectural excellence." +msgstr "Études 是一間將創造力及功能性緊密整合、具備開創性的公司,並重新定義了卓越的建築。" + +#: patterns/banner-hero.php:18 +msgctxt "Heading of the hero section" +msgid "A commitment to innovation and sustainability" +msgstr "對創新及永續發展的承諾" + +#: patterns/banner-hero.php +msgctxt "Pattern title" +msgid "Hero" +msgstr "宣傳內容" + +#: functions.php:111 +msgid "With asterisk" +msgstr "包含星號" + +#: functions.php:93 +msgid "With arrow" +msgstr "包含箭號" + +#: functions.php:74 +msgid "Checkmark" +msgstr "核取記號" + +#: functions.php:51 +msgid "Pill" +msgstr "膠囊形狀" + +#: functions.php:28 +msgid "Arrow icon" +msgstr "箭號圖示" + +#. Author URI of the theme +#. Translators: WordPress link. +#: style.css patterns/footer-centered-logo-nav.php:22 +#: patterns/footer-colophon-3-col.php:91 patterns/footer.php:117 +msgid "https://wordpress.org" +msgstr "https://tw.wordpress.org" + +#. Author of the theme +#: style.css +#, gp-priority: low +msgid "the WordPress team" +msgstr "WordPress 團隊" + +#. Theme URI of the theme +#: style.css +#, gp-priority: low +msgid "https://wordpress.org/themes/twentytwentyfour/" +msgstr "https://tw.wordpress.org/themes/twentytwentyfour/" \ No newline at end of file diff --git a/languages/themes/twentytwentythree-zh_TW.l10n.php b/languages/themes/twentytwentythree-zh_TW.l10n.php new file mode 100644 index 0000000..4216633 --- /dev/null +++ b/languages/themes/twentytwentythree-zh_TW.l10n.php @@ -0,0 +1,2 @@ +'GlotPress/4.0.1','translation-revision-date'=>'2024-11-21 07:51:34+0000','plural-forms'=>'nplurals=1; plural=0;','project-id-version'=>'Themes - Twenty Twenty-Three','language'=>'zh_TW','messages'=>['Twenty Twenty-Three is designed to take advantage of the new design tools introduced in WordPress 6.1. With a clean, blank base as a starting point, this default theme includes ten diverse style variations created by members of the WordPress community. Whether you want to build a complex or incredibly simple website, you can do it quickly and intuitively through the bundled styles or dive into creation and full customization yourself.'=>'Twenty Twenty-Three 是一款能應用 WordPress 6.1 導入的全新工具優勢的佈景主題。這款預設佈景主題使用簡潔、空白的基準作為起點,並包含 WordPress 社群成員所建立的 10 種多樣化的樣式變化。無論使用者要建置複雜或極簡網站,都可以透過內建的樣式快速、直覺的完成,或依據自己的構想進行完全的客製化。','Twenty Twenty-Three'=>'Twenty Twenty-Three','Main heading for homepageMindblown: a blog about philosophy.'=>'眼界大開:這是探討哲學的部落格。','Pattern titleHidden Heading for Homepage'=>'隱藏首頁標題','Pattern descriptionPost meta information with separator on the top.'=>'包含位於頂端的分隔線的文章中繼資料資訊。','Pattern descriptionFooter with site title and powered by WordPress.'=>'包含網站標題及「本站採用 WordPress 建置」的頁尾。','Pattern descriptionLeft-aligned text with a CTA button and a separator.'=>'包含行動號召及分隔線的靠左對齊文字。','Template part nameComments Template Part'=>'留言範本組件','Template part namePost Meta'=>'文章中繼資料','Template part nameFooter'=>'頁尾','Template part nameHeader'=>'頁首','Font family nameSource Serif Pro'=>'Source Serif Pro','Font family nameSystem Font'=>'系統字型','Font family nameInter'=>'Inter','Font family nameIBM Plex Mono'=>'IBM Plex Mono','Font family nameDM Sans'=>'DM Sans','Custom template name404'=>'404 錯誤','Custom template nameBlog (Alternative)'=>'網站文章 (替代)','Custom template nameBlank'=>'空白頁面','Style variation nameWhisper'=>'細語呢喃','Gradient nameTertiary to Secondary to Primary Fixed'=>'第三色彩至次要色彩至主要色彩 (固定)','Gradient namePrimary to Secondary to Tertiary Fixed'=>'主要色彩至次要色彩至第三色彩 (固定)','Gradient namePrimary to Secondary to Tertiary'=>'主要色彩至次要色彩至第三色彩','Style variation nameSherbet'=>'果凍橘','Font size name2X Large'=>'2 倍大','Font size nameExtra Large'=>'超大型','Font size nameLarge'=>'大型','Font size nameMedium'=>'中型','Font size namesmall'=>'小型','Space size name7'=>'7','Style variation namePitch'=>'瀝青色','Gradient nameDots'=>'點狀','Gradient nameBase to Primary'=>'基準色至主要色彩','Gradient nameTertiary to Secondary'=>'第三色彩至次要色彩','Gradient nameSecondary to Primary'=>'次要色彩至主要色彩','Gradient namePrimary to Secondary'=>'主要色彩至次要色彩','Style variation namePilgrimage'=>'莊嚴崇敬','Font size nameGigantic'=>'超特大型','Font size nameHuge'=>'特大型','Font size nameNormal'=>'標準','Font size nameTiny'=>'超小型','Space size name6'=>'6','Space size name5'=>'5','Space size name4'=>'4','Space size name3'=>'3','Space size name2'=>'2','Space size name1'=>'1','Style variation nameMarigold'=>'橘黃色','Style variation nameGrapes'=>'綠葡萄','Style variation nameElectric'=>'電光四射','Style variation nameCanary'=>'深黃色','Duotone nameDefault filter'=>'預設濾鏡','Style variation nameBlock out'=>'遮光板','Color nameTertiary'=>'第三色彩','Color nameSecondary'=>'次要色彩','Color namePrimary'=>'主要色彩','Color nameContrast'=>'對比色彩','Color nameBase'=>'基準色','Gradient namePrimary to Tertiary'=>'主要色彩至第三色彩','Gradient nameTertiary to Primary'=>'第三色彩至主要色彩','Gradient nameBase to Secondary to Base'=>'基準色至次要色彩至基準色','Gradient nameSecondary to Base'=>'次要色彩至基準色','Style variation nameAubergine'=>'紫紅色','Label for a list of post tagsTags:'=>'標籤:','Preposition to show the relationship between the post and its authorby'=>'作者:','Preposition to show the relationship between the post and its categoriesin'=>'分類:','Verb to explain the publication status of a postPosted'=>'已發佈','Pattern titlePost Meta'=>'文章中繼資料','Message explaining that there are no results returned from a searchSorry, but nothing matched your search terms. Please try again with some different keywords.'=>'很抱歉,找不到符合搜尋條件的結果,請以不同的關鍵字重試。','Pattern titleHidden No Results Content'=>'隱藏沒有搜尋結果內容','Title of comments sectionComments'=>'留言','Pattern titleHidden Comments'=>'隱藏留言','Search'=>'搜尋','placeholder for search fieldSearch...'=>'搜尋...','labelSearch'=>'搜尋','Message to convey that a webpage could not be foundThis page could not be found.'=>'找不符合條件的頁面。','Error code for a webpage that is not found.404'=>'404 錯誤','Pattern titleHidden 404'=>'隱藏 404 錯誤','Proudly powered by %s'=>'本站採用 %s 建置','Pattern titleDefault Footer'=>'預設頁尾','sample content for call to action buttonGet In Touch'=>'保持聯絡','sample content for call to actionGot any book recommendations?'=>'想獲得個人化書籍推薦?','Pattern titleCall to action'=>'行動號召','https://wordpress.org'=>'https://tw.wordpress.org','the WordPress team'=>'WordPress 團隊','https://wordpress.org/themes/twentytwentythree'=>'https://tw.wordpress.org/themes/twentytwentythree']]; \ No newline at end of file diff --git a/languages/themes/twentytwentythree-zh_TW.mo b/languages/themes/twentytwentythree-zh_TW.mo new file mode 100644 index 0000000..1fa8536 Binary files /dev/null and b/languages/themes/twentytwentythree-zh_TW.mo differ diff --git a/languages/themes/twentytwentythree-zh_TW.po b/languages/themes/twentytwentythree-zh_TW.po new file mode 100644 index 0000000..cfcdfa5 --- /dev/null +++ b/languages/themes/twentytwentythree-zh_TW.po @@ -0,0 +1,462 @@ +# Translation of Themes - Twenty Twenty-Three in Chinese (Taiwan) +# This file is distributed under the same license as the Themes - Twenty Twenty-Three package. +msgid "" +msgstr "" +"PO-Revision-Date: 2024-11-21 07:51:34+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: GlotPress/4.0.1\n" +"Language: zh_TW\n" +"Project-Id-Version: Themes - Twenty Twenty-Three\n" + +#. Description of the theme +#: style.css +#, gp-priority: high +msgid "Twenty Twenty-Three is designed to take advantage of the new design tools introduced in WordPress 6.1. With a clean, blank base as a starting point, this default theme includes ten diverse style variations created by members of the WordPress community. Whether you want to build a complex or incredibly simple website, you can do it quickly and intuitively through the bundled styles or dive into creation and full customization yourself." +msgstr "Twenty Twenty-Three 是一款能應用 WordPress 6.1 導入的全新工具優勢的佈景主題。這款預設佈景主題使用簡潔、空白的基準作為起點,並包含 WordPress 社群成員所建立的 10 種多樣化的樣式變化。無論使用者要建置複雜或極簡網站,都可以透過內建的樣式快速、直覺的完成,或依據自己的構想進行完全的客製化。" + +#. Theme Name of the theme +#: style.css +#, gp-priority: high +msgid "Twenty Twenty-Three" +msgstr "Twenty Twenty-Three" + +#: patterns/hidden-heading.php:9 +msgctxt "Main heading for homepage" +msgid "Mindblown: a blog about philosophy." +msgstr "眼界大開:這是探討哲學的部落格。" + +#: patterns/hidden-heading.php +msgctxt "Pattern title" +msgid "Hidden Heading for Homepage" +msgstr "隱藏首頁標題" + +#: patterns/post-meta.php +msgctxt "Pattern description" +msgid "Post meta information with separator on the top." +msgstr "包含位於頂端的分隔線的文章中繼資料資訊。" + +#: patterns/footer-default.php +msgctxt "Pattern description" +msgid "Footer with site title and powered by WordPress." +msgstr "包含網站標題及「本站採用 WordPress 建置」的頁尾。" + +#: patterns/call-to-action.php +msgctxt "Pattern description" +msgid "Left-aligned text with a CTA button and a separator." +msgstr "包含行動號召及分隔線的靠左對齊文字。" + +#: theme.json +msgctxt "Template part name" +msgid "Comments Template Part" +msgstr "留言範本組件" + +#: theme.json +msgctxt "Template part name" +msgid "Post Meta" +msgstr "文章中繼資料" + +#: theme.json +msgctxt "Template part name" +msgid "Footer" +msgstr "頁尾" + +#: theme.json +msgctxt "Template part name" +msgid "Header" +msgstr "頁首" + +#: theme.json +msgctxt "Font family name" +msgid "Source Serif Pro" +msgstr "Source Serif Pro" + +#: theme.json +msgctxt "Font family name" +msgid "System Font" +msgstr "系統字型" + +#: theme.json +msgctxt "Font family name" +msgid "Inter" +msgstr "Inter" + +#: theme.json +msgctxt "Font family name" +msgid "IBM Plex Mono" +msgstr "IBM Plex Mono" + +#: theme.json +msgctxt "Font family name" +msgid "DM Sans" +msgstr "DM Sans" + +#: theme.json +msgctxt "Custom template name" +msgid "404" +msgstr "404 錯誤" + +#: theme.json +msgctxt "Custom template name" +msgid "Blog (Alternative)" +msgstr "網站文章 (替代)" + +#: theme.json +msgctxt "Custom template name" +msgid "Blank" +msgstr "空白頁面" + +#: styles/whisper.json +msgctxt "Style variation name" +msgid "Whisper" +msgstr "細語呢喃" + +#: styles/sherbet.json +msgctxt "Gradient name" +msgid "Tertiary to Secondary to Primary Fixed" +msgstr "第三色彩至次要色彩至主要色彩 (固定)" + +#: styles/sherbet.json +msgctxt "Gradient name" +msgid "Primary to Secondary to Tertiary Fixed" +msgstr "主要色彩至次要色彩至第三色彩 (固定)" + +#: styles/sherbet.json +msgctxt "Gradient name" +msgid "Primary to Secondary to Tertiary" +msgstr "主要色彩至次要色彩至第三色彩" + +#: styles/sherbet.json +msgctxt "Style variation name" +msgid "Sherbet" +msgstr "果凍橘" + +#: styles/pitch.json +msgctxt "Font size name" +msgid "2X Large" +msgstr "2 倍大" + +#: styles/pitch.json +msgctxt "Font size name" +msgid "Extra Large" +msgstr "超大型" + +#: styles/pitch.json +msgctxt "Font size name" +msgid "Large" +msgstr "大型" + +#: styles/pitch.json +msgctxt "Font size name" +msgid "Medium" +msgstr "中型" + +#: styles/pitch.json +msgctxt "Font size name" +msgid "small" +msgstr "小型" + +#: styles/pitch.json +msgctxt "Space size name" +msgid "7" +msgstr "7" + +#: styles/pitch.json +msgctxt "Style variation name" +msgid "Pitch" +msgstr "瀝青色" + +#: styles/pilgrimage.json +msgctxt "Gradient name" +msgid "Dots" +msgstr "點狀" + +#: styles/pilgrimage.json +msgctxt "Gradient name" +msgid "Base to Primary" +msgstr "基準色至主要色彩" + +#: styles/pilgrimage.json +msgctxt "Gradient name" +msgid "Tertiary to Secondary" +msgstr "第三色彩至次要色彩" + +#: styles/pilgrimage.json +msgctxt "Gradient name" +msgid "Secondary to Primary" +msgstr "次要色彩至主要色彩" + +#: styles/pilgrimage.json +msgctxt "Gradient name" +msgid "Primary to Secondary" +msgstr "主要色彩至次要色彩" + +#: styles/pilgrimage.json +msgctxt "Style variation name" +msgid "Pilgrimage" +msgstr "莊嚴崇敬" + +#: styles/marigold.json +msgctxt "Font size name" +msgid "Gigantic" +msgstr "超特大型" + +#: styles/marigold.json +msgctxt "Font size name" +msgid "Huge" +msgstr "特大型" + +#: styles/marigold.json +msgctxt "Font size name" +msgid "Normal" +msgstr "標準" + +#: styles/marigold.json +msgctxt "Font size name" +msgid "Tiny" +msgstr "超小型" + +#: styles/marigold.json styles/pitch.json theme.json +msgctxt "Space size name" +msgid "6" +msgstr "6" + +#: styles/marigold.json styles/pitch.json theme.json +msgctxt "Space size name" +msgid "5" +msgstr "5" + +#: styles/marigold.json styles/pitch.json theme.json +msgctxt "Space size name" +msgid "4" +msgstr "4" + +#: styles/marigold.json styles/pitch.json theme.json +msgctxt "Space size name" +msgid "3" +msgstr "3" + +#: styles/marigold.json styles/pitch.json theme.json +msgctxt "Space size name" +msgid "2" +msgstr "2" + +#: styles/marigold.json styles/pitch.json theme.json +msgctxt "Space size name" +msgid "1" +msgstr "1" + +#: styles/marigold.json +msgctxt "Style variation name" +msgid "Marigold" +msgstr "橘黃色" + +#: styles/grapes.json +msgctxt "Style variation name" +msgid "Grapes" +msgstr "綠葡萄" + +#: styles/electric.json +msgctxt "Style variation name" +msgid "Electric" +msgstr "電光四射" + +#: styles/canary.json +msgctxt "Style variation name" +msgid "Canary" +msgstr "深黃色" + +#: styles/block-out.json styles/canary.json styles/pilgrimage.json +#: styles/sherbet.json +msgctxt "Duotone name" +msgid "Default filter" +msgstr "預設濾鏡" + +#: styles/block-out.json +msgctxt "Style variation name" +msgid "Block out" +msgstr "遮光板" + +#: styles/aubergine.json styles/block-out.json styles/canary.json +#: styles/electric.json styles/grapes.json styles/marigold.json +#: styles/pilgrimage.json styles/pitch.json styles/sherbet.json +#: styles/whisper.json theme.json +msgctxt "Color name" +msgid "Tertiary" +msgstr "第三色彩" + +#: styles/aubergine.json styles/block-out.json styles/canary.json +#: styles/electric.json styles/grapes.json styles/marigold.json +#: styles/pilgrimage.json styles/pitch.json styles/sherbet.json +#: styles/whisper.json theme.json +msgctxt "Color name" +msgid "Secondary" +msgstr "次要色彩" + +#: styles/aubergine.json styles/block-out.json styles/canary.json +#: styles/electric.json styles/grapes.json styles/marigold.json +#: styles/pilgrimage.json styles/pitch.json styles/sherbet.json +#: styles/whisper.json theme.json +msgctxt "Color name" +msgid "Primary" +msgstr "主要色彩" + +#: styles/aubergine.json styles/block-out.json styles/canary.json +#: styles/electric.json styles/grapes.json styles/marigold.json +#: styles/pilgrimage.json styles/pitch.json styles/sherbet.json +#: styles/whisper.json theme.json +msgctxt "Color name" +msgid "Contrast" +msgstr "對比色彩" + +#: styles/aubergine.json styles/block-out.json styles/canary.json +#: styles/electric.json styles/grapes.json styles/marigold.json +#: styles/pilgrimage.json styles/pitch.json styles/sherbet.json +#: styles/whisper.json theme.json +msgctxt "Color name" +msgid "Base" +msgstr "基準色" + +#: styles/aubergine.json +msgctxt "Gradient name" +msgid "Primary to Tertiary" +msgstr "主要色彩至第三色彩" + +#: styles/aubergine.json styles/pilgrimage.json +msgctxt "Gradient name" +msgid "Tertiary to Primary" +msgstr "第三色彩至主要色彩" + +#: styles/aubergine.json +msgctxt "Gradient name" +msgid "Base to Secondary to Base" +msgstr "基準色至次要色彩至基準色" + +#: styles/aubergine.json +msgctxt "Gradient name" +msgid "Secondary to Base" +msgstr "次要色彩至基準色" + +#: styles/aubergine.json +msgctxt "Style variation name" +msgid "Aubergine" +msgstr "紫紅色" + +#: patterns/post-meta.php:65 +msgctxt "Label for a list of post tags" +msgid "Tags:" +msgstr "標籤:" + +#: patterns/post-meta.php:49 +msgctxt "Preposition to show the relationship between the post and its author" +msgid "by" +msgstr "作者:" + +#: patterns/post-meta.php:37 +msgctxt "Preposition to show the relationship between the post and its categories" +msgid "in" +msgstr "分類:" + +#: patterns/post-meta.php:29 +msgctxt "Verb to explain the publication status of a post" +msgid "Posted" +msgstr "已發佈" + +#: patterns/post-meta.php +msgctxt "Pattern title" +msgid "Post Meta" +msgstr "文章中繼資料" + +#: patterns/hidden-no-results.php:10 +msgctxt "Message explaining that there are no results returned from a search" +msgid "Sorry, but nothing matched your search terms. Please try again with some different keywords." +msgstr "很抱歉,找不到符合搜尋條件的結果,請以不同的關鍵字重試。" + +#: patterns/hidden-no-results.php +msgctxt "Pattern title" +msgid "Hidden No Results Content" +msgstr "隱藏沒有搜尋結果內容" + +#: patterns/hidden-comments.php:13 +msgctxt "Title of comments section" +msgid "Comments" +msgstr "留言" + +#: patterns/hidden-comments.php +msgctxt "Pattern title" +msgid "Hidden Comments" +msgstr "隱藏留言" + +#: patterns/hidden-404.php:22 patterns/hidden-no-results.php:14 +msgid "Search" +msgstr "搜尋" + +#: patterns/hidden-404.php:22 patterns/hidden-no-results.php:14 +msgctxt "placeholder for search field" +msgid "Search..." +msgstr "搜尋..." + +#: patterns/hidden-404.php:22 patterns/hidden-no-results.php:14 +msgctxt "label" +msgid "Search" +msgstr "搜尋" + +#: patterns/hidden-404.php:19 +msgctxt "Message to convey that a webpage could not be found" +msgid "This page could not be found." +msgstr "找不符合條件的頁面。" + +#: patterns/hidden-404.php:13 +msgctxt "Error code for a webpage that is not found." +msgid "404" +msgstr "404 錯誤" + +#: patterns/hidden-404.php +msgctxt "Pattern title" +msgid "Hidden 404" +msgstr "隱藏 404 錯誤" + +#. Translators: WordPress link. +#: patterns/footer-default.php:20 +msgid "Proudly powered by %s" +msgstr "本站採用 %s 建置" + +#: patterns/footer-default.php +msgctxt "Pattern title" +msgid "Default Footer" +msgstr "預設頁尾" + +#: patterns/call-to-action.php:25 +msgctxt "sample content for call to action button" +msgid "Get In Touch" +msgstr "保持聯絡" + +#: patterns/call-to-action.php:16 +msgctxt "sample content for call to action" +msgid "Got any book recommendations?" +msgstr "想獲得個人化書籍推薦?" + +#: patterns/call-to-action.php +msgctxt "Pattern title" +msgid "Call to action" +msgstr "行動號召" + +#. Author URI of the theme +#: style.css patterns/footer-default.php:21 +#, gp-priority: low +msgid "https://wordpress.org" +msgstr "https://tw.wordpress.org" + +#. Author of the theme +#: style.css +#, gp-priority: low +msgid "the WordPress team" +msgstr "WordPress 團隊" + +#. Theme URI of the theme +#: style.css +#, gp-priority: low +msgid "https://wordpress.org/themes/twentytwentythree" +msgstr "https://tw.wordpress.org/themes/twentytwentythree" \ No newline at end of file diff --git a/languages/zh_TW-0cc31205f20441b3df1d1b46100f6b8d.json b/languages/zh_TW-0cc31205f20441b3df1d1b46100f6b8d.json new file mode 100644 index 0000000..19a1a59 --- /dev/null +++ b/languages/zh_TW-0cc31205f20441b3df1d1b46100f6b8d.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"The suggested policy text has been copied to your clipboard.":["\u5efa\u8b70\u7684\u96b1\u79c1\u6b0a\u653f\u7b56\u5167\u5bb9\u5df2\u8907\u88fd\u81f3\u526a\u8cbc\u7c3f\u3002"],"This user’s personal data export file was downloaded.":["\u9019\u500b\u4f7f\u7528\u8005\u7684\u500b\u4eba\u8cc7\u6599\u532f\u51fa\u6a94\u5df2\u4e0b\u8f09\u3002"],"This user’s personal data export link was sent.":["\u9019\u500b\u4f7f\u7528\u8005\u7684\u500b\u4eba\u8cc7\u6599\u532f\u51fa\u9023\u7d50\u5df2\u50b3\u9001\u3002"],"An error occurred while attempting to find and erase personal data.":["\u5617\u8a66\u5c0b\u627e\u53ca\u6e05\u9664\u500b\u4eba\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4\u3002"],"Personal data was found for this user but some of the personal data found was not erased.":["\u5df2\u70ba\u9019\u500b\u4f7f\u7528\u8005\u627e\u5230\u500b\u4eba\u8cc7\u6599\uff0c\u4f46\u67d0\u4e9b\u500b\u4eba\u8cc7\u6599\u4e26\u672a\u6e05\u9664\u3002"],"All of the personal data found for this user was erased.":["\u70ba\u9019\u500b\u4f7f\u7528\u8005\u627e\u5230\u7684\u500b\u4eba\u8cc7\u6599\u5747\u5df2\u6e05\u9664\u3002"],"Personal data was found for this user but was not erased.":["\u5df2\u70ba\u9019\u500b\u4f7f\u7528\u8005\u627e\u5230\u500b\u4eba\u8cc7\u6599\u4f46\u4e26\u672a\u6e05\u9664\u3002"],"No personal data was found for this user.":["\u627e\u4e0d\u5230\u9019\u500b\u4f7f\u7528\u8005\u7684\u4efb\u4f55\u500b\u4eba\u8cc7\u6599\u3002"],"An error occurred while attempting to export personal data.":["\u5617\u8a66\u532f\u51fa\u4f7f\u7528\u8005\u500b\u4eba\u8cc7\u6599\u6642\u767c\u751f\u932f\u8aa4\u3002"],"No personal data export file was generated.":["\u4e26\u672a\u7522\u751f\u4f7f\u7528\u8005\u500b\u4eba\u8cc7\u6599\u532f\u51fa\u6a94\u3002"]}},"comment":{"reference":"wp-admin\/js\/privacy-tools.js"}} \ No newline at end of file diff --git a/languages/zh_TW-0ce75ad2f775d1cac9696967d484808c.json b/languages/zh_TW-0ce75ad2f775d1cac9696967d484808c.json new file mode 100644 index 0000000..3397006 --- /dev/null +++ b/languages/zh_TW-0ce75ad2f775d1cac9696967d484808c.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Editor tips":["\u7de8\u8f2f\u5668\u4f7f\u7528\u63d0\u793a"],"Disable tips":["\u505c\u7528\u4f7f\u7528\u63d0\u793a"],"Got it":["\u5b8c\u5168\u4e86\u89e3"],"See next tip":["\u6aa2\u8996\u4e0b\u4e00\u500b\u4f7f\u7528\u63d0\u793a"]}},"comment":{"reference":"wp-includes\/js\/dist\/nux.js"}} \ No newline at end of file diff --git a/languages/zh_TW-0eebe503220d4a00341eb011b92769b4.json b/languages/zh_TW-0eebe503220d4a00341eb011b92769b4.json new file mode 100644 index 0000000..8c523af --- /dev/null +++ b/languages/zh_TW-0eebe503220d4a00341eb011b92769b4.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"%1$s is deprecated since version %2$s! Use %3$s instead. Please consider writing more inclusive code.":["\u5f9e %2$s \u7248\u958b\u59cb\uff0c%1$s \u5df2\u6dd8\u6c70\u4e0d\u7528\uff0c\u8acb\u6539\u7528 %3$s\u3002\u5efa\u8b70\u64b0\u5beb\u66f4\u5177\u5305\u5bb9\u6027\u7684\u7a0b\u5f0f\u78bc\u3002"]}},"comment":{"reference":"wp-admin\/js\/password-strength-meter.js"}} \ No newline at end of file diff --git a/languages/zh_TW-17179a5f2930647c89151e365f843b6e.json b/languages/zh_TW-17179a5f2930647c89151e365f843b6e.json new file mode 100644 index 0000000..0cf56ff --- /dev/null +++ b/languages/zh_TW-17179a5f2930647c89151e365f843b6e.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"%s applied.":["[%s] \u5df2\u5957\u7528\u3002"],"%s removed.":["[%s] \u5df2\u79fb\u9664\u3002"]}},"comment":{"reference":"wp-includes\/js\/dist\/rich-text.js"}} \ No newline at end of file diff --git a/languages/zh_TW-1780a2033cf98d69ce13c2e5c8510004.json b/languages/zh_TW-1780a2033cf98d69ce13c2e5c8510004.json new file mode 100644 index 0000000..68fd281 --- /dev/null +++ b/languages/zh_TW-1780a2033cf98d69ce13c2e5c8510004.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"pattern (singular)\u0004Synced":["\u5b8c\u5168\u540c\u6b65"],"Sync this pattern across multiple locations.":["\u8de8\u591a\u500b\u4f4d\u7f6e\u540c\u6b65\u9019\u500b\u5340\u584a\u7248\u9762\u914d\u7f6e\u3002"],"Unsynced pattern created: %s":["[\u5b8c\u5168\u4e0d\u540c\u6b65\u5340\u584a\u7248\u9762\u914d\u7f6e] \u5df2\u5efa\u7acb: %s"],"Synced pattern created: %s":["[\u5b8c\u5168\u540c\u6b65\u5340\u584a\u7248\u9762\u914d\u7f6e] \u5df2\u5efa\u7acb: %s"],"Untitled pattern block":["\u672a\u547d\u540d\u7684\u5340\u584a\u7248\u9762\u914d\u7f6e"],"Create pattern":["\u5efa\u7acb\u5340\u584a\u7248\u9762\u914d\u7f6e"],"My pattern":["\u81ea\u8a02\u5340\u584a\u7248\u9762\u914d\u7f6e\u540d\u7a31"],"Manage patterns":["\u7ba1\u7406\u5340\u584a\u7248\u9762\u914d\u7f6e"],"Create":["\u5efa\u7acb"],"Cancel":["\u53d6\u6d88"],"Name":["\u986f\u793a\u540d\u7a31"]}},"comment":{"reference":"wp-includes\/js\/dist\/reusable-blocks.js"}} \ No newline at end of file diff --git a/languages/zh_TW-1a0cd6a7128913b15c1a10dd68951869.json b/languages/zh_TW-1a0cd6a7128913b15c1a10dd68951869.json new file mode 100644 index 0000000..6daccd2 --- /dev/null +++ b/languages/zh_TW-1a0cd6a7128913b15c1a10dd68951869.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"%1$s Block. Row %2$d":["[%1$s] \u5340\u584a\u3002\u7b2c %2$d \u5217\u3002"],"Design":["\u8a2d\u8a08"],"%s Block":["[%s] \u5340\u584a"],"%1$s Block. %2$s":["[%1$s] \u5340\u584a\u3002%2$s"],"%1$s Block. Column %2$d":["[%1$s] \u5340\u584a\u3002\u7b2c %2$d \u6b04\u3002"],"%1$s Block. Column %2$d. %3$s":["[%1$s] \u5340\u584a\u3002\u7b2c %2$d \u6b04\u3002%3$s"],"%1$s Block. Row %2$d. %3$s":["[%1$s] \u5340\u584a\u3002\u7b2c %2$d \u5217\u3002%3$s"],"Reusable blocks":["\u53ef\u91cd\u8907\u4f7f\u7528\u5340\u584a"],"Embeds":["\u5d4c\u5165\u5167\u5bb9"],"Text":["\u6587\u5b57"],"Widgets":["\u5c0f\u5de5\u5177"],"Theme":["\u4f48\u666f\u4e3b\u984c"],"Media":["\u5a92\u9ad4"]}},"comment":{"reference":"wp-includes\/js\/dist\/blocks.js"}} \ No newline at end of file diff --git a/languages/zh_TW-1bba9045bb07c89671c88a3f328548e8.json b/languages/zh_TW-1bba9045bb07c89671c88a3f328548e8.json new file mode 100644 index 0000000..6900f6e --- /dev/null +++ b/languages/zh_TW-1bba9045bb07c89671c88a3f328548e8.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Unable to connect. Please check your Internet connection.":["\u7121\u6cd5\u9023\u7dda\u3002\u8acb\u78ba\u8a8d\u76ee\u524d\u4f7f\u7528\u7684\u7db2\u969b\u7db2\u8def\u9023\u7dda\u3002"],"Could not get a valid response from the server.":["\u7121\u6cd5\u5f9e\u4f3a\u670d\u5668\u53d6\u5f97\u6709\u6548\u7684\u56de\u61c9\u3002"],"Media upload failed. If this is a photo or a large image, please scale it down and try again.":["\u5a92\u9ad4\u4e0a\u50b3\u5931\u6557\u3002\u5982\u679c\u9019\u662f\u7167\u7247\u6216\u5927\u578b\u5c3a\u5bf8\u5716\u7247\uff0c\u8acb\u5148\u7e2e\u5c0f\u5c3a\u5bf8\u518d\u4e0a\u50b3\u3002"],"The response is not a valid JSON response.":["\u7121\u6548\u7684 JSON \u56de\u61c9\u3002"]}},"comment":{"reference":"wp-includes\/js\/dist\/api-fetch.js"}} \ No newline at end of file diff --git a/languages/zh_TW-1c4303f02ff93b290e9faad991eeb06f.json b/languages/zh_TW-1c4303f02ff93b290e9faad991eeb06f.json new file mode 100644 index 0000000..fbdd56a --- /dev/null +++ b/languages/zh_TW-1c4303f02ff93b290e9faad991eeb06f.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Submitted on:":["\u767c\u4f48\u65e5\u671f:"],"%1$s %2$s, %3$s at %4$s:%5$s":["%3$s \u5e74 %1$s %2$s \u65e5 %4$s:%5$s"]}},"comment":{"reference":"wp-admin\/js\/comment.js"}} \ No newline at end of file diff --git a/languages/zh_TW-1d17475f620f63a92e2c5d2681c51ee8.json b/languages/zh_TW-1d17475f620f63a92e2c5d2681c51ee8.json new file mode 100644 index 0000000..d7b58fb --- /dev/null +++ b/languages/zh_TW-1d17475f620f63a92e2c5d2681c51ee8.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Selected crop ratio exceeds the boundaries of the image. Try a different ratio.":["\u9078\u53d6\u7684\u88c1\u526a\u6bd4\u4f8b\u8d85\u904e\u5716\u7247\u7684\u908a\u754c\uff0c\u8acb\u6539\u7528\u4e0d\u540c\u7684\u6bd4\u4f8b\u3002"],"Could not load the preview image.":["\u7121\u6cd5\u8f09\u5165\u9810\u89bd\u5716\u7247\u3002"],"Could not load the preview image. Please reload the page and try again.":["\u7121\u6cd5\u8f09\u5165\u9810\u89bd\u5716\u7247\u3002\u8acb\u91cd\u65b0\u8f09\u5165\u9801\u9762\u4e26\u518d\u8a66\u4e00\u6b21\u3002"],"Image updated.":["\u5716\u7247\u5df2\u66f4\u65b0\u3002"]}},"comment":{"reference":"wp-admin\/js\/image-edit.js"}} \ No newline at end of file diff --git a/languages/zh_TW-2617ce121227a46077ede6c69aa9fcb5.json b/languages/zh_TW-2617ce121227a46077ede6c69aa9fcb5.json new file mode 100644 index 0000000..8add22e --- /dev/null +++ b/languages/zh_TW-2617ce121227a46077ede6c69aa9fcb5.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Overrides currently don't support image links. Remove the link first before enabling overrides.":["\u8986\u5beb\u529f\u80fd\u76ee\u524d\u4e0d\u652f\u63f4\u5716\u7247\u9023\u7d50\u3002\u8acb\u5728\u555f\u7528\u8986\u5beb\u529f\u80fd\u524d\u5148\u79fb\u9664\u9023\u7d50\u3002"],"pattern\u0004\"%s\" duplicated.":["[%s] \u5df2\u518d\u88fd\u3002"],"pattern\u0004%s (Copy)":["%s (\u8907\u672c)"],"Disable":["\u505c\u7528"],"Overrides":["\u5340\u584a\u7248\u9762\u914d\u7f6e\u8986\u5beb"],"Allow changes to this block throughout instances of this pattern.":["\u5141\u8a31\u5c0d\u9019\u500b\u5340\u584a\u7248\u9762\u914d\u7f6e\u7684\u57f7\u884c\u500b\u9ad4\u9032\u884c\u8b8a\u66f4\u3002"],"Are you sure you want to disable overrides? Disabling overrides will revert all applied overrides for this block throughout instances of this pattern.":["\u78ba\u5b9a\u8981\u505c\u7528\u8986\u5beb\u529f\u80fd\uff1f\u505c\u7528\u8986\u5beb\u529f\u80fd\u6703\u5728\u9019\u500b\u5340\u584a\u7248\u9762\u914d\u7f6e\u57f7\u884c\u500b\u9ad4\u4e2d\u9084\u539f\u5168\u90e8\u5957\u7528\u81f3\u9019\u500b\u5340\u584a\u7684\u8986\u5beb\u529f\u80fd\u3002"],"Disable overrides":["\u505c\u7528\u8986\u5beb\u529f\u80fd"],"For example, if you are creating a recipe pattern, you use \"Recipe Title\", \"Recipe Description\", etc.":["\u8209\u4f8b\u4f86\u8aaa\uff0c\u5982\u679c\u4f7f\u7528\u8005\u5efa\u7acb\u4e86\u4e00\u500b\u98df\u8b5c\u76f8\u95dc\u7684\u5340\u584a\u7248\u9762\u914d\u7f6e\uff0c\u9700\u8981\u8986\u5beb\u7684\u90e8\u5206\u53ef\u4ee5\u547d\u540d\u70ba [\u98df\u8b5c\u6a19\u984c] \u6216 [\u98df\u8b5c\u8aaa\u660e] \u7b49\u540d\u7a31\u3002"],"Overrides are changes you make to a block within a synced pattern instance. Use overrides to customize a synced pattern instance to suit its new context. Name this block to specify an override.":["\u8986\u5beb\u662f\u4f7f\u7528\u8005\u5c0d\u5b8c\u5168\u540c\u6b65\u7684\u5340\u584a\u7248\u9762\u914d\u7f6e\u57f7\u884c\u500b\u9ad4\u4e2d\u7684\u5340\u584a\u9032\u884c\u7684\u8b8a\u66f4\uff0c\u4f7f\u7528\u8986\u5beb\u529f\u80fd\u4fbf\u80fd\u81ea\u8a02\u5b8c\u5168\u540c\u6b65\u7684\u5340\u584a\u7248\u9762\u914d\u7f6e\u57f7\u884c\u500b\u9ad4\u4ee5\u914d\u5408\u73fe\u6709\u5167\u5bb9\u3002\u547d\u540d\u9019\u500b\u5340\u584a\u4ee5\u4fbf\u8fa8\u8b58\u9019\u500b\u8986\u5beb\u529f\u80fd\u7684\u7528\u9014\u3002"],"Enable overrides":["\u555f\u7528\u8986\u5beb\u529f\u80fd"],"pattern (singular)\u0004Synced":["\u5b8c\u5168\u540c\u6b65"],"Pattern category renamed.":["\u5340\u584a\u7248\u9762\u914d\u7f6e\u5206\u985e\u5df2\u91cd\u65b0\u547d\u540d\u3002"],"This category already exists. Please use a different name.":["\u9019\u500b\u5206\u985e\u5df2\u5b58\u5728\u3002\u8acb\u4f7f\u7528\u4e0d\u540c\u540d\u7a31\u3002"],"Please enter a new name for this category.":["\u8acb\u8f38\u5165\u9019\u500b\u5206\u985e\u7684\u65b0\u540d\u7a31\u3002"],"Pattern renamed":["\u5340\u584a\u7248\u9762\u914d\u7f6e\u5df2\u91cd\u65b0\u547d\u540d\u3002"],"Sync this pattern across multiple locations.":["\u8de8\u591a\u500b\u4f4d\u7f6e\u540c\u6b65\u9019\u500b\u5340\u584a\u7248\u9762\u914d\u7f6e\u3002"],"Duplicate pattern":["\u518d\u88fd\u5340\u584a\u7248\u9762\u914d\u7f6e"],"Block name changed to: \"%s\".":["\u5340\u584a\u540d\u7a31\u5df2\u8b8a\u66f4\uff0c\u76ee\u524d\u540d\u7a31: %s\u3002"],"Unsynced pattern created: %s":["[\u5b8c\u5168\u4e0d\u540c\u6b65\u5340\u584a\u7248\u9762\u914d\u7f6e] \u5df2\u5efa\u7acb: %s"],"Synced pattern created: %s":["[\u5b8c\u5168\u540c\u6b65\u5340\u584a\u7248\u9762\u914d\u7f6e] \u5df2\u5efa\u7acb: %s"],"Create pattern":["\u5efa\u7acb\u5340\u584a\u7248\u9762\u914d\u7f6e"],"My pattern":["\u81ea\u8a02\u5340\u584a\u7248\u9762\u914d\u7f6e\u540d\u7a31"],"An error occurred while renaming the pattern.":["\u91cd\u65b0\u547d\u540d\u5340\u584a\u7248\u9762\u914d\u7f6e\u6642\u767c\u751f\u932f\u8aa4\u3002"],"Manage patterns":["\u7ba1\u7406\u5340\u584a\u7248\u9762\u914d\u7f6e"],"Rename":["\u91cd\u65b0\u547d\u540d"],"Duplicate":["\u518d\u88fd"],"Reset":["\u91cd\u8a2d"],"Detach":["\u89e3\u9664\u95dc\u806f"],"Enable":["\u555f\u7528"],"Add":["\u65b0\u589e"],"Cancel":["\u53d6\u6d88"],"Categories":["\u5206\u985e"],"Name":["\u986f\u793a\u540d\u7a31"],"Save":["\u5132\u5b58"]}},"comment":{"reference":"wp-includes\/js\/dist\/patterns.js"}} \ No newline at end of file diff --git a/languages/zh_TW-270d72d1cff17227d37f3244759cbecb.json b/languages/zh_TW-270d72d1cff17227d37f3244759cbecb.json new file mode 100644 index 0000000..2c23774 --- /dev/null +++ b/languages/zh_TW-270d72d1cff17227d37f3244759cbecb.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Search commands and settings":["\u641c\u5c0b\u547d\u4ee4\u53ca\u8a2d\u5b9a"],"Command suggestions":["\u547d\u4ee4\u5efa\u8b70"],"Command palette":["\u547d\u4ee4\u9078\u64c7\u5340"],"Open the command palette.":["\u958b\u555f\u547d\u4ee4\u9078\u64c7\u5340"],"Action":["\u64cd\u4f5c"],"No results found.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u641c\u5c0b\u7d50\u679c\u3002"],"View":["\u6aa2\u8996"],"Edit":["\u7de8\u8f2f"]}},"comment":{"reference":"wp-includes\/js\/dist\/commands.js"}} \ No newline at end of file diff --git a/languages/zh_TW-28b3c3d595952907e08d98287077426c.json b/languages/zh_TW-28b3c3d595952907e08d98287077426c.json new file mode 100644 index 0000000..8d67f7f --- /dev/null +++ b/languages/zh_TW-28b3c3d595952907e08d98287077426c.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Pattern imported successfully!":["\u5340\u584a\u7248\u9762\u914d\u7f6e\u5df2\u6210\u529f\u532f\u5165\u3002"],"Invalid pattern JSON file":["\u7121\u6548\u7684\u5340\u584a\u7248\u9762\u914d\u7f6e JSON \u6a94\u6848"],"button label\u0004Import":["\u532f\u5165"],"Unknown error":["\u672a\u77e5\u7684\u932f\u8aa4"],"Invalid JSON file":["\u7121\u6548\u7684 JSON \u6a94\u6848"],"Import from JSON":["\u5f9e JSON \u6a94\u6848\u532f\u5165"],"File":["\u6a94\u6848"]}},"comment":{"reference":"wp-includes\/js\/dist\/list-reusable-blocks.js"}} \ No newline at end of file diff --git a/languages/zh_TW-2b390f85a3048c5b4255fb45960b6514.json b/languages/zh_TW-2b390f85a3048c5b4255fb45960b6514.json new file mode 100644 index 0000000..b6fe1df --- /dev/null +++ b/languages/zh_TW-2b390f85a3048c5b4255fb45960b6514.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"An error occurred during the update process. Please try again.":["\u66f4\u65b0\u6642\u767c\u751f\u932f\u8aa4\u3002\u8acb\u518d\u8a66\u4e00\u6b21\u3002"],"Dependencies check failed: %s":["\u76f8\u4f9d\u6027\u67e5\u5931\u6557: %s"],"plugin\/plugins\u0004%s item":["%s \u500b\u9805\u76ee"],"plugin\u0004%s activation failed":["%s \u555f\u7528\u5931\u6557"],"Activation failed.":["\u555f\u7528\u5931\u6557\u3002"],"Activation completed successfully.":["\u555f\u7528\u5df2\u6210\u529f\u5b8c\u6210\u3002"],"plugin\u0004Activated!":["\u5df2\u555f\u7528\uff01"],"plugin\u0004Activating %s":["\u6b63\u5728\u555f\u7528 %s"],"Activating...":["\u6b63\u5728\u555f\u7528..."],"Activating... please wait.":["\u6b63\u5728\u555f\u7528...\u8acb\u7a0d\u5019\u3002"],"Activation failed: %s":["\u555f\u7528\u5931\u6557: %s"],"plugin\u0004Cannot activate %1$s. %2$s":["\u7121\u6cd5\u555f\u7528 %1$s\u3002%2$s"],"Plugin dependencies check completed successfully.":["\u5916\u639b\u76f8\u4f9d\u6027\u6aa2\u67e5\u5df2\u6210\u529f\u5b8c\u6210\u3002"],"Checking plugin dependencies... please wait.":["\u6b63\u5728\u6aa2\u67e5\u5916\u639b\u76f8\u4f9d\u6027...\u8acb\u7a0d\u5f8c\u3002"],"plugin\u0004Activate":["\u555f\u7528"],"plugin\u0004Network Activate":["\u65bc\u591a\u7ad9\u7db2\u8def\u4e2d\u555f\u7528"],"plugin\u0004Install Now":["\u7acb\u5373\u5b89\u88dd"],"Search Results":["\u641c\u5c0b\u7d50\u679c"],"Search results for: %s":["\u300c%s\u300d\u7684\u641c\u5c0b\u7d50\u679c"],"The request could not be completed.":["\u7121\u6cd5\u5b8c\u6210\u9019\u9805\u8981\u6c42\u3002"],"Disabling...":["\u6b63\u5728\u505c\u7528..."],"Enabling...":["\u6b63\u5728\u555f\u7528..."],"Number of plugins found: %d":["\u5df2\u627e\u5230\u7684\u5916\u639b\u6578\u91cf: %d"],"Caution: These themes may be active on other sites in the network. Are you sure you want to proceed?":["\u6ce8\u610f: \u9019\u4e9b\u4f48\u666f\u4e3b\u984c\u6216\u8a31\u76ee\u524d\u6b63\u7531\u591a\u7ad9\u7db2\u8def\u4e2d\u7684\u5176\u4ed6\u7db2\u7ad9\u4f7f\u7528\u3002\u78ba\u5b9a\u8981\u7e7c\u7e8c\u9032\u884c\u9019\u9805\u64cd\u4f5c\uff1f"],"Are you sure you want to delete the selected plugins and their data?":["\u78ba\u5b9a\u8981\u522a\u9664\u9078\u53d6\u7684\u5916\u639b\u53ca\u5176\u8cc7\u6599\uff1f"],"Are you sure you want to delete %s and its data?":["\u78ba\u5b9a\u8981\u522a\u9664 %s \u5916\u639b\u53ca\u5176\u8cc7\u6599\uff1f"],"Update canceled.":["\u66f4\u65b0\u5df2\u53d6\u6d88\u3002"],"plugin\u0004Update %s now":["\u7acb\u5373\u66f4\u65b0 %s"],"Updates may not complete if you navigate away from this page.":["\u4e00\u65e6\u73fe\u5728\u96e2\u958b\u9019\u500b\u9801\u9762\uff0c\u66f4\u65b0\u4fbf\u7121\u6cd5\u5b8c\u6210\u3002"],"Connection lost or the server is busy. Please try again later.":["\u8207\u4f3a\u670d\u5668\u5931\u53bb\u9023\u7dda\u6216\u4f3a\u670d\u5668\u5fd9\u788c\u3002\u8acb\u7a0d\u5f8c\u518d\u8a66\u3002"],"Deletion failed: %s":["\u522a\u9664\u5931\u6557: %s"],"theme\u0004Deleted!":["\u4f48\u666f\u4e3b\u984c\u5df2\u522a\u9664\uff01"],"theme\u0004%s installation failed":["%s \u5b89\u88dd\u5931\u6557"],"theme\u0004Network Activate %s":["\u65bc\u591a\u7ad9\u7db2\u8def\u4e2d\u555f\u7528 %s"],"theme\u0004%s installed!":["%s \u5df2\u5b8c\u6210\u5b89\u88dd\uff01"],"theme\u0004Installing %s...":["\u6b63\u5728\u5b89\u88dd %s..."],"theme\u0004Updated!":["\u5df2\u5b8c\u6210\u66f4\u65b0\uff01"],"Updating... please wait.":["\u6b63\u5728\u66f4\u65b0...\u8acb\u7a0d\u5019\u3002"],"plugin\u0004Deleted!":["\u5916\u639b\u5df2\u522a\u9664\uff01"],"Deleting...":["\u6b63\u5728\u522a\u9664..."],"plugin\u0004Install %s now":["\u7acb\u5373\u5b89\u88dd %s"],"Importer installed successfully. Run importer<\/a>":["\u532f\u5165\u7a0b\u5f0f\u5df2\u5b8c\u6210\u5b89\u88dd\u3002\u57f7\u884c\u532f\u5165\u7a0b\u5f0f<\/a>"],"plugin\u0004%s installation failed":["%s \u5b89\u88dd\u5931\u6557"],"Installation failed: %s":["\u5b89\u88dd\u5931\u6557: %s"],"Installation completed successfully.":["\u5b89\u88dd\u5df2\u6210\u529f\u5b8c\u6210\u3002"],"plugin\u0004Installed!":["\u5df2\u5b8c\u6210\u5b89\u88dd\uff01"],"plugin\u0004%s installed!":["%s \u5df2\u5b8c\u6210\u5b89\u88dd\uff01"],"Installing... please wait.":["\u6b63\u5728\u5b89\u88dd...\u8acb\u7a0d\u5019\u3002"],"plugin\u0004Installing %s...":["\u6b63\u5728\u5b89\u88dd %s..."],"Installing...":["\u6b63\u5728\u5b89\u88dd..."],"plugin\u0004%s update failed.":["%s \u66f4\u65b0\u5931\u6557\u3002"],"Update failed: %s":["\u66f4\u65b0\u5931\u6557: %s"],"Update completed successfully.":["\u66f4\u65b0\u5df2\u6210\u529f\u5b8c\u6210\u3002"],"plugin\u0004Updated!":["\u5df2\u5b8c\u6210\u66f4\u65b0\uff01"],"plugin\u0004%s updated!":["%s \u5df2\u5b8c\u6210\u66f4\u65b0\uff01"],"Updating...":["\u6b63\u5728\u66f4\u65b0..."],"plugin\u0004Updating %s...":["\u6b63\u5728\u66f4\u65b0 %s..."],"No plugins found. Try a different search.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u5916\u639b\uff0c\u8acb\u6539\u7528\u5176\u4ed6\u689d\u4ef6\u9032\u884c\u641c\u5c0b\u3002"],"Enable auto-updates":["\u555f\u7528\u81ea\u52d5\u66f4\u65b0"],"Disable auto-updates":["\u505c\u7528\u81ea\u52d5\u66f4\u65b0"],"No plugins are currently available.":["\u76ee\u524d\u6c92\u6709\u4efb\u4f55\u53ef\u4f9b\u4f7f\u7528\u7684\u5916\u639b\u3002"],"Auto-updates disabled":["\u81ea\u52d5\u66f4\u65b0\u5df2\u505c\u7528"],"Auto-updates enabled":["\u81ea\u52d5\u66f4\u65b0\u5df2\u555f\u7528"],"theme\u0004Activate":["\u555f\u7528"],"plugin\u0004Network Activate %s":["\u65bc\u591a\u7ad9\u7db2\u8def\u4e2d\u555f\u7528 %s"],"plugin\u0004Activate %s":["\u555f\u7528 %s"],"Run Importer":["\u57f7\u884c\u532f\u5165\u7a0b\u5f0f"],"Run %s":["\u57f7\u884c [%s]"],"%s update failed.":["%s \u500b\u66f4\u65b0\u5931\u6557\u3002"],"%s theme successfully updated.":["%s \u500b\u4f48\u666f\u4e3b\u984c\u5df2\u6210\u529f\u66f4\u65b0\u3002"],"%s plugin successfully updated.":["%s \u500b\u5916\u639b\u5df2\u6210\u529f\u66f4\u65b0\u3002"],"plugin\u0004Active":["\u5df2\u555f\u7528"],"Update failed.":["\u66f4\u65b0\u5931\u6557\u3002"],"theme\u0004Installed!":["\u5df2\u5b8c\u6210\u5b89\u88dd\uff01"],"Are you sure you want to delete %s?":["\u78ba\u5b9a\u8981\u522a\u9664 %s\uff1f"],"Network Enable":["\u65bc\u591a\u7ad9\u7db2\u8def\u4e2d\u555f\u7528"],"Update Now":["\u7acb\u5373\u66f4\u65b0"],"Installation failed.":["\u5b89\u88dd\u5931\u6557\u3002"],"You do not appear to have any plugins available at this time.":["\u76ee\u524d\u6c92\u6709\u4efb\u4f55\u53ef\u4f9b\u4f7f\u7528\u7684\u5916\u639b\u3002"],"%s update available":["\u5df2\u6709 %s \u9805\u66f4\u65b0\u53ef\u4f9b\u5b89\u88dd"],"theme\u0004Activate %s":["\u555f\u7528 %s"],"Live Preview":["\u5373\u6642\u9810\u89bd"],"An error has occurred. Please reload the page and try again.":["\u767c\u751f\u932f\u8aa4\u3002\u8acb\u91cd\u65b0\u8f09\u5165\u9801\u9762\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21\u3002"]}},"comment":{"reference":"wp-admin\/js\/updates.js"}} \ No newline at end of file diff --git a/languages/zh_TW-2c252afff0e8890ebb18cb9af5372ddc.json b/languages/zh_TW-2c252afff0e8890ebb18cb9af5372ddc.json new file mode 100644 index 0000000..096b48f --- /dev/null +++ b/languages/zh_TW-2c252afff0e8890ebb18cb9af5372ddc.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"paging\u0004
Page<\/div>%1$s
of %2$d<\/div>":["
\u7b2c %1$s \u9801<\/div>\uff0c
\u7e3d\u8a08 %2$d \u9801<\/div>"],"noun\u0004Upload":["\u4e0a\u50b3"],"variation label\u0004%1$s (%2$s)":["%1$s (%2$s)"],"There was an error updating the font family. %s":["\u66f4\u65b0\u5b57\u578b\u7cfb\u5217\u6642\u767c\u751f\u932f\u8aa4\u3002%s"],"font source\u0004Custom":["\u81ea\u8a02"],"font source\u0004Theme":["\u4f48\u666f\u4e3b\u984c"],"Font family updated successfully.":["\u5b57\u578b\u7cfb\u5217\u5df2\u6210\u529f\u66f4\u65b0\u3002"],"Lowercase letter A\u0004a":["a"],"Uppercase letter A\u0004A":["A"],"Font library\u0004Library":["\u5b57\u578b\u5eab"],"There was an error installing fonts.":["\u5b89\u88dd\u5b57\u578b\u6642\u767c\u751f\u932f\u8aa4\u3002"],"Current page":["\u76ee\u524d\u9801\u9762"],"Are you sure you want to delete \"%s\" font and all its variants and assets?":["\u78ba\u5b9a\u8981\u522a\u9664 %s \u53ca\u5176\u5168\u90e8\u5b57\u578b\u8b8a\u9ad4\u53ca\u8cc7\u6e90\uff1f"],"No fonts installed.":["\u6c92\u6709\u5b89\u88dd\u4efb\u4f55\u5b57\u578b\u3002"],"Error installing the fonts, could not be downloaded.":["\u5b89\u88dd\u5b57\u578b\u6642\u767c\u751f\u932f\u8aa4\u3002\u7121\u6cd5\u4e0b\u8f09\u5b57\u578b\u3002"],"No fonts found to install.":["\u6c92\u6709\u53ef\u4f9b\u5b89\u88dd\u7684\u5b57\u578b\u3002"],"font categories\u0004All":["\u5168\u90e8\u5b57\u578b\u5206\u985e"],"Revoke access to Google Fonts":["\u64a4\u92b7\u5b58\u53d6 Google Fonts \u7db2\u9801\u5b57\u578b"],"Connect to Google Fonts":["\u9023\u7dda\u81f3 Google Fonts \u7db2\u9801\u5b57\u578b"],"Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2.":["\u4e0a\u50b3\u7684\u5b57\u578b\u6703\u986f\u793a\u5728\u9019\u500b\u7db2\u7ad9\u7684 [\u5b57\u578b\u5eab] \u4e2d\uff0c\u4e26\u53ef\u5728\u76ee\u524d\u4f7f\u7528\u7684\u4f48\u666f\u4e3b\u984c\u4e2d\u4f7f\u7528\u3002\u652f\u63f4\u7684\u683c\u5f0f: .ttf\u3001.otf\u3001.woff \u53ca .woff2\u3002"],"There was an error uninstalling the font family.":["\u89e3\u9664\u5b89\u88dd\u5b57\u578b\u7cfb\u5217\u6642\u767c\u751f\u932f\u8aa4\u3002"],"%d variant":["%d \u500b\u5b57\u578b\u8b8a\u9ad4"],"Fonts":["\u5b57\u578b"],"Install Fonts":["\u5b89\u88dd\u5b57\u578b"],"Font name\u2026":["\u5b57\u578b\u540d\u7a31..."],"Select font variants to install.":["\u9078\u53d6\u8981\u5b89\u88dd\u7684\u5b57\u578b\u8b8a\u9ad4\u3002"],"Allow access to Google Fonts":["\u5141\u8a31\u5b58\u53d6 Google Fonts \u7db2\u9801\u5b57\u578b"],"To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.":["\u5982\u9700\u5b89\u88dd\u4f86\u6e90\u70ba Google \u7684\u5b57\u578b\uff0c\u5fc5\u9808\u6388\u4e88\u76f4\u63a5\u9023\u7dda\u81f3 Google \u4f3a\u670d\u5668\u7684\u6b0a\u9650\u3002\u8981\u5b89\u88dd\u7684\u5b57\u578b\u6703\u5f9e Google \u8655\u4e0b\u8f09\u4e26\u5132\u5b58\u5728\u9019\u500b\u7db2\u7ad9\uff0c\u5b8c\u6210\u5f8c\u9019\u500b\u7db2\u7ad9\u4fbf\u6703\u4f7f\u7528\u4f3a\u670d\u5668\u672c\u6a5f\u4ee3\u7ba1\u5b57\u578b\u3002"],"Choose font variants. Keep in mind that too many variants could make your site slower.":["\u8acb\u9078\u53d6\u5b57\u578b\u8b8a\u9ad4\u3002\u8acb\u6ce8\u610f\uff0c\u4f7f\u7528\u904e\u591a\u7684\u5b57\u578b\u8b8a\u9ad4\u6703\u8b93\u9019\u500b\u7db2\u7ad9\u8b8a\u6162\u3002"],"font style\u0004Normal":["\u6a19\u6e96"],"font weight\u0004Extra-bold":["\u7279\u7c97\u9ad4"],"font weight\u0004Semi-bold":["\u534a\u7c97\u9ad4"],"font weight\u0004Normal":["\u6a19\u6e96"],"font weight\u0004Extra-light":["\u7279\u7d30\u9ad4"],"Upload font":["\u4e0a\u50b3\u5b57\u578b"],"Fonts were installed successfully.":["\u5b57\u578b\u5df2\u6210\u529f\u5b89\u88dd\u3002"],"Library":["\u5a92\u9ad4\u5eab"],"Font family uninstalled successfully.":["\u5b57\u578b\u7cfb\u5217\u5df2\u6210\u529f\u89e3\u9664\u5b89\u88dd\u3002"],"You can alternatively upload files directly on the Upload tab.":["\u7db2\u7ad9\u7ba1\u7406\u54e1\u4e5f\u53ef\u4ee5\u76f4\u63a5\u5728 [\u4e0a\u50b3] \u5206\u9801\u4e2d\u76f4\u63a5\u4e0a\u50b3\u6a94\u6848\u3002"],"No fonts found. Try with a different search term.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u5b57\u578b\u3002\u8acb\u6539\u7528\u4e0d\u540c\u7684\u641c\u5c0b\u95dc\u9375\u5b57\u641c\u5c0b\u3002"],"%1$d\/%2$d variants active":["\u5df2\u555f\u7528 %1$d \u500b\u5b57\u578b\u8b8a\u9ad4\uff0c\u7e3d\u8a08 %2$d \u500b\u5b57\u578b\u8b8a\u9ad4"],"Manage the fonts and typography used on captions.":["\u7ba1\u7406\u5a92\u9ad4\u8aaa\u660e\u6587\u5b57\u4f7f\u7528\u7684\u5b57\u578b\u53ca\u6392\u7248\u6a23\u5f0f\u3002"],"Manage the fonts and typography used on buttons.":["\u7ba1\u7406\u6309\u9215\u4f7f\u7528\u7684\u5b57\u578b\u53ca\u6392\u7248\u6a23\u5f0f\u3002"],"Manage the fonts and typography used on headings.":["\u7ba1\u7406\u6a19\u984c\u4f7f\u7528\u7684\u5b57\u578b\u53ca\u6392\u7248\u6a23\u5f0f\u3002"],"font weight\u0004Black":["\u8d85\u7c97\u9ad4"],"font weight\u0004Bold":["\u7c97\u9ad4"],"font weight\u0004Medium":["\u4e2d\u578b"],"font weight\u0004Light":["\u7d30\u9ad4"],"font weight\u0004Thin":["\u8d85\u7d30\u9ad4"],"font style\u0004Italic":["\u659c\u9ad4"],"Rename":["\u91cd\u65b0\u547d\u540d"],"Manage the fonts and typography used on the links.":["\u7ba1\u7406\u9023\u7d50\u4f7f\u7528\u7684\u5b57\u578b\u53ca\u6392\u7248\u6a23\u5f0f\u3002"],"Manage the fonts used on the site.":["\u7ba1\u7406\u7db2\u7ad9\u4f7f\u7528\u7684\u5b57\u578b\u3002"],"Sorry, you are not allowed to upload this file type.":["\u5f88\u62b1\u6b49\uff0c\u76ee\u524d\u7684\u767b\u5165\u8eab\u5206\u6c92\u6709\u4e0a\u50b3\u9019\u500b\u6a94\u6848\u985e\u578b\u7684\u6b0a\u9650\u3002"],"Captions":["\u7121\u969c\u7919\u5b57\u5e55"],"Buttons":["\u6309\u9215"],"Headings":["\u6a19\u984c"],"%d result found.":["\u627e\u5230 %d \u9805\u641c\u5c0b\u7d50\u679c\u3002"],"Category":["\u5206\u985e"],"Reset":["\u91cd\u8a2d"],"No blocks found.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u5340\u584a\u3002"],"Back":["\u8fd4\u56de"],"Upload":["\u4e0a\u50b3"],"Previous page":["\u4e0a\u4e00\u9801"],"Next page":["\u4e0b\u4e00\u9801"],"Select all":["\u5168\u90e8\u9078\u53d6"],"Text":["\u6587\u5b57"],"Default":["\u9810\u8a2d"],"Install":["\u5b89\u88dd"],"Links":["\u9023\u7d50"],"Search":["\u641c\u5c0b"],"Actions":["\u53ef\u7528\u64cd\u4f5c"],"Update":["\u66f4\u65b0"],"Cancel":["\u53d6\u6d88"],"Delete":["\u522a\u9664"]}},"comment":{"reference":"wp-includes\/build\/routes\/font-list\/content.js"}} \ No newline at end of file diff --git a/languages/zh_TW-2c5d274ea625dd91556554ad82901529.json b/languages/zh_TW-2c5d274ea625dd91556554ad82901529.json new file mode 100644 index 0000000..c6bf3d2 --- /dev/null +++ b/languages/zh_TW-2c5d274ea625dd91556554ad82901529.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Annotation":["\u8a3b\u89e3"]}},"comment":{"reference":"wp-includes\/js\/dist\/annotations.js"}} \ No newline at end of file diff --git a/languages/zh_TW-320f4ad9792aaa6dedb1e71cbdf85d57.json b/languages/zh_TW-320f4ad9792aaa6dedb1e71cbdf85d57.json new file mode 100644 index 0000000..bb852bd --- /dev/null +++ b/languages/zh_TW-320f4ad9792aaa6dedb1e71cbdf85d57.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Notifications":["\u901a\u77e5"]}},"comment":{"reference":"wp-includes\/js\/dist\/a11y.js"}} \ No newline at end of file diff --git a/languages/zh_TW-3a4b349b56f7cf0cb4f3ff011262cd32.json b/languages/zh_TW-3a4b349b56f7cf0cb4f3ff011262cd32.json new file mode 100644 index 0000000..a1991b8 --- /dev/null +++ b/languages/zh_TW-3a4b349b56f7cf0cb4f3ff011262cd32.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Workflow suggestions":["\u5de5\u4f5c\u6d41\u7a0b\u5efa\u8b70"],"No results found.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u641c\u5c0b\u7d50\u679c\u3002"]}},"comment":{"reference":"wp-includes\/js\/dist\/script-modules\/workflow\/index.js"}} \ No newline at end of file diff --git a/languages/zh_TW-440127dd25bde48a531ded36f33e927b.json b/languages/zh_TW-440127dd25bde48a531ded36f33e927b.json new file mode 100644 index 0000000..d67590f --- /dev/null +++ b/languages/zh_TW-440127dd25bde48a531ded36f33e927b.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Add non breaking space.":["\u65b0\u589e\u4e0d\u5206\u884c\u7a7a\u683c"],"https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/":["https:\/\/wordpress.org\/documentation\/article\/wordpress-block-editor\/"],"Convert the current paragraph or heading to a heading of level 1 to 6.":["\u5c07\u76ee\u524d\u7684\u6bb5\u843d\u6216\u6a19\u984c\u8f49\u63db\u6210\u968e\u5c64 1 \u81f3 6 \u7684\u6a19\u984c"],"Convert the current heading to a paragraph.":["\u5c07\u76ee\u524d\u6a19\u984c\u8f49\u63db\u6210\u6bb5\u843d"],"Make the selected text inline code.":["\u5c07\u9078\u53d6\u5167\u5bb9\u8b8a\u66f4\u70ba\u5167\u5d4c\u7a0b\u5f0f\u78bc"],"Strikethrough the selected text.":["\u70ba\u9078\u53d6\u5167\u5bb9\u52a0\u4e0a\u522a\u9664\u7dda"],"Insert a link to a post or page.":["\u5c07\u9023\u7d50\u63d2\u5165\u81f3\u6587\u7ae0\u6216\u9801\u9762"],"https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/":["https:\/\/wordpress.org\/documentation\/article\/block-based-widgets-editor\/"],"New to the block editor?":["\u5982\u679c\u662f\u5340\u584a\u7de8\u8f2f\u5668\u7684\u65b0\u4f7f\u7528\u8005\uff0c"],"Get the Classic Widgets plugin.":["\u8acb\u53d6\u5f97 Classic Widgets (\u50b3\u7d71\u5c0f\u5de5\u5177) \u5916\u639b\u3002"],"https:\/\/wordpress.org\/plugins\/classic-widgets\/":["https:\/\/tw.wordpress.org\/plugins\/classic-widgets\/"],"Want to stick with the old widgets?":["\u5982\u679c\u60f3\u7e7c\u7e8c\u4f7f\u7528\u820a\u7248\u5c0f\u5de5\u5177\uff0c"],"You can now add any block to your site\u2019s widget areas. Don\u2019t worry, all of your favorite widgets still work flawlessly.":["\u4f7f\u7528\u8005\u73fe\u5728\u53ef\u4ee5\u5c07\u4efb\u4f55\u5340\u584a\u65b0\u589e\u81f3\u7db2\u7ad9\u7684\u5c0f\u5de5\u5177\u5340\u57df\u3002\u8acb\u4e0d\u5fc5\u64d4\u5fc3\uff0c\u4e4b\u524d\u6163\u7528\u7684\u5c0f\u5de5\u5177\u4ecd\u53ef\u6b63\u5e38\u4f7f\u7528\u3002"],"Your theme provides different \u201cblock\u201d areas for you to add and edit content.\u00a0Try adding a search bar, social icons, or other types of blocks here and see how they\u2019ll look on your site.":["\u9019\u500b\u7db2\u7ad9\u76ee\u524d\u4f7f\u7528\u7684\u4f48\u666f\u4e3b\u984c\u63d0\u4f9b\u591a\u500b\u4e0d\u540c\u5340\u584a\u5340\u57df\uff0c\u4ee5\u4f9b\u4f7f\u7528\u8005\u65b0\u589e\u5373\u7de8\u8f2f\u5167\u5bb9\u3002\u8acb\u8a66\u8457\u5728\u9019\u88e1\u65b0\u589e\u641c\u5c0b\u5217\u3001\u793e\u4ea4\u7db2\u8def\u670d\u52d9\u5716\u793a\u6216\u5176\u4ed6\u985e\u578b\u7684\u5340\u584a\uff0c\u4e26\u770b\u770b\u9019\u4e9b\u5340\u584a\u5728\u9019\u500b\u7db2\u7ad9\u6240\u5448\u73fe\u7684\u5916\u89c0\u3002"],"Welcome to block Widgets":["\u6b61\u8fce\u4f7f\u7528\u5340\u584a\u5c0f\u5de5\u5177"],"Contain text cursor inside block deactivated":["\u5728\u672a\u4f5c\u7528\u7684\u5340\u584a\u5305\u542b\u6587\u5b57\u6e38\u6a19"],"Contain text cursor inside block activated":["\u5728\u4f5c\u7528\u4e2d\u7684\u5340\u584a\u5305\u542b\u6587\u5b57\u6e38\u6a19"],"Close inserter":["\u95dc\u9589\u63d2\u5165\u5668"],"Aids screen readers by stopping text caret from leaving blocks.":["\u85c9\u7531\u9632\u6b62\u6587\u5b57\u63d2\u5165\u9ede\u96e2\u958b\u5340\u584a\u4ee5\u8f14\u52a9\u87a2\u5e55\u95b1\u8b80\u5668\u3002"],"Preferences":["\u504f\u597d\u8a2d\u5b9a"],"Show more settings":["\u986f\u793a\u66f4\u591a\u8a2d\u5b9a"],"Contain text cursor inside block":["\u5728\u5340\u584a\u4e2d\u5305\u542b\u6587\u5b57\u6e38\u6a19"],"Here's a detailed guide.":["\u8acb\u53c3\u95b1\u9019\u4efd\u8a73\u76e1\u7684\u4f7f\u7528\u6307\u5357\u3002"],"Welcome Guide":["\u6b61\u8fce\u6307\u5357"],"Keyboard shortcuts":["\u9375\u76e4\u5feb\u901f\u9375"],"Generic label for block inserter button\u0004Add block":["\u65b0\u589e\u5340\u584a"],"Display these keyboard shortcuts.":["\u986f\u793a\u9375\u76e4\u5feb\u901f\u9375\u6e05\u55ae"],"Add a block":["\u65b0\u589e\u5340\u584a"],"Top toolbar deactivated":["\u9802\u7aef\u5de5\u5177\u5217\u5df2\u505c\u7528\u3002"],"Top toolbar activated":["\u9802\u7aef\u5de5\u5177\u5217\u5df2\u555f\u7528\u3002"],"Top toolbar":["\u9802\u7aef\u5de5\u5177\u5217"],"Got it":["\u5b8c\u5168\u4e86\u89e3"],"Block Settings":["\u5340\u584a\u8a2d\u5b9a"],"Remove a link.":["\u79fb\u9664\u9023\u7d50"],"Convert the selected text into a link.":["\u5c07\u9078\u53d6\u5167\u5bb9\u8f49\u63db\u6210\u9023\u7d50"],"Underline the selected text.":["\u70ba\u9078\u53d6\u5167\u5bb9\u52a0\u4e0a\u5e95\u7dda"],"Make the selected text italic.":["\u5c07\u9078\u53d6\u5167\u5bb9\u8b8a\u66f4\u70ba\u659c\u9ad4"],"Make the selected text bold.":["\u5c07\u9078\u53d6\u5167\u5bb9\u8b8a\u66f4\u70ba\u7c97\u9ad4"],"Text formatting":["\u5167\u5bb9\u683c\u5f0f\u5316"],"Forward-slash":["\u6b63\u659c\u7dda"],"Change the block type after adding a new paragraph.":["\u65b0\u589e\u6bb5\u843d\u5f8c\uff0c\u85c9\u4ee5\u8b8a\u66f4\u5340\u584a\u985e\u578b"],"Block shortcuts":["\u5340\u584a\u5feb\u901f\u9375"],"Selection shortcuts":["\u5167\u5bb9\u9078\u53d6\u5feb\u901f\u9375"],"Redo your last undo.":["\u53d6\u6d88\u5fa9\u539f\u8b8a\u66f4"],"Undo your last changes.":["\u5fa9\u539f\u8b8a\u66f4"],"Save your changes.":["\u5132\u5b58\u8b8a\u66f4"],"Global shortcuts":["\u5168\u57df\u5feb\u901f\u9375"],"Access all block and document tools in a single place":["\u53ef\u5728\u540c\u4e00\u4f4d\u7f6e\u4f7f\u7528\u5168\u90e8\u5340\u584a\u53ca\u5167\u5bb9\u5de5\u5177"],"noun\u0004View":["\u6aa2\u8996"],"Options":["\u8a2d\u5b9a"],"Document tools":["\u5167\u5bb9\u5de5\u5177"],"The editor has encountered an unexpected error.":["\u7de8\u8f2f\u5668\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4\u3002"],"Copy Error":["\u8907\u88fd\u932f\u8aa4\u8a0a\u606f"],"(opens in a new tab)":["(\u5728\u65b0\u5206\u9801\u4e2d\u958b\u555f)"],"Customizing":["\u81ea\u8a02\u9805\u76ee"],"Tools":["\u5de5\u5177"],"Widgets":["\u5c0f\u5de5\u5177"],"Help":["\u4f7f\u7528\u8aaa\u660e"],"Redo":["\u53d6\u6d88\u5fa9\u539f"],"Undo":["\u5fa9\u539f"]}},"comment":{"reference":"wp-includes\/js\/dist\/customize-widgets.js"}} \ No newline at end of file diff --git a/languages/zh_TW-49c6d4acf36cf3aca9f0b2a77617304f.json b/languages/zh_TW-49c6d4acf36cf3aca9f0b2a77617304f.json new file mode 100644 index 0000000..311a9cd --- /dev/null +++ b/languages/zh_TW-49c6d4acf36cf3aca9f0b2a77617304f.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Custom Styles":["\u81ea\u8a02\u6a23\u5f0f"],"Global Styles":["\u5168\u57df\u6a23\u5f0f"],"Widget types":["\u5c0f\u5de5\u5177\u985e\u578b"],"Menu Item":["\u9078\u55ae\u9805\u76ee"],"Comment":["\u7559\u8a00"],"Widget areas":["\u5c0f\u5de5\u5177\u5340\u57df"],"Site":["\u7db2\u7ad9"],"Post Type":["\u5167\u5bb9\u985e\u578b"],"Taxonomy":["\u5206\u985e\u6cd5"],"Menu Location":["\u9078\u55ae\u4f4d\u7f6e"],"Status":["\u72c0\u614b"],"Menu":["\u9078\u55ae"],"User":["\u4f7f\u7528\u8005"],"Base":["\u8d77\u59cb\u4f4d\u7f6e"],"Widgets":["\u5c0f\u5de5\u5177"],"Themes":["\u4f48\u666f\u4e3b\u984c"],"(no title)":["(\u7121\u6a19\u984c)"],"Media":["\u5a92\u9ad4"],"Plugins":["\u5916\u639b"]}},"comment":{"reference":"wp-includes\/js\/dist\/core-data.js"}} \ No newline at end of file diff --git a/languages/zh_TW-4a38fe1c0c45989e44682ba6109d9f46.json b/languages/zh_TW-4a38fe1c0c45989e44682ba6109d9f46.json new file mode 100644 index 0000000..2e72d24 --- /dev/null +++ b/languages/zh_TW-4a38fe1c0c45989e44682ba6109d9f46.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Running additional tests... please wait.":["\u6b63\u5728\u57f7\u884c\u5176\u4ed6\u6e2c\u8a66\uff0c\u8acb\u7a0d\u5019..."],"All site health tests have finished running. There are items that should be addressed.":["\u7db2\u7ad9\u72c0\u614b\u6e2c\u8a66\u5df2\u5168\u90e8\u5b8c\u6210\u3002\u9019\u500b\u7db2\u7ad9\u6709\u6578\u500b\u9700\u8981\u89e3\u6c7a\u7684\u554f\u984c\u3002"],"All site health tests have finished running. Your site is looking good.":["\u7db2\u7ad9\u72c0\u614b\u6e2c\u8a66\u5df2\u5168\u90e8\u5b8c\u6210\u3002\u9019\u500b\u7db2\u7ad9\u7684\u72c0\u614b\u826f\u597d\u3002"],"Unavailable":["\u7121\u6cd5\u4f7f\u7528"],"No details available":["\u6c92\u6709\u8a73\u7d30\u8cc7\u6599"],"A test is unavailable":["\u6e2c\u8a66\u529f\u80fd\u7121\u6cd5\u4f7f\u7528"],"Should be improved":["\u9700\u8981\u6539\u9032"],"Good":["\u72c0\u6cc1\u826f\u597d"],"%s critical issue":["%s \u500b\u91cd\u5927\u554f\u984c"],"%s item with no issues detected":["%s \u500b\u672a\u5075\u6e2c\u5230\u554f\u984c\u7684\u9805\u76ee"],"%s recommended improvement":["%s \u500b\u5efa\u8b70\u6539\u9032\u9805\u76ee"],"Site information has been copied to your clipboard.":["\u7db2\u7ad9\u8cc7\u8a0a\u5df2\u8907\u88fd\u81f3\u526a\u8cbc\u7c3f\u3002"]}},"comment":{"reference":"wp-admin\/js\/site-health.js"}} \ No newline at end of file diff --git a/languages/zh_TW-4bfa11da57ff2600004bb500368247f4.json b/languages/zh_TW-4bfa11da57ff2600004bb500368247f4.json new file mode 100644 index 0000000..48563a6 --- /dev/null +++ b/languages/zh_TW-4bfa11da57ff2600004bb500368247f4.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Use as featured image":["\u8a2d\u5b9a\u70ba\u7cbe\u9078\u5716\u7247"],"Saving\u2026":["\u6b63\u5728\u5132\u5b58..."],"Could not set that as the thumbnail image. Try a different attachment.":["\u7121\u6cd5\u5c07\u6307\u5b9a\u9805\u76ee\u8a2d\u5b9a\u70ba\u7e2e\u5716\u3002\u8acb\u6539\u7528\u4e0d\u540c\u7684\u9644\u4ef6\u3002"],"Done":["\u5b8c\u6210"]}},"comment":{"reference":"wp-admin\/js\/set-post-thumbnail.js"}} \ No newline at end of file diff --git a/languages/zh_TW-50278328b502f4eb3f2b8b7ab49324a1.json b/languages/zh_TW-50278328b502f4eb3f2b8b7ab49324a1.json new file mode 100644 index 0000000..bad0ace --- /dev/null +++ b/languages/zh_TW-50278328b502f4eb3f2b8b7ab49324a1.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Screen Options updated.":["[\u986f\u793a\u9805\u76ee\u8a2d\u5b9a] \u5df2\u66f4\u65b0\u3002"],"Drag boxes here":["\u5c07\u5340\u584a\u62d6\u653e\u81f3\u9019\u88e1"],"Add boxes from the Screen Options menu":["\u5f9e [\u986f\u793a\u9805\u76ee\u8a2d\u5b9a] \u4e2d\u65b0\u589e\u5340\u584a"],"The boxes order has been saved.":["\u5340\u584a\u9806\u5e8f\u5df2\u5132\u5b58\u3002"],"The box is on the last position":["\u4e2d\u7e7c\u8cc7\u6599\u5340\u584a\u5df2\u4f4d\u65bc\u5c3e\u7aef\u4f4d\u7f6e"],"The box is on the first position":["\u4e2d\u7e7c\u8cc7\u6599\u5340\u584a\u5df2\u4f4d\u65bc\u9802\u7aef\u4f4d\u7f6e"]}},"comment":{"reference":"wp-admin\/js\/postbox.js"}} \ No newline at end of file diff --git a/languages/zh_TW-5251f7623766a714c8207c7edb938628.json b/languages/zh_TW-5251f7623766a714c8207c7edb938628.json new file mode 100644 index 0000000..6a638d9 --- /dev/null +++ b/languages/zh_TW-5251f7623766a714c8207c7edb938628.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Widget has been added to the selected sidebar":["\u5c0f\u5de5\u5177\u5df2\u65b0\u589e\u81f3\u9078\u53d6\u7684\u8cc7\u8a0a\u6b04"],"Saved":["\u5df2\u5132\u5b58"],"The changes you made will be lost if you navigate away from this page.":["\u5982\u679c\u96e2\u958b\u9019\u500b\u9801\u9762\uff0c\u4fbf\u6703\u5931\u53bb\u4e4b\u524d\u6240\u505a\u7684\u5168\u90e8\u8b8a\u66f4\u3002"],"Save":["\u5132\u5b58"]}},"comment":{"reference":"wp-admin\/js\/widgets.js"}} \ No newline at end of file diff --git a/languages/zh_TW-529362903a5a05b34b06b5e793fb4cf8.json b/languages/zh_TW-529362903a5a05b34b06b5e793fb4cf8.json new file mode 100644 index 0000000..1751858 --- /dev/null +++ b/languages/zh_TW-529362903a5a05b34b06b5e793fb4cf8.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"All application passwords revoked.":["\u5168\u90e8\u61c9\u7528\u7a0b\u5f0f\u5bc6\u78bc\u5df2\u64a4\u92b7\u3002"],"Are you sure you want to revoke all passwords? This action cannot be undone.":["\u78ba\u5b9a\u8981\u64a4\u92b7\u5168\u90e8\u5bc6\u78bc\uff1f\u9019\u9805\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002"],"Application password revoked.":["\u61c9\u7528\u7a0b\u5f0f\u5bc6\u78bc\u5df2\u64a4\u92b7\u3002"],"Are you sure you want to revoke this password? This action cannot be undone.":["\u78ba\u5b9a\u8981\u64a4\u92b7\u9019\u500b\u5bc6\u78bc\uff1f\u9019\u9805\u64cd\u4f5c\u7121\u6cd5\u5fa9\u539f\u3002"],"Dismiss this notice.":["\u95dc\u9589\u9019\u9805\u901a\u77e5"]}},"comment":{"reference":"wp-admin\/js\/application-passwords.js"}} \ No newline at end of file diff --git a/languages/zh_TW-569e85ef168299eb8c8f24d8ef8c8a78.json b/languages/zh_TW-569e85ef168299eb8c8f24d8ef8c8a78.json new file mode 100644 index 0000000..c687f1d --- /dev/null +++ b/languages/zh_TW-569e85ef168299eb8c8f24d8ef8c8a78.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"URL Slug":["\u7db2\u5740\u4ee3\u7a31"],"Permalink saved":["\u6c38\u4e45\u9023\u7d50\u5df2\u5132\u5b58"],"Published on:":["\u767c\u4f48\u6642\u9593:"],"Publish on:":["\u767c\u4f48\u6642\u9593:"],"Schedule for:":["\u9810\u5148\u6392\u7a0b\u767c\u4f48\u6642\u9593:"],"Saving Draft\u2026":["\u6b63\u5728\u5132\u5b58\u8349\u7a3f..."],"No more comments found.":["\u627e\u4e0d\u5230\u66f4\u591a\u7b26\u5408\u689d\u4ef6\u7684\u7559\u8a00\u3002"],"Show more comments":["\u986f\u793a\u66f4\u591a\u7559\u8a00"],"post action\/button label\u0004Schedule":["\u6392\u7a0b"],"%1$s %2$s, %3$s at %4$s:%5$s":["%3$s \u5e74 %1$s %2$s \u65e5 %4$s:%5$s"],"Public, Sticky":["\u516c\u958b\u3001\u7f6e\u9802"],"Privately Published":["\u5df2\u79c1\u5bc6\u767c\u4f48"],"Save as Pending":["\u5132\u5b58\u70ba\u5f85\u5be9\u95b1\u5167\u5bb9"],"Password Protected":["\u53d7\u5bc6\u78bc\u4fdd\u8b77"],"The file URL has been copied to your clipboard":["\u6a94\u6848\u7db2\u5740\u5df2\u8907\u88fd\u81f3\u526a\u8cbc\u7c3f\u3002"],"Could not set that as the thumbnail image. Try a different attachment.":["\u7121\u6cd5\u5c07\u6307\u5b9a\u9805\u76ee\u8a2d\u5b9a\u70ba\u7e2e\u5716\u3002\u8acb\u6539\u7528\u4e0d\u540c\u7684\u9644\u4ef6\u3002"],"The changes you made will be lost if you navigate away from this page.":["\u5982\u679c\u96e2\u958b\u9019\u500b\u9801\u9762\uff0c\u4fbf\u6703\u5931\u53bb\u4e4b\u524d\u6240\u505a\u7684\u5168\u90e8\u8b8a\u66f4\u3002"],"Public":["\u516c\u958b"],"Private":["\u79c1\u5bc6"],"OK":["\u78ba\u5b9a"],"Update":["\u66f4\u65b0"],"Save Draft":["\u5132\u5b58\u8349\u7a3f"],"Cancel":["\u53d6\u6d88"],"Publish":["\u767c\u4f48"],"Published":["\u5df2\u767c\u4f48"]}},"comment":{"reference":"wp-admin\/js\/post.js"}} \ No newline at end of file diff --git a/languages/zh_TW-6025add6bde16aaeb12787d250f9b414.json b/languages/zh_TW-6025add6bde16aaeb12787d250f9b414.json new file mode 100644 index 0000000..657c100 --- /dev/null +++ b/languages/zh_TW-6025add6bde16aaeb12787d250f9b414.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Are you sure you want to do this?\nThe comment changes you made will be lost.":["\u78ba\u5b9a\u8981\u9032\u884c\u9019\u9805\u64cd\u4f5c\uff1f\n\u7e7c\u7e8c\u64cd\u4f5c\u6703\u5931\u53bb\u5c0d\u7559\u8a00\u9032\u884c\u7684\u8b8a\u66f4\u3002"],"Are you sure you want to edit this comment?\nThe changes you made will be lost.":["\u78ba\u5b9a\u8981\u7de8\u8f2f\u9019\u5247\u7559\u8a00\uff1f\n\u7e7c\u7e8c\u64cd\u4f5c\u6703\u5931\u53bb\u5df2\u5b8c\u6210\u7684\u8b8a\u66f4\u3002"],"Approve and Reply":["\u6838\u51c6\u4e26\u56de\u8986"],"Comments (%s)":["\u7559\u8a00 (%s)"],"Comments":["\u7559\u8a00"]}},"comment":{"reference":"wp-admin\/js\/edit-comments.js"}} \ No newline at end of file diff --git a/languages/zh_TW-60d06fac6f98e8e8f0ec5a945738b660.json b/languages/zh_TW-60d06fac6f98e8e8f0ec5a945738b660.json new file mode 100644 index 0000000..21bfa9a --- /dev/null +++ b/languages/zh_TW-60d06fac6f98e8e8f0ec5a945738b660.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Preference activated - %s":["\u504f\u597d\u8a2d\u5b9a\u5df2\u555f\u7528 - %s"],"Preference deactivated - %s":["\u504f\u597d\u8a2d\u5b9a\u5df2\u505c\u7528 - %s"],"Preferences":["\u504f\u597d\u8a2d\u5b9a"],"Back":["\u8fd4\u56de"]}},"comment":{"reference":"wp-includes\/js\/dist\/preferences.js"}} \ No newline at end of file diff --git a/languages/zh_TW-68f2cec7514bf8563c723a4d675fcfe6.json b/languages/zh_TW-68f2cec7514bf8563c723a4d675fcfe6.json new file mode 100644 index 0000000..6d7bb3b --- /dev/null +++ b/languages/zh_TW-68f2cec7514bf8563c723a4d675fcfe6.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Math":["\u6578\u5b78"],"CSS classes":["CSS \u985e\u5225"],"e.g., x^2, \\frac{a}{b}":["\u7bc4\u4f8b: x^2, \\frac{a}{b}"],"LaTeX math syntax":["LaTeX \u6578\u5b78\u8a9e\u6cd5"],"Non breaking space":["\u4e0d\u5206\u884c\u7a7a\u683c"],"https:\/\/www.w3.org\/WAI\/tutorials\/images\/decision-tree\/":["https:\/\/www.w3.org\/WAI\/tutorials\/images\/decision-tree\/"],"Mark as nofollow":["\u6a19\u793a\u70ba nofollow"],"Text direction":["\u6587\u5b57\u65b9\u5411"],"A valid language attribute, like \"en\" or \"fr\".":["\u8acb\u4f7f\u7528\u6709\u6548\u7684 lang \u5c6c\u6027\uff0c\u4f8b\u5982 en \u6216 zh-TW\u3002"],"Leave empty if decorative.":["\u5982\u679c\u5716\u7247\u50c5\u70ba\u88dd\u98fe\u76ee\u7684\u3001\u8207\u5be6\u969b\u5167\u5bb9\u7121\u751a\u76f8\u95dc\u6642\uff0c\u9019\u500b\u6b04\u4f4d\u53ef\u7559\u7a7a\u3002"],"Clear Unknown Formatting":["\u6e05\u9664\u672a\u77e5\u7684\u683c\u5f0f"],"Create page: %s<\/mark>":["\u65b0\u589e\u9801\u9762: %s<\/mark>"],"Highlight":["\u9192\u76ee\u63d0\u793a"],"Keyboard input":["\u9375\u76e4\u8f38\u5165"],"Inline code":["\u5167\u5d4c\u7a0b\u5f0f\u78bc"],"Describe the purpose of the image.":["\u8acb\u8f38\u5165\u5716\u7247\u8aaa\u660e\u6587\u5b57"],"Separate multiple classes with spaces.":["\u8acb\u4f7f\u7528\u7a7a\u683c\u5206\u9694\u591a\u500b\u985e\u5225\u3002"],"Link edited.":["\u9023\u7d50\u5df2\u7de8\u8f2f\u3002"],"Link removed.":["\u9023\u7d50\u5df2\u79fb\u9664\u3002"],"Inline image":["\u5167\u5d4c\u5716\u7247"],"media":["\u5a92\u9ad4"],"photo":["\u76f8\u7247"],"Additional CSS class(es)":["\u9644\u52a0\u7684 CSS \u985e\u5225"],"Replace image":["\u66f4\u63db\u5716\u7247"],"Warning: the link has been inserted but may have errors. Please test it.":["\u8b66\u544a: \u9023\u7d50\u5df2\u63d2\u5165\u4f46\u542b\u6709\u932f\u8aa4\u3002\u8acb\u70ba\u9019\u500b\u9023\u7d50\u9032\u884c\u6e2c\u8a66\u3002"],"Link inserted.":["\u9023\u7d50\u5df2\u63d2\u5165\u3002"],"Right to left":["\u5f9e\u53f3\u81f3\u5de6"],"Left to right":["\u5f9e\u5de6\u81f3\u53f3"],"Link":["\u9023\u7d50"],"Background":["\u80cc\u666f"],"Superscript":["\u4e0a\u6a19"],"Subscript":["\u4e0b\u6a19"],"Strikethrough":["\u522a\u9664\u7dda"],"Underline":["\u5e95\u7dda"],"Italic":["\u659c\u9ad4"],"Bold":["\u7c97\u9ad4"],"Language":["\u8a9e\u8a00"],"Text":["\u6587\u5b57"],"Width":["\u5bec\u5ea6"],"Apply":["\u5957\u7528"],"Alternative text":["\u66ff\u4ee3\u6587\u5b57"]}},"comment":{"reference":"wp-includes\/js\/dist\/format-library.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7233008897033de5ee0d14f86a42a65a.json b/languages/zh_TW-7233008897033de5ee0d14f86a42a65a.json new file mode 100644 index 0000000..a1554b5 --- /dev/null +++ b/languages/zh_TW-7233008897033de5ee0d14f86a42a65a.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Legacy widget":["\u820a\u7248\u5c0f\u5de5\u5177"],"Create a classic widget layout with a title that\u2019s styled by your theme for your widget areas.":["\u5efa\u7acb\u5305\u542b\u6a19\u984c\u7684\u50b3\u7d71\u5c0f\u5de5\u5177\u7248\u9762\u914d\u7f6e\uff0c\u6a19\u984c\u6703\u5957\u7528\u76ee\u524d\u4f7f\u7528\u7684\u4f48\u666f\u4e3b\u984c\u7684\u5c0f\u5de5\u5177\u5340\u57df\u6a23\u5f0f\u3002"],"Widget Group":["\u5c0f\u5de5\u5177\u7fa4\u7d44"],"The \"%s\" block was affected by errors and may not function properly. Check the developer tools for more details.":["[%s] \u53d7\u5230\u932f\u8aa4\u6240\u5f71\u97ff\uff0c\u4e5f\u8a31\u7121\u6cd5\u6b63\u5e38\u57f7\u884c\u3002\u5982\u9700\u9032\u4e00\u6b65\u4e86\u89e3\uff0c\u8acb\u4f7f\u7528\u958b\u767c\u8005\u5de5\u5177\u9032\u884c\u6aa2\u67e5\u3002"],"Move to widget area":["\u79fb\u81f3\u5c0f\u5de5\u5177\u5340\u57df"],"Widget is missing.":["\u627e\u4e0d\u5230\u5c0f\u5de5\u5177\u3002"],"No preview available.":["\u7121\u6cd5\u63d0\u4f9b\u9810\u89bd\u3002"],"Legacy Widget Preview":["\u9810\u89bd\u820a\u7248\u5c0f\u5de5\u5177"],"Select widget":["\u9078\u53d6\u5c0f\u5de5\u5177"],"Convert to blocks":["\u8f49\u63db\u6210\u5340\u584a"],"Move to":["\u79fb\u81f3"],"Legacy Widget":["\u820a\u7248\u5c0f\u5de5\u5177"],"There are no widgets available.":["\u6c92\u6709\u53ef\u4f9b\u4f7f\u7528\u7684\u5c0f\u5de5\u5177\u3002"],"Save":["\u5132\u5b58"],"Title":["\u6a19\u984c"]}},"comment":{"reference":"wp-includes\/js\/dist\/widgets.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7289286ed59e90a8f36ae797df62220b.json b/languages/zh_TW-7289286ed59e90a8f36ae797df62220b.json new file mode 100644 index 0000000..ef1f65e --- /dev/null +++ b/languages/zh_TW-7289286ed59e90a8f36ae797df62220b.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"The file URL has been copied to your clipboard":["\u6a94\u6848\u7db2\u5740\u5df2\u8907\u88fd\u81f3\u526a\u8cbc\u7c3f\u3002"],"An error has occurred. Please reload the page and try again.":["\u767c\u751f\u932f\u8aa4\u3002\u8acb\u91cd\u65b0\u8f09\u5165\u9801\u9762\uff0c\u7136\u5f8c\u518d\u8a66\u4e00\u6b21\u3002"]}},"comment":{"reference":"wp-admin\/js\/media.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7436b7ee9e4f11ac0d618d8cc886eb66.json b/languages/zh_TW-7436b7ee9e4f11ac0d618d8cc886eb66.json new file mode 100644 index 0000000..12287a5 --- /dev/null +++ b/languages/zh_TW-7436b7ee9e4f11ac0d618d8cc886eb66.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Plugin details":["\u5916\u639b\u8a73\u7d30\u8cc7\u6599"],"Plugin: %s":["\u5916\u639b: %s"]}},"comment":{"reference":"wp-admin\/js\/plugin-install.js"}} \ No newline at end of file diff --git a/languages/zh_TW-77324aff2ed7b08f8a592e0b09d8f3b5.json b/languages/zh_TW-77324aff2ed7b08f8a592e0b09d8f3b5.json new file mode 100644 index 0000000..7a27e7b --- /dev/null +++ b/languages/zh_TW-77324aff2ed7b08f8a592e0b09d8f3b5.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Open command palette":["\u958b\u555f\u547d\u4ee4\u9078\u64c7\u5340"],"Review %d change\u2026":["\u6aa2\u8996 %d \u500b\u8b8a\u66f4..."],"Go to the Dashboard":["\u8fd4\u56de [\u63a7\u5236\u53f0]"],"%1$s \u2039 %2$s \u2014 WordPress":["%1$s \u2039 %2$s \u2014 WordPress"],"Review changes":["\u6aa2\u8996\u8b8a\u66f4"],"Save your changes.":["\u5132\u5b58\u8b8a\u66f4"],"Go back":["\u8fd4\u56de"],"Site Icon":["\u7db2\u7ad9\u5716\u793a"],"Back":["\u8fd4\u56de"],"Saved":["\u5df2\u5132\u5b58"]}},"comment":{"reference":"wp-includes\/js\/dist\/script-modules\/boot\/index.js"}} \ No newline at end of file diff --git a/languages/zh_TW-77fdfadaf2e1ca3a027d1956b910bc50.json b/languages/zh_TW-77fdfadaf2e1ca3a027d1956b910bc50.json new file mode 100644 index 0000000..c0c057e --- /dev/null +++ b/languages/zh_TW-77fdfadaf2e1ca3a027d1956b910bc50.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Please select a bulk action to perform.":["\u8acb\u9078\u53d6\u6279\u6b21\u64cd\u4f5c\u4ee5\u57f7\u884c\u3002"],"Screen Options updated.":["[\u986f\u793a\u9805\u76ee\u8a2d\u5b9a] \u5df2\u66f4\u65b0\u3002"],"%1$s is deprecated since version %2$s with no alternative available.":["\u5f9e %2$s \u7248\u958b\u59cb\uff0c%1$s \u5df2\u6dd8\u6c70\u4e0d\u7528\u4e14\u4e0d\u63d0\u4f9b\u66ff\u4ee3\u5c6c\u6027\u3002"],"%1$s is deprecated since version %2$s! Use %3$s instead.":["\u5f9e %2$s \u7248\u958b\u59cb\uff0c%1$s \u5df2\u6dd8\u6c70\u4e0d\u7528\uff0c\u8acb\u6539\u7528 %3$s\u3002"],"Please select at least one item to perform this action on.":["\u8acb\u9078\u53d6\u81f3\u5c11\u4e00\u500b\u9805\u76ee\u4ee5\u9032\u884c\u9019\u9805\u64cd\u4f5c\u3002"],"Expand Main menu":["\u5c55\u958b\u4e3b\u8981\u9078\u55ae"],"Dismiss this notice.":["\u95dc\u9589\u9019\u9805\u901a\u77e5"],"You are about to permanently delete these items from your site.\nThis action cannot be undone.\n'Cancel' to stop, 'OK' to delete.":["\u9019\u9805\u64cd\u4f5c\u6703\u5c07\u9019\u4e9b\u9805\u76ee\u5f9e\u9019\u500b\u7db2\u7ad9\u6c38\u4e45\u522a\u9664\u4e14\u7121\u6cd5\u5fa9\u539f\u3002\n\u9ede\u64ca [\u53d6\u6d88] \u4ee5\u505c\u6b62\u64cd\u4f5c\uff0c\u9ede\u64ca [\u78ba\u5b9a] \u4ee5\u9032\u884c\u522a\u9664\u3002"],"Collapse Main menu":["\u6536\u5408\u4e3b\u8981\u9078\u55ae"]}},"comment":{"reference":"wp-admin\/js\/common.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7b74c8457eaa7fcc50db41b431f8a003.json b/languages/zh_TW-7b74c8457eaa7fcc50db41b431f8a003.json new file mode 100644 index 0000000..f6ec2b6 --- /dev/null +++ b/languages/zh_TW-7b74c8457eaa7fcc50db41b431f8a003.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"The selected tag has been deleted.":["\u9078\u53d6\u7684\u6a19\u7c64\u5df2\u522a\u9664\u3002"],"An error occurred while processing your request. Please try again later.":["\u8655\u7406\u8981\u6c42\u6642\u767c\u751f\u932f\u8aa4\u3002\u8acb\u7a0d\u5f8c\u518d\u8a66\u3002"],"Sorry, you are not allowed to do that.":["\u5f88\u62b1\u6b49\uff0c\u76ee\u524d\u7684\u767b\u5165\u8eab\u5206\u6c92\u6709\u9032\u884c\u9019\u9805\u64cd\u4f5c\u7684\u6b0a\u9650\u3002"]}},"comment":{"reference":"wp-admin\/js\/tags.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7c90cd4398ee2d9d3628c387a87a70e5.json b/languages/zh_TW-7c90cd4398ee2d9d3628c387a87a70e5.json new file mode 100644 index 0000000..123dcdd --- /dev/null +++ b/languages/zh_TW-7c90cd4398ee2d9d3628c387a87a70e5.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Hide password":["\u96b1\u85cf\u5bc6\u78bc"],"Show password":["\u986f\u793a\u5bc6\u78bc"],"Hide":["\u96b1\u85cf"],"Show":["\u986f\u793a"]}},"comment":{"reference":"wp-admin\/js\/password-toggle.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7d5ca435e60d92f024d46c9257aaa0f7.json b/languages/zh_TW-7d5ca435e60d92f024d46c9257aaa0f7.json new file mode 100644 index 0000000..8e9bf1f --- /dev/null +++ b/languages/zh_TW-7d5ca435e60d92f024d46c9257aaa0f7.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-03-30 17:20:15+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"%d result found. Use up and down arrow keys to navigate.":["\u627e\u5230 %d \u500b\u7d50\u679c\uff0c\u8acb\u4f7f\u7528\u5411\u4e0a\u9375\u53ca\u5411\u4e0b\u9375\u9032\u884c\u5de1\u89bd\u3002"],"Term selected.":["\u5206\u985e\u6cd5\u8a5e\u5f59\u5df2\u9078\u53d6\u3002"],"tag delimiter\u0004,":["\u3001"],"No results found.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u641c\u5c0b\u7d50\u679c\u3002"]}},"comment":{"reference":"wp-admin\/js\/tags-suggest.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7e88418f8c879966422e72224333672a.json b/languages/zh_TW-7e88418f8c879966422e72224333672a.json new file mode 100644 index 0000000..d9c564a --- /dev/null +++ b/languages/zh_TW-7e88418f8c879966422e72224333672a.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Save":["\u5132\u5b58"]}},"comment":{"reference":"wp-includes\/js\/dist\/script-modules\/connectors\/index.js"}} \ No newline at end of file diff --git a/languages/zh_TW-7f13c36c641b114bf18cd0bcc9ecc7e0.json b/languages/zh_TW-7f13c36c641b114bf18cd0bcc9ecc7e0.json new file mode 100644 index 0000000..ff89e40 --- /dev/null +++ b/languages/zh_TW-7f13c36c641b114bf18cd0bcc9ecc7e0.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"December":["12 \u6708"],"November":["11 \u6708"],"October":["10 \u6708"],"September":["9 \u6708"],"August":["8 \u6708"],"July":["7 \u6708"],"June":["6 \u6708"],"May":["5 \u6708"],"April":["4 \u6708"],"March":["3 \u6708"],"February":["2 \u6708"],"January":["1 \u6708"],"There is %d event":["\u6709 %d \u9805\u6d3b\u52d5\u3002"],"Date calendar":["\u65e5\u671f\u6708\u66c6"],"Date range calendar":["\u65e5\u671f\u7bc4\u570d\u6708\u66c6"],"Today, %s":["\u4eca\u65e5 (%s)"],"Go to the Next Month":["\u524d\u5f80\u4e0b\u500b\u6708"],"Go to the Previous Month":["\u524d\u5f80\u4e0a\u500b\u6708"],"%s, selected":["%s (\u5df2\u9078\u53d6)"],"Optional":["\u9078\u586b"],"input control\u0004Show %s":["\u986f\u793a%s"],"Border color picker. The currently selected color has a value of \"%s\".":["\u6846\u7dda\u8272\u5f69\u9078\u64c7\u5668\u3002\u76ee\u524d\u9078\u53d6\u7684\u8272\u5f69\u7684\u5341\u516d\u9032\u4f4d\u78bc\u70ba %s\u3002"],"Border color picker. The currently selected color is called \"%1$s\" and has a value of \"%2$s\".":["\u6846\u7dda\u8272\u5f69\u9078\u64c7\u5668\u3002\u76ee\u524d\u9078\u53d6\u7684\u8272\u5f69\u540d\u7a31\u70ba\u300c%1$s\u300d\uff0c\u5341\u516d\u9032\u4f4d\u78bc\u70ba %2$s\u3002"],"Border color and style picker. The currently selected color has a value of \"%s\".":["\u6846\u7dda\u8272\u5f69\u53ca\u6a23\u5f0f\u9078\u64c7\u5668\u3002\u76ee\u524d\u9078\u53d6\u7684\u8272\u5f69\u7684\u5341\u516d\u9032\u4f4d\u78bc\u70ba %s\u3002"],"Border color and style picker. The currently selected color has a value of \"%1$s\". The currently selected style is \"%2$s\".":["\u6846\u7dda\u8272\u5f69\u53ca\u6a23\u5f0f\u9078\u64c7\u5668\u3002\u76ee\u524d\u9078\u53d6\u7684\u8272\u5f69\u7684\u5341\u516d\u9032\u4f4d\u78bc\u70ba %1$s\uff0c\u9078\u53d6\u7684\u6a23\u5f0f\u70ba\u300c%2$s\u300d\u3002"],"Border color and style picker. The currently selected color is called \"%1$s\" and has a value of \"%2$s\".":["\u6846\u7dda\u8272\u5f69\u53ca\u6a23\u5f0f\u9078\u64c7\u5668\u3002\u76ee\u524d\u9078\u53d6\u7684\u8272\u5f69\u540d\u7a31\u70ba\u300c%1$s\u300d\uff0c\u5341\u516d\u9032\u4f4d\u78bc\u70ba %2$s\u3002"],"Border color and style picker. The currently selected color is called \"%1$s\" and has a value of \"%2$s\". The currently selected style is \"%3$s\".":["\u6846\u7dda\u8272\u5f69\u53ca\u6a23\u5f0f\u9078\u64c7\u5668\u3002\u76ee\u524d\u9078\u53d6\u7684\u8272\u5f69\u540d\u7a31\u70ba\u300c%1$s\u300d\uff0c\u5341\u516d\u9032\u4f4d\u78bc\u70ba %2$s\u3002\u76ee\u524d\u9078\u53d6\u7684\u6a23\u5f0f\u70ba\u300c%3$s\u300d\u3002"],"%d item selected":["%d \u500b\u9805\u76ee\u5df2\u9078\u53d6"],"Select an item":["\u9078\u53d6\u9805\u76ee"],"Select AM or PM":["\u9078\u53d6\u4e0a\u5348\u6216\u4e0b\u5348"],"No items found":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u9805\u76ee\u3002"],"Remove color: %s":["\u79fb\u9664\u8272\u5f69: %s"],"Large viewport largest dimension (lvmax)":["\u5927\u578b\u6aa2\u8996\u5340\u6700\u5927\u5c3a\u5bf8 (lvmax)"],"Small viewport largest dimension (svmax)":["\u5c0f\u578b\u6aa2\u8996\u5340\u6700\u5927\u5c3a\u5bf8 (svmax)"],"Dynamic viewport largest dimension (dvmax)":["\u52d5\u614b\u6aa2\u8996\u5340\u6700\u5927\u5c3a\u5bf8 (dvmax)"],"Dynamic viewport smallest dimension (dvmin)":["\u52d5\u614b\u6aa2\u8996\u5340\u6700\u5c0f\u5c3a\u5bf8 (dvmin)"],"Dynamic viewport width or height (dvb)":["\u52d5\u614b\u6aa2\u8996\u5340\u5bec\u5ea6\u6216\u9ad8\u5ea6 (dvb)"],"Dynamic viewport width or height (dvi)":["\u52d5\u614b\u6aa2\u8996\u5340\u5bec\u5ea6\u6216\u9ad8\u5ea6 (dvi)"],"Dynamic viewport height (dvh)":["\u52d5\u614b\u6aa2\u8996\u5340\u9ad8\u5ea6 (dvh)"],"Dynamic viewport width (dvw)":["\u52d5\u614b\u6aa2\u8996\u5340\u5bec\u5ea6 (dvw)"],"Large viewport smallest dimension (lvmin)":["\u5927\u578b\u6aa2\u8996\u5340\u6700\u5c0f\u5c3a\u5bf8 (lvmin)"],"Large viewport width or height (lvb)":["\u5927\u578b\u6aa2\u8996\u5340\u5bec\u5ea6\u6216\u9ad8\u5ea6 (lvb)"],"Large viewport width or height (lvi)":["\u5927\u578b\u6aa2\u8996\u5340\u5bec\u5ea6\u6216\u9ad8\u5ea6 (lvi)"],"Large viewport height (lvh)":["\u5927\u578b\u6aa2\u8996\u5340\u9ad8\u5ea6 (lvh)"],"Large viewport width (lvw)":["\u5927\u578b\u6aa2\u8996\u5340\u5bec\u5ea6 (lvw)"],"Small viewport smallest dimension (svmin)":["\u5c0f\u578b\u6aa2\u8996\u5340\u6700\u5c0f\u5c3a\u5bf8 (svmin)"],"Small viewport width or height (svb)":["\u5c0f\u578b\u6aa2\u8996\u5340\u5bec\u5ea6\u6216\u9ad8\u5ea6 (svb)"],"Viewport smallest size in the block direction (svb)":["\u5728\u5340\u584a\u65b9\u5411\u4e2d\u7684\u6aa2\u8996\u5340\u6700\u5c0f\u5c3a\u5bf8 (svb)"],"Small viewport width or height (svi)":["\u5c0f\u578b\u6aa2\u8996\u5340\u5bec\u5ea6\u6216\u9ad8\u5ea6 (svi)"],"Viewport smallest size in the inline direction (svi)":["\u5728\u5167\u5d4c\u65b9\u5411\u4e2d\u7684\u6aa2\u8996\u5340\u6700\u5c0f\u5c3a\u5bf8 (svi)"],"Small viewport height (svh)":["\u5c0f\u578b\u6aa2\u8996\u5340\u9ad8\u5ea6 (svh)"],"Small viewport width (svw)":["\u5c0f\u578b\u6aa2\u8996\u5340\u5bec\u5ea6 (svw)"],"No color selected":["\u5c1a\u672a\u9078\u53d6\u4efb\u4f55\u8272\u5f69"],"Left and right sides":["\u5de6\u5074\u53ca\u53f3\u5074"],"Top and bottom sides":["\u4e0a\u65b9\u53ca\u4e0b\u65b9"],"Right side":["\u53f3\u5074"],"Left side":["\u5de6\u5074"],"Bottom side":["\u4e0b\u65b9"],"Top side":["\u4e0a\u65b9"],"authors\u0004All":["\u5168\u90e8\u4f5c\u8005"],"categories\u0004All":["\u5168\u90e8\u5206\u985e"],"Edit: %s":["\u7de8\u8f2f: %s"],"Required":["\u5fc5\u586b"],"Notice":["\u901a\u77e5"],"Error notice":["\u932f\u8aa4\u901a\u77e5"],"Information notice":["\u8cc7\u8a0a\u901a\u77e5"],"Warning notice":["\u8b66\u544a\u901a\u77e5"],"Scrollable section":["\u53ef\u6372\u52d5\u5340\u6bb5"],"Focal point top position":["\u7126\u9ede\u9802\u7aef\u4f4d\u7f6e"],"Focal point left position":["\u7126\u9ede\u5de6\u5074\u4f4d\u7f6e"],"Initial %d result loaded. Type to filter all available results. Use up and down arrow keys to navigate.":["%d \u500b\u7d50\u679c\u5df2\u521d\u59cb\u8f09\u5165\uff0c\u8f38\u5165\u4ee5\u7be9\u9078\u53ef\u7528\u7684\u7d50\u679c\u3002\u8acb\u4f7f\u7528\u5411\u4e0a\u9375\u53ca\u5411\u4e0b\u9375\u9032\u884c\u5de1\u89bd\u3002"],"Extra Extra Large":["\u8d85\u5de8\u5927\u578b\u5c3a\u5bf8"],"Show details":["\u986f\u793a\u8a73\u7d30\u8cc7\u6599"],"Decrement":["\u905e\u6e1b"],"Increment":["\u905e\u589e"],"All options reset":["\u5168\u90e8\u9078\u9805\u5df2\u91cd\u8a2d"],"All options are currently hidden":["\u76ee\u524d\u5168\u90e8\u9078\u9805\u5df2\u96b1\u85cf"],"%s is now visible":["%s\u5df2\u986f\u793a"],"%s hidden and reset to default":["%s\u5df2\u96b1\u85cf\u4e26\u91cd\u8a2d\u70ba\u9810\u8a2d\u503c"],"%s reset to default":["%s\u5df2\u91cd\u8a2d\u70ba\u9810\u8a2d\u503c"],"XXL":["XXL"],"XL":["XL"],"L":["L"],"M":["M"],"S":["S"],"Unset":["\u53d6\u6d88\u8a2d\u5b9a"],"View next month":["\u67e5\u770b\u4e0b\u500b\u6708"],"View previous month":["\u67e5\u770b\u4e0a\u500b\u6708"],"Border color and style picker":["\u6846\u7dda\u8272\u5f69\u53ca\u6a23\u5f0f\u9078\u64c7\u5668"],"Loading \u2026":["\u6b63\u5728\u8f09\u5165..."],"All sides":["\u5168\u90e8 4 \u908a"],"Bottom border":["\u4e0b\u6846\u7dda"],"Right border":["\u53f3\u6846\u7dda"],"Left border":["\u5de6\u6846\u7dda"],"Top border":["\u4e0a\u6846\u7dda"],"Border color picker.":["\u6846\u7dda\u8272\u5f69\u9078\u64c7\u5668\u3002"],"Border color and style picker.":["\u6846\u7dda\u8272\u5f69\u53ca\u6a23\u5f0f\u9078\u64c7\u5668\u3002"],"Custom color picker. The currently selected color is called \"%1$s\" and has a value of \"%2$s\".":["\u81ea\u8a02\u8272\u5f69\u9078\u64c7\u5668\u3002\u76ee\u524d\u9078\u53d6\u7684\u8272\u5f69\u540d\u7a31\u70ba\u300c%1$s\u300d\uff0c\u5341\u516d\u9032\u4f4d\u78bc\u70ba %2$s\u3002"],"Link sides":["\u7d71\u4e00\u8a2d\u5b9a\u5404\u908a"],"Unlink sides":["\u500b\u5225\u8a2d\u5b9a\u5404\u908a"],"Reset all":["\u5168\u90e8\u91cd\u8a2d"],"Button label to reveal tool panel options\u0004%s options":["%s\u9078\u9805"],"Hide and reset %s":["\u96b1\u85cf\u4e26\u91cd\u8a2d%s"],"Reset %s":["\u91cd\u8a2d%s"],"Search %s":["\u641c\u5c0b [%s]"],"Set custom size":["\u8a2d\u5b9a\u81ea\u8a02\u5c3a\u5bf8"],"Use size preset":["\u4f7f\u7528\u5c3a\u5bf8\u9810\u8a2d\u8a2d\u5b9a"],"Currently selected font size: %s":["\u76ee\u524d\u9078\u53d6\u7684\u5b57\u578b\u5927\u5c0f: %s"],"Highlights":["\u4eae\u90e8"],"Currently selected: %s":["\u76ee\u524d\u9078\u53d6\u7684\u9805\u76ee: %s"],"Reset colors":["\u91cd\u8a2d\u8272\u5f69"],"Reset gradient":["\u91cd\u8a2d\u6f38\u5c64\u8272\u5f69"],"Remove all colors":["\u79fb\u9664\u5168\u90e8\u8272\u5f69"],"Remove all gradients":["\u79fb\u9664\u5168\u90e8\u6f38\u5c64\u8272\u5f69"],"Color options":["\u8272\u5f69\u9078\u9805"],"Gradient options":["\u6f38\u5c64\u8272\u5f69\u9078\u9805"],"Add color":["\u65b0\u589e\u8272\u5f69"],"Add gradient":["\u65b0\u589e\u6f38\u5c64\u8272\u5f69"],"Gradient name":["\u6f38\u5c64\u8272\u5f69\u540d\u7a31"],"Color format":["\u8272\u5f69\u683c\u5f0f"],"Hex color":["Hex \u8272\u5f69"],"Color %d":["\u8272\u5f69 %d"],"%1$s (%2$d of %3$d)":["%1$s (%2$d\uff0c\u540c\u5c64\u7d1a\u5340\u584a\u7e3d\u8a08\u70ba %3$d \u500b)"],"Invalid item":["\u7121\u6548\u7684\u9805\u76ee"],"Shadows":["\u9670\u5f71"],"Duotone: %s":["\u96d9\u8272\u8abf: %s"],"Duotone code: %s":["\u96d9\u8272\u8abf\u8272\u78bc: %s"],"Relative to root font size (rem)\u0004rems":["rem"],"Relative to parent font size (em)\u0004ems":["em"],"Points (pt)":["\u9ede (pt)"],"Picas (pc)":["pica (pc)"],"Inches (in)":["\u82f1\u540b (in)"],"Millimeters (mm)":["\u516c\u91d0 (mm)"],"Centimeters (cm)":["\u516c\u5206 (cm)"],"x-height of the font (ex)":["\u5b57\u578b\u7684 x-height (ex)"],"Width of the zero (0) character (ch)":["0 (\u6578\u5b57\u96f6) \u7684\u5b57\u5143\u5bec\u5ea6 (ch)"],"Viewport largest dimension (vmax)":["\u6aa2\u8996\u5340\u6700\u5927\u5c3a\u5bf8 (vmax)"],"Viewport smallest dimension (vmin)":["\u6aa2\u8996\u5340\u6700\u5c0f\u5c3a\u5bf8 (vmin)"],"Percent (%)":["\u767e\u5206\u6bd4 (%)"],"Border width":["\u6846\u7dda\u5bec\u5ea6"],"Dotted":["\u9ede\u7dda"],"Dashed":["\u865b\u7dda"],"Viewport height (vh)":["\u6aa2\u8996\u5340\u9ad8\u5ea6 (vh)"],"Relative to root font size (rem)":["\u76f8\u5c0d\u65bc\u6700\u4e0a\u5c64\u5143\u7d20\u5b57\u578b\u5927\u5c0f (rem)"],"Relative to parent font size (em)":["\u76f8\u5c0d\u65bc\u4e0a\u5c64\u5143\u7d20\u5b57\u578b\u5927\u5c0f (em)"],"Pixels (px)":["\u50cf\u7d20 (px)"],"Percentage (%)":["\u767e\u5206\u6bd4 (%)"],"Viewport width (vw)":["\u6aa2\u8996\u5340\u5bec\u5ea6 (vw)"],"Close search":["\u95dc\u9589\u641c\u5c0b"],"Search in %s":["\u5728 [%s] \u4e2d\u641c\u5c0b"],"Select unit":["\u9078\u53d6\u55ae\u4f4d"],"Radial":["\u653e\u5c04\u6f38\u5c64"],"Linear":["\u7dda\u6027\u6f38\u5c64"],"Media preview":["\u5a92\u9ad4\u9810\u89bd"],"Coordinated Universal Time":["\u570b\u969b\u6a19\u6e96\u6642\u9593"],"Color name":["\u8272\u5f69\u540d\u7a31"],"Reset search":["\u91cd\u8a2d\u641c\u5c0b"],"Box Control":["\u65b9\u584a\u63a7\u5236\u9805"],"Alignment Matrix Control":["\u5c0d\u9f4a\u65b9\u5f0f\u77e9\u9663\u63a7\u5236\u9805"],"Bottom Center":["\u6b63\u4e0b\u65b9"],"Center Right":["\u4e2d\u53f3\u65b9"],"Center Left":["\u4e2d\u5de6\u65b9"],"Top Center":["\u6b63\u4e0a\u65b9"],"Solid":["\u7d14\u8272"],"Finish":["\u5b8c\u6210"],"Page %1$d of %2$d":["\u7b2c %1$d \u9801\uff0c\u7e3d\u8a08 %2$d \u9801"],"Guide controls":["\u6307\u5357\u63a7\u5236\u9805"],"Gradient: %s":["\u6f38\u5c64\u8272\u5f69: %s"],"Gradient code: %s":["\u6f38\u5c64\u8272\u5f69\u4ee3\u78bc: %s"],"Remove Control Point":["\u79fb\u9664\u63a7\u5236\u9ede"],"Use your left or right arrow keys or drag and drop with the mouse to change the gradient position. Press the button to change the color or remove the control point.":["\u4f7f\u7528\u5411\u5de6\u9375\u53ca\u5411\u53f3\u9375\u6216\u4ee5\u6e38\u6a19\u62d6\u653e\u9032\u884c\u8b8a\u66f4\u6f38\u5c64\u8272\u5f69\u4f4d\u7f6e\u3002\u6309\u4e0b\u6309\u9215\u4fbf\u53ef\u8b8a\u66f4\u8272\u5f69\u6216\u79fb\u9664\u63a7\u5236\u9ede\u3002"],"Gradient control point at position %1$d%% with color code %2$s.":["\u5728\u4f4d\u7f6e %1$d%%\u3001\u8272\u5f69\u4ee3\u78bc\u70ba %2$s \u7684\u6f38\u5c64\u8272\u5f69\u63a7\u5236\u9ede\u3002"],"Extra Large":["\u8d85\u5927\u578b\u5c3a\u5bf8"],"Small":["\u5c0f\u578b\u5c3a\u5bf8"],"Angle":["\u89d2\u5ea6"],"Separate with commas or the Enter key.":["\u8acb\u4f7f\u7528\u9017\u865f\u6216\u6309 Enter \u9375\u9032\u884c\u5206\u9694\u3002"],"Separate with commas, spaces, or the Enter key.":["\u8acb\u4f7f\u7528\u9017\u865f\u3001\u7a7a\u683c\u6216\u6309 Enter \u9375\u9032\u884c\u5206\u9694\u3002"],"Copied!":["\u5df2\u5b8c\u6210\u8907\u88fd\uff01"],"%d result found.":["\u627e\u5230 %d \u9805\u641c\u5c0b\u7d50\u679c\u3002"],"Number of items":["\u9805\u76ee\u6578\u91cf"],"Category":["\u5206\u985e"],"Oldest to newest":["\u5f9e\u6700\u820a\u5230\u6700\u65b0\u6392\u5e8f"],"Newest to oldest":["\u5f9e\u6700\u65b0\u5230\u6700\u820a\u6392\u5e8f"],"Order by":["\u6392\u5e8f\u65b9\u5f0f"],"Dismiss this notice":["\u95dc\u9589\u9019\u9805\u901a\u77e5"],"Remove item":["\u79fb\u9664\u9805\u76ee"],"Item removed.":["\u9805\u76ee\u5df2\u79fb\u9664\u3002"],"Item added.":["\u9805\u76ee\u5df2\u65b0\u589e\u3002"],"Add item":["\u65b0\u589e\u9805\u76ee"],"Reset":["\u91cd\u8a2d"],"Z \u2192 A":["\u905e\u6e1b\u6392\u5e8f"],"A \u2192 Z":["\u905e\u589e\u6392\u5e8f"],"Minutes":["\u5206\u9418"],"Color code: %s":["\u8272\u5f69\u4ee3\u78bc: %s"],"No results.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u7d50\u679c\u3002"],"(opens in a new tab)":["(\u5728\u65b0\u5206\u9801\u4e2d\u958b\u555f)"],"%d result found, use up and down arrow keys to navigate.":["\u627e\u5230 %d \u500b\u7d50\u679c\uff0c\u8acb\u4f7f\u7528\u5411\u4e0a\u9375\u53ca\u5411\u4e0b\u9375\u9032\u884c\u5de1\u89bd\u3002"],"Custom color picker":["\u81ea\u8a02\u8272\u5f69\u9078\u64c7\u5668"],"Time":["\u6642\u9593"],"Day":["\u65e5\u6578"],"Month":["\u6708\u4efd"],"Date":["\u65e5\u671f"],"Hours":["\u5c0f\u6642"],"Item selected.":["\u9805\u76ee\u5df2\u9078\u53d6\u3002"],"Today":["\u4eca\u5929"],"Previous":["\u4e0a\u4e00\u6b65"],"Year":["\u5e74\u4efd"],"Back":["\u8fd4\u56de"],"Style":["\u6a23\u5f0f"],"Large":["\u5927\u578b\u5c3a\u5bf8"],"Selected":["\u5df2\u9078\u53d6"],"Drop files to upload":["\u8acb\u5c07\u6a94\u6848\u62d6\u653e\u81f3\u9019\u88e1\u4e0a\u50b3"],"Clear":["\u6e05\u9664"],"Mixed":["\u6df7\u5408\u5f0f"],"Custom":["\u81ea\u8a02"],"Next":["\u4e0b\u4e00\u6b65"],"PM":["\u4e0b\u5348"],"AM":["\u4e0a\u5348"],"Bottom Right":["\u53f3\u4e0b\u65b9"],"Bottom Left":["\u5de6\u4e0b\u65b9"],"Top Right":["\u53f3\u4e0a\u65b9"],"Top Left":["\u5de6\u4e0a\u65b9"],"Top":["\u6b63\u4e0a\u65b9"],"Copy":["\u8907\u88fd"],"Font size":["\u5b57\u578b\u5927\u5c0f"],"Calendar":["\u6708\u66c6"],"Type":["\u985e\u578b"],"No results found.":["\u627e\u4e0d\u5230\u7b26\u5408\u689d\u4ef6\u7684\u641c\u5c0b\u7d50\u679c\u3002"],"Default":["\u9810\u8a2d"],"Close":["\u95dc\u9589"],"Search":["\u641c\u5c0b"],"OK":["\u78ba\u5b9a"],"Medium":["\u4e2d\u578b\u5c3a\u5bf8"],"Center":["\u7f6e\u4e2d\u5c0d\u9f4a"],"Left":["\u9760\u5de6\u5c0d\u9f4a"],"Cancel":["\u53d6\u6d88"],"Done":["\u5b8c\u6210"],"None":["\u7121"],"Categories":["\u5206\u985e"],"Author":["\u4f5c\u8005"]}},"comment":{"reference":"wp-includes\/js\/dist\/components.js"}} \ No newline at end of file diff --git a/languages/zh_TW-803bf1ce2131e13efc590c1bc47851fc.json b/languages/zh_TW-803bf1ce2131e13efc590c1bc47851fc.json new file mode 100644 index 0000000..ed7dc88 --- /dev/null +++ b/languages/zh_TW-803bf1ce2131e13efc590c1bc47851fc.json @@ -0,0 +1 @@ +{"translation-revision-date":"2026-04-27 20:54:39+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Uncategorized":["\u672a\u5206\u985e"],"Value must be one of the elements.":["\u503c\u5fc5\u9808\u662f\u5176\u4e2d\u4e00\u500b\u5143\u7d20\u3002"],"Fit text":["\u8abf\u6574\u6587\u5b57\u914d\u5408"],"Text will resize to fit its container.":["\u6587\u5b57\u6703\u914d\u5408\u5bb9\u5668\u8abf\u6574\u5927\u5c0f\u3002"],"Unknown error when running elements validation asynchronously.":["\u57f7\u884c\u975e\u540c\u6b65\u5143\u7d20\u9a57\u8b49\u6642\u767c\u751f\u672a\u77e5\u7684\u932f\u8aa4\u3002"],"Unknown error when running custom validation asynchronously.":["\u57f7\u884c\u975e\u540c\u6b65\u81ea\u8a02\u9a57\u8b49\u6642\u767c\u751f\u672a\u77e5\u7684\u932f\u8aa4\u3002"],"Validating\u2026":["\u6b63\u5728\u9a57\u8b49..."],"More details":["\u66f4\u591a\u8a73\u7d30\u8cc7\u6599"],"Show \/ Hide":["\u986f\u793a\/\u96b1\u85cf"],"Choose a video\u2026":["\u9078\u53d6\u8996\u8a0a..."],"Choose a file\u2026":["\u9078\u53d6\u6a94\u6848..."],"Choose a media item\u2026":["\u9078\u53d6\u5a92\u9ad4\u9805\u76ee..."],"Select a link":["\u9078\u53d6\u9023\u7d50"],"Could not validate elements.":["\u7121\u6cd5\u9a57\u8b49\u5143\u7d20\u3002"],"Hide blocks":["\u96b1\u85cf\u5340\u584a"],"Hide block":["\u96b1\u85cf\u5340\u584a"],"Select the viewport size for which you want to hide the block.":["\u9078\u53d6\u8981\u96b1\u85cf\u5340\u584a\u7684\u6aa2\u8996\u5340\u5c3a\u5bf8\u3002"],"Hide on %s":["\u5728 [%s] \u4e2d\u96b1\u85cf"],"Go to \"%s\" block":["\u524d\u5f80 [%s] \u5340\u584a"],"Go to parent block":["\u524d\u5f80\u4e0a\u5c64\u5340\u584a"],"Parent block is hidden":["\u4e0a\u5c64\u5340\u584a\u5df2\u96b1\u85cf"],"%1$s doesn't contain: <\/Name>%2$s<\/Value>":["[%1$s] \u4e0d\u5305\u542b: <\/Name>%2$s<\/Value>"],"%1$s starts with: <\/Name>%2$s<\/Value>":["[%1$s] \u958b\u982d\u70ba: <\/Name>%2$s<\/Value>"],"%1$s is before: <\/Name>%2$s<\/Value>":["[%1$s] \u5728\u6307\u5b9a\u65e5\u671f\u4e4b\u524d: <\/Name>%2$s<\/Value>"],"%1$s is after: <\/Name>%2$s<\/Value>":["[%1$s] \u5728\u6307\u5b9a\u65e5\u671f\u4e4b\u5f8c: <\/Name>%2$s<\/Value>"],"%1$s is on or before: <\/Name>%2$s<\/Value>":["[%1$s] \u5728\u6307\u5b9a\u65e5\u671f\u6216\u4e4b\u524d: <\/Name>%2$s<\/Value>"],"%1$s is on or after: <\/Name>%2$s<\/Value>":["[%1$s] \u5728\u6307\u5b9a\u65e5\u671f\u6216\u4e4b\u5f8c: <\/Name>%2$s<\/Value>"],"%1$s between (inc): <\/Name>%2$s and %3$s<\/Value>":["[%1$s] \u5728\u5169\u8005\u4e4b\u9593 (\u542b): <\/Name>%2$s \u53ca %3$s<\/Value>"],"%1$s is in the past: <\/Name>%2$s<\/Value>":["[%1$s] \u662f\u904e\u53bb\u6642\u9593: <\/Name>%2$s<\/Value>"],"Unknown error when running custom validation.":["\u57f7\u884c\u81ea\u8a02\u9a57\u8b49\u6642\u767c\u751f\u672a\u77e5\u7684\u932f\u8aa4\u3002"],"Less than":["\u5c0f\u65bc"],"Greater than":["\u5927\u65bc"],"Less than or equal":["\u5c0f\u65bc\u6216\u7b49\u65bc"],"Greater than or equal":["\u5927\u65bc\u6216\u7b49\u65bc"],"Before":["\u4e4b\u524d"],"After":["\u4e4b\u5f8c"],"Before (inc)":["\u4e4b\u524d (\u542b)"],"After (inc)":["\u4e4b\u5f8c (\u542b)"],"Doesn't contain":["\u4e0d\u5305\u542b"],"Between (inc)":["\u5169\u8005\u4e4b\u9593 (\u542b)"],"Not on":["\u4e0d\u5728\u6307\u5b9a\u6642\u9593"],"In the past":["\u904e\u53bb\u6642\u9593"],"Over":["\u8d85\u904e"],"True":["True"],"False":["False"],"Days":["\u5929"],"Weeks":["\u9031"],"Months":["\u6708"],"Years":["\u5e74"],"Days ago":["\u5929\u524d"],"Weeks ago":["\u9031\u524d"],"Months ago":["\u500b\u6708\u524d"],"Years ago":["\u5e74\u524d"],"Unit":["\u55ae\u4f4d"],"The max. value must be greater than the min. value.":["\u6700\u5927\u503c\u5fc5\u9808\u5927\u65bc\u6700\u5c0f\u503c\u3002"],"Min.":["\u6700\u5c0f\u503c"],"Max.":["\u6700\u5927\u503c"],"%1$s is less than: <\/Name>%2$s<\/Value>":["[%1$s] \u5c0f\u65bc: <\/Name>%2$s<\/Value>"],"%1$s is greater than: <\/Name>%2$s<\/Value>":["[%1$s] \u5927\u65bc: <\/Name>%2$s<\/Value>"],"%1$s is less than or equal to: <\/Name>%2$s<\/Value>":["[%1$s] \u5c0f\u65bc\u6216\u7b49\u65bc: <\/Name>%2$s<\/Value>"],"%1$s is greater than or equal to: <\/Name>%2$s<\/Value>":["[%1$s] \u5927\u65bc\u6216\u7b49\u65bc: <\/Name>%2$s<\/Value>"],"%1$s contains: <\/Name>%2$s<\/Value>":["[%1$s] \u5305\u542b: <\/Name>%2$s<\/Value>"],"Value must be a valid email address.":["\u503c\u5fc5\u9808\u662f\u6709\u6548\u7684\u96fb\u5b50\u90f5\u4ef6\u5730\u5740\u3002"],"Value must be an integer.":["\u503c\u5fc5\u9808\u662f\u6574\u6578\u3002"],"Value must be true, false, or undefined":["\u503c\u5fc5\u9808\u662f true\u3001false \u6216\u672a\u5b9a\u7fa9\u3002"],"Value must be an array.":["\u503c\u5fc5\u9808\u662f\u9663\u5217\u3002"],"Every value must be a string.":["\u6bcf\u500b\u503c\u90fd\u5fc5\u9808\u662f\u5b57\u4e32\u3002"],"Yesterday":["\u6628\u5929"],"Past week":["\u904e\u53bb\u4e00\u9031"],"Past month":["\u904e\u53bb\u4e00\u500b\u6708"],"Last 7 days":["\u6700\u8fd1 7 \u5929"],"Last 30 days":["\u6700\u8fd1 30 \u5929"],"Month to date":["\u6708\u521d\u81f3\u4eca"],"Last year":["\u53bb\u5e74"],"Year to date":["\u5e74\u521d\u81f3\u4eca"],"From":["\u958b\u59cb\u6642\u9593:"],"To":["\u7d50\u675f\u6642\u9593:"],"Value must be a valid color.":["\u503c\u5fc5\u9808\u662f\u6709\u6548\u7684\u8272\u5f69\u3002"],"Value must be a number.":["\u503c\u5fc5\u9808\u662f\u6578\u5b57\u3002"],"On":["\u5728\u6307\u5b9a\u6642\u9593"],"Starts with":["\u958b\u59cb\u70ba"],"Date time":["\u65e5\u671f\u6642\u9593"],"Optional":["\u9078\u586b"],"%s (Already in use)":["%s (\u4f7f\u7528\u4e2d)"],"Multiple
elements detected. The duplicate may be in your content or template. This is not valid HTML and may cause accessibility issues. Please change this HTML element.":["\u5df2\u5075\u6e2c\u5230\u591a\u500b
\u5143\u7d20\uff0c\u9019\u4ee3\u8868\u9019\u500b\u7db2\u7ad9\u7684\u5167\u5bb9\u6216\u7bc4\u672c\u4e2d\u53ef\u80fd\u6709\u91cd\u8907\u5143\u7d20\u3002\u9019\u4e0d\u662f\u6709\u6548\u7684 HTML \u5143\u7d20\uff0c\u4e26\u4e14\u6703\u5c0e\u81f4\u7121\u969c\u7919\u5de5\u5177\u7522\u751f\u554f\u984c\u3002\u8acb\u8b8a\u66f4\u9019\u500b HTML \u5143\u7d20\u3002"],"The element should be used for links that navigate to a different page or to a different section within the same page.":[" \u5143\u7d20\u61c9\u7528\u65bc\u5c0e\u89bd\u81f3\u4e0d\u540c\u9801\u9762\u6216\u540c\u4e00\u9801\u9762\u4e2d\u4e0d\u540c\u5340\u6bb5\u7684\u9023\u7d50\u3002"],"The + } +
+ ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/EditorSidebar.tsx b/plugins/code-snippets/js/components/EditorSidebar/EditorSidebar.tsx new file mode 100644 index 0000000..f9808cd --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/EditorSidebar.tsx @@ -0,0 +1,56 @@ +import React from 'react' +import { Spinner } from '@wordpress/components' +import { isRTL } from '@wordpress/i18n' +import { useSnippetForm } from '../../hooks/useSnippetForm' +import { isNetworkAdmin } from '../../utils/screen' +import { isCondition } from '../../utils/snippets/snippets' +import { ConditionModalButton } from '../ConditionModal/ConditionModalButton' +import { SnippetLocationInput } from '../SnippetForm/fields/SnippetLocationInput' +import { Notices } from '../SnippetForm/page/Notices' +import { ShortcodeInfo } from './actions/ShortcodeInfo' +import { MultisiteSharingSettings } from './controls/MultisiteSharingSettings' +import { ExportButtons } from './actions/ExportButtons' +import { SubmitButtons } from './actions/SubmitButtons' +import { ActivationSwitch } from './controls/ActivationSwitch' +import { DeleteButton } from './actions/DeleteButton' +import { PriorityInput } from './controls/PriorityInput' +import { RTLControl } from './controls/RTLControl' +import type { Dispatch, SetStateAction } from 'react' + +export interface EditorSidebarProps { + setIsUpgradeDialogOpen: Dispatch> +} + +export const EditorSidebar: React.FC = ({ setIsUpgradeDialogOpen }) => { + const { snippet, isWorking } = useSnippetForm() + + return ( +
+
+ {snippet.id && !isCondition(snippet) ? : null} + + {isNetworkAdmin() ? : null} + + {isRTL() ? : null} + + + + + + + {snippet.id + ?
+ + +
: null} +
+ +

+ + {isWorking ? : ''} +

+ + +
+ ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/actions/DeleteButton.tsx b/plugins/code-snippets/js/components/EditorSidebar/actions/DeleteButton.tsx new file mode 100644 index 0000000..7d584e5 --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/actions/DeleteButton.tsx @@ -0,0 +1,52 @@ +import { addQueryArgs } from '@wordpress/url' +import React, { useState } from 'react' +import { __ } from '@wordpress/i18n' +import { useRestAPI } from '../../../hooks/useRestAPI' +import { Button } from '../../common/Button' +import { ConfirmDialog } from '../../common/ConfirmDialog' +import { useSnippetForm } from '../../../hooks/useSnippetForm' + +export const DeleteButton: React.FC = () => { + const { snippetsAPI } = useRestAPI() + const { snippet, setIsWorking, isWorking, handleRequestError } = useSnippetForm() + const [isDialogOpen, setIsDialogOpen] = useState(false) + + return ( + <> + + + setIsDialogOpen(false)} + onConfirm={() => { + setIsDialogOpen(false) + setIsWorking(true) + + snippetsAPI.delete(snippet) + .then(() => { + setIsWorking(false) + window.location.replace(addQueryArgs(window.CODE_SNIPPETS?.urls.manage, { result: 'deleted' })) + }) + .catch((error: unknown) => handleRequestError(error, __('Could not delete snippet.', 'code-snippets'))) + }} + > +

+ {__('You are about to delete this snippet.', 'code-snippets')}{' '} + {__('Are you sure?', 'code-snippets')} +

+
+ + ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/actions/ExportButtons.tsx b/plugins/code-snippets/js/components/EditorSidebar/actions/ExportButtons.tsx new file mode 100644 index 0000000..d4b08d8 --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/actions/ExportButtons.tsx @@ -0,0 +1,56 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { useRestAPI } from '../../../hooks/useRestAPI' +import { Button } from '../../common/Button' +import { downloadSnippetExportFile } from '../../../utils/files' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import type { Snippet } from '../../../types/Snippet' +import type { SnippetsExport } from '../../../types/schema/SnippetsExport' + +interface ExportButtonProps { + name: string + label: string + makeRequest: (snippet: Snippet) => Promise +} + +const ExportButton: React.FC = ({ name, label, makeRequest }) => { + const { snippet, isWorking, setIsWorking, handleRequestError } = useSnippetForm() + + const handleClick = () => { + setIsWorking(true) + + makeRequest(snippet) + .then(response => downloadSnippetExportFile(response, snippet)) + // translators: %s: error message. + .catch((error: unknown) => handleRequestError(error, __('Could not download export file.', 'code-snippets'))) + .finally(() => setIsWorking(false)) + } + + return ( + + ) +} + +export const ExportButtons: React.FC = () => { + const { snippetsAPI } = useRestAPI() + + return ( +
+ + + {window.CODE_SNIPPETS_EDIT?.enableDownloads + ? + : null} +
+ ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/actions/ShortcodeInfo.tsx b/plugins/code-snippets/js/components/EditorSidebar/actions/ShortcodeInfo.tsx new file mode 100644 index 0000000..c5128ad --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/actions/ShortcodeInfo.tsx @@ -0,0 +1,157 @@ +import React, { useState } from 'react' +import { CheckboxControl, ExternalLink, Modal } from '@wordpress/components' +import { __ } from '@wordpress/i18n' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import { Button } from '../../common/Button' +import { CopyToClipboardButton } from '../../common/CopyToClipboardButton' +import type { Dispatch, SetStateAction } from 'react' + +type ShortcodeAtts = Record + +const buildShortcodeTag = (tag: string, atts: ShortcodeAtts): string => + `[${[ + tag, + ...Object.entries(atts) + .filter(([, value]) => Boolean(value)) + .map(([att, value]) => + 'boolean' === typeof value ? att : `${att}=${JSON.stringify(value)}`) + ].filter(Boolean).join(' ')}]` + +const SHORTCODE_TAG = 'code_snippet' + +interface ShortcodeOptions { + php: boolean + format: boolean + shortcodes: boolean +} + +interface CheckboxListProps { + options: T[] + checked: Record + disabled: boolean + setChecked: Dispatch>> + optionLabels: Partial> + optionDescriptions: Partial> +} + +const CheckboxList = ({ + options, + checked, + disabled, + setChecked, + optionLabels, + optionDescriptions +}: CheckboxListProps) => +
    + {options.map(option => +
  • + + setChecked(previous => ({ ...previous, [option]: value }))} + /> +
  • )} +
+ +const ShortcodeDescription = () => +

+ {__('Copy the below shortcode to insert this snippet into a post, page, or other content.', 'code-snippets')}{'\n'} + {__('You can also use the Classic Editor button, Block editor (Pro) or Elementor widget (Pro).', 'code-snippets')}{'\n'} + + + {__('Learn more', 'code-snippets')} + +

+ +const OPTION_LABELS: Record = { + php: __('Evaluate PHP code', 'code-snippets'), + format: __('Add paragraphs and formatting', 'code-snippets'), + shortcodes: __('Evaluate additional shortcode tags', 'code-snippets') +} + +const OPTION_DESCRIPTIONS: Record = { + php: __('Run code within tags.', 'code-snippets'), + format: __('Wrap output in paragraphs and apply formatting.', 'code-snippets'), + shortcodes: __('Replace [shortcodes] embedded within the snippet.', 'code-snippets') +} + +const ModalContent = () => { + const { snippet, isReadOnly } = useSnippetForm() + + const [options, setOptions] = useState(() => ({ + php: snippet.code.includes(' + + +

+ {shortcodeTag} + +

+ +

+

{__('Shortcode Options', 'code-snippets')}

+ + +

+ + ) +} + +export const ShortcodeInfo: React.FC = () => { + const { snippet, isReadOnly } = useSnippetForm() + const [isModalOpen, setIsModalOpen] = useState(false) + + return 'content' === snippet.scope && snippet.id + ?
+

{__('Shortcode', 'code-snippets')}

+ + + {isModalOpen + ? setIsModalOpen(false)} + > +
+ +
+ +
+ +
+
+ : null} +
+ : null +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/actions/SubmitButtons.tsx b/plugins/code-snippets/js/components/EditorSidebar/actions/SubmitButtons.tsx new file mode 100644 index 0000000..01167a0 --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/actions/SubmitButtons.tsx @@ -0,0 +1,83 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { SubmitSnippetAction } from '../../../hooks/useSubmitSnippet' +import { isCondition } from '../../../utils/snippets/snippets' +import { isNetworkAdmin } from '../../../utils/screen' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import { SubmitButton } from '../../common/SubmitButton' +import type { SubmitButtonProps } from '../../common/SubmitButton' + +const SaveButton = (props: SubmitButtonProps) => { + const { snippet } = useSnippetForm() + + return ( + + ) +} + +interface ActivateOrDeactivateButtonProps { + primaryActivate: boolean +} + +const ActivateOrDeactivateButton: React.FC = ({ primaryActivate }) => { + const { snippet, isWorking } = useSnippetForm() + + switch (true) { + case isCondition(snippet) || snippet.shared_network && isNetworkAdmin(): + return null + + case 'single-use' === snippet.scope: + return ( + + ) + + case snippet.active: + return ( + + ) + + default: + case !snippet.active: + return ( + + ) + } +} + +export const SubmitButtons: React.FC = () => { + const { snippet } = useSnippetForm() + + const activateByDefault = + !!window.CODE_SNIPPETS_EDIT?.activateByDefault && + !snippet.active && 'single-use' !== snippet.scope && + (!snippet.shared_network || !isNetworkAdmin()) + + return <> + {activateByDefault && } + + {!activateByDefault && } + +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/controls/ActivationSwitch.tsx b/plugins/code-snippets/js/components/EditorSidebar/controls/ActivationSwitch.tsx new file mode 100644 index 0000000..16f3cc4 --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/controls/ActivationSwitch.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import { SubmitSnippetAction, useSubmitSnippet } from '../../../hooks/useSubmitSnippet' +import { handleUnknownError } from '../../../utils/errors' + +export const ActivationSwitch = () => { + const { snippet, isWorking } = useSnippetForm() + const { submitSnippet } = useSubmitSnippet() + + return ( +
+

{__('Status')}

+ + +
+ ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/controls/MultisiteSharingSettings.tsx b/plugins/code-snippets/js/components/EditorSidebar/controls/MultisiteSharingSettings.tsx new file mode 100644 index 0000000..cefc8e8 --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/controls/MultisiteSharingSettings.tsx @@ -0,0 +1,41 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import { Tooltip } from '../../common/Tooltip' + +export const MultisiteSharingSettings: React.FC = () => { + const { snippet, setSnippet, isReadOnly } = useSnippetForm() + + return ( +
+

+ {__('Share with Subsites', 'code-snippets')} +

+ + + {__('Instead of running on every site, allow this snippet to be activated on individual sites on the network.', 'code-snippets')} + + + +
+ ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/controls/PriorityInput.tsx b/plugins/code-snippets/js/components/EditorSidebar/controls/PriorityInput.tsx new file mode 100644 index 0000000..2f8128d --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/controls/PriorityInput.tsx @@ -0,0 +1,34 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import { Tooltip } from '../../common/Tooltip' + +export const PriorityInput = () => { + const { snippet, isReadOnly, setSnippet } = useSnippetForm() + + return ( +
+

+ +

+ + + {__('Snippets with a lower priority number will run before those with a higher number.', 'code-snippets')} + + + setSnippet(previous => ({ + ...previous, + priority: parseInt(event.target.value, 10) + }))} + /> +
+ ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/controls/RTLControl.tsx b/plugins/code-snippets/js/components/EditorSidebar/controls/RTLControl.tsx new file mode 100644 index 0000000..2dce2b2 --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/controls/RTLControl.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { useSnippetForm } from '../../../hooks/useSnippetForm' + +export const RTLControl: React.FC = () => { + const { codeEditorInstance } = useSnippetForm() + + return ( +
+

+ +

+ + +
+ ) +} diff --git a/plugins/code-snippets/js/components/EditorSidebar/index.ts b/plugins/code-snippets/js/components/EditorSidebar/index.ts new file mode 100644 index 0000000..09684c9 --- /dev/null +++ b/plugins/code-snippets/js/components/EditorSidebar/index.ts @@ -0,0 +1 @@ +export * from './EditorSidebar' diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/FileUploadForm.tsx b/plugins/code-snippets/js/components/Import/FromFileUpload/FileUploadForm.tsx new file mode 100644 index 0000000..6369b89 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/FileUploadForm.tsx @@ -0,0 +1,201 @@ +import React, { useState, useRef, useEffect } from 'react' +import { __ } from '@wordpress/i18n' +import { Button } from '../../common/Button' +import { + DuplicateActionSelector, + DragDropUploadArea, + SelectedFilesList, + SnippetSelectionTable, + ImportResultDisplay +} from './components' +import { ImportCard } from '../shared' +import { + useFileSelection, + useSnippetSelection, + useImportWorkflow +} from './hooks' + +type DuplicateAction = 'ignore' | 'replace' | 'skip' +type Step = 'upload' | 'select' + +export const FileUploadForm: React.FC = () => { + const [duplicateAction, setDuplicateAction] = useState('ignore') + const [currentStep, setCurrentStep] = useState('upload') + const selectSectionRef = useRef(null) + + const fileSelection = useFileSelection() + const importWorkflow = useImportWorkflow() + const snippetSelection = useSnippetSelection(importWorkflow.availableSnippets) + + useEffect(() => { + if (currentStep === 'select' && selectSectionRef.current) { + selectSectionRef.current.scrollIntoView({ + behavior: 'smooth', + block: 'start' + }) + } + }, [currentStep]) + + const handleFileSelect = (files: FileList | null) => { + fileSelection.handleFileSelect(files) + importWorkflow.clearUploadResult() + } + + const handleParseFiles = async () => { + if (!fileSelection.selectedFiles) return + + const success = await importWorkflow.parseFiles(fileSelection.selectedFiles) + if (success) { + snippetSelection.clearSelection() + setCurrentStep('select') + } + } + + const handleImportSelected = async () => { + const snippetsToImport = snippetSelection.getSelectedSnippets() + await importWorkflow.importSnippets(snippetsToImport, duplicateAction) + } + + const handleBackToUpload = () => { + setCurrentStep('upload') + fileSelection.clearFiles() + snippetSelection.clearSelection() + importWorkflow.resetWorkflow() + } + + const isUploadDisabled = !fileSelection.selectedFiles || + fileSelection.selectedFiles.length === 0 || + importWorkflow.isUploading + + const isImportDisabled = snippetSelection.selectedSnippets.size === 0 || + importWorkflow.isImporting + + return ( +
+
+

{__('Upload one or more Code Snippets export files and the snippets will be imported.', 'code-snippets')}

+ +

+ {__('Afterward, you will need to visit the ', 'code-snippets')} + + {__('All Snippets', 'code-snippets')} + + {__(' page to activate the imported snippets.', 'code-snippets')} +

+ + {currentStep === 'upload' && ( + <> + + {(!importWorkflow.uploadResult || !importWorkflow.uploadResult.success) && ( + <> + + + +

{__('Choose Files', 'code-snippets')}

+

+ {__('Choose one or more Code Snippets (.xml or .json) files to parse and preview.', 'code-snippets')} +

+ + + + {fileSelection.selectedFiles && fileSelection.selectedFiles.length > 0 && ( + + )} + +
+ +
+
+ + )} + + )} + + {currentStep === 'select' && importWorkflow.availableSnippets.length > 0 && !importWorkflow.uploadResult?.success && ( + +
+ +
+
+
+

{__('Available Snippets', 'code-snippets')} ({importWorkflow.availableSnippets.length})

+

+ {__('Select the snippets you want to import:', 'code-snippets')} +

+
+
+ + +
+
+ + + +
+ + +
+
+ )} + + {importWorkflow.uploadResult && ( + + )} +
+
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/components/DragDropUploadArea.tsx b/plugins/code-snippets/js/components/Import/FromFileUpload/components/DragDropUploadArea.tsx new file mode 100644 index 0000000..1c8b602 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/components/DragDropUploadArea.tsx @@ -0,0 +1,66 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { useDragAndDrop } from '../hooks/useDragAndDrop' + +interface DragDropUploadAreaProps { + fileInputRef: React.RefObject + onFileSelect: (files: FileList | null) => void + disabled?: boolean +} + +export const DragDropUploadArea: React.FC = ({ + fileInputRef, + onFileSelect, + disabled = false +}) => { + const { dragOver, handleDragOver, handleDragLeave, handleDrop } = useDragAndDrop({ + onFilesDrop: onFileSelect + }) + + const handleClick = () => { + if (!disabled) { + fileInputRef.current?.click() + } + } + + return ( + <> +
+
📁
+

+ {__('Drag and drop files here, or click to browse', 'code-snippets')} +

+

+ {__('Supports JSON and XML files', 'code-snippets')} +

+
+ + onFileSelect(e.target.files)} + style={{ display: 'none' }} + disabled={disabled} + /> + + ) +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/components/DuplicateActionSelector.tsx b/plugins/code-snippets/js/components/Import/FromFileUpload/components/DuplicateActionSelector.tsx new file mode 100644 index 0000000..b4757da --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/components/DuplicateActionSelector.tsx @@ -0,0 +1,70 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { ImportCard } from '../../shared' + +type DuplicateAction = 'ignore' | 'replace' | 'skip' + +interface DuplicateActionSelectorProps { + value: DuplicateAction + onChange: (action: DuplicateAction) => void +} + +export const DuplicateActionSelector: React.FC = ({ + value, + onChange +}) => { + return ( + +

{__('Duplicate Snippets', 'code-snippets')}

+

+ {__('What should happen if an existing snippet is found with an identical name to an imported snippet?', 'code-snippets')} +

+ +
+
+ + + + + +
+
+
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/components/ImportResultDisplay.tsx b/plugins/code-snippets/js/components/Import/FromFileUpload/components/ImportResultDisplay.tsx new file mode 100644 index 0000000..92c762a --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/components/ImportResultDisplay.tsx @@ -0,0 +1,74 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { ImportCard } from '../../shared' + +interface ImportResult { + success: boolean + message: string + imported?: number + warnings?: string[] +} + +interface ImportResultDisplayProps { + result: ImportResult +} + +export const ImportResultDisplay: React.FC = ({ result }) => { + return ( + +
+
+ + {result.success ? '✓' : '✕'} + +
+
+

+ {result.success + ? __('Import Successful!', 'code-snippets') + : __('Import Failed', 'code-snippets') + } +

+

+ {result.message} +

+ + {result.success && ( +

+ {__('Go to ', 'code-snippets')} + + {__('All Snippets', 'code-snippets')} + + {__(' to activate your imported snippets.', 'code-snippets')} +

+ )} + + {result.warnings && result.warnings.length > 0 && ( +
+

+ {__('Warnings:', 'code-snippets')} +

+
    + {result.warnings.map((warning, index) => ( +
  • + {warning} +
  • + ))} +
+
+ )} +
+
+
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/components/SelectedFilesList.tsx b/plugins/code-snippets/js/components/Import/FromFileUpload/components/SelectedFilesList.tsx new file mode 100644 index 0000000..3bf11aa --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/components/SelectedFilesList.tsx @@ -0,0 +1,65 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { formatFileSize } from '../utils/fileUtils' + +interface SelectedFilesListProps { + files: FileList + onRemoveFile: (index: number) => void +} + +export const SelectedFilesList: React.FC = ({ + files, + onRemoveFile +}) => { + return ( +
+

+ {__('Selected Files:', 'code-snippets')} ({files.length}) +

+
+ {Array.from(files).map((file, index) => ( +
+
+ 📄 +
+
{file.name}
+
+ {formatFileSize(file.size)} +
+
+
+ +
+ ))} +
+
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/components/SnippetSelectionTable.tsx b/plugins/code-snippets/js/components/Import/FromFileUpload/components/SnippetSelectionTable.tsx new file mode 100644 index 0000000..8a59d19 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/components/SnippetSelectionTable.tsx @@ -0,0 +1,90 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import type { ImportableSnippet } from '../../../../hooks/useFileUploadAPI' + +interface SnippetSelectionTableProps { + snippets: ImportableSnippet[] + selectedSnippets: Set + isAllSelected: boolean + onSnippetToggle: (snippetId: number | string) => void + onSelectAll: () => void +} + +export const SnippetSelectionTable: React.FC = ({ + snippets, + selectedSnippets, + isAllSelected, + onSnippetToggle, + onSelectAll +}) => { + const getTypeColor = (type: string): string => { + switch (type) { + case 'css': return '#9B59B6' + case 'js': return '#FFEB3B' + case 'html': return '#EF6A36' + default: return '#1D97C6' + } + } + + const truncateDescription = (description: string | undefined): string => { + const desc = description || __('No description', 'code-snippets') + return desc.length > 50 ? desc.substring(0, 50) + '...' : desc + } + + return ( + + + + + + + + + + + + {snippets.map(snippet => ( + + + + + + + + ))} + +
+ + {__('Name', 'code-snippets')}{__('Type', 'code-snippets')}{__('Description', 'code-snippets')}{__('Tags', 'code-snippets')}
+ onSnippetToggle(snippet.table_data.id)} + /> + + {snippet.table_data.title} + {snippet.source_file && ( +
+ from {snippet.source_file} +
+ )} +
+ + {snippet.table_data.type} + + + {truncateDescription(snippet.table_data.description)} + {snippet.table_data.tags || '—'}
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/components/index.ts b/plugins/code-snippets/js/components/Import/FromFileUpload/components/index.ts new file mode 100644 index 0000000..d058110 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/components/index.ts @@ -0,0 +1,5 @@ +export { DuplicateActionSelector } from './DuplicateActionSelector' +export { DragDropUploadArea } from './DragDropUploadArea' +export { SelectedFilesList } from './SelectedFilesList' +export { SnippetSelectionTable } from './SnippetSelectionTable' +export { ImportResultDisplay } from './ImportResultDisplay' diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/index.ts b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/index.ts new file mode 100644 index 0000000..5826fc3 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/index.ts @@ -0,0 +1,4 @@ +export { useDragAndDrop } from './useDragAndDrop' +export { useFileSelection } from './useFileSelection' +export { useSnippetSelection } from './useSnippetSelection' +export { useImportWorkflow } from './useImportWorkflow' diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useDragAndDrop.ts b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useDragAndDrop.ts new file mode 100644 index 0000000..f6c3b0b --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useDragAndDrop.ts @@ -0,0 +1,36 @@ +import { useState } from 'react' + +interface UseDragAndDropProps { + onFilesDrop: (files: FileList) => void +} + +export const useDragAndDrop = ({ onFilesDrop }: UseDragAndDropProps) => { + const [dragOver, setDragOver] = useState(false) + + const handleDragOver = (e: React.DragEvent) => { + e.preventDefault() + setDragOver(true) + } + + const handleDragLeave = (e: React.DragEvent) => { + e.preventDefault() + setDragOver(false) + } + + const handleDrop = (e: React.DragEvent) => { + e.preventDefault() + setDragOver(false) + + const files = e.dataTransfer.files + if (files.length > 0) { + onFilesDrop(files) + } + } + + return { + dragOver, + handleDragOver, + handleDragLeave, + handleDrop + } +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useFileSelection.ts b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useFileSelection.ts new file mode 100644 index 0000000..333fa45 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useFileSelection.ts @@ -0,0 +1,42 @@ +import { useState, useRef } from 'react' +import { removeFileFromList } from '../utils/fileUtils' + +export const useFileSelection = () => { + const [selectedFiles, setSelectedFiles] = useState(null) + const fileInputRef = useRef(null) + + const handleFileSelect = (files: FileList | null) => { + setSelectedFiles(files) + } + + const removeFile = (index: number) => { + if (!selectedFiles) return + + const newFiles = removeFileFromList(selectedFiles, index) + setSelectedFiles(newFiles) + + if (fileInputRef.current) { + fileInputRef.current.files = newFiles + } + } + + const clearFiles = () => { + setSelectedFiles(null) + if (fileInputRef.current) { + fileInputRef.current.value = '' + } + } + + const triggerFileInput = () => { + fileInputRef.current?.click() + } + + return { + selectedFiles, + fileInputRef, + handleFileSelect, + removeFile, + clearFiles, + triggerFileInput + } +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useImportWorkflow.ts b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useImportWorkflow.ts new file mode 100644 index 0000000..cbffe75 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useImportWorkflow.ts @@ -0,0 +1,117 @@ +import { useState } from 'react' +import { __ } from '@wordpress/i18n' +import { useFileUploadAPI, type ImportableSnippet } from '../../../../hooks/useFileUploadAPI' +import { isNetworkAdmin } from '../../../../utils/screen' + +type DuplicateAction = 'ignore' | 'replace' | 'skip' + +interface UploadResult { + success: boolean + message: string + imported?: number + warnings?: string[] +} + +export const useImportWorkflow = () => { + const [isUploading, setIsUploading] = useState(false) + const [isImporting, setIsImporting] = useState(false) + const [availableSnippets, setAvailableSnippets] = useState([]) + const [uploadResult, setUploadResult] = useState(null) + + const fileUploadAPI = useFileUploadAPI() + + const parseFiles = async (files: FileList): Promise => { + if (!files || files.length === 0) { + alert(__('Please select files to upload.', 'code-snippets')) + return false + } + + setIsUploading(true) + setUploadResult(null) + + try { + const response = await fileUploadAPI.parseFiles({ files }) + + setAvailableSnippets(response.data.snippets) + + if (response.data.warnings && response.data.warnings.length > 0) { + setUploadResult({ + success: true, + message: response.data.message, + warnings: response.data.warnings + }) + } + + return true + + } catch (error) { + console.error('Parse error:', error) + setUploadResult({ + success: false, + message: error instanceof Error ? error.message : __('An unknown error occurred.', 'code-snippets') + }) + return false + } finally { + setIsUploading(false) + } + } + + const importSnippets = async ( + snippetsToImport: ImportableSnippet[], + duplicateAction: DuplicateAction + ): Promise => { + if (snippetsToImport.length === 0) { + alert(__('Please select snippets to import.', 'code-snippets')) + return false + } + + setIsImporting(true) + setUploadResult(null) + + try { + const response = await fileUploadAPI.importSnippets({ + snippets: snippetsToImport, + duplicate_action: duplicateAction, + network: isNetworkAdmin() + }) + + setUploadResult({ + success: true, + message: response.data.message, + imported: response.data.imported + }) + + return true + + } catch (error) { + console.error('Import error:', error) + setUploadResult({ + success: false, + message: error instanceof Error ? error.message : __('An unknown error occurred.', 'code-snippets') + }) + return false + } finally { + setIsImporting(false) + } + } + + const resetWorkflow = () => { + setAvailableSnippets([]) + setUploadResult(null) + } + + const clearUploadResult = () => { + setUploadResult(null) + } + + return { + isUploading, + isImporting, + availableSnippets, + uploadResult, + parseFiles, + importSnippets, + resetWorkflow, + clearUploadResult + } +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useSnippetSelection.ts b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useSnippetSelection.ts new file mode 100644 index 0000000..6d16cfe --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/hooks/useSnippetSelection.ts @@ -0,0 +1,45 @@ +import { useState } from 'react' +import type { ImportableSnippet } from '../../../../hooks/useFileUploadAPI' + +export const useSnippetSelection = (availableSnippets: ImportableSnippet[]) => { + const [selectedSnippets, setSelectedSnippets] = useState>(new Set()) + + const handleSnippetToggle = (snippetId: number | string) => { + const newSelected = new Set(selectedSnippets) + if (newSelected.has(snippetId)) { + newSelected.delete(snippetId) + } else { + newSelected.add(snippetId) + } + setSelectedSnippets(newSelected) + } + + const handleSelectAll = () => { + if (selectedSnippets.size === availableSnippets.length) { + setSelectedSnippets(new Set()) + } else { + setSelectedSnippets(new Set(availableSnippets.map(snippet => snippet.table_data.id))) + } + } + + const clearSelection = () => { + setSelectedSnippets(new Set()) + } + + const getSelectedSnippets = () => { + return availableSnippets.filter(snippet => + selectedSnippets.has(snippet.table_data.id) + ) + } + + const isAllSelected = selectedSnippets.size === availableSnippets.length && availableSnippets.length > 0 + + return { + selectedSnippets, + handleSnippetToggle, + handleSelectAll, + clearSelection, + getSelectedSnippets, + isAllSelected + } +} diff --git a/plugins/code-snippets/js/components/Import/FromFileUpload/utils/fileUtils.ts b/plugins/code-snippets/js/components/Import/FromFileUpload/utils/fileUtils.ts new file mode 100644 index 0000000..6ade360 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromFileUpload/utils/fileUtils.ts @@ -0,0 +1,17 @@ +export const formatFileSize = (bytes: number): string => { + if (bytes === 0) return '0 Bytes' + const k = 1024 + const sizes = ['Bytes', 'KB', 'MB', 'GB'] + const i = Math.floor(Math.log(bytes) / Math.log(k)) + return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i] +} + +export const removeFileFromList = (fileList: FileList, indexToRemove: number): FileList => { + const dt = new DataTransfer() + for (let i = 0; i < fileList.length; i++) { + if (i !== indexToRemove) { + dt.items.add(fileList[i]) + } + } + return dt.files +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/ImportForm.tsx b/plugins/code-snippets/js/components/Import/FromOtherPlugins/ImportForm.tsx new file mode 100644 index 0000000..5c61cc5 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/ImportForm.tsx @@ -0,0 +1,142 @@ +import React, { useState } from 'react' +import { __ } from '@wordpress/i18n' +import { + ImporterSelector, + ImportOptions, + SimpleSnippetTable, + StatusDisplay +} from './components' +import { ImportCard } from '../shared' +import { + useImporterSelection, + useSnippetImport, + useImportSnippetSelection +} from './hooks' + +export const ImportForm: React.FC = () => { + const [autoAddTags, setAutoAddTags] = useState(false) + + const importerSelection = useImporterSelection() + const snippetImport = useSnippetImport() + const snippetSelection = useImportSnippetSelection(snippetImport.snippets) + + const handleImporterChange = async (newImporter: string) => { + importerSelection.handleImporterChange(newImporter) + snippetSelection.clearSelection() + snippetImport.resetAll() + + if (newImporter) { + await snippetImport.loadSnippets(newImporter) + } + } + + const handleImport = async () => { + const selectedIds = Array.from(snippetSelection.selectedSnippets) + const success = await snippetImport.importSnippets( + importerSelection.selectedImporter, + selectedIds, + autoAddTags, + importerSelection.tagValue + ) + + if (success) { + snippetSelection.clearSelection() + } + } + + if (importerSelection.isLoading) { + return ( +
+

{__('Loading importers...', 'code-snippets')}

+
+ ) + } + + if (importerSelection.error) { + return ( +
+
+

{__('Error loading importers:', 'code-snippets')} {importerSelection.error}

+
+
+ ) + } + + return ( +
+
+

{__('If you are using another Snippets plugin, you can import all existing snippets to your Code Snippets library.', 'code-snippets')}

+ + + + {snippetImport.snippetsError && ( + + )} + + {snippetImport.importError && ( + + )} + + {snippetImport.importSuccess.length > 0 && ( + + )} + + {importerSelection.selectedImporter && + !snippetImport.isLoadingSnippets && + !snippetImport.snippetsError && + snippetImport.snippets.length === 0 && + snippetImport.importSuccess.length === 0 && ( + +
+
📭
+

+ {__('No snippets found', 'code-snippets')} +

+

+ {__('No snippets were found for the selected plugin. Make sure the plugin is installed and has snippets configured.', 'code-snippets')} +

+
+
+ )} + + {snippetImport.snippets.length > 0 && ( + <> + + + + + )} +
+
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/ImportOptions.tsx b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/ImportOptions.tsx new file mode 100644 index 0000000..ac08495 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/ImportOptions.tsx @@ -0,0 +1,52 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { ImportCard } from '../../shared' + +interface ImportOptionsProps { + autoAddTags: boolean + tagValue: string + onAutoAddTagsChange: (enabled: boolean) => void + onTagValueChange: (value: string) => void +} + +export const ImportOptions: React.FC = ({ + autoAddTags, + tagValue, + onAutoAddTagsChange, + onTagValueChange +}) => { + return ( + +

{__('Import options', 'code-snippets')}

+ +
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/ImporterSelector.tsx b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/ImporterSelector.tsx new file mode 100644 index 0000000..bed4d28 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/ImporterSelector.tsx @@ -0,0 +1,50 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import type { Importer } from '../../../../hooks/useImportersAPI' +import { ImportCard } from '../../shared' + +interface ImporterSelectorProps { + importers: Importer[] + selectedImporter: string + onImporterChange: (importerName: string) => void + isLoading: boolean +} + +export const ImporterSelector: React.FC = ({ + importers, + selectedImporter, + onImporterChange, + isLoading +}) => { + return ( + + + + {isLoading && ( +

+ {__('Loading snippets...', 'code-snippets')} +

+ )} +
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/SimpleSnippetTable.tsx b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/SimpleSnippetTable.tsx new file mode 100644 index 0000000..f6c7f8e --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/SimpleSnippetTable.tsx @@ -0,0 +1,102 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { Button } from '../../../common/Button' +import type { ImportableSnippet } from '../../../../hooks/useImportersAPI' +import { ImportCard } from '../../shared' + +interface SimpleSnippetTableProps { + snippets: ImportableSnippet[] + selectedSnippets: Set + onSnippetToggle: (snippetId: number) => void + onSelectAll: () => void + onImport: () => void + isImporting: boolean +} + +export const SimpleSnippetTable: React.FC = ({ + snippets, + selectedSnippets, + onSnippetToggle, + onSelectAll, + onImport, + isImporting +}) => { + const isAllSelected = selectedSnippets.size === snippets.length && snippets.length > 0 + + return ( + +
+
+

{__('Available Snippets', 'code-snippets')} ({snippets.length})

+

{__('We found the following snippets.', 'code-snippets')}

+
+
+ + +
+
+ + + + + + + + + + + {snippets.map(snippet => ( + + + + + + ))} + +
+ + {__('Snippet Name', 'code-snippets')}{__('ID', 'code-snippets')}
+ onSnippetToggle(snippet.table_data.id)} + /> + {snippet.table_data.title}{snippet.table_data.id}
+ +
+ + +
+
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/StatusDisplay.tsx b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/StatusDisplay.tsx new file mode 100644 index 0000000..09e0b39 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/StatusDisplay.tsx @@ -0,0 +1,55 @@ +import React from 'react' +import { __ } from '@wordpress/i18n' +import { ImportCard } from '../../shared' + +interface StatusDisplayProps { + type: 'error' | 'success' + title: string + message: string + showSnippetsLink?: boolean +} + +export const StatusDisplay: React.FC = ({ + type, + title, + message, + showSnippetsLink = false +}) => { + const isError = type === 'error' + + return ( + +
+ + {isError ? '✕' : '✓'} + +
+
+

+ {title} +

+

+ {message} + {showSnippetsLink && ( + <> + {' '} + + {__('Code Snippets Library', 'code-snippets')} + . + + )} +

+
+
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/index.ts b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/index.ts new file mode 100644 index 0000000..3ab18c6 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/components/index.ts @@ -0,0 +1,4 @@ +export { ImporterSelector } from './ImporterSelector' +export { ImportOptions } from './ImportOptions' +export { SimpleSnippetTable } from './SimpleSnippetTable' +export { StatusDisplay } from './StatusDisplay' diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/index.ts b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/index.ts new file mode 100644 index 0000000..e60c863 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/index.ts @@ -0,0 +1,3 @@ +export { useImporterSelection } from './useImporterSelection' +export { useSnippetImport } from './useSnippetImport' +export { useImportSnippetSelection } from './useImportSnippetSelection' diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useImportSnippetSelection.ts b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useImportSnippetSelection.ts new file mode 100644 index 0000000..298f6a6 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useImportSnippetSelection.ts @@ -0,0 +1,45 @@ +import { useState } from 'react' +import type { ImportableSnippet } from '../../../../hooks/useImportersAPI' + +export const useImportSnippetSelection = (availableSnippets: ImportableSnippet[]) => { + const [selectedSnippets, setSelectedSnippets] = useState>(new Set()) + + const handleSnippetToggle = (snippetId: number) => { + const newSelected = new Set(selectedSnippets) + if (newSelected.has(snippetId)) { + newSelected.delete(snippetId) + } else { + newSelected.add(snippetId) + } + setSelectedSnippets(newSelected) + } + + const handleSelectAll = () => { + if (selectedSnippets.size === availableSnippets.length) { + setSelectedSnippets(new Set()) + } else { + setSelectedSnippets(new Set(availableSnippets.map(snippet => snippet.table_data.id))) + } + } + + const clearSelection = () => { + setSelectedSnippets(new Set()) + } + + const getSelectedSnippets = () => { + return availableSnippets.filter(snippet => + selectedSnippets.has(snippet.table_data.id) + ) + } + + const isAllSelected = selectedSnippets.size === availableSnippets.length && availableSnippets.length > 0 + + return { + selectedSnippets, + handleSnippetToggle, + handleSelectAll, + clearSelection, + getSelectedSnippets, + isAllSelected + } +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useImporterSelection.ts b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useImporterSelection.ts new file mode 100644 index 0000000..71080a3 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useImporterSelection.ts @@ -0,0 +1,42 @@ +import { useState, useEffect } from 'react' +import { useImportersAPI, type Importer } from '../../../../hooks/useImportersAPI' + +export const useImporterSelection = () => { + const [importers, setImporters] = useState([]) + const [selectedImporter, setSelectedImporter] = useState('') + const [isLoading, setIsLoading] = useState(true) + const [error, setError] = useState(null) + const [tagValue, setTagValue] = useState('') + + const importersAPI = useImportersAPI() + + useEffect(() => { + const fetchImporters = async () => { + try { + const response = await importersAPI.fetchAll() + setImporters(response.data) + } catch (err) { + setError(err instanceof Error ? err.message : 'Unknown error') + } finally { + setIsLoading(false) + } + } + + fetchImporters() + }, [importersAPI]) + + const handleImporterChange = (newImporter: string) => { + setSelectedImporter(newImporter) + setTagValue(`imported-${newImporter}`) + } + + return { + importers, + selectedImporter, + isLoading, + error, + tagValue, + setTagValue, + handleImporterChange + } +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useSnippetImport.ts b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useSnippetImport.ts new file mode 100644 index 0000000..a20a60b --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/hooks/useSnippetImport.ts @@ -0,0 +1,107 @@ +import { useState } from 'react' +import { __ } from '@wordpress/i18n' +import { useImportersAPI, type ImportableSnippet } from '../../../../hooks/useImportersAPI' +import { isNetworkAdmin } from '../../../../utils/screen' + +export const useSnippetImport = () => { + const [snippets, setSnippets] = useState([]) + const [isLoadingSnippets, setIsLoadingSnippets] = useState(false) + const [snippetsError, setSnippetsError] = useState(null) + const [isImporting, setIsImporting] = useState(false) + const [importError, setImportError] = useState(null) + const [importSuccess, setImportSuccess] = useState([]) + + const importersAPI = useImportersAPI() + + const loadSnippets = async (importerName: string): Promise => { + if (!importerName) { + alert(__('Please select an importer.', 'code-snippets')) + return false + } + + setIsLoadingSnippets(true) + setSnippetsError(null) + setSnippets([]) + clearResults() + + try { + const response = await importersAPI.fetchSnippets(importerName) + setSnippets(response.data) + return true + } catch (err) { + setSnippetsError(err instanceof Error ? err.message : 'Unknown error') + return false + } finally { + setIsLoadingSnippets(false) + } + } + + const importSnippets = async ( + importerName: string, + selectedSnippetIds: number[], + autoAddTags: boolean, + tagValue: string + ): Promise => { + if (selectedSnippetIds.length === 0) { + alert(__('Please select snippets to import.', 'code-snippets')) + return false + } + + if (!importerName) { + alert(__('Please select an importer.', 'code-snippets')) + return false + } + + setIsImporting(true) + setImportError(null) + setImportSuccess([]) + + try { + const response = await importersAPI.importSnippets(importerName, { + ids: selectedSnippetIds, + network: isNetworkAdmin(), + auto_add_tags: autoAddTags, + tag_value: autoAddTags ? tagValue : undefined + }) + + setImportSuccess(response.data.imported) + + if (response.data.imported.length > 0) { + setSnippets([]) + return true + } else { + alert(__('No snippets were imported.', 'code-snippets')) + return false + } + } catch (err) { + setImportError(err instanceof Error ? err.message : 'Unknown error') + return false + } finally { + setIsImporting(false) + } + } + + const clearResults = () => { + setImportSuccess([]) + setImportError(null) + } + + const resetAll = () => { + setSnippets([]) + clearResults() + setSnippetsError(null) + } + + return { + snippets, + isLoadingSnippets, + snippetsError, + isImporting, + importError, + importSuccess, + loadSnippets, + importSnippets, + clearResults, + resetAll + } +} diff --git a/plugins/code-snippets/js/components/Import/FromOtherPlugins/index.ts b/plugins/code-snippets/js/components/Import/FromOtherPlugins/index.ts new file mode 100644 index 0000000..977c810 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/FromOtherPlugins/index.ts @@ -0,0 +1 @@ +export * from './ImportForm' diff --git a/plugins/code-snippets/js/components/Import/ImportApp.tsx b/plugins/code-snippets/js/components/Import/ImportApp.tsx new file mode 100644 index 0000000..2d036bd --- /dev/null +++ b/plugins/code-snippets/js/components/Import/ImportApp.tsx @@ -0,0 +1,62 @@ +import React, { useState, useEffect } from 'react' +import { __ } from '@wordpress/i18n' +import { FileUploadForm } from './FromFileUpload/FileUploadForm' +import { ImportForm } from './FromOtherPlugins/ImportForm' +import { ImportSection } from './shared' + +type TabType = 'upload' | 'plugins' + +export const ImportApp: React.FC = () => { + const [activeTab, setActiveTab] = useState('upload') + + useEffect(() => { + const urlParams = new URLSearchParams(window.location.search) + const tabParam = urlParams.get('tab') as TabType + if (tabParam === 'plugins' || tabParam === 'upload') { + setActiveTab(tabParam) + } + }, []) + + const handleTabChange = (tab: TabType) => { + setActiveTab(tab) + + const url = new URL(window.location.href) + url.searchParams.set('tab', tab) + window.history.replaceState({}, '', url) + } + + return ( + + ) +} diff --git a/plugins/code-snippets/js/components/Import/shared/components/ImportCard.tsx b/plugins/code-snippets/js/components/Import/shared/components/ImportCard.tsx new file mode 100644 index 0000000..64d8182 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/shared/components/ImportCard.tsx @@ -0,0 +1,45 @@ +import React from 'react' +import classnames from 'classnames' +import type { HTMLAttributes } from 'react' + +export interface ImportCardProps extends Omit, 'className'> { + children: React.ReactNode + className?: string + variant?: 'default' | 'controls' +} + +export const ImportCard = React.forwardRef(({ + children, + className, + variant = 'default', + style, + ...props +}, ref) => { + const cardStyle: React.CSSProperties = { + backgroundColor: '#ffffff', + padding: '25px', + borderRadius: '5px', + border: '1px solid #e0e0e0', + marginBottom: '10px', + width: '100%', + ...style + } + + return ( +
+ {children} +
+ ) +}) + +ImportCard.displayName = 'ImportCard' diff --git a/plugins/code-snippets/js/components/Import/shared/components/ImportSection.tsx b/plugins/code-snippets/js/components/Import/shared/components/ImportSection.tsx new file mode 100644 index 0000000..262798c --- /dev/null +++ b/plugins/code-snippets/js/components/Import/shared/components/ImportSection.tsx @@ -0,0 +1,33 @@ +import React from 'react' +import type { HTMLAttributes } from 'react' + +export interface ImportSectionProps extends Omit, 'style'> { + children: React.ReactNode + active?: boolean + className?: string + style?: React.CSSProperties +} + +export const ImportSection: React.FC = ({ + children, + active = false, + className, + style, + ...props +}) => { + const sectionStyle: React.CSSProperties = { + display: active ? 'block' : 'none', + paddingTop: 0, + ...style + } + + return ( +
+ {children} +
+ ) +} diff --git a/plugins/code-snippets/js/components/Import/shared/components/index.ts b/plugins/code-snippets/js/components/Import/shared/components/index.ts new file mode 100644 index 0000000..c59b6b1 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/shared/components/index.ts @@ -0,0 +1,4 @@ +export { ImportCard } from './ImportCard' +export type { ImportCardProps } from './ImportCard' +export { ImportSection } from './ImportSection' +export type { ImportSectionProps } from './ImportSection' diff --git a/plugins/code-snippets/js/components/Import/shared/index.ts b/plugins/code-snippets/js/components/Import/shared/index.ts new file mode 100644 index 0000000..cb64ac1 --- /dev/null +++ b/plugins/code-snippets/js/components/Import/shared/index.ts @@ -0,0 +1 @@ +export * from './components' diff --git a/plugins/code-snippets/js/components/SnippetForm/SnippetForm.tsx b/plugins/code-snippets/js/components/SnippetForm/SnippetForm.tsx new file mode 100644 index 0000000..10ac3ff --- /dev/null +++ b/plugins/code-snippets/js/components/SnippetForm/SnippetForm.tsx @@ -0,0 +1,192 @@ +import React, { useState } from 'react' +import classnames from 'classnames' +import { __ } from '@wordpress/i18n' +import { addQueryArgs } from '@wordpress/url' +import { WithRestAPIContext } from '../../hooks/useRestAPI' +import { WithSnippetsListContext, useSnippetsList } from '../../hooks/useSnippetsList' +import { SubmitSnippetAction, useSubmitSnippet } from '../../hooks/useSubmitSnippet' +import { handleUnknownError } from '../../utils/errors' +import { createSnippetObject, getSnippetType, isCondition, validateSnippet } from '../../utils/snippets/snippets' +import { WithSnippetFormContext, useSnippetForm } from '../../hooks/useSnippetForm' +import { ConfirmDialog } from '../common/ConfirmDialog' +import { UpsellDialog } from '../common/UpsellDialog' +import { EditorSidebar } from '../EditorSidebar' +import { UpsellBanner } from '../common/UpsellBanner' +import { SnippetTypeInput } from './fields/SnippetTypeInput' +import { TagsEditor } from './fields/TagsEditor' +import { CodeEditor } from './fields/CodeEditor' +import { DescriptionEditor } from './fields/DescriptionEditor' +import { NameInput } from './fields/NameInput' +import { PageHeading } from './page/PageHeading' +import type { PropsWithChildren } from 'react' +import type { Snippet } from '../../types/Snippet' + +const editFormClassName = ({ snippet, isReadOnly, isExpanded }: { + snippet: Snippet, + isReadOnly: boolean, + isExpanded: boolean +}) => + classnames( + 'snippet-form', + isExpanded ? 'snippet-form-expanded' : 'snippet-form-collapsed', + `${snippet.scope}-snippet`, + `${getSnippetType(snippet)}-snippet`, + `${snippet.id ? 'saved' : 'new'}-snippet`, + `${snippet.active ? 'active' : 'inactive'}-snippet`, + { + 'erroneous-snippet': !!snippet.code_error, + 'read-only-snippet': isReadOnly + } + ) + +interface ConfirmSubmitDialogProps { + doSubmit: (action: SubmitSnippetAction | undefined) => void + submitAction: SubmitSnippetAction | undefined + setSubmitAction: (action: SubmitSnippetAction | undefined) => void + validationWarning: string | undefined + setValidationWarning: (warning: string | undefined) => void +} + +const ConfirmSubmitDialog: React.FC = ({ + doSubmit, + submitAction, + setSubmitAction, + validationWarning, + setValidationWarning +}) => + { + setSubmitAction(undefined) + setValidationWarning(undefined) + }} + onConfirm={() => { + doSubmit(submitAction) + setSubmitAction(undefined) + setValidationWarning(undefined) + }} + > +

{`${validationWarning} ${__('Continue?', 'code-snippets')}`}

+
+ +interface EditFormProps extends PropsWithChildren { + className?: string +} + +const EditForm: React.FC = ({ children, className }) => { + const { submitSnippet } = useSubmitSnippet() + const { snippet } = useSnippetForm() + const { refreshSnippetsList } = useSnippetsList() + + const [validationWarning, setValidationWarning] = useState() + const [submitAction, setSubmitAction] = useState() + + const doSubmit = (action?: SubmitSnippetAction) => { + submitSnippet(action) + .then(response => { + if (response && 0 !== response.id && window.CODE_SNIPPETS) { + if (window.location.href.toString().includes(window.CODE_SNIPPETS.urls.addNew)) { + document.title = document.title + .replace(__('Add New Snippet', 'code-snippets'), __('Edit Snippet', 'code-snippets')) + .replace(__('Add New Condition', 'code-snippets'), __('Edit Condition', 'code-snippets')) + + const newUrl = addQueryArgs(window.CODE_SNIPPETS.urls.edit, { id: response.id }) + window.history.pushState({}, document.title, newUrl) + } + } + }) + .then(refreshSnippetsList) + .catch(handleUnknownError) + } + + const handleSubmit = (event: React.FormEvent) => { + event.preventDefault() + + const action = Object.values(SubmitSnippetAction).find(actionName => + actionName === document.activeElement?.getAttribute('name')) + + const validationWarning = validateSnippet(snippet) + + if (validationWarning) { + setValidationWarning(validationWarning) + setSubmitAction(action) + } else { + doSubmit(action) + } + } + + return ( + <> +
+ {children} +
+ + + + ) +} + +const ConditionsEditor: React.FC = () => { + const { snippet } = useSnippetForm() + + return isCondition(snippet) + ?
+

{__('This snippet type is not supported in this version of Code Snippets.')}

+
+ : null +} + +const EditFormWrap: React.FC = () => { + const { snippet, isReadOnly } = useSnippetForm() + const [isExpanded, setIsExpanded] = useState(false) + const [isUpgradeDialogOpen, setIsUpgradeDialogOpen] = useState(false) + + return ( +
+

+ {isCondition(snippet) + ? + {__('Back to all conditions', 'code-snippets')} + + : + {__('Back to all snippets', 'code-snippets')} + } +

+ + + + +
+
+ + +
+ + + +
+ +
+ + + +
+ + +
+ + +
+ ) +} + +export const SnippetForm: React.FC = () => + + + createSnippetObject(window.CODE_SNIPPETS_EDIT?.snippet)}> + + + + diff --git a/plugins/code-snippets/js/components/SnippetForm/fields/CodeEditor.tsx b/plugins/code-snippets/js/components/SnippetForm/fields/CodeEditor.tsx new file mode 100644 index 0000000..076e5d0 --- /dev/null +++ b/plugins/code-snippets/js/components/SnippetForm/fields/CodeEditor.tsx @@ -0,0 +1,94 @@ +import React, { useEffect, useRef } from 'react' +import { __ } from '@wordpress/i18n' +import { useSubmitSnippet } from '../../../hooks/useSubmitSnippet' +import { handleUnknownError } from '../../../utils/errors' +import { isMacOS } from '../../../utils/screen' +import { useSnippetForm } from '../../../hooks/useSnippetForm' +import { Button } from '../../common/Button' +import { ExpandIcon } from '../../common/icons/ExpandIcon' +import { MinimiseIcon } from '../../common/icons/MinimiseIcon' +import { CodeEditorShortcuts } from './CodeEditorShortcuts' +import type { Dispatch, RefObject, SetStateAction } from 'react' + +interface EditorTextareaProps { + textareaRef: RefObject +} + +const EditorTextarea: React.FC = ({ textareaRef }) => { + const { snippet, setSnippet } = useSnippetForm() + + return ( +
+ '; +} diff --git a/plugins/code-snippets/php/settings/settings-fields.php b/plugins/code-snippets/php/settings/settings-fields.php new file mode 100644 index 0000000..72262cc --- /dev/null +++ b/plugins/code-snippets/php/settings/settings-fields.php @@ -0,0 +1,263 @@ +> + */ +function get_default_settings(): array { + static $defaults; + + if ( isset( $defaults ) ) { + return $defaults; + } + + $defaults = [ + 'general' => [ + 'activate_by_default' => true, + 'enable_tags' => true, + 'enable_description' => true, + 'visual_editor_rows' => 5, + 'list_order' => 'priority-asc', + 'disable_prism' => false, + 'hide_upgrade_menu' => false, + 'complete_uninstall' => false, + 'enable_flat_files' => false, + ], + 'editor' => [ + 'indent_with_tabs' => true, + 'tab_size' => 4, + 'indent_unit' => 4, + 'font_size' => 14, + 'wrap_lines' => true, + 'code_folding' => true, + 'line_numbers' => true, + 'auto_close_brackets' => true, + 'highlight_selection_matches' => true, + 'highlight_active_line' => true, + 'keymap' => 'default', + 'theme' => 'default', + ], + 'version-switch' => [ + 'selected_version' => '', + ], + 'debug' => [ + 'enable_version_change' => false, + ], + ]; + + $defaults = apply_filters( 'code_snippets_settings_defaults', $defaults ); + + return $defaults; +} + +/** + * Retrieve the settings fields + * + * @return array> + */ +function get_settings_fields(): array { + static $fields; + + if ( isset( $fields ) ) { + return $fields; + } + + $fields = []; + + $fields['debug'] = [ + 'database_update' => [ + 'name' => __( 'Database Table Upgrade', 'code-snippets' ), + 'type' => 'action', + 'label' => __( 'Upgrade Database Table', 'code-snippets' ), + 'desc' => __( 'Use this button to manually upgrade the Code Snippets database table. This action will only affect the snippets table and should be used only when necessary.', 'code-snippets' ), + ], + 'reset_caches' => [ + 'name' => __( 'Reset Caches', 'code-snippets' ), + 'type' => 'action', + 'desc' => __( 'Use this button to manually clear snippets caches.', 'code-snippets' ), + ], + 'enable_version_change' => [ + 'name' => __( 'Version Change', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Enable the ability to switch or rollback versions of the Code Snippets core plugin.', 'code-snippets' ), + ], + ]; + + $fields['version-switch'] = [ + 'version_switcher' => [ + 'name' => __( 'Switch Version', 'code-snippets' ), + 'type' => 'callback', + 'render_callback' => [ '\\Code_Snippets\\Settings\\Version_Switch', 'render_version_switch_field' ], + ], + 'refresh_versions' => [ + 'name' => __( 'Refresh Versions', 'code-snippets' ), + 'type' => 'callback', + 'render_callback' => [ '\\Code_Snippets\\Settings\\Version_Switch', 'render_refresh_versions_field' ], + ], + 'version_warning' => [ + 'name' => '', + 'type' => 'callback', + 'render_callback' => [ '\\Code_Snippets\\Settings\\Version_Switch', 'render_version_switch_warning' ], + ], + ]; + + $fields['general'] = [ + 'activate_by_default' => [ + 'name' => __( 'Activate by Default', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( "Make the 'Save and Activate' button the default action when saving a snippet.", 'code-snippets' ), + ], + 'enable_tags' => [ + 'name' => __( 'Enable Snippet Tags', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Show snippet tags on admin pages.', 'code-snippets' ), + ], + 'enable_description' => [ + 'name' => __( 'Enable Snippet Descriptions', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Show snippet descriptions on admin pages.', 'code-snippets' ), + ], + 'visual_editor_rows' => [ + 'name' => __( 'Description Editor Height', 'code-snippets' ), + 'type' => 'number', + 'label' => _x( 'rows', 'unit', 'code-snippets' ), + 'min' => 0, + ], + 'list_order' => [ + 'name' => __( 'Snippets List Order', 'code-snippets' ), + 'type' => 'select', + 'desc' => __( 'Default way to order snippets on the All Snippets admin menu.', 'code-snippets' ), + 'options' => [ + 'priority-asc' => __( 'Priority', 'code-snippets' ), + 'name-asc' => __( 'Name (A-Z)', 'code-snippets' ), + 'name-desc' => __( 'Name (Z-A)', 'code-snippets' ), + 'modified-desc' => __( 'Modified (latest first)', 'code-snippets' ), + 'modified-asc' => __( 'Modified (oldest first)', 'code-snippets' ), + ], + ], + 'disable_prism' => [ + 'name' => __( 'Disable Syntax Highlighter', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Disable syntax highlighting when displaying snippet code on the front-end.', 'code-snippets' ), + ], + ]; + + if ( ! code_snippets()->licensing->is_licensed() ) { + $fields['general']['hide_upgrade_menu'] = [ + 'name' => __( 'Hide Upgrade Notices', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Hide notices inviting you to upgrade to Code Snippets Pro.', 'code-snippets' ), + ]; + } + + if ( ! is_multisite() || is_main_site() ) { + $fields['general']['complete_uninstall'] = [ + 'name' => __( 'Complete Uninstall', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'When the plugin is deleted from the Plugins menu, also delete all snippets and plugin settings.', 'code-snippets' ), + ]; + } + + $fields['editor'] = [ + 'indent_with_tabs' => [ + 'name' => __( 'Indent With Tabs', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Use hard tabs instead of spaces for indentation.', 'code-snippets' ), + 'codemirror' => 'indentWithTabs', + ], + 'tab_size' => [ + 'name' => __( 'Tab Size', 'code-snippets' ), + 'type' => 'number', + 'desc' => __( 'The width of a tab character.', 'code-snippets' ), + 'label' => _x( 'spaces', 'unit', 'code-snippets' ), + 'codemirror' => 'tabSize', + 'min' => 0, + ], + 'indent_unit' => [ + 'name' => __( 'Indent Unit', 'code-snippets' ), + 'type' => 'number', + 'desc' => __( 'The number of spaces to indent a block.', 'code-snippets' ), + 'label' => _x( 'spaces', 'unit', 'code-snippets' ), + 'codemirror' => 'indentUnit', + 'min' => 0, + ], + 'font_size' => [ + 'name' => __( 'Font Size', 'code-snippets' ), + 'type' => 'number', + 'label' => _x( 'px', 'unit', 'code-snippets' ), + 'codemirror' => 'fontSize', + 'min' => 8, + 'max' => 28, + ], + 'wrap_lines' => [ + 'name' => __( 'Wrap Lines', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Soft-wrap long lines of code instead of horizontally scrolling.', 'code-snippets' ), + 'codemirror' => 'lineWrapping', + ], + + 'code_folding' => [ + 'name' => __( 'Code Folding', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Allow folding functions or other blocks into a single line.', 'code-snippets' ), + 'codemirror' => 'foldGutter', + ], + 'line_numbers' => [ + 'name' => __( 'Line Numbers', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Show line numbers to the left of the editor.', 'code-snippets' ), + 'codemirror' => 'lineNumbers', + ], + 'auto_close_brackets' => [ + 'name' => __( 'Auto Close Brackets', 'code-snippets' ), + 'type' => 'checkbox', + 'label' => __( 'Auto-close brackets and quotes when typed.', 'code-snippets' ), + 'codemirror' => 'autoCloseBrackets', + ], + 'highlight_selection_matches' => [ + 'name' => __( 'Highlight Selection Matches', 'code-snippets' ), + 'label' => __( 'Highlight all instances of a currently selected word.', 'code-snippets' ), + 'type' => 'checkbox', + 'codemirror' => 'highlightSelectionMatches', + ], + 'highlight_active_line' => [ + 'name' => __( 'Highlight Active Line', 'code-snippets' ), + 'label' => __( 'Highlight the line that is currently being edited.', 'code-snippets' ), + 'type' => 'checkbox', + 'codemirror' => 'styleActiveLine', + ], + 'keymap' => [ + 'name' => __( 'Keymap', 'code-snippets' ), + 'type' => 'select', + 'desc' => __( 'The set of keyboard shortcuts to use in the code editor.', 'code-snippets' ), + 'options' => [ + 'default' => __( 'Default', 'code-snippets' ), + 'vim' => __( 'Vim', 'code-snippets' ), + 'emacs' => __( 'Emacs', 'code-snippets' ), + 'sublime' => __( 'Sublime Text', 'code-snippets' ), + ], + 'codemirror' => 'keyMap', + ], + 'theme' => [ + 'name' => __( 'Theme', 'code-snippets' ), + 'type' => 'select', + 'options' => get_editor_theme_list(), + 'codemirror' => 'theme', + ], + ]; + + $fields = apply_filters( 'code_snippets_settings_fields', $fields ); + + return $fields; +} diff --git a/plugins/code-snippets/php/settings/settings.php b/plugins/code-snippets/php/settings/settings.php new file mode 100644 index 0000000..1f87056 --- /dev/null +++ b/plugins/code-snippets/php/settings/settings.php @@ -0,0 +1,351 @@ +> + */ +function get_settings_values(): array { + $settings = wp_cache_get( CACHE_KEY, CACHE_GROUP ); + if ( $settings ) { + return $settings; + } + + $settings = get_default_settings(); + $saved = get_self_option( are_settings_unified(), OPTION_NAME, array() ); + + foreach ( $settings as $section => $fields ) { + if ( isset( $saved[ $section ] ) ) { + $settings[ $section ] = array_replace( $fields, $saved[ $section ] ); + } + } + + wp_cache_set( CACHE_KEY, $settings, CACHE_GROUP ); + return $settings; +} + +/** + * Retrieve an individual setting field value + * + * @param string $section ID of the section the setting belongs to. + * @param string $field ID of the setting field. + * + * @return mixed + */ +function get_setting( string $section, string $field ) { + $settings = get_settings_values(); + + return $settings[ $section ][ $field ] ?? null; +} + +/** + * Update a single setting to a new value. + * + * @param string $section ID of the section the setting belongs to. + * @param string $field ID of the setting field. + * @param mixed $new_value Setting value. Expected to not be SQL-escaped. + * + * @return bool False if value was not updated. True if value was updated. + */ +function update_setting( string $section, string $field, $new_value ): bool { + $settings = get_settings_values(); + + $settings[ $section ][ $field ] = $new_value; + + wp_cache_set( CACHE_KEY, $settings, CACHE_GROUP ); + return update_self_option( are_settings_unified(), OPTION_NAME, $settings ); +} + +/** + * Retrieve the settings sections + * + * @return array Settings sections. + */ +function get_settings_sections(): array { + $sections = array( + 'general' => __( 'General', 'code-snippets' ), + 'editor' => __( 'Code Editor', 'code-snippets' ), + 'debug' => __( 'Debug', 'code-snippets' ), + ); + + // Only show the Version section when the debug setting to enable version changes is enabled. + $enable_version = get_setting( 'debug', 'enable_version_change' ); + if ( $enable_version ) { + $sections['version-switch'] = __( 'Version', 'code-snippets' ); + } + + return apply_filters( 'code_snippets_settings_sections', $sections ); +} + +/** + * Register settings sections, fields, etc + */ +function register_plugin_settings() { + if ( are_settings_unified() ) { + if ( ! get_site_option( OPTION_NAME ) ) { + add_site_option( OPTION_NAME, get_default_settings() ); + } + } elseif ( ! get_option( OPTION_NAME ) ) { + add_option( OPTION_NAME, get_default_settings() ); + } + + // Register the setting. + register_setting( + OPTION_GROUP, + OPTION_NAME, + [ 'sanitize_callback' => __NAMESPACE__ . '\\sanitize_settings' ] + ); + + // Register settings sections. + foreach ( get_settings_sections() as $section_id => $section_name ) { + add_settings_section( $section_id, $section_name, '__return_empty_string', 'code-snippets' ); + } + + // Register settings fields. Only register fields for sections that exist (some sections may be gated by settings). + $registered_sections = get_settings_sections(); + foreach ( get_settings_fields() as $section_id => $fields ) { + if ( ! isset( $registered_sections[ $section_id ] ) ) { + continue; + } + + foreach ( $fields as $field_id => $field ) { + $field_object = new Setting_Field( $section_id, $field_id, $field ); + add_settings_field( $field_id, $field['name'], [ $field_object, 'render' ], 'code-snippets', $section_id ); + } + } + + // Add editor preview as a field. + add_settings_field( + 'editor_preview', + __( 'Editor Preview', 'code-snippets' ), + __NAMESPACE__ . '\\render_editor_preview', + 'code-snippets', + 'editor' + ); +} + +add_action( 'admin_init', __NAMESPACE__ . '\\register_plugin_settings' ); + +/** + * Sanitize a single setting value. + * + * @param array $field Setting field information. + * @param mixed $input_value User input setting value, or null if missing. + * + * @return mixed Sanitized setting value, or null if unset. + */ +function sanitize_setting_value( array $field, $input_value ) { + switch ( $field['type'] ) { + + case 'checkbox': + return 'on' === $input_value; + + case 'number': + return intval( $input_value ); + + case 'select': + $select_options = array_map( 'strval', array_keys( $field['options'] ) ); + return in_array( strval( $input_value ), $select_options, true ) ? $input_value : null; + + case 'checkboxes': + $results = []; + + if ( ! empty( $input_value ) ) { + foreach ( $field['options'] as $option_id => $option_label ) { + if ( isset( $input_value[ $option_id ] ) && 'on' === $input_value[ $option_id ] ) { + $results[] = $option_id; + } + } + } + + return $results; + + case 'text': + case 'hidden': + return trim( sanitize_text_field( $input_value ) ); + + case 'callback': + return isset( $field['sanitize_callback'] ) && is_callable( $field['sanitize_callback'] ) ? + call_user_func( $field['sanitize_callback'], $input_value ) : + null; + + default: + return null; + } +} + +/** + * Process settings actions. + * + * @param array $input Provided settings input. + * + * @return array|null New $input value to return, or null to continue with settings update process. + */ +function process_settings_actions( array $input ): ?array { + + if ( isset( $input['reset_settings'] ) ) { + add_settings_error( + OPTION_NAME, + 'settings_reset', + __( 'All settings have been reset to their defaults.', 'code-snippets' ), + 'updated' + ); + + delete_option( 'code_snippets_cloud_settings' ); + return []; + } + + if ( isset( $input['debug']['database_update'] ) ) { + code_snippets()->db->create_or_upgrade_tables(); + + add_settings_error( + OPTION_NAME, + 'database_update_done', + __( 'Successfully performed database table upgrade.', 'code-snippets' ), + 'updated' + ); + } + + if ( isset( $input['debug']['reset_caches'] ) ) { + Welcome_API::clear_cache(); + clean_snippets_cache( code_snippets()->db->get_table_name( false ) ); + + if ( is_multisite() ) { + clean_snippets_cache( code_snippets()->db->get_table_name( true ) ); + } + + add_settings_error( + OPTION_NAME, + 'snippet_caches_reset', + __( 'Successfully reset snippets caches.', 'code-snippets' ), + 'updated' + ); + } + + return null; +} + +/** + * Validate the settings + * + * @param array> $input The received settings. + * + * @return array> The validated settings. + */ +function sanitize_settings( array $input ): array { + wp_cache_delete( CACHE_KEY, CACHE_GROUP ); + $result = process_settings_actions( $input ); + + if ( ! is_null( $result ) ) { + return $result; + } + + $settings = get_settings_values(); + $updated = false; + + // Don't directly loop through $input as it does not include as deselected checkboxes. + foreach ( get_settings_fields() as $section_id => $fields ) { + foreach ( $fields as $field_id => $field ) { + + // Fetch the corresponding input value from the posted data. + $input_value = $input[ $section_id ][ $field_id ] ?? null; + + // Attempt to sanitize the setting value. + $sanitized_value = sanitize_setting_value( $field, $input_value ); + + $current_value = $settings[ $section_id ][ $field_id ] ?? null; + if ( ! is_null( $sanitized_value ) && $current_value !== $sanitized_value ) { + $settings[ $section_id ][ $field_id ] = $sanitized_value; + $updated = true; + } + } + } + + // Add an updated message. + if ( $updated ) { + add_settings_error( + OPTION_NAME, + 'settings-saved', + __( 'Settings saved.', 'code-snippets' ), + 'updated' + ); + + do_action( 'code_snippets/settings_updated', $settings, $input ); + } + + return $settings; +} diff --git a/plugins/code-snippets/php/snippet-ops.php b/plugins/code-snippets/php/snippet-ops.php new file mode 100644 index 0000000..cfd6619 --- /dev/null +++ b/plugins/code-snippets/php/snippet-ops.php @@ -0,0 +1,771 @@ +|false $scopes List of scopes. Optional. If not provided, will flush the cache for all scopes. + * + * @return void + */ +function clean_active_snippets_cache( string $table_name, $scopes = false ) { + $scope_groups = $scopes ? [ $scopes ] : [ + [ 'head-content', 'footer-content' ], + [ 'global', 'single-use', 'front-end' ], + [ 'global', 'single-use', 'admin' ], + ]; + + foreach ( $scope_groups as $scopes ) { + wp_cache_delete( sprintf( 'active_snippets_%s_%s', sanitize_key( join( '_', $scopes ) ), $table_name ), CACHE_GROUP ); + } +} + +/** + * Flush all snippets caches for a given database table. + * + * @param string $table_name Snippets table name. + * + * @return void + */ +function clean_snippets_cache( string $table_name ) { + wp_cache_delete( "all_snippet_tags_$table_name", CACHE_GROUP ); + wp_cache_delete( "all_snippets_$table_name", CACHE_GROUP ); + clean_active_snippets_cache( $table_name ); +} + +/** + * Retrieve a list of snippets from the database. + * Read operation. + * + * @param array $ids The IDs of the snippets to fetch. + * @param bool|null $network Retrieve multisite-wide snippets (true) or site-wide snippets (false). + * + * @return array List of Snippet objects. + * + * @since 2.0 + */ +function get_snippets( array $ids = array(), ?bool $network = null ): array { + global $wpdb; + + // If only one ID has been passed in, defer to the get_snippet() function. + $ids_count = count( $ids ); + if ( 1 === $ids_count ) { + return array( get_snippet( $ids[0], $network ) ); + } + + $network = DB::validate_network_param( $network ); + $table_name = code_snippets()->db->get_table_name( $network ); + + $snippets = wp_cache_get( "all_snippets_$table_name", CACHE_GROUP ); + + // Fetch all snippets from the database if none are cached. + if ( ! is_array( $snippets ) ) { + $results = $wpdb->get_results( "SELECT * FROM $table_name", ARRAY_A ); + + $snippets = $results ? + array_map( + function ( $snippet_data ) use ( $network ) { + $snippet_data['network'] = $network; + return new Snippet( $snippet_data ); + }, + $results + ) : + array(); + + $snippets = apply_filters( 'code_snippets/get_snippets', $snippets, $network ); + + if ( 0 === $ids_count ) { + wp_cache_set( "all_snippets_$table_name", $snippets, CACHE_GROUP ); + } + } + + // If a list of IDs are provided, narrow down the snippets list. + if ( $ids_count > 0 ) { + $ids = array_map( 'intval', $ids ); + return array_values( + array_filter( + $snippets, + function ( Snippet $snippet ) use ( $ids ) { + return in_array( $snippet->id, $ids, true ); + } + ) + ); + } + + return $snippets; +} + +/** + * Gets all used tags from the database. + * Read operation. + * + * @since 2.0 + */ +function get_all_snippet_tags() { + global $wpdb; + $table_name = code_snippets()->db->get_table_name(); + $cache_key = "all_snippet_tags_$table_name"; + + $tags = wp_cache_get( $cache_key, CACHE_GROUP ); + if ( $tags ) { + return $tags; + } + + // Grab all tags from the database. + $tags = array(); + $all_tags = $wpdb->get_col( "SELECT tags FROM $table_name" ); + + // Merge all tags into a single array. + foreach ( $all_tags as $snippet_tags ) { + $snippet_tags = code_snippets_build_tags_array( $snippet_tags ); + $tags = array_merge( $snippet_tags, $tags ); + } + + // Remove duplicate tags. + $tags = array_values( array_unique( $tags, SORT_REGULAR ) ); + wp_cache_set( $cache_key, $tags, CACHE_GROUP ); + return $tags; +} + +/** + * Make sure that the tags are a valid array. + * + * @param array|string $tags The tags to convert into an array. + * + * @return array The converted tags. + * + * @since 2.0.0 + */ +function code_snippets_build_tags_array( $tags ): array { + + /* If there are no tags set, return an empty array. */ + if ( empty( $tags ) ) { + return array(); + } + + /* If the tags are set as a string, convert them into an array. */ + if ( is_string( $tags ) ) { + $tags = wp_strip_all_tags( $tags ); + $tags = str_replace( ', ', ',', $tags ); + $tags = explode( ',', $tags ); + } + + /* If we still don't have an array, just convert whatever we do have into one. */ + return (array) $tags; +} + +/** + * Retrieve a single snippets from the database. + * Will return empty snippet object if no snippet ID is specified. + * Read operation. + * + * @param int $id The ID of the snippet to retrieve. 0 to build a new snippet. + * @param bool|null $network Retrieve a multisite-wide snippet (true) or site-wide snippet (false). + * + * @return Snippet A single snippet object. + * + * @since 2.0.0 + */ +function get_snippet( int $id = 0, ?bool $network = null ): Snippet { + global $wpdb; + + $id = absint( $id ); + $network = DB::validate_network_param( $network ); + $table_name = code_snippets()->db->get_table_name( $network ); + + if ( 0 === $id ) { + // If an invalid ID is provided, then return an empty snippet object. + $snippet = new Snippet(); + + } else { + $cached_snippets = wp_cache_get( "all_snippets_$table_name", CACHE_GROUP ); + + // Attempt to fetch snippet from the cached list, if it exists. + if ( is_array( $cached_snippets ) ) { + foreach ( $cached_snippets as $snippet ) { + if ( $snippet->id === $id ) { + return apply_filters( 'code_snippets/get_snippet', $snippet, $id, $network ); + } + } + } + + // Otherwise, retrieve the snippet from the database. + // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching + $snippet_data = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_name WHERE id = %d", $id ) ); + $snippet = new Snippet( $snippet_data ); + } + + $snippet->network = $network; + return apply_filters( 'code_snippets/get_snippet', $snippet, $id, $network ); +} + + +/** + * Ensure the list of shared network snippets is correct if one has been recently activated or deactivated. + * Write operation. + * + * @access private + * + * @param Snippet[] $snippets Snippets that was recently updated. + * + * @return boolean Whether an update was performed. + */ +function update_shared_network_snippets( array $snippets ): bool { + $shared_ids = []; + $unshared_ids = []; + + if ( ! is_multisite() ) { + return false; + } + + foreach ( $snippets as $snippet ) { + if ( $snippet->network ) { + if ( $snippet->shared_network ) { + $shared_ids[] = $snippet->id; + } else { + $unshared_ids[] = $snippet->id; + } + } + } + + if ( ! $shared_ids && ! $unshared_ids ) { + return false; + } + + $existing_shared_ids = get_site_option( 'shared_network_snippets', [] ); + $updated_shared_ids = array_values( array_diff( array_merge( $existing_shared_ids, $shared_ids ), $unshared_ids ) ); + + if ( $existing_shared_ids === $updated_shared_ids ) { + return false; + } + + update_site_option( 'shared_network_snippets', $updated_shared_ids ); + + // Deactivate the snippet on all sites if necessary. + if ( $unshared_ids ) { + $sites = get_sites( [ 'fields' => 'ids' ] ); + + foreach ( $sites as $site ) { + switch_to_blog( $site ); + $active_shared_ids = get_option( 'active_shared_network_snippets' ); + + if ( is_array( $active_shared_ids ) ) { + $active_shared_ids = array_diff( $active_shared_ids, $unshared_ids ); + update_option( 'active_shared_network_snippets', $active_shared_ids ); + } + + clean_active_snippets_cache( code_snippets()->db->ms_table ); + } + + restore_current_blog(); + } + + return true; +} + +/** + * Activates a snippet. + * Write operation. + * + * @param int $id ID of the snippet to activate. + * @param bool|null $network Whether the snippets are multisite-wide (true) or site-wide (false). + * + * @return Snippet|string Snippet object on success, error message on failure. + * @since 2.0.0 + */ +function activate_snippet( int $id, ?bool $network = null ) { + global $wpdb; + $network = DB::validate_network_param( $network ); + $table_name = code_snippets()->db->get_table_name( $network ); + + // Retrieve the snippet code from the database for validation before activating. + $snippet = get_snippet( $id, $network ); + + if ( 0 === $snippet->id ) { + // translators: %d: snippet identifier. + return sprintf( __( 'Could not locate snippet with ID %d.', 'code-snippets' ), $id ); + } + + if('php' == $snippet->type ){ + $validator = new Validator( $snippet->code ); + if ( $validator->validate() ) { + return __( 'Could not activate snippet: code did not pass validation.', 'code-snippets' ); + } + } + + $result = $wpdb->update( + $table_name, + array( 'active' => '1' ), + array( 'id' => $id ), + array( '%d' ), + array( '%d' ) + ); + + if ( ! $result ) { + return __( 'Could not activate snippet.', 'code-snippets' ); + } + + update_shared_network_snippets( [ $snippet ] ); + do_action( 'code_snippets/activate_snippet', $snippet, $network ); + clean_snippets_cache( $table_name ); + return $snippet; +} + +/** + * Activates multiple snippets. + * Write operation. + * + * @param array $ids The IDs of the snippets to activate. + * @param bool|null $network Whether the snippets are multisite-wide (true) or site-wide (false). + * + * @return Snippet[]|null Snippets which were successfully activated, or null on failure. + * + * @since 2.0.0 + */ +function activate_snippets( array $ids, ?bool $network = null ): ?array { + global $wpdb; + $network = DB::validate_network_param( $network ); + $table_name = code_snippets()->db->get_table_name( $network ); + + $snippets = get_snippets( $ids, $network ); + + if ( ! $snippets ) { + return null; + } + + // Loop through each snippet code and validate individually. + $valid_ids = []; + $valid_snippets = []; + + foreach ( $snippets as $snippet ) { + $validator = new Validator( $snippet->code ); + $code_error = $validator->validate(); + + if ( ! $code_error ) { + $valid_ids[] = $snippet->id; + $valid_snippets[] = $snippet; + } + } + + // If there are no valid snippets, then we're done. + if ( ! $valid_ids ) { + return null; + } + + // Build a SQL query containing all IDs, as wpdb::update does not support OR conditionals. + $ids_format = implode( ',', array_fill( 0, count( $valid_ids ), '%d' ) ); + + // phpcs:disable WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare + $rows_updated = $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET active = 1 WHERE id IN ($ids_format)", $valid_ids ) ); + + if ( ! $rows_updated ) { + return null; + } + + update_shared_network_snippets( $valid_snippets ); + do_action( 'code_snippets/activate_snippets', $valid_snippets, $table_name ); + clean_snippets_cache( $table_name ); + return $valid_ids; +} + +/** + * Deactivate a snippet. + * Write operation. + * + * @param int $id ID of the snippet to deactivate. + * @param bool|null $network Whether the snippets are multisite-wide (true) or site-wide (false). + * + * @return Snippet|null Snippet that was deactivated on success, or null on failure. + * + * @since 2.0.0 + */ +function deactivate_snippet( int $id, ?bool $network = null ): ?Snippet { + global $wpdb; + $network = DB::validate_network_param( $network ); + $table = code_snippets()->db->get_table_name( $network ); + + // Set the snippet to inactive. + $result = $wpdb->update( + $table, + array( 'active' => '0' ), + array( 'id' => $id ), + array( '%d' ), + array( '%d' ) + ); + + if ( ! $result ) { + return null; + } + + // Update the recently active list. + $snippet = get_snippet( $id ); + $recently_active = [ $id => time() ] + get_self_option( $network, 'recently_activated_snippets', [] ); + update_self_option( $network, 'recently_activated_snippets', $recently_active ); + + update_shared_network_snippets( [ $snippet ] ); + do_action( 'code_snippets/deactivate_snippet', $id, $network ); + clean_snippets_cache( $table ); + + return $snippet; +} + +/** + * Deletes a snippet from the database. + * Write operation. + * + * @param int $id ID of the snippet to delete. + * @param bool|null $network Delete from network-wide (true) or site-wide (false) table. + * + * @return bool Whether the snippet was deleted successfully. + * + * @since 2.0.0 + */ +function delete_snippet( int $id, ?bool $network = null ): bool { + global $wpdb; + $network = DB::validate_network_param( $network ); + $table = code_snippets()->db->get_table_name( $network ); + + $snippet = get_snippet( $id, $network ); + + $result = $wpdb->delete( + $table, + array( 'id' => $id ), + array( '%d' ) + ); + + if ( $result ) { + do_action( 'code_snippets/delete_snippet', $snippet, $network ); + clean_snippets_cache( $table ); + code_snippets()->cloud_api->delete_snippet_from_transient_data( $id ); + } + + return (bool) $result; +} + +/** + * Trashes a snippet from the database. + * Write operation. + * + * @param int $id ID of the snippet to trash. + * @param bool|null $network Trash from network-wide (true) or site-wide (false) table. + * + * @return bool Whether the snippet was trashed successfully. + * + * @since 3.8.0 + */ +function trash_snippet( int $id, ?bool $network = null ): bool { + global $wpdb; + $network = DB::validate_network_param( $network ); + $table = code_snippets()->db->get_table_name( $network ); + + $snippet = get_snippet( $id, $network ); + + $result = $wpdb->update( + $table, + array( 'active' => '-1' ), + array( 'id' => $id ), + array( '%d' ) + ); + + if ( $result ) { + do_action( 'code_snippets/trash_snippet', $snippet, $network ); + clean_snippets_cache( $table ); + code_snippets()->cloud_api->delete_snippet_from_transient_data( $id ); + } + + return (bool) $result; +} + +/** + * Restore a trashed snippet by setting its active status back to 0 (inactive). + * Write operation. + * + * @param int $id Snippet ID to restore. + * @param bool|null $network Whether the snippet is multisite-wide (true) or site-wide (false). + * + * @return bool Whether the restore was successful. + * + * @since 3.8.0 + */ +function restore_snippet( int $id, ?bool $network = null ): bool { + global $wpdb; + $network = DB::validate_network_param( $network ); + $table = code_snippets()->db->get_table_name( $network ); + + $result = $wpdb->update( + $table, + array( 'active' => '0' ), + array( 'id' => $id ), + array( '%d' ) + ); + + if ( $result ) { + do_action( 'code_snippets/restore_snippet', $id, $network ); + clean_snippets_cache( $table ); + } + + return (bool) $result; +} + +/** + * Test snippet code for errors, augmenting the snippet object. + * + * @param Snippet $snippet Snippet object. + */ +function test_snippet_code( Snippet $snippet ) { + $snippet->code_error = null; + + if ( 'php' !== $snippet->type ) { + return; + } + + $validator = new Validator( $snippet->code ); + $result = $validator->validate(); + + if ( $result ) { + $snippet->code_error = [ $result['message'], $result['line'] ]; + } + + if ( ! $snippet->code_error && 'single-use' !== $snippet->scope ) { + $result = execute_snippet( $snippet->code, $snippet->id, true ); + + if ( $result instanceof ParseError ) { + $snippet->code_error = [ + ucfirst( rtrim( $result->getMessage(), '.' ) ) . '.', + $result->getLine(), + ]; + } + } +} + +/** + * Saves a snippet to the database. + * Write operation. + * + * @param Snippet|array $snippet The snippet to add/update to the database. + * + * @return Snippet|null Updated snippet. + * + * @since 2.0.0 + */ +function save_snippet( $snippet ) { + global $wpdb; + $table = code_snippets()->db->get_table_name( $snippet->network ); + + if ( ! $snippet instanceof Snippet ) { + $snippet = new Snippet( $snippet ); + } + + // Update the last modification date if necessary. + $snippet->update_modified(); + + if ( 'php' === $snippet->type ) { + // Remove tags from beginning and end of snippet. + $snippet->code = preg_replace( '|^\s*<\?(php)?|', '', $snippet->code ); + $snippet->code = preg_replace( '|\?>\s*$|', '', $snippet->code ); + + // Deactivate snippet if code contains errors. + if ( $snippet->active && 'single-use' !== $snippet->scope ) { + test_snippet_code( $snippet ); + + if ( $snippet->code_error ) { + $snippet->active = 0; + } + } + } + + // Increment the revision number unless revision = 1 or revision is not set. + if ( $snippet->revision && $snippet->revision > 1 ) { + $snippet->increment_revision(); + } + + // Shared network snippets are always considered inactive. + $snippet->active = $snippet->active && ! $snippet->shared_network; + + // Build the list of data to insert. + $data = [ + 'name' => $snippet->name, + 'description' => $snippet->desc, + 'code' => $snippet->code, + 'tags' => $snippet->tags_list, + 'scope' => $snippet->scope, + 'condition_id' => intval( $snippet->condition_id ), + 'priority' => $snippet->priority, + 'active' => intval( $snippet->active ), + 'modified' => $snippet->modified, + 'revision' => $snippet->revision, + 'cloud_id' => $snippet->cloud_id ? $snippet->cloud_id : null, + ]; + + // Create a new snippet if the ID is not set. + if ( 0 === $snippet->id ) { + $result = $wpdb->insert( $table, $data, '%s' ); + if ( false === $result ) { + return null; + } + + $snippet->id = $wpdb->insert_id; + do_action( 'code_snippets/create_snippet', $snippet, $table ); + } else { + + // Otherwise, update the snippet data. + $result = $wpdb->update( $table, $data, [ 'id' => $snippet->id ], null, [ '%d' ] ); + if ( false === $result ) { + return null; + } + + do_action( 'code_snippets/update_snippet', $snippet, $table ); + } + + update_shared_network_snippets( [ $snippet ] ); + clean_snippets_cache( $table ); + return $snippet; +} + +/** + * Execute a snippet. + * Execute operation. + * + * Code must NOT be escaped, as it will be executed directly. + * + * @param string $code Snippet code to execute. + * @param integer $id Snippet ID. + * @param boolean $force Force snippet execution, even if save mode is active. + * + * @return ParseError|mixed Code error if encountered during execution, or result of snippet execution otherwise. + * + * @since 2.0.0 + */ +function execute_snippet( string $code, int $id = 0, bool $force = false ) { + /** + * Do not continue if safe mode is active. + * + * @noinspection PhpUndefinedConstantInspection + */ + if ( empty( $code ) || ( ! $force && defined( 'CODE_SNIPPETS_SAFE_MODE' ) && CODE_SNIPPETS_SAFE_MODE ) ) { + return false; + } + + ob_start(); + + try { + $result = eval( $code ); + } catch ( ParseError $parse_error ) { + $result = $parse_error; + } + + ob_end_clean(); + + do_action( 'code_snippets/after_execute_snippet', $code, $id, $result ); + return $result; +} + +/** + * Retrieve a single snippets from the database using its cloud ID. + * + * Read operation. + * + * @param string $cloud_id The Cloud ID of the snippet to retrieve. + * @param boolean|null $multisite Retrieve a multisite-wide snippet (true) or site-wide snippet (false). + * + * @return Snippet|null A single snippet object or null if no snippet was found. + * + * @since 3.5.0 + */ +function get_snippet_by_cloud_id( string $cloud_id, ?bool $multisite = null ): ?Snippet { + global $wpdb; + + $multisite = DB::validate_network_param( $multisite ); + $table_name = code_snippets()->db->get_table_name( $multisite ); + + $cached_snippets = wp_cache_get( "all_snippets_$table_name", CACHE_GROUP ); + + // Attempt to fetch snippet from the cached list, if it exists. + if ( is_array( $cached_snippets ) ) { + foreach ( $cached_snippets as $snippet ) { + if ( $snippet->cloud_id === $cloud_id ) { + return apply_filters( 'code_snippets/get_snippet_by_cloud_id', $snippet, $cloud_id, $multisite ); + } + } + } + + // Otherwise, search for the snippet from the database. + $snippet_data = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_name WHERE cloud_id = %s", $cloud_id ) ); // cache pass, db call ok. + $snippet = $snippet_data ? new Snippet( $snippet_data ) : null; + + return apply_filters( 'code_snippets/get_snippet_by_cloud_id', $snippet, $cloud_id, $multisite ); +} + +/** + * Update a snippet entry given a list of fields. + * Write operation. + * + * @param int $snippet_id ID of the snippet to update. + * @param array $fields An array of fields mapped to their values. + * @param bool|null $network Update in network-wide (true) or site-wide (false) table. + */ +function update_snippet_fields( int $snippet_id, array $fields, ?bool $network = null ) { + global $wpdb; + + $table = code_snippets()->db->get_table_name( $network ); + + // Build a new snippet object for the validation. + $snippet = new Snippet(); + $snippet->id = $snippet_id; + + // Validate fields through the snippet class and copy them into a clean array. + $clean_fields = array(); + + foreach ( $fields as $field => $value ) { + + if ( $snippet->set_field( $field, $value ) ) { + $clean_fields[ $field ] = $snippet->$field; + } + } + + // Update the snippet in the database. + $wpdb->update( $table, $clean_fields, array( 'id' => $snippet->id ), null, array( '%d' ) ); + + do_action( 'code_snippets/update_snippet', $snippet->id, $table ); + clean_snippets_cache( $table ); +} + +function execute_snippet_from_flat_file( $code, $file, int $id = 0, bool $force = false ) { + if ( ! is_file( $file ) ) { + return execute_snippet( $code, $id, $force ); + } + + if ( ! $force && defined( 'CODE_SNIPPETS_SAFE_MODE' ) && CODE_SNIPPETS_SAFE_MODE ) { + return false; + } + + ob_start(); + + try { + require_once $file; + $result = null; + } catch ( ParseError $parse_error ) { + $result = $parse_error; + } catch ( Error $error ) { + $result = $error; + } catch ( Throwable $throwable ) { + $result = $throwable; + } + + ob_end_clean(); + + do_action( 'code_snippets/after_execute_snippet_from_flat_file', $file, $id ); + + return $result ?? null; +} diff --git a/plugins/code-snippets/php/strings.php b/plugins/code-snippets/php/strings.php new file mode 100644 index 0000000..42083b6 --- /dev/null +++ b/plugins/code-snippets/php/strings.php @@ -0,0 +1,52 @@ + __( 'Site front-end stylesheet', 'code-snippets' ), + 'admin-css' => __( 'Administration area stylesheet', 'code-snippets' ), + 'site-head-js' => __( 'JavaScript loaded in the site &lt;head&gt; section', 'code-snippets' ), + 'site-footer-js' => __( 'JavaScript loaded just before the closing &lt;/body&gt; tag', 'code-snippets' ), +); + +// class-content-widget.php. +__( 'Processing Options', 'code-snippets' ); +__( 'Alignment', 'code-snippets' ); +__( 'Left', 'code-snippets' ); +__( 'Center', 'code-snippets' ); +__( 'Right', 'code-snippets' ); +__( 'Justified', 'code-snippets' ); +__( 'Text Color', 'code-snippets' ); +__( 'Select a snippet to show', 'code-snippets' ); + +// class-source-widget.php. +__( 'Code Snippet Source', 'code-snippets' ); +__( 'Functions (PHP)', 'code-snippets' ); +__( 'Content (Mixed)', 'code-snippets' ); +__( 'Styles (CSS)', 'code-snippets' ); +__( 'Scripts (JS)', 'code-snippets' ); +__( 'Highlight Lines', 'code-snippets' ); +__( 'Word Wrap', 'code-snippets' ); +__( 'On', 'code-snippets' ); +__( 'Off', 'code-snippets' ); +__( 'Height', 'code-snippets' ); +__( 'Font Size', 'code-snippets' ); +__( 'Select a snippet to display', 'code-snippets' ); diff --git a/plugins/code-snippets/php/uninstall.php b/plugins/code-snippets/php/uninstall.php new file mode 100644 index 0000000..5afaefb --- /dev/null +++ b/plugins/code-snippets/php/uninstall.php @@ -0,0 +1,110 @@ +query( "DROP TABLE IF EXISTS {$wpdb->prefix}snippets" ); + + delete_option( 'code_snippets_version' ); + delete_option( 'recently_activated_snippets' ); + delete_option( 'code_snippets_settings' ); + + delete_option( 'code_snippets_cloud_settings' ); + delete_transient( 'cs_codevault_snippets' ); + delete_transient( 'cs_local_to_cloud_map' ); +} + +/** + * Clean up data created by this plugin on multisite. + * + * phpcs:disable WordPress.DB.DirectDatabaseQuery.SchemaChange + */ +function uninstall_multisite() { + global $wpdb; + + // Loop through sites. + $blog_ids = get_sites( [ 'fields' => 'ids' ] ); + + foreach ( $blog_ids as $site_id ) { + switch_to_blog( $site_id ); + uninstall_current_site(); + } + + restore_current_blog(); + + // Remove network snippets table. + $wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}ms_snippets" ); + + // Remove saved options. + delete_site_option( 'code_snippets_version' ); + delete_site_option( 'recently_activated_snippets' ); +} + +function delete_flat_files_directory() { + $flat_files_dir = WP_CONTENT_DIR . '/code-snippets'; + + if ( ! is_dir( $flat_files_dir ) ) { + return; + } + + if ( ! function_exists( 'request_filesystem_credentials' ) ) { + require_once ABSPATH . 'wp-admin/includes/file.php'; + } + + global $wp_filesystem; + WP_Filesystem(); + + if ( $wp_filesystem && $wp_filesystem->is_dir( $flat_files_dir ) ) { + $wp_filesystem->delete( $flat_files_dir, true ); + } +} + +/** + * Uninstall the Code Snippets plugin. + * + * @return void + */ +function uninstall_plugin() { + if ( complete_uninstall_enabled() ) { + + if ( is_multisite() ) { + uninstall_multisite(); + } else { + uninstall_current_site(); + } + + delete_flat_files_directory(); + } +} diff --git a/plugins/code-snippets/php/views/import.php b/plugins/code-snippets/php/views/import.php new file mode 100644 index 0000000..11f372d --- /dev/null +++ b/plugins/code-snippets/php/views/import.php @@ -0,0 +1,37 @@ + +
+

+ is_compact_menu() ) { + $this->render_page_title_actions( [ 'manage', 'add', 'settings' ] ); + } + + ?> +

+ +
+
diff --git a/plugins/code-snippets/php/views/manage.php b/plugins/code-snippets/php/views/manage.php new file mode 100644 index 0000000..5b0b719 --- /dev/null +++ b/plugins/code-snippets/php/views/manage.php @@ -0,0 +1,129 @@ + __( 'All Snippets', 'code-snippets' ) ], Plugin::get_types() ); +$current_type = $this->get_current_type(); + +if ( false !== strpos( code_snippets()->version, 'beta' ) ) { + echo '

'; + echo wp_kses( + __( 'Thank you for testing this beta version of Code Snippets. We would love to hear your thoughts.', 'code-snippets' ), + [ 'span' => [ 'class' => [ 'highlight-yellow' ] ] ] + ); + + printf( + ' %s', + esc_url( __( 'https://codesnippets.pro/beta-testing/feedback/', 'code-snippets' ) ), + esc_html__( 'Share feedback', 'code-snippets' ) + ); + echo '

'; +} + +?> + +
+

+ render_page_title_actions( code_snippets()->is_compact_menu() ? [ 'add', 'import', 'settings' ] : [ 'add', 'import' ] ); + + $this->list_table->search_notice(); + ?> +

+ + print_messages(); ?> + + + + [ + __( 'Function snippets are run on your site as if there were in a plugin or theme functions.php file.', 'code-snippets' ), + __( 'Learn more about function snippets →', 'code-snippets' ), + 'https://codesnippets.pro/learn-php/', + ], + 'html' => [ + __( 'Content snippets are bits of reusable PHP and HTML content that can be inserted into posts and pages.', 'code-snippets' ), + __( 'Learn more about content snippets →', 'code-snippets' ), + 'https://codesnippets.pro/learn-html/', + ], + 'css' => [ + __( 'Style snippets are written in CSS and loaded in the admin area or on the site front-end, just like the theme style.css.', 'code-snippets' ), + __( 'Learn more about style snippets →', 'code-snippets' ), + 'https://codesnippets.pro/learn-css/', + ], + 'js' => [ + __( 'Script snippets are loaded on the site front-end in a JavaScript file, either in the head or body sections.', 'code-snippets' ), + __( 'Learn more about javascript snippets →', 'code-snippets' ), + 'https://codesnippets.pro/learn-js/', + ], + 'cloud' => [ + __( 'See all your public and private snippets that are stored in your Code Snippet Cloud codevault.', 'code-snippets' ), + __( 'Learn more about Code Snippets Cloud →', 'code-snippets' ), + 'https://codesnippets.cloud/getstarted/', + ], + ]; + + + if ( isset( $type_info[ $current_type ] ) ) { + $info = $type_info[ $current_type ]; + + printf( + '

%s %s

', + esc_html( $info[0] ), + esc_url( $info[2] ), + esc_html( $info[1] ) + ); + } + + do_action( 'code_snippets/admin/manage/before_list_table' ); + $this->list_table->views(); + + switch ( $current_type ) { + case 'cloud_search': + include_once 'partials/cloud-search.php'; + break; + + default: + include_once 'partials/list-table.php'; + break; + } + + do_action( 'code_snippets/admin/manage', $current_type ); + + ?> +
diff --git a/plugins/code-snippets/php/views/partials/cloud-search.php b/plugins/code-snippets/php/views/partials/cloud-search.php new file mode 100644 index 0000000..078399e --- /dev/null +++ b/plugins/code-snippets/php/views/partials/cloud-search.php @@ -0,0 +1,76 @@ + + +

+ + + + + +

+ +
+ + + ', esc_attr( sanitize_text_field( wp_unslash( $_REQUEST['type'] ) ) ) ); + } + ?> +
+

+ +

+
+
+ + + + +
+
+
+ + cloud_search_list_table->display(); + } + + ?> +
diff --git a/plugins/code-snippets/php/views/partials/list-table-notices.php b/plugins/code-snippets/php/views/partials/list-table-notices.php new file mode 100644 index 0000000..ff6b16e --- /dev/null +++ b/plugins/code-snippets/php/views/partials/list-table-notices.php @@ -0,0 +1,112 @@ + +
+

+ + CODE_SNIPPETS_SAFE_MODE', 'wp-config.php' ); + ?> + + + + +

+
+ __( 'Snippet executed.', 'code-snippets' ), + 'activated' => __( 'Snippet activated.', 'code-snippets' ), + 'activated-multi' => __( 'Selected snippets activated.', 'code-snippets' ), + 'deactivated' => __( 'Snippet deactivated.', 'code-snippets' ), + 'deactivated-multi' => __( 'Selected snippets deactivated.', 'code-snippets' ), + 'deleted' => __( 'Snippet trashed.', 'code-snippets' ), + 'deleted-multi' => __( 'Selected snippets trashed.', 'code-snippets' ), + 'deleted_permanently' => __( 'Snippet permanently deleted.', 'code-snippets' ), + 'deleted-permanently-multi' => __( 'Selected snippets permanently deleted.', 'code-snippets' ), + 'restored' => __( 'Snippet restored.', 'code-snippets' ), + 'restored-multi' => __( 'Selected snippets restored.', 'code-snippets' ), + 'cloned' => __( 'Snippet cloned.', 'code-snippets' ), + 'cloned-multi' => __( 'Selected snippets cloned.', 'code-snippets' ), + 'cloud-refreshed' => __( 'Synced cloud data has been successfully refreshed.', 'code-snippets' ), +]; + +// Add undo link for single snippet trash action +if ( 'deleted' === $result && ! empty( $_REQUEST['ids'] ) ) { + $deleted_ids = sanitize_text_field( $_REQUEST['ids'] ); + $undo_url = wp_nonce_url( + add_query_arg( + [ + 'action' => 'restore', + 'ids' => $deleted_ids, + ] + ), + 'bulk-snippets' + ); + + // translators: %s: Undo URL. + $undo_message = __( 'Snippet trashed. Undo', 'code-snippets' ); + $result_messages['deleted'] = sprintf( $undo_message, esc_url( $undo_url ) ); +} + +// Add undo link for bulk snippet trash action +if ( 'deleted-multi' === $result && ! empty( $_REQUEST['ids'] ) ) { + $deleted_ids = sanitize_text_field( $_REQUEST['ids'] ); + $undo_url = wp_nonce_url( + add_query_arg( array( + 'action' => 'restore', + 'ids' => $deleted_ids, + ) ), + 'bulk-snippets' + ); + + // translators: %s: Undo URL. + $undo_message = __( 'Selected snippets trashed. Undo', 'code-snippets' ); + $result_messages['deleted-multi'] = sprintf( $undo_message, esc_url( $undo_url ) ); +} + +$result_messages = apply_filters( 'code_snippets/manage/result_messages', $result_messages ); + +if ( isset( $result_messages[ $result ] ) ) { + $result_kses = [ + 'strong' => [], + 'a' => [ + 'href' => [], + ], + ]; + + printf( + '

%s

', + wp_kses( $result_messages[ $result ], $result_kses ) + ); +} diff --git a/plugins/code-snippets/php/views/partials/list-table.php b/plugins/code-snippets/php/views/partials/list-table.php new file mode 100644 index 0000000..a956938 --- /dev/null +++ b/plugins/code-snippets/php/views/partials/list-table.php @@ -0,0 +1,33 @@ + + +
+ list_table->search_box( __( 'Search Snippets', 'code-snippets' ), 'search_id' ); + ?> +
+ +
+ + list_table->display(); + ?> +
diff --git a/plugins/code-snippets/php/views/welcome.php b/plugins/code-snippets/php/views/welcome.php new file mode 100644 index 0000000..0531613 --- /dev/null +++ b/plugins/code-snippets/php/views/welcome.php @@ -0,0 +1,200 @@ +api->get_hero_item(); + +$changelog_sections = [ + 'Added' => [ + 'title' => __( 'New features', 'code-snippets' ), + 'icon' => 'lightbulb', + ], + 'Improved' => [ + 'title' => __( 'Improvements', 'code-snippets' ), + 'icon' => 'chart-line', + ], + 'Fixed' => [ + 'title' => __( 'Bug fixes', 'code-snippets' ), + 'icon' => 'buddicons-replies', + ], + 'Other' => [ + 'title' => __( 'Other', 'code-snippets' ), + 'icon' => 'open-folder', + ], +]; + +$plugin_types = [ + 'core' => __( 'Core', 'code-snippets' ), + 'pro' => __( 'Pro', 'code-snippets' ), +]; + +?> + + + + diff --git a/plugins/code-snippets/readme.txt b/plugins/code-snippets/readme.txt new file mode 100644 index 0000000..30781cc --- /dev/null +++ b/plugins/code-snippets/readme.txt @@ -0,0 +1,467 @@ +=== Code Snippets === +Contributors: bungeshea, ver3, lightbulbman, 0aksmith, johnpixle, louiswol94, carolinaop +Donate link: https://codesnippets.pro +Tags: code, snippets, multisite, php, css +License: GPL-2.0-or-later +License URI: license.txt +Stable tag: 3.9.6 +Tested up to: 6.9 + +An easy, clean and simple way to enhance your site with code snippets. + +== Description == + +**✂ Code Snippets** provides an effortless way to enhance your WordPress site. + +**🚀 Upgrade to Code Snippets Pro** for complete CSS, JavaScript, Gutenberg, Elementor and cloud synchronisation integrations. **[Elevate your snippets experience now!](https://codesnippets.pro/pricing)** + +Say goodbye to the hassle of tweaking your theme's `functions.php` file and downloading endless plugins – Code Snippets simplifies the process! + +A snippet is like a mini-plugin for your WordPress site, providing added functionality without the clutter. + +Unlike other solutions that involve dumping code into your `functions.php` file, Code Snippets offers an intuitive graphical interface for seamless integration and real-time execution. Managing snippets is as easy as activating and deactivating plugins, only without the bloat and overhead. + +**🎥 Watch a quick overview by Imran Siddiq:** + +https://youtu.be/uzND-wdSCMQ + +☁️ Each copy of Code Snippets includes full integration with the community-powered [Code Snippets Cloud](https://codesnippets.cloud/) platform, providing easy access to hundreds of tweaks and enhancements ready to power-up any WordPress site. + +**🌐 Connect with us:** + +* [Support Forum](https://wordpress.org/support/plugin/code-snippets) +* [Facebook Community](https://facebook.com/groups/codesnippetsplugin) +* [Discord Community](https://snipco.de/discord) +* [GitHub Repository](https://github.com/codesnippetspro/code-snippets) + +🌟 Like our plugin? Find it useful? Please consider sharing your experience by [leaving a review on WordPress.org](https://wordpress.org/support/view/plugin-reviews/code-snippets). Your feedback is instrumental to shaping our future growth! + +🌍 We'd like to thank the wonderful people who have helped contribute translations to allow Code Snippets to be used in different languages. [You can find a full list here](https://github.com/codesnippetspro/code-snippets/blob/core/CREDITS.md#translators). + +== Installation == + += Automatic installation = + +1. Log into your WordPress admin +2. Click __Plugins__ + +3. Click __Add New__ + +4. Search for __Code Snippets__ + +5. Click __Install Now__ under "Code Snippets" +6. Activate the plugin + += Manual installation = + +1. Download the plugin +2. Extract the contents of the zip file +3. Upload the contents of the zip file to the `wp-content/plugins/` folder of your WordPress installation +4. Activate the Code Snippets plugin from 'Plugins' page. + +Network Activating Code Snippets through the Network Dashboard will enable a special interface for running snippets across the entire network. + +== Frequently Asked Questions == + +A full list of our Frequently Asked Questions can be found at [codesnippets.pro](https://codesnippets.pro/docs/faq/). + += How can I recover my site if it is crashed by a buggy snippet? = +You can recover your site by enabling the Code Snippets safe mode feature. Instructions for how to turn it on are available here: . + += Will I lose my snippets if I change the theme or upgrade WordPress? = +No, the snippets are stored in the WordPress database, independent of the theme and unaffected by WordPress upgrades. + += Can the plugin be completely uninstalled? = +If you enable the 'Complete Uninstall' option on the plugin settings page, Code Snippets will clean up all of its data when deleted through the WordPress 'Plugins' menu. This includes all stored snippets. If you would like to preserve the snippets, ensure they are exported first. + += Can I copy snippets that I have created to another WordPress site? = +Yes! You can individually export a single snippet using the link below the snippet name on the 'Manage Snippets' page or bulk export multiple snippets using the 'Bulk Actions' feature. Snippets can later be imported using the 'Import Snippets' page by uploading the export file. + += Can I export my snippets to PHP for a site where I'm not using the Code Snippets plugin? = +Yes. Click the checkboxes next to the snippets you want to export, and then choose **Export to PHP** from the Bulk Actions menu and click Apply. The generated PHP file will contain the exported snippets' code, as well as their name and description in comments. + += Can I run network-wide snippets on a multisite installation? = +You can run snippets across an entire multisite network by **Network Activating** Code Snippets through the Network Dashboard. You can also activate Code Snippets just on the main site, and then individually on other sites of your choice. + += Where are the snippets stored in my WordPress database? = +Snippets are stored in the `wp_snippets` table in the WordPress database. The table name may differ depending on what your table prefix is set to. + += Where can I go for help or suggest new features? = +You can get help with Code Snippets, report bugs or errors, and suggest new features and improvements either on the [WordPress Support Forums](https://wordpress.org/support/plugin/code-snippets) or on [GitHub](https://github.com/codesnippetspro/code-snippets). + += How can I help contribute to the development of the Code Snippets plugin? = +The best way to do this is to fork the [repository on GitHub](https://github.com/codesnippetspro/code-snippets) and send a pull request. + += How can I report security bugs found in this plugin? = +You can report security bugs found in the source code of this plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/code-snippets). The Patchstack team will assist with verification, triage, and notification of security vulnerabilities. + +== Screenshots == + +1. Managing existing snippets +2. Adding a new snippet +3. Editing a snippet +4. Importing snippets from an export file + +== Changelog == + += 3.9.6 (2026-04-28) = + +__Changed__ + +* tweak: improve snippets rest api + +__Removed__ + +* remove redundant comments + +__Fixed__ + +* site admin cannot toggle shared network snippets status + += 3.9.5 (2026-02-05) = + +__Added__ + +* Confirmed WordPress 6.9 compatability + +__Changed__ + +* Improved nonce handling for cloud snippet download and update actions to for enhanced security + += 3.9.4 (2026-01-14) = + +__Added__ + +* New import functionality to migrate snippets from file uploads with drag-and-drop interface +* Support for importing snippets from other popular plugins (Header Footer Code Manager, Insert Headers and Footers, Insert PHP Code Snippet) +* Enhanced file based execution support with improved multisite mode compatibility + +__Changed__ + +* Updated links to more recent documentation pages + +__Fixed__ + +* Fixed multisite capability checks in Plugin class +* Fixed snippet execution logic for multisite support by centralizing trashed snippet handling +* Fixed multisite snippet handling to ensure local snippets use correct table and filter out trashed snippets + += 3.9.3 (2025-12-03) = + +__Added__ + +* Enhanced end-to-end tests to verify the toggle visual state in the snippets list page, improving UI verification and test reliability + +__Fixed__ + +* Fix missing import of common/direction in src/css/manage.scss to restore correct styling and direction-aware layout +* Fix toggle activation check to ensure the correct transformation value is used when detecting active/inactive state + += 3.9.2 (2025-11-17) = + +__Changed__ + +* Introduced a custom scissors icon and updated button title for the TinyMCE extension. +* Improved back-navigation styling on the edit page. +* Refined layout for column names and action buttons in the Cloud Snippets list. +* Enhanced overall styling of cloud-related UI components. +* Optimized cloud search with more efficient pagination and snippet retrieval. +* Introduced groundwork to prevent Composer dependency collisions with other plugins. + +__Fixed__ + +* Improved sanitization and normalization across Cloud API and pagination outputs. +* Resolved various TinyMCE issues reported in the WordPress support forum. + += 3.9.1 (2025-11-14) = + +__Changed__ + +* Migrated to native CSS direction handling (RTL/LTR) for improved compatibility and simpler styling +* Updated dependencies to the latest compatible versions + +__Fixed__ + +* Fixed TinyMCE menu button registration to prevent initialization failure +* Fixed the position of the 'code direction' control in the editor + += 3.9.0 (2025-11-13) = + +__Added__ + +* Added contextual notices in the Snippets list table to surface action results and warnings in the UI +* Expanded Multisite Sharing settings for clearer control over network-wide snippet sharing + +__Changed__ + +* Modernized browser support targets and polished admin UI (clearer row-action badges, improved Pro badge hover, refined active snippet name styling) + +__Fixed__ + +* Fixed REST API pagination to return correct results and page counts +* Resolved styling selector so the active snippet name highlights reliably + += 3.8.2 (2025-10-31) = + +__Fixed__ + +* Improved namespaced PHP snippet handling with file based execution. + += 3.8.1 (2025-10-28) = + +__Added__ + +* Code line explanation widget with apply and remove actions for AI-generated comments. (PRO) + +__Changed__ + +* Improved pagination handling and display structure for cloud search results. (PRO) +* Enhanced styling for codevault rows and inactive tabs in cloud interface. (PRO) + +__Removed__ + +* Removed `guzzlehttp/guzzle` dependency to reduce package conflicts. (PRO) + +__Fixed__ + +* Improved file-based snippet handling for multisite installations. + += 3.8.0 (2025-10-24) = + +__Added__ + +* @CarolinaOP and @louiswol94 join the team as plugin contributors. +* File-based execution mode for snippets (Optional in Plugin Settings). +* Version switch option, to help easily rollback the plugin to an earlier release. +* Minor UI improvements to the editor and sidebar. + +__Changed__ + +* Prefixed Composer packages to reduce collisions with other plugins. +* Snippets REST API now supports pagination via page and per_page query parameters. +* Improved editor preview behavior. + +__Fixed__ + +* Fixed issues with snippet evaluation and front-end initialization in edge cases. +* Improved reliability of snippet evaluation. +* JavaScript and CSS snippets loading twice due to a conditions bug. (PRO) +* Fixed issue where some conditions didn’t work due to loading before the loop. (PRO) + += 3.7.0 (2025-08-29) = + +__Added__ + +* New 'conditions' feature: control where and when snippets execute with a powerful logic builder. (PRO) + +__Changed__ + +* Redesigned edit menu with refreshed look and functionality. +* Updated snippet type badges to be more visually distinct. +* Redesigned tooltips used throughout the plugin. +* Moved content snippet shortcode options into separate modal window. +* Updated snippet tag editor to use built-in WordPress tag editor. +* Created proper form for sharing beta feedback. +* Improved UX of snippet activation toggle. + +__Fixed__ + +* Fetching active snippets on a multisite network now respects the 'priority' field above all else when ordering snippets. +* Cloud search appears correctly and allows downloading snippets in the free version of Code Snippets. +* Improved performance of loading admin menu icon. + += 3.6.9 (2025-02-17) = + +__Changed__ + +* Updated `Cloud_API::get_bundles()` to properly check bundle data and return an empty array if no valid bundles are present. +* Refactored `Cloud_List_Table::fetch_snippets()` to always return a valid `Cloud_Snippets` instance. +* Cleaned up bundle iteration code and improved translation handling in the bundles view. + +__Fixed__ + +* Fixed errors in bundle iteration by adding a check for the bundles array before iterating. + += 3.6.8 (2025-02-14) = + +__Added__ + +* `code_snippets/hide_welcome_banner` filter hook for hiding welcome banner in dashboard. + +__Changed__ + +* Updated Freemius SDK to the latest version. (PRO) + +__Removed__ + +* Functionality allowing `[code_snippet]` shortcodes to be embedded recursively – it will be re-added in a future version. + +__Fixed__ + +* Shortcodes embedded within `[code_snippet]` shortcodes not evaluating correctly. +* Translation functions being called too early in some instances when loading plugin settings. +* 'Generate' button not appearing on some sites. (PRO) +* Incorrect arrow entity used in cloud list table (props to [brandonjp]). +* Removed reference to missing plugins.css file in core plugin version. + += 3.6.7 (2025-01-24) = + +__Added__ + +* Generated snippet shortcode tags will include the snippet name, for easier identification. +* Admin notices will dismiss automatically after five seconds. ([#208](https://github.com/codesnippetspro/code-snippets/issues/208)) + +__Changed__ + +* Updated CSS to use latest Sass features. +* Moved theme selector to just above editor preview on settings page (thanks to brandonjp). ([#206](https://github.com/codesnippetspro/code-snippets/issues/206)) +* `[code_snippet]` shortcodes can now be nested within each other. ([#198](https://github.com/codesnippetspro/code-snippets/issues/198)) + +__Fixed__ + +* Save buttons above editor did not follow usual validation process in Pro. (PRO) ([#197](https://github.com/codesnippetspro/code-snippets/issues/197)) +* Minor inconsistencies in consistent UI elements between Core and Pro. +* Tags input not allowing input. ([#211](https://github.com/codesnippetspro/code-snippets/issues/211)) +* Issue with Elementor source code widget. (PRO) ([#205](https://github.com/codesnippetspro/code-snippets/issues/205)) +* Snippet descriptions not visible when viewing cloud search results. +* Snippet import page not displaying number of successfully imported snippets. +* Use UTC time when deciding when to display campaign notices. + += 3.6.6.1 (2024-11-27) = + +__Fixed__ + +* Redeployment of v3.6.6 to overcome issue with initial build. +* Type issue when caching cloud links. (PRO) + += 3.6.6 (2024-11-27) = + +__Changed__ + +* Improved compatability with modern versions of PHP. +* Extended welcome API to include admin notices. + +__Fixed__ + +* Memory issue from checking aggregate posts while loading front-end syntax highlighter. +* Translation functions being called too early on upgrade, resulting in localisation loading errors. +* Bug preventing the 'share on network' status of network snippets from correctly updating. +* Incorrect logic controlling when to display 'Save Changes' or 'Save Changes and Activate' buttons. +* Old notices persisting when switching between editing and creating snippets. + += 3.6.5.1 (2024-05-24) = + +* Redeployment of v3.6.5 to overcome issue with initial build. + += 3.6.5 (2024-05-24) = + +__Added__ + +* New admin menu providing useful resources and updates on the Code Snippets plugin and community. + += 3.6.4 (2024-03-15) = + +__Added__ + +* AI generation for all snippet types: HTML, CSS, JS. (PRO) +* Button to create a cloud connection directly from the Snippets menu when disconnected. (PRO) + +__Changed__ + +* Increment the revision number of CSS and JS snippet when using the 'Reset Caches' debug action. (PRO) +* UX in generate dialog, such as allowing 'Enter' to submit the form. (PRO) + +__Fixed__ + +* Minor type compatability issue with newer versions of PHP. +* Undefined array key issue when initiating cloud sync. (PRO) +* Bug preventing downloading a single snippet from a bundle. (PRO) +* Translations not loading for strings in JavaScript files. + += 3.6.3 (2023-11-13) = + +__Added__ + +* Added debug action for resetting snippets caches. + +__Fixed__ + +* Import error when initialising cloud sync configuration. (PRO) + += 3.6.2 (2023-11-11) = + +__Removed__ + +* Removed automatic encoding of code content. + +__Fixed__ + +* Error when attempting to save shared network snippets marked as active. +* Type error when rendering checkbox fields without a stored or default value. +* Label for snippet sharing input incorrectly linked to input field. +* Error when attempting to download export files from Edit menu. +* Issue loading Freemius string overrides too early. (PRO) +* Fix redirect URL when connecting with OAuth on subdirectory or HTTPS sites. (PRO) +* Import error when attempting to completely uninstall the plugin. + += 3.6.1 (2023-11-07) = + +__Fixed__ + +* Issue accessing fields on Snippets class. + += 3.6.0 (2023-11-07) = + +__Added__ + +* Ability to authenticate with Code Snippets Cloud using OAuth. (PRO) +* Integration with GPT AI for generating snippets. (PRO) +* Ability to generate line-by-line descriptions of snippet code with GPT AI. (PRO) +* Ability to generate tags and description text from existing snippet code with GPT AI. (PRO) +* Added debug settings menu for manually performing problem-solving actions. +* Filter to disable scroll-into-view functionality for edit page notices. + +__Changed__ + +* Updated minimum PHP requirement to 7.4. +* Ensure that the URL of the edit snippet page changes when adding a new snippet. +* Snippet tags will automatically be added when focus is lost on the tags field. + +__Fixed__ + +* Moved active status border on edit name field to left-hand side. +* New notices will not scroll if already at top of page. +* Potential CSRF vulnerability allowing an authenticated user to reset settings. + += 3.5.1 (2023-09-15) = + +__Fixed__ + +* Undefined array key error when accessing plugin settings page. (PRO) +* Issue registering API endpoints affecting edit post screen. (PRO) +* Snippet ID instead of snippet object being passed to `code_snippets/update_snippet` action hook. + += 3.5.0 (2023-09-13) = + +__Added__ + +* Support for the Code Snippets Cloud API. +* Search and download public snippets. +* Codevault back-up and synchronisation. (PRO) +* Synchronised local snippets are automatically updated in Cloud. (PRO) +* Bulk actions - 'update' and 'download'. +* Download snippets from public and private codevaults. (PRO) +* Search and download any publicly viewable snippet in Code Snippet Cloud by keyword or name of codevault. (PRO) +* Deploy snippets to plugin from Code Snippets Cloud app. (PRO) +* Bundles of Joy! Search and download Snippet Bundles in one go direct from Code Snippets Cloud. (PRO) + +__Changed__ + +* Redirect to snippets table when deleting snippet from the edit menu. +* Scroll new notices into view on edit menu. + +__Fixed__ + +* Error when attempting to update network shared snippets after saving. [[#](https://wordpress.org/support/topic/activating-snippets-breaks-on-wordpress-6-3/)] + +**[The full changelog is available on GitHub](https://github.com/codesnippetspro/code-snippets/blob/core/CHANGELOG.md)** diff --git a/plugins/code-snippets/uninstall.php b/plugins/code-snippets/uninstall.php new file mode 100644 index 0000000..74f1d4b --- /dev/null +++ b/plugins/code-snippets/uninstall.php @@ -0,0 +1,18 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var \Closure(string):void */ + private static $includeFile; + + /** @var string|null */ + private $vendorDir; + + // PSR-4 + /** + * @var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var list + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * List of PSR-0 prefixes + * + * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) + * + * @var array>> + */ + private $prefixesPsr0 = array(); + /** + * @var list + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var array + */ + private $missingClasses = array(); + + /** @var string|null */ + private $apcuPrefix; + + /** + * @var array + */ + private static $registeredLoaders = array(); + + /** + * @param string|null $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return array> + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return list + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return list + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return array Array of classname => path + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + * + * @return void + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param list|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param list|string $paths The PSR-0 base directories + * + * @return void + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + * + * @return void + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + * + * @return void + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + * + * @return void + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + $includeFile = self::$includeFile; + $includeFile($file); + + return true; + } + + return null; + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + /** + * Returns the currently registered loaders keyed by their corresponding vendor directories. + * + * @return array + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } + + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } +} diff --git a/plugins/code-snippets/vendor/composer/InstalledVersions.php b/plugins/code-snippets/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000..2052022 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/InstalledVersions.php @@ -0,0 +1,396 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to + * @internal + */ + private static $selfDir = null; + + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool + */ + private static $installedIsLocalDir; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints((string) $constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + + // when using reload, we disable the duplicate protection to ensure that self::$installed data is + // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not, + // so we have to assume it does not, and that may result in duplicate data being returned when listing + // all installed packages for example + self::$installedIsLocalDir = false; + } + + /** + * @return string + */ + private static function getSelfDir() + { + if (self::$selfDir === null) { + self::$selfDir = strtr(__DIR__, '\\', '/'); + } + + return self::$selfDir; + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + $copiedLocalDir = false; + + if (self::$canGetVendors) { + $selfDir = self::getSelfDir(); + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + $vendorDir = strtr($vendorDir, '\\', '/'); + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ + $required = require $vendorDir.'/composer/installed.php'; + self::$installedByVendor[$vendorDir] = $required; + $installed[] = $required; + if (self::$installed === null && $vendorDir.'/composer' === $selfDir) { + self::$installed = $required; + self::$installedIsLocalDir = true; + } + } + if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) { + $copiedLocalDir = true; + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ + $required = require __DIR__ . '/installed.php'; + self::$installed = $required; + } else { + self::$installed = array(); + } + } + + if (self::$installed !== array() && !$copiedLocalDir) { + $installed[] = self::$installed; + } + + return $installed; + } +} diff --git a/plugins/code-snippets/vendor/composer/LICENSE b/plugins/code-snippets/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/plugins/code-snippets/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/plugins/code-snippets/vendor/composer/autoload_classmap.php b/plugins/code-snippets/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..cb4a7ae --- /dev/null +++ b/plugins/code-snippets/vendor/composer/autoload_classmap.php @@ -0,0 +1,175 @@ + $baseDir . '/php/class-admin.php', + 'Code_Snippets\\Admin_Menu' => $baseDir . '/php/admin-menus/class-admin-menu.php', + 'Code_Snippets\\Cloud\\Cloud_API' => $baseDir . '/php/cloud/class-cloud-api.php', + 'Code_Snippets\\Cloud\\Cloud_Link' => $baseDir . '/php/cloud/class-cloud-link.php', + 'Code_Snippets\\Cloud\\Cloud_Search_List_Table' => $baseDir . '/php/cloud/class-cloud-search-list-table.php', + 'Code_Snippets\\Cloud\\Cloud_Snippet' => $baseDir . '/php/cloud/class-cloud-snippet.php', + 'Code_Snippets\\Cloud\\Cloud_Snippets' => $baseDir . '/php/cloud/class-cloud-snippets.php', + 'Code_Snippets\\Contextual_Help' => $baseDir . '/php/class-contextual-help.php', + 'Code_Snippets\\DB' => $baseDir . '/php/class-db.php', + 'Code_Snippets\\Data_Item' => $baseDir . '/php/class-data-item.php', + 'Code_Snippets\\Edit_Menu' => $baseDir . '/php/admin-menus/class-edit-menu.php', + 'Code_Snippets\\Export' => $baseDir . '/php/export/class-export.php', + 'Code_Snippets\\Export_Attachment' => $baseDir . '/php/export/class-export-attachment.php', + 'Code_Snippets\\File_System_Interface' => $baseDir . '/php/flat-files/interfaces/interface-file-system.php', + 'Code_Snippets\\Files_Import_Manager' => $baseDir . '/php/migration/importers/files/file-upload-importer.php', + 'Code_Snippets\\Front_End' => $baseDir . '/php/front-end/class-front-end.php', + 'Code_Snippets\\Header_Footer_Code_Manager_Importer' => $baseDir . '/php/migration/importers/plugins/header-footer-code-manager.php', + 'Code_Snippets\\Html_Snippet_Handler' => $baseDir . '/php/flat-files/handlers/html-snippet-handler.php', + 'Code_Snippets\\Import' => $baseDir . '/php/export/class-import.php', + 'Code_Snippets\\Import_Menu' => $baseDir . '/php/admin-menus/class-import-menu.php', + 'Code_Snippets\\Importer_Base' => $baseDir . '/php/migration/importers/plugins/importer-base.php', + 'Code_Snippets\\Insert_Headers_And_Footers_Importer' => $baseDir . '/php/migration/importers/plugins/insert-headers-and-footers.php', + 'Code_Snippets\\Insert_PHP_Code_Snippet_Importer' => $baseDir . '/php/migration/importers/plugins/insert-php-code-snippet.php', + 'Code_Snippets\\Licensing' => $baseDir . '/php/class-licensing.php', + 'Code_Snippets\\List_Table' => $baseDir . '/php/class-list-table.php', + 'Code_Snippets\\Manage_Menu' => $baseDir . '/php/admin-menus/class-manage-menu.php', + 'Code_Snippets\\Php_Snippet_Handler' => $baseDir . '/php/flat-files/handlers/php-snippet-handler.php', + 'Code_Snippets\\Plugin' => $baseDir . '/php/class-plugin.php', + 'Code_Snippets\\Plugins_Import_Manager' => $baseDir . '/php/migration/importers/plugins/manager.php', + 'Code_Snippets\\REST_API\\Snippets_REST_Controller' => $baseDir . '/php/rest-api/class-snippets-rest-controller.php', + 'Code_Snippets\\Settings\\Setting_Field' => $baseDir . '/php/settings/class-setting-field.php', + 'Code_Snippets\\Settings\\Version_Switch' => $baseDir . '/php/settings/class-version-switch.php', + 'Code_Snippets\\Settings_Menu' => $baseDir . '/php/admin-menus/class-settings-menu.php', + 'Code_Snippets\\Snippet' => $baseDir . '/php/class-snippet.php', + 'Code_Snippets\\Snippet_Config_Repository' => $baseDir . '/php/flat-files/classes/class-config-repository.php', + 'Code_Snippets\\Snippet_Config_Repository_Interface' => $baseDir . '/php/flat-files/interfaces/interface-config-repository.php', + 'Code_Snippets\\Snippet_Files' => $baseDir . '/php/flat-files/classes/class-snippet-files.php', + 'Code_Snippets\\Snippet_Handler_Registry' => $baseDir . '/php/flat-files/registry.php', + 'Code_Snippets\\Snippet_Type_Handler_Interface' => $baseDir . '/php/flat-files/interfaces/interface-snippet-handler.php', + 'Code_Snippets\\Upgrade' => $baseDir . '/php/class-upgrade.php', + 'Code_Snippets\\Validator' => $baseDir . '/php/class-validator.php', + 'Code_Snippets\\Welcome_API' => $baseDir . '/php/class-welcome-api.php', + 'Code_Snippets\\Welcome_Menu' => $baseDir . '/php/admin-menus/class-welcome-menu.php', + 'Code_Snippets\\WordPress_File_System_Adapter' => $baseDir . '/php/flat-files/classes/class-file-system-adapter.php', + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', + 'Composer\\Installers\\AglInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AglInstaller.php', + 'Composer\\Installers\\AkauntingInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AkauntingInstaller.php', + 'Composer\\Installers\\AnnotateCmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php', + 'Composer\\Installers\\AsgardInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AsgardInstaller.php', + 'Composer\\Installers\\AttogramInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/AttogramInstaller.php', + 'Composer\\Installers\\BaseInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BaseInstaller.php', + 'Composer\\Installers\\BitrixInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BitrixInstaller.php', + 'Composer\\Installers\\BonefishInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BonefishInstaller.php', + 'Composer\\Installers\\BotbleInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/BotbleInstaller.php', + 'Composer\\Installers\\CakePHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php', + 'Composer\\Installers\\ChefInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ChefInstaller.php', + 'Composer\\Installers\\CiviCrmInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CiviCrmInstaller.php', + 'Composer\\Installers\\ClanCatsFrameworkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php', + 'Composer\\Installers\\CockpitInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CockpitInstaller.php', + 'Composer\\Installers\\CodeIgniterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php', + 'Composer\\Installers\\Concrete5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Concrete5Installer.php', + 'Composer\\Installers\\ConcreteCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ConcreteCMSInstaller.php', + 'Composer\\Installers\\CroogoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/CroogoInstaller.php', + 'Composer\\Installers\\DecibelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DecibelInstaller.php', + 'Composer\\Installers\\DframeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DframeInstaller.php', + 'Composer\\Installers\\DokuWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php', + 'Composer\\Installers\\DolibarrInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php', + 'Composer\\Installers\\DrupalInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/DrupalInstaller.php', + 'Composer\\Installers\\ElggInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ElggInstaller.php', + 'Composer\\Installers\\EliasisInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/EliasisInstaller.php', + 'Composer\\Installers\\ExpressionEngineInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php', + 'Composer\\Installers\\EzPlatformInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/EzPlatformInstaller.php', + 'Composer\\Installers\\ForkCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ForkCMSInstaller.php', + 'Composer\\Installers\\FuelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelInstaller.php', + 'Composer\\Installers\\FuelphpInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php', + 'Composer\\Installers\\GravInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/GravInstaller.php', + 'Composer\\Installers\\HuradInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/HuradInstaller.php', + 'Composer\\Installers\\ImageCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ImageCMSInstaller.php', + 'Composer\\Installers\\Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Installer.php', + 'Composer\\Installers\\ItopInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ItopInstaller.php', + 'Composer\\Installers\\KanboardInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KanboardInstaller.php', + 'Composer\\Installers\\KnownInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KnownInstaller.php', + 'Composer\\Installers\\KodiCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KodiCMSInstaller.php', + 'Composer\\Installers\\KohanaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/KohanaInstaller.php', + 'Composer\\Installers\\LanManagementSystemInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php', + 'Composer\\Installers\\LaravelInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LaravelInstaller.php', + 'Composer\\Installers\\LavaLiteInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LavaLiteInstaller.php', + 'Composer\\Installers\\LithiumInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/LithiumInstaller.php', + 'Composer\\Installers\\MODULEWorkInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php', + 'Composer\\Installers\\MODXEvoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php', + 'Composer\\Installers\\MagentoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MagentoInstaller.php', + 'Composer\\Installers\\MajimaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MajimaInstaller.php', + 'Composer\\Installers\\MakoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MakoInstaller.php', + 'Composer\\Installers\\MantisBTInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MantisBTInstaller.php', + 'Composer\\Installers\\MatomoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MatomoInstaller.php', + 'Composer\\Installers\\MauticInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MauticInstaller.php', + 'Composer\\Installers\\MayaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MayaInstaller.php', + 'Composer\\Installers\\MediaWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php', + 'Composer\\Installers\\MiaoxingInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MiaoxingInstaller.php', + 'Composer\\Installers\\MicroweberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php', + 'Composer\\Installers\\ModxInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ModxInstaller.php', + 'Composer\\Installers\\MoodleInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/MoodleInstaller.php', + 'Composer\\Installers\\OctoberInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OctoberInstaller.php', + 'Composer\\Installers\\OntoWikiInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OntoWikiInstaller.php', + 'Composer\\Installers\\OsclassInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OsclassInstaller.php', + 'Composer\\Installers\\OxidInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/OxidInstaller.php', + 'Composer\\Installers\\PPIInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PPIInstaller.php', + 'Composer\\Installers\\PantheonInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PantheonInstaller.php', + 'Composer\\Installers\\PhiftyInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php', + 'Composer\\Installers\\PhpBBInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php', + 'Composer\\Installers\\PiwikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PiwikInstaller.php', + 'Composer\\Installers\\PlentymarketsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php', + 'Composer\\Installers\\Plugin' => $vendorDir . '/composer/installers/src/Composer/Installers/Plugin.php', + 'Composer\\Installers\\PortoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PortoInstaller.php', + 'Composer\\Installers\\PrestashopInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php', + 'Composer\\Installers\\ProcessWireInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ProcessWireInstaller.php', + 'Composer\\Installers\\PuppetInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PuppetInstaller.php', + 'Composer\\Installers\\PxcmsInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/PxcmsInstaller.php', + 'Composer\\Installers\\RadPHPInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RadPHPInstaller.php', + 'Composer\\Installers\\ReIndexInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ReIndexInstaller.php', + 'Composer\\Installers\\Redaxo5Installer' => $vendorDir . '/composer/installers/src/Composer/Installers/Redaxo5Installer.php', + 'Composer\\Installers\\RedaxoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php', + 'Composer\\Installers\\RoundcubeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php', + 'Composer\\Installers\\SMFInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SMFInstaller.php', + 'Composer\\Installers\\ShopwareInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php', + 'Composer\\Installers\\SilverStripeInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php', + 'Composer\\Installers\\SiteDirectInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SiteDirectInstaller.php', + 'Composer\\Installers\\StarbugInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/StarbugInstaller.php', + 'Composer\\Installers\\SyDESInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SyDESInstaller.php', + 'Composer\\Installers\\SyliusInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/SyliusInstaller.php', + 'Composer\\Installers\\TaoInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TaoInstaller.php', + 'Composer\\Installers\\TastyIgniterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php', + 'Composer\\Installers\\TheliaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TheliaInstaller.php', + 'Composer\\Installers\\TuskInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/TuskInstaller.php', + 'Composer\\Installers\\UserFrostingInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/UserFrostingInstaller.php', + 'Composer\\Installers\\VanillaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/VanillaInstaller.php', + 'Composer\\Installers\\VgmcpInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/VgmcpInstaller.php', + 'Composer\\Installers\\WHMCSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php', + 'Composer\\Installers\\WinterInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WinterInstaller.php', + 'Composer\\Installers\\WolfCMSInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php', + 'Composer\\Installers\\WordPressInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/WordPressInstaller.php', + 'Composer\\Installers\\YawikInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/YawikInstaller.php', + 'Composer\\Installers\\ZendInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZendInstaller.php', + 'Composer\\Installers\\ZikulaInstaller' => $vendorDir . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php', + 'Evaluation\\Evaluate_Content' => $baseDir . '/php/evaluation/class-evaluate-content.php', + 'Evaluation\\Evaluate_Functions' => $baseDir . '/php/evaluation/class-evaluate-functions.php', + 'TypistTech\\Imposter\\ArrayUtil' => $vendorDir . '/typisttech/imposter/src/ArrayUtil.php', + 'TypistTech\\Imposter\\Config' => $vendorDir . '/typisttech/imposter/src/Config.php', + 'TypistTech\\Imposter\\ConfigCollection' => $vendorDir . '/typisttech/imposter/src/ConfigCollection.php', + 'TypistTech\\Imposter\\ConfigCollectionFactory' => $vendorDir . '/typisttech/imposter/src/ConfigCollectionFactory.php', + 'TypistTech\\Imposter\\ConfigCollectionInterface' => $vendorDir . '/typisttech/imposter/src/ConfigCollectionInterface.php', + 'TypistTech\\Imposter\\ConfigFactory' => $vendorDir . '/typisttech/imposter/src/ConfigFactory.php', + 'TypistTech\\Imposter\\ConfigInterface' => $vendorDir . '/typisttech/imposter/src/ConfigInterface.php', + 'TypistTech\\Imposter\\Filesystem' => $vendorDir . '/typisttech/imposter/src/Filesystem.php', + 'TypistTech\\Imposter\\FilesystemInterface' => $vendorDir . '/typisttech/imposter/src/FilesystemInterface.php', + 'TypistTech\\Imposter\\Imposter' => $vendorDir . '/typisttech/imposter/src/Imposter.php', + 'TypistTech\\Imposter\\ImposterFactory' => $vendorDir . '/typisttech/imposter/src/ImposterFactory.php', + 'TypistTech\\Imposter\\ImposterInterface' => $vendorDir . '/typisttech/imposter/src/ImposterInterface.php', + 'TypistTech\\Imposter\\Plugin\\AutoloadMerger' => $vendorDir . '/typisttech/imposter-plugin/src/AutoloadMerger.php', + 'TypistTech\\Imposter\\Plugin\\ImposterPlugin' => $vendorDir . '/typisttech/imposter-plugin/src/ImposterPlugin.php', + 'TypistTech\\Imposter\\Plugin\\Transformer' => $vendorDir . '/typisttech/imposter-plugin/src/Transformer.php', + 'TypistTech\\Imposter\\ProjectConfig' => $vendorDir . '/typisttech/imposter/src/ProjectConfig.php', + 'TypistTech\\Imposter\\ProjectConfigInterface' => $vendorDir . '/typisttech/imposter/src/ProjectConfigInterface.php', + 'TypistTech\\Imposter\\StringUtil' => $vendorDir . '/typisttech/imposter/src/StringUtil.php', + 'TypistTech\\Imposter\\Transformer' => $vendorDir . '/typisttech/imposter/src/Transformer.php', + 'TypistTech\\Imposter\\TransformerInterface' => $vendorDir . '/typisttech/imposter/src/TransformerInterface.php', +); diff --git a/plugins/code-snippets/vendor/composer/autoload_namespaces.php b/plugins/code-snippets/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..15a2ff3 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/typisttech/imposter-plugin/src'), + 'TypistTech\\Imposter\\' => array($vendorDir . '/typisttech/imposter/src'), + 'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'), +); diff --git a/plugins/code-snippets/vendor/composer/autoload_real.php b/plugins/code-snippets/vendor/composer/autoload_real.php new file mode 100644 index 0000000..5429c08 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/autoload_real.php @@ -0,0 +1,38 @@ +register(true); + + return $loader; + } +} diff --git a/plugins/code-snippets/vendor/composer/autoload_static.php b/plugins/code-snippets/vendor/composer/autoload_static.php new file mode 100644 index 0000000..4ff3629 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/autoload_static.php @@ -0,0 +1,214 @@ + + array ( + 'TypistTech\\Imposter\\Plugin\\' => 27, + 'TypistTech\\Imposter\\' => 20, + ), + 'C' => + array ( + 'Composer\\Installers\\' => 20, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'TypistTech\\Imposter\\Plugin\\' => + array ( + 0 => __DIR__ . '/..' . '/typisttech/imposter-plugin/src', + ), + 'TypistTech\\Imposter\\' => + array ( + 0 => __DIR__ . '/..' . '/typisttech/imposter/src', + ), + 'Composer\\Installers\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers', + ), + ); + + public static $classMap = array ( + 'Code_Snippets\\Admin' => __DIR__ . '/../..' . '/php/class-admin.php', + 'Code_Snippets\\Admin_Menu' => __DIR__ . '/../..' . '/php/admin-menus/class-admin-menu.php', + 'Code_Snippets\\Cloud\\Cloud_API' => __DIR__ . '/../..' . '/php/cloud/class-cloud-api.php', + 'Code_Snippets\\Cloud\\Cloud_Link' => __DIR__ . '/../..' . '/php/cloud/class-cloud-link.php', + 'Code_Snippets\\Cloud\\Cloud_Search_List_Table' => __DIR__ . '/../..' . '/php/cloud/class-cloud-search-list-table.php', + 'Code_Snippets\\Cloud\\Cloud_Snippet' => __DIR__ . '/../..' . '/php/cloud/class-cloud-snippet.php', + 'Code_Snippets\\Cloud\\Cloud_Snippets' => __DIR__ . '/../..' . '/php/cloud/class-cloud-snippets.php', + 'Code_Snippets\\Contextual_Help' => __DIR__ . '/../..' . '/php/class-contextual-help.php', + 'Code_Snippets\\DB' => __DIR__ . '/../..' . '/php/class-db.php', + 'Code_Snippets\\Data_Item' => __DIR__ . '/../..' . '/php/class-data-item.php', + 'Code_Snippets\\Edit_Menu' => __DIR__ . '/../..' . '/php/admin-menus/class-edit-menu.php', + 'Code_Snippets\\Export' => __DIR__ . '/../..' . '/php/export/class-export.php', + 'Code_Snippets\\Export_Attachment' => __DIR__ . '/../..' . '/php/export/class-export-attachment.php', + 'Code_Snippets\\File_System_Interface' => __DIR__ . '/../..' . '/php/flat-files/interfaces/interface-file-system.php', + 'Code_Snippets\\Files_Import_Manager' => __DIR__ . '/../..' . '/php/migration/importers/files/file-upload-importer.php', + 'Code_Snippets\\Front_End' => __DIR__ . '/../..' . '/php/front-end/class-front-end.php', + 'Code_Snippets\\Header_Footer_Code_Manager_Importer' => __DIR__ . '/../..' . '/php/migration/importers/plugins/header-footer-code-manager.php', + 'Code_Snippets\\Html_Snippet_Handler' => __DIR__ . '/../..' . '/php/flat-files/handlers/html-snippet-handler.php', + 'Code_Snippets\\Import' => __DIR__ . '/../..' . '/php/export/class-import.php', + 'Code_Snippets\\Import_Menu' => __DIR__ . '/../..' . '/php/admin-menus/class-import-menu.php', + 'Code_Snippets\\Importer_Base' => __DIR__ . '/../..' . '/php/migration/importers/plugins/importer-base.php', + 'Code_Snippets\\Insert_Headers_And_Footers_Importer' => __DIR__ . '/../..' . '/php/migration/importers/plugins/insert-headers-and-footers.php', + 'Code_Snippets\\Insert_PHP_Code_Snippet_Importer' => __DIR__ . '/../..' . '/php/migration/importers/plugins/insert-php-code-snippet.php', + 'Code_Snippets\\Licensing' => __DIR__ . '/../..' . '/php/class-licensing.php', + 'Code_Snippets\\List_Table' => __DIR__ . '/../..' . '/php/class-list-table.php', + 'Code_Snippets\\Manage_Menu' => __DIR__ . '/../..' . '/php/admin-menus/class-manage-menu.php', + 'Code_Snippets\\Php_Snippet_Handler' => __DIR__ . '/../..' . '/php/flat-files/handlers/php-snippet-handler.php', + 'Code_Snippets\\Plugin' => __DIR__ . '/../..' . '/php/class-plugin.php', + 'Code_Snippets\\Plugins_Import_Manager' => __DIR__ . '/../..' . '/php/migration/importers/plugins/manager.php', + 'Code_Snippets\\REST_API\\Snippets_REST_Controller' => __DIR__ . '/../..' . '/php/rest-api/class-snippets-rest-controller.php', + 'Code_Snippets\\Settings\\Setting_Field' => __DIR__ . '/../..' . '/php/settings/class-setting-field.php', + 'Code_Snippets\\Settings\\Version_Switch' => __DIR__ . '/../..' . '/php/settings/class-version-switch.php', + 'Code_Snippets\\Settings_Menu' => __DIR__ . '/../..' . '/php/admin-menus/class-settings-menu.php', + 'Code_Snippets\\Snippet' => __DIR__ . '/../..' . '/php/class-snippet.php', + 'Code_Snippets\\Snippet_Config_Repository' => __DIR__ . '/../..' . '/php/flat-files/classes/class-config-repository.php', + 'Code_Snippets\\Snippet_Config_Repository_Interface' => __DIR__ . '/../..' . '/php/flat-files/interfaces/interface-config-repository.php', + 'Code_Snippets\\Snippet_Files' => __DIR__ . '/../..' . '/php/flat-files/classes/class-snippet-files.php', + 'Code_Snippets\\Snippet_Handler_Registry' => __DIR__ . '/../..' . '/php/flat-files/registry.php', + 'Code_Snippets\\Snippet_Type_Handler_Interface' => __DIR__ . '/../..' . '/php/flat-files/interfaces/interface-snippet-handler.php', + 'Code_Snippets\\Upgrade' => __DIR__ . '/../..' . '/php/class-upgrade.php', + 'Code_Snippets\\Validator' => __DIR__ . '/../..' . '/php/class-validator.php', + 'Code_Snippets\\Welcome_API' => __DIR__ . '/../..' . '/php/class-welcome-api.php', + 'Code_Snippets\\Welcome_Menu' => __DIR__ . '/../..' . '/php/admin-menus/class-welcome-menu.php', + 'Code_Snippets\\WordPress_File_System_Adapter' => __DIR__ . '/../..' . '/php/flat-files/classes/class-file-system-adapter.php', + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'Composer\\Installers\\AglInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AglInstaller.php', + 'Composer\\Installers\\AkauntingInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AkauntingInstaller.php', + 'Composer\\Installers\\AnnotateCmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php', + 'Composer\\Installers\\AsgardInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AsgardInstaller.php', + 'Composer\\Installers\\AttogramInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/AttogramInstaller.php', + 'Composer\\Installers\\BaseInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BaseInstaller.php', + 'Composer\\Installers\\BitrixInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BitrixInstaller.php', + 'Composer\\Installers\\BonefishInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BonefishInstaller.php', + 'Composer\\Installers\\BotbleInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/BotbleInstaller.php', + 'Composer\\Installers\\CakePHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CakePHPInstaller.php', + 'Composer\\Installers\\ChefInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ChefInstaller.php', + 'Composer\\Installers\\CiviCrmInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CiviCrmInstaller.php', + 'Composer\\Installers\\ClanCatsFrameworkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php', + 'Composer\\Installers\\CockpitInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CockpitInstaller.php', + 'Composer\\Installers\\CodeIgniterInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php', + 'Composer\\Installers\\Concrete5Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Concrete5Installer.php', + 'Composer\\Installers\\ConcreteCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ConcreteCMSInstaller.php', + 'Composer\\Installers\\CroogoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/CroogoInstaller.php', + 'Composer\\Installers\\DecibelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DecibelInstaller.php', + 'Composer\\Installers\\DframeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DframeInstaller.php', + 'Composer\\Installers\\DokuWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DokuWikiInstaller.php', + 'Composer\\Installers\\DolibarrInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DolibarrInstaller.php', + 'Composer\\Installers\\DrupalInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/DrupalInstaller.php', + 'Composer\\Installers\\ElggInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ElggInstaller.php', + 'Composer\\Installers\\EliasisInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/EliasisInstaller.php', + 'Composer\\Installers\\ExpressionEngineInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php', + 'Composer\\Installers\\EzPlatformInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/EzPlatformInstaller.php', + 'Composer\\Installers\\ForkCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ForkCMSInstaller.php', + 'Composer\\Installers\\FuelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelInstaller.php', + 'Composer\\Installers\\FuelphpInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/FuelphpInstaller.php', + 'Composer\\Installers\\GravInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/GravInstaller.php', + 'Composer\\Installers\\HuradInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/HuradInstaller.php', + 'Composer\\Installers\\ImageCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ImageCMSInstaller.php', + 'Composer\\Installers\\Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Installer.php', + 'Composer\\Installers\\ItopInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ItopInstaller.php', + 'Composer\\Installers\\KanboardInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KanboardInstaller.php', + 'Composer\\Installers\\KnownInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KnownInstaller.php', + 'Composer\\Installers\\KodiCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KodiCMSInstaller.php', + 'Composer\\Installers\\KohanaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/KohanaInstaller.php', + 'Composer\\Installers\\LanManagementSystemInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php', + 'Composer\\Installers\\LaravelInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LaravelInstaller.php', + 'Composer\\Installers\\LavaLiteInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LavaLiteInstaller.php', + 'Composer\\Installers\\LithiumInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/LithiumInstaller.php', + 'Composer\\Installers\\MODULEWorkInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php', + 'Composer\\Installers\\MODXEvoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MODXEvoInstaller.php', + 'Composer\\Installers\\MagentoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MagentoInstaller.php', + 'Composer\\Installers\\MajimaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MajimaInstaller.php', + 'Composer\\Installers\\MakoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MakoInstaller.php', + 'Composer\\Installers\\MantisBTInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MantisBTInstaller.php', + 'Composer\\Installers\\MatomoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MatomoInstaller.php', + 'Composer\\Installers\\MauticInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MauticInstaller.php', + 'Composer\\Installers\\MayaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MayaInstaller.php', + 'Composer\\Installers\\MediaWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MediaWikiInstaller.php', + 'Composer\\Installers\\MiaoxingInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MiaoxingInstaller.php', + 'Composer\\Installers\\MicroweberInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MicroweberInstaller.php', + 'Composer\\Installers\\ModxInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ModxInstaller.php', + 'Composer\\Installers\\MoodleInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/MoodleInstaller.php', + 'Composer\\Installers\\OctoberInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OctoberInstaller.php', + 'Composer\\Installers\\OntoWikiInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OntoWikiInstaller.php', + 'Composer\\Installers\\OsclassInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OsclassInstaller.php', + 'Composer\\Installers\\OxidInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/OxidInstaller.php', + 'Composer\\Installers\\PPIInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PPIInstaller.php', + 'Composer\\Installers\\PantheonInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PantheonInstaller.php', + 'Composer\\Installers\\PhiftyInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhiftyInstaller.php', + 'Composer\\Installers\\PhpBBInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PhpBBInstaller.php', + 'Composer\\Installers\\PiwikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PiwikInstaller.php', + 'Composer\\Installers\\PlentymarketsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php', + 'Composer\\Installers\\Plugin' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Plugin.php', + 'Composer\\Installers\\PortoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PortoInstaller.php', + 'Composer\\Installers\\PrestashopInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PrestashopInstaller.php', + 'Composer\\Installers\\ProcessWireInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ProcessWireInstaller.php', + 'Composer\\Installers\\PuppetInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PuppetInstaller.php', + 'Composer\\Installers\\PxcmsInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/PxcmsInstaller.php', + 'Composer\\Installers\\RadPHPInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RadPHPInstaller.php', + 'Composer\\Installers\\ReIndexInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ReIndexInstaller.php', + 'Composer\\Installers\\Redaxo5Installer' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/Redaxo5Installer.php', + 'Composer\\Installers\\RedaxoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RedaxoInstaller.php', + 'Composer\\Installers\\RoundcubeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/RoundcubeInstaller.php', + 'Composer\\Installers\\SMFInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SMFInstaller.php', + 'Composer\\Installers\\ShopwareInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ShopwareInstaller.php', + 'Composer\\Installers\\SilverStripeInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SilverStripeInstaller.php', + 'Composer\\Installers\\SiteDirectInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SiteDirectInstaller.php', + 'Composer\\Installers\\StarbugInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/StarbugInstaller.php', + 'Composer\\Installers\\SyDESInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SyDESInstaller.php', + 'Composer\\Installers\\SyliusInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/SyliusInstaller.php', + 'Composer\\Installers\\TaoInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TaoInstaller.php', + 'Composer\\Installers\\TastyIgniterInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php', + 'Composer\\Installers\\TheliaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TheliaInstaller.php', + 'Composer\\Installers\\TuskInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/TuskInstaller.php', + 'Composer\\Installers\\UserFrostingInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/UserFrostingInstaller.php', + 'Composer\\Installers\\VanillaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/VanillaInstaller.php', + 'Composer\\Installers\\VgmcpInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/VgmcpInstaller.php', + 'Composer\\Installers\\WHMCSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WHMCSInstaller.php', + 'Composer\\Installers\\WinterInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WinterInstaller.php', + 'Composer\\Installers\\WolfCMSInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WolfCMSInstaller.php', + 'Composer\\Installers\\WordPressInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/WordPressInstaller.php', + 'Composer\\Installers\\YawikInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/YawikInstaller.php', + 'Composer\\Installers\\ZendInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZendInstaller.php', + 'Composer\\Installers\\ZikulaInstaller' => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers/ZikulaInstaller.php', + 'Evaluation\\Evaluate_Content' => __DIR__ . '/../..' . '/php/evaluation/class-evaluate-content.php', + 'Evaluation\\Evaluate_Functions' => __DIR__ . '/../..' . '/php/evaluation/class-evaluate-functions.php', + 'TypistTech\\Imposter\\ArrayUtil' => __DIR__ . '/..' . '/typisttech/imposter/src/ArrayUtil.php', + 'TypistTech\\Imposter\\Config' => __DIR__ . '/..' . '/typisttech/imposter/src/Config.php', + 'TypistTech\\Imposter\\ConfigCollection' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigCollection.php', + 'TypistTech\\Imposter\\ConfigCollectionFactory' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigCollectionFactory.php', + 'TypistTech\\Imposter\\ConfigCollectionInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigCollectionInterface.php', + 'TypistTech\\Imposter\\ConfigFactory' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigFactory.php', + 'TypistTech\\Imposter\\ConfigInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ConfigInterface.php', + 'TypistTech\\Imposter\\Filesystem' => __DIR__ . '/..' . '/typisttech/imposter/src/Filesystem.php', + 'TypistTech\\Imposter\\FilesystemInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/FilesystemInterface.php', + 'TypistTech\\Imposter\\Imposter' => __DIR__ . '/..' . '/typisttech/imposter/src/Imposter.php', + 'TypistTech\\Imposter\\ImposterFactory' => __DIR__ . '/..' . '/typisttech/imposter/src/ImposterFactory.php', + 'TypistTech\\Imposter\\ImposterInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ImposterInterface.php', + 'TypistTech\\Imposter\\Plugin\\AutoloadMerger' => __DIR__ . '/..' . '/typisttech/imposter-plugin/src/AutoloadMerger.php', + 'TypistTech\\Imposter\\Plugin\\ImposterPlugin' => __DIR__ . '/..' . '/typisttech/imposter-plugin/src/ImposterPlugin.php', + 'TypistTech\\Imposter\\Plugin\\Transformer' => __DIR__ . '/..' . '/typisttech/imposter-plugin/src/Transformer.php', + 'TypistTech\\Imposter\\ProjectConfig' => __DIR__ . '/..' . '/typisttech/imposter/src/ProjectConfig.php', + 'TypistTech\\Imposter\\ProjectConfigInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/ProjectConfigInterface.php', + 'TypistTech\\Imposter\\StringUtil' => __DIR__ . '/..' . '/typisttech/imposter/src/StringUtil.php', + 'TypistTech\\Imposter\\Transformer' => __DIR__ . '/..' . '/typisttech/imposter/src/Transformer.php', + 'TypistTech\\Imposter\\TransformerInterface' => __DIR__ . '/..' . '/typisttech/imposter/src/TransformerInterface.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitc322fb32f6db8844392d9f78341fcefb::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitc322fb32f6db8844392d9f78341fcefb::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitc322fb32f6db8844392d9f78341fcefb::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/plugins/code-snippets/vendor/composer/installed.json b/plugins/code-snippets/vendor/composer/installed.json new file mode 100644 index 0000000..8dd3b7c --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installed.json @@ -0,0 +1,335 @@ +{ + "packages": [ + { + "name": "composer/installers", + "version": "v2.3.0", + "version_normalized": "2.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/12fb2dfe5e16183de69e784a7b84046c43d97e8e", + "reference": "12fb2dfe5e16183de69e784a7b84046c43d97e8e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "composer/composer": "^1.10.27 || ^2.7", + "composer/semver": "^1.7.2 || ^3.4.0", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-phpunit": "^1", + "symfony/phpunit-bridge": "^7.1.1", + "symfony/process": "^5 || ^6 || ^7" + }, + "time": "2024-06-24T20:46:46+00:00", + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-main": "2.x-dev" + }, + "plugin-modifies-install-path": true + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "MantisBT", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Starbug", + "Thelia", + "Whmcs", + "WolfCMS", + "agl", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "concreteCMS", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "known", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "matomo", + "mediawiki", + "miaoxing", + "modulework", + "modx", + "moodle", + "osclass", + "pantheon", + "phpbb", + "piwik", + "ppi", + "processwire", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "sylius", + "tastyigniter", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "support": { + "issues": "https://github.com/composer/installers/issues", + "source": "https://github.com/composer/installers/tree/v2.3.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "install-path": "./installers" + }, + { + "name": "typisttech/imposter", + "version": "0.6.1", + "version_normalized": "0.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/TypistTech/imposter.git", + "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TypistTech/imposter/zipball/f52b1a2289d2ea9c660cf9595085d0b11469af83", + "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "codeception/codeception": "^4.1", + "codeception/mockery-module": "^0.4.0", + "codeception/module-asserts": "^1.3", + "codeception/module-filesystem": "^1.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter" + }, + "time": "2020-12-06T22:57:09+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "TypistTech\\Imposter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Typist Tech", + "email": "imposter@typist.tech", + "homepage": "https://typist.tech" + }, + { + "name": "Tang Rufus", + "email": "tangrufus@gmail.com", + "homepage": "https://typist.tech", + "role": "Developer" + } + ], + "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.", + "homepage": "https://github.com/TypistTech/imposter", + "keywords": [ + "composer", + "dependency", + "monkey-patching", + "namespace", + "wordpress" + ], + "support": { + "email": "imposter@typist.tech", + "issues": "https://github.com/TypistTech/imposter/issues", + "source": "https://github.com/TypistTech/imposter" + }, + "funding": [ + { + "url": "https://typist.tech/donation/", + "type": "custom" + }, + { + "url": "https://www.paypal.me/iAmTangRufus/30usd", + "type": "custom" + }, + { + "url": "https://github.com/tangrufus", + "type": "github" + } + ], + "install-path": "../typisttech/imposter" + }, + { + "name": "typisttech/imposter-plugin", + "version": "0.6.2", + "version_normalized": "0.6.2.0", + "source": { + "type": "git", + "url": "https://github.com/TypistTech/imposter-plugin.git", + "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TypistTech/imposter-plugin/zipball/15fa3c90aca3b79497f438b9e02a6176498de53c", + "reference": "15fa3c90aca3b79497f438b9e02a6176498de53c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1 || ^2.0", + "php": "^7.3 || ^8.0", + "typisttech/imposter": "^0.6.1" + }, + "require-dev": { + "codeception/codeception": "^4.1", + "codeception/module-asserts": "^1.3", + "codeception/module-cli": "^1.1", + "codeception/module-filesystem": "^1.0", + "composer/composer": "^1.10.19 || ^2.0", + "squizlabs/php_codesniffer": "^3.5", + "typisttech/codeception-composer-project-module": "^0.1.1" + }, + "time": "2020-12-06T23:41:30+00:00", + "type": "composer-plugin", + "extra": { + "class": "TypistTech\\Imposter\\Plugin\\ImposterPlugin", + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "TypistTech\\Imposter\\Plugin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Typist Tech", + "email": "imposter-plugin@typist.tech", + "homepage": "https://www.typist.tech" + }, + { + "name": "Tang Rufus", + "email": "tangrufus@gmail.com", + "homepage": "https://www.typist.tech", + "role": "Developer" + } + ], + "description": "Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.", + "homepage": "https://github.com/TypistTech/imposter-plugin", + "keywords": [ + "composer", + "composer-plugin", + "dependency", + "monkey-patching", + "namespace", + "wordpress" + ], + "support": { + "email": "imposter-plugin@typist.tech", + "issues": "https://github.com/TypistTech/imposter-plugin/issues", + "source": "https://github.com/TypistTech/imposter-plugin" + }, + "funding": [ + { + "url": "https://typist.tech/donation/", + "type": "custom" + }, + { + "url": "https://www.paypal.me/iAmTangRufus/30usd", + "type": "custom" + }, + { + "url": "https://github.com/tangrufus", + "type": "github" + } + ], + "install-path": "../typisttech/imposter-plugin" + } + ], + "dev": false, + "dev-package-names": [] +} diff --git a/plugins/code-snippets/vendor/composer/installed.php b/plugins/code-snippets/vendor/composer/installed.php new file mode 100644 index 0000000..d42dcd6 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installed.php @@ -0,0 +1,50 @@ + array( + 'name' => 'codesnippetspro/code-snippets', + 'pretty_version' => 'v3.9.6', + 'version' => '3.9.6.0', + 'reference' => 'd8bebbd14c49105154ce15d974f8006dbd43e9f3', + 'type' => 'wordpress-plugin', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => false, + ), + 'versions' => array( + 'codesnippetspro/code-snippets' => array( + 'pretty_version' => 'v3.9.6', + 'version' => '3.9.6.0', + 'reference' => 'd8bebbd14c49105154ce15d974f8006dbd43e9f3', + 'type' => 'wordpress-plugin', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'composer/installers' => array( + 'pretty_version' => 'v2.3.0', + 'version' => '2.3.0.0', + 'reference' => '12fb2dfe5e16183de69e784a7b84046c43d97e8e', + 'type' => 'composer-plugin', + 'install_path' => __DIR__ . '/./installers', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'typisttech/imposter' => array( + 'pretty_version' => '0.6.1', + 'version' => '0.6.1.0', + 'reference' => 'f52b1a2289d2ea9c660cf9595085d0b11469af83', + 'type' => 'library', + 'install_path' => __DIR__ . '/../typisttech/imposter', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'typisttech/imposter-plugin' => array( + 'pretty_version' => '0.6.2', + 'version' => '0.6.2.0', + 'reference' => '15fa3c90aca3b79497f438b9e02a6176498de53c', + 'type' => 'composer-plugin', + 'install_path' => __DIR__ . '/../typisttech/imposter-plugin', + 'aliases' => array(), + 'dev_requirement' => false, + ), + ), +); diff --git a/plugins/code-snippets/vendor/composer/installers/LICENSE b/plugins/code-snippets/vendor/composer/installers/LICENSE new file mode 100644 index 0000000..85f97fc --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Kyle Robinson Young + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/plugins/code-snippets/vendor/composer/installers/composer.json b/plugins/code-snippets/vendor/composer/installers/composer.json new file mode 100644 index 0000000..9103484 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/composer.json @@ -0,0 +1,117 @@ +{ + "name": "composer/installers", + "type": "composer-plugin", + "license": "MIT", + "description": "A multi-framework Composer library installer", + "keywords": [ + "installer", + "AGL", + "AnnotateCms", + "Attogram", + "Bitrix", + "CakePHP", + "Chef", + "Cockpit", + "CodeIgniter", + "concrete5", + "ConcreteCMS", + "Croogo", + "DokuWiki", + "Dolibarr", + "Drupal", + "Elgg", + "Eliasis", + "ExpressionEngine", + "eZ Platform", + "FuelPHP", + "Grav", + "Hurad", + "ImageCMS", + "iTop", + "Kanboard", + "Known", + "Kohana", + "Lan Management System", + "Laravel", + "Lavalite", + "Lithium", + "Magento", + "majima", + "Mako", + "MantisBT", + "Matomo", + "Mautic", + "Maya", + "MODX", + "MODX Evo", + "MediaWiki", + "Miaoxing", + "OXID", + "osclass", + "MODULEWork", + "Moodle", + "Pantheon", + "Piwik", + "pxcms", + "phpBB", + "Plentymarkets", + "PPI", + "Puppet", + "Porto", + "ProcessWire", + "RadPHP", + "ReIndex", + "Roundcube", + "shopware", + "SilverStripe", + "SMF", + "Starbug", + "SyDES", + "Sylius", + "TastyIgniter", + "Thelia", + "WHMCS", + "WolfCMS", + "WordPress", + "YAWIK", + "Zend", + "Zikula" + ], + "homepage": "https://composer.github.io/installers/", + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "autoload": { + "psr-4": { "Composer\\Installers\\": "src/Composer/Installers" } + }, + "autoload-dev": { + "psr-4": { "Composer\\Installers\\Test\\": "tests/Composer/Installers/Test" } + }, + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-main": "2.x-dev" + }, + "plugin-modifies-install-path": true + }, + "require": { + "php": "^7.2 || ^8.0", + "composer-plugin-api": "^1.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^1.10.27 || ^2.7", + "composer/semver": "^1.7.2 || ^3.4.0", + "symfony/phpunit-bridge": "^7.1.1", + "phpstan/phpstan": "^1.11", + "symfony/process": "^5 || ^6 || ^7", + "phpstan/phpstan-phpunit": "^1" + }, + "scripts": { + "test": "@php vendor/bin/simple-phpunit", + "phpstan": "@php vendor/bin/phpstan analyse" + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AglInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AglInstaller.php new file mode 100644 index 0000000..b0996a6 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AglInstaller.php @@ -0,0 +1,29 @@ + */ + protected $locations = array( + 'module' => 'More/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $name = preg_replace_callback('/(?:^|_|-)(.?)/', function ($matches) { + return strtoupper($matches[1]); + }, $vars['name']); + + if (null === $name) { + throw new \RuntimeException('Failed to run preg_replace_callback: '.preg_last_error()); + } + + $vars['name'] = $name; + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AkauntingInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AkauntingInstaller.php new file mode 100644 index 0000000..c504c70 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AkauntingInstaller.php @@ -0,0 +1,23 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php new file mode 100644 index 0000000..58a0f66 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'module' => 'addons/modules/{$name}/', + 'component' => 'addons/components/{$name}/', + 'service' => 'addons/services/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php new file mode 100644 index 0000000..f01b399 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php @@ -0,0 +1,58 @@ + */ + protected $locations = array( + 'module' => 'Modules/{$name}/', + 'theme' => 'Themes/{$name}/' + ); + + /** + * Format package name. + * + * For package type asgard-module, cut off a trailing '-plugin' if present. + * + * For package type asgard-theme, cut off a trailing '-theme' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'asgard-module') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'asgard-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectPluginVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-module$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectThemeVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-theme$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php new file mode 100644 index 0000000..bd7dd8d --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php new file mode 100644 index 0000000..663ec2a --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php @@ -0,0 +1,137 @@ + */ + protected $locations = array(); + /** @var Composer */ + protected $composer; + /** @var PackageInterface */ + protected $package; + /** @var IOInterface */ + protected $io; + + /** + * Initializes base installer. + */ + public function __construct(PackageInterface $package, Composer $composer, IOInterface $io) + { + $this->composer = $composer; + $this->package = $package; + $this->io = $io; + } + + /** + * Return the install path based on package type. + */ + public function getInstallPath(PackageInterface $package, string $frameworkType = ''): string + { + $type = $this->package->getType(); + + $prettyName = $this->package->getPrettyName(); + if (strpos($prettyName, '/') !== false) { + list($vendor, $name) = explode('/', $prettyName); + } else { + $vendor = ''; + $name = $prettyName; + } + + $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type')); + + $extra = $package->getExtra(); + if (!empty($extra['installer-name'])) { + $availableVars['name'] = $extra['installer-name']; + } + + $extra = $this->composer->getPackage()->getExtra(); + if (!empty($extra['installer-paths'])) { + $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor); + if ($customPath !== false) { + return $this->templatePath($customPath, $availableVars); + } + } + + $packageType = substr($type, strlen($frameworkType) + 1); + $locations = $this->getLocations($frameworkType); + if (!isset($locations[$packageType])) { + throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type)); + } + + return $this->templatePath($locations[$packageType], $availableVars); + } + + /** + * For an installer to override to modify the vars per installer. + * + * @param array $vars This will normally receive array{name: string, vendor: string, type: string} + * @return array + */ + public function inflectPackageVars(array $vars): array + { + return $vars; + } + + /** + * Gets the installer's locations + * + * @return array map of package types => install path + */ + public function getLocations(string $frameworkType) + { + return $this->locations; + } + + /** + * Replace vars in a path + * + * @param array $vars + */ + protected function templatePath(string $path, array $vars = array()): string + { + if (strpos($path, '{') !== false) { + extract($vars); + preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches); + if (!empty($matches[1])) { + foreach ($matches[1] as $var) { + $path = str_replace('{$' . $var . '}', $$var, $path); + } + } + } + + return $path; + } + + /** + * Search through a passed paths array for a custom install path. + * + * @param array $paths + * @return string|false + */ + protected function mapCustomInstallPaths(array $paths, string $name, string $type, ?string $vendor = null) + { + foreach ($paths as $path => $names) { + $names = (array) $names; + if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) { + return $path; + } + } + + return false; + } + + protected function pregReplace(string $pattern, string $replacement, string $subject): string + { + $result = preg_replace($pattern, $replacement, $subject); + if (null === $result) { + throw new \RuntimeException('Failed to run preg_replace with '.$pattern.': '.preg_last_error()); + } + + return $result; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php new file mode 100644 index 0000000..705ecb4 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php @@ -0,0 +1,123 @@ +.`. + * - `bitrix-d7-component` — copy the component to directory `bitrix/components//`. + * - `bitrix-d7-template` — copy the template to directory `bitrix/templates/_`. + * + * You can set custom path to directory with Bitrix kernel in `composer.json`: + * + * ```json + * { + * "extra": { + * "bitrix-dir": "s1/bitrix" + * } + * } + * ``` + * + * @author Nik Samokhvalov + * @author Denis Kulichkin + */ +class BitrixInstaller extends BaseInstaller +{ + /** @var array */ + protected $locations = array( + 'module' => '{$bitrix_dir}/modules/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken) + 'component' => '{$bitrix_dir}/components/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken) + 'theme' => '{$bitrix_dir}/templates/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken) + 'd7-module' => '{$bitrix_dir}/modules/{$vendor}.{$name}/', + 'd7-component' => '{$bitrix_dir}/components/{$vendor}/{$name}/', + 'd7-template' => '{$bitrix_dir}/templates/{$vendor}_{$name}/', + ); + + /** + * @var string[] Storage for informations about duplicates at all the time of installation packages. + */ + private static $checkedDuplicates = array(); + + public function inflectPackageVars(array $vars): array + { + /** @phpstan-ignore-next-line */ + if ($this->composer->getPackage()) { + $extra = $this->composer->getPackage()->getExtra(); + + if (isset($extra['bitrix-dir'])) { + $vars['bitrix_dir'] = $extra['bitrix-dir']; + } + } + + if (!isset($vars['bitrix_dir'])) { + $vars['bitrix_dir'] = 'bitrix'; + } + + return parent::inflectPackageVars($vars); + } + + /** + * {@inheritdoc} + */ + protected function templatePath(string $path, array $vars = array()): string + { + $templatePath = parent::templatePath($path, $vars); + $this->checkDuplicates($templatePath, $vars); + + return $templatePath; + } + + /** + * Duplicates search packages. + * + * @param array $vars + */ + protected function checkDuplicates(string $path, array $vars = array()): void + { + $packageType = substr($vars['type'], strlen('bitrix') + 1); + $localDir = explode('/', $vars['bitrix_dir']); + array_pop($localDir); + $localDir[] = 'local'; + $localDir = implode('/', $localDir); + + $oldPath = str_replace( + array('{$bitrix_dir}', '{$name}'), + array($localDir, $vars['name']), + $this->locations[$packageType] + ); + + if (in_array($oldPath, static::$checkedDuplicates)) { + return; + } + + if ($oldPath !== $path && file_exists($oldPath) && $this->io->isInteractive()) { + $this->io->writeError(' Duplication of packages:'); + $this->io->writeError(' Package ' . $oldPath . ' will be called instead package ' . $path . ''); + + while (true) { + switch ($this->io->ask(' Delete ' . $oldPath . ' [y,n,?]? ', '?')) { + case 'y': + $fs = new Filesystem(); + $fs->removeDirectory($oldPath); + break 2; + + case 'n': + break 2; + + case '?': + default: + $this->io->writeError(array( + ' y - delete package ' . $oldPath . ' and to continue with the installation', + ' n - don\'t delete and to continue with the installation', + )); + $this->io->writeError(' ? - print help'); + break; + } + } + } + + static::$checkedDuplicates[] = $oldPath; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php new file mode 100644 index 0000000..ab022d9 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'package' => 'Packages/{$vendor}/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BotbleInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BotbleInstaller.php new file mode 100644 index 0000000..35e1cb8 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/BotbleInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'plugin' => 'platform/plugins/{$name}/', + 'theme' => 'platform/themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php new file mode 100644 index 0000000..12b4ed4 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php @@ -0,0 +1,67 @@ + */ + protected $locations = array( + 'plugin' => 'Plugin/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + if ($this->matchesCakeVersion('>=', '3.0.0')) { + return $vars; + } + + $nameParts = explode('/', $vars['name']); + foreach ($nameParts as &$value) { + $value = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $value)); + $value = str_replace(array('-', '_'), ' ', $value); + $value = str_replace(' ', '', ucwords($value)); + } + $vars['name'] = implode('/', $nameParts); + + return $vars; + } + + /** + * Change the default plugin location when cakephp >= 3.0 + */ + public function getLocations(string $frameworkType): array + { + if ($this->matchesCakeVersion('>=', '3.0.0')) { + $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/'; + } + return $this->locations; + } + + /** + * Check if CakePHP version matches against a version + * + * @phpstan-param '='|'=='|'<'|'<='|'>'|'>='|'<>'|'!=' $matcher + */ + protected function matchesCakeVersion(string $matcher, string $version): bool + { + $repositoryManager = $this->composer->getRepositoryManager(); + /** @phpstan-ignore-next-line */ + if (!$repositoryManager) { + return false; + } + + $repos = $repositoryManager->getLocalRepository(); + /** @phpstan-ignore-next-line */ + if (!$repos) { + return false; + } + + return $repos->findPackage('cakephp/cakephp', new Constraint($matcher, $version)) !== null; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php new file mode 100644 index 0000000..b0d3c5f --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'cookbook' => 'Chef/{$vendor}/{$name}/', + 'role' => 'Chef/roles/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php new file mode 100644 index 0000000..1c52e0c --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'ext' => 'ext/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php new file mode 100644 index 0000000..2c943b2 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'ship' => 'CCF/orbit/{$name}/', + 'theme' => 'CCF/app/themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php new file mode 100644 index 0000000..d3fcdf7 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php @@ -0,0 +1,36 @@ + */ + protected $locations = array( + 'module' => 'cockpit/modules/addons/{$name}/', + ); + + /** + * Format module name. + * + * Strip `module-` prefix from package name. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] == 'cockpit-module') { + return $this->inflectModuleVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + public function inflectModuleVars(array $vars): array + { + $vars['name'] = ucfirst($this->pregReplace('/cockpit-/i', '', $vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php new file mode 100644 index 0000000..a183e07 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'library' => 'application/libraries/{$name}/', + 'third-party' => 'application/third_party/{$name}/', + 'module' => 'application/modules/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php new file mode 100644 index 0000000..2f5fecb --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php @@ -0,0 +1,15 @@ + */ + protected $locations = array( + 'core' => 'concrete/', + 'block' => 'application/blocks/{$name}/', + 'package' => 'packages/{$name}/', + 'theme' => 'application/themes/{$name}/', + 'update' => 'updates/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ConcreteCMSInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ConcreteCMSInstaller.php new file mode 100644 index 0000000..b6e7f00 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ConcreteCMSInstaller.php @@ -0,0 +1,15 @@ + */ + protected $locations = array( + 'core' => 'concrete/', + 'block' => 'application/blocks/{$name}/', + 'package' => 'packages/{$name}/', + 'theme' => 'application/themes/{$name}/', + 'update' => 'updates/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php new file mode 100644 index 0000000..31d4939 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php @@ -0,0 +1,23 @@ + */ + protected $locations = array( + 'plugin' => 'Plugin/{$name}/', + 'theme' => 'View/Themed/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower(str_replace(array('-', '_'), ' ', $vars['name'])); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php new file mode 100644 index 0000000..88f53f7 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'app' => 'app/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php new file mode 100644 index 0000000..196f60e --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'module' => 'modules/{$vendor}/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php new file mode 100644 index 0000000..aa3a2e6 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php @@ -0,0 +1,57 @@ + */ + protected $locations = array( + 'plugin' => 'lib/plugins/{$name}/', + 'template' => 'lib/tpl/{$name}/', + ); + + /** + * Format package name. + * + * For package type dokuwiki-plugin, cut off a trailing '-plugin', + * or leading dokuwiki_ if present. + * + * For package type dokuwiki-template, cut off a trailing '-template' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'dokuwiki-plugin') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'dokuwiki-template') { + return $this->inflectTemplateVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectPluginVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-plugin$/', '', $vars['name']); + $vars['name'] = $this->pregReplace('/^dokuwiki_?-?/', '', $vars['name']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectTemplateVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-template$/', '', $vars['name']); + $vars['name'] = $this->pregReplace('/^dokuwiki_?-?/', '', $vars['name']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php new file mode 100644 index 0000000..c583619 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php @@ -0,0 +1,18 @@ + + */ +class DolibarrInstaller extends BaseInstaller +{ + //TODO: Add support for scripts and themes + /** @var array */ + protected $locations = array( + 'module' => 'htdocs/custom/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php new file mode 100644 index 0000000..65a3a91 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php @@ -0,0 +1,25 @@ + */ + protected $locations = array( + 'core' => 'core/', + 'module' => 'modules/{$name}/', + 'theme' => 'themes/{$name}/', + 'library' => 'libraries/{$name}/', + 'profile' => 'profiles/{$name}/', + 'database-driver' => 'drivers/lib/Drupal/Driver/Database/{$name}/', + 'drush' => 'drush/{$name}/', + 'custom-theme' => 'themes/custom/{$name}/', + 'custom-module' => 'modules/custom/{$name}/', + 'custom-profile' => 'profiles/custom/{$name}/', + 'drupal-multisite' => 'sites/{$name}/', + 'console' => 'console/{$name}/', + 'console-language' => 'console/language/{$name}/', + 'config' => 'config/sync/', + 'recipe' => 'recipes/{$name}', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php new file mode 100644 index 0000000..48ef2ec --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'plugin' => 'mod/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php new file mode 100644 index 0000000..d7dd9a9 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php @@ -0,0 +1,14 @@ + */ + protected $locations = array( + 'component' => 'components/{$name}/', + 'module' => 'modules/{$name}/', + 'plugin' => 'plugins/{$name}/', + 'template' => 'templates/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php new file mode 100644 index 0000000..fe1d468 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php @@ -0,0 +1,31 @@ + */ + private $ee2Locations = array( + 'addon' => 'system/expressionengine/third_party/{$name}/', + 'theme' => 'themes/third_party/{$name}/', + ); + + /** @var array */ + private $ee3Locations = array( + 'addon' => 'system/user/addons/{$name}/', + 'theme' => 'themes/user/{$name}/', + ); + + public function getLocations(string $frameworkType): array + { + if ($frameworkType === 'ee2') { + $this->locations = $this->ee2Locations; + } else { + $this->locations = $this->ee3Locations; + } + + return $this->locations; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php new file mode 100644 index 0000000..1f5b84e --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'meta-assets' => 'web/assets/ezplatform/', + 'assets' => 'web/assets/ezplatform/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ForkCMSInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ForkCMSInstaller.php new file mode 100644 index 0000000..cf62926 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ForkCMSInstaller.php @@ -0,0 +1,58 @@ + */ + protected $locations = [ + 'module' => 'src/Modules/{$name}/', + 'theme' => 'src/Themes/{$name}/' + ]; + + /** + * Format package name. + * + * For package type fork-cms-module, cut off a trailing '-plugin' if present. + * + * For package type fork-cms-theme, cut off a trailing '-theme' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'fork-cms-module') { + return $this->inflectModuleVars($vars); + } + + if ($vars['type'] === 'fork-cms-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectModuleVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^fork-cms-|-module|ForkCMS|ForkCms|Forkcms|forkcms|Module$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); // replace hyphens with spaces + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); // make module name camelcased + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectThemeVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^fork-cms-|-theme|ForkCMS|ForkCms|Forkcms|forkcms|Theme$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); // replace hyphens with spaces + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); // make theme name camelcased + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php new file mode 100644 index 0000000..5948572 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'module' => 'fuel/app/modules/{$name}/', + 'package' => 'fuel/packages/{$name}/', + 'theme' => 'fuel/app/themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php new file mode 100644 index 0000000..b4d80ed --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'component' => 'components/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/GravInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/GravInstaller.php new file mode 100644 index 0000000..f5792e3 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/GravInstaller.php @@ -0,0 +1,29 @@ + */ + protected $locations = array( + 'plugin' => 'user/plugins/{$name}/', + 'theme' => 'user/themes/{$name}/', + ); + + /** + * Format package name + */ + public function inflectPackageVars(array $vars): array + { + $restrictedWords = implode('|', array_keys($this->locations)); + + $vars['name'] = strtolower($vars['name']); + $vars['name'] = $this->pregReplace( + '/^(?:grav-)?(?:(?:'.$restrictedWords.')-)?(.*?)(?:-(?:'.$restrictedWords.'))?$/ui', + '$1', + $vars['name'] + ); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php new file mode 100644 index 0000000..dd76c5b --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php @@ -0,0 +1,27 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + 'theme' => 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $nameParts = explode('/', $vars['name']); + foreach ($nameParts as &$value) { + $value = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $value)); + $value = str_replace(array('-', '_'), ' ', $value); + $value = str_replace(' ', '', ucwords($value)); + } + $vars['name'] = implode('/', $nameParts); + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php new file mode 100644 index 0000000..4157cec --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'template' => 'templates/{$name}/', + 'module' => 'application/modules/{$name}/', + 'library' => 'application/libraries/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Installer.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Installer.php new file mode 100644 index 0000000..862d8ae --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Installer.php @@ -0,0 +1,288 @@ + + */ + private $supportedTypes = array( + 'akaunting' => 'AkauntingInstaller', + 'asgard' => 'AsgardInstaller', + 'attogram' => 'AttogramInstaller', + 'agl' => 'AglInstaller', + 'annotatecms' => 'AnnotateCmsInstaller', + 'bitrix' => 'BitrixInstaller', + 'botble' => 'BotbleInstaller', + 'bonefish' => 'BonefishInstaller', + 'cakephp' => 'CakePHPInstaller', + 'chef' => 'ChefInstaller', + 'civicrm' => 'CiviCrmInstaller', + 'ccframework' => 'ClanCatsFrameworkInstaller', + 'cockpit' => 'CockpitInstaller', + 'codeigniter' => 'CodeIgniterInstaller', + 'concrete5' => 'Concrete5Installer', + 'concretecms' => 'ConcreteCMSInstaller', + 'croogo' => 'CroogoInstaller', + 'dframe' => 'DframeInstaller', + 'dokuwiki' => 'DokuWikiInstaller', + 'dolibarr' => 'DolibarrInstaller', + 'decibel' => 'DecibelInstaller', + 'drupal' => 'DrupalInstaller', + 'elgg' => 'ElggInstaller', + 'eliasis' => 'EliasisInstaller', + 'ee3' => 'ExpressionEngineInstaller', + 'ee2' => 'ExpressionEngineInstaller', + 'ezplatform' => 'EzPlatformInstaller', + 'fork' => 'ForkCMSInstaller', + 'fuel' => 'FuelInstaller', + 'fuelphp' => 'FuelphpInstaller', + 'grav' => 'GravInstaller', + 'hurad' => 'HuradInstaller', + 'tastyigniter' => 'TastyIgniterInstaller', + 'imagecms' => 'ImageCMSInstaller', + 'itop' => 'ItopInstaller', + 'kanboard' => 'KanboardInstaller', + 'known' => 'KnownInstaller', + 'kodicms' => 'KodiCMSInstaller', + 'kohana' => 'KohanaInstaller', + 'lms' => 'LanManagementSystemInstaller', + 'laravel' => 'LaravelInstaller', + 'lavalite' => 'LavaLiteInstaller', + 'lithium' => 'LithiumInstaller', + 'magento' => 'MagentoInstaller', + 'majima' => 'MajimaInstaller', + 'mantisbt' => 'MantisBTInstaller', + 'mako' => 'MakoInstaller', + 'matomo' => 'MatomoInstaller', + 'maya' => 'MayaInstaller', + 'mautic' => 'MauticInstaller', + 'mediawiki' => 'MediaWikiInstaller', + 'miaoxing' => 'MiaoxingInstaller', + 'microweber' => 'MicroweberInstaller', + 'modulework' => 'MODULEWorkInstaller', + 'modx' => 'ModxInstaller', + 'modxevo' => 'MODXEvoInstaller', + 'moodle' => 'MoodleInstaller', + 'october' => 'OctoberInstaller', + 'ontowiki' => 'OntoWikiInstaller', + 'oxid' => 'OxidInstaller', + 'osclass' => 'OsclassInstaller', + 'pxcms' => 'PxcmsInstaller', + 'phpbb' => 'PhpBBInstaller', + 'piwik' => 'PiwikInstaller', + 'plentymarkets'=> 'PlentymarketsInstaller', + 'ppi' => 'PPIInstaller', + 'puppet' => 'PuppetInstaller', + 'radphp' => 'RadPHPInstaller', + 'phifty' => 'PhiftyInstaller', + 'porto' => 'PortoInstaller', + 'processwire' => 'ProcessWireInstaller', + 'quicksilver' => 'PantheonInstaller', + 'redaxo' => 'RedaxoInstaller', + 'redaxo5' => 'Redaxo5Installer', + 'reindex' => 'ReIndexInstaller', + 'roundcube' => 'RoundcubeInstaller', + 'shopware' => 'ShopwareInstaller', + 'sitedirect' => 'SiteDirectInstaller', + 'silverstripe' => 'SilverStripeInstaller', + 'smf' => 'SMFInstaller', + 'starbug' => 'StarbugInstaller', + 'sydes' => 'SyDESInstaller', + 'sylius' => 'SyliusInstaller', + 'tao' => 'TaoInstaller', + 'thelia' => 'TheliaInstaller', + 'tusk' => 'TuskInstaller', + 'userfrosting' => 'UserFrostingInstaller', + 'vanilla' => 'VanillaInstaller', + 'whmcs' => 'WHMCSInstaller', + 'winter' => 'WinterInstaller', + 'wolfcms' => 'WolfCMSInstaller', + 'wordpress' => 'WordPressInstaller', + 'yawik' => 'YawikInstaller', + 'zend' => 'ZendInstaller', + 'zikula' => 'ZikulaInstaller', + 'prestashop' => 'PrestashopInstaller' + ); + + /** + * Disables installers specified in main composer extra installer-disable + * list + */ + public function __construct( + IOInterface $io, + Composer $composer, + string $type = 'library', + ?Filesystem $filesystem = null, + ?BinaryInstaller $binaryInstaller = null + ) { + parent::__construct($io, $composer, $type, $filesystem, $binaryInstaller); + $this->removeDisabledInstallers(); + } + + /** + * {@inheritDoc} + */ + public function getInstallPath(PackageInterface $package) + { + $type = $package->getType(); + $frameworkType = $this->findFrameworkType($type); + + if ($frameworkType === false) { + throw new \InvalidArgumentException( + 'Sorry the package type of this package is not yet supported.' + ); + } + + $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType]; + /** + * @var BaseInstaller + */ + $installer = new $class($package, $this->composer, $this->getIO()); + + $path = $installer->getInstallPath($package, $frameworkType); + if (!$this->filesystem->isAbsolutePath($path)) { + $path = getcwd() . '/' . $path; + } + + return $path; + } + + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) + { + $installPath = $this->getPackageBasePath($package); + $io = $this->io; + $outputStatus = function () use ($io, $installPath) { + $io->write(sprintf('Deleting %s - %s', $installPath, !file_exists($installPath) ? 'deleted' : 'not deleted')); + }; + + $promise = parent::uninstall($repo, $package); + + // Composer v2 might return a promise here + if ($promise instanceof PromiseInterface) { + return $promise->then($outputStatus); + } + + // If not, execute the code right away as parent::uninstall executed synchronously (composer v1, or v2 without async) + $outputStatus(); + + return null; + } + + /** + * {@inheritDoc} + * + * @param string $packageType + */ + public function supports($packageType) + { + $frameworkType = $this->findFrameworkType($packageType); + + if ($frameworkType === false) { + return false; + } + + $locationPattern = $this->getLocationPattern($frameworkType); + + return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1; + } + + /** + * Finds a supported framework type if it exists and returns it + * + * @return string|false + */ + protected function findFrameworkType(string $type) + { + krsort($this->supportedTypes); + + foreach ($this->supportedTypes as $key => $val) { + if ($key === substr($type, 0, strlen($key))) { + return substr($type, 0, strlen($key)); + } + } + + return false; + } + + /** + * Get the second part of the regular expression to check for support of a + * package type + */ + protected function getLocationPattern(string $frameworkType): string + { + $pattern = null; + if (!empty($this->supportedTypes[$frameworkType])) { + $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType]; + /** @var BaseInstaller $framework */ + $framework = new $frameworkClass(new Package('dummy/pkg', '1.0.0.0', '1.0.0'), $this->composer, $this->getIO()); + $locations = array_keys($framework->getLocations($frameworkType)); + if ($locations) { + $pattern = '(' . implode('|', $locations) . ')'; + } + } + + return $pattern ?: '(\w+)'; + } + + private function getIO(): IOInterface + { + return $this->io; + } + + /** + * Look for installers set to be disabled in composer's extra config and + * remove them from the list of supported installers. + * + * Globals: + * - true, "all", and "*" - disable all installers. + * - false - enable all installers (useful with + * wikimedia/composer-merge-plugin or similar) + */ + protected function removeDisabledInstallers(): void + { + $extra = $this->composer->getPackage()->getExtra(); + + if (!isset($extra['installer-disable']) || $extra['installer-disable'] === false) { + // No installers are disabled + return; + } + + // Get installers to disable + $disable = $extra['installer-disable']; + + // Ensure $disabled is an array + if (!is_array($disable)) { + $disable = array($disable); + } + + // Check which installers should be disabled + $all = array(true, "all", "*"); + $intersect = array_intersect($all, $disable); + if (!empty($intersect)) { + // Disable all installers + $this->supportedTypes = array(); + return; + } + + // Disable specified installers + foreach ($disable as $key => $installer) { + if (is_string($installer) && key_exists($installer, $this->supportedTypes)) { + unset($this->supportedTypes[$installer]); + } + } + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php new file mode 100644 index 0000000..06af068 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'extension' => 'extensions/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php new file mode 100644 index 0000000..bca954b --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php @@ -0,0 +1,20 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php new file mode 100644 index 0000000..61910a8 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'plugin' => 'IdnoPlugins/{$name}/', + 'theme' => 'Themes/{$name}/', + 'console' => 'ConsolePlugins/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php new file mode 100644 index 0000000..2505ac6 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'plugin' => 'cms/plugins/{$name}/', + 'media' => 'cms/media/vendor/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php new file mode 100644 index 0000000..b6aa809 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php new file mode 100644 index 0000000..7fe9d9b --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php @@ -0,0 +1,27 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + 'template' => 'templates/{$name}/', + 'document-template' => 'documents/templates/{$name}/', + 'userpanel-module' => 'userpanel/modules/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php new file mode 100644 index 0000000..a69dc88 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'library' => 'libraries/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php new file mode 100644 index 0000000..e4a7c7d --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'package' => 'packages/{$vendor}/{$name}/', + 'theme' => 'public/themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php new file mode 100644 index 0000000..b24bea2 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'library' => 'libraries/{$name}/', + 'source' => 'libraries/_source/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php new file mode 100644 index 0000000..369e8b4 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php new file mode 100644 index 0000000..062a839 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php @@ -0,0 +1,18 @@ + */ + protected $locations = array( + 'snippet' => 'assets/snippets/{$name}/', + 'plugin' => 'assets/plugins/{$name}/', + 'module' => 'assets/modules/{$name}/', + 'template' => 'assets/templates/{$name}/', + 'lib' => 'assets/lib/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php new file mode 100644 index 0000000..ec07cd6 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'theme' => 'app/design/frontend/{$name}/', + 'skin' => 'skin/frontend/default/{$name}/', + 'library' => 'lib/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php new file mode 100644 index 0000000..6fc3089 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php @@ -0,0 +1,46 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); + + /** + * Transforms the names + * + * @param array $vars + * @return array + */ + public function inflectPackageVars(array $vars): array + { + return $this->correctPluginName($vars); + } + + /** + * Change hyphenated names to camelcase + * + * @param array $vars + * @return array + */ + private function correctPluginName(array $vars): array + { + $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) { + return strtoupper($matches[0][1]); + }, $vars['name']); + + if (null === $camelCasedName) { + throw new \RuntimeException('Failed to run preg_replace_callback: '.preg_last_error()); + } + + $vars['name'] = ucfirst($camelCasedName); + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php new file mode 100644 index 0000000..cbe3760 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'package' => 'app/packages/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php new file mode 100644 index 0000000..98e230f --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php @@ -0,0 +1,25 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MatomoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MatomoInstaller.php new file mode 100644 index 0000000..57fdb03 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MatomoInstaller.php @@ -0,0 +1,28 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php new file mode 100644 index 0000000..e48c133 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php @@ -0,0 +1,43 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + 'theme' => 'themes/{$name}/', + 'core' => 'app/', + ); + + private function getDirectoryName(): string + { + $extra = $this->package->getExtra(); + if (!empty($extra['install-directory-name'])) { + return $extra['install-directory-name']; + } + + return $this->toCamelCase($this->package->getPrettyName()); + } + + private function toCamelCase(string $packageName): string + { + return str_replace(' ', '', ucwords(str_replace('-', ' ', basename($packageName)))); + } + + /** + * Format package name of mautic-plugins to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] == 'mautic-plugin' || $vars['type'] == 'mautic-theme') { + $directoryName = $this->getDirectoryName(); + $vars['name'] = $directoryName; + } + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php new file mode 100644 index 0000000..df486da --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php @@ -0,0 +1,38 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + ); + + /** + * Format package name. + * + * For package type maya-module, cut off a trailing '-module' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'maya-module') { + return $this->inflectModuleVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectModuleVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-module$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php new file mode 100644 index 0000000..8e9d771 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php @@ -0,0 +1,58 @@ + */ + protected $locations = array( + 'core' => 'core/', + 'extension' => 'extensions/{$name}/', + 'skin' => 'skins/{$name}/', + ); + + /** + * Format package name. + * + * For package type mediawiki-extension, cut off a trailing '-extension' if present and transform + * to CamelCase keeping existing uppercase chars. + * + * For package type mediawiki-skin, cut off a trailing '-skin' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'mediawiki-extension') { + return $this->inflectExtensionVars($vars); + } + + if ($vars['type'] === 'mediawiki-skin') { + return $this->inflectSkinVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectExtensionVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-extension$/', '', $vars['name']); + $vars['name'] = str_replace('-', ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectSkinVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-skin$/', '', $vars['name']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MiaoxingInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MiaoxingInstaller.php new file mode 100644 index 0000000..0254177 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MiaoxingInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php new file mode 100644 index 0000000..a4d97ab --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php @@ -0,0 +1,145 @@ + */ + protected $locations = array( + 'module' => 'userfiles/modules/{$install_item_dir}/', + 'module-skin' => 'userfiles/modules/{$install_item_dir}/templates/', + 'template' => 'userfiles/templates/{$install_item_dir}/', + 'element' => 'userfiles/elements/{$install_item_dir}/', + 'vendor' => 'vendor/{$install_item_dir}/', + 'components' => 'components/{$install_item_dir}/' + ); + + /** + * Format package name. + * + * For package type microweber-module, cut off a trailing '-module' if present + * + * For package type microweber-template, cut off a trailing '-template' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($this->package->getTargetDir() !== null && $this->package->getTargetDir() !== '') { + $vars['install_item_dir'] = $this->package->getTargetDir(); + } else { + $vars['install_item_dir'] = $vars['name']; + if ($vars['type'] === 'microweber-template') { + return $this->inflectTemplateVars($vars); + } + if ($vars['type'] === 'microweber-templates') { + return $this->inflectTemplatesVars($vars); + } + if ($vars['type'] === 'microweber-core') { + return $this->inflectCoreVars($vars); + } + if ($vars['type'] === 'microweber-adapter') { + return $this->inflectCoreVars($vars); + } + if ($vars['type'] === 'microweber-module') { + return $this->inflectModuleVars($vars); + } + if ($vars['type'] === 'microweber-modules') { + return $this->inflectModulesVars($vars); + } + if ($vars['type'] === 'microweber-skin') { + return $this->inflectSkinVars($vars); + } + if ($vars['type'] === 'microweber-element' or $vars['type'] === 'microweber-elements') { + return $this->inflectElementVars($vars); + } + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectTemplateVars(array $vars): array + { + $vars['install_item_dir'] = $this->pregReplace('/-template$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/template-$/', '', $vars['install_item_dir']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectTemplatesVars(array $vars): array + { + $vars['install_item_dir'] = $this->pregReplace('/-templates$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/templates-$/', '', $vars['install_item_dir']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectCoreVars(array $vars): array + { + $vars['install_item_dir'] = $this->pregReplace('/-providers$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/-provider$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/-adapter$/', '', $vars['install_item_dir']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectModuleVars(array $vars): array + { + $vars['install_item_dir'] = $this->pregReplace('/-module$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/module-$/', '', $vars['install_item_dir']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectModulesVars(array $vars): array + { + $vars['install_item_dir'] = $this->pregReplace('/-modules$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/modules-$/', '', $vars['install_item_dir']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectSkinVars(array $vars): array + { + $vars['install_item_dir'] = $this->pregReplace('/-skin$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/skin-$/', '', $vars['install_item_dir']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectElementVars(array $vars): array + { + $vars['install_item_dir'] = $this->pregReplace('/-elements$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/elements-$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/-element$/', '', $vars['install_item_dir']); + $vars['install_item_dir'] = $this->pregReplace('/element-$/', '', $vars['install_item_dir']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php new file mode 100644 index 0000000..e2dddec --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php @@ -0,0 +1,14 @@ + */ + protected $locations = array( + 'extra' => 'core/packages/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php new file mode 100644 index 0000000..eb2b8ac --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php @@ -0,0 +1,73 @@ + */ + protected $locations = array( + 'mod' => 'mod/{$name}/', + 'admin_report' => 'admin/report/{$name}/', + 'atto' => 'lib/editor/atto/plugins/{$name}/', + 'tool' => 'admin/tool/{$name}/', + 'assignment' => 'mod/assignment/type/{$name}/', + 'assignsubmission' => 'mod/assign/submission/{$name}/', + 'assignfeedback' => 'mod/assign/feedback/{$name}/', + 'antivirus' => 'lib/antivirus/{$name}/', + 'auth' => 'auth/{$name}/', + 'availability' => 'availability/condition/{$name}/', + 'block' => 'blocks/{$name}/', + 'booktool' => 'mod/book/tool/{$name}/', + 'cachestore' => 'cache/stores/{$name}/', + 'cachelock' => 'cache/locks/{$name}/', + 'calendartype' => 'calendar/type/{$name}/', + 'communication' => 'communication/provider/{$name}/', + 'customfield' => 'customfield/field/{$name}/', + 'fileconverter' => 'files/converter/{$name}/', + 'format' => 'course/format/{$name}/', + 'coursereport' => 'course/report/{$name}/', + 'contenttype' => 'contentbank/contenttype/{$name}/', + 'customcertelement' => 'mod/customcert/element/{$name}/', + 'datafield' => 'mod/data/field/{$name}/', + 'dataformat' => 'dataformat/{$name}/', + 'datapreset' => 'mod/data/preset/{$name}/', + 'editor' => 'lib/editor/{$name}/', + 'enrol' => 'enrol/{$name}/', + 'filter' => 'filter/{$name}/', + 'forumreport' => 'mod/forum/report/{$name}/', + 'gradeexport' => 'grade/export/{$name}/', + 'gradeimport' => 'grade/import/{$name}/', + 'gradereport' => 'grade/report/{$name}/', + 'gradingform' => 'grade/grading/form/{$name}/', + 'h5plib' => 'h5p/h5plib/{$name}/', + 'local' => 'local/{$name}/', + 'logstore' => 'admin/tool/log/store/{$name}/', + 'ltisource' => 'mod/lti/source/{$name}/', + 'ltiservice' => 'mod/lti/service/{$name}/', + 'media' => 'media/player/{$name}/', + 'message' => 'message/output/{$name}/', + 'mlbackend' => 'lib/mlbackend/{$name}/', + 'mnetservice' => 'mnet/service/{$name}/', + 'paygw' => 'payment/gateway/{$name}/', + 'plagiarism' => 'plagiarism/{$name}/', + 'portfolio' => 'portfolio/{$name}/', + 'qbank' => 'question/bank/{$name}/', + 'qbehaviour' => 'question/behaviour/{$name}/', + 'qformat' => 'question/format/{$name}/', + 'qtype' => 'question/type/{$name}/', + 'quizaccess' => 'mod/quiz/accessrule/{$name}/', + 'quiz' => 'mod/quiz/report/{$name}/', + 'report' => 'report/{$name}/', + 'repository' => 'repository/{$name}/', + 'scormreport' => 'mod/scorm/report/{$name}/', + 'search' => 'search/engine/{$name}/', + 'theme' => 'theme/{$name}/', + 'tiny' => 'lib/editor/tiny/plugins/{$name}/', + 'tinymce' => 'lib/editor/tinymce/plugins/{$name}/', + 'profilefield' => 'user/profile/field/{$name}/', + 'webservice' => 'webservice/{$name}/', + 'workshopallocation' => 'mod/workshop/allocation/{$name}/', + 'workshopeval' => 'mod/workshop/eval/{$name}/', + 'workshopform' => 'mod/workshop/form/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php new file mode 100644 index 0000000..524f17d --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php @@ -0,0 +1,57 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + 'plugin' => 'plugins/{$vendor}/{$name}/', + 'theme' => 'themes/{$vendor}-{$name}/' + ); + + /** + * Format package name. + * + * For package type october-plugin, cut off a trailing '-plugin' if present. + * + * For package type october-theme, cut off a trailing '-theme' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'october-plugin') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'october-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectPluginVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^oc-|-plugin$/', '', $vars['name']); + $vars['vendor'] = $this->pregReplace('/[^a-z0-9_]/i', '', $vars['vendor']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectThemeVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^oc-|-theme$/', '', $vars['name']); + $vars['vendor'] = $this->pregReplace('/[^a-z0-9_]/i', '', $vars['vendor']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php new file mode 100644 index 0000000..fd20c1a --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php @@ -0,0 +1,26 @@ + */ + protected $locations = array( + 'extension' => 'extensions/{$name}/', + 'theme' => 'extensions/themes/{$name}/', + 'translation' => 'extensions/translations/{$name}/', + ); + + /** + * Format package name to lower case and remove ".ontowiki" suffix + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($vars['name']); + $vars['name'] = $this->pregReplace('/.ontowiki$/', '', $vars['name']); + $vars['name'] = $this->pregReplace('/-theme$/', '', $vars['name']); + $vars['name'] = $this->pregReplace('/-translation$/', '', $vars['name']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php new file mode 100644 index 0000000..e61d61f --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php @@ -0,0 +1,14 @@ + */ + protected $locations = array( + 'plugin' => 'oc-content/plugins/{$name}/', + 'theme' => 'oc-content/themes/{$name}/', + 'language' => 'oc-content/languages/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php new file mode 100644 index 0000000..6e1e862 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php @@ -0,0 +1,49 @@ +.+)\/.+/'; + + /** @var array */ + protected $locations = array( + 'module' => 'modules/{$name}/', + 'theme' => 'application/views/{$name}/', + 'out' => 'out/{$name}/', + ); + + public function getInstallPath(PackageInterface $package, string $frameworkType = ''): string + { + $installPath = parent::getInstallPath($package, $frameworkType); + $type = $this->package->getType(); + if ($type === 'oxid-module') { + $this->prepareVendorDirectory($installPath); + } + return $installPath; + } + + /** + * Makes sure there is a vendormetadata.php file inside + * the vendor folder if there is a vendor folder. + */ + protected function prepareVendorDirectory(string $installPath): void + { + $matches = ''; + $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches); + if (!$hasVendorDirectory) { + return; + } + + $vendorDirectory = $matches['vendor']; + $vendorPath = getcwd() . '/modules/' . $vendorDirectory; + if (!file_exists($vendorPath)) { + mkdir($vendorPath, 0755, true); + } + + $vendorMetaDataPath = $vendorPath . '/vendormetadata.php'; + touch($vendorMetaDataPath); + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php new file mode 100644 index 0000000..714c467 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php new file mode 100644 index 0000000..439f61a --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'script' => 'web/private/scripts/quicksilver/{$name}', + 'module' => 'web/private/scripts/quicksilver/{$name}', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php new file mode 100644 index 0000000..3c970e2 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'bundle' => 'bundles/{$name}/', + 'library' => 'libraries/{$name}/', + 'framework' => 'frameworks/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php new file mode 100644 index 0000000..d53ee4f --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'extension' => 'ext/{$vendor}/{$name}/', + 'language' => 'language/{$name}/', + 'style' => 'styles/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php new file mode 100644 index 0000000..b2faf44 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php @@ -0,0 +1,28 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php new file mode 100644 index 0000000..0c06359 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php @@ -0,0 +1,28 @@ + */ + protected $locations = array( + 'plugin' => '{$name}/' + ); + + /** + * Remove hyphen, "plugin" and format to camelcase + */ + public function inflectPackageVars(array $vars): array + { + $nameBits = explode("-", $vars['name']); + foreach ($nameBits as $key => $name) { + $nameBits[$key] = ucfirst($name); + if (strcasecmp($name, "Plugin") == 0) { + unset($nameBits[$key]); + } + } + $vars['name'] = implode('', $nameBits); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Plugin.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Plugin.php new file mode 100644 index 0000000..437a949 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Plugin.php @@ -0,0 +1,28 @@ +installer = new Installer($io, $composer); + $composer->getInstallationManager()->addInstaller($this->installer); + } + + public function deactivate(Composer $composer, IOInterface $io): void + { + $composer->getInstallationManager()->removeInstaller($this->installer); + } + + public function uninstall(Composer $composer, IOInterface $io): void + { + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php new file mode 100644 index 0000000..a01d7a0 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'container' => 'app/Containers/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php new file mode 100644 index 0000000..23f156f --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + 'theme' => 'themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ProcessWireInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ProcessWireInstaller.php new file mode 100644 index 0000000..a7eb1ee --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ProcessWireInstaller.php @@ -0,0 +1,23 @@ + */ + protected $locations = array( + 'module' => 'site/modules/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php new file mode 100644 index 0000000..1a0a8a3 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php new file mode 100644 index 0000000..fc58b8a --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php @@ -0,0 +1,62 @@ + */ + protected $locations = array( + 'module' => 'app/Modules/{$name}/', + 'theme' => 'themes/{$name}/', + ); + + /** + * Format package name. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'pxcms-module') { + return $this->inflectModuleVars($vars); + } + + if ($vars['type'] === 'pxcms-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * For package type pxcms-module, cut off a trailing '-plugin' if present. + * + * @param array $vars + * @return array + */ + protected function inflectModuleVars(array $vars): array + { + $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy) + $vars['name'] = str_replace('module-', '', $vars['name']); // strip out module- + $vars['name'] = $this->pregReplace('/-module$/', '', $vars['name']); // strip out -module + $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s + $vars['name'] = ucwords($vars['name']); // make module name camelcased + + return $vars; + } + + /** + * For package type pxcms-module, cut off a trailing '-plugin' if present. + * + * @param array $vars + * @return array + */ + protected function inflectThemeVars(array $vars): array + { + $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy) + $vars['name'] = str_replace('theme-', '', $vars['name']); // strip out theme- + $vars['name'] = $this->pregReplace('/-theme$/', '', $vars['name']); // strip out -theme + $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s + $vars['name'] = ucwords($vars['name']); // make module name camelcased + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php new file mode 100644 index 0000000..4caae51 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php @@ -0,0 +1,26 @@ + */ + protected $locations = array( + 'bundle' => 'src/{$name}/' + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $nameParts = explode('/', $vars['name']); + foreach ($nameParts as &$value) { + $value = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $value)); + $value = str_replace(array('-', '_'), ' ', $value); + $value = str_replace(' ', '', ucwords($value)); + } + $vars['name'] = implode('/', $nameParts); + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php new file mode 100644 index 0000000..a19eaaf --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'theme' => 'themes/{$name}/', + 'plugin' => 'plugins/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php new file mode 100644 index 0000000..b62c926 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'addon' => 'redaxo/src/addons/{$name}/', + 'bestyle-plugin' => 'redaxo/src/addons/be_style/plugins/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php new file mode 100644 index 0000000..26b3aa8 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'addon' => 'redaxo/include/addons/{$name}/', + 'bestyle-plugin' => 'redaxo/include/addons/be_style/plugins/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php new file mode 100644 index 0000000..7e71674 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php @@ -0,0 +1,21 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + ); + + /** + * Lowercase name and changes the name to a underscores + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower(str_replace('-', '_', $vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php new file mode 100644 index 0000000..7321046 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'module' => 'Sources/{$name}/', + 'theme' => 'Themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php new file mode 100644 index 0000000..82b8e28 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php @@ -0,0 +1,66 @@ + */ + protected $locations = array( + 'backend-plugin' => 'engine/Shopware/Plugins/Local/Backend/{$name}/', + 'core-plugin' => 'engine/Shopware/Plugins/Local/Core/{$name}/', + 'frontend-plugin' => 'engine/Shopware/Plugins/Local/Frontend/{$name}/', + 'theme' => 'templates/{$name}/', + 'plugin' => 'custom/plugins/{$name}/', + 'frontend-theme' => 'themes/Frontend/{$name}/', + ); + + /** + * Transforms the names + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'shopware-theme') { + return $this->correctThemeName($vars); + } + + return $this->correctPluginName($vars); + } + + /** + * Changes the name to a camelcased combination of vendor and name + * + * @param array $vars + * @return array + */ + private function correctPluginName(array $vars): array + { + $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) { + return strtoupper($matches[0][1]); + }, $vars['name']); + + if (null === $camelCasedName) { + throw new \RuntimeException('Failed to run preg_replace_callback: '.preg_last_error()); + } + + $vars['name'] = ucfirst($vars['vendor']) . ucfirst($camelCasedName); + + return $vars; + } + + /** + * Changes the name to a underscore separated name + * + * @param array $vars + * @return array + */ + private function correctThemeName(array $vars): array + { + $vars['name'] = str_replace('-', '_', $vars['name']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php new file mode 100644 index 0000000..aa2de21 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php @@ -0,0 +1,33 @@ + */ + protected $locations = array( + 'module' => '{$name}/', + 'theme' => 'themes/{$name}/', + ); + + /** + * Return the install path based on package type. + * + * Relies on built-in BaseInstaller behaviour with one exception: silverstripe/framework + * must be installed to 'sapphire' and not 'framework' if the version is <3.0.0 + */ + public function getInstallPath(PackageInterface $package, string $frameworkType = ''): string + { + if ( + $package->getName() == 'silverstripe/framework' + && preg_match('/^\d+\.\d+\.\d+/', $package->getVersion()) + && version_compare($package->getVersion(), '2.999.999') < 0 + ) { + return $this->templatePath($this->locations['module'], array('name' => 'sapphire')); + } + + return parent::getInstallPath($package, $frameworkType); + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php new file mode 100644 index 0000000..0af3239 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php @@ -0,0 +1,34 @@ + */ + protected $locations = array( + 'module' => 'modules/{$vendor}/{$name}/', + 'plugin' => 'plugins/{$vendor}/{$name}/' + ); + + /** + * @param array $vars + * @return array + */ + public function inflectPackageVars(array $vars): array + { + return $this->parseVars($vars); + } + + /** + * @param array $vars + * @return array + */ + protected function parseVars(array $vars): array + { + $vars['vendor'] = strtolower($vars['vendor']) == 'sitedirect' ? 'SiteDirect' : $vars['vendor']; + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/StarbugInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/StarbugInstaller.php new file mode 100644 index 0000000..72afa08 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/StarbugInstaller.php @@ -0,0 +1,14 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + 'theme' => 'themes/{$name}/', + 'custom-module' => 'app/modules/{$name}/', + 'custom-theme' => 'app/themes/{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php new file mode 100644 index 0000000..24673d2 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php @@ -0,0 +1,55 @@ + */ + protected $locations = array( + 'module' => 'app/modules/{$name}/', + 'theme' => 'themes/{$name}/', + ); + + /** + * Format module name. + * + * Strip `sydes-` prefix and a trailing '-theme' or '-module' from package name if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] == 'sydes-module') { + return $this->inflectModuleVars($vars); + } + + if ($vars['type'] === 'sydes-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + public function inflectModuleVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/(^sydes-|-module$)/i', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectThemeVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/(^sydes-|-theme$)/', '', $vars['name']); + $vars['name'] = strtolower($vars['name']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php new file mode 100644 index 0000000..c82bd85 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'theme' => 'themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php new file mode 100644 index 0000000..8c1d814 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php @@ -0,0 +1,32 @@ + */ + protected $locations = array( + 'extension' => '{$name}' + ); + + public function inflectPackageVars(array $vars): array + { + $extra = $this->package->getExtra(); + + if (array_key_exists(self::EXTRA_TAO_EXTENSION_NAME, $extra)) { + $vars['name'] = $extra[self::EXTRA_TAO_EXTENSION_NAME]; + return $vars; + } + + $vars['name'] = str_replace('extension-', '', $vars['name']); + $vars['name'] = str_replace('-', ' ', $vars['name']); + $vars['name'] = lcfirst(str_replace(' ', '', ucwords($vars['name']))); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php new file mode 100644 index 0000000..39ceae0 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php @@ -0,0 +1,85 @@ + */ + protected $locations = [ + 'module' => 'app/{$name}/', + 'extension' => 'extensions/{$vendor}/{$name}/', + 'theme' => 'themes/{$name}/', + ]; + + /** + * Format package name. + * + * Cut off leading 'ti-ext-' or 'ti-theme-' if present. + * Strip vendor name of characters that is not alphanumeric or an underscore + * + */ + public function inflectPackageVars(array $vars): array + { + $extra = $this->package->getExtra(); + + if ($vars['type'] === 'tastyigniter-module') { + return $this->inflectModuleVars($vars); + } + + if ($vars['type'] === 'tastyigniter-extension') { + return $this->inflectExtensionVars($vars, $extra); + } + + if ($vars['type'] === 'tastyigniter-theme') { + return $this->inflectThemeVars($vars, $extra); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectModuleVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^ti-module-/', '', $vars['name']); + + return $vars; + } + + /** + * @param array $vars + * @param array $extra + * @return array + */ + protected function inflectExtensionVars(array $vars, array $extra): array + { + if (!empty($extra['tastyigniter-extension']['code'])) { + $parts = explode('.', $extra['tastyigniter-extension']['code']); + $vars['vendor'] = (string)$parts[0]; + $vars['name'] = (string)($parts[1] ?? ''); + } + + $vars['vendor'] = $this->pregReplace('/[^a-z0-9_]/i', '', $vars['vendor']); + $vars['name'] = $this->pregReplace('/^ti-ext-/', '', $vars['name']); + + return $vars; + } + + /** + * @param array $vars + * @param array $extra + * @return array + */ + protected function inflectThemeVars(array $vars, array $extra): array + { + if (!empty($extra['tastyigniter-theme']['code'])) { + $vars['name'] = $extra['tastyigniter-theme']['code']; + } + + $vars['name'] = $this->pregReplace('/^ti-theme-/', '', $vars['name']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php new file mode 100644 index 0000000..896bed5 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php @@ -0,0 +1,14 @@ + */ + protected $locations = array( + 'module' => 'local/modules/{$name}/', + 'frontoffice-template' => 'templates/frontOffice/{$name}/', + 'backoffice-template' => 'templates/backOffice/{$name}/', + 'email-template' => 'templates/email/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php new file mode 100644 index 0000000..3b5f142 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php @@ -0,0 +1,17 @@ + + */ +class TuskInstaller extends BaseInstaller +{ + /** @var array */ + protected $locations = array( + 'task' => '.tusk/tasks/{$name}/', + 'command' => '.tusk/commands/{$name}/', + 'asset' => 'assets/tusk/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php new file mode 100644 index 0000000..a646c5b --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'sprinkle' => 'app/sprinkles/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php new file mode 100644 index 0000000..06d5db3 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'plugin' => 'plugins/{$name}/', + 'theme' => 'themes/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php new file mode 100644 index 0000000..cf094dd --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php @@ -0,0 +1,59 @@ + */ + protected $locations = array( + 'bundle' => 'src/{$vendor}/{$name}/', + 'theme' => 'themes/{$name}/' + ); + + /** + * Format package name. + * + * For package type vgmcp-bundle, cut off a trailing '-bundle' if present. + * + * For package type vgmcp-theme, cut off a trailing '-theme' if present. + * + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'vgmcp-bundle') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'vgmcp-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectPluginVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-bundle$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectThemeVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/-theme$/', '', $vars['name']); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php new file mode 100644 index 0000000..91b19fd --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php @@ -0,0 +1,22 @@ + */ + protected $locations = array( + 'addons' => 'modules/addons/{$vendor}_{$name}/', + 'fraud' => 'modules/fraud/{$vendor}_{$name}/', + 'gateways' => 'modules/gateways/{$vendor}_{$name}/', + 'notifications' => 'modules/notifications/{$vendor}_{$name}/', + 'registrars' => 'modules/registrars/{$vendor}_{$name}/', + 'reports' => 'modules/reports/{$vendor}_{$name}/', + 'security' => 'modules/security/{$vendor}_{$name}/', + 'servers' => 'modules/servers/{$vendor}_{$name}/', + 'social' => 'modules/social/{$vendor}_{$name}/', + 'support' => 'modules/support/{$vendor}_{$name}/', + 'templates' => 'templates/{$vendor}_{$name}/', + 'includes' => 'includes/{$vendor}_{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WinterInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WinterInstaller.php new file mode 100644 index 0000000..f75a681 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WinterInstaller.php @@ -0,0 +1,71 @@ + */ + protected $locations = array( + 'module' => 'modules/{$name}/', + 'plugin' => 'plugins/{$vendor}/{$name}/', + 'theme' => 'themes/{$name}/' + ); + + /** + * Format package name. + * + * For package type winter-plugin, cut off a trailing '-plugin' if present. + * + * For package type winter-theme, cut off a trailing '-theme' if present. + */ + public function inflectPackageVars(array $vars): array + { + if ($vars['type'] === 'winter-module') { + return $this->inflectModuleVars($vars); + } + + if ($vars['type'] === 'winter-plugin') { + return $this->inflectPluginVars($vars); + } + + if ($vars['type'] === 'winter-theme') { + return $this->inflectThemeVars($vars); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectModuleVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^wn-|-module$/', '', $vars['name']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectPluginVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^wn-|-plugin$/', '', $vars['name']); + $vars['vendor'] = $this->pregReplace('/[^a-z0-9_]/i', '', $vars['vendor']); + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectThemeVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^wn-|-theme$/', '', $vars['name']); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php new file mode 100644 index 0000000..58a9587 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php @@ -0,0 +1,11 @@ + */ + protected $locations = array( + 'plugin' => 'wolf/plugins/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php new file mode 100644 index 0000000..d46d5ab --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php @@ -0,0 +1,14 @@ + */ + protected $locations = array( + 'plugin' => 'wp-content/plugins/{$name}/', + 'theme' => 'wp-content/themes/{$name}/', + 'muplugin' => 'wp-content/mu-plugins/{$name}/', + 'dropin' => 'wp-content/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php new file mode 100644 index 0000000..d609dea --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php @@ -0,0 +1,23 @@ + */ + protected $locations = array( + 'module' => 'module/{$name}/', + ); + + /** + * Format package name to CamelCase + */ + public function inflectPackageVars(array $vars): array + { + $vars['name'] = strtolower($this->pregReplace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name'])); + $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']); + $vars['name'] = str_replace(' ', '', ucwords($vars['name'])); + + return $vars; + } +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php new file mode 100644 index 0000000..ccfcd4a --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php @@ -0,0 +1,13 @@ + */ + protected $locations = array( + 'library' => 'library/{$name}/', + 'extra' => 'extras/library/{$name}/', + 'module' => 'module/{$name}/', + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php new file mode 100644 index 0000000..d1fd1d7 --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php @@ -0,0 +1,12 @@ + */ + protected $locations = array( + 'module' => 'modules/{$vendor}-{$name}/', + 'theme' => 'themes/{$vendor}-{$name}/' + ); +} diff --git a/plugins/code-snippets/vendor/composer/installers/src/bootstrap.php b/plugins/code-snippets/vendor/composer/installers/src/bootstrap.php new file mode 100644 index 0000000..a5bb9ad --- /dev/null +++ b/plugins/code-snippets/vendor/composer/installers/src/bootstrap.php @@ -0,0 +1,18 @@ += 70400)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + throw new \RuntimeException( + 'Composer detected issues in your platform: ' . implode(' ', $issues) + ); +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter-plugin/LICENSE b/plugins/code-snippets/vendor/typisttech/imposter-plugin/LICENSE new file mode 100644 index 0000000..ab417cd --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter-plugin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-2020 Typist Tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plugins/code-snippets/vendor/typisttech/imposter-plugin/README.md b/plugins/code-snippets/vendor/typisttech/imposter-plugin/README.md new file mode 100644 index 0000000..d580484 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter-plugin/README.md @@ -0,0 +1,199 @@ +
+ +# Imposter Plugin + +
+ +
+ + +[![Packagist](https://img.shields.io/packagist/v/typisttech/imposter-plugin.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter-plugin) +[![Packagist](https://img.shields.io/packagist/dt/typisttech/imposter-plugin.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter-plugin) +[![PHP from Packagist](https://img.shields.io/packagist/php-v/TypistTech/imposter-plugin?style=flat-square)](https://packagist.org/packages/typisttech/imposter-plugin) +[![CircleCI](https://img.shields.io/circleci/build/gh/TypistTech/imposter-plugin?style=flat-square)](https://circleci.com/gh/TypistTech/imposter-plugin) +[![license](https://img.shields.io/github/license/TypistTech/imposter-plugin.svg?style=flat-square)](https://github.com/TypistTech/imposter-plugin/blob/master/LICENSE) +[![Twitter Follow @TangRufus](https://img.shields.io/twitter/follow/TangRufus?style=flat-square&color=1da1f2&logo=twitter)](https://twitter.com/tangrufus) +[![Hire Typist Tech](https://img.shields.io/badge/Hire-Typist%20Tech-ff69b4.svg?style=flat-square)](https://www.typist.tech/contact/) + +
+ +

+ Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins. +
+
+ Built with ♥ by Typist Tech +

+ +--- + +**Imposter Plugin** is an open source project and completely free to use. + +However, the amount of effort needed to maintain and develop new features is not sustainable without proper financial backing. If you have the capability, please consider donating using the links below: + +
+ +[![GitHub via Sponsor](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=flat-square&logo=github)](https://github.com/sponsors/TangRufus) +[![Sponsor via PayPal](https://img.shields.io/badge/Sponsor-PayPal-blue.svg?style=flat-square&logo=paypal)](https://typist.tech/go/paypal-donate/) +[![More Sponsorship Information](https://img.shields.io/badge/Sponsor-More%20Details-ff69b4?style=flat-square)](https://typist.tech/donate/imposter-plugin/) + +
+ +--- + +Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins. Imposter Plugin is a composer plugin wrapper for [Imposter](https://github.com/TypistTech/imposter/). + +## Why? + +Because of the lack of dependency management in WordPress, if two plugins bundled conflicting versions of the same package, hard-to-reproduce bugs arise. +Monkey patching composer vendor packages, wrapping them inside your own namespace is a less-than-ideal solution to avoid such conflicts. + +See: +- [A Narrative of Using Composer in a WordPress Plugin](https://wptavern.com/a-narrative-of-using-composer-in-a-wordpress-plugin) +- [A Warning About Using Composer With WordPress](https://wppusher.com/blog/a-warning-about-using-composer-with-wordpress/) + +## Install + +Installation should be done via composer, details of how to install composer can be found at [https://getcomposer.org/](https://getcomposer.org/). + +First, add Imposter configuration in your `composer.json` + +```json +"extra": { + "imposter": { + "namespace": "My\\App\\Vendor", + "excludes": [ + "dummy/dummy-excluded" + ] + } +} +``` + +Then, install via composer cli + +```bash +composer require typisttech/imposter-plugin +``` + +See: [Imposter readme](https://github.com/Typisttech/imposter#config) for details. + +--- + +

+ Typist Tech is ready to build your next awesome WordPress site. Hire us! +

+ +--- + +## Usage + +### Sit Back and Relax + +Once installed, this plugin hooks into `composer install`, `composer update` and `composer dump-autoload`, automatically run [imposter](https://github.com/TypistTech/imposter/) for you. +Besides, imposter plugin autoloads all modified files as [classmap](https://getcomposer.org/doc/04-schema.md#classmap). + +When those events triggered, this plugin: +1. looks for `/path/to/project/root/composer.json` +2. finds out [vendor-dir](https://getcomposer.org/doc/06-config.md#vendor-dir) +3. finds out all [required packages](https://getcomposer.org/doc/04-schema.md#require), including those required by dependencies +4. finds out all [autoload paths](https://getcomposer.org/doc/04-schema.md#autoload) for all required packages +5. prefixes all namespaces with the imposter-plugin namespace defined in your `composer.json` + +Learn more on [imposter's readme](https://github.com/TypistTech/imposter#usage). + +## Known Issues + +Help wanted. Pull requests are welcomed. + +1. Imposter run twice when `composer install` and `composer update` +1. Traits are not transformed +1. Virtual packages are not supported + +## Frequently Asked Questions + +### What can I find more information? + +Learn more on [imposter's readme](https://github.com/TypistTech/imposter/) for more details. + +### How about not hooking into composer commands? + +Use [imposter](https://github.com/TypistTech/imposter/) directly. + +### Do you have real life examples that use this composer plugin? + +Here you go: + + * [Sunny](https://github.com/Typisttech/sunny) + * [WP Cloudflare Guard](https://github.com/TypistTech/wp-cloudflare-guard) + + +*Add your own [here](https://github.com/TypistTech/imposter-plugin/edit/master/README.md)* + +### Which composer versions are supported? + +Both v1 and v2. + +### Will you add support for older PHP versions? + +Never! This plugin will only work on [actively supported PHP versions](https://secure.php.net/supported-versions.php). + +Don't use it on **end of life** or **security fixes only** PHP versions. + +### It looks awesome. Where can I find some more goodies like this + +- Articles on [Typist Tech's blog](https://typist.tech) +- [Tang Rufus' WordPress plugins](https://profiles.wordpress.org/tangrufus#content-plugins) on wp.org +- More projects on [Typist Tech's GitHub profile](https://github.com/TypistTech) +- Stay tuned on [Typist Tech's newsletter](https://typist.tech/go/newsletter) +- Follow [Tang Rufus' Twitter account](https://twitter.com/TangRufus) +- **Hire [Tang Rufus](https://typist.tech/contact) to build your next awesome site** + +### Where can I give 5-star reviews? + +Thanks! Glad you like it. It's important to let me knows somebody is using this project. Please consider: + +- [tweet](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2FTypistTech%2Fimposter-plugin&via=tangrufus&text=Imposter%20Plugin%20-%20Composer%20plugin%20that%20wraps%20all%20%23composer%20vendor%20packages%20inside%20your%20own%20namespace.%20Intended%20for%20%23WordPress%20plugins) something good with mentioning [@TangRufus](https://twitter.com/tangrufus) +- ★ star [the Github repo](https://github.com/TypistTech/imposter-plugin) +- [👀 watch](https://github.com/TypistTech/imposter-plugin/subscription) the Github repo +- write tutorials and blog posts +- **[hire](https://www.typist.tech/contact/) Typist Tech** + +## Testing + +```bash +composer test +composer style:check +``` + +## Alternatives + +Here is a list of alternatives that I found. However, none of these satisfied my requirements. + +*If you know other similar projects, feel free to edit this section!* + +* [Mozart](https://github.com/coenjacobs/mozart) by Coen Jacobs + - Works with PSR0 and PSR4 + - Dependency packages store in a different directory + +* [PHP Scoper](https://github.com/humbug/php-scoper) + - Prefixes all PHP namespaces in a file/directory to isolate the code bundled in PHARs + +## Feedback + +**Please provide feedback!** We want to make this project as useful as possible. +Please [submit an issue](https://github.com/TypistTech/imposter-plugin/issues/new) and point out what you do and don't like, or fork the project and [send pull requests](https://github.com/TypistTech/imposter-plugin/pulls/). +**No issue is too small.** + +## Security Vulnerabilities + +If you discover a security vulnerability within this project, please email us at [imposter-plugin@typist.tech](mailto:imposter-plugin@typist.tech). +All security vulnerabilities will be promptly addressed. + +## Credits + +[Imposter Plugin](https://github.com/TypistTech/imposter-plugin) is a [Typist Tech](https://typist.tech) project and maintained by [Tang Rufus](https://twitter.com/TangRufus), freelance developer for [hire](https://www.typist.tech/contact/). + +Full list of contributors can be found [here](https://github.com/TypistTech/imposter-plugin/graphs/contributors). + +## License + +[Imposter Plugin](https://github.com/TypistTech/imposter-plugin) is released under the [MIT License](https://opensource.org/licenses/MIT). diff --git a/plugins/code-snippets/vendor/typisttech/imposter-plugin/composer.json b/plugins/code-snippets/vendor/typisttech/imposter-plugin/composer.json new file mode 100644 index 0000000..5ce9f39 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter-plugin/composer.json @@ -0,0 +1,66 @@ +{ + "name": "typisttech/imposter-plugin", + "type": "composer-plugin", + "description": "Composer plugin that wraps all composer vendor packages inside your own namespace. Intended for WordPress plugins.", + "keywords": [ + "composer", + "composer-plugin", + "dependency", + "monkey-patching", + "namespace", + "wordpress" + ], + "homepage": "https://github.com/TypistTech/imposter-plugin", + "license": "MIT", + "authors": [ + { + "name": "Typist Tech", + "email": "imposter-plugin@typist.tech", + "homepage": "https://www.typist.tech" + }, + { + "name": "Tang Rufus", + "email": "tangrufus@gmail.com", + "homepage": "https://www.typist.tech", + "role": "Developer" + } + ], + "require": { + "php": "^7.3 || ^8.0", + "composer-plugin-api": "^1.1 || ^2.0", + "typisttech/imposter": "^0.6.1" + }, + "require-dev": { + "codeception/codeception": "^4.1", + "codeception/module-asserts": "^1.3", + "codeception/module-cli": "^1.1", + "codeception/module-filesystem": "^1.0", + "composer/composer": "^1.10.19 || ^2.0", + "squizlabs/php_codesniffer": "^3.5", + "typisttech/codeception-composer-project-module": "^0.1.1" + }, + "config": { + "sort-packages": true + }, + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + }, + "class": "TypistTech\\Imposter\\Plugin\\ImposterPlugin" + }, + "autoload": { + "psr-4": { + "TypistTech\\Imposter\\Plugin\\": "src" + } + }, + "scripts": { + "style:check": "phpcs", + "style:fix": "phpcbf", + "test": "codecept run --debug" + }, + "support": { + "email": "imposter-plugin@typist.tech", + "issues": "https://github.com/TypistTech/imposter-plugin/issues", + "source": "https://github.com/TypistTech/imposter-plugin" + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter-plugin/composer.lock b/plugins/code-snippets/vendor/typisttech/imposter-plugin/composer.lock new file mode 100644 index 0000000..ea9e1ad --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter-plugin/composer.lock @@ -0,0 +1,5008 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "f45fc3f505c9346231a87a2a319243a1", + "packages": [ + { + "name": "typisttech/imposter", + "version": "0.6.1", + "source": { + "type": "git", + "url": "https://github.com/TypistTech/imposter.git", + "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TypistTech/imposter/zipball/f52b1a2289d2ea9c660cf9595085d0b11469af83", + "reference": "f52b1a2289d2ea9c660cf9595085d0b11469af83", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "codeception/codeception": "^4.1", + "codeception/mockery-module": "^0.4.0", + "codeception/module-asserts": "^1.3", + "codeception/module-filesystem": "^1.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "TypistTech\\Imposter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Typist Tech", + "email": "imposter@typist.tech", + "homepage": "https://typist.tech" + }, + { + "name": "Tang Rufus", + "email": "tangrufus@gmail.com", + "homepage": "https://typist.tech", + "role": "Developer" + } + ], + "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.", + "homepage": "https://github.com/TypistTech/imposter", + "keywords": [ + "composer", + "dependency", + "monkey-patching", + "namespace", + "wordpress" + ], + "support": { + "email": "imposter@typist.tech", + "issues": "https://github.com/TypistTech/imposter/issues", + "source": "https://github.com/TypistTech/imposter" + }, + "funding": [ + { + "url": "https://typist.tech/donation/", + "type": "custom" + }, + { + "url": "https://www.paypal.me/iAmTangRufus/30usd", + "type": "custom" + }, + { + "url": "https://github.com/tangrufus", + "type": "github" + } + ], + "time": "2020-12-06T22:57:09+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/gherkin", + "version": "v4.6.2", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31", + "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3|~4", + "symfony/yaml": "~2.3|~3|~4" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "support": { + "issues": "https://github.com/Behat/Gherkin/issues", + "source": "https://github.com/Behat/Gherkin/tree/master" + }, + "time": "2020-03-17T14:03:26+00:00" + }, + { + "name": "codeception/codeception", + "version": "4.1.12", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Codeception.git", + "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd", + "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.4.0", + "codeception/lib-asserts": "^1.0", + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0", + "codeception/stub": "^2.0 | ^3.0", + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/psr7": "~1.4", + "php": ">=5.6.0 <9.0", + "symfony/console": ">=2.7 <6.0", + "symfony/css-selector": ">=2.7 <6.0", + "symfony/event-dispatcher": ">=2.7 <6.0", + "symfony/finder": ">=2.7 <6.0", + "symfony/yaml": ">=2.7 <6.0" + }, + "require-dev": { + "codeception/module-asserts": "*@dev", + "codeception/module-cli": "*@dev", + "codeception/module-db": "*@dev", + "codeception/module-filesystem": "*@dev", + "codeception/module-phpbrowser": "*@dev", + "codeception/specify": "~0.3", + "codeception/util-universalframework": "*@dev", + "monolog/monolog": "~1.8", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": ">=2.7 <6.0", + "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0" + }, + "suggest": { + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "hoa/console": "For interactive console functionality", + "stecman/symfony-console-completion": "For BASH autocompletion", + "symfony/phpunit-bridge": "For phpunit-bridge support" + }, + "bin": [ + "codecept" + ], + "type": "library", + "extra": { + "branch-alias": [] + }, + "autoload": { + "psr-4": { + "Codeception\\": "src/Codeception", + "Codeception\\Extension\\": "ext" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + } + ], + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", + "keywords": [ + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" + ], + "support": { + "issues": "https://github.com/Codeception/Codeception/issues", + "source": "https://github.com/Codeception/Codeception/tree/4.1.12" + }, + "funding": [ + { + "url": "https://opencollective.com/codeception", + "type": "open_collective" + } + ], + "time": "2020-11-16T06:36:57+00:00" + }, + { + "name": "codeception/lib-asserts", + "version": "1.13.2", + "source": { + "type": "git", + "url": "https://github.com/Codeception/lib-asserts.git", + "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6", + "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6", + "shasum": "" + }, + "require": { + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0", + "ext-dom": "*", + "php": ">=5.6.0 <9.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + }, + { + "name": "Gintautas Miselis" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" + } + ], + "description": "Assertion methods used by Codeception core and Asserts module", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/lib-asserts/issues", + "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2" + }, + "time": "2020-10-21T16:26:20+00:00" + }, + { + "name": "codeception/module-asserts", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/Codeception/module-asserts.git", + "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de", + "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de", + "shasum": "" + }, + "require": { + "codeception/codeception": "*@dev", + "codeception/lib-asserts": "^1.13.1", + "php": ">=5.6.0 <9.0" + }, + "conflict": { + "codeception/codeception": "<4.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk" + }, + { + "name": "Gintautas Miselis" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" + } + ], + "description": "Codeception module containing various assertions", + "homepage": "https://codeception.com/", + "keywords": [ + "assertions", + "asserts", + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/module-asserts/issues", + "source": "https://github.com/Codeception/module-asserts/tree/1.3.1" + }, + "time": "2020-10-21T16:48:15+00:00" + }, + { + "name": "codeception/module-cli", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/module-cli.git", + "reference": "acbdca0e99b8da003b53f3738f2ce77c8787a992" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/module-cli/zipball/acbdca0e99b8da003b53f3738f2ce77c8787a992", + "reference": "acbdca0e99b8da003b53f3738f2ce77c8787a992", + "shasum": "" + }, + "require": { + "codeception/codeception": "^4.0", + "php": ">=5.6.0 <9.0" + }, + "conflict": { + "codeception/codeception": "<4.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk" + } + ], + "description": "Codeception module for testing basic shell commands and shell output", + "homepage": "http://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/module-cli/issues", + "source": "https://github.com/Codeception/module-cli/tree/1.1.0" + }, + "time": "2020-11-16T06:26:49+00:00" + }, + { + "name": "codeception/module-filesystem", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Codeception/module-filesystem.git", + "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/module-filesystem/zipball/781be167fb1557bfc9b61e0a4eac60a32c534ec1", + "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1", + "shasum": "" + }, + "require": { + "codeception/codeception": "^4.0", + "php": ">=5.6.0 <9.0", + "symfony/finder": ">=2.7 <6.0" + }, + "conflict": { + "codeception/codeception": "<4.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk" + }, + { + "name": "Gintautas Miselis" + } + ], + "description": "Codeception module for testing local filesystem", + "homepage": "http://codeception.com/", + "keywords": [ + "codeception", + "filesystem" + ], + "support": { + "issues": "https://github.com/Codeception/module-filesystem/issues", + "source": "https://github.com/Codeception/module-filesystem/tree/1.0.3" + }, + "time": "2020-10-24T14:46:40+00:00" + }, + { + "name": "codeception/phpunit-wrapper", + "version": "9.0.5", + "source": { + "type": "git", + "url": "https://github.com/Codeception/phpunit-wrapper.git", + "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/72bac7770866799e23a7dda1ac6bec2f8baccf45", + "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "phpunit/phpunit": "^9.0" + }, + "require-dev": { + "codeception/specify": "*", + "vlucas/phpdotenv": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\PHPUnit\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + }, + { + "name": "Naktibalda" + } + ], + "description": "PHPUnit classes used by Codeception", + "support": { + "issues": "https://github.com/Codeception/phpunit-wrapper/issues", + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.5" + }, + "time": "2020-10-11T18:14:42+00:00" + }, + { + "name": "codeception/stub", + "version": "3.7.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304", + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304", + "shasum": "" + }, + "require": { + "phpunit/phpunit": "^8.4 | ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", + "support": { + "issues": "https://github.com/Codeception/Stub/issues", + "source": "https://github.com/Codeception/Stub/tree/3.7.0" + }, + "time": "2020-07-03T15:54:43+00:00" + }, + { + "name": "composer/ca-bundle", + "version": "1.2.8", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "8a7ecad675253e4654ea05505233285377405215" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215", + "reference": "8a7ecad675253e4654ea05505233285377405215", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.2.8" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-08-23T12:54:47+00:00" + }, + { + "name": "composer/composer", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "62139b2806178adb979d76bd3437534a1a9fd490" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/62139b2806178adb979d76bd3437534a1a9fd490", + "reference": "62139b2806178adb979d76bd3437534a1a9fd490", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^3.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^5.2.10", + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0", + "react/promise": "^1.2 || ^2.7", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0" + }, + "require-dev": { + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^4.2 || ^5.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "https://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/2.0.8" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-12-03T16:20:39+00:00" + }, + { + "name": "composer/semver", + "version": "3.2.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.54", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.2.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-13T08:59:24+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.5", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "de30328a7af8680efdc03e396aad24befd513200" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200", + "reference": "de30328a7af8680efdc03e396aad24befd513200", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-12-03T16:04:16+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "f28d44c286812c714741478d968104c5e604a1d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4", + "reference": "f28d44c286812c714741478d968104c5e604a1d4", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/1.4.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-13T08:04:11+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.7.0" + }, + "time": "2020-09-30T07:37:11+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.10", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + }, + "time": "2020-05-27T16:41:55+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.10.3", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984", + "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.3" + }, + "time": "2020-12-03T17:45:45+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, + "time": "2020-06-27T14:33:11+00:00" + }, + { + "name": "phar-io/version", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/726c026815142e4f8677b7cb7f2249c9ffb7ecae", + "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.0.3" + }, + "time": "2020-11-30T09:21:21+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + }, + "time": "2020-09-17T18:55:26+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0 <9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.12.1" + }, + "time": "2020-09-29T09:10:42+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.10.2", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:44:49+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", + "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.0" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-12-04T05:05:53+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/master" + }, + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "react/promise", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.8.0" + }, + "time": "2020-05-12T15:16:56+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:55:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:18:59+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2020-11-11T09:19:24+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ], + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/master" + }, + "time": "2020-07-07T18:42:57+00:00" + }, + { + "name": "spatie/temporary-directory", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/f517729b3793bca58f847c5fd383ec16f03ffec6", + "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\TemporaryDirectory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", + "keywords": [ + "php", + "spatie", + "temporary-directory" + ], + "support": { + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/1.3.0" + }, + "time": "2020-11-09T15:54:21+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.8", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2020-10-23T02:01:07+00:00" + }, + { + "name": "symfony/console", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/3e0564fb08d44a98bd5f1960204c958e57bd586b", + "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-28T11:24:18+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256", + "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-28T21:31:18+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", + "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-01T16:14:45+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "bb92ba7f38b037e531908590a858a04d85c0e238" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/bb92ba7f38b037e531908590a858a04d85c0e238", + "reference": "bb92ba7f38b037e531908590a858a04d85c0e238", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-12T09:58:18+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "fd8305521692f27eae3263895d1ef1571c71a78d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/fd8305521692f27eae3263895d1ef1571c71a78d", + "reference": "fd8305521692f27eae3263895d1ef1571c71a78d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-18T09:42:36+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "727d1096295d807c309fb01a851577302394c897" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", + "reference": "727d1096295d807c309fb01a851577302394c897", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/process", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "240e74140d4d956265048f3025c0aecbbc302d54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/240e74140d4d956265048f3025c0aecbbc302d54", + "reference": "240e74140d4d956265048f3025c0aecbbc302d54", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-02T15:47:15+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/string", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/40e975edadd4e32cd16f3753b3bad65d9ac48242", + "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T12:08:07+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/bb73619b2ae5121bbbcd9f191dfd53ded17ae598", + "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-28T10:57:20+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/master" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" + }, + { + "name": "typisttech/codeception-composer-project-module", + "version": "0.1.2", + "source": { + "type": "git", + "url": "https://github.com/TypistTech/codeception-composer-project-module.git", + "reference": "f59767fa7d2b6f9de1738668f5ddc282e2e7627a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TypistTech/codeception-composer-project-module/zipball/f59767fa7d2b6f9de1738668f5ddc282e2e7627a", + "reference": "f59767fa7d2b6f9de1738668f5ddc282e2e7627a", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0", + "spatie/temporary-directory": "^1.3" + }, + "require-dev": { + "codeception/codeception": "^4.1", + "codeception/module-asserts": "^1.3", + "codeception/module-cli": "^1.1", + "codeception/module-filesystem": "^1.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Codeception\\Module\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Typist Tech", + "email": "codeception-composer-project-module@typist.tech", + "homepage": "https://www.typist.tech" + }, + { + "name": "Tang Rufus", + "email": "tangrufus@gmail.com", + "homepage": "https://www.typist.tech", + "role": "Developer" + } + ], + "description": "Create throw away composer projects for Codeception tests", + "homepage": "https://github.com/TypistTech/codeception-composer-project-module", + "keywords": [ + "BDD", + "TDD", + "codeception-module", + "composer", + "testing" + ], + "support": { + "email": "codeception-composer-project-module@typist.tech", + "issues": "https://github.com/TypistTech/codeception-composer-project-module/issues", + "source": "https://github.com/TypistTech/codeception-composer-project-module" + }, + "funding": [ + { + "url": "https://typist.tech/donation/", + "type": "custom" + }, + { + "url": "https://www.paypal.me/iAmTangRufus/30usd", + "type": "custom" + }, + { + "url": "https://github.com/tangrufus", + "type": "github" + } + ], + "time": "2020-12-06T21:54:13+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozart/assert/issues", + "source": "https://github.com/webmozart/assert/tree/master" + }, + "time": "2020-07-08T17:02:28+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^7.3 || ^8.0", + "composer-plugin-api": "^1.1 || ^2.0" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php b/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php new file mode 100644 index 0000000..6117108 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/AutoloadMerger.php @@ -0,0 +1,40 @@ +getAutoload(); + $autoload = array_merge_recursive($autoload, [ + 'classmap' => static::getImposterAutoloads(), + ]); + + $package->setAutoload($autoload); + } + + /** + * @return string[] + * @todo [Help Wanted] Think of a better way to handle file not found during installation + */ + protected static function getImposterAutoloads(): array + { + try { + $cwd = getcwd(); + $imposter = ImposterFactory::forProject($cwd, ['typisttech/imposter-plugin']); + + return array_map(function ($path) use ($cwd): string { + return str_replace($cwd . '/', '', $path); + }, $imposter->getAutoloads()); + } catch (RuntimeException $exception) { + return []; + } + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/ImposterPlugin.php b/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/ImposterPlugin.php new file mode 100644 index 0000000..2e3cc81 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/ImposterPlugin.php @@ -0,0 +1,70 @@ +getPackage(); + if ($package instanceof RootPackageInterface) { + AutoloadMerger::run($package); + } + + if ($package instanceof CompletePackage) { + $scripts = array_merge_recursive([ + ScriptEvents::POST_INSTALL_CMD => [ + '@composer dump-autoload --optimize', + ], + ScriptEvents::POST_UPDATE_CMD => [ + '@composer dump-autoload --optimize', + ], + ], $package->getScripts()); + + $package->setScripts($scripts); + } + } + + /** + * {@inheritDoc} + */ + public static function getSubscribedEvents() + { + return [ + ScriptEvents::PRE_AUTOLOAD_DUMP => [ + ['transform', PHP_INT_MAX - 1000], + ], + ]; + } + + public function transform(Event $event): void + { + Transformer::run( + $event->getIO() + ); + } + + public function deactivate(Composer $composer, IOInterface $io) + { + // Do nothing. + } + + public function uninstall(Composer $composer, IOInterface $io) + { + // Do nothing. + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/Transformer.php b/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/Transformer.php new file mode 100644 index 0000000..2c93ffd --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter-plugin/src/Transformer.php @@ -0,0 +1,53 @@ +write('', true); + $io->write('', true); + $io->write('Running Imposter...', true); + $io->write('======================', true); + $io->write('Loading package information from ' . getcwd() . '/composer.json', true); + + $imposter = ImposterFactory::forProject(getcwd(), ['typisttech/imposter-plugin']); + + $autoloads = $imposter->getAutoloads(); + $count = count($autoloads); + $index = 1; + foreach ($autoloads as $autoload) { + $io->write(" - $index/$count: Transforming $autoload", true); + $imposter->transform($autoload); + $index++; + } + + $io->write('Success: Imposter transformed vendor files.', true); + + $invalidAutoloads = $imposter->getInvalidAutoloads(); + if (! empty($invalidAutoloads)) { + $invalidAutoloadsCount = count($invalidAutoloads); + $io->writeError('', true); + $io->writeError( + // phpcs:ignore Generic.Files.LineLength.TooLong + "Warning: Imposter failed to transformed $invalidAutoloadsCount of the autoload path(s).", + true + ); + + foreach ($invalidAutoloads as $invalidAutoload) { + $io->writeError(" - $invalidAutoload", true); + } + } + + // Print empty lines to separate imposter outputs. + $io->write('', true); + $io->write('', true); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/LICENSE b/plugins/code-snippets/vendor/typisttech/imposter/LICENSE new file mode 100644 index 0000000..ab417cd --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-2020 Typist Tech + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plugins/code-snippets/vendor/typisttech/imposter/README.md b/plugins/code-snippets/vendor/typisttech/imposter/README.md new file mode 100644 index 0000000..934831a --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/README.md @@ -0,0 +1,320 @@ +
+ +# Imposter + +
+ +
+ + +[![Packagist Version](https://img.shields.io/packagist/v/typisttech/imposter.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter) +[![Packagist Downloads](https://img.shields.io/packagist/dt/typisttech/imposter.svg?style=flat-square)](https://packagist.org/packages/typisttech/imposter) +[![PHP from Packagist](https://img.shields.io/packagist/php-v/TypistTech/imposter?style=flat-square)](https://packagist.org/packages/typisttech/imposter) +[![CircleCI](https://img.shields.io/circleci/build/gh/TypistTech/imposter?style=flat-square)](https://circleci.com/gh/TypistTech/imposter) +[![Codecov](https://img.shields.io/codecov/c/gh/typisttech/imposter?style=flat-square)](https://codecov.io/gh/TypistTech/imposter) +[![License](https://img.shields.io/github/license/TypistTech/imposter.svg?style=flat-square)](https://github.com/TypistTech/imposter/blob/master/LICENSE) +[![Twitter Follow @TangRufus](https://img.shields.io/twitter/follow/TangRufus?style=flat-square&color=1da1f2&logo=twitter)](https://twitter.com/tangrufus) +[![Hire Typist Tech](https://img.shields.io/badge/Hire-Typist%20Tech-ff69b4.svg?style=flat-square)](https://www.typist.tech/contact/) + +
+ +

+ Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins. +
+
+ Built with ♥ by Typist Tech +

+ +--- + +**Imposter** is an open source project and completely free to use. + +However, the amount of effort needed to maintain and develop new features is not sustainable without proper financial backing. If you have the capability, please consider donating using the links below: + +
+ +[![GitHub via Sponsor](https://img.shields.io/badge/Sponsor-GitHub-ea4aaa?style=flat-square&logo=github)](https://github.com/sponsors/TangRufus) +[![Sponsor via PayPal](https://img.shields.io/badge/Sponsor-PayPal-blue.svg?style=flat-square&logo=paypal)](https://typist.tech/go/paypal-donate/) +[![More Sponsorship Information](https://img.shields.io/badge/Sponsor-More%20Details-ff69b4?style=flat-square)](https://typist.tech/donate/imposter/) + +
+ +--- + +Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins. + +## Why? + +Because of the lack of dependency management in WordPress, if two plugins bundled conflicting versions of the same package, hard-to-reproduce bugs arise. +Monkey patching composer vendor packages, wrapping them inside your own namespace is a less-than-ideal solution to avoid such conflicts. + +See: +- [A Narrative of Using Composer in a WordPress Plugin](https://wptavern.com/a-narrative-of-using-composer-in-a-wordpress-plugin) +- [A Warning About Using Composer With WordPress](https://wppusher.com/blog/a-warning-about-using-composer-with-wordpress/) + +## Install + +> If you want to hook Imposter into [composer command events](https://getcomposer.org/doc/articles/scripts.md#command-events), install [Imposter Plugin](https://github.com/TypistTech/imposter-plugin) instead. +> See: [How can I integrate Imposter with composer?](#how-can-i-integrate-imposter-with-composer) + +Installation should be done via composer, details of how to install composer can be found at [https://getcomposer.org/](https://getcomposer.org/). + +```bash +composer require typisttech/imposter +``` + +## Config + +In your `composer.json`: + +```json +"extra": { + "imposter": { + "namespace": "My\\App\\Vendor", + "excludes": [ + "dummy/dummy-excluded" + ] + } +} +``` + +### extra.imposter.namespace + +*Required* String + +This is the namespace prefix to be added to vendor packages. + +### extra.imposter.excludes + +*Optional* Array of strings + +Vendor packages which needs to be excluded from namespace prefixing. +All [composer-made packages](https://packagist.org/packages/composer/) are excluded by default. +Besides, anything under the `Composer` namespace will be excluded. + +## Usage + +After every `$ composer install` and `$ composer update`: + +```php +run(); +``` + +The above snippet: +1. Look for `/path/to/project/root/composer.json` +1. Find out [vendor-dir](https://getcomposer.org/doc/06-config.md#vendor-dir) +1. Find out all [required packages](https://getcomposer.org/doc/04-schema.md#require), including those required by dependencies +1. Find out all [autoload paths](https://getcomposer.org/doc/04-schema.md#autoload) for all required packages +1. Prefix all namespaces with the imposter namespace defined in your `composer.json` + +Before: +```php + $prefix) { + $aaaa = '{' . $namespace . '}' . $prefix; +} + +/** Just a comment for testing $namespace transformation */ +``` + +After: +```php + $prefix) { + $aaaa = '{' . $namespace . '}' . $prefix; +} + +/** Just a comment for testing $namespace transformation */ +``` + +## Known Issues + +**Help Wanted.** Pull requests are welcomed. + +1. Traits are not transformed +1. Virtual packages are not supported + +## Frequently Asked Questions + +### How can I integrate imposter with composer? + +Use [Imposter Plugin](https://github.com/TypistTech/imposter-plugin) instead. +It hooks imposter into [composer command events](https://getcomposer.org/doc/articles/scripts.md#command-events). + +### Does imposter support `PSR4`, `PSR0`, `Classmap` and `Files`? + +Yes for all. PSR-4 and PSR-0 autoloading, classmap generation and files includes are supported. + +### Can I exclude some of the packages from imposter? + +Yes, see [`extra.imposter.excludes`](#extraimposterexcludes). +All [composer made packages](https://packagist.org/packages/composer/) are excluded by default. + +### How about `require-dev` packages? + +Imposter do nothing on `require-dev` packages because imposter is intended for avoiding production environment., not for development environment. + +### How about PHP built-in classes? + +Imposter skips classes that on global namespace, for example: `\ArrayObject`, `\RuntimeException` + +### How about packages that don't use namespaces? + +Not for now. +Tell me your idea by [opening an issue](https://github.com/TypistTech/imposter/issues/new). + +### How about packages that use fully qualified name? + +Not for now. We need a better regex(or something better than regex) in the [Transformer](src/Transformer.php) class. +Tell me your idea by [opening an issue](https://github.com/TypistTech/imposter/issues/new) + +### Which composer versions are supported? + +Both v1 and v2. + +### Will you add support for older PHP versions? + +Never! This plugin will only work on [actively supported PHP versions](https://secure.php.net/supported-versions.php). + +Don't use it on **end of life** or **security fixes only** PHP versions. + +### It looks awesome. Where can I find some more goodies like this + +- Articles on [Typist Tech's blog](https://typist.tech) +- [Tang Rufus' WordPress plugins](https://profiles.wordpress.org/tangrufus#content-plugins) on wp.org +- More projects on [Typist Tech's GitHub profile](https://github.com/TypistTech) +- Stay tuned on [Typist Tech's newsletter](https://typist.tech/go/newsletter) +- Follow [Tang Rufus' Twitter account](https://twitter.com/TangRufus) +- **Hire [Tang Rufus](https://typist.tech/contact) to build your next awesome site** + +### Where can I give 5-star reviews? + +Thanks! Glad you like it. It's important to let me knows somebody is using this project. Please consider: + +- [tweet](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2FTypistTech%2Fimposter&via=tangrufus&text=Wrapping%20all%20%23composer%20vendor%20packages%20inside%20your%20own%20namespace.%20Intended%20for%20%23WordPress%20plugins&hashtags=php) something good with mentioning [@TangRufus](https://twitter.com/tangrufus) +- ★ star [the Github repo](https://github.com/TypistTech/imposter) +- [👀 watch](https://github.com/TypistTech/imposter/subscription) the Github repo +- write tutorials and blog posts +- **[hire](https://www.typist.tech/contact/) Typist Tech** + +## Testing + +```bash +composer test +composer style:check +``` + +## Alternatives + +Here is a list of alternatives that I found. However, none of these satisfied my requirements. + +*If you know other similar projects, feel free to edit this section!* + +* [Mozart](https://github.com/coenjacobs/mozart) by Coen Jacobs + - Works with PSR0 and PSR4 + - Dependency packages store in a different directory + +* [PHP Scoper](https://github.com/humbug/php-scoper) + - Prefixes all PHP namespaces in a file/directory to isolate the code bundled in PHARs + +## Feedback + +**Please provide feedback!** We want to make this project as useful as possible. +Please [submit an issue](https://github.com/TypistTech/imposter/issues/new) and point out what you do and don't like, or fork the project and [send pull requests](https://github.com/TypistTech/imposter/pulls/). +**No issue is too small.** + +## Security Vulnerabilities + +If you discover a security vulnerability within this project, please email us at [imposter@typist.tech](mailto:imposter@typist.tech). +All security vulnerabilities will be promptly addressed. + +## Credits + +[Imposter](https://github.com/TypistTech/imposter) is a [Typist Tech](https://typist.tech) project and maintained by [Tang Rufus](https://twitter.com/TangRufus), freelance developer for [hire](https://www.typist.tech/contact/). + +Full list of contributors can be found [here](https://github.com/TypistTech/imposter/graphs/contributors). + +## License + +[Imposter](https://github.com/TypistTech/imposter) is released under the [MIT License](https://opensource.org/licenses/MIT). diff --git a/plugins/code-snippets/vendor/typisttech/imposter/composer.json b/plugins/code-snippets/vendor/typisttech/imposter/composer.json new file mode 100644 index 0000000..33998cb --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/composer.json @@ -0,0 +1,69 @@ +{ + "name": "typisttech/imposter", + "description": "Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.", + "keywords": [ + "composer", + "dependency", + "monkey-patching", + "namespace", + "wordpress" + ], + "homepage": "https://github.com/TypistTech/imposter", + "license": "MIT", + "authors": [ + { + "name": "Typist Tech", + "email": "imposter@typist.tech", + "homepage": "https://typist.tech" + }, + { + "name": "Tang Rufus", + "email": "tangrufus@gmail.com", + "homepage": "https://typist.tech", + "role": "Developer" + } + ], + "require": { + "php": "^7.3 || ^8.0", + "ext-json": "*" + }, + "require-dev": { + "codeception/codeception": "^4.1", + "codeception/mockery-module": "^0.4.0", + "codeception/module-asserts": "^1.3", + "codeception/module-filesystem": "^1.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "typisttech/imposter-plugin": "Composer plugin to integrate composer and imposter" + }, + "config": { + "sort-packages": true + }, + "extra": { + "branch-alias": { + "dev-master": "0.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "TypistTech\\Imposter\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "TypistTech\\Imposter\\": "tests/unit" + } + }, + "scripts": { + "style:check": "phpcs", + "style:fix": "phpcbf", + "test": "codecept run", + "test:coverage": "phpdbg -qrr ./vendor/bin/codecept run --coverage --coverage-html --coverage-xml" + }, + "support": { + "email": "imposter@typist.tech", + "issues": "https://github.com/TypistTech/imposter/issues", + "source": "https://github.com/TypistTech/imposter" + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/composer.lock b/plugins/code-snippets/vendor/typisttech/imposter/composer.lock new file mode 100644 index 0000000..54b51e5 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/composer.lock @@ -0,0 +1,4108 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "7c3bad5bff38a84d93ec28077d54b78f", + "packages": [], + "packages-dev": [ + { + "name": "behat/gherkin", + "version": "v4.6.2", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/51ac4500c4dc30cbaaabcd2f25694299df666a31", + "reference": "51ac4500c4dc30cbaaabcd2f25694299df666a31", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3|~4", + "symfony/yaml": "~2.3|~3|~4" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "support": { + "issues": "https://github.com/Behat/Gherkin/issues", + "source": "https://github.com/Behat/Gherkin/tree/master" + }, + "time": "2020-03-17T14:03:26+00:00" + }, + { + "name": "codeception/codeception", + "version": "4.1.12", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Codeception.git", + "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd", + "reference": "fc550bf6e90d69fbfc8ab7e9e0a330ac98ffafdd", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.4.0", + "codeception/lib-asserts": "^1.0", + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0", + "codeception/stub": "^2.0 | ^3.0", + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/psr7": "~1.4", + "php": ">=5.6.0 <9.0", + "symfony/console": ">=2.7 <6.0", + "symfony/css-selector": ">=2.7 <6.0", + "symfony/event-dispatcher": ">=2.7 <6.0", + "symfony/finder": ">=2.7 <6.0", + "symfony/yaml": ">=2.7 <6.0" + }, + "require-dev": { + "codeception/module-asserts": "*@dev", + "codeception/module-cli": "*@dev", + "codeception/module-db": "*@dev", + "codeception/module-filesystem": "*@dev", + "codeception/module-phpbrowser": "*@dev", + "codeception/specify": "~0.3", + "codeception/util-universalframework": "*@dev", + "monolog/monolog": "~1.8", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": ">=2.7 <6.0", + "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0" + }, + "suggest": { + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "hoa/console": "For interactive console functionality", + "stecman/symfony-console-completion": "For BASH autocompletion", + "symfony/phpunit-bridge": "For phpunit-bridge support" + }, + "bin": [ + "codecept" + ], + "type": "library", + "extra": { + "branch-alias": [] + }, + "autoload": { + "psr-4": { + "Codeception\\": "src/Codeception", + "Codeception\\Extension\\": "ext" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + } + ], + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", + "keywords": [ + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" + ], + "support": { + "issues": "https://github.com/Codeception/Codeception/issues", + "source": "https://github.com/Codeception/Codeception/tree/4.1.12" + }, + "funding": [ + { + "url": "https://opencollective.com/codeception", + "type": "open_collective" + } + ], + "time": "2020-11-16T06:36:57+00:00" + }, + { + "name": "codeception/lib-asserts", + "version": "1.13.2", + "source": { + "type": "git", + "url": "https://github.com/Codeception/lib-asserts.git", + "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6", + "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6", + "shasum": "" + }, + "require": { + "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0", + "ext-dom": "*", + "php": ">=5.6.0 <9.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + }, + { + "name": "Gintautas Miselis" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" + } + ], + "description": "Assertion methods used by Codeception core and Asserts module", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/lib-asserts/issues", + "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2" + }, + "time": "2020-10-21T16:26:20+00:00" + }, + { + "name": "codeception/mockery-module", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/MockeryModule.git", + "reference": "5c4af8afec81303cb859c27fdc105271caef1d02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/MockeryModule/zipball/5c4af8afec81303cb859c27fdc105271caef1d02", + "reference": "5c4af8afec81303cb859c27fdc105271caef1d02", + "shasum": "" + }, + "require": { + "codeception/codeception": "^2.4|^3.0|^4.0", + "mockery/mockery": "^0.8|^0.9|^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert.php@mailican.com" + }, + { + "name": "Jáchym Toušek", + "email": "enumag@gmail.com" + } + ], + "description": "Mockery Module for Codeception", + "support": { + "issues": "https://github.com/Codeception/MockeryModule/issues", + "source": "https://github.com/Codeception/MockeryModule/tree/0.4.0" + }, + "time": "2020-01-17T15:08:49+00:00" + }, + { + "name": "codeception/module-asserts", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/Codeception/module-asserts.git", + "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de", + "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de", + "shasum": "" + }, + "require": { + "codeception/codeception": "*@dev", + "codeception/lib-asserts": "^1.13.1", + "php": ">=5.6.0 <9.0" + }, + "conflict": { + "codeception/codeception": "<4.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk" + }, + { + "name": "Gintautas Miselis" + }, + { + "name": "Gustavo Nieves", + "homepage": "https://medium.com/@ganieves" + } + ], + "description": "Codeception module containing various assertions", + "homepage": "https://codeception.com/", + "keywords": [ + "assertions", + "asserts", + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/module-asserts/issues", + "source": "https://github.com/Codeception/module-asserts/tree/1.3.1" + }, + "time": "2020-10-21T16:48:15+00:00" + }, + { + "name": "codeception/module-filesystem", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Codeception/module-filesystem.git", + "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/module-filesystem/zipball/781be167fb1557bfc9b61e0a4eac60a32c534ec1", + "reference": "781be167fb1557bfc9b61e0a4eac60a32c534ec1", + "shasum": "" + }, + "require": { + "codeception/codeception": "^4.0", + "php": ">=5.6.0 <9.0", + "symfony/finder": ">=2.7 <6.0" + }, + "conflict": { + "codeception/codeception": "<4.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk" + }, + { + "name": "Gintautas Miselis" + } + ], + "description": "Codeception module for testing local filesystem", + "homepage": "http://codeception.com/", + "keywords": [ + "codeception", + "filesystem" + ], + "support": { + "issues": "https://github.com/Codeception/module-filesystem/issues", + "source": "https://github.com/Codeception/module-filesystem/tree/1.0.3" + }, + "time": "2020-10-24T14:46:40+00:00" + }, + { + "name": "codeception/phpunit-wrapper", + "version": "9.0.5", + "source": { + "type": "git", + "url": "https://github.com/Codeception/phpunit-wrapper.git", + "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/72bac7770866799e23a7dda1ac6bec2f8baccf45", + "reference": "72bac7770866799e23a7dda1ac6bec2f8baccf45", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "phpunit/phpunit": "^9.0" + }, + "require-dev": { + "codeception/specify": "*", + "vlucas/phpdotenv": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\PHPUnit\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + }, + { + "name": "Naktibalda" + } + ], + "description": "PHPUnit classes used by Codeception", + "support": { + "issues": "https://github.com/Codeception/phpunit-wrapper/issues", + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.5" + }, + "time": "2020-10-11T18:14:42+00:00" + }, + { + "name": "codeception/stub", + "version": "3.7.0", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304", + "reference": "468dd5fe659f131fc997f5196aad87512f9b1304", + "shasum": "" + }, + "require": { + "phpunit/phpunit": "^8.4 | ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", + "support": { + "issues": "https://github.com/Codeception/Stub/issues", + "source": "https://github.com/Codeception/Stub/tree/3.7.0" + }, + "time": "2020-07-03T15:54:43+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.7.0" + }, + "time": "2020-09-30T07:37:11+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "20cab678faed06fac225193be281ea0fddb43b93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/20cab678faed06fac225193be281ea0fddb43b93", + "reference": "20cab678faed06fac225193be281ea0fddb43b93", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/master" + }, + "time": "2020-08-11T18:10:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.10.3", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984", + "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.3" + }, + "time": "2020-12-03T17:45:45+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, + "time": "2020-06-27T14:33:11+00:00" + }, + { + "name": "phar-io/version", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/726c026815142e4f8677b7cb7f2249c9ffb7ecae", + "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.0.3" + }, + "time": "2020-11-30T09:21:21+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + }, + "time": "2020-09-17T18:55:26+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.1", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0", + "phpunit/phpunit": "^8.0 || ^9.0 <9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.12.1" + }, + "time": "2020-09-29T09:10:42+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.10.2", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:44:49+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", + "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.1", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.0" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-12-04T05:05:53+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/master" + }, + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:55:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:18:59+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.8", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2020-10-23T02:01:07+00:00" + }, + { + "name": "symfony/console", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/3e0564fb08d44a98bd5f1960204c958e57bd586b", + "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-28T11:24:18+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256", + "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-28T21:31:18+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", + "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-01T16:14:45+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "fd8305521692f27eae3263895d1ef1571c71a78d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/fd8305521692f27eae3263895d1ef1571c71a78d", + "reference": "fd8305521692f27eae3263895d1ef1571c71a78d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-18T09:42:36+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "727d1096295d807c309fb01a851577302394c897" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", + "reference": "727d1096295d807c309fb01a851577302394c897", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/string", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/40e975edadd4e32cd16f3753b3bad65d9ac48242", + "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T12:08:07+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/bb73619b2ae5121bbbcd9f191dfd53ded17ae598", + "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-28T10:57:20+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/master" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2020-07-12T23:59:07+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozart/assert/issues", + "source": "https://github.com/webmozart/assert/tree/master" + }, + "time": "2020-07-08T17:02:28+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^7.3 || ^8.0", + "ext-json": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ArrayUtil.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ArrayUtil.php new file mode 100644 index 0000000..017615a --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ArrayUtil.php @@ -0,0 +1,35 @@ +packageDir = StringUtil::addTrailingSlash($packageDir); + $this->config = $config; + } + + /** + * @return string[] + */ + public function getAutoloads(): array + { + return array_map(function (string $autoload): string { + return $this->packageDir . $autoload; + }, array_unique($this->getAutoloadPaths())); + } + + /** + * @return string[] + */ + private function getAutoloadPaths(): array + { + $autoloads = $this->get('autoload'); + unset($autoloads['exclude-from-classmap']); + + return ArrayUtil::flattenMap(function ($autoloadConfig): array { + return $this->normalizeAutoload($autoloadConfig); + }, $autoloads); + } + + protected function get(string $key): array + { + return $this->config[$key] ?? []; + } + + /** + * @param $autoloadConfigs + * + * @return string[] + */ + private function normalizeAutoload($autoloadConfigs): array + { + if (! is_array($autoloadConfigs)) { + return [$autoloadConfigs]; + } + + return ArrayUtil::flattenMap(function ($autoloadConfig): array { + return $this->normalizeAutoload($autoloadConfig); + }, $autoloadConfigs); + } + + public function getPackageDir(): string + { + return $this->packageDir; + } + + /** + * @return string[] + */ + public function getRequires(): array + { + return array_keys($this->get('require')); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollection.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollection.php new file mode 100644 index 0000000..029a387 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollection.php @@ -0,0 +1,43 @@ +configs[$config->getPackageDir()] = $config; + } + + /** + * @return string[] + */ + public function getAutoloads(): array + { + $autoloads = ArrayUtil::flattenMap(function (ConfigInterface $config) { + return $config->getAutoloads(); + }, $this->all()); + + return array_unique($autoloads); + } + + /** + * @return ConfigInterface[] + */ + public function all(): array + { + return $this->configs; + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollectionFactory.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollectionFactory.php new file mode 100644 index 0000000..bf9307c --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollectionFactory.php @@ -0,0 +1,68 @@ +getVendorDir() . $package . '/composer.json', + $filesystem + ); + + $configCollection->add($packageConfig); + + static::addRequiredPackageConfigsRecursively( + $configCollection, + $projectConfig, + $packageConfig, + $filesystem + ); + } + + return $configCollection; + } + + /** + * @param ProjectConfigInterface $projectConfig + * @param ConfigInterface $config + * + * @return string[] + */ + private static function getFilteredPackages(ProjectConfigInterface $projectConfig, ConfigInterface $config): array + { + $requiredPackages = array_filter($config->getRequires(), function (string $package) { + return (false !== strpos($package, '/')); + }); + + $nonComposerPackages = array_filter($requiredPackages, function (string $package) { + return (false === strpos($package, 'composer/')); + }); + + return array_filter($nonComposerPackages, function (string $package) use ($projectConfig) { + return ! in_array($package, $projectConfig->getExcludes(), true); + }); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollectionInterface.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollectionInterface.php new file mode 100644 index 0000000..6179eb2 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigCollectionInterface.php @@ -0,0 +1,25 @@ +dirname($path), + json_decode( + $filesystem->get($path), + true + ) + ); + } + + public static function buildProjectConfig(string $path, Filesystem $filesystem): ProjectConfig + { + return new ProjectConfig( + $filesystem->dirname($path), + json_decode( + $filesystem->get($path), + true + ) + ); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigInterface.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigInterface.php new file mode 100644 index 0000000..fb4d1b6 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ConfigInterface.php @@ -0,0 +1,20 @@ +isFile($path)) { + throw new RuntimeException('File does not exist at path ' . $path); + } + + return file_get_contents($path); + } + + /** + * Determine if the given path is a file. + * + * @param string $path + * + * @return bool + */ + public function isFile(string $path): bool + { + return is_file($path); + } + + /** + * Determine if the given path is a directory. + * + * @param string $path + * + * @return bool + */ + public function isDir(string $path): bool + { + return is_dir($path); + } + + /** + * Write the contents of a file. + * + * @param string $path + * @param string $contents + * + * @return int|false + */ + public function put(string $path, string $contents) + { + return file_put_contents($path, $contents); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/FilesystemInterface.php b/plugins/code-snippets/vendor/typisttech/imposter/src/FilesystemInterface.php new file mode 100644 index 0000000..8397b34 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/FilesystemInterface.php @@ -0,0 +1,61 @@ +configCollection = $configCollection; + $this->transformer = $transformer; + $this->filesystem = $filesystem; + } + + /** + * @return ConfigCollectionInterface + */ + public function getConfigCollection(): ConfigCollectionInterface + { + return $this->configCollection; + } + + /** + * @return TransformerInterface + */ + public function getTransformer(): TransformerInterface + { + return $this->transformer; + } + + /** + * Transform all autoload files. + * + * @return void + */ + public function run() + { + $autoloads = $this->getAutoloads(); + array_walk($autoloads, [$this, 'transform']); + } + + /** + * Get all valid (exist) autoload paths. + * + * @return string[] + */ + public function getAutoloads(): array + { + if ($this->autoloads === null) { + $this->setAutoloads(); + } + + return $this->autoloads; + } + + /** + * Get all autoload paths which defined in composer.json but not exist. + * + * @return string[] + */ + public function getInvalidAutoloads(): array + { + if ($this->invalidAutoloads === null) { + $this->setAutoloads(); + } + + return $this->invalidAutoloads; + } + + protected function setAutoloads(): void + { + $this->autoloads = []; + $this->invalidAutoloads = []; + + $autoloads = $this->configCollection->getAutoloads(); + + foreach ($autoloads as $autoload) { + $isValid = $this->filesystem->isFile($autoload) || $this->filesystem->isDir($autoload); + + if ($isValid) { + $this->autoloads[] = $autoload; + } else { + $this->invalidAutoloads[] = $autoload; + } + } + } + + /** + * Transform a file or directory recursively. + * + * @param string $target Path to the target file or directory. + * + * @return void + */ + public function transform(string $target) + { + $this->transformer->transform($target); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ImposterFactory.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ImposterFactory.php new file mode 100644 index 0000000..886fa3a --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ImposterFactory.php @@ -0,0 +1,30 @@ +setExtraExcludes($extraExcludes); + + $transformer = new Transformer($projectConfig->getImposterNamespace(), $filesystem); + $configCollection = ConfigCollectionFactory::forProject( + $projectConfig, + $filesystem + ); + + return new Imposter($configCollection, $transformer, $filesystem); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ImposterInterface.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ImposterInterface.php new file mode 100644 index 0000000..8e3c6f2 --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ImposterInterface.php @@ -0,0 +1,38 @@ +get('extra'); + $excludes = $extra['imposter']['excludes'] ?? []; + + return array_merge(static::DEFAULT_EXCLUDES, $excludes, $this->extraExcludes); + } + + public function getImposterNamespace(): string + { + $extra = $this->get('extra'); + + if (empty($extra['imposter']['namespace'])) { + throw new UnexpectedValueException('Imposter namespace is empty'); + } + + return $extra['imposter']['namespace']; + } + + public function getVendorDir(): string + { + $config = $this->get('config'); + $vendorDir = $config['vendor-dir'] ?? 'vendor'; + + return StringUtil::addTrailingSlash($this->packageDir . $vendorDir); + } + + /** + * @param string[] $extraExcludes + * + * @return void + */ + + public function setExtraExcludes(array $extraExcludes) + { + $this->extraExcludes = $extraExcludes; + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/ProjectConfigInterface.php b/plugins/code-snippets/vendor/typisttech/imposter/src/ProjectConfigInterface.php new file mode 100644 index 0000000..b8b3f1f --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/ProjectConfigInterface.php @@ -0,0 +1,24 @@ +namespacePrefix = StringUtil::ensureDoubleBackwardSlash($namespacePrefix); + $this->filesystem = $filesystem; + } + + /** + * Transform a file or directory recursively. + * + * @todo Skip non-php files. + * + * @param string $target Path to the target file or directory. + * + * @return void + */ + public function transform(string $target) + { + if ($this->filesystem->isFile($target)) { + $this->doTransform($target); + + return; + } + + $files = $this->filesystem->allFiles($target); + + array_walk($files, function (SplFileInfo $file) { + $this->doTransform($file->getRealPath()); + }); + } + + /** + * @param string $targetFile + * + * @return void + */ + private function doTransform(string $targetFile) + { + $this->prefixNamespace($targetFile); + $this->prefixUseConst($targetFile); + $this->prefixUseFunction($targetFile); + $this->prefixUse($targetFile); + } + + /** + * Prefix namespace at the given path. + * + * @param string $targetFile + * + * @return void + */ + private function prefixNamespace(string $targetFile) + { + $pattern = sprintf( + '/(\s+)%1$s\\s+(?!(%2$s)|(Composer(\\\\|;)))/', + 'namespace', + $this->namespacePrefix + ); + $replacement = sprintf('%1$s %2$s', '${1}namespace', $this->namespacePrefix); + + $this->replace($pattern, $replacement, $targetFile); + } + + /** + * Replace string in the given file. + * + * @param string $pattern + * @param string $replacement + * @param string $targetFile + * + * @return void + */ + private function replace(string $pattern, string $replacement, string $targetFile) + { + $this->filesystem->put( + $targetFile, + preg_replace( + $pattern, + $replacement, + $this->filesystem->get($targetFile) + ) + ); + } + + /** + * Prefix `use const` keywords at the given path. + * + * @param string $targetFile + * + * @return void + */ + private function prefixUseConst(string $targetFile) + { + $pattern = sprintf( + '/%1$s\\s+(?!(%2$s)|(\\\\(?!.*\\\\.*))|(Composer(\\\\|;)|(?!.*\\\\.*)))/', + 'use const', + $this->namespacePrefix + ); + $replacement = sprintf('%1$s %2$s', 'use const', $this->namespacePrefix); + + $this->replace($pattern, $replacement, $targetFile); + } + + /** + * Prefix `use function` keywords at the given path. + * + * @param string $targetFile + * + * @return void + */ + private function prefixUseFunction(string $targetFile) + { + $pattern = sprintf( + '/%1$s\\s+(?!(%2$s)|(\\\\(?!.*\\\\.*))|(Composer(\\\\|;)|(?!.*\\\\.*)))/', + 'use function', + $this->namespacePrefix + ); + $replacement = sprintf('%1$s %2$s', 'use function', $this->namespacePrefix); + + $this->replace($pattern, $replacement, $targetFile); + } + + /** + * Prefix `use` keywords at the given path. + * + * @param string $targetFile + * + * @return void + */ + private function prefixUse(string $targetFile) + { + $pattern = sprintf( + '/%1$s\\s+(?!(const)|(function)|(%2$s)|(\\\\(?!.*\\\\.*))|(Composer(\\\\|;)|(?!.*\\\\.*)))/', + 'use', + $this->namespacePrefix + ); + $replacement = sprintf('%1$s %2$s', 'use', $this->namespacePrefix); + + $this->replace($pattern, $replacement, $targetFile); + } +} diff --git a/plugins/code-snippets/vendor/typisttech/imposter/src/TransformerInterface.php b/plugins/code-snippets/vendor/typisttech/imposter/src/TransformerInterface.php new file mode 100644 index 0000000..e7994ae --- /dev/null +++ b/plugins/code-snippets/vendor/typisttech/imposter/src/TransformerInterface.php @@ -0,0 +1,17 @@ +Hello, Dolly in the upper right of your admin screen on every page. +Author: Matt Mullenweg +Version: 1.7.2 +Author URI: http://ma.tt/ +Text Domain: hello-dolly +*/ + +// Do not load directly. +if ( ! defined( 'ABSPATH' ) ) { + die(); +} + +function hello_dolly_get_lyric() { + /** These are the lyrics to Hello Dolly */ + $lyrics = "Hello, Dolly +Well, hello, Dolly +It's so nice to have you back where you belong +You're lookin' swell, Dolly +I can tell, Dolly +You're still glowin', you're still crowin' +You're still goin' strong +I feel the room swayin' +While the band's playin' +One of our old favorite songs from way back when +So, take her wrap, fellas +Dolly, never go away again +Hello, Dolly +Well, hello, Dolly +It's so nice to have you back where you belong +You're lookin' swell, Dolly +I can tell, Dolly +You're still glowin', you're still crowin' +You're still goin' strong +I feel the room swayin' +While the band's playin' +One of our old favorite songs from way back when +So, golly, gee, fellas +Have a little faith in me, fellas +Dolly, never go away +Promise, you'll never go away +Dolly'll never go away again"; + + // Here we split it into lines. + $lyrics = explode( "\n", $lyrics ); + + // And then randomly choose a line. + return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] ); +} + +// This just echoes the chosen line, we'll position it later. +function hello_dolly() { + $chosen = hello_dolly_get_lyric(); + $lang = ''; + if ( 'en_' !== substr( get_user_locale(), 0, 3 ) ) { + $lang = ' lang="en"'; + } + + printf( + '

%s %s

', + __( 'Quote from Hello Dolly song, by Jerry Herman:' ), + $lang, + $chosen + ); +} + +// Now we set that function up to execute when the admin_notices action is called. +add_action( 'admin_notices', 'hello_dolly' ); + +// We need some CSS to position the paragraph. +function dolly_css() { + echo " + + "; +} + +add_action( 'admin_head', 'dolly_css' ); diff --git a/plugins/index.php b/plugins/index.php new file mode 100755 index 0000000..6220032 --- /dev/null +++ b/plugins/index.php @@ -0,0 +1,2 @@ +p:first-child{margin-top:0}#wp-mail-smtp-domain-check-details h2{color:#2c3338;font-weight:600;font-size:13px;margin:0 0 15px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item{padding:10px 0 0;border-top:1px solid #e4e4e4;display:flex}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item:last-child{border-bottom:1px solid #e4e4e4}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-icon{width:18px;height:16px;margin-right:10px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content h3{text-transform:uppercase;font-weight:500;font-size:14px;line-height:17px;margin:0 0 4px 0;color:#2c3337}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content p{margin:0 0 10px 0;color:#50575e} \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/css/dashboard-widget.min.css b/plugins/wp-mail-smtp/assets/css/dashboard-widget.min.css new file mode 100644 index 0000000..2be7e14 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/dashboard-widget.min.css @@ -0,0 +1 @@ +#dashboard-widgets .meta-box-sortables .postbox:last-child .wp-mail-smtp-dash-widget-settings-menu{top:auto;bottom:50px}@media(min-width: 800px){#dashboard-widgets .meta-box-sortables .postbox:last-child .wp-mail-smtp-dash-widget-settings-menu{bottom:40px}}#wp_mail_smtp_reports_widget_pro .inside,#wp_mail_smtp_reports_widget_lite .inside{margin:0;padding:0}.wp-mail-smtp-dash-widget button:focus{outline:none}.wp-mail-smtp-dash-widget-block{position:relative;padding:0 12px;margin-top:12px}.wp-mail-smtp-dash-widget-block h3{display:inline-block;line-height:2}.wp-mail-smtp-dash-widget-block p{margin-top:0;margin-bottom:0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-block-container{position:relative}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-block{height:291px;border-bottom:1px solid #eee;padding:0 12px 12px;padding-inline-end:14px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{display:flex;align-items:start;justify-content:space-between;margin-top:0;padding:13px;background-color:#fafafa}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings>div{display:flex}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings>div:first-child{flex-wrap:wrap}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings>div:first-child a{line-height:30px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings select{line-height:2;min-height:30px;height:30px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings button{min-height:30px;height:30px}@media(max-width: 980px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px 4px}}@media(max-width: 960px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px}}@media(max-width: 856px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px 2px}}@media(max-width: 799px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{padding:13px}}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings{flex-direction:column;align-items:normal}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings select{width:100%;margin:0 0 10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-timespan{width:calc(100% - 38px)}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{vertical-align:middle}@media(max-width: 1150px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{display:none}}@media(min-width: 1500px)and (max-width: 1630px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{display:none}}@media(min-width: 1801px)and (max-width: 2080px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings a{display:none}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-email-type{margin-right:6px}@media(max-width: 830px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-email-type{margin-right:2px}}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-select-email-type{margin-right:0}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-container{display:inline-block;position:relative;vertical-align:top;margin-left:6px}@media(max-width: 830px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-container{margin-left:2px}}@media(max-width: 799px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-container{margin-left:6px}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button{background:#fafafa;color:#787c82;border-color:#787c82;padding:1px 6px 0;margin-bottom:0;line-height:1;display:flex;align-items:center;justify-content:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:hover,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:active,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:focus{color:#2271b1;border-color:#2271b1}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:hover svg path,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:active svg path,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button:focus svg path{fill:#2271b1}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button.open svg path{transform:rotate(90deg)}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button svg{display:inline-block;width:19px;height:19px}@media(max-width: 782px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button svg{padding:5px}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-button svg path{fill:#787c82;transition:transform .2s;transform-origin:center center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu{display:none;position:absolute;background-color:#fff;width:160px;border-radius:3px;box-shadow:0px 5px 15px rgba(0,0,0,.15);padding:10px;z-index:9999;right:0;top:50px}@media(min-width: 800px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu{top:40px}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color{border-bottom:1px solid #eee}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style h4,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color h4{text-transform:uppercase !important;color:#3c434a !important;font-size:11px !important;font-weight:500 !important;line-height:13px !important;margin:0 0 10px !important}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item{display:flex;align-items:center;color:#3c434a;font-size:13px;line-height:16px;margin:0 0 13px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item:last-child,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item:last-child{margin:0 0 10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item input[type=radio],.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item input[type=radio]{margin-right:5px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--style .wp-mail-smtp-dash-widget-settings-menu-item label,.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color .wp-mail-smtp-dash-widget-settings-menu-item label{vertical-align:top;margin-top:-3px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu--color{margin-top:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-settings .wp-mail-smtp-dash-widget-settings-menu-save{margin-top:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block{margin-top:0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table{width:calc(100% + 24px);margin:0 -12px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell{padding:10px 12px;border-right:1px solid #eee;border-top:1px solid #eee;color:#3c434a;font-size:14px;width:50%;line-height:17px}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell{display:block;width:100%}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--2:not(:first-child){border-right:none}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--3{width:33.33%}@media(max-width: 436px){.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--3{width:100%}}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell--3:last-child{border-right:none}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell-container{display:flex;align-items:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block table .wp-mail-smtp-dash-widget-email-stats-table-cell-container img{width:16px;margin-right:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-stats-block .wp-mail-smtp-dash-widget-overlay{background-position-y:50%}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block{display:flex;padding:12px 7px 12px 12px;border-top:1px solid #eee;color:#787c82;font-size:13px;line-height:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block b{color:#3c434a}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .sep{display:inline-block;margin:0 3px;color:#ddd}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .sep-vertical{color:#ddd}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block p{margin:0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-recommended-plugin{display:inline-block;width:calc(100% - 24px)}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-recommended-plugin span{display:inline-block}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-dismiss-recommended-plugin-block{display:inline-block;border:0;color:gray;opacity:.3;vertical-align:baseline;cursor:pointer;background:none;padding:0 2px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-dismiss-recommended-plugin-block:hover{opacity:1}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-recommended-plugin-block .wp-mail-smtp-dash-widget-dismiss-recommended-plugin-block .dashicons{font-size:16px;height:16px;width:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education{align-items:center;border-left:4px solid #d63638;border-top:1px solid #eee;display:flex;gap:10px;margin-top:0;padding:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-error-icon{display:flex;height:44px;width:40px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-error-icon img{height:35px;width:35px;margin:auto}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content{padding-right:14px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content p{color:#1d2327;font-size:14px;line-height:20px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content p a{color:#2271b1;font-weight:500}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education-content p strong{font-weight:500}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education .wp-mail-smtp-dash-widget-dismiss-email-alert-block{background:none;border:0;cursor:pointer;position:absolute;right:6px;top:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-email-alerts-education .wp-mail-smtp-dash-widget-dismiss-email-alert-block .dashicons{color:#a0a5aa;font-size:16px;height:17px;width:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-error{text-align:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart{position:absolute;left:0;top:0;height:100%;width:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,0);background:-moz-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:-webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(100%, rgb(255, 255, 255)));background:-webkit-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:-o-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:-ms-radial-gradient(center, ellipse cover, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%);background:radial-gradient(ellipse at center, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%)}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart .wp-mail-smtp-dash-widget-modal{position:absolute;top:calc(50% - 2em);left:50%;transform:translate(-50%, -50%);padding:1.5em 2em 2em 2em;box-shadow:0 0 25px 10px rgba(0,0,0,.08);border-radius:3px;background-color:#fff;text-align:center;width:20em}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal h2,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart .wp-mail-smtp-dash-widget-modal h2{padding:0;margin-bottom:5px;font-size:18px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal p,.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-chart .wp-mail-smtp-dash-widget-modal p{line-height:1.3}.wp-mail-smtp-dash-widget .wp-mail-smtp-error-no-data-email-stats{padding-top:16px;padding-bottom:16px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled{padding:21px 25px 30px;text-align:center}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled .wp-mail-smtp-dash-widget-block-logo{width:75px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled h2{font-size:16px;line-height:20px;font-weight:500;padding:10px 0 0}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled p{font-size:14px;line-height:20px;margin:7px 0 19px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-block-logs-disabled a.button:first-of-type:not(:only-of-type){margin-right:10px}.wp-mail-smtp-dash-widget .wp-mail-smtp-dash-widget-overlay{width:100%;position:absolute;top:0;right:0;bottom:0;left:0;background:url(../images/wp-spinner.gif) no-repeat center calc(50% - 12px);background-color:#fff;z-index:10}.wp-mail-smtp-dash-widget i.wp-mail-smtp-dash-widget-loader{background-image:url(../images/wp-spinner.gif);background-repeat:no-repeat;background-position:center;background-size:cover}.wp-mail-smtp-dash-widget .hidden{display:none !important}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-block-container #wp-mail-smtp-dash-widget-chart{opacity:.35}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade{background:none;display:flex;align-items:center;justify-content:center}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade h2{font-size:20px;line-height:20px;font-weight:500;color:#3c434a;margin-bottom:15px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade p{font-size:14px;line-height:18px;color:#787c82;margin-bottom:15px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade p:last-child{margin-bottom:0}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade a.button.button-hero{font-weight:500;font-size:14px;line-height:20px;padding:9px 15px;min-height:40px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-chart-upgrade .wp-mail-smtp-dash-widget-modal{position:relative;top:inherit;left:inherit;transform:none;width:24em;padding:2.3em;box-shadow:0 5px 25px rgba(0,0,0,.15);border-radius:6px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-dismiss-chart-upgrade{position:absolute;width:16px;height:17px;right:5px;top:5px;color:#a0a5aa;text-decoration:none}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-dismiss-chart-upgrade .dashicons{width:16px;height:17px;font-style:normal;font-weight:normal;font-size:16px;line-height:17px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-settings-menu input[type=radio]:checked::before{background-color:#a0a5aa}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-settings-menu *{cursor:not-allowed}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block{margin-top:0;padding-top:10px;padding-bottom:10px;border-top:1px solid #eee;font-size:13px;line-height:16px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block>div{padding:10px;border-radius:4px;background:#f0f6fc}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting{display:flex;align-items:center}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label{display:flex;margin:0 10px 0 0;color:#3c434a}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label input,#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label i{margin:0 10px 0 0}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label i{display:none;width:16px;height:16px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting label b{font-weight:500}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting a{white-space:nowrap;margin-right:10px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting .dashicons-dismiss{margin-left:auto;width:16px;height:16px;font-size:16px;color:#a0a5aa;cursor:pointer}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-setting .dashicons-dismiss:hover{color:#2271b1}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-applied{display:flex}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-summary-report-email-block-applied .wp-mail-smtp-dashicons-yes-alt-green{margin-right:10px;width:16px;height:16px;background-image:url("../images/dash-widget/yes-green.svg")}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-upgrade-footer{padding:12px;margin-top:0;border-top:1px solid #eee}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-upgrade-footer p{font-size:13px;line-height:16px}#wp_mail_smtp_reports_widget_lite .wp-mail-smtp-dash-widget-upgrade-footer--hide{display:none} \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/css/emails/summary-report-email.css b/plugins/wp-mail-smtp/assets/css/emails/summary-report-email.css new file mode 100644 index 0000000..57f3e9d --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/emails/summary-report-email.css @@ -0,0 +1,299 @@ +/* General styles. */ + +#outlook a { + padding: 0; +} + +.ExternalClass { + width: 100%; +} + +.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div { + line-height: 100%; +} + +#backgroundTable { + margin: 0; + padding: 0; + width: 100% !important; + line-height: 100% !important; +} + +/* Prevent blue links in subject. */ +.stats-subject-heading a { + color: inherit !important; + text-decoration: none !important; +} + +/* Mobile styles. */ + +@media only screen and (max-width: 599px) { + table.body .container { + width: 94% !important; + max-width: 600px !important; + } + + .header img { + width: 240px !important; + height: auto !important; + } + + .content { + padding: 30px !important; + } + + .main-heading { + font-size: 16px !important; + line-height: 20px !important; + } + + .main-description { + margin-bottom: 20px !important; + } + + .stats-totals-wrapper.two .stats-totals-item-wrapper { + width: 50% !important; + } + + .stats-totals-wrapper.three .stats-totals-item-wrapper { + width: 33.3% !important; + } + + .stats-totals-wrapper.four .stats-totals-item-wrapper { + width: 25% !important; + } + + .stats-totals-wrapper { + border-collapse: separate !important; + border: 1px solid #DDDDDD !important; + border-radius: 4px !important; + } + + .stats-total-item { + width: 100% !important; + min-width: 100% !important; + } + + .stats-total-item-inner { + border: none !important; + } + + .stats-total-item-icon-wrapper { + height: 24px !important; + } + + .stats-total-item-icon { + width: 24px !important; + height: 24px !important; + } + + .stats-totals-wrapper.three .stats-total-item-title, + .stats-totals-wrapper.four .stats-total-item-title { + display: none !important; + } + + .stats-total-item-value { + font-size: 18px !important; + line-height: 22px !important; + } + + .stats-total-item-percent { + font-size: 12px !important; + line-height: 14px !important; + } + + .stats-total-item-percent img { + width: 9px !important; + height: 9px !important; + } + + .stats-heading th { + display: block !important; + width: 100% !important; + min-width: 100% !important; + padding-right: 0 !important; + padding-left: 0 !important; + text-align: center !important; + } + + .stats-heading .first-col { + padding-top: 20px !important; + padding-bottom: 5px !important; + } + + .stats-heading .second-col { + padding-top: 0 !important; + padding-bottom: 20px !important; + } + + .stats-heading h2 { + text-align: center !important; + font-size: 15px !important; + line-height: 18px !important; + } + + .stats-heading a { + font-size: 13px !important; + line-height: 16px !important; + } + + .stats-subject-heading { + text-align: center !important; + } + + .stats-subject-row { + text-align: center !important; + } + + .stats-subject-column.total, + .stats-subject-column.sent, + .stats-subject-column.confirmed, + .stats-subject-column.unconfirmed, + .stats-subject-column.unsent { + max-width: 64px !important; + } + + .stats-subject-column.opened, + .stats-subject-column.clicked { + max-width: 111px !important; + } + + .spacer-40 { + line-height: 20px !important; + height: 20px !important; + } + + .upgrade-heading { + font-size: 18px !important; + line-height: 22px !important; + } + + .upgrade-text { + font-size: 14px !important; + line-height: 20px !important; + } +} + +@media only screen and (max-width: 360px) { + .content { + padding: 20px !important; + } + + .stats-subject-column.total, + .stats-subject-column.sent, + .stats-subject-column.confirmed, + .stats-subject-column.unconfirmed, + .stats-subject-column.unsent { + max-width: 61px !important; + } +} + +/* Dark Mode. */ + +@media (prefers-color-scheme: dark) { + .dark-body-bg { + background: #1C1E20 !important; + } + + .dark-content-bg { + background: #23282C !important; + } + + .dark-bg { + background: #202326 !important; + } + + .dark-white-color { + color: #ffffff !important; + } + + .dark-img { + display: block !important; + width: auto !important; + overflow: visible !important; + float: none !important; + max-height: inherit !important; + max-width: inherit !important; + line-height: auto !important; + margin-top: 0px !important; + visibility: inherit !important; + } + + .light-img { + display: none; + display: none !important; + } + + .stats-total-item-inner, + .stats-heading { + border-color: #395360 !important; + } + + .stats-subject-column-value, + .stats-total-item-percent, + .footer { + color: #8C8F94 !important; + } + + .stats-subject-column-value span { + color: #4A5057 !important; + } + + .upgrade-text { + color: #8C8F94 !important; + } +} + +/* Dark Mode Outlook. */ + +[data-ogsc] .dark-body-bg { + background: #1C1E20 !important; +} + +[data-ogsc] .dark-content-bg { + background: #23282C !important; +} + +[data-ogsc] .dark-bg { + background: #202326 !important; +} + +[data-ogsc] .dark-white-color { + color: #ffffff !important; +} + +[data-ogsc] .dark-img { + display: block !important; + width: auto !important; + overflow: visible !important; + float: none !important; + max-height: inherit !important; + max-width: inherit !important; + line-height: auto !important; + margin-top: 0px !important; + visibility: inherit !important; +} + +[data-ogsc] .light-img { + display: none; + display: none !important; +} + +[data-ogsc] .stats-total-item-inner, +[data-ogsc] .stats-heading { + border-color: #395360 !important; +} + +[data-ogsc] .stats-subject-column-value, +[data-ogsc] .stats-total-item-percent, +[data-ogsc] .footer { + color: #8C8F94 !important; +} + +[data-ogsc] .stats-subject-column-value span { + color: #4A5057 !important; +} + +[data-ogsc] .upgrade-text { + color: #8C8F94 !important; +} diff --git a/plugins/wp-mail-smtp/assets/css/smtp-about.min.css b/plugins/wp-mail-smtp/assets/css/smtp-about.min.css new file mode 100644 index 0000000..b2326f5 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/smtp-about.min.css @@ -0,0 +1 @@ +.wp-mail-smtp-page-about{padding:0 !important}.wp-mail-smtp-page-about *,.wp-mail-smtp-page-about *::before,.wp-mail-smtp-page-about *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins{padding:0 10px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container{margin-left:-20px;margin-right:-20px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-container{padding:0 10px;float:left;width:33.333333%;margin-bottom:20px}@media(max-width: 1249px){.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-container{width:50%}}@media(max-width: 781px){.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-container{width:100%;margin-bottom:20px}}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container h5{font-size:17px;font-weight:600}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item{background-color:#fff;border:1px solid #ddd;border-radius:3px;margin:0}@media(max-width: 781px){.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item{margin:0 0}}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item img{border:1px solid #eee;float:left;max-width:75px;padding:10px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item img[src*=-mi]{padding:13px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item h5{margin:0 0 10px 100px;font-size:16px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item p{margin:0 0 0 100px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .details{padding:20px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions{background-color:#f7f7f7;border-top:1px solid #ddd;padding:20px;position:relative}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions .msg{background-color:#f7f7f7;position:absolute;text-align:center;font-weight:600;top:0;left:0;height:100%;width:100%;z-index:99;padding:20px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-ms-align-items:center;align-items:center;justify-content:center}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions .msg.success{color:#00a32a}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .actions .msg.error{color:#d63638}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status{float:left;padding-top:8px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status .status-inactive{color:#d63638}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status .status-download{color:#666}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .status .status-active{color:#00a32a}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button{float:right}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button{cursor:pointer;width:140px;text-align:center;display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;-webkit-appearance:none;border-radius:3px;border:1px solid #ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;font-weight:normal}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button:hover,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button:focus,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.loading{background:#fafafa;border-color:#999;color:#23282d}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button .fa{margin-right:8px}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button .fa.fa-spinner{margin-right:0}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary:hover,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary:focus{background:#008ec2;border-color:#006799;color:#fff}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-primary .fa-spinner{color:#fff}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-secondary{color:#50575e;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-secondary:hover,.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.button-secondary:focus{background:#fafafa;border-color:#999;color:#23282d}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.status-active .fa{color:#00a32a}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.status-inactive .fa{color:#d63638}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.status-download .fa{color:#999}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.loading .fa{color:#666}.wp-mail-smtp-page-about.wp-mail-smtp-tab-about-about .wp-mail-smtp-admin-about-plugins .plugins-container .plugin-item .action-button button.disabled{cursor:default}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section{margin:0 0 20px;padding:30px;background:#fff;border:1px solid #e5e6e6;line-height:2}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h1,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h2,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h3,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h4,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h5{margin-top:0;padding-top:0;line-height:1.6}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h2{font-size:24px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section h3{font-size:18px;margin-bottom:30px;color:#23282c}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p{font-size:16px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p{margin-bottom:20px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p.bigger{font-size:18px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p.smaller{font-size:14px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section p:last-child{margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section hr{margin:30px 0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section figure{margin:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section figure img{width:100%}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section figure figcaption{font-size:14px;color:#646970;margin-top:5px;text-align:center;line-height:initial}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-40{padding-left:15px}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-40{width:100%;padding-left:0;padding-top:20px}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-60{padding-right:15px}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .wp-mail-smtp-admin-column-60{width:100%;padding-right:0}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul.list-plain{margin-top:0;margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul.list-plain li{margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section ul.list-features li .fa{color:#00a32a;margin:0 8px 0 0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .fa-star{color:gold}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .no-margin{margin:0 !important}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .no-padding{padding:0 !important}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section .centered{text-align:center !important}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero{padding:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main,.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-extra{padding:30px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-extra table{width:100%}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-extra .wp-mail-smtp-admin-column-50{float:none;width:100%}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main{background-color:#fafafa;border-bottom:1px solid #e5e6e6}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main.no-border{border-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero .wp-mail-smtp-admin-about-section-hero-main p{color:#666}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero h3.call-to-action{margin-bottom:-10px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-hero span.price-off{color:#00a32a}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-squashed{margin-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-squashed:not(:last-of-type){border-bottom:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post h2{margin-bottom:-10px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post h3{margin-bottom:15px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post p:last-of-type{margin-bottom:30px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20{padding-right:20px;width:auto}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20 img{width:270px}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20{width:20%}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-20 img{width:auto;max-width:100%}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-80{padding-left:20px;width:calc(100% - 20px - 270px)}@media(max-width: 781px){.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-column-80{width:80%}}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-about-section-post-link{padding:10px 15px;background-color:#df7739;color:#fff;border-radius:3px;text-decoration:none;margin-top:15px;font-size:14px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-about-section-post-link:hover{background-color:#b85a1b}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-post .wp-mail-smtp-admin-about-section-post-link .fa{color:#edba9e;vertical-align:middle;margin-left:8px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table{border-collapse:collapse}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table tr td{border-bottom:1px solid #e5e6e6;border-right:1px solid #e5e6e6;padding:30px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table tr td:last-of-type{border-right:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table tr:last-child td{border-bottom:none}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p{background-repeat:no-repeat;background-size:15px auto;background-position:0 6px;margin:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p.features-full{padding-left:30px;background-image:url(../images/about/icon-full.svg)}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p.features-none{padding-left:30px;background-image:url(../images/about/icon-none.svg)}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table table p.features-partial{padding-left:30px;background-position:-3px 0;background-size:23px auto;background-image:url(../images/about/icon-partial.svg)}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table .wp-mail-smtp-admin-about-section-hero-main{padding:0}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table .wp-mail-smtp-admin-about-section-hero-main h3{padding:30px 30px 30px 60px}.wp-mail-smtp-page-about .wp-mail-smtp-admin-about-section-table .wp-mail-smtp-admin-about-section-hero-main .wp-mail-smtp-admin-column-33:first-child h3{padding:30px} \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/css/smtp-admin.min.css b/plugins/wp-mail-smtp/assets/css/smtp-admin.min.css new file mode 100644 index 0000000..5893853 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/smtp-admin.min.css @@ -0,0 +1 @@ +#wpcontent{padding-left:0 !important;position:relative}@media(max-width: 600px){#wpcontent{padding-top:46px}}@media(max-width: 600px){#wpbody{padding-top:0}}@-webkit-keyframes wp-mail-smtp-fade-in-stop-out{0%,100%{opacity:0}35%{opacity:1}65%{opacity:1}}@keyframes wp-mail-smtp-fade-in-stop-out{0%,100%{opacity:0}35%{opacity:1}65%{opacity:1}}.wp-mail-smtp-text-blue{color:#056aab}.wp-mail-smtp-text-italic{font-style:italic}body.wp-mail-smtp-admin-page-body div.jconfirm *,body.wp-mail-smtp-admin-page-body div.jconfirm *::before,body.wp-mail-smtp-admin-page-body div.jconfirm *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-bg{background-color:rgba(114,119,124,.75);opacity:1}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box{padding:30px;border-radius:6px;box-shadow:0 3px 6px rgba(0,0,0,.15);border-top-width:4px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,.4);top:8px;right:8px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover{color:rgba(0,0,0,.8)}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c{margin:0 0 15px 0;padding:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin:0 0 30px;-webkit-transition:none;transition:none;-webkit-transform:none !important;-ms-transform:none !important;transform:none !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty,body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i:empty{display:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title{display:block;color:#2c3337;font-weight:500;font-size:24px;line-height:29px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content-pane{display:block;margin-bottom:30px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content{margin-bottom:0;overflow:inherit}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content{font-size:16px;color:#2c3337;line-height:1.4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p{margin:0 0 20px;font-size:16px;line-height:1.5}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p:last-of-type{margin:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p.large{font-size:18px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content p.small{font-size:14px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content .wp-mail-smtp-debug-event-preview p{font-size:14px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content .wp-mail-smtp-btn{font-weight:600;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s;padding:10px 20px;outline:none;display:inline-block;font-size:14px;line-height:1.4;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;min-height:1em;-webkit-tap-highlight-color:rgba(0,0,0,0);border:0;background-image:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-content .wp-mail-smtp-btn.with-loader{padding:12px 12px 7px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons{padding:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button{transition:.2s;box-shadow:none;margin:0 10px 0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button:hover{box-shadow:inset 0 0 0 100px rgba(0,0,0,.1)}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-confirm{color:#fff;outline:none;border:1px solid #e27730;background-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-cancel{color:#777;outline:none;background:#f8f8f8;border:1px solid #ccc}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button,body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-default{color:#666}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-hide{display:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-block{display:block;text-align:center;width:100%;margin:0 0 10px 0 !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box div.jconfirm-buttons button.btn-normal-case{text-transform:none !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-green{border-color:#00a32a}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-green div.jconfirm-buttons button.btn-confirm{background-color:#00a32a;border-color:#00a32a}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-orange{border-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-orange div.jconfirm-buttons button.btn-confirm{background-color:#e27730;border-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-red{border-color:#d63638}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-red div.jconfirm-buttons button.btn-confirm{background-color:#d63638;border-color:#d63638}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-blue{border-color:#3582c4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.jconfirm-type-blue div.jconfirm-buttons button.btn-confirm{background-color:#3582c4;border-color:#3582c4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading{border-top-color:#fff !important;height:160px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading .jconfirm-title-c{display:block !important;position:relative;z-index:4}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading .jconfirm-title-c .jconfirm-icon-c{display:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading:before{z-index:2}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.loading:after{content:"";position:absolute;left:50%;top:68%;margin-left:-20px;height:40px;width:40px;border:solid 6px rgba(0,0,0,0);border-bottom-color:#e27730;opacity:1;z-index:3}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal{padding:30px 30px 15px;border-top:none}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-title-c{margin:0 0 26px 0;padding:0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-title-c .jconfirm-icon-c{margin-bottom:20px;color:#c4c4c4 !important}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-title-c .jconfirm-icon-c svg{height:35px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-content-pane{margin-bottom:25px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal div.jconfirm-buttons button.btn-confirm{background-color:#e27730;border-color:#e27730}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note{text-align:center;margin:45px 0 0}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note p{background-color:#fcf9e8;margin:0 -30px;padding:24px 60px 20px;font-size:15px;color:#4d4d4d;position:relative}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note p:after{content:url(../images/font-awesome/check-circle-solid-green.svg);width:40px;height:40px;background-color:#fff;border-radius:50%;padding:5px 6px;position:absolute;top:-20px;right:50%;margin-right:-18px}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note span{font-weight:600;color:#00a32a}body.wp-mail-smtp-admin-page-body div.jconfirm .jconfirm-box.wp-mail-smtp-upgrade-mailer-education-modal .discount-note a{color:#aaa;display:block;margin-top:12px}@media screen and (max-width: 1023px){#wp-mail-smtp-notice-bar{display:none !important}}#wp-mail-smtp-notice-bar{max-height:35px;position:relative;margin-bottom:-3px;transition:all .3s ease-out;overflow:hidden}#wp-mail-smtp-notice-bar.out{max-height:3px}#wp-mail-smtp-notice-bar .wp-mail-smtp-notice-bar-container{background-color:#fcf9e8;border-top:3px solid #e27730;color:#3a3a56;text-align:center;padding:7px}#wp-mail-smtp-notice-bar a{color:#e27730;font-weight:700}#wp-mail-smtp-notice-bar a:hover{color:#b85a1b}#wp-mail-smtp-notice-bar strong{color:#008a20;font-weight:700}#wp-mail-smtp-notice-bar .dismiss{position:absolute;top:0;right:0;border:none;padding:5px;margin-top:4px;background:0 0;color:#72777c;cursor:pointer}#wp-mail-smtp-notice-bar .dismiss:before{background:0 0;color:#72777c;content:"";display:block;font:normal 20px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased}#screen-meta-links .screen-meta-toggle{position:absolute;right:20px;top:auto}#wp-mail-smtp .wp-mail-smtp-product-education__row{border-bottom:1px solid #e4e4e4;padding:25px 0 5px;font-size:14px;line-height:1.3;max-width:1005px}#wp-mail-smtp .wp-mail-smtp-product-education__row>*:last-child{border-bottom:none !important}#wp-mail-smtp .wp-mail-smtp-product-education__row--inactive{opacity:.5;pointer-events:none}#wp-mail-smtp .wp-mail-smtp-product-education__row--full-width{max-width:unset}#wp-mail-smtp .wp-mail-smtp-product-education__row--no-border{border-bottom:none !important}#wp-mail-smtp .wp-mail-smtp-product-education__row--no-padding{padding:0 !important}#wp-mail-smtp .wp-mail-smtp-product-education__row:first-of-type{padding-top:10px}#wp-mail-smtp .wp-mail-smtp-product-education__row:last-of-type+.wp-mail-smtp-btn-upgrade{margin-top:25px}#wp-mail-smtp .wp-mail-smtp-product-education__heading{display:flex;align-items:center;margin-top:0;margin-bottom:10px;font-size:20px;line-height:24px;color:#2c3337}#wp-mail-smtp .wp-mail-smtp-product-education__heading:after{content:"";margin-left:10px;background-image:url("../images/pro-badge-small.svg");background-size:contain;background-repeat:no-repeat;width:35px;height:16px}#wp-mail-smtp .wp-mail-smtp-product-education__description{margin-top:0;margin-bottom:20px;color:#50575e;font-size:14px;line-height:1.5em}#wp-mail-smtp .wp-mail-smtp-product-education__upgrade-btn--top{margin-bottom:20px}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots{display:flex;flex-wrap:wrap}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-product-education__screenshots{flex-direction:column}}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div{display:flex;flex-direction:column;align-items:center;margin:0 25px 20px 0}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div{margin-right:0;max-width:unset !important}}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div:last-child{margin-right:0}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div a{position:relative;margin-bottom:10px;background:#fff;border:5px solid #fff;box-sizing:border-box;border-radius:4px}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div a:after{content:"";position:absolute;opacity:0;height:100%;width:100%;top:0;left:0;background-color:rgba(68,68,68,.15);background-image:url("../../assets/images/icons/zoom.svg");background-repeat:no-repeat;background-position:center;background-size:50px;transition:all .3s}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div a:hover:after{opacity:1}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div img{display:block;max-width:100%;height:auto}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots>div span{font-size:14px;line-height:18px;text-align:center;color:#50575e}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots--two>div{max-width:487px}#wp-mail-smtp .wp-mail-smtp-product-education__screenshots--three>div{max-width:316px}#wp-mail-smtp .wp-mail-smtp-product-education__list>h4{margin-top:0;margin-bottom:20px;font-size:16px;line-height:20px;color:#2c3337}#wp-mail-smtp .wp-mail-smtp-product-education__list>div{display:flex;flex-wrap:wrap}#wp-mail-smtp .wp-mail-smtp-product-education__list ul{width:290px;margin:0 40px 20px 0}#wp-mail-smtp .wp-mail-smtp-product-education__list ul li{display:flex;align-items:center;font-size:14px;line-height:20px;margin-bottom:0;color:#50575e}#wp-mail-smtp .wp-mail-smtp-product-education__list ul li+li{margin-top:20px}#wp-mail-smtp .wp-mail-smtp-product-education__list ul li:before{content:url("../../assets/images/icons/check-solid.svg");width:16px;margin-right:10px}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section{margin-bottom:20px;cursor:not-allowed}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section:last-of-type{margin-bottom:20px}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section h5{clear:both;margin:0 0 10px 0;color:#2c3337;font-size:16px;font-weight:600}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section label{clear:both;float:left;margin:3px 0 3px 0}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section .wp-mail-smtp-date-selector{width:200px;cursor:pointer}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section .wp-mail-smtp-search-box-field{width:200px}#wp-mail-smtp #wp-mail-smtp-tools-export-email-logs-product-education section .wp-mail-smtp-search-box-term{width:300px}#wp-mail-smtp #wp-mail-smtp-email-controls-product-education .wp-mail-smtp-product-education__row--inactive{padding-top:20px;padding-bottom:0}#wp-mail-smtp #wp-mail-smtp-email-controls-product-education .wp-mail-smtp-setting-row:last-child{border-bottom:none}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu h2{display:inline-block;vertical-align:middle}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .badge{margin:0 0 2px 7px;vertical-align:middle;width:40px;height:17px}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-multisite{color:#9a9a9a}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-multisite p.desc{color:#bababa}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-multisite input[type=checkbox]:disabled{border-color:#aaa}#wp-mail-smtp .wp-mail-smtp-page-nw-product-edu .wp-mail-smtp-setting-row-no-setting{margin-top:30px}#wp-mail-smtp .wp-mail-smtp-upgrade-license-banner{border-radius:4px;border:1px solid #c3c4c7;background:#fff;padding:20px;max-width:796px;margin-top:20px}#wp-mail-smtp .wp-mail-smtp-upgrade-license-banner p{font-size:14px;margin:0 0 10px 0}#wp-mail-smtp .wp-mail-smtp-upgrade-license-banner strong{font-weight:500}#wp-mail-smtp .wp-mail-smtp-upgrade-license-banner__discount-line strong{font-weight:700;color:#008a20}#wp-mail-smtp .wp-mail-smtp-upgrade-license-banner__upgrade-btn{border-radius:4px;font-weight:400}#wp-mail-smtp .wp-mail-smtp-upgrade-banner{position:relative;padding:30px;border:1px solid #dadadf;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05)}#wp-mail-smtp .wp-mail-smtp-upgrade-banner p{margin:0}#wp-mail-smtp .wp-mail-smtp-upgrade-banner .wp-mail-smtp-pro-banner-dismiss{position:absolute;right:20px;top:20px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner .wp-mail-smtp-pro-banner-dismiss button{background:none;border:none;color:#a9a9a9;cursor:pointer;margin:0;padding:0}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__row+.wp-mail-smtp-upgrade-banner__row{margin-top:25px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__heading{color:#2c3338;font-size:17px;font-weight:500;line-height:1.5;margin:0 0 10px 0}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__subheading{margin:0;color:#646970;font-size:14px;font-weight:500;line-height:1.4}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__subheading strong{color:#2c3338;font-weight:700}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__features{display:grid;grid-template-columns:fit-content(480px) fit-content(480px);grid-column-gap:60px;grid-row-gap:12px;margin:16px 0 0}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-upgrade-banner__features{grid-template-columns:1fr}}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__features li{position:relative;margin:0;padding-left:16px;font-size:13px;line-height:1.5}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__features li:before{position:absolute;content:"";top:3px;left:0;background-image:url("../../assets/images/icons/check.svg");background-size:contain;background-repeat:no-repeat;background-position:center;width:10px;height:10px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__features li h5{font-size:13px;margin:0 0 4px 0;color:#2c3338;font-weight:700}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__features li p{margin:0;color:#50575e;font-weight:400}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__upgrade-btn{font-size:16px;font-weight:500;padding:13px 19px;border-radius:4px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__discount-line{display:flex;align-items:center;color:#646970;line-height:1.4;margin-top:8px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__discount-line img{margin-right:7px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner__discount-line strong{color:#008a20;font-weight:600}#wp-mail-smtp .wp-mail-smtp-upgrade-banner .wp-mail-smtp-product-education__screenshots{gap:25px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner .wp-mail-smtp-product-education__screenshots>div{margin:0;max-width:365px}#wp-mail-smtp .wp-mail-smtp-upgrade-banner .wp-mail-smtp-product-education__screenshots>div a{border-color:#dcdcde}#wp-mail-smtp .wp-mail-smtp-upgrade-banner .wp-mail-smtp-product-education__screenshots>div span{color:#646970}#wp-mail-smtp .wp-mail-smtp-sendlayer-education{display:flex;align-items:center;justify-content:space-between;position:relative;border-radius:4px;border:1px solid #dadadf;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.05);overflow:hidden;margin-bottom:30px}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__content{flex:1;padding:24px 30px;display:flex;flex-direction:column;gap:24px}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__text{display:flex;flex-direction:column;gap:10px}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__heading{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:500;color:#1d2327}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__heading svg{flex-shrink:0}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__desc{font-size:14px;line-height:1.4;color:#50575e;margin:0}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__desc strong{color:#056aab;font-weight:500}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__actions{display:flex;flex-direction:column;align-items:flex-start;gap:10px}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__btn{display:inline-flex;align-items:center;gap:12px}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__btn svg{flex-shrink:0}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__btn.wp-mail-smtp-btn-loading svg{display:none}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__connect-badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;background-color:#f0f0f1;border-radius:53px;white-space:nowrap;font-size:12px;line-height:1.4;color:#50575e;opacity:.9}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__connect-badge svg{flex-shrink:0}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__illustration{flex-shrink:0;width:400px;align-self:stretch;overflow:hidden}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__illustration img{width:100%;height:100%;object-fit:cover}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__dismiss{position:absolute;top:6px;right:3px;background:none;border:none;color:#bdbdc3;cursor:pointer;padding:8px;line-height:1}#wp-mail-smtp .wp-mail-smtp-sendlayer-education__dismiss svg{display:block}@media(max-width: 960px){#wp-mail-smtp .wp-mail-smtp-sendlayer-education__illustration{display:none}}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-sendlayer-education__content{padding:20px}}.wp-mail-smtp-lite #wp-mail-smtp .wp-mail-smtp-page-reports .wp-mail-smtp-page-title .page-title{position:relative}.wp-mail-smtp-lite #wp-mail-smtp .wp-mail-smtp-page-reports .wp-mail-smtp-page-title .page-title:after{content:"";display:inline-block;margin-left:10px;background-image:url("../images/pro-badge-small.svg");background-size:contain;background-repeat:no-repeat;width:35px;height:16px}.wp-mail-smtp-lite #wp-mail-smtp #wp-mail-smtp-setting-row-gmail-one_click_setup_enabled-lite .wp-mail-smtp-toggle::after,.wp-mail-smtp-lite #wp-mail-smtp #wp-mail-smtp-setting-row-misc-rate_limit-lite .wp-mail-smtp-toggle::after{content:"";margin-left:10px;background-image:url("../images/pro-badge-small.svg");background-size:contain;background-repeat:no-repeat;width:35px;height:16px}.wp-mail-smtp-loading{animation:.65s linear infinite wp-mail-smtp-loading-spin}.wp-mail-smtp-loading-md{width:32px;height:32px}.wp-mail-smtp-loading-sm{width:16px;height:16px}.wp-mail-smtp-loading-spin{position:relative;color:rgba(0,0,0,0) !important;pointer-events:none}.wp-mail-smtp-loading-spin:after{position:absolute;box-sizing:border-box;animation:.65s linear infinite wp-mail-smtp-loading-spin;border:2px solid #fff;border-radius:50%;border-right-color:rgba(0,0,0,0) !important;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;top:50%;left:50%;width:16px;height:16px;margin-top:-8px;margin-left:-8px}@keyframes wp-mail-smtp-loading-spin{0%{transform:rotateZ(270deg)}100%{transform:rotateZ(630deg)}}#wp-mail-smtp-flyout{position:fixed;z-index:99999;transition:all .2s ease-in-out;right:40px;bottom:40px;opacity:1}@media(max-width: 959px){#wp-mail-smtp-flyout{display:none}}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head{display:block}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head:focus{box-shadow:none}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head figure{margin:0;border-radius:50%;border:3px solid #e27730;overflow:hidden;box-shadow:0 2px 20px rgba(0,0,0,.15);background-color:#fff;transition:all .2s ease-in-out}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head figure img{display:block;width:54px;height:54px;transition:all .2s ease-in-out}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head:hover figure{box-shadow:0 2px 30px rgba(0,0,0,.2)}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head .wp-mail-smtp-flyout-label{right:calc(100% + 15px);opacity:0;transform:translateY(-50%) scale(0);margin-right:-50px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-head:hover .wp-mail-smtp-flyout-label{opacity:1;transform:translateY(-50%) scale(1);margin-right:0}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-label{position:absolute;display:block;top:50%;right:calc(100% + 15px);transform:translateY(-50%);-moz-transform:translateY(-50%);-webkit-transform:translateY(-50%);color:#fff;background-color:#a7aaad;font-size:12px;white-space:nowrap;padding:6px 10px;height:auto !important;line-height:initial;transition:all .2s ease-out;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item{position:absolute;display:flex;left:10px;width:40px;height:40px;opacity:0;visibility:hidden;transition:all .2s ease-in-out;transform:scale(0);border-radius:50%;box-shadow:0px 2px 10px rgba(0,0,0,.15);background-color:#738e9e}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item img{margin:auto}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-0{bottom:75px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-1{bottom:130px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-2{bottom:185px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-3{bottom:240px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item.wp-mail-smtp-flyout-item-4{bottom:295px}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item:hover{background-color:#395360}#wp-mail-smtp-flyout .wp-mail-smtp-flyout-item:hover .wp-mail-smtp-flyout-label{background-color:#787c82}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item{opacity:1;visibility:visible;transform:scale(1)}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-head .wp-mail-smtp-flyout-label{display:none}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-head figure img{transform:rotate(-15deg) scale(1.17)}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-0{transition:transform .2s 0ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-1{transition:transform .2s 35ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-2{transition:transform .2s 70ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-3{transition:transform .2s 105ms,background-color .2s}#wp-mail-smtp-flyout.opened .wp-mail-smtp-flyout-item-4{transition:transform .2s 140ms,background-color .2s}#wp-mail-smtp-flyout.out{opacity:0;visibility:hidden}.wp-mail-smtp-tooltip{position:relative;display:inline-block;text-decoration:underline;text-decoration-style:dotted;cursor:help;color:#50575e;margin-top:15px !important}.wp-mail-smtp-tooltip-with-icon{margin-top:2px !important;margin-left:10px}.wp-mail-smtp-tooltip-with-icon .wp-mail-smtp-tooltip-text{bottom:130%}.wp-mail-smtp-tooltip-text{visibility:hidden;position:absolute;z-index:9999;width:360px;background-color:#2d4f60;color:#fff;text-align:center;padding:16px 20px;font-size:14px;border-radius:5px;bottom:100%;left:50%;margin-left:-180px}.wp-mail-smtp-tooltip-text::after{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:#2d4f60 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.wp-mail-smtp-tooltip-small-text{font-size:12px;line-height:140%;text-align:left}.wp-mail-smtp-tooltip-small-text code,.wp-mail-smtp-tooltip-small-text kbd{font-size:12px}.wp-mail-smtp-tooltip:hover .wp-mail-smtp-tooltip-text{visibility:visible}.wp-mail-smtp-page label.wp-mail-smtp-setting-label-with-tooltip .wp-mail-smtp-tooltip-with-icon{margin-left:0;position:relative;left:0;top:0;vertical-align:top}.wp-mail-smtp-page .wp-mail-smtp-tooltip-text a{color:#fff}.wp-mail-smtp-page .wp-mail-smtp-tooltip-text a:active,.wp-mail-smtp-page .wp-mail-smtp-tooltip-text a:hover{color:#fff}#wp-mail-smtp .wp-mail-smtp-conditional button{cursor:pointer}#wp-mail-smtp .wp-mail-smtp-conditional table{width:100%;max-width:740px;padding:0;margin:0;border-collapse:collapse;border-spacing:0;font-size:13px}#wp-mail-smtp .wp-mail-smtp-conditional table td{padding:0 10px 20px 0}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__row{display:flex;flex-direction:column}}#wp-mail-smtp .wp-mail-smtp-conditional__row input,#wp-mail-smtp .wp-mail-smtp-conditional__row select{width:100% !important;max-width:100%;margin:0;text-overflow:ellipsis}#wp-mail-smtp .wp-mail-smtp-conditional__property-col{width:23%}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__property-col{width:100%}}#wp-mail-smtp .wp-mail-smtp-conditional__operator-col{width:23%}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__operator-col{width:100%}}#wp-mail-smtp .wp-mail-smtp-conditional__value-col{width:42%}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-conditional__value-col{width:100%}}#wp-mail-smtp .wp-mail-smtp-conditional__value :disabled{background-color:#f1f1f1;cursor:not-allowed}#wp-mail-smtp .wp-mail-smtp-conditional__actions{display:flex;align-items:center;padding-right:0}#wp-mail-smtp .wp-mail-smtp-conditional__delete-rule{background-color:rgba(0,0,0,0);border:none;color:#999;margin:0 0 0 10px;padding:0;vertical-align:middle}#wp-mail-smtp .wp-mail-smtp-conditional__delete-rule:hover{color:#d63638}#wp-mail-smtp .wp-mail-smtp-conditional__group-delimiter{margin:0 0 20px;font-size:14px;font-style:italic;font-weight:400;line-height:17px;color:#646970}.wp-mail-smtp-toggle{vertical-align:middle;display:inline-flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.wp-mail-smtp-toggle__switch{position:relative;width:27px;height:17px;flex-shrink:0;cursor:pointer;background-color:#ccc;border-radius:10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wp-mail-smtp-toggle__switch:before{position:absolute;content:"";height:13px;width:13px;left:2px;top:2px;background-color:#fff;border-radius:50%;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wp-mail-smtp-toggle__label{display:none;margin-left:10px;font-weight:400;font-size:13px;line-height:15px;color:#50575e;text-transform:uppercase}.wp-mail-smtp-toggle__label--static{display:block;text-transform:none}.wp-mail-smtp-toggle input[type=checkbox]{position:absolute;top:auto;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;white-space:nowrap}.wp-mail-smtp-toggle input[type=checkbox]:not(:checked):hover+.wp-mail-smtp-toggle__switch,.wp-mail-smtp-toggle input[type=checkbox]:not(:checked):focus+.wp-mail-smtp-toggle__switch{box-shadow:0 0 0 1px #fff,0 0 0 3px #999;background-color:#999}.wp-mail-smtp-toggle input[type=checkbox]:not(:checked)~.wp-mail-smtp-toggle__label--unchecked{display:block}.wp-mail-smtp-toggle input[type=checkbox]:checked+.wp-mail-smtp-toggle__switch{background-color:#00a32a}.wp-mail-smtp-toggle input[type=checkbox]:checked+.wp-mail-smtp-toggle__switch:before{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}.wp-mail-smtp-toggle input[type=checkbox]:checked:hover+.wp-mail-smtp-toggle__switch,.wp-mail-smtp-toggle input[type=checkbox]:checked:focus+.wp-mail-smtp-toggle__switch{box-shadow:0 0 0 1px #fff,0 0 0 3px #00a32a}.wp-mail-smtp-toggle input[type=checkbox]:checked~.wp-mail-smtp-toggle__label--checked{display:block}.wp-mail-smtp-toggle input[type=checkbox]:disabled:hover+.wp-mail-smtp-toggle__switch,.wp-mail-smtp-toggle input[type=checkbox]:disabled:focus+.wp-mail-smtp-toggle__switch{box-shadow:none}.wp-mail-smtp-toggle input[type=checkbox]:disabled~*{opacity:.5;cursor:default}.wp-mail-smtp-admin-page-body #wpbody-content{padding-bottom:200px}@media(max-width: 782px){.wp-mail-smtp-admin-page-body #wpbody-content{padding-bottom:0 !important}}.wp-mail-smtp-admin-page-body #wpfooter a{color:#2171b1 !important}.wp-mail-smtp-admin-page-body #wpfooter a:hover,.wp-mail-smtp-admin-page-body #wpfooter a:active{color:#135e96 !important}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion{text-align:center;font-weight:400;font-size:13px;line-height:normal;color:#646970;padding:30px 0;margin-bottom:20px}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion p{font-weight:600}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links,.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social{display:flex;justify-content:center;align-items:center}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links{margin:10px 0;color:#646970}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links a{color:#04558a}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links a:hover{color:#04558a}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-links span{color:#c3c4c7;padding:0 7px}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social{gap:10px;margin:0}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social li{margin-bottom:0}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social li path{color:#646970}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social li:hover path{fill:#50575e}.wp-mail-smtp-admin-page-body #wpfooter .wp-mail-smtp-footer-promotion-social a{display:block;height:16px}.wp-mail-smtp-admin-page-body #wpfooter #footer-left{color:#50575e;font-size:13px;font-style:normal;font-weight:400;line-height:normal}.wp-mail-smtp-admin-page-body #wpfooter #footer-left strong{font-weight:600}#screen-meta-links,#screen-meta{display:none}#wp-mail-smtp-header-temp{position:absolute;margin:0;top:-1px;left:20px;right:0;z-index:99}#wp-mail-smtp-header{border-top:3px solid #e27730;padding:24px 20px}#wp-mail-smtp-header img{display:block;margin:0;max-width:242px}@media(max-width: 782px){#wp-mail-smtp-header img{max-width:200px}}.wp-mail-smtp-page{color:#2c3337}.wp-mail-smtp-page a{color:#2171b1}.wp-mail-smtp-page a:hover,.wp-mail-smtp-page a:active{color:#135e96}#wp-mail-smtp{margin:0}#wp-mail-smtp .wp-mail-smtp-hide{display:none}#wp-mail-smtp .wp-mail-smtp-page-title{min-height:58px;background-color:#fff;font-size:14px;margin:0 0 20px 0;padding:0 20px}#wp-mail-smtp .wp-mail-smtp-page-title a.tab{border-bottom:3px solid #fff;box-shadow:none;color:#666;display:inline-block;margin-right:30px;padding:20px 0 17px 0;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-title a.tab.active{border-color:#e27730}#wp-mail-smtp .wp-mail-smtp-page-title a.tab:hover{border-color:#999}#wp-mail-smtp .wp-mail-smtp-page-title a.action{color:#fff;font-weight:600;margin:14px 0 14px 10px;line-height:28px;min-height:30px;vertical-align:top}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-page-title a.action{margin-left:0}}#wp-mail-smtp .wp-mail-smtp-page-title .page-title{background-color:#fff;display:inline-block;font-size:23px;margin:0;padding:20px 20px 20px 0}#wp-mail-smtp .wp-mail-smtp-page-content{padding:0 20px}#wp-mail-smtp .wp-mail-smtp-page-content *,#wp-mail-smtp .wp-mail-smtp-page-content *::before,#wp-mail-smtp .wp-mail-smtp-page-content *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-clear:before{content:" ";display:table}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-clear:after{clear:both;content:" ";display:table}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row{border-bottom:1px solid #e4e4e4;padding:30px 0;font-size:14px;line-height:1.3}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row:first-of-type{padding-top:10px !important}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row{padding:20px 0}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.inactive{display:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row .wp-mail-smtp-setting-mid-row-sep{background:#e4e4e4;height:1px;border:0;margin:15px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading{padding:20px 0 10px;border-bottom:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading.no-desc h2,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading.no-desc h4{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading.wp-mail-smtp-section-heading--has-divider{padding:20px 0 30px;border-bottom:1px solid #e4e4e4}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading .wp-mail-smtp-setting-field{margin:0;max-width:1005px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.section-heading .desc{font-style:normal}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox input[type=checkbox]{float:left;margin:1px 0 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox input[type=checkbox]+label{margin:0 0 0 8px;vertical-align:baseline}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox .desc{margin:0 0 0 30px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-checkbox input[type=checkbox]+label+.desc{margin:8px 0 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-text .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-password .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-number .wp-mail-smtp-setting-label,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-email .wp-mail-smtp-setting-label{padding-top:8px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-select .wp-mail-smtp-setting-label{padding-top:8px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-radio .wp-mail-smtp-setting-field input[type=radio]{margin:-3px 10px 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-radio .wp-mail-smtp-setting-field label{margin-right:30px;display:inline-block}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-no-border{border-bottom:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-no-padding{padding:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-license_key .wp-mail-smtp-setting-field p:first-child{margin-top:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer{padding-bottom:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer{display:inline-block;width:140px;margin-right:12px;margin-bottom:12px;position:relative}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer .wp-mail-smtp-mailer-image{background:#fff;text-align:center;border:2px solid #e5e5e5;border-radius:4px;cursor:pointer;height:76px;position:relative;margin-bottom:10px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer .wp-mail-smtp-mailer-image.is-recommended{background-image:url(../images/recommended.svg);background-repeat:no-repeat;background-size:60%;background-position:top right -2px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer .wp-mail-smtp-mailer-image img{max-width:80%;max-height:40px;display:block;position:relative;top:50%;left:50%;transform:translate(-50%, -50%);opacity:.6;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;transition:all .2s ease-in-out}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer.wp-mail-smtp-mailer-smtp .wp-mail-smtp-mailer-image img{max-height:30px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer.active .wp-mail-smtp-mailer-image{border-color:#e27730}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer.active .wp-mail-smtp-mailer-image img{opacity:1}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer:hover .wp-mail-smtp-mailer-image{border-color:#ccc}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-mailer .wp-mail-smtp-mailers .wp-mail-smtp-mailer:hover .wp-mail-smtp-mailer-image img{opacity:1}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert{padding-top:20px;padding-bottom:25px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-row{border:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading{margin-bottom:25px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading h3{margin-bottom:10px;font-weight:500;font-size:18px;line-height:22px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading .notice{margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .section-heading .notice p{margin:6.5px 0;font-size:13px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-row{padding:0 !important}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-row+.wp-mail-smtp-setting-row{margin-top:20px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .wp-mail-smtp-setting-label label{font-weight:500}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .dashicons-trash{position:relative;top:6px;color:#a7aaad;cursor:pointer;transition:.2s}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-alert .dashicons-trash:hover{color:#d63638}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-twilio_sms .wp-mail-smtp-setting-row-alert-connection-options{position:relative}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-twilio_sms .wp-mail-smtp-setting-row-alert-connection-options+.wp-mail-smtp-setting-row-alert-connection-options:before{content:"";display:block;max-width:605px;height:1px;margin-bottom:20px;background-color:#dcdcde}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-whatsapp .wp-mail-smtp-setting-row-alert-connection-options{position:relative}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-whatsapp .wp-mail-smtp-setting-row-alert-connection-options+.wp-mail-smtp-setting-row-alert-connection-options:before{content:"";display:block;max-width:605px;height:1px;margin-bottom:20px;background-color:#dcdcde}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-whatsapp .wp-mail-smtp-setting-row-alert-connection-options .wp-mail-smtp-setting-row:first-child .wp-mail-smtp-setting-field{position:relative}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row#wp-mail-smtp-setting-row-alerts-whatsapp .wp-mail-smtp-setting-row-alert-connection-options .wp-mail-smtp-setting-row:first-child .wp-mail-smtp-setting-field .js-wp-mail-smtp-setting-alert-remove-connection{position:absolute;top:8px;left:415px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-sendlayer-quick-connect-from-email .wp-mail-smtp-sendlayer-from-email-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-sendlayer-quick-connect-from-email .wp-mail-smtp-sendlayer-from-email-wrap input[type=text]{max-width:165px;margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-sendlayer-quick-connect-from-email .wp-mail-smtp-sendlayer-from-email-domain{font-size:15px;color:#3a3a56}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row.wp-mail-smtp-setting-row-sendlayer-quick-connect-from-email .desc{max-width:462px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h2,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h4{color:#2c3337;font-size:20px;font-weight:600;margin:0 0 6px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h2{margin-bottom:15px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h3{color:#2c3337;font-size:24px;font-weight:600;margin:0 0 20px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row h5{color:#2c3337;font-size:16px;font-weight:600;margin:0 0 20px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p{margin:12px 0 0;font-size:14px;line-height:1.5em}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p:first-of-type{margin:8px 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.desc{margin:10px 0 0;font-style:italic;color:#50575e}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.desc+.desc{font-style:normal}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.buttonned{margin-top:30px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice{margin:5px 0 15px;box-sizing:border-box;background:#fff;border-left:4px solid rgba(0,0,0,0);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-error{border-color:#d63638;margin-bottom:5px;padding:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-info{border-color:#2171b1;margin-bottom:5px;padding:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice.inline-edu-notice{border-color:#809eb0;line-height:1.5em;padding:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice a.wp-mail-smtp-mailer-notice-dismiss{float:right;color:#999da1;margin:0 0 10px 10px;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row p.inline-notice a.wp-mail-smtp-mailer-notice-dismiss:hover{color:#666a6e}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row ul{margin:8px 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row ul.list li{margin-left:20px;list-style-type:disc}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list th{padding:5px 5px 5px 0;text-align:left}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.email{padding-right:2em}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.status{width:100px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a{border-bottom:1px solid;display:inline-block;margin-right:5px;text-decoration:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]{color:#d63638}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete]:hover,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete]:active,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=delete]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]:hover,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]:active,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row table.actions-list td.actions a[class*=error]:focus{color:#8a1c1d}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select{background-color:#fff;border:1px solid #8d8f95;border-radius:4px;box-shadow:none;color:#2c3337;display:inline-block;vertical-align:middle;padding:7px 12px;margin:0 10px 0 0;width:400px;min-height:36px;line-height:1.3}@media(max-width: 959px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select{width:300px}}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select{width:100%;max-width:unset;margin-right:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]~.wp-mail-smtp-btn,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select~button,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select~.wp-mail-smtp-btn{margin-top:8px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password][readonly],#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select[readonly]{background-color:#f9f9f9}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password].small-text,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select.small-text{width:75px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select:focus{border:1px solid #016aab;box-shadow:0 0 0 1px #016aab;outline:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=text]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=email]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=number]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=password]:disabled,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row select:disabled{opacity:.6}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=checkbox]:focus,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row input[type=radio]:focus{border:1px solid #016aab;box-shadow:0 0 0 1px #016aab;outline:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row .wp-mail-smtp-dashicons-yes-alt-green.wp-mail-smtp-animate{-webkit-animation:wp-mail-smtp-fade-in-stop-out 1s linear;animation:wp-mail-smtp-fade-in-stop-out 1s linear}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-row .wp-mail-smtp-dashicons-yes-alt-green.wp-mail-smtp-success{color:#00a32a}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group{border-bottom:1px solid #e4e4e4;padding:0 0 30px}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group{padding:0 0 20px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group:first-of-type{padding-top:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group .wp-mail-smtp-setting-row{border:none;padding:30px 0 0 !important}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-group .wp-mail-smtp-setting-row{padding:20px 0 0}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-label{display:block;float:left;width:205px;padding:0 20px 0 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-label-with-tooltip{display:flex}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-label{float:none;width:100%;padding-bottom:15px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-label label{display:block;font-weight:600}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field{display:block;margin:0 0 0 205px;max-width:800px}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field{margin:0}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field hr{margin:20px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-field-row{display:flex;flex-wrap:wrap}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-field-row>.wp-mail-smtp-btn+.wp-mail-smtp-btn{margin-left:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-status-label{display:inline-flex;align-items:center;font-size:12px;padding:4px 8px;border-radius:4px;background-color:#fff4cd;color:#bd8600}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-status-label.wp-mail-smtp-setting-status-label-approved{background-color:#cefad4;color:#008a20}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-status-label.wp-mail-smtp-setting-status-label-not-found,#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-status-label.wp-mail-smtp-setting-status-label-rejected{background-color:#ffe2e4;color:#d63638}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-setting-status-label img{margin-left:4px;height:12px;width:auto}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-whatsapp-recheck-status{display:inline-flex;align-items:center;padding:7px;margin-left:5px;margin-right:5px;text-decoration:none;color:#2271b1;font-size:12px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-whatsapp-recheck-status img{margin-left:4px;margin-right:4px;height:12px;width:auto}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-whatsapp-recheck-status:hover{color:#135e96}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-whatsapp-recheck-status:focus{outline:none;box-shadow:none}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-setting-field .wp-mail-smtp-whatsapp-recheck-status.loading img{animation:wp-mail-smtp-spin 2s linear infinite}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-submit{margin:0;padding:25px 0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-submit .help-text{margin-left:10px;vertical-align:middle}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option .wp-mail-smtp-setting-row.section-heading{padding:20px 0 !important}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option.wp-mail-smtp-mailer-option-sendlayer .wp-mail-smtp-setting-row.section-heading{padding-bottom:0 !important}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option.wp-mail-smtp-mailer-option-sendlayer .wp-mail-smtp-sendlayer-connect-btn{display:inline-flex;align-items:center;gap:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option.wp-mail-smtp-mailer-option-sendlayer .wp-mail-smtp-sendlayer-connect-badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;background-color:#fff;border-radius:53px;white-space:nowrap;font-size:12px;line-height:1.4;color:#50575e;opacity:.9}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option.wp-mail-smtp-mailer-option-sendlayer .wp-mail-smtp-sendlayer-connect-badge svg{flex-shrink:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option.wp-mail-smtp-mailer-option-sendlayer .wp-mail-smtp-sendlayer-domain-value{display:flex;align-items:center;gap:10px;min-height:36px;margin-top:0 !important}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option.wp-mail-smtp-mailer-option-sendlayer .wp-mail-smtp-sendlayer-change-domain{text-decoration:underline}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option.wp-mail-smtp-mailer-option-sendlayer .wp-mail-smtp-setting-row-sendlayer-domain .desc{max-width:510px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-mailer-option blockquote{background:#e5e5e5;border-radius:4px;color:#666;font-size:14px;margin:20px 0;padding:15px;max-width:1005px;width:100%}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row{display:flex;align-items:center}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row{flex-direction:column;align-items:flex-start}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row__info{margin-left:30px}@media(max-width: 781px){#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options .wp-mail-smtp-connected-row__info{margin-left:0;margin-top:10px}}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options p.inline-notice{margin-top:10px}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options p.inline-notice:first-child{margin-top:0}#wp-mail-smtp .wp-mail-smtp-page-content .wp-mail-smtp-mailer-options p.inline-notice:last-child{margin-bottom:0}#wp-mail-smtp .wp-mail-smtp-page-content.wp-mail-smtp-page-general p{margin:0}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px;padding:1px 12px}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-success{border-left-color:#00a32a}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-warning{border-left-color:#ffb900}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-error{border-left-color:#d63638}#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline.notice-info{border-left-color:#00a0d2}#wp-mail-smtp .wp-mail-smtp-page-content .notice p,#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline p,#wp-mail-smtp .wp-mail-smtp-page-content .notice p:first-of-type,#wp-mail-smtp .wp-mail-smtp-page-content .notice-inline p:first-of-type{margin:.5em 0;padding:2px}#wp-mail-smtp .wp-mail-smtp-page-content pre{white-space:pre-line}#wp-mail-smtp .wp-mail-smtp-page-content.active{display:block}#wp-mail-smtp .wp-mail-smtp-page-content .connected-as{margin-left:30px}@media(max-width: 599px){#wp-mail-smtp .wp-mail-smtp-page-content .connected-as{display:block;margin-left:0;margin-top:8px}}#wp-mail-smtp .wp-mail-smtp-admin-columns>div[class*=-column-]{float:left}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-20{width:20%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-33{width:33.33333%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-40{width:40%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-50{width:50%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-60{width:60%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-80{width:80%}#wp-mail-smtp .wp-mail-smtp-admin-columns .wp-mail-smtp-admin-column-last{float:right !important}#wp-mail-smtp .wp-mail-smtp-admin-columns:after{content:"";display:table;clear:both}#wp-mail-smtp .notice blockquote{margin-left:0;padding:2px}#wp-mail-smtp .notice blockquote pre{margin:0;white-space:pre-line}#wp-mail-smtp #wp-mail-smtp-reset-filter{clear:both;margin:20px 0;padding:10px;font-size:15px;text-align:center;background:#fff;border:1px solid #ccd0d4;box-shadow:0 1px 1px rgba(0,0,0,.04)}#wp-mail-smtp #wp-mail-smtp-reset-filter a{text-decoration:none}#wp-mail-smtp #wp-mail-smtp-reset-filter .reset{cursor:pointer;color:#a6a6a6;font-size:15px;line-height:18px;width:18px;height:18px}#wp-mail-smtp #wp-mail-smtp-reset-filter .reset:focus,#wp-mail-smtp #wp-mail-smtp-reset-filter .reset:hover{color:#d63638}@media(min-width: 783px){#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#event{width:130px}#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#type{width:80px}#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#initiator{width:20%}#wp-mail-smtp .wp-mail-smtp-tab-tools-debug-events th#created_at{width:200px}}#wp-mail-smtp .wp-mail-smtp-tab-misc #wp-mail-smtp-setting-row-rate_limit_periods input[type=number]{width:100px}#wp-mail-smtp .wp-mail-smtp-tab-misc #wp-mail-smtp-setting-row-uninstall .wp-mail-smtp-danger{font-weight:600;color:#d63638}@media(max-width: 782px){#wp-mail-smtp .wp-mail-smtp-filter-date{display:flex !important;flex-direction:column;align-items:flex-start;float:none;width:100%;padding-right:0;margin-bottom:10px;max-width:600px}}#wp-mail-smtp .wp-mail-smtp-filter-date__control{float:left;margin:0 5px 0 0;min-height:30px;background-color:#fff;vertical-align:middle;max-width:210px}@media(max-width: 782px){#wp-mail-smtp .wp-mail-smtp-filter-date__control{flex-grow:1;width:100%;max-width:none;min-height:40px;margin-right:0;margin-bottom:5px}}#wp-mail-smtp .wp-mail-smtp-filter-date__btn{margin:0;vertical-align:top}#wp-mail-smtp .wp-mail-smtp-sign-in-btn{display:inline-flex;align-items:center;background-color:#4285f4;border-radius:2px;box-shadow:0 2px 4px 0 rgba(0,0,0,.25);transition:all 300ms ease-in-out;text-decoration:none;cursor:pointer;color:#fff}#wp-mail-smtp .wp-mail-smtp-sign-in-btn:hover{box-shadow:0 0 3px 3px rgba(66,133,244,.3)}#wp-mail-smtp .wp-mail-smtp-sign-in-btn:active{background:#3367d6}#wp-mail-smtp .wp-mail-smtp-sign-in-btn--disabled{pointer-events:none;background-color:#d4d3d3;box-shadow:none;color:#7f7f7f}#wp-mail-smtp .wp-mail-smtp-sign-in-btn--disabled .wp-mail-smtp-sign-in-icon__border,#wp-mail-smtp .wp-mail-smtp-sign-in-btn--disabled .wp-mail-smtp-sign-in-icon__bg{fill:#d4d3d3}#wp-mail-smtp .wp-mail-smtp-sign-in-btn--disabled .wp-mail-smtp-sign-in-icon__symbol{fill:#7f7f7f}#wp-mail-smtp .wp-mail-smtp-sign-in-btn__icon{overflow:hidden;border-radius:2px}#wp-mail-smtp .wp-mail-smtp-sign-in-btn__icon svg{display:block;margin:-3px}#wp-mail-smtp .wp-mail-smtp-sign-in-btn__text{font-size:14px;font-weight:600;margin:0 10px}.wp-mail-smtp-btn{border:0;border-radius:3px;cursor:pointer;display:inline-block;margin:0;text-decoration:none;text-align:center;vertical-align:middle;white-space:nowrap;text-shadow:none;box-shadow:none;outline:none}.wp-mail-smtp-btn .dashicons{font-size:16px;width:16px;height:16px}.wp-mail-smtp-btn+.wp-mail-smtp-btn{margin-left:16px}.wp-mail-smtp-btn:disabled,.wp-mail-smtp-btn-disabled{opacity:.5;cursor:not-allowed}.wp-mail-smtp-btn-disabled{pointer-events:none}.wp-mail-smtp-btn-loading{color:rgba(0,0,0,0) !important;pointer-events:none;user-select:none;position:relative}.wp-mail-smtp-btn-loading svg{visibility:hidden}.wp-mail-smtp-btn-loading::after{content:"";box-sizing:border-box;animation:wp-mail-smtp-spin 500ms infinite linear;border:2px solid #fff;border-radius:32px;border-right-color:rgba(0,0,0,0) !important;border-top-color:rgba(0,0,0,0) !important;display:block;height:16px;width:16px;position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.wp-mail-smtp-btn.wp-mail-smtp-btn-md{font-size:14px;font-weight:500;padding:9px 15px;min-height:36px;line-height:16px;border-width:1px;border-style:solid}.wp-mail-smtp-btn.wp-mail-smtp-btn-lg{font-size:16px;font-weight:600;padding:16px 28px}.wp-mail-smtp-btn.wp-mail-smtp-btn-upgrade,.wp-mail-smtp-btn.wp-mail-smtp-btn-cta{font-size:16px;line-height:20px;font-weight:500;padding:14px 30px}.wp-mail-smtp-btn.wp-mail-smtp-btn-orange{background-color:#e27730;border-color:#e27730;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:focus{background-color:#b85a1b;border-color:#b85a1b;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-orange:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #b85a1b}.wp-mail-smtp-btn.wp-mail-smtp-btn-secondary{background-color:#056aab;border-color:#056aab;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-secondary:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-secondary:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-secondary:focus{background-color:#045b92;border-color:#045b92;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-secondary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #045b92}.wp-mail-smtp-btn.wp-mail-smtp-btn-red{background-color:#d63638;border-color:#d63638;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-red:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-red:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-red:focus{background-color:#b32d2e;border-color:#b32d2e;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-red:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #b32d2e}.wp-mail-smtp-btn.wp-mail-smtp-btn-grey{background-color:#f8f8f8;border-color:#999;color:#555}.wp-mail-smtp-btn.wp-mail-smtp-btn-grey:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-grey:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-grey:focus{background-color:#eee;border-color:#555;color:#444}.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey{background-color:#f5f5f5;border-color:#ccc;color:#666}.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-light-grey:focus{background-color:#eee;color:#444}.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish{background-color:#738e9e;border-color:#738e9e;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:hover,.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:active,.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:focus{background-color:#395360;border-color:#395360;color:#fff}.wp-mail-smtp-btn.wp-mail-smtp-btn-blueish:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #395360}a.wp-mail-smtp-btn.wp-mail-smtp-btn-md{line-height:16px}#wp-mail-smtp-domain-check-details h2{color:#2c3337;font-size:20px;line-height:24px;font-weight:600;margin:28px 0 23px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item{padding:25px 0;border-top:1px solid #e4e4e4;display:flex}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item:last-child{padding-bottom:0}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-icon{width:18px;height:16px;margin-right:10px}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content h3{text-transform:uppercase;font-weight:500;font-size:14px;line-height:17px;color:#2c3337;margin:0 0 4px 0}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content p{color:#50575e;font-size:14px;line-height:20px;margin:0 0 10px 0}#wp-mail-smtp-domain-check-details .wp-mail-smtp-domain-check-details-check-list-item-content p:last-of-type{margin-bottom:0}.wp-mail-smtp-tab-tools-test .wp-mail-smtp-setting-row.section-heading{margin-bottom:22px}.wp-mail-smtp-tab-tools-test .wp-mail-smtp-test-email-resend{padding-top:22px;margin-top:22px;border-top:1px solid #e4e4e4}.wp-mail-smtp-tab-tools-test .wp-mail-smtp-test-email-resend a{font-size:14px;outline:none;box-shadow:none}.wp-mail-smtp-tab-tools-test #email-test-success{margin-top:30px;text-align:center}.wp-mail-smtp-tab-tools-test #email-test-success svg{display:block;max-width:500px;width:100%;height:auto;margin:0 auto 22px}.wp-mail-smtp-tab-tools-test #email-test-success h2{margin-top:0;margin-bottom:10px;font-weight:500;font-size:24px;line-height:29px;color:#2c3337}.wp-mail-smtp-tab-tools-test #email-test-success p{margin-top:0;font-size:16px;line-height:24px;color:#50575e}.wp-mail-smtp-tab-tools-test #email-test-form .wp-mail-smtp-setting-row.section-heading{margin-bottom:0}.wp-mail-smtp-tab-tools-test #email-test-form .wp-mail-smtp-btn{min-width:95px}.wp-mail-smtp-tab-tools-test #email-test-form .wp-mail-smtp-loading{display:none;margin-bottom:-2px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug{margin-top:25px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug h2{margin:20px 0 10px;color:#2c3337;font-size:16px;line-height:20px;font-weight:600}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug p{margin:10px 0;color:#50575e;font-size:14px;line-height:20px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul{list-style-type:disc}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol{margin:10px 0 10px 15px;color:#50575e;font-size:14px;line-height:20px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul li,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol li{margin:0 0 8px 0}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul li:last-of-type,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol li:last-of-type{margin:0}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ul li ul,.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug ol li ul{list-style-type:disc}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .dashicons-star-filled{color:#e27730;width:16px;height:16px;font-size:16px;vertical-align:text-top}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .price-off{color:#00a32a;font-weight:600}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-button-container{margin-bottom:22px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-toggle{float:left;margin-right:10px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy{min-width:122px}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy .error-log-copy-back{display:none}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy-copied .error-log-copy-front{display:none}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log-copy-copied .error-log-copy-back{display:inline}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log{padding-top:10px;padding-bottom:10px;display:none}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log.error-log-selection{display:block !important;opacity:0;height:0;padding:0;margin:0}.wp-mail-smtp-tab-tools-test #wp-mail-smtp-debug .error-log pre{margin:0}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content .wrap,.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content .subsubsub{margin:0}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content>h1{color:#2c3337;font-size:20px;font-weight:600;margin:0 0 15px 0;padding:0}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content>p{font-size:14px}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content h1.wp-heading-inline,.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content span.subtitle{display:none}.wp-mail-smtp-tab-tools-action-scheduler .wp-mail-smtp-page-content hr.wp-header-end{visibility:hidden;margin:-2px 0 0}.wp-mail-smtp-admin-page-body .lity{z-index:999999999;padding:20px}.wp-mail-smtp-admin-page-body .lity-close{margin:10px}.wp-mail-smtp-admin-page-body .lity-content{max-width:80vw;max-height:80vh}.wp-mail-smtp-admin-page-body .lity-content img{max-height:80vh !important;max-width:80vw !important}.wp-mail-smtp-debug-event-preview{text-align:left}.wp-mail-smtp-debug-event-preview h4{margin:15px 0;font-size:18px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-preview-subtitle{margin-bottom:30px;text-align:center}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-preview-subtitle span{color:#50575e;font-size:16px;line-height:22px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row{padding:20px 0;border-top:1px solid #ddd;display:flex;justify-content:flex-start;align-items:flex-start;font-size:16px;line-height:22px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-label{width:60px;margin-right:30px;font-weight:500}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-value{width:calc(100% - 90px)}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-initiator{display:inline-block;margin-bottom:5px}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row .debug-event-code{color:#50575e}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-row:last-child{border-bottom:1px solid #ddd}.wp-mail-smtp-debug-event-preview .wp-mail-smtp-debug-event-preview-content>div{word-break:break-word}[class^=wp-mail-smtp-dashicons]{display:inline-block;width:20px;height:20px}.wp-mail-smtp-dashicons-yes-alt-green{background-image:url("../images/icons/dashicons/dashicons-yes-alt-green.svg")}.wp-mail-smtp-dashicons-pdf-gray{background-image:url("../images/icons/dashicons/dashicons-pdf-grey.svg")}@keyframes wp-mail-smtp-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.wp-mail-smtp-notice__error-code,.jconfirm .wp-mail-smtp-error-code-box{display:flex;align-items:center;gap:8px;background:rgba(214,54,56,.06);border:1px solid rgba(214,54,56,.2);border-radius:4px;padding:8px 12px;margin-top:10px;max-width:fit-content;font-size:13px;color:#d63638;line-height:1.5}.wp-mail-smtp-notice__error-code code,.jconfirm .wp-mail-smtp-error-code-box code{font-family:monospace;font-size:13px;padding:0;background:none;color:inherit;border:none;box-shadow:none;overflow-x:auto;white-space:nowrap;min-width:0;scrollbar-width:none}.wp-mail-smtp-notice__error-code code::-webkit-scrollbar,.jconfirm .wp-mail-smtp-error-code-box code::-webkit-scrollbar{display:none}.wp-mail-smtp-notice__copy-btn,.jconfirm .wp-mail-smtp-error-code-box__copy{background:none;border:none;padding:0;cursor:pointer;color:#d63638;opacity:.6;transition:opacity .15s;flex-shrink:0;line-height:1}.wp-mail-smtp-notice__copy-btn:hover,.jconfirm .wp-mail-smtp-error-code-box__copy:hover{opacity:1}.wp-mail-smtp-notice__copy-btn svg,.jconfirm .wp-mail-smtp-error-code-box__copy svg{display:block;width:14px;height:14px}.jconfirm .wp-mail-smtp-error-code-box{justify-content:center}.wp-mail-smtp-notice__error-code{margin-bottom:10px} \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/css/smtp-smart-routing.min.css b/plugins/wp-mail-smtp/assets/css/smtp-smart-routing.min.css new file mode 100644 index 0000000..7e256a5 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/smtp-smart-routing.min.css @@ -0,0 +1 @@ +#wp-mail-smtp .wp-mail-smtp-smart-routing-header{padding-bottom:0 !important;border-bottom:none !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-header__heading{display:flex;align-items:center}#wp-mail-smtp .wp-mail-smtp-smart-routing-header__heading>a{margin-left:15px;font-weight:600;font-size:14px;line-height:22px}#wp-mail-smtp .wp-mail-smtp-smart-routing-notice-top{max-width:1000px;margin:10px 0 0 !important;border:1px solid #bbb}#wp-mail-smtp .wp-mail-smtp-smart-routing-notice-top--no-connections~.wp-mail-smtp-setting-row,#wp-mail-smtp .wp-mail-smtp-smart-routing-notice-top--no-connections~.wp-mail-smtp-submit{opacity:.5;pointer-events:none}#wp-mail-smtp .wp-mail-smtp-smart-routing-toggle .wp-mail-smtp-toggle__label{font-weight:500;font-size:14px;text-transform:capitalize}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes{max-width:1000px;margin-bottom:30px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route{background:#fff;box-shadow:0px 2px 4px rgba(0,0,0,.07);border-radius:6px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route+.wp-mail-smtp-smart-routing-route{margin-top:30px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header{display:flex;align-items:center;padding:20px;border-bottom:1px solid #f1f1f1}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header{flex-direction:column;align-items:flex-start}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>span{margin-right:10px;font-size:14px;line-height:17px;font-style:italic;color:#646970}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>span{margin-right:0;margin-top:10px}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>select{margin-right:10px !important}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__header>select{margin-right:0;margin-top:10px !important}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__connection{max-width:273px;width:100%}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__connection--invalid{border-color:#d63638 !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__actions{display:flex;align-items:center;margin-left:auto}@media(max-width: 600px){#wp-mail-smtp .wp-mail-smtp-smart-routing-route__actions{order:-1}}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order{margin-right:23px;white-space:nowrap}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order-btn{background-color:rgba(0,0,0,0);border:none;padding:0;vertical-align:middle;cursor:pointer}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order-btn--down{margin-left:13px;transform:rotate(-180deg)}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__order-btn img{display:block}#wp-mail-smtp .wp-mail-smtp-smart-routing-route:first-child .wp-mail-smtp-smart-routing-route__order-btn--up,#wp-mail-smtp .wp-mail-smtp-smart-routing-route:last-child .wp-mail-smtp-smart-routing-route__order-btn--down{opacity:.25;cursor:not-allowed;pointer-events:none}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__delete{background-color:rgba(0,0,0,0);border:none;color:#999;padding:0;vertical-align:middle;cursor:pointer}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__delete:hover:not(:disabled){color:#d63638}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__delete:disabled{opacity:.25;cursor:not-allowed}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__main{padding:20px}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__notice{margin-top:0 !important;margin-bottom:20px !important;border:1px solid #bbb}#wp-mail-smtp .wp-mail-smtp-smart-routing-route__notice p{margin:6px 0 !important;font-size:13px !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-route .wp-mail-smtp-btn-grey{font-weight:500}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note{display:flex;align-items:center;margin-bottom:5px;font-size:14px;line-height:20px;color:#646970}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note img{margin-right:10px}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note p{margin:0 !important}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note a{color:inherit}#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note a:hover,#wp-mail-smtp .wp-mail-smtp-smart-routing-routes-note a:active{color:#555} \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/css/vendor/flatpickr.min.css b/plugins/wp-mail-smtp/assets/css/vendor/flatpickr.min.css new file mode 100644 index 0000000..8920a67 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/vendor/flatpickr.min.css @@ -0,0 +1,13 @@ +.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* + /*rtl:begin:ignore*/left:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* + /*rtl:begin:ignore*/right:0/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}} diff --git a/plugins/wp-mail-smtp/assets/css/vendor/jquery-confirm.min.css b/plugins/wp-mail-smtp/assets/css/vendor/jquery-confirm.min.css new file mode 100644 index 0000000..b66d205 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/vendor/jquery-confirm.min.css @@ -0,0 +1,9 @@ +/*! + * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/) + * Author: boniface pereira + * Website: www.craftpip.com + * Contact: hey@craftpip.com + * + * Copyright 2013-2019 jquery-confirm + * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE) + */@-webkit-keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes jconfirm-spin{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}body[class*=jconfirm-no-scroll-]{overflow:hidden!important}.jconfirm{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999999;font-family:inherit;overflow:hidden}.jconfirm .jconfirm-bg{position:fixed;top:0;left:0;right:0;bottom:0;-webkit-transition:opacity .4s;transition:opacity .4s}.jconfirm .jconfirm-bg.jconfirm-bg-h{opacity:0!important}.jconfirm .jconfirm-scrollpane{-webkit-perspective:500px;perspective:500px;-webkit-perspective-origin:center;perspective-origin:center;display:table;width:100%;height:100%}.jconfirm .jconfirm-row{display:table-row;width:100%}.jconfirm .jconfirm-cell{display:table-cell;vertical-align:middle}.jconfirm .jconfirm-holder{max-height:100%;padding:50px 0}.jconfirm .jconfirm-box-container{-webkit-transition:-webkit-transform;transition:-webkit-transform;transition:transform;transition:transform,-webkit-transform}.jconfirm .jconfirm-box-container.jconfirm-no-transition{-webkit-transition:none!important;transition:none!important}.jconfirm .jconfirm-box{background:white;border-radius:4px;position:relative;outline:0;padding:15px 15px 0;overflow:hidden;margin-left:auto;margin-right:auto}@-webkit-keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@-webkit-keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@-webkit-keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@-webkit-keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@-webkit-keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@-webkit-keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}@keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}.jconfirm .jconfirm-box.jconfirm-type-animated{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.jconfirm .jconfirm-box.jconfirm-type-blue{border-top:solid 7px #3498db;-webkit-animation-name:type-blue;animation-name:type-blue}.jconfirm .jconfirm-box.jconfirm-type-green{border-top:solid 7px #2ecc71;-webkit-animation-name:type-green;animation-name:type-green}.jconfirm .jconfirm-box.jconfirm-type-red{border-top:solid 7px #e74c3c;-webkit-animation-name:type-red;animation-name:type-red}.jconfirm .jconfirm-box.jconfirm-type-orange{border-top:solid 7px #f1c40f;-webkit-animation-name:type-orange;animation-name:type-orange}.jconfirm .jconfirm-box.jconfirm-type-purple{border-top:solid 7px #9b59b6;-webkit-animation-name:type-purple;animation-name:type-purple}.jconfirm .jconfirm-box.jconfirm-type-dark{border-top:solid 7px #34495e;-webkit-animation-name:type-dark;animation-name:type-dark}.jconfirm .jconfirm-box.loading{height:120px}.jconfirm .jconfirm-box.loading:before{content:'';position:absolute;left:0;background:white;right:0;top:0;bottom:0;border-radius:10px;z-index:1}.jconfirm .jconfirm-box.loading:after{opacity:.6;content:'';height:30px;width:30px;border:solid 3px transparent;position:absolute;left:50%;margin-left:-15px;border-radius:50%;-webkit-animation:jconfirm-spin 1s infinite linear;animation:jconfirm-spin 1s infinite linear;border-bottom-color:dodgerblue;top:50%;margin-top:-15px;z-index:2}.jconfirm .jconfirm-box div.jconfirm-closeIcon{height:20px;width:20px;position:absolute;top:10px;right:10px;cursor:pointer;opacity:.6;text-align:center;font-size:27px!important;line-height:14px!important;display:none;z-index:1}.jconfirm .jconfirm-box div.jconfirm-closeIcon:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-closeIcon .fa{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .glyphicon{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .zmdi{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover{opacity:1}.jconfirm .jconfirm-box div.jconfirm-title-c{display:block;font-size:22px;line-height:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;padding-bottom:15px}.jconfirm .jconfirm-box div.jconfirm-title-c.jconfirm-hand{cursor:move}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{font-size:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i{vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:inherit;font-family:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-content-pane{margin-bottom:15px;height:auto;-webkit-transition:height .4s ease-in;transition:height .4s ease-in;display:inline-block;width:100%;position:relative;overflow-x:hidden;overflow-y:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane.no-scroll{overflow-y:hidden}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar{width:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-track{background:rgba(0,0,0,0.1)}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-thumb{background:#666;border-radius:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content img{max-width:100%;height:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content:empty{display:none}.jconfirm .jconfirm-box .jconfirm-buttons{padding-bottom:11px}.jconfirm .jconfirm-box .jconfirm-buttons>button{margin-bottom:4px;margin-left:2px;margin-right:2px}.jconfirm .jconfirm-box .jconfirm-buttons button{display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:4px;min-height:1em;-webkit-transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,background .1s ease,-webkit-box-shadow .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease,-webkit-box-shadow .1s ease;-webkit-tap-highlight-color:transparent;border:0;background-image:none}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue{background-color:#3498db;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue:hover{background-color:#2980b9;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green{background-color:#2ecc71;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green:hover{background-color:#27ae60;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red{background-color:#e74c3c;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red:hover{background-color:#c0392b;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange{background-color:#f1c40f;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange:hover{background-color:#f39c12;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default{background-color:#ecf0f1;color:#000;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover{background-color:#bdc3c7;color:#000}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple{background-color:#9b59b6;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple:hover{background-color:#8e44ad;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark{background-color:#34495e;color:#FFF;text-shadow:none;-webkit-transition:background .2s;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark:hover{background-color:#2c3e50;color:#FFF}.jconfirm .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c{color:#e74c3c!important}.jconfirm .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c{color:#3498db!important}.jconfirm .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c{color:#2ecc71!important}.jconfirm .jconfirm-box.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c{color:#9b59b6!important}.jconfirm .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c{color:#f1c40f!important}.jconfirm .jconfirm-box.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c{color:#34495e!important}.jconfirm .jconfirm-clear{clear:both}.jconfirm.jconfirm-rtl{direction:rtl}.jconfirm.jconfirm-rtl div.jconfirm-closeIcon{left:5px;right:auto}.jconfirm.jconfirm-white .jconfirm-bg,.jconfirm.jconfirm-light .jconfirm-bg{background-color:#444;opacity:.2}.jconfirm.jconfirm-white .jconfirm-box,.jconfirm.jconfirm-light .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#333}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#ddd}.jconfirm.jconfirm-white.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-black .jconfirm-bg,.jconfirm.jconfirm-dark .jconfirm-bg{background-color:darkslategray;opacity:.4}.jconfirm.jconfirm-black .jconfirm-box,.jconfirm.jconfirm-dark .jconfirm-box{-webkit-box-shadow:0 2px 6px rgba(0,0,0,0.2);box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;-webkit-transition:background .1s;transition:background .1s;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default{-webkit-box-shadow:none;box-shadow:none;color:#fff;background:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#666}.jconfirm.jconfirm-black.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-shake{-webkit-animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-glow{-webkit-animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-2px,0,0);transform:translate3d(-2px,0,0)}20%,80%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-8px,0,0);transform:translate3d(-8px,0,0)}40%,60%{-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}}@-webkit-keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}@keyframes glow{0%,100%{-webkit-box-shadow:0 0 0 red;box-shadow:0 0 0 red}50%{-webkit-box-shadow:0 0 30px red;box-shadow:0 0 30px red}}.jconfirm{-webkit-perspective:400px;perspective:400px}.jconfirm .jconfirm-box{opacity:1;-webkit-transition-property:all;transition-property:all}.jconfirm .jconfirm-box.jconfirm-animation-top,.jconfirm .jconfirm-box.jconfirm-animation-left,.jconfirm .jconfirm-box.jconfirm-animation-right,.jconfirm .jconfirm-box.jconfirm-animation-bottom,.jconfirm .jconfirm-box.jconfirm-animation-opacity,.jconfirm .jconfirm-box.jconfirm-animation-zoom,.jconfirm .jconfirm-box.jconfirm-animation-scale,.jconfirm .jconfirm-box.jconfirm-animation-none,.jconfirm .jconfirm-box.jconfirm-animation-rotate,.jconfirm .jconfirm-box.jconfirm-animation-rotatex,.jconfirm .jconfirm-box.jconfirm-animation-rotatey,.jconfirm .jconfirm-box.jconfirm-animation-scaley,.jconfirm .jconfirm-box.jconfirm-animation-scalex{opacity:0}.jconfirm .jconfirm-box.jconfirm-animation-rotate{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.jconfirm .jconfirm-box.jconfirm-animation-rotatex{-webkit-transform:rotateX(90deg);transform:rotateX(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatexr{-webkit-transform:rotateX(-90deg);transform:rotateX(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatey{-webkit-transform:rotatey(90deg);transform:rotatey(90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotateyr{-webkit-transform:rotatey(-90deg);transform:rotatey(-90deg);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scaley{-webkit-transform:scaley(1.5);transform:scaley(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scalex{-webkit-transform:scalex(1.5);transform:scalex(1.5);-webkit-transform-origin:center;transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-top{-webkit-transform:translate(0px,-100px);transform:translate(0px,-100px)}.jconfirm .jconfirm-box.jconfirm-animation-left{-webkit-transform:translate(-100px,0px);transform:translate(-100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-right{-webkit-transform:translate(100px,0px);transform:translate(100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-bottom{-webkit-transform:translate(0px,100px);transform:translate(0px,100px)}.jconfirm .jconfirm-box.jconfirm-animation-zoom{-webkit-transform:scale(1.2);transform:scale(1.2)}.jconfirm .jconfirm-box.jconfirm-animation-scale{-webkit-transform:scale(0.5);transform:scale(0.5)}.jconfirm .jconfirm-box.jconfirm-animation-none{visibility:hidden}.jconfirm.jconfirm-supervan .jconfirm-bg{background-color:rgba(54,70,93,0.95)}.jconfirm.jconfirm-supervan .jconfirm-box{background-color:transparent}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-blue{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-green{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-red{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-orange{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-purple{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-dark{border:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-closeIcon{color:white}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c{text-align:center;color:white;font-size:28px;font-weight:normal}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c>*{padding-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content-pane{margin-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content{text-align:center;color:white}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons button{font-size:16px;border-radius:2px;background:#303f53;text-shadow:none;border:0;color:white;padding:10px;min-width:100px}.jconfirm.jconfirm-supervan.jconfirm-rtl .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-material .jconfirm-bg{background-color:rgba(0,0,0,0.67)}.jconfirm.jconfirm-material .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 25px 10px 25px}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons{text-align:right}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-weight:500}.jconfirm.jconfirm-material.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-bootstrap .jconfirm-bg{background-color:rgba(0,0,0,0.21)}.jconfirm.jconfirm-bootstrap .jconfirm-box{background-color:white;-webkit-box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);border:solid 1px rgba(0,0,0,0.4);padding:15px 0 0}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold;padding-left:15px;padding-right:15px}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87);padding:0 15px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons{text-align:right;padding:10px;margin:-5px 0 0;border-top:solid 1px #ddd;overflow:hidden;border-radius:0 0 4px 4px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons button{font-weight:500}.jconfirm.jconfirm-bootstrap.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-modern .jconfirm-bg{background-color:slategray;opacity:.6}.jconfirm.jconfirm-modern .jconfirm-box{background-color:white;-webkit-box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 30px 15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87);top:15px;right:15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;font-weight:bold;text-align:center;margin-bottom:10px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{-webkit-transition:-webkit-transform .5s;transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s;-webkit-transform:scale(0);transform:scale(0);display:block;margin-right:0;margin-left:0;margin-bottom:10px;font-size:69px;color:#aaa}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content{text-align:center;font-size:15px;color:#777;margin-bottom:25px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button{font-weight:bold;text-transform:uppercase;-webkit-transition:background .1s;transition:background .1s;padding:10px 20px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button+button{margin-left:4px}.jconfirm.jconfirm-modern.jconfirm-open .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{-webkit-transform:scale(1);transform:scale(1)} \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/css/vendor/lity.min.css b/plugins/wp-mail-smtp/assets/css/vendor/lity.min.css new file mode 100644 index 0000000..aa25176 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/css/vendor/lity.min.css @@ -0,0 +1,3 @@ +/*! Lity - v2.4.1 - 2020-04-26 +* http://sorgalla.com/lity/ +* Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */.lity{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;white-space:nowrap;background:#0b0b0b;background:rgba(0,0,0,0.9);outline:none !important;opacity:0;-webkit-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}.lity.lity-opened{opacity:1}.lity.lity-closed{opacity:0}.lity *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lity-wrap{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;outline:none !important}.lity-wrap:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}.lity-loader{z-index:9991;color:#fff;position:absolute;top:50%;margin-top:-0.8em;width:100%;text-align:center;font-size:14px;font-family:Arial,Helvetica,sans-serif;opacity:0;-webkit-transition:opacity .3s ease;-o-transition:opacity .3s ease;transition:opacity .3s ease}.lity-loading .lity-loader{opacity:1}.lity-container{z-index:9992;position:relative;text-align:left;vertical-align:middle;display:inline-block;white-space:normal;max-width:100%;max-height:100%;outline:none !important}.lity-content{z-index:9993;width:100%;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;-o-transition:-o-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease, -webkit-transform .3s ease, -o-transform .3s ease}.lity-loading .lity-content,.lity-closed .lity-content{-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.lity-content:after{content:'';position:absolute;left:0;top:0;bottom:0;display:block;right:0;width:auto;height:auto;z-index:-1;-webkit-box-shadow:0 0 8px rgba(0,0,0,0.6);box-shadow:0 0 8px rgba(0,0,0,0.6)}.lity-close{z-index:9994;width:35px;height:35px;position:fixed;right:0;top:0;-webkit-appearance:none;cursor:pointer;text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;-webkit-box-shadow:none;box-shadow:none}.lity-close::-moz-focus-inner{border:0;padding:0}.lity-close:hover,.lity-close:focus,.lity-close:active,.lity-close:visited{text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;-webkit-box-shadow:none;box-shadow:none}.lity-close:active{top:1px}.lity-image img{max-width:100%;display:block;line-height:0;border:0}.lity-iframe .lity-container,.lity-youtube .lity-container,.lity-vimeo .lity-container,.lity-facebookvideo .lity-container,.lity-googlemaps .lity-container{width:100%;max-width:964px}.lity-iframe-container{width:100%;height:0;padding-top:56.25%;overflow:auto;pointer-events:auto;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-overflow-scrolling:touch}.lity-iframe-container iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;-webkit-box-shadow:0 0 8px rgba(0,0,0,0.6);box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}.lity-hide{display:none} \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/about/affiliatewp.png b/plugins/wp-mail-smtp/assets/images/about/affiliatewp.png new file mode 100644 index 0000000..cbd0d3c Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/affiliatewp.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/duplicator-icon-large.png b/plugins/wp-mail-smtp/assets/images/about/duplicator-icon-large.png new file mode 100644 index 0000000..3add72c Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/duplicator-icon-large.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/edd.png b/plugins/wp-mail-smtp/assets/images/about/edd.png new file mode 100644 index 0000000..cc33aa2 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/edd.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/icon-full.svg b/plugins/wp-mail-smtp/assets/images/about/icon-full.svg new file mode 100644 index 0000000..6d5d611 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/about/icon-full.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/about/icon-none.svg b/plugins/wp-mail-smtp/assets/images/about/icon-none.svg new file mode 100644 index 0000000..43efd27 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/about/icon-none.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/about/icon-partial.svg b/plugins/wp-mail-smtp/assets/images/about/icon-partial.svg new file mode 100644 index 0000000..fde33ea --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/about/icon-partial.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-aioseo.png b/plugins/wp-mail-smtp/assets/images/about/plugin-aioseo.png new file mode 100644 index 0000000..7785f67 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-aioseo.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-charitable.png b/plugins/wp-mail-smtp/assets/images/about/plugin-charitable.png new file mode 100644 index 0000000..c85adc9 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-charitable.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-mi.png b/plugins/wp-mail-smtp/assets/images/about/plugin-mi.png new file mode 100644 index 0000000..613d6ee Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-mi.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-om.png b/plugins/wp-mail-smtp/assets/images/about/plugin-om.png new file mode 100644 index 0000000..11004c5 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-om.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-pushengage.png b/plugins/wp-mail-smtp/assets/images/about/plugin-pushengage.png new file mode 100644 index 0000000..15ce746 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-pushengage.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-rp.png b/plugins/wp-mail-smtp/assets/images/about/plugin-rp.png new file mode 100644 index 0000000..7a07569 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-rp.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-seedprod.png b/plugins/wp-mail-smtp/assets/images/about/plugin-seedprod.png new file mode 100644 index 0000000..615191f Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-seedprod.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-facebook-feeds.png b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-facebook-feeds.png new file mode 100644 index 0000000..eb0d419 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-facebook-feeds.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-instagram-feeds.png b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-instagram-feeds.png new file mode 100644 index 0000000..3d4532e Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-instagram-feeds.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-twitter-feeds.png b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-twitter-feeds.png new file mode 100644 index 0000000..9262097 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-twitter-feeds.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-youtube-feeds.png b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-youtube-feeds.png new file mode 100644 index 0000000..1b20fc6 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-smash-balloon-youtube-feeds.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-trustpulse.png b/plugins/wp-mail-smtp/assets/images/about/plugin-trustpulse.png new file mode 100644 index 0000000..cb762d6 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-trustpulse.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-wpcode.png b/plugins/wp-mail-smtp/assets/images/about/plugin-wpcode.png new file mode 100644 index 0000000..456134a Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-wpcode.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/plugin-wpf.png b/plugins/wp-mail-smtp/assets/images/about/plugin-wpf.png new file mode 100644 index 0000000..ef1490b Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/plugin-wpf.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/searchwp.png b/plugins/wp-mail-smtp/assets/images/about/searchwp.png new file mode 100644 index 0000000..4e8a2f5 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/searchwp.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/sugar-calendar.png b/plugins/wp-mail-smtp/assets/images/about/sugar-calendar.png new file mode 100644 index 0000000..6d0ae54 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/sugar-calendar.png differ diff --git a/plugins/wp-mail-smtp/assets/images/about/team.jpg b/plugins/wp-mail-smtp/assets/images/about/team.jpg new file mode 100644 index 0000000..4659ff6 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/team.jpg differ diff --git a/plugins/wp-mail-smtp/assets/images/about/wp-simple-pay.png b/plugins/wp-mail-smtp/assets/images/about/wp-simple-pay.png new file mode 100644 index 0000000..b752526 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/about/wp-simple-pay.png differ diff --git a/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-01.png b/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-01.png new file mode 100644 index 0000000..c77705b Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-01.png differ diff --git a/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-02.png b/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-02.png new file mode 100644 index 0000000..72346b8 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/additional-connections/screenshot-02.png differ diff --git a/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-01.png b/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-01.png new file mode 100644 index 0000000..f740bab Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-01.png differ diff --git a/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-02.png b/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-02.png new file mode 100644 index 0000000..96caf31 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/additional-connections/thumbnail-02.png differ diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/error-icon.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/error-icon.svg new file mode 100644 index 0000000..12fe2e9 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/error-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/delivered.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/delivered.svg new file mode 100644 index 0000000..5497049 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/delivered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/sent.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/sent.svg new file mode 100644 index 0000000..af29125 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/sent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/total.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/total.svg new file mode 100644 index 0000000..ff843f1 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/total.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/unsent.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/unsent.svg new file mode 100644 index 0000000..aaa1d5a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/smtp/unsent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/wp/delivered.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/delivered.svg new file mode 100644 index 0000000..ab90d5d --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/delivered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/wp/sent.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/sent.svg new file mode 100644 index 0000000..af29125 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/sent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/wp/total.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/total.svg new file mode 100644 index 0000000..b4bc091 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/total.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/wp/unsent.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/unsent.svg new file mode 100644 index 0000000..aaa1d5a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/wp/unsent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/dash-widget/yes-green.svg b/plugins/wp-mail-smtp/assets/images/dash-widget/yes-green.svg new file mode 100644 index 0000000..57f1302 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/dash-widget/yes-green.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/education/sendlayer-banner.svg b/plugins/wp-mail-smtp/assets/images/education/sendlayer-banner.svg new file mode 100644 index 0000000..fca66df --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/education/sendlayer-banner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-01.png b/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-01.png new file mode 100644 index 0000000..4a878e9 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-01.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-02.png b/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-02.png new file mode 100644 index 0000000..48c4aeb Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-02.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-03.png b/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-03.png new file mode 100644 index 0000000..320510c Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email-reports/screenshot-03.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-01.png b/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-01.png new file mode 100644 index 0000000..d0e3bf1 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-01.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-02.png b/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-02.png new file mode 100644 index 0000000..d2cf699 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-02.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-03.png b/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-03.png new file mode 100644 index 0000000..0daa8de Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email-reports/thumbnail-03.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email/icon-check.png b/plugins/wp-mail-smtp/assets/images/email/icon-check.png new file mode 100644 index 0000000..02e61da Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email/icon-check.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email/illustration-success.svg b/plugins/wp-mail-smtp/assets/images/email/illustration-success.svg new file mode 100644 index 0000000..783f52e --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/email/illustration-success.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/email/signature.png b/plugins/wp-mail-smtp/assets/images/email/signature.png new file mode 100644 index 0000000..f8fff31 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email/signature.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp-whitelabel.png b/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp-whitelabel.png new file mode 100644 index 0000000..9ce76ad Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp-whitelabel.png differ diff --git a/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp.png b/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp.png new file mode 100644 index 0000000..6a45253 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/email/wp-mail-smtp.png differ diff --git a/plugins/wp-mail-smtp/assets/images/flyout-menu/facebook.svg b/plugins/wp-mail-smtp/assets/images/flyout-menu/facebook.svg new file mode 100644 index 0000000..7409529 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/flyout-menu/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/flyout-menu/life-ring.svg b/plugins/wp-mail-smtp/assets/images/flyout-menu/life-ring.svg new file mode 100644 index 0000000..21aa971 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/flyout-menu/life-ring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/flyout-menu/lightbulb.svg b/plugins/wp-mail-smtp/assets/images/flyout-menu/lightbulb.svg new file mode 100644 index 0000000..42a2884 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/flyout-menu/lightbulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/flyout-menu/mascot.svg b/plugins/wp-mail-smtp/assets/images/flyout-menu/mascot.svg new file mode 100644 index 0000000..6d9e8a0 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/flyout-menu/mascot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/flyout-menu/star.svg b/plugins/wp-mail-smtp/assets/images/flyout-menu/star.svg new file mode 100644 index 0000000..85bf4f0 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/flyout-menu/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/arrow-rotate-right-purple.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/arrow-rotate-right-purple.svg new file mode 100644 index 0000000..c978648 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/arrow-rotate-right-purple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/cancel-red.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/cancel-red.svg new file mode 100644 index 0000000..a61ae98 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/cancel-red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-dark-green.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-dark-green.svg new file mode 100644 index 0000000..4fc508d --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-dark-green.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-solid-green.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-solid-green.svg new file mode 100644 index 0000000..6be5827 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/check-circle-solid-green.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/clock-orange.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/clock-orange.svg new file mode 100644 index 0000000..6236e6a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/clock-orange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-regular-red.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-regular-red.svg new file mode 100644 index 0000000..e59ade4 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-regular-red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-orange.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-orange.svg new file mode 100644 index 0000000..26e742d --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-orange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-red.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-red.svg new file mode 100644 index 0000000..8c9c155 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/exclamation-circle-solid-red.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle-blue.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle-blue.svg new file mode 100644 index 0000000..198fb61 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle-blue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle.svg b/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle.svg new file mode 100644 index 0000000..8c80048 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/font-awesome/info-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/arrow-up.svg b/plugins/wp-mail-smtp/assets/images/icons/arrow-up.svg new file mode 100644 index 0000000..cfe6b88 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/badge-percent.svg b/plugins/wp-mail-smtp/assets/images/icons/badge-percent.svg new file mode 100644 index 0000000..6a08dd3 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/badge-percent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/check-solid.svg b/plugins/wp-mail-smtp/assets/images/icons/check-solid.svg new file mode 100644 index 0000000..230004a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/check-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/check.svg b/plugins/wp-mail-smtp/assets/images/icons/check.svg new file mode 100644 index 0000000..d407cb8 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/close.svg b/plugins/wp-mail-smtp/assets/images/icons/close.svg new file mode 100644 index 0000000..4ea6d12 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-pdf-grey.svg b/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-pdf-grey.svg new file mode 100644 index 0000000..02d7f56 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-pdf-grey.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-yes-alt-green.svg b/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-yes-alt-green.svg new file mode 100644 index 0000000..c9bd25c --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/dashicons/dashicons-yes-alt-green.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/error.svg b/plugins/wp-mail-smtp/assets/images/icons/error.svg new file mode 100644 index 0000000..b084cd7 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/exclamation-circle.svg b/plugins/wp-mail-smtp/assets/images/icons/exclamation-circle.svg new file mode 100644 index 0000000..c0f2667 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/exclamation-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/lightbulb.svg b/plugins/wp-mail-smtp/assets/images/icons/lightbulb.svg new file mode 100644 index 0000000..46fb1eb --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/lightbulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/success.svg b/plugins/wp-mail-smtp/assets/images/icons/success.svg new file mode 100644 index 0000000..9bed367 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/success.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/warning.svg b/plugins/wp-mail-smtp/assets/images/icons/warning.svg new file mode 100644 index 0000000..abc20f8 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/icons/zoom.svg b/plugins/wp-mail-smtp/assets/images/icons/zoom.svg new file mode 100644 index 0000000..1389afd --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/icons/zoom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/loaders/loading-blue.svg b/plugins/wp-mail-smtp/assets/images/loaders/loading-blue.svg new file mode 100644 index 0000000..5519045 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/loaders/loading-blue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/loaders/loading-white.svg b/plugins/wp-mail-smtp/assets/images/loaders/loading-white.svg new file mode 100644 index 0000000..ae6fe14 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/loaders/loading-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/loaders/loading.svg b/plugins/wp-mail-smtp/assets/images/loaders/loading.svg new file mode 100644 index 0000000..8417832 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/loaders/loading.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/logo-whitelabel.svg b/plugins/wp-mail-smtp/assets/images/logo-whitelabel.svg new file mode 100644 index 0000000..db8375b --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/logo-whitelabel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/logo.svg b/plugins/wp-mail-smtp/assets/images/logo.svg new file mode 100644 index 0000000..1295c81 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/logs/archive-thumbnail.png b/plugins/wp-mail-smtp/assets/images/logs/archive-thumbnail.png new file mode 100644 index 0000000..459b016 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/logs/archive-thumbnail.png differ diff --git a/plugins/wp-mail-smtp/assets/images/logs/archive.png b/plugins/wp-mail-smtp/assets/images/logs/archive.png new file mode 100644 index 0000000..a3b024d Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/logs/archive.png differ diff --git a/plugins/wp-mail-smtp/assets/images/logs/single-thumbnail.png b/plugins/wp-mail-smtp/assets/images/logs/single-thumbnail.png new file mode 100644 index 0000000..231c421 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/logs/single-thumbnail.png differ diff --git a/plugins/wp-mail-smtp/assets/images/logs/single.png b/plugins/wp-mail-smtp/assets/images/logs/single.png new file mode 100644 index 0000000..215c956 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/logs/single.png differ diff --git a/plugins/wp-mail-smtp/assets/images/menu-icon.svg b/plugins/wp-mail-smtp/assets/images/menu-icon.svg new file mode 100644 index 0000000..a646b1a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/menu-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/pattie.svg b/plugins/wp-mail-smtp/assets/images/pattie.svg new file mode 100644 index 0000000..2966ee3 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/pattie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/pro-badge-small.svg b/plugins/wp-mail-smtp/assets/images/pro-badge-small.svg new file mode 100644 index 0000000..99e058a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/pro-badge-small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/pro-badge.svg b/plugins/wp-mail-smtp/assets/images/pro-badge.svg new file mode 100644 index 0000000..4e1ced2 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/pro-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/aws.svg b/plugins/wp-mail-smtp/assets/images/providers/aws.svg new file mode 100644 index 0000000..0338816 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/aws.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/brevo.svg b/plugins/wp-mail-smtp/assets/images/providers/brevo.svg new file mode 100644 index 0000000..473cf40 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/brevo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/elasticemail.svg b/plugins/wp-mail-smtp/assets/images/providers/elasticemail.svg new file mode 100644 index 0000000..96c1da4 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/elasticemail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/google.svg b/plugins/wp-mail-smtp/assets/images/providers/google.svg new file mode 100644 index 0000000..22150fc --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/google.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/mailersend.svg b/plugins/wp-mail-smtp/assets/images/providers/mailersend.svg new file mode 100644 index 0000000..f1e715e --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/mailersend.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/mailgun.svg b/plugins/wp-mail-smtp/assets/images/providers/mailgun.svg new file mode 100644 index 0000000..c76a86c --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/mailgun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/mailjet.svg b/plugins/wp-mail-smtp/assets/images/providers/mailjet.svg new file mode 100644 index 0000000..37ba916 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/mailjet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/mandrill.svg b/plugins/wp-mail-smtp/assets/images/providers/mandrill.svg new file mode 100644 index 0000000..690f0dd --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/mandrill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/microsoft.svg b/plugins/wp-mail-smtp/assets/images/providers/microsoft.svg new file mode 100644 index 0000000..1033de4 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/microsoft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/pepipost-smtp.png b/plugins/wp-mail-smtp/assets/images/providers/pepipost-smtp.png new file mode 100644 index 0000000..6f67bcd Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/providers/pepipost-smtp.png differ diff --git a/plugins/wp-mail-smtp/assets/images/providers/pepipost.png b/plugins/wp-mail-smtp/assets/images/providers/pepipost.png new file mode 100644 index 0000000..2ef2002 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/providers/pepipost.png differ diff --git a/plugins/wp-mail-smtp/assets/images/providers/php.svg b/plugins/wp-mail-smtp/assets/images/providers/php.svg new file mode 100644 index 0000000..e036c2a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/php.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/postmark.svg b/plugins/wp-mail-smtp/assets/images/providers/postmark.svg new file mode 100644 index 0000000..720dc8b --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/postmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/resend.svg b/plugins/wp-mail-smtp/assets/images/providers/resend.svg new file mode 100644 index 0000000..c9d7529 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/resend.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/sendgrid.svg b/plugins/wp-mail-smtp/assets/images/providers/sendgrid.svg new file mode 100644 index 0000000..194e8bc --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/sendgrid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/sendlayer.svg b/plugins/wp-mail-smtp/assets/images/providers/sendlayer.svg new file mode 100644 index 0000000..59f1413 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/sendlayer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/smtp-com.svg b/plugins/wp-mail-smtp/assets/images/providers/smtp-com.svg new file mode 100644 index 0000000..64b9351 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/smtp-com.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/smtp.svg b/plugins/wp-mail-smtp/assets/images/providers/smtp.svg new file mode 100644 index 0000000..770be9b --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/smtp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/smtp2go.svg b/plugins/wp-mail-smtp/assets/images/providers/smtp2go.svg new file mode 100644 index 0000000..993a604 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/smtp2go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/sparkpost.svg b/plugins/wp-mail-smtp/assets/images/providers/sparkpost.svg new file mode 100644 index 0000000..8039da5 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/sparkpost.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/providers/zoho.svg b/plugins/wp-mail-smtp/assets/images/providers/zoho.svg new file mode 100644 index 0000000..0bd65b4 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/providers/zoho.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/recommended.svg b/plugins/wp-mail-smtp/assets/images/recommended.svg new file mode 100644 index 0000000..a2c68d9 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/images/recommended.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-down.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-down.png new file mode 100644 index 0000000..f9bec5c Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-down.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-up.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-up.png new file mode 100644 index 0000000..b3638dc Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-arrow-up.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-check-gray.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-check-gray.png new file mode 100644 index 0000000..45179aa Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-check-gray.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-check.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-check.png new file mode 100644 index 0000000..1eaa675 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-check.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-click.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-click.png new file mode 100644 index 0000000..7370175 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-click.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-email.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-email.png new file mode 100644 index 0000000..e12acc1 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-email.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-error.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-error.png new file mode 100644 index 0000000..2291174 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-error.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/icon-open.png b/plugins/wp-mail-smtp/assets/images/reports/email/icon-open.png new file mode 100644 index 0000000..9f68a8a Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/icon-open.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png new file mode 100644 index 0000000..ad96fa2 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark-whitelabel.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark.png b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark.png new file mode 100644 index 0000000..13e704a Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-dark.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png new file mode 100644 index 0000000..bf10c53 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo-whitelabel.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo.png b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo.png new file mode 100644 index 0000000..8d135f1 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/email/wp-mail-smtp-logo.png differ diff --git a/plugins/wp-mail-smtp/assets/images/reports/icon-note.png b/plugins/wp-mail-smtp/assets/images/reports/icon-note.png new file mode 100644 index 0000000..f3f3242 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/reports/icon-note.png differ diff --git a/plugins/wp-mail-smtp/assets/images/wp-spinner.gif b/plugins/wp-mail-smtp/assets/images/wp-spinner.gif new file mode 100644 index 0000000..f4087c9 Binary files /dev/null and b/plugins/wp-mail-smtp/assets/images/wp-spinner.gif differ diff --git a/plugins/wp-mail-smtp/assets/js/connect.js b/plugins/wp-mail-smtp/assets/js/connect.js new file mode 100644 index 0000000..938c278 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/connect.js @@ -0,0 +1,178 @@ +/* globals wp_mail_smtp_connect */ + +/** + * Connect functionality - Upgrade plugin from Lite to Pro version. + * + * @since 2.6.0 + */ + +'use strict'; + +var WPMailSMTPConnect = window.WPMailSMTPConnect || ( function( document, window, $ ) { + + /** + * Elements reference. + * + * @since 2.6.0 + * + * @type {object} + */ + var el = { + $connectBtn: $( '#wp-mail-smtp-setting-upgrade-license-button' ), + $connectKey: $( '#wp-mail-smtp-setting-upgrade-license-key' ) + }; + + /** + * Public functions and properties. + * + * @since 2.6.0 + * + * @type {object} + */ + var app = { + + /** + * Start the engine. + * + * @since 2.6.0 + */ + init: function() { + + $( app.ready ); + }, + + /** + * Document ready. + * + * @since 2.6.0 + */ + ready: function() { + + app.events(); + }, + + /** + * Register JS events. + * + * @since 2.6.0 + */ + events: function() { + + app.connectBtnClick(); + }, + + /** + * Register connect button event. + * + * @since 2.6.0 + */ + connectBtnClick: function() { + + el.$connectBtn.on( 'click', function() { + app.gotoUpgradeUrl(); + } ); + }, + + /** + * Get the alert arguments in case of Pro already installed. + * + * @since 2.6.0 + * + * @param {object} res Ajax query result object. + * + * @returns {object} Alert arguments. + */ + proAlreadyInstalled: function( res ) { + + return { + title: wp_mail_smtp_connect.text.almost_done, + content: res.data.message, + icon: '">"+t.status+" "+t.statusText+" "+t.responseText,icon:'">' + successText + '
' ); + $plugin.find( 'span.status-label' ) + .removeClass( 'status-active status-inactive status-download' ) + .addClass( cssClass ) + .removeClass( 'button button-primary button-secondary disabled' ) + .text( statusText ); + $btn + .removeClass( 'status-active status-inactive status-download' ) + .removeClass( 'button button-primary button-secondary disabled' ) + .addClass( cssClass ).html( buttonText ); + } else { + isInstallSuccessful = false; + + if ( + res.hasOwnProperty( 'data' ) && + res.data.hasOwnProperty( 0 ) && + res.data[ 0 ].hasOwnProperty( 'code' ) + ) { + + // Specific server-returned error. + $plugin.find( '.actions' ).append( '
' + wp_mail_smtp_about.plugin_install_error + '
' ); + } else { + + // Generic error. + $plugin.find( '.actions' ).append( '
' + res.data + '
' ); + } + + $btn.html( wp_mail_smtp_about.plugin_download_btn ); + } + + if ( ! isInstallSuccessful ) { + $btn.removeClass( 'disabled' ); + } + $btn.removeClass( 'loading' ); + + // Automatically clear plugin messages after 3 seconds. + setTimeout( function() { + $( '.plugin-item .msg' ).remove(); + }, 3000 ); + + } ).fail( function( xhr ) { + console.log( xhr.responseText ); + } ); + } ); + } + }; + + // Provide access to public functions/properties. + return app; +}( document, window, jQuery ) ); + +// Initialize. +WPMailSMTP.Admin.About.init(); diff --git a/plugins/wp-mail-smtp/assets/js/smtp-about.min.js b/plugins/wp-mail-smtp/assets/js/smtp-about.min.js new file mode 100644 index 0000000..e8c8279 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/smtp-about.min.js @@ -0,0 +1 @@ +"use strict";var WPMailSMTP=window.WPMailSMTP||{};WPMailSMTP.Admin=WPMailSMTP.Admin||{},WPMailSMTP.Admin.About=WPMailSMTP.Admin.About||function(a,t,d){var i={init:function(){d(i.ready)},ready:function(){i.pageHolder=d(".wp-mail-smtp-page-about"),i.bindActions(),d(".wp-mail-smtp-page").trigger("WPMailSMTP.Admin.About.ready")},bindActions:function(){jQuery(".wp-mail-smtp-admin-about-plugins .plugin-item .details").matchHeight(),d(a).on("click",".wp-mail-smtp-admin-about-plugins .plugin-item .action-button .button",function(a){a.preventDefault();var i=d(this);if(i.hasClass("disabled")||i.hasClass("loading"))return!1;var s,n,l,e,o,u=i.closest(".plugin-item"),a=i.attr("data-plugin");if(i.addClass("loading disabled"),i.text(wp_mail_smtp_about.plugin_processing),i.hasClass("status-inactive"))s="about_plugin_activate",n="status-active button button-secondary disabled",l=wp_mail_smtp_about.plugin_active,e=wp_mail_smtp_about.plugin_activated;else{if(!i.hasClass("status-download"))return i.hasClass("status-open")?(t.open(i.attr("href"),"_blank").focus(),i.removeClass("loading disabled"),void i.text(wp_mail_smtp_about.plugin_visit)):void 0;s="about_plugin_install",n="status-active button disabled",l=wp_mail_smtp_about.plugin_active,e=wp_mail_smtp_about.plugin_activated}a={action:"wp_mail_smtp_ajax",task:s,nonce:wp_mail_smtp_about.nonce,plugin:a};d.post(wp_mail_smtp_about.ajax_url,a,function(a){var t;a.success?(t=!0,"about_plugin_install"===s?(i.attr("data-plugin",a.data.basename),o=a.data.msg,a.data.is_activated||(n="button",l=wp_mail_smtp_about.plugin_inactive,e=wp_mail_smtp_about.plugin_activate)):o=a.data,u.find(".actions").append('
'+o+"
"),u.find("span.status-label").removeClass("status-active status-inactive status-download").addClass(n).removeClass("button button-primary button-secondary disabled").text(l),i.removeClass("status-active status-inactive status-download").removeClass("button button-primary button-secondary disabled").addClass(n).html(e)):(t=!1,a.hasOwnProperty("data")&&a.data.hasOwnProperty(0)&&a.data[0].hasOwnProperty("code")?u.find(".actions").append('
'+wp_mail_smtp_about.plugin_install_error+"
"):u.find(".actions").append('
'+a.data+"
"),i.html(wp_mail_smtp_about.plugin_download_btn)),t||i.removeClass("disabled"),i.removeClass("loading"),setTimeout(function(){d(".plugin-item .msg").remove()},3e3)}).fail(function(a){console.log(a.responseText)})})}};return i}(document,window,jQuery),WPMailSMTP.Admin.About.init(); \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/js/smtp-admin-notices.js b/plugins/wp-mail-smtp/assets/js/smtp-admin-notices.js new file mode 100644 index 0000000..02a746e --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/smtp-admin-notices.js @@ -0,0 +1,118 @@ +/* global wp_mail_smtp_admin_notices, ajaxurl */ + +/** + * WP Mail SMTP Admin Notices. + * + * @since 4.4.0 + */ + +'use strict'; + +var WPMailSMTPAdminNotices = window.WPMailSMTPAdminNotices || ( function( document, window, $ ) { + + /** + * Public functions and properties. + * + * @since 4.4.0 + * + * @type {object} + */ + var app = { + + /** + * Start the engine. + * + * @since 4.4.0 + */ + init: function() { + + $( app.ready ); + }, + + /** + * Document ready. + * + * @since 4.4.0 + */ + ready: function() { + + app.events(); + }, + + /** + * Register JS events. + * + * @since 4.4.0 + */ + events: function() { + + $( '.wp-mail-smtp-notice.is-dismissible' ) + .on( 'click', '.notice-dismiss', app.dismiss ); + + $( '.wp-mail-smtp-notice__copy-btn' ).on( 'click', app.copyErrorCode ); + }, + + /** + * Copy error code to clipboard. + * + * @since 4.8.0 + */ + copyErrorCode: function() { + + var $btn = $( this ); + var code = $btn.siblings( 'code' ).text(); + + if ( navigator.clipboard ) { + navigator.clipboard.writeText( code ); + } + + $btn.find( '.wp-mail-smtp-notice__icon-copy' ).hide(); + $btn.find( '.wp-mail-smtp-notice__icon-check' ).show(); + + setTimeout( function() { + $btn.find( '.wp-mail-smtp-notice__icon-check' ).hide(); + $btn.find( '.wp-mail-smtp-notice__icon-copy' ).show(); + }, 2000 ); + }, + + /** + * Click on the dismiss notice button. + * + * @since 4.4.0 + * + * @param {object} event Event object. + */ + dismiss: function( event ) { + + var $notice = $( this ).closest( '.wp-mail-smtp-notice' ); + + // If notice key is not defined, we can't dismiss it permanently. + if ( $notice.data( 'notice' ) === undefined ) { + return; + } + + var $button = $( this ); + + $.ajax( { + url: ajaxurl, + dataType: 'json', + type: 'POST', + data: { + action: 'wp_mail_smtp_ajax', + nonce: wp_mail_smtp_admin_notices.nonce, + task: 'notice_dismiss', + notice: $notice.data( 'notice' ), + }, + beforeSend: function() { + $button.prop( 'disabled', true ); + }, + } ); + }, + }; + + return app; + +}( document, window, jQuery ) ); + +// Initialize. +WPMailSMTPAdminNotices.init(); diff --git a/plugins/wp-mail-smtp/assets/js/smtp-admin-notices.min.js b/plugins/wp-mail-smtp/assets/js/smtp-admin-notices.min.js new file mode 100644 index 0000000..fc119e5 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/smtp-admin-notices.min.js @@ -0,0 +1 @@ +"use strict";var WPMailSMTPAdminNotices=window.WPMailSMTPAdminNotices||function(o){var i={init:function(){o(i.ready)},ready:function(){i.events()},events:function(){o(".wp-mail-smtp-notice.is-dismissible").on("click",".notice-dismiss",i.dismiss),o(".wp-mail-smtp-notice__copy-btn").on("click",i.copyErrorCode)},copyErrorCode:function(){var i=o(this),n=i.siblings("code").text();navigator.clipboard&&navigator.clipboard.writeText(n),i.find(".wp-mail-smtp-notice__icon-copy").hide(),i.find(".wp-mail-smtp-notice__icon-check").show(),setTimeout(function(){i.find(".wp-mail-smtp-notice__icon-check").hide(),i.find(".wp-mail-smtp-notice__icon-copy").show()},2e3)},dismiss:function(i){var n,t=o(this).closest(".wp-mail-smtp-notice");void 0!==t.data("notice")&&(n=o(this),o.ajax({url:ajaxurl,dataType:"json",type:"POST",data:{action:"wp_mail_smtp_ajax",nonce:wp_mail_smtp_admin_notices.nonce,task:"notice_dismiss",notice:t.data("notice")},beforeSend:function(){n.prop("disabled",!0)}}))}};return i}((document,window,jQuery));WPMailSMTPAdminNotices.init(); \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/js/smtp-admin.js b/plugins/wp-mail-smtp/assets/js/smtp-admin.js new file mode 100644 index 0000000..98216c0 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/smtp-admin.js @@ -0,0 +1,796 @@ +/* globals wp_mail_smtp, jconfirm, ajaxurl */ +'use strict'; + +var WPMailSMTP = window.WPMailSMTP || {}; +WPMailSMTP.Admin = WPMailSMTP.Admin || {}; + +/** + * WP Mail SMTP Admin area module. + * + * @since 1.6.0 + */ +WPMailSMTP.Admin.Settings = WPMailSMTP.Admin.Settings || ( function( document, window, $ ) { + + /** + * Public functions and properties. + * + * @since 1.6.0 + * + * @type {object} + */ + var app = { + + /** + * State attribute showing if one of the plugin settings + * changed and was not yet saved. + * + * @since 1.9.0 + * + * @type {boolean} + */ + pluginSettingsChanged: false, + + /** + * Start the engine. DOM is not ready yet, use only to init something. + * + * @since 1.6.0 + */ + init: function() { + + // Do that when DOM is ready. + $( app.ready ); + }, + + /** + * DOM is fully loaded. + * + * @since 1.6.0 + */ + ready: function() { + + app.pageHolder = $( '.wp-mail-smtp-tab-settings' ); + + app.settingsForm = $( '.wp-mail-smtp-connection-settings-form' ); + + // If there are screen options we have to move them. + $( '#screen-meta-links, #screen-meta' ).prependTo( '#wp-mail-smtp-header-temp' ).show(); + + app.bindActions(); + app.cleanQueryParams( [ 'sendlayer_quick_connect_result', 'sendlayer_quick_connect_disconnect_result' ] ); + + app.setJQueryConfirmDefaults(); + + // Flyout Menu. + app.initFlyoutMenu(); + }, + + /** + * Process all generic actions/events, mostly custom that were fired by our API. + * + * @since 1.6.0 + */ + bindActions: function() { + + // Mailer selection. + $( '.wp-mail-smtp-mailer-image', app.settingsForm ).on( 'click', function() { + $( this ).parents( '.wp-mail-smtp-mailer' ).find( 'input' ).trigger( 'click' ); + } ); + + $( '.wp-mail-smtp-mailer input', app.settingsForm ).on( 'click', function() { + var $input = $( this ); + + if ( $input.prop( 'disabled' ) ) { + + // Educational Popup. + if ( $input.hasClass( 'educate' ) ) { + app.education.upgradeMailer( $input ); + } + + return false; + } + + // Deselect the current mailer. + $( '.wp-mail-smtp-mailer', app.settingsForm ).removeClass( 'active' ); + + // Select the correct one. + $( this ).parents( '.wp-mail-smtp-mailer' ).addClass( 'active' ); + + // Hide all mailers options and display for a currently clicked one. + $( '.wp-mail-smtp-mailer-option', app.settingsForm ).addClass( 'hidden' ).removeClass( 'active' ); + $( '.wp-mail-smtp-mailer-option-' + $( this ).val(), app.settingsForm ).addClass( 'active' ).removeClass( 'hidden' ); + } ); + + app.mailers.sendlayer.bindActions(); + app.mailers.smtp.bindActions(); + + // Dismiss Pro banner at the bottom of the page. + $( '#wp-mail-smtp-pro-banner-dismiss', app.pageHolder ).on( 'click', function() { + $.ajax( { + url: ajaxurl, + dataType: 'json', + type: 'POST', + data: { + action: 'wp_mail_smtp_ajax', + task: 'pro_banner_dismiss', + nonce: wp_mail_smtp.nonce + } + } ) + .always( function() { + $( '#wp-mail-smtp-pro-banner', app.pageHolder ).fadeOut( 'fast' ); + } ); + } ); + + // Dissmis educational notices for certain mailers. + $( '.js-wp-mail-smtp-mailer-notice-dismiss', app.settingsForm ).on( 'click', function( e ) { + e.preventDefault(); + + var $btn = $( this ), + $notice = $btn.parents( '.inline-notice' ); + + if ( $btn.hasClass( 'disabled' ) ) { + return false; + } + + $.ajax( { + url: ajaxurl, + dataType: 'json', + type: 'POST', + data: { + action: 'wp_mail_smtp_ajax', + nonce: wp_mail_smtp.nonce, + task: 'notice_dismiss', + notice: $notice.data( 'notice' ), + mailer: $notice.data( 'mailer' ) + }, + beforeSend: function() { + $btn.addClass( 'disabled' ); + } + } ) + .always( function() { + $notice.fadeOut( 'fast', function() { + $btn.removeClass( 'disabled' ); + } ); + } ); + } ); + + // Show/hide debug output. + $( '#wp-mail-smtp-debug .error-log-toggle' ).on( 'click', function( e ) { + e.preventDefault(); + + $( '#wp-mail-smtp-debug .error-log' ).slideToggle(); + } ); + + // Copy debug output to clipboard. + $( '#wp-mail-smtp-debug .error-log-copy' ).on( 'click', function( e ) { + e.preventDefault(); + + var $self = $( this ); + + // Get error log. + var $content = $( '#wp-mail-smtp-debug .error-log' ); + + // Copy to clipboard. + if ( ! $content.is( ':visible' ) ) { + $content.addClass( 'error-log-selection' ); + } + var range = document.createRange(); + range.selectNode( $content[0] ); + window.getSelection().removeAllRanges(); + window.getSelection().addRange( range ); + document.execCommand( 'Copy' ); + window.getSelection().removeAllRanges(); + $content.removeClass( 'error-log-selection' ); + + $self.addClass( 'error-log-copy-copied' ); + + setTimeout( + function() { + $self.removeClass( 'error-log-copy-copied' ); + }, + 1500 + ); + } ); + + // Remove mailer connection. + $( '.js-wp-mail-smtp-provider-remove', app.settingsForm ).on( 'click', function() { + return confirm( wp_mail_smtp.text_provider_remove ); + } ); + + // Copy input text to clipboard. + $( '.wp-mail-smtp-setting-copy', app.settingsForm ).on( 'click', function( e ) { + e.preventDefault(); + + var target = $( '#' + $( this ).data( 'source_id' ) ).get( 0 ); + + target.select(); + document.execCommand( 'Copy' ); + + var $buttonIcon = $( this ).find( '.dashicons' ); + + $buttonIcon + .removeClass( 'dashicons-admin-page' ) + .addClass( 'wp-mail-smtp-dashicons-yes-alt-green wp-mail-smtp-success wp-mail-smtp-animate' ); + + setTimeout( + function() { + $buttonIcon + .removeClass( 'wp-mail-smtp-dashicons-yes-alt-green wp-mail-smtp-success wp-mail-smtp-animate' ) + .addClass( 'dashicons-admin-page' ); + }, + 1000 + ); + } ); + + // Notice bar: click on the dissmiss button. + $( '#wp-mail-smtp-notice-bar' ).on( 'click', '.dismiss', function() { + var $notice = $( this ).closest( '#wp-mail-smtp-notice-bar' ); + + $notice.addClass( 'out' ); + setTimeout( + function() { + $notice.remove(); + }, + 300 + ); + + $.post( + ajaxurl, + { + action: 'wp_mail_smtp_notice_bar_dismiss', + nonce: wp_mail_smtp.nonce, + } + ); + } ); + + app.triggerExitNotice(); + app.beforeSaveChecks(); + + // Register change event to show/hide plugin supported settings for currently selected mailer. + $( '.js-wp-mail-smtp-setting-mailer-radio-input', app.settingsForm ).on( 'change', this.processMailerSettingsOnChange ); + + // Disable multiple click on the Email Test tab submit button and display a loader icon. + $( '.wp-mail-smtp-tab-tools-test #email-test-form' ).on( 'submit', function() { + var $button = $( this ).find( '.wp-mail-smtp-btn' ); + + $button.attr( 'disabled', true ); + $button.find( 'span' ).hide(); + $button.find( '.wp-mail-smtp-loading' ).show(); + } ); + + $( '#wp-mail-smtp-setting-gmail-one_click_setup_enabled-lite' ).on( 'click', function( e ) { + e.preventDefault(); + + app.education.gmailOneClickSetupUpgrade(); + } ); + + $( '#wp-mail-smtp-setting-misc-rate_limit-lite' ).on( 'click', function( e ) { + e.preventDefault(); + + app.education.rateLimitUpgrade(); + } ); + + // Obfuscated fields + $( '.wp-mail-smtp-btn[data-clear-field]' ).on( 'click', function( e ) { + var $button = $( this ); + var fieldId = $button.attr( 'data-clear-field' ); + var $field = $( `#${fieldId}` ); + + $field.prop( 'disabled', false ); + $field.attr( 'name', $field.attr( 'data-name' ) ); + $field.removeAttr( 'value' ); + $field.focus(); + $button.remove(); + } ); + + $( '.email_test_tab_removal_notice' ).on( 'click', '.notice-dismiss', function() { + var $button = $( this ); + + $.ajax( { + url: ajaxurl, + dataType: 'json', + type: 'POST', + data: { + action: 'wp_mail_smtp_ajax', + nonce: wp_mail_smtp.nonce, + task: 'email_test_tab_removal_notice_dismiss', + }, + beforeSend: function() { + $button.prop( 'disabled', true ); + }, + } ); + } ); + }, + + education: { + upgradeMailer: function( $input ) { + + var mailerName = $input.data( 'title' ).trim(); + + app.education.upgradeModal( + wp_mail_smtp.education.upgrade_title.replace( /%name%/g, mailerName ), + wp_mail_smtp.education.upgrade_content.replace( /%name%/g, mailerName ), + $input.val() + ); + }, + + gmailOneClickSetupUpgrade: function() { + + app.education.upgradeModal( + wp_mail_smtp.education.gmail.one_click_setup_upgrade_title, + wp_mail_smtp.education.gmail.one_click_setup_upgrade_content, + 'gmail-one-click-setup' + ); + }, + + rateLimitUpgrade: function() { + + app.education.upgradeModal( + wp_mail_smtp.education.rate_limit.upgrade_title, + wp_mail_smtp.education.rate_limit.upgrade_content, + 'rate-limit-setting' + ); + }, + + upgradeModal: function( title, content, upgradeUrlUtmContent ) { + + $.alert( { + backgroundDismiss: true, + escapeKey: true, + animationBounce: 1, + type: 'blue', + closeIcon: true, + title: title, + icon: '">
' + wp_mail_smtp.education.upgrade_icon_lock + '' + wp_mail_smtp.education.upgrade_bonus + wp_mail_smtp.education.upgrade_doc + '
' ); + this.$body.addClass( 'wp-mail-smtp-upgrade-mailer-education-modal' ); + }, + buttons: { + confirm: { + text: wp_mail_smtp.education.upgrade_button, + btnClass: 'btn-confirm', + keys: [ 'enter' ], + action: function() { + var appendChar = /(\?)/.test( wp_mail_smtp.education.upgrade_url ) ? '&' : '?', + upgradeURL = wp_mail_smtp.education.upgrade_url + appendChar + 'utm_content=' + encodeURIComponent( upgradeUrlUtmContent ); + + window.open( upgradeURL, '_blank' ); + } + } + } + } ); + } + }, + + /** + * Individual mailers specific js code. + * + * @since 1.6.0 + */ + mailers: { + sendlayer: { + + /** + * Show a SendLayer connect error modal with message and optional error code. + * + * @since 4.8.0 + * + * @param {string} message The error message to display. + * @param {string} errorCode The dot-notation error code (optional). + */ + showConnectError: function( message, errorCode ) { + + var content = '

' + $( '' ).text( message ).html() + '

'; + + if ( errorCode ) { + content += '
' + + '' + $( '' ).text( errorCode ).html() + '' + + '' + + '
'; + } + + $.alert( { + backgroundDismiss: true, + escapeKey: true, + animationBounce: 1, + type: 'red', + closeIcon: true, + icon: app.getModalIcon( 'times-circle-red' ), + title: wp_mail_smtp.sendlayer.error_title, + content: content, + boxWidth: '450px', + buttons: { + confirm: { + text: wp_mail_smtp.ok_text, + btnClass: 'wp-mail-smtp-btn wp-mail-smtp-btn-md', + keys: [ 'enter' ] + } + }, + onOpenBefore: function() { + this.$body.on( 'click', '.wp-mail-smtp-error-code-box__copy', function() { + var $btn = $( this ); + var code = $btn.siblings( 'code' ).text(); + + if ( navigator.clipboard ) { + navigator.clipboard.writeText( code ); + } + + $btn.find( '.wp-mail-smtp-error-code-box__icon-copy' ).hide(); + $btn.find( '.wp-mail-smtp-error-code-box__icon-check' ).show(); + + setTimeout( function() { + $btn.find( '.wp-mail-smtp-error-code-box__icon-check' ).hide(); + $btn.find( '.wp-mail-smtp-error-code-box__icon-copy' ).show(); + }, 2000 ); + } ); + } + } ); + }, + + /** + * Start the connect flow via AJAX and handle errors with the modal. + * + * @since 4.8.0 + * + * @param {object} connectArgs Extra arguments to pass to the connect endpoint (e.g. { utm_content: '...' }). + * @param {Function} onDone Callback when the request completes (success or error). + */ + doConnect: function( connectArgs, onDone ) { + + var self = this; + var returnUrl = $( '#wp-mail-smtp-sendlayer-quick-connect-return-url' ).val() || wp_mail_smtp.sendlayer.return_url; + var connectionId = $( '#wp-mail-smtp-sendlayer-quick-connect-connection-id' ).val() || ''; + + $.post( ajaxurl, { // eslint-disable-line camelcase + action: 'wp_mail_smtp_sendlayer_connect', + nonce: wp_mail_smtp.sendlayer.connect_nonce, + return_url: returnUrl, // eslint-disable-line camelcase + connection_id: connectionId, // eslint-disable-line camelcase + connect_args: connectArgs || {}, // eslint-disable-line camelcase + }, function( response ) { // eslint-disable-line complexity + if ( response.success && response.data.redirect_url ) { + window.location.href = response.data.redirect_url; + } else { + var message = response.data && response.data.message ? response.data.message : wp_mail_smtp.sendlayer.error_text; + var errorCode = response.data && response.data.error_code ? response.data.error_code : ''; + self.showConnectError( message, errorCode ); + if ( onDone ) { + onDone(); + } + } + } ).fail( function() { + self.showConnectError( wp_mail_smtp.sendlayer.server_error, 'plugin.init_connect.ajax_failed' ); + if ( onDone ) { + onDone(); + } + } ); + }, + + /** + * Bind SendLayer-specific UI actions. + * + * @since 4.8.0 + */ + bindActions: function() { + + var self = this; + + // Quick Connect button. + $( '#wp-mail-smtp-sendlayer-connect-btn' ).on( 'click', function( e ) { + e.preventDefault(); + + var $btn = $( this ); + $btn.addClass( 'wp-mail-smtp-btn-loading' ); + + self.doConnect( { utm_content: 'Plugin Settings - Quick Connect' }, function() { // eslint-disable-line camelcase + $btn.removeClass( 'wp-mail-smtp-btn-loading' ); + } ); + } ); + + // Change domain link (same flow as Quick Connect). + $( '#wp-mail-smtp-sendlayer-change-domain' ).on( 'click', function( e ) { + e.preventDefault(); + + var $link = $( this ); + var originalText = $link.text(); + $link.text( wp_mail_smtp.sendlayer.connecting_text ); + + self.doConnect( { utm_content: 'Plugin Settings - Quick Connect Change Domain' }, function() { // eslint-disable-line camelcase + $link.text( originalText ); + } ); + } ); + + // Show Quick Connect when API key is removed. + $( '.wp-mail-smtp-btn[data-clear-field="wp-mail-smtp-setting-sendlayer-api_key"]' ).on( 'click', function() { + $( '#wp-mail-smtp-setting-row-sendlayer-connect' ).show(); + } ); + + // Show API key field and remove the toggle link. + $( '#wp-mail-smtp-sendlayer-show-api-key' ).on( 'click', function( e ) { + e.preventDefault(); + $( this ).closest( '.wp-mail-smtp-setting-row' ).remove(); + $( '#wp-mail-smtp-setting-row-sendlayer-api_key' ).show(); + } ); + + // SendLayer education banner: Setup button (same flow as Quick Connect). + $( '#wp-mail-smtp-sendlayer-education-connect-btn' ).on( 'click', function( e ) { + e.preventDefault(); + + var $btn = $( this ); + $btn.addClass( 'wp-mail-smtp-btn-loading' ); + + self.doConnect( { utm_content: 'Plugin Settings - Quick Connect Education' }, function() { // eslint-disable-line camelcase + $btn.removeClass( 'wp-mail-smtp-btn-loading' ); + } ); + } ); + + // SendLayer education banner: Dismiss. + $( '.js-wp-mail-smtp-sendlayer-education-dismiss' ).on( 'click', function( e ) { + e.preventDefault(); + + var $banner = $( this ).closest( '.wp-mail-smtp-sendlayer-education' ); + + $banner.fadeOut( 200 ); + + $.post( ajaxurl, { + action: 'wp_mail_smtp_ajax', + task: 'notice_dismiss', + notice: 'sendlayer_education', + nonce: wp_mail_smtp.nonce, + } ); + } ); + } + }, + smtp: { + bindActions: function() { + + // Hide SMTP-specific user/pass when Auth disabled. + $( '#wp-mail-smtp-setting-smtp-auth' ).on( 'change', function() { + $( '#wp-mail-smtp-setting-row-smtp-user, #wp-mail-smtp-setting-row-smtp-pass' ).toggleClass( 'inactive' ); + } ); + + // Port default values based on encryption type. + $( '#wp-mail-smtp-setting-row-smtp-encryption input' ).on( 'change', function() { + + var $input = $( this ), + $smtpPort = $( '#wp-mail-smtp-setting-smtp-port', app.settingsForm ); + + if ( 'tls' === $input.val() ) { + $smtpPort.val( '587' ); + $( '#wp-mail-smtp-setting-row-smtp-autotls' ).addClass( 'inactive' ); + } else if ( 'ssl' === $input.val() ) { + $smtpPort.val( '465' ); + $( '#wp-mail-smtp-setting-row-smtp-autotls' ).removeClass( 'inactive' ); + } else { + $smtpPort.val( '25' ); + $( '#wp-mail-smtp-setting-row-smtp-autotls' ).removeClass( 'inactive' ); + } + } ); + } + } + }, + + /** + * Exit notice JS code when plugin settings are not saved. + * + * @since 1.9.0 + */ + triggerExitNotice: function() { + + var $settingPages = $( '.wp-mail-smtp-page-general' ); + + // Display an exit notice, if settings are not saved. + $( window ).on( 'beforeunload', function() { + if ( app.pluginSettingsChanged ) { + return wp_mail_smtp.text_settings_not_saved; + } + } ); + + // Set settings changed attribute, if any input was changed. + $( ':input:not( #wp-mail-smtp-setting-license-key, .wp-mail-smtp-not-form-input, #wp-mail-smtp-setting-gmail-one_click_setup_enabled, #wp-mail-smtp-setting-outlook-one_click_setup_enabled )', $settingPages ).on( 'change', function() { + app.pluginSettingsChanged = true; + } ); + + // Clear the settings changed attribute, if the settings are about to be saved. + $( 'form', $settingPages ).on( 'submit', function() { + app.pluginSettingsChanged = false; + } ); + }, + + /** + * Perform any checks before the settings are saved. + * + * Checks: + * - warn users if they try to save the settings with the default (PHP) mailer selected. + * + * @since 2.1.0 + */ + beforeSaveChecks: function() { + + app.settingsForm.on( 'submit', function() { + if ( $( '.wp-mail-smtp-mailer input:checked', app.settingsForm ).val() === 'mail' ) { + var $thisForm = $( this ); + + $.alert( { + backgroundDismiss: false, + escapeKey: false, + animationBounce: 1, + type: 'orange', + icon: '">
' + wp_mail_smtp.default_mailer_notice.icon_alt + ' 0; + + $mainSettingInGroup.toggle( + ! isQuickConnectActive && ( mailerSupportedSettings[ 'from_email' ] || mailerSupportedSettings[ 'from_email_force' ] ) + ); + + // Toggle quick connect From Email field and disable inputs when hidden + // to prevent split fields from being submitted for other mailers. + $quickConnectFromEmail.toggle( isQuickConnectActive ); + $quickConnectFromEmail.find( 'input' ).prop( 'disabled', ! isQuickConnectActive ); + + // Special case: "from name" (group settings). + $mainSettingInGroup = $( '.js-wp-mail-smtp-setting-from_name' ); + + $mainSettingInGroup.toggle( + mailerSupportedSettings['from_name'] || mailerSupportedSettings['from_name_force'] + ); + }, + + /** + * Remove transient query params from the URL without a page reload. + * + * Useful for cleaning up one-time result params after they have been + * read and rendered on the current page load. + * + * @since 4.8.0 + * + * @param {string[]} params List of query parameter names to remove. + */ + cleanQueryParams: function( params ) { + + try { + var url = new URL( window.location.href ); + var dirty = false; + + params.forEach( function( param ) { + if ( url.searchParams.has( param ) ) { + url.searchParams.delete( param ); + dirty = true; + } + } ); + + if ( dirty ) { + window.history.replaceState( {}, document.title, url.toString() ); + } + } catch ( e ) {} // eslint-disable-line no-empty + }, + + /** + * Set jQuery-Confirm default options. + * + * @since 2.9.0 + */ + setJQueryConfirmDefaults: function() { + + jconfirm.defaults = { + typeAnimated: false, + draggable: false, + animateFromElement: false, + theme: 'modern', + boxWidth: '400px', + useBootstrap: false + }; + }, + + /** + * Flyout Menu (quick links). + * + * @since 3.0.0 + */ + initFlyoutMenu: function() { + + // Flyout Menu Elements. + var $flyoutMenu = $( '#wp-mail-smtp-flyout' ); + + if ( $flyoutMenu.length === 0 ) { + return; + } + + var $head = $flyoutMenu.find( '.wp-mail-smtp-flyout-head' ); + + // Click on the menu head icon. + $head.on( 'click', function( e ) { + e.preventDefault(); + $flyoutMenu.toggleClass( 'opened' ); + } ); + + // Page elements and other values. + var $wpfooter = $( '#wpfooter' ); + + if ( $wpfooter.length === 0 ) { + return; + } + + var $overlap = $( + '.wp-mail-smtp-page-logs-archive, ' + + '.wp-mail-smtp-tab-tools-action-scheduler, ' + + '.wp-mail-smtp-page-reports, ' + + '.wp-mail-smtp-tab-tools-debug-events, ' + + '.wp-mail-smtp-tab-connections' + ); + + // Hide menu if scrolled down to the bottom of the page or overlap some critical controls. + $( window ).on( 'resize scroll', _.debounce( function() { + + var wpfooterTop = $wpfooter.offset().top, + wpfooterBottom = wpfooterTop + $wpfooter.height(), + overlapBottom = $overlap.length > 0 ? $overlap.offset().top + $overlap.height() + 85 : 0, + viewTop = $( window ).scrollTop(), + viewBottom = viewTop + $( window ).height(); + + if ( wpfooterBottom <= viewBottom && wpfooterTop >= viewTop && overlapBottom > viewBottom ) { + $flyoutMenu.addClass( 'out' ); + } else { + $flyoutMenu.removeClass( 'out' ); + } + }, 50 ) ); + + $( window ).trigger( 'scroll' ); + } + }; + + // Provide access to public functions/properties. + return app; +}( document, window, jQuery ) ); + +// Initialize. +WPMailSMTP.Admin.Settings.init(); diff --git a/plugins/wp-mail-smtp/assets/js/smtp-admin.min.js b/plugins/wp-mail-smtp/assets/js/smtp-admin.min.js new file mode 100644 index 0000000..26f3d02 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/smtp-admin.min.js @@ -0,0 +1 @@ +"use strict";var WPMailSMTP=window.WPMailSMTP||{};WPMailSMTP.Admin=WPMailSMTP.Admin||{},WPMailSMTP.Admin.Settings=WPMailSMTP.Admin.Settings||function(n,m,c){var s={pluginSettingsChanged:!1,init:function(){c(s.ready)},ready:function(){s.pageHolder=c(".wp-mail-smtp-tab-settings"),s.settingsForm=c(".wp-mail-smtp-connection-settings-form"),c("#screen-meta-links, #screen-meta").prependTo("#wp-mail-smtp-header-temp").show(),s.bindActions(),s.cleanQueryParams(["sendlayer_quick_connect_result","sendlayer_quick_connect_disconnect_result"]),s.setJQueryConfirmDefaults(),s.initFlyoutMenu()},bindActions:function(){c(".wp-mail-smtp-mailer-image",s.settingsForm).on("click",function(){c(this).parents(".wp-mail-smtp-mailer").find("input").trigger("click")}),c(".wp-mail-smtp-mailer input",s.settingsForm).on("click",function(){var t=c(this);if(t.prop("disabled"))return t.hasClass("educate")&&s.education.upgradeMailer(t),!1;c(".wp-mail-smtp-mailer",s.settingsForm).removeClass("active"),c(this).parents(".wp-mail-smtp-mailer").addClass("active"),c(".wp-mail-smtp-mailer-option",s.settingsForm).addClass("hidden").removeClass("active"),c(".wp-mail-smtp-mailer-option-"+c(this).val(),s.settingsForm).addClass("active").removeClass("hidden")}),s.mailers.sendlayer.bindActions(),s.mailers.smtp.bindActions(),c("#wp-mail-smtp-pro-banner-dismiss",s.pageHolder).on("click",function(){c.ajax({url:ajaxurl,dataType:"json",type:"POST",data:{action:"wp_mail_smtp_ajax",task:"pro_banner_dismiss",nonce:wp_mail_smtp.nonce}}).always(function(){c("#wp-mail-smtp-pro-banner",s.pageHolder).fadeOut("fast")})}),c(".js-wp-mail-smtp-mailer-notice-dismiss",s.settingsForm).on("click",function(t){t.preventDefault();var e=c(this),i=e.parents(".inline-notice");if(e.hasClass("disabled"))return!1;c.ajax({url:ajaxurl,dataType:"json",type:"POST",data:{action:"wp_mail_smtp_ajax",nonce:wp_mail_smtp.nonce,task:"notice_dismiss",notice:i.data("notice"),mailer:i.data("mailer")},beforeSend:function(){e.addClass("disabled")}}).always(function(){i.fadeOut("fast",function(){e.removeClass("disabled")})})}),c("#wp-mail-smtp-debug .error-log-toggle").on("click",function(t){t.preventDefault(),c("#wp-mail-smtp-debug .error-log").slideToggle()}),c("#wp-mail-smtp-debug .error-log-copy").on("click",function(t){t.preventDefault();var e=c(this),i=c("#wp-mail-smtp-debug .error-log");i.is(":visible")||i.addClass("error-log-selection");t=n.createRange();t.selectNode(i[0]),m.getSelection().removeAllRanges(),m.getSelection().addRange(t),n.execCommand("Copy"),m.getSelection().removeAllRanges(),i.removeClass("error-log-selection"),e.addClass("error-log-copy-copied"),setTimeout(function(){e.removeClass("error-log-copy-copied")},1500)}),c(".js-wp-mail-smtp-provider-remove",s.settingsForm).on("click",function(){return confirm(wp_mail_smtp.text_provider_remove)}),c(".wp-mail-smtp-setting-copy",s.settingsForm).on("click",function(t){t.preventDefault(),c("#"+c(this).data("source_id")).get(0).select(),n.execCommand("Copy");var e=c(this).find(".dashicons");e.removeClass("dashicons-admin-page").addClass("wp-mail-smtp-dashicons-yes-alt-green wp-mail-smtp-success wp-mail-smtp-animate"),setTimeout(function(){e.removeClass("wp-mail-smtp-dashicons-yes-alt-green wp-mail-smtp-success wp-mail-smtp-animate").addClass("dashicons-admin-page")},1e3)}),c("#wp-mail-smtp-notice-bar").on("click",".dismiss",function(){var t=c(this).closest("#wp-mail-smtp-notice-bar");t.addClass("out"),setTimeout(function(){t.remove()},300),c.post(ajaxurl,{action:"wp_mail_smtp_notice_bar_dismiss",nonce:wp_mail_smtp.nonce})}),s.triggerExitNotice(),s.beforeSaveChecks(),c(".js-wp-mail-smtp-setting-mailer-radio-input",s.settingsForm).on("change",this.processMailerSettingsOnChange),c(".wp-mail-smtp-tab-tools-test #email-test-form").on("submit",function(){var t=c(this).find(".wp-mail-smtp-btn");t.attr("disabled",!0),t.find("span").hide(),t.find(".wp-mail-smtp-loading").show()}),c("#wp-mail-smtp-setting-gmail-one_click_setup_enabled-lite").on("click",function(t){t.preventDefault(),s.education.gmailOneClickSetupUpgrade()}),c("#wp-mail-smtp-setting-misc-rate_limit-lite").on("click",function(t){t.preventDefault(),s.education.rateLimitUpgrade()}),c(".wp-mail-smtp-btn[data-clear-field]").on("click",function(t){var e=c(this),i=e.attr("data-clear-field"),i=c(`#${i}`);i.prop("disabled",!1),i.attr("name",i.attr("data-name")),i.removeAttr("value"),i.focus(),e.remove()}),c(".email_test_tab_removal_notice").on("click",".notice-dismiss",function(){var t=c(this);c.ajax({url:ajaxurl,dataType:"json",type:"POST",data:{action:"wp_mail_smtp_ajax",nonce:wp_mail_smtp.nonce,task:"email_test_tab_removal_notice_dismiss"},beforeSend:function(){t.prop("disabled",!0)}})})},education:{upgradeMailer:function(t){var e=t.data("title").trim();s.education.upgradeModal(wp_mail_smtp.education.upgrade_title.replace(/%name%/g,e),wp_mail_smtp.education.upgrade_content.replace(/%name%/g,e),t.val())},gmailOneClickSetupUpgrade:function(){s.education.upgradeModal(wp_mail_smtp.education.gmail.one_click_setup_upgrade_title,wp_mail_smtp.education.gmail.one_click_setup_upgrade_content,"gmail-one-click-setup")},rateLimitUpgrade:function(){s.education.upgradeModal(wp_mail_smtp.education.rate_limit.upgrade_title,wp_mail_smtp.education.rate_limit.upgrade_content,"rate-limit-setting")},upgradeModal:function(t,e,i){c.alert({backgroundDismiss:!0,escapeKey:!0,animationBounce:1,type:"blue",closeIcon:!0,title:t,icon:'">'+wp_mail_smtp.education.upgrade_icon_lock+''+wp_mail_smtp.education.upgrade_bonus+wp_mail_smtp.education.upgrade_doc+"
"),this.$body.addClass("wp-mail-smtp-upgrade-mailer-education-modal")},buttons:{confirm:{text:wp_mail_smtp.education.upgrade_button,btnClass:"btn-confirm",keys:["enter"],action:function(){var t=/(\?)/.test(wp_mail_smtp.education.upgrade_url)?"&":"?",t=wp_mail_smtp.education.upgrade_url+t+"utm_content="+encodeURIComponent(i);m.open(t,"_blank")}}}})}},mailers:{sendlayer:{showConnectError:function(t,e){t="

"+c("").text(t).html()+"

";e&&(t+='
'+c("").text(e).html()+'
'),c.alert({backgroundDismiss:!0,escapeKey:!0,animationBounce:1,type:"red",closeIcon:!0,icon:s.getModalIcon("times-circle-red"),title:wp_mail_smtp.sendlayer.error_title,content:t,boxWidth:"450px",buttons:{confirm:{text:wp_mail_smtp.ok_text,btnClass:"wp-mail-smtp-btn wp-mail-smtp-btn-md",keys:["enter"]}},onOpenBefore:function(){this.$body.on("click",".wp-mail-smtp-error-code-box__copy",function(){var t=c(this),e=t.siblings("code").text();navigator.clipboard&&navigator.clipboard.writeText(e),t.find(".wp-mail-smtp-error-code-box__icon-copy").hide(),t.find(".wp-mail-smtp-error-code-box__icon-check").show(),setTimeout(function(){t.find(".wp-mail-smtp-error-code-box__icon-check").hide(),t.find(".wp-mail-smtp-error-code-box__icon-copy").show()},2e3)})}})},doConnect:function(t,i){var n=this,e=c("#wp-mail-smtp-sendlayer-quick-connect-return-url").val()||wp_mail_smtp.sendlayer.return_url,a=c("#wp-mail-smtp-sendlayer-quick-connect-connection-id").val()||"";c.post(ajaxurl,{action:"wp_mail_smtp_sendlayer_connect",nonce:wp_mail_smtp.sendlayer.connect_nonce,return_url:e,connection_id:a,connect_args:t||{}},function(t){var e;t.success&&t.data.redirect_url?m.location.href=t.data.redirect_url:(e=t.data&&t.data.message?t.data.message:wp_mail_smtp.sendlayer.error_text,t=t.data&&t.data.error_code?t.data.error_code:"",n.showConnectError(e,t),i&&i())}).fail(function(){n.showConnectError(wp_mail_smtp.sendlayer.server_error,"plugin.init_connect.ajax_failed"),i&&i()})},bindActions:function(){var n=this;c("#wp-mail-smtp-sendlayer-connect-btn").on("click",function(t){t.preventDefault();var e=c(this);e.addClass("wp-mail-smtp-btn-loading"),n.doConnect({utm_content:"Plugin Settings - Quick Connect"},function(){e.removeClass("wp-mail-smtp-btn-loading")})}),c("#wp-mail-smtp-sendlayer-change-domain").on("click",function(t){t.preventDefault();var e=c(this),i=e.text();e.text(wp_mail_smtp.sendlayer.connecting_text),n.doConnect({utm_content:"Plugin Settings - Quick Connect Change Domain"},function(){e.text(i)})}),c('.wp-mail-smtp-btn[data-clear-field="wp-mail-smtp-setting-sendlayer-api_key"]').on("click",function(){c("#wp-mail-smtp-setting-row-sendlayer-connect").show()}),c("#wp-mail-smtp-sendlayer-show-api-key").on("click",function(t){t.preventDefault(),c(this).closest(".wp-mail-smtp-setting-row").remove(),c("#wp-mail-smtp-setting-row-sendlayer-api_key").show()}),c("#wp-mail-smtp-sendlayer-education-connect-btn").on("click",function(t){t.preventDefault();var e=c(this);e.addClass("wp-mail-smtp-btn-loading"),n.doConnect({utm_content:"Plugin Settings - Quick Connect Education"},function(){e.removeClass("wp-mail-smtp-btn-loading")})}),c(".js-wp-mail-smtp-sendlayer-education-dismiss").on("click",function(t){t.preventDefault(),c(this).closest(".wp-mail-smtp-sendlayer-education").fadeOut(200),c.post(ajaxurl,{action:"wp_mail_smtp_ajax",task:"notice_dismiss",notice:"sendlayer_education",nonce:wp_mail_smtp.nonce})})}},smtp:{bindActions:function(){c("#wp-mail-smtp-setting-smtp-auth").on("change",function(){c("#wp-mail-smtp-setting-row-smtp-user, #wp-mail-smtp-setting-row-smtp-pass").toggleClass("inactive")}),c("#wp-mail-smtp-setting-row-smtp-encryption input").on("change",function(){var t=c(this),e=c("#wp-mail-smtp-setting-smtp-port",s.settingsForm);"tls"===t.val()?(e.val("587"),c("#wp-mail-smtp-setting-row-smtp-autotls").addClass("inactive")):("ssl"===t.val()?e.val("465"):e.val("25"),c("#wp-mail-smtp-setting-row-smtp-autotls").removeClass("inactive"))})}}},triggerExitNotice:function(){var t=c(".wp-mail-smtp-page-general");c(m).on("beforeunload",function(){if(s.pluginSettingsChanged)return wp_mail_smtp.text_settings_not_saved}),c(":input:not( #wp-mail-smtp-setting-license-key, .wp-mail-smtp-not-form-input, #wp-mail-smtp-setting-gmail-one_click_setup_enabled, #wp-mail-smtp-setting-outlook-one_click_setup_enabled )",t).on("change",function(){s.pluginSettingsChanged=!0}),c("form",t).on("submit",function(){s.pluginSettingsChanged=!1})},beforeSaveChecks:function(){s.settingsForm.on("submit",function(){if("mail"===c(".wp-mail-smtp-mailer input:checked",s.settingsForm).val()){var t=c(this);return c.alert({backgroundDismiss:!1,escapeKey:!1,animationBounce:1,type:"orange",icon:'">
'+wp_mail_smtp.default_mailer_notice.icon_alt+' 1 ) { + --count; + el.$adminBarCounter.html( '' + count + '' ); + } else { + el.$adminBarCounter.remove(); + } + + // Remove notification. + var $nextMessage = el.$nextMessage.length < 1 ? el.$prevMessage : el.$nextMessage; + + if ( $nextMessage.length === 0 ) { + el.$notifications.remove(); + } else { + el.$currentMessage.remove(); + $nextMessage.addClass( 'current' ); + app.updateNavigation(); + } + } ); + }, + + /** + * Click on the Next notification button. + * + * @since 2.3.0 + * + * @param {object} event Event object. + */ + navNext: function( event ) { + + if ( el.$nextButton.hasClass( 'disabled' ) ) { + return; + } + + el.$currentMessage.removeClass( 'current' ); + el.$nextMessage.addClass( 'current' ); + + app.updateNavigation(); + }, + + /** + * Click on the Previous notification button. + * + * @since 2.3.0 + * + * @param {object} event Event object. + */ + navPrev: function( event ) { + + if ( el.$prevButton.hasClass( 'disabled' ) ) { + return; + } + + el.$currentMessage.removeClass( 'current' ); + el.$prevMessage.addClass( 'current' ); + + app.updateNavigation(); + }, + + /** + * Update navigation buttons. + * + * @since 2.3.0 + */ + updateNavigation: function() { + + el.$currentMessage = el.$notifications.find( '.wp-mail-smtp-notifications-message.current' ); + el.$nextMessage = el.$currentMessage.next( '.wp-mail-smtp-notifications-message' ); + el.$prevMessage = el.$currentMessage.prev( '.wp-mail-smtp-notifications-message' ); + + if ( el.$nextMessage.length === 0 ) { + el.$nextButton.addClass( 'disabled' ); + } else { + el.$nextButton.removeClass( 'disabled' ); + } + + if ( el.$prevMessage.length === 0 ) { + el.$prevButton.addClass( 'disabled' ); + } else { + el.$prevButton.removeClass( 'disabled' ); + } + }, + }; + + return app; + +}( document, window, jQuery ) ); + +// Initialize. +WPMailSMTPAdminNotifications.init(); diff --git a/plugins/wp-mail-smtp/assets/js/smtp-notifications.min.js b/plugins/wp-mail-smtp/assets/js/smtp-notifications.min.js new file mode 100644 index 0000000..43ee87a --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/smtp-notifications.min.js @@ -0,0 +1 @@ +"use strict";var WPMailSMTPAdminNotifications=window.WPMailSMTPAdminNotifications||function(t){var a={$notifications:t("#wp-mail-smtp-notifications"),$nextButton:t("#wp-mail-smtp-notifications .navigation .next"),$prevButton:t("#wp-mail-smtp-notifications .navigation .prev"),$adminBarCounter:t("#wp-admin-bar-wp-mail-smtp-menu .wp-mail-smtp-admin-bar-menu-notification-counter")},i={init:function(){t(i.ready)},ready:function(){i.updateNavigation(),i.events()},events:function(){a.$notifications.on("click",".dismiss",i.dismiss).on("click",".next",i.navNext).on("click",".prev",i.navPrev)},dismiss:function(e){var n;0!==a.$currentMessage.length&&(n={action:"wp_mail_smtp_notification_dismiss",nonce:wp_mail_smtp.nonce,id:a.$currentMessage.data("message-id")},t.post(ajaxurl,n,function(e){e.success&&(1<(e=parseInt(a.$adminBarCounter.text(),10))?a.$adminBarCounter.html(""+--e+""):a.$adminBarCounter.remove(),0===(e=a.$nextMessage.length<1?a.$prevMessage:a.$nextMessage).length?a.$notifications.remove():(a.$currentMessage.remove(),e.addClass("current"),i.updateNavigation()))}))},navNext:function(e){a.$nextButton.hasClass("disabled")||(a.$currentMessage.removeClass("current"),a.$nextMessage.addClass("current"),i.updateNavigation())},navPrev:function(e){a.$prevButton.hasClass("disabled")||(a.$currentMessage.removeClass("current"),a.$prevMessage.addClass("current"),i.updateNavigation())},updateNavigation:function(){a.$currentMessage=a.$notifications.find(".wp-mail-smtp-notifications-message.current"),a.$nextMessage=a.$currentMessage.next(".wp-mail-smtp-notifications-message"),a.$prevMessage=a.$currentMessage.prev(".wp-mail-smtp-notifications-message"),0===a.$nextMessage.length?a.$nextButton.addClass("disabled"):a.$nextButton.removeClass("disabled"),0===a.$prevMessage.length?a.$prevButton.addClass("disabled"):a.$prevButton.removeClass("disabled")}};return i}((document,window,jQuery));WPMailSMTPAdminNotifications.init(); \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/js/smtp-tools-debug-events.js b/plugins/wp-mail-smtp/assets/js/smtp-tools-debug-events.js new file mode 100644 index 0000000..9b4ae8d --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/smtp-tools-debug-events.js @@ -0,0 +1,360 @@ +/* global wp_mail_smtp_tools_debug_events, ajaxurl, flatpickr */ +/** + * WPMailSMTP Debug Events functionality. + * + * @since 3.0.0 + */ + +'use strict'; + +var WPMailSmtpDebugEvents = window.WPMailSmtpDebugEvents || ( function( document, window, $ ) { + + /** + * Elements. + * + * @since 3.0.0 + * + * @type {object} + */ + var el = { + $debugEventsPage: $( '.wp-mail-smtp-tab-tools-debug-events' ), + $dateFlatpickr: $( '.wp-mail-smtp-filter-date-selector' ), + }; + + /** + * Public functions and properties. + * + * @since 3.0.0 + * + * @type {object} + */ + var app = { + + /** + * Start the engine. + * + * @since 3.0.0 + */ + init: function() { + + $( app.ready ); + }, + + /** + * Document ready. + * + * @since 3.0.0 + */ + ready: function() { + + app.initDateRange(); + app.events(); + + // Open debug event popup from the query string. + var searchParams = new URLSearchParams( location.search ); + + if ( searchParams.has( 'debug_event_id' ) ) { + app.openDebugEventPopup( searchParams.get( 'debug_event_id' ) ); + } + }, + + /** + * Register JS events. + * + * @since 3.0.0 + */ + events: function() { + + el.$debugEventsPage.on( 'click', '#wp-mail-smtp-reset-filter .reset', app.resetFilter ); + el.$debugEventsPage.on( 'click', '#wp-mail-smtp-delete-all-debug-events-button', app.deleteAllDebugEvents ); + el.$debugEventsPage.on( 'click', '.js-wp-mail-smtp-debug-event-preview', app.eventClicked ); + }, + + /** + * Init Flatpickr at Date Range field. + * + * @since 3.0.0 + */ + initDateRange: function() { + + var langCode = wp_mail_smtp_tools_debug_events.lang_code, + flatpickrLocale = { + rangeSeparator: ' - ', + }; + + if ( + flatpickr !== 'undefined' && + Object.prototype.hasOwnProperty.call( flatpickr, 'l10ns' ) && + Object.prototype.hasOwnProperty.call( flatpickr.l10ns, langCode ) + ) { + flatpickrLocale = flatpickr.l10ns[ langCode ]; + flatpickrLocale.rangeSeparator = ' - '; + } + + el.$dateFlatpickr.flatpickr( { + altInput : true, + altFormat : 'M j, Y', + dateFormat: 'Y-m-d', + locale : flatpickrLocale, + mode : 'range' + } ); + }, + + /** + * Reset filter handler. + * + * @since 3.0.0 + */ + resetFilter: function() { + + var $form = $( this ).parents( 'form' ); + + $form.find( $( this ).data( 'scope' ) ).find( 'input,select' ).each( function() { + + var $this = $( this ); + if ( app.isIgnoredForResetInput( $this ) ) { + return; + } + app.resetInput( $this ); + } ); + + // Submit the form. + $form.submit(); + }, + + /** + * Reset input. + * + * @since 3.0.0 + * + * @param {object} $input Input element. + */ + resetInput: function( $input ) { + + switch ( $input.prop( 'tagName' ).toLowerCase() ) { + case 'input': + $input.val( '' ); + break; + case 'select': + $input.val( $input.find( 'option' ).first().val() ); + break; + } + }, + + /** + * Input is ignored for reset. + * + * @since 3.0.0 + * + * @param {object} $input Input element. + * + * @returns {boolean} Is ignored. + */ + isIgnoredForResetInput: function( $input ) { + + return [ 'submit', 'hidden' ].indexOf( ( $input.attr( 'type' ) || '' ).toLowerCase() ) !== -1 && + ! $input.hasClass( 'flatpickr-input' ); + }, + + /** + * Process the click on the delete all debug events button. + * + * @since 3.0.0 + * + * @param {object} event jQuery event. + */ + deleteAllDebugEvents: function( event ) { + + event.preventDefault(); + + var $btn = $( event.target ); + + $.confirm( { + backgroundDismiss: false, + escapeKey: true, + animationBounce: 1, + closeIcon: true, + type: 'orange', + icon: app.getModalIcon( 'exclamation-circle-solid-orange' ), + title: wp_mail_smtp_tools_debug_events.texts.notice_title, + content: wp_mail_smtp_tools_debug_events.texts.delete_all_notice, + buttons: { + confirm: { + text: wp_mail_smtp_tools_debug_events.texts.yes, + btnClass: 'btn-confirm', + keys: [ 'enter' ], + action: function() { + app.executeAllDebugEventsDeletion( $btn ); + } + }, + cancel: { + text: wp_mail_smtp_tools_debug_events.texts.cancel, + btnClass: 'btn-cancel', + } + } + } ); + }, + + /** + * Process the click on the event item. + * + * @since 3.0.0 + * + * @param {object} event jQuery event. + */ + eventClicked: function( event ) { + + event.preventDefault(); + + app.openDebugEventPopup( $( this ).data( 'event-id' ) ); + }, + + /** + * Open debug event popup. + * + * @since 3.5.0 + * + * @param {int} eventId Debug event ID. + */ + openDebugEventPopup: function( eventId ) { + + var data = { + action: 'wp_mail_smtp_debug_event_preview', + id: eventId, + nonce: $( '#wp-mail-smtp-debug-events-nonce', el.$debugEventsPage ).val() + }; + + var popup = $.alert( { + backgroundDismiss: true, + escapeKey: true, + animationBounce: 1, + type: 'blue', + icon: app.getModalIcon( 'info-circle-blue' ), + title: false, + content: wp_mail_smtp_tools_debug_events.loader, + boxWidth: '550px', + buttons: { + confirm: { + text: wp_mail_smtp_tools_debug_events.texts.close, + btnClass: 'btn-confirm', + keys: [ 'enter' ] + } + }, + onOpenBefore: function() { + this.$contentPane.addClass( 'no-scroll' ); + } + } ); + + $.post( ajaxurl, data, function( response ) { + if ( response.success ) { + popup.setTitle( response.data.title ); + popup.setContent( response.data.content ); + } else { + popup.setIcon( app.getModalIcon( 'exclamation-circle-regular-red' ) ); + popup.setType( 'red' ); + popup.setContent( response.data ); + } + } ).fail( function() { + popup.setContent( wp_mail_smtp_tools_debug_events.texts.error_occurred ); + } ); + }, + + /** + * AJAX call for deleting all debug events. + * + * @since 3.0.0 + * + * @param {object} $btn jQuery object of the clicked button. + */ + executeAllDebugEventsDeletion: function( $btn ) { + + $btn.prop( 'disabled', true ); + + var data = { + action: 'wp_mail_smtp_delete_all_debug_events', + nonce: $( '#wp-mail-smtp-debug-events-nonce', el.$debugEventsPage ).val() + }; + + $.post( ajaxurl, data, function( response ) { + var message = response.data, + icon, + type, + callback; + + if ( response.success ) { + icon = 'check-circle-solid-green'; + type = 'green'; + callback = function() { + location.reload(); + return false; + }; + } else { + icon = 'exclamation-circle-regular-red'; + type = 'red'; + } + + app.displayModal( message, icon, type, callback ); + $btn.prop( 'disabled', false ); + } ).fail( function() { + app.displayModal( wp_mail_smtp_tools_debug_events.texts.error_occurred, 'exclamation-circle-regular-red', 'red' ); + $btn.prop( 'disabled', false ); + } ); + }, + + /** + * Display the modal with provided text and icon. + * + * @since 3.0.0 + * + * @param {string} message The message to be displayed in the modal. + * @param {string} icon The icon name from /assets/images/font-awesome/ to be used in modal. + * @param {string} type The type of the message (red, green, orange, blue, purple, dark). + * @param {Function} actionCallback The action callback function. + */ + displayModal: function( message, icon, type, actionCallback ) { + + type = type || 'default'; + actionCallback = actionCallback || function() {}; + + $.alert( { + backgroundDismiss: true, + escapeKey: true, + animationBounce: 1, + type: type, + closeIcon: true, + title: false, + icon: icon ? app.getModalIcon( icon ) : '', + content: message, + buttons: { + confirm: { + text: wp_mail_smtp_tools_debug_events.texts.ok, + btnClass: 'wp-mail-smtp-btn wp-mail-smtp-btn-md', + keys: [ 'enter' ], + action: actionCallback + } + } + } ); + }, + + /** + * Returns prepared modal icon. + * + * @since 3.0.0 + * + * @param {string} icon The icon name from /assets/images/font-awesome/ to be used in modal. + * + * @returns {string} Modal icon HTML. + */ + getModalIcon: function( icon ) { + + return '">{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;at,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)t-e)).pop(),e}function N(t){return!function(t){return"symbol"==typeof t||"object"==typeof t&&null!==t&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;sl&&h=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return nt[s][e]et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;ss&&t[n-1]>i;)n--;return s>0||n{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const n=e.length;let o=0,a=n;if(t._sorted){const{iScale:r,vScale:l,_parsed:h}=t,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,d=r.axis,{min:u,max:f,minDefined:g,maxDefined:p}=r.getUserBounds();if(g){if(o=Math.min(it(h,d,u).lo,i?n:it(e,d,r.getPixelForValue(u)).lo),c){const t=h.slice(0,o+1).reverse().findIndex((t=>!s(t[l.axis])));o-=Math.max(0,t)}o=J(o,0,n-1)}if(p){let t=Math.max(it(h,r.axis,f,!0).hi+1,i?0:it(e,d,r.getPixelForValue(f),!0).hi+1);if(c){const e=h.slice(t-1).findIndex((t=>!s(t[l.axis])));t+=Math.max(0,e)}a=J(t,o,n)-o}else a=n-o}return{start:o,count:a}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class xt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var bt=new xt; + /*! + * @kurkle/color v0.3.2 + * https://github.com/kurkle/color#readme + * (c) 2023 Jukka Kurkela + * Released under the MIT License + */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;et.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function xe(t,e){return me(t).getPropertyValue(e)}const be=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=be[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const ye=(t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot);function ve(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(ye(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const Me=t=>Math.round(10*t)/10;function we(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=t&&ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=Me(Math.min(h,a,l.maxWidth)),c=Me(Math.min(c,r,l.maxHeight)),h&&!c&&(c=Me(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=Me(Math.floor(c*s))),{width:h,height:c}}function ke(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const Se=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};fe()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch(t){}return t}();function Pe(t,e){const i=xe(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function De(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function Ce(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Oe(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;hi.length){for(h=0;h0&&t.stroke()}}function Re(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.xe.top-i&&t.y0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),s(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;ct[0])){const o=i||t;void 0===s&&(s=ti("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:o,_fallback:s,_getTarget:n,override:i=>je([i,...t],e,o,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>qe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=ti(Ue(o,t),i),void 0!==n)return Xe(t,n)?Je(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ei(t).includes(e),ownKeys:t=>ei(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function $e(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:Ye(t,s),setContext:e=>$e(t,e,i,s),override:n=>$e(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>qe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let l=e(o,a||s);r.delete(t),Xe(t,l)&&(l=Je(n._scopes,n,t,l));return l}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(void 0!==a.index&&s(t))return e[a.index%e.length];if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Je(s,n,t,o);e.push($e(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Xe(e,h)&&(h=$e(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function Ye(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ue=(t,e)=>t?t+w(e):e,Xe=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function qe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e)||"constructor"===e)return t[e];const s=i();return t[e]=s,s}function Ke(t,e,i){return S(t)?t(e,i):t}const Ge=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ze(t,e,i,s,n){for(const o of e){const e=Ge(i,o);if(e){t.add(e);const o=Ke(e._fallback,i,n);if(void 0!==o&&o!==i&&o!==s)return o}else if(!1===e&&void 0!==s&&i!==s)return null}return!1}function Je(t,e,i,s){const a=e._rootScopes,r=Ke(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Qe(h,l,i,r||i,s);return null!==c&&((void 0===r||r===i||(c=Qe(h,l,r,c,s),null!==c))&&je(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Qe(t,e,i,s,n){for(;i;)i=Ze(t,e,i,s,n);return i}function ti(t,e){for(const i of e){if(!i)continue;const e=i[t];if(void 0!==e)return e}}function ei(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ii(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;re"x"===t?"y":"x";function ai(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ri(t,e="x"){const i=oi(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=ni(t,0);for(a=0;a!t.skip))),"monotone"===e.cubicInterpolationMode)ri(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o0===t||1===t,di=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),ui=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,fi={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>ci(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>ci(t)?t:di(t,.075,.3),easeOutElastic:t=>ci(t)?t:ui(t,.075,.3),easeInOutElastic(t){const e=.1125;return ci(t)?t:t<.5?.5*di(2*t,e,.45):.5+.5*ui(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-fi.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*fi.easeInBounce(2*t):.5*fi.easeOutBounce(2*t-1)+.5};function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function pi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function mi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=gi(t,n,i),r=gi(n,o,i),l=gi(o,e,i),h=gi(a,r,i),c=gi(r,l,i);return gi(h,c,i)}const xi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function _i(t,e){const i=(""+t).match(xi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}const yi=t=>+t||0;function vi(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=yi(a(t));return i}function Mi(t){return vi(t,{top:"y",right:"x",bottom:"y",left:"x"})}function wi(t){return vi(t,["topLeft","topRight","bottomLeft","bottomRight"])}function ki(t){const e=Mi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function Si(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:_i(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=De(n),n}function Pi(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;oi&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Ci(t,e){return Object.assign(Object.create(t),e)}function Oi(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ai(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Ti(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Li(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ei({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Ri(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Li(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Li(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;hb||l(n,x,p)&&0!==r(n,x),v=()=>!b||0===r(o,p)||l(o,x,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==x&&(b=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ei({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,x=p));return null!==_&&g.push(Ei({start:_,end:d,loop:u,count:a,style:f})),g}function Ii(t,e){const i=[],s=t.segments;for(let n=0;nn&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Fi(t,[{start:a,end:r,loop:o}],i,e);return Fi(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r!s(t[e.axis])));n.lo-=Math.max(0,a);const r=i.slice(n.hi).findIndex((t=>!s(t[e.axis])));n.hi+=Math.max(0,r)}return n}if(o._sharedOptions){const t=a[0],s="function"==typeof t.getRange&&t.getRange(e);if(s){const t=r(a,e,i-s),n=r(a,e,i+s);return{lo:t.lo,hi:n.hi}}}}return{lo:0,hi:a.length-1}}function $i(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t{t[a]&&t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Ki={evaluateInteractionItems:$i,modes:{index(t,e,i,s){const n=ve(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Yi(t,n,o,s,a):Xi(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;tYi(t,ve(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ve(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return Xi(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>qi(t,ve(e,t),"x",i.intersect,s),y:(t,e,i,s)=>qi(t,ve(e,t),"y",i.intersect,s)}};const Gi=["left","top","right","bottom"];function Zi(t,e){return t.filter((t=>t.pos===e))}function Ji(t,e){return t.filter((t=>-1===Gi.indexOf(t.pos)&&t.box.axis===e))}function Qi(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function ts(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Gi.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function os(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;ot.box.fullSize)),!0),s=Qi(Zi(e,"left"),!0),n=Qi(Zi(e,"right")),o=Qi(Zi(e,"top"),!0),a=Qi(Zi(e,"bottom")),r=Ji(e,"x"),l=Ji(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Zi(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);is(f,ki(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=ts(l.concat(h),d);os(r.fullSize,g,d,p),os(l,g,d,p),os(h,g,d,p)&&os(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),rs(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,rs(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class hs{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class cs extends hs{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const ds="$chartjs",us={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},fs=t=>null===t||""===t;const gs=!!Se&&{passive:!0};function ps(t,e,i){t&&t.canvas&&t.canvas.removeEventListener(e,i,gs)}function ms(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function xs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.addedNodes,s),e=e&&!ms(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function bs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ms(i.removedNodes,s),e=e&&!ms(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const _s=new Map;let ys=0;function vs(){const t=window.devicePixelRatio;t!==ys&&(ys=t,_s.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function Ms(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){_s.size||window.addEventListener("resize",vs),_s.set(t,e)}(t,o),a}function ws(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){_s.delete(t),_s.size||window.removeEventListener("resize",vs)}(t)}function ks(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=us[t.type]||t.type,{x:s,y:n}=ve(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t&&t.addEventListener(e,i,gs)}(s,e,n),n}class Ss extends hs{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t[ds]={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",fs(n)){const e=Pe(t,"width");void 0!==e&&(t.width=e)}if(fs(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Pe(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e[ds])return!1;const i=e[ds].initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e[ds],!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:xs,detach:bs,resize:Ms}[e]||ks;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:ws,detach:ws,resize:ws}[e]||ps)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return we(t,e,i,s)}isAttached(t){const e=t&&ge(t);return!(!e||!e.isConnected)}}function Ps(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?cs:Ss}var Ds=Object.freeze({__proto__:null,BasePlatform:hs,BasicPlatform:cs,DomPlatform:Ss,_detectPlatform:Ps});const Cs="transparent",Os={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||Cs),n=s.valid&&Qt(e||Cs);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class As{constructor(t,e,i,s){const n=e[i];s=Pi([t.to,s,n,t.from]);const o=Pi([t.from,n,s]);this._active=!0,this._fn=t.fn||Os[t.type||typeof o],this._easing=fi[t.easing]||fi.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=Pi([t.to,e,s,t.from]),this._from=Pi([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new As(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(bt.add(this._chart,i),!0):void 0}}function Ls(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Es(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n0||!i&&e<0)return n.index}return null}function Vs(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;ti[t].axis===e)).shift()}function Ws(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const Ns=t=>"reset"===t||"none"===t,Hs=(t,e)=>e?t:Object.assign({},t);class js{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Is(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Ws(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Bs(t,"x")),o=e.yAxisID=l(i.yAxisID,Bs(t,"y")),a=e.rAxisID=l(i.rAxisID,Bs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Ws(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e)){const t=this._cachedMeta;this._data=function(t,e){const{iScale:i,vScale:s}=e,n="x"===i.axis?"x":"y",o="x"===s.axis?"x":"y",a=Object.keys(t),r=new Array(a.length);let l,h,c;for(l=0,h=a.length;l0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]t&&!e.hidden&&e._stacked&&{keys:Es(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s=0&&tthis.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Hs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ts(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||Ns(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){Ns(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!Ns(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ys(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;io)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;nn)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Us(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t"top"===e||"left"===e?t[e]+i:t[e]-i,qs=(t,e)=>Math.min(e||t,t);function Ks(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;oa+r)))return h}function Zs(t){return t.drawTicks?t.tickLength:0}function Js(t,e){if(!t.display)return 0;const i=Si(t.font,e),s=ki(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function Qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class tn extends $s{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;rs?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Di(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Zs(t.grid)-e.padding-Js(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Js(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Zs(n)+o):(t.height=this.maxHeight,t.width=Zs(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Ae(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&ta*s?a/i:r/s:r*s0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Zs(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,x=function(t){return Ae(i,t,p)};let b,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)b=x(this.bottom),w=this.bottom-u,S=b-m,D=x(t.top)+m,O=t.bottom;else if("bottom"===a)b=x(this.top),D=t.top,O=x(t.bottom)-m,w=b+m,S=this.top+u;else if("left"===a)b=x(this.right),M=this.right-u,k=b-m,P=x(t.left)+m,C=t.right;else if("right"===a)b=x(this.left),P=t.left,C=x(t.right)-m,M=b+m,k=this.left+u;else if("x"===e){if("center"===a)b=x((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=b+m,S=w+u}else if("y"===e){if("center"===a)b=x((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];b=x(this.chart.scales[t].getPixelForValue(e))}M=b-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_0&&(o-=s/2)}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}x.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return x}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class sn{constructor(){this.controllers=new en(js,"datasets",!0),this.elements=new en($s,"elements"),this.plugins=new en(Object,"plugins"),this.scales=new en(tn,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;et.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function an(t,e){return e||!1!==t?!0===t?{}:t:null}function rn(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function ln(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function hn(t){if("x"===t||"y"===t||"r"===t)return t}function cn(t,...e){if(hn(t))return t;for(const s of e){const e=s.axis||("top"===(i=s.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&hn(t[0].toLowerCase());if(e)return e}var i;throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function dn(t,e,i){if(i[e+"AxisID"]===t)return{axis:e}}function un(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=ln(t.type,e),a=Object.create(null);return Object.keys(s).forEach((e=>{const r=s[e];if(!o(r))return console.error(`Invalid scale configuration for scale: ${e}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const l=cn(e,r,function(t,e){if(e.data&&e.data.datasets){const i=e.data.datasets.filter((e=>e.xAxisID===t||e.yAxisID===t));if(i.length)return dn(t,"x",i[0])||dn(t,"y",i[0])}return{}}(e,t),ue.scales[r.type]),h=function(t,e){return t===e?"_index_":"_value_"}(l,n),c=i.scales||{};a[e]=b(Object.create(null),[{axis:l},r,c[l],c[h]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||ln(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),b(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];b(e,[ue.scales[e.type],ue.scale])})),a}function fn(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=un(t,e)}function gn(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const pn=new Map,mn=new Set;function xn(t,e){let i=pn.get(t);return i||(i=e(),pn.set(t,i),mn.add(i)),i}const bn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class _n{constructor(t){this._config=function(t){return(t=t||{}).data=gn(t.data),fn(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=gn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),fn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return xn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return xn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return xn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return xn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>bn(r,t,e)))),e.forEach((t=>bn(r,s,t))),e.forEach((t=>bn(r,re[n]||{},t))),e.forEach((t=>bn(r,ue,t))),e.forEach((t=>bn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),mn.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=yn(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=Ye(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||vn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=$e(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=yn(this._resolverCache,t,i);return o(e)?$e(n,e,void 0,s):n}}function yn(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:je(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const vn=t=>o(t)&&Object.getOwnPropertyNames(t).some((e=>S(t[e])));const Mn=["top","bottom","left","right","chartArea"];function wn(t,e){return"top"===t||"bottom"===t||-1===Mn.indexOf(t)&&"x"===e}function kn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function Sn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function Pn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function Dn(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const Cn={},On=t=>{const e=Dn(t);return Object.values(Cn).filter((t=>t.canvas===e)).pop()};function An(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class Tn{static defaults=ue;static instances=Cn;static overrides=re;static registry=nn;static version="4.4.9";static getChart=On;static register(...t){nn.add(...t),Ln()}static unregister(...t){nn.remove(...t),Ln()}constructor(t,e){const s=this.config=new _n(e),n=Dn(t),o=On(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||Ps(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new on,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],Cn[this.id]=this,r&&l?(bt.listen(this,"complete",Sn),bt.listen(this,"progress",Pn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return nn}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():ke(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Te(this.canvas,this.ctx),this}stop(){return bt.stop(this),this}resize(t,e){bt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,ke(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=cn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=cn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&wn(n.position,a)===wn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(nn.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ls.configure(this,t,t.options),ls.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;te.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(kn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ls.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){An(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;tt.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ls.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i={meta:t,index:t.index,cancelable:!0},s=Ni(this,t);!1!==this.notifyPlugins("beforeDatasetDraw",i)&&(s&&Ie(e,s),t.controller.draw(),s&&ze(e),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(t){return Re(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Ki.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Ci(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),bt.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function Ln(){return u(Tn.instances,(t=>t._plugins.invalidate()))}function En(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Rn{static override(t){Object.assign(Rn.prototype,t)}options;constructor(t){this.options=t||{}}init(){}formats(){return En()}parse(){return En()}format(){return En()}add(){return En()}diff(){return En()}startOf(){return En()}endOf(){return En()}}var In={_date:Rn};function zn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;et-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;sMath.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function Vn(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;ht.x,i="left",s="right"):(e=t.base"spacing"!==t,_indexable:t=>"spacing"!==t&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;nZ(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),x=g(C,h,d),b=g(C+E,c,u);s=(p-x)/2,n=(m-b)/2,o=-(p+x)/2,a=-(m+b)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),x=(i.width-o)/f,b=(i.height-o)/g,_=Math.max(Math.min(x,b)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(se.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Un=Object.freeze({__proto__:null,BarController:class extends js{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return Vn(t,e,i,s)}parseArrayData(t,e,i,s){return Vn(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;dt.controller.options.grouped)),o=i.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[i.axis],h=t=>{const e=t._parsed.find((t=>t[i.axis]===l)),n=e&&e[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!h(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n=i?1:-1)}(u,e,r)*a,f===r&&(x-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);x=Math.max(Math.min(x,h),o),d=x+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(x))}if(x===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;x+=t,u-=t}return{size:u,base:x,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=x?g:{};if(i=b){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),x||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PieController:class extends $n{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},PolarAreaController:Yn,RadarController:class extends js{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ii.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a0&&this.getParsed(e-1);for(let c=e;c0&&Math.abs(i[f]-_[f])>x,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),b||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Xn(t,e,i,s){const n=vi(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function qn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Kn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,x=n-p-f,{outerStart:b,outerEnd:_,innerStart:y,innerEnd:v}=Xn(e,u,d,x-m),M=d-b,w=d-_,k=m+b/M,S=x-_/w,P=u+y,D=u+v,O=m+y/P,A=x-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=qn(w,S,a,r);t.arc(e.x,e.y,_,S,x+E)}const i=qn(D,x,a,r);if(t.lineTo(i.x,i.y),v>0){const e=qn(D,A,a,r);t.arc(e.x,e.y,v,x+E,A+Math.PI)}const s=(x-v/u+(m+y/u))/2;if(t.arc(a,r,u,x-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=qn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=qn(M,m,a,r);if(t.lineTo(n.x,n.y),b>0){const e=qn(M,k,a,r);t.arc(e.x,e.y,b,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Gn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c,borderDash:d,borderDashOffset:u}=l,f="inner"===l.borderAlign;if(!h)return;t.setLineDash(d||[]),t.lineDashOffset=u,f?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let g=e.endAngle;if(o){Kn(t,e,i,s,g,n);for(let e=0;en?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,g),o||(Kn(t,e,i,s,g,n),t.stroke())}function Zn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function Jn(t,e,i){t.lineTo(i.x,i.y)}function Qn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=nr&&o>r;return{count:s,start:l,loop:e.loop,ilen:h(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[b(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[b(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(ig&&(g=i),m=(x*m+e)/++x):(_(),t.lineTo(e,i),u=s,x=0,f=g=i),p=i}_()}function io(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?eo:to}const so="function"==typeof Path2D;function no(t,e,i,s){so&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),Zn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=io(e);for(const r of n)Zn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class oo extends $s{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;hi(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=zi(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ii(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?pi:t.tension||"monotone"===t.cubicInterpolationMode?mi:gi}(i);let l,h;for(l=0,h=o.length;l"borderDash"!==t};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=(this.options.spacing+this.options.borderWidth)/2,f=l(d,r-a),g=Z(n,a,r)&&a!==r,p=f>=O||g,m=tt(o,h+u,c+u);return p&&m}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Kn(t,e,i,s,l,n);for(let e=0;e("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function mo(t){const e=this.getLabels();return t>=0&&ts=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,x=!s(a),b=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!x&&!b)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),x&&b&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=x?a:M,w=b?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(x&&(u&&M!==a?(i.push({value:a}),Mr)break;i.push({value:t})}return b&&u&&w!==r?i.length&&V(i[i.length-1].value,r,xo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):b&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class _o extends bo{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const yo=t=>Math.floor(z(t)),vo=(t,e)=>Math.pow(10,yo(t)+e);function Mo(t){return 1===t/Math.pow(10,yo(t))}function wo(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function ko(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=yo(e);let o=function(t,e){let i=yo(e-t);for(;wo(t,e,i)>10;)i++;for(;wo(t,e,i)<10;)i--;return Math.min(i,yo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:Mo(g),significand:u}),s}class So extends tn{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=bo.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===vo(this.min,0)?vo(this.min,-1):vo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(vo(i,-1)),o(vo(s,1)))),i<=0&&n(vo(s,-1)),s<=0&&o(vo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=ko({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function Po(t){const e=t.ticks;if(e.display&&t.display){const t=ki(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function Do(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:tn?{start:e-i,end:e}:{start:e,end:e+i}}function Co(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;ue.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.starte.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Ao(t,e,i){const s=t.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=i,l=t.getPointPosition(e,s+n+a,o),h=Math.round(Y(G(l.angle+E))),c=function(t,e,i){90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e);return t}(l.y,r.h,h),d=function(t){if(0===t||180===t)return"center";if(t<180)return"left";return"right"}(h),u=function(t,e,i){"right"===i?t-=e:"center"===i&&(t-=e/2);return t}(l.x,r.w,d);return{visible:!0,x:l.x,y:c,textAlign:d,left:u,top:c,right:u+r.w,bottom:c+r.h}}function To(t,e){if(!e)return!0;const{left:i,top:s,right:n,bottom:o}=t;return!(Re({x:i,y:s},e)||Re({x:i,y:o},e)||Re({x:n,y:s},e)||Re({x:n,y:o},e))}function Lo(t,e,i){const{left:n,top:o,right:a,bottom:r}=i,{backdropColor:l}=e;if(!s(l)){const i=wi(e.borderRadius),s=ki(e.backdropPadding);t.fillStyle=l;const h=n-s.left,c=o-s.top,d=a-n+s.width,u=r-o+s.height;Object.values(i).some((t=>0!==t))?(t.beginPath(),He(t,{x:h,y:c,w:d,h:u,radius:i}),t.fill()):t.fillRect(h,c,d,u)}}function Eo(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;ot,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=ki(Po(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/Po(this.options))}generateTickLabels(t){bo.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?Co(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t=0;n--){const e=t._pointLabelItems[n];if(!e.visible)continue;const o=s.setContext(t.getPointLabelContext(n));Lo(i,o,e);const a=Si(o.font),{x:r,y:l,textAlign:h}=e;Ne(i,t._pointLabels[n],r,l+a.lineHeight/2,a,{color:o.color,textAlign:h,textBaseline:"middle"})}}(this,o),s.display&&this.ticks.forEach(((t,e)=>{if(0!==e||0===e&&this.min<0){r=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),a=s.setContext(i),l=n.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash||[]),o.lineDashOffset=n.dashOffset,o.beginPath(),Eo(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,a,r,o,l)}})),i.display){for(t.save(),a=o-1;a>=0;a--){const s=i.setContext(this.getPointLabelContext(a)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,r=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),l=this.getPointPosition(a,r),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(l.x,l.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&this.min>=0&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=Si(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=ki(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ne(t,s.label,0,-n,l,{color:r.color,strokeColor:r.textStrokeColor,strokeWidth:r.textStrokeWidth})})),t.restore()}drawTitle(){}}const Io={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},zo=Object.keys(Io);function Fo(t,e){return t-e}function Vo(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!N(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function Bo(t,e,i,s){const n=zo.length;for(let o=zo.indexOf(t);o=e?i[s]:i[n]]=!0}}else t[e]=!0}function No(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ho extends tn{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new In._date(t.adapters.date);s.init(e),b(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Vo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?Bo(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=zo.length-1;o>=zo.indexOf(i);o--){const i=zo[o];if(Io[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return zo[i?zo.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=zo.indexOf(t)+1,i=zo.length;e+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||Bo(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=N(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var $o=Object.freeze({__proto__:null,CategoryScale:class extends tn{static id="category";static defaults={ticks:{callback:mo}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:po(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return mo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:_o,LogarithmicScale:So,RadialLinearScale:Ro,TimeScale:Ho,TimeSeriesScale:class extends Ho{static id="timeseries";static defaults=Ho.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=jo(e,this.min),this._tableRange=jo(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;ot-e))}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(jo(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return jo(this._table,i*this._tableRange+this._minPos,!0)}}});const Yo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Uo=Yo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Xo(t){return Yo[t%Yo.length]}function qo(t){return Uo[t%Uo.length]}function Ko(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof $n?e=function(t,e){return t.backgroundColor=t.data.map((()=>Xo(e++))),e}(i,e):n instanceof Yn?e=function(t,e){return t.backgroundColor=t.data.map((()=>qo(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Xo(e),t.backgroundColor=qo(e),++e}(i,e))}}function Go(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var Zo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n,a=Go(s)||(r=n)&&(r.borderColor||r.backgroundColor)||o&&Go(o)||"rgba(0,0,0,0.1)"!==ue.borderColor||"rgba(0,0,0,0.1)"!==ue.backgroundColor;var r;if(!i.forceOverride&&a)return;const l=Ko(t);s.forEach(l)}};function Jo(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Qo(t){t.data.datasets.forEach((t=>{Jo(t)}))}var ta={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Qo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===Pi([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void Jo(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;cu&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const x=[],b=e+i-1,_=t[e].x,y=t[b].x-_;for(o=e;og&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&x.push({...t[e],x:p}),s!==u&&s!==i&&x.push({...t[s],x:p})}o>0&&i!==u&&x.push(t[i]),x.push(a),h=e,m=0,f=g=l,c=d=u=o}}return x}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Qo(t)}};function ea(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function ia(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function sa(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function na(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=ia(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new oo({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function oa(t){return t&&!1!==t.fill}function aa(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function ra(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function la(t,e,i){const s=[];for(let n=0;n=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&ua(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;oa(i)&&ua(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;oa(s)&&"beforeDatasetDraw"===i.drawTime&&ua(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const ba=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class _a extends $s{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=Si(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=ba(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=ya(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Oi(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Ie(t,this),this._draw(),ze(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Oi(t.rtl,this.left,this.width),h=Si(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=ba(o,d),x=this.isHorizontal(),b=this._computeTitleHeight();f=x?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+b,line:0}:{x:this.left+c,y:ft(n,this.top+b+c,this.bottom-e[0].height),line:0},Ai(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),x?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+b+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Ee(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=wi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?He(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,x?S+k:this.right,t.rtl),function(t,e,i){Ne(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),x)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=ya(y,t)+c}else f.y+=_})),Ti(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=Si(e.font),s=ki(e.padding);if(!e.display)return;const n=Oi(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ne(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=Si(t.font),i=ki(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;it.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=ki(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Ma extends $s{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=ki(i.padding);const o=s*Si(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=Si(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ne(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var wa={id:"title",_element:Ma,start(t,e,i){!function(t,e){const i=new Ma({ctx:t.ctx,options:e,chart:t});ls.configure(t,i,e),ls.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ls.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ka=new WeakMap;var Sa={id:"subtitle",start(t,e,i){const s=new Ma({ctx:t.ctx,options:i,chart:t});ls.configure(t,s,i),ls.addBox(t,s),ka.set(t,s)},stop(t){ls.removeBox(t,ka.get(t)),ka.delete(t)},beforeUpdate(t,e,i){const s=ka.get(t);ls.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Pa={average(t){if(!t.length)return!1;let e,i,s=new Set,n=0,o=0;for(e=0,i=t.length;et+e))/s.size,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i-1?t.split("\n"):t}function Oa(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Aa(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=Si(e.bodyFont),h=Si(e.titleFont),c=Si(e.footerFont),d=o.length,f=n.length,g=s.length,p=ki(e.padding);let m=p.height,x=0,b=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(b+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),b){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(b-g)*l.lineHeight+(b-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){x=Math.max(x,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),x+=p.width,{width:x,height:m}}function Ta(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function La(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return it.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||Ta(t,e,i,s),yAlign:s}}function Ea(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=wi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Ra(t,e,i){const s=ki(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Ia(t){return Da([],Ca(t))}function za(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Fa={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex{const e={before:[],lines:[],after:[]},n=za(i,t);Da(e.before,Ca(Va(n,"beforeLabel",this,t))),Da(e.lines,Va(n,"label",this,t)),Da(e.after,Ca(Va(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Ia(Va(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Va(i,"beforeFooter",this,t),n=Va(i,"footer",this,t),o=Va(i,"afterFooter",this,t);let a=[];return a=Da(a,Ca(s)),a=Da(a,Ca(n)),a=Da(a,Ca(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;at.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=za(t.callbacks,e);s.push(Va(i,"labelColor",this,e)),n.push(Va(i,"labelPointStyle",this,e)),o.push(Va(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=Pa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Aa(this,i),a=Object.assign({},t,e),r=La(this.chart,i,a),l=Ea(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=wi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,x,b,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,b=_+o,y=_-o):(p=d+f,m=p+o,b=_-o,y=_+o),x=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(b=u,_=b-o,p=m-o,x=m+o):(b=u+g,_=b+o,p=m+o,x=m-o),y=b),{x1:p,x2:m,x3:x,y1:b,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Oi(i.rtl,this.x,this.width);for(t.x=Ra(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=Si(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,He(t,{x:e,y:g,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),He(t,{x:i,y:g+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,g,h,l),t.strokeRect(e,g,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,g+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=Si(i.bodyFont);let d=c.lineHeight,f=0;const g=Oi(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let x,b,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Ra(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=Pa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Aa(this,t),a=Object.assign({},i,this._size),r=La(e,t,a),l=Ea(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=ki(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ai(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Ti(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e.filter((t=>this.chart.data.datasets[t.datasetIndex]&&void 0!==this.chart.getDatasetMeta(t.datasetIndex).controller.getParsed(t.index)));const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=Pa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var Wa={id:"tooltip",_element:Ba,positioners:Pa,afterInit(t,e,i){i&&(t.tooltip=new Ba({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Fa},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return Tn.register(Un,$o,go,t),Tn.helpers={...Hi},Tn._adapters=In,Tn.Animation=As,Tn.Animations=Ts,Tn.animator=bt,Tn.controllers=nn.controllers.items,Tn.DatasetController=js,Tn.Element=$s,Tn.elements=go,Tn.Interaction=Ki,Tn.layouts=ls,Tn.platforms=Ds,Tn.Scale=tn,Tn.Ticks=ae,Object.assign(Tn,Un,$o,go,t,Ds),Tn.WPMailSMTPChart=Tn,"undefined"!=typeof window&&(window.WPMailSMTPChart=Tn),Tn})); diff --git a/plugins/wp-mail-smtp/assets/js/vendor/chartjs-adapter-moment.min.js b/plugins/wp-mail-smtp/assets/js/vendor/chartjs-adapter-moment.min.js new file mode 100644 index 0000000..1454812 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/vendor/chartjs-adapter-moment.min.js @@ -0,0 +1,10 @@ +/*! + * chartjs-adapter-moment v1.0.1 + * https://www.chartjs.org + * (c) 2022 chartjs-adapter-moment Contributors + * Released under the MIT license + * + * NOTE: This file was modified. Chart object was renamed to WPMailSMTPChart, to prevent JS library conflicts with other plugins. + * "Chart" was replaced with "WPMailSMTPChart" 1 time in this file. + */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("moment"),require("chart.js")):"function"==typeof define&&define.amd?define(["moment","chart.js"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).moment,e.WPMailSMTPChart)}(this,(function(e,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=n(e);const a={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};t._adapters._date.override("function"==typeof f.default?{_id:"moment",formats:function(){return a},parse:function(e,t){return"string"==typeof e&&"string"==typeof t?e=f.default(e,t):e instanceof f.default||(e=f.default(e)),e.isValid()?e.valueOf():null},format:function(e,t){return f.default(e).format(t)},add:function(e,t,n){return f.default(e).add(t,n).valueOf()},diff:function(e,t,n){return f.default(e).diff(f.default(t),n)},startOf:function(e,t,n){return e=f.default(e),"isoWeek"===t?(n=Math.trunc(Math.min(Math.max(0,n),6)),e.isoWeekday(n).startOf("day").valueOf()):e.startOf(t).valueOf()},endOf:function(e,t){return f.default(e).endOf(t).valueOf()}}:{})})); \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/js/vendor/flatpickr.min.js b/plugins/wp-mail-smtp/assets/js/vendor/flatpickr.min.js new file mode 100644 index 0000000..357a860 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/vendor/flatpickr.min.js @@ -0,0 +1,2 @@ +/* flatpickr v4.6.9,, @license MIT */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).flatpickr=t()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},o=function(e,t){return void 0===t&&(t=2),("000"+e).slice(-1*t)},r=function(e){return!0===e?1:0};function l(e,t){var n;return function(){var a=this;clearTimeout(n),n=setTimeout((function(){return e.apply(a,arguments)}),t)}}var c=function(e){return e instanceof Array?e:[e]};function d(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function s(e,t,n){var a=window.document.createElement(e);return t=t||"",n=n||"",a.className=t,void 0!==n&&(a.textContent=n),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,t){return t(e)?e:e.parentNode?f(e.parentNode,t):void 0}function m(e,t){var n=s("div","numInputWrapper"),a=s("input","numInput "+e),i=s("span","arrowUp"),o=s("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==t)for(var r in t)a.setAttribute(r,t[r]);return n.appendChild(a),n.appendChild(i),n.appendChild(o),n}function g(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(t){return e.target}}var p=function(){},h=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},v={D:p,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*r(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:p,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:p,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},D={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[w.w(e,t,n)]},F:function(e,t,n){return h(w.n(e,t,n)-1,!1,t)},G:function(e,t,n){return o(w.h(e,t,n))},H:function(e){return o(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[r(e.getHours()>11)]},M:function(e,t){return h(e.getMonth(),!0,t)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var t=e.config,n=void 0===t?a:t,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,t,a){var i=a||r;return void 0===n.formatDate||c?t.split("").map((function(t,a,o){return w[t]&&"\\"!==o[a-1]?w[t](e,i,n):"\\"!==t?t:""})).join(""):n.formatDate(e,t,i)}},C=function(e){var t=e.config,n=void 0===t?a:t,o=e.l10n,r=void 0===o?i:o;return function(e,t,i,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var s=t||(n||a).dateFormat,u=String(e).trim();if("today"===u)l=new Date,i=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(n&&n.parseDate)l=n.parseDate(e,s);else{l=n&&n.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],g=0,p=0,h="";g=0?new Date:new Date(w.config.minDate.getTime()),n=x(w.config);t.setHours(n.hours,n.minutes,n.seconds,t.getMilliseconds()),w.selectedDates=[t],w.latestSelectedDateObj=t}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var t="keydown"===e.type,n=g(e),a=n;void 0!==w.amPM&&n===w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),l=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),d=parseInt(a.value,10),s=e.delta||(t?38===e.which?1:-1:0),u=d+c*s;if(void 0!==a.value&&2===a.value.length){var f=a===w.hourElement,m=a===w.minuteElement;ul&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&j(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+d===23:Math.abs(u-d)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var a=w._input.value;S(),be(),w._input.value!==a&&w._debouncedChange()}function S(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,t,n=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=n,t=w.amPM.textContent,n=e%12+12*r(t===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0);if(void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0)){var l=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(n=Math.min(n,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(o){var c=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&a=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(n)))}function F(e){var t=g(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||"Enter"===e.key&&!/[^\d]/.test(n.toString()))&&Q(n)}function A(e,t,n,a){return t instanceof Array?t.forEach((function(t){return A(e,t,n,a)})):e instanceof Array?e.forEach((function(e){return A(e,t,n,a)})):(e.addEventListener(t,n,a),void w._handlers.push({remove:function(){return e.removeEventListener(t,n)}}))}function N(){pe("onChange")}function P(e,t){var n=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0)}(t)&&!ve(t)&&o.classList.add("inRange"),w.weekNumbers&&1===w.config.showMonths&&"prevMonthDay"!==e&&n%7==1&&w.weekNumbers.insertAdjacentHTML("beforeend",""+w.config.getWeek(t)+""),pe("onDayCreate",o),o}function L(e){e.focus(),"range"===w.config.mode&&ae(e)}function W(e){for(var t=e>0?0:w.config.showMonths-1,n=e>0?w.config.showMonths:-1,a=t;a!=n;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&X(c.dateObj))return c}}function R(e,t){var n=ee(document.activeElement||document.body),a=void 0!==e?e:n?document.activeElement:void 0!==w.selectedDateElem&&ee(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&ee(w.todayDateElem)?w.todayDateElem:W(t>0?1:-1);void 0===a?w._input.focus():n?function(e,t){for(var n=-1===e.className.indexOf("Month")?e.dateObj.getMonth():w.currentMonth,a=t>0?w.config.showMonths:-1,i=t>0?1:-1,o=n-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=n-w.currentMonth===o?e.$i+t:t<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf("hidden")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return L(s)}w.changeMonth(i),R(W(i),0)}(a,t):L(a)}function B(e,t){for(var n=(new Date(e,t,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((t-1+12)%12,e),i=w.utils.getDaysInMonth(t,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",d=a+1-n,u=0;d<=a;d++,u++)o.appendChild(H(l,new Date(e,t-1,d),d,u));for(d=1;d<=i;d++,u++)o.appendChild(H("",new Date(e,t,d),d,u));for(var f=i+1;f<=42-n&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(H(c,new Date(e,t+1,f%i),f,u));var m=s("div","dayContainer");return m.appendChild(o),m}function J(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t1||"dropdown"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var n=s("option","flatpickr-monthDropdown-month");n.value=new Date(w.currentYear,t).getMonth().toString(),n.textContent=h(t,w.config.shorthandCurrentMonth,w.l10n),n.tabIndex=-1,w.currentMonth===t&&(n.selected=!0),w.monthsDropdownContainer.appendChild(n)}}}function U(){var e,t=s("div","flatpickr-month"),n=window.document.createDocumentFragment();w.config.showMonths>1||"static"===w.config.monthSelectorType?e=s("span","cur-month"):(w.monthsDropdownContainer=s("select","flatpickr-monthDropdown-months"),w.monthsDropdownContainer.setAttribute("aria-label",w.l10n.monthAriaLabel),A(w.monthsDropdownContainer,"change",(function(e){var t=g(e),n=parseInt(t.value,10);w.changeMonth(n-w.currentMonth),pe("onMonthChange")})),K(),e=w.monthsDropdownContainer);var a=m("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute("min",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute("max",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=s("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),n.appendChild(o),t.appendChild(n),{container:t,yearElement:i,monthElement:e}}function q(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var t=U();w.yearElements.push(t.yearElement),w.monthElements.push(t.monthElement),w.monthNav.appendChild(t.container)}w.monthNav.appendChild(w.nextMonthNav)}function $(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=s("div","flatpickr-weekdays");for(var e=w.config.showMonths;e--;){var t=s("div","flatpickr-weekdaycontainer");w.weekdayContainer.appendChild(t)}return z(),w.weekdayContainer}function z(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,n=t(w.l10n.weekdays.shorthand);e>0&&e\n "+n.join("")+"\n \n "}}function G(e,t){void 0===t&&(t=!0);var n=t?e:e-w.currentMonth;n<0&&!0===w._hidePrevMonthArrow||n>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=n,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,pe("onYearChange"),K()),J(),pe("onMonthChange"),De())}function V(e){return!(!w.config.appendTo||!w.config.appendTo.contains(e))||w.calendarContainer.contains(e)}function Z(e){if(w.isOpen&&!w.config.inline){var t=g(e),n=V(t),a=t===w.input||t===w.altInput||w.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)),i="blur"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!n&&!V(e.relatedTarget),o=!w.config.ignoredFocusElements.some((function(e){return e.contains(t)}));i&&o&&(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&""!==w.input.value&&void 0!==w.input.value&&I(),w.close(),w.config&&"range"===w.config.mode&&1===w.selectedDates.length&&(w.clear(!1),w.redraw()))}}function Q(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var t=e,n=w.currentYear!==t;w.currentYear=t||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),n&&(w.redraw(),pe("onYearChange"),K())}}function X(e,t){var n;void 0===t&&(t=!0);var a=w.parseDate(e,void 0,t);if(w.config.minDate&&a&&M(a,w.config.minDate,void 0!==t?t:!w.minDateHasTime)<0||w.config.maxDate&&a&&M(a,w.config.maxDate,void 0!==t?t:!w.maxDateHasTime)>0)return!1;if(!w.config.enable&&0===w.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!w.config.enable,o=null!==(n=w.config.enable)&&void 0!==n?n:w.config.disable,r=0,l=void 0;r=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function ee(e){return void 0!==w.daysContainer&&(-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&w.daysContainer.contains(e))}function te(e){!(e.target===w._input)||!(w.selectedDates.length>0||w._input.value.length>0)||e.relatedTarget&&V(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function ne(e){var t=g(e),n=w.config.wrap?p.contains(t):t===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!n),o=w.config.inline&&n&&!a;if(13===e.keyCode&&n){if(a)return w.setDate(w._input.value,!0,t===w.altInput?w.config.altFormat:w.config.dateFormat),t.blur();w.open()}else if(V(t)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(t);switch(e.keyCode){case 13:r?(e.preventDefault(),I(),se()):ue(e);break;case 27:e.preventDefault(),se();break;case 8:case 46:n&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||n)w.hourElement&&w.hourElement.focus();else if(e.preventDefault(),void 0!==w.daysContainer&&(!1===a||document.activeElement&&ee(document.activeElement))){var l=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(l),R(W(1),0)):R(void 0,l)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;w.daysContainer&&void 0!==t.$i||t===w.input||t===w.altInput?e.ctrlKey?(e.stopPropagation(),Q(w.currentYear-c),R(W(1),0)):r||R(void 0,7*c):t===w.currentYearElement?Q(w.currentYear-c):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),I(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),s=d.indexOf(t);if(-1!==s){var u=d[s+(e.shiftKey?-1:1)];e.preventDefault(),(u||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(t)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&t===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],S(),be();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],S(),be()}(n||V(t))&&pe("onKeyDown",e)}function ae(e){if(1===w.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),n=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,w.selectedDates[0].getTime()),i=Math.max(t,w.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>n&&(!l||c0&&m0&&m>l;return g?(f.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach((function(e){f.classList.remove(e)})),"continue"):o&&!g?"continue":(["startRange","inRange","endRange","notAllowed"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(t<=w.selectedDates[0].getTime()?"startRange":"endRange"),nt&&m===n&&f.classList.add("endRange"),m>=r&&(0===l||m<=l)&&(d=n,u=t,(c=m)>Math.min(d,u)&&c0||n.getMinutes()>0||n.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return X(e)})),w.selectedDates.length||"min"!==e||_(n),be()),w.daysContainer&&(de(),void 0!==n?w.currentYearElement[e]=n.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function re(){return w.config.wrap?p.querySelector("[data-input]"):p}function le(){"object"!=typeof w.config.locale&&void 0===T.l10ns[w.config.locale]&&w.config.errorHandler(new Error("flatpickr: invalid locale "+w.config.locale)),w.l10n=e(e({},T.l10ns.default),"object"==typeof w.config.locale?w.config.locale:"default"!==w.config.locale?T.l10ns[w.config.locale]:void 0),D.K="("+w.l10n.amPM[0]+"|"+w.l10n.amPM[1]+"|"+w.l10n.amPM[0].toLowerCase()+"|"+w.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===T.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function ce(e){if("function"!=typeof w.config.position){if(void 0!==w.calendarContainer){pe("onPreCalendarPosition");var t=e||w._positionElement,n=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=t.getBoundingClientRect(),c=window.innerHeight-l.bottom,s="above"===o||"below"!==o&&cn,u=window.pageYOffset+l.top+(s?-n-2:t.offsetHeight+2);if(d(w.calendarContainer,"arrowTop",!s),d(w.calendarContainer,"arrowBottom",s),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;"center"===r?(f-=(a-l.width)/2,m=!0):"right"===r&&(f-=a-l.width,g=!0),d(w.calendarContainer,"arrowLeft",!m&&!g),d(w.calendarContainer,"arrowCenter",m),d(w.calendarContainer,"arrowRight",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(d(w.calendarContainer,"rightMost",h),!w.config.static)if(w.calendarContainer.style.top=u+"px",h)if(v){var D=function(){for(var e=null,t=0;tw.currentMonth+w.config.showMonths-1)&&"range"!==w.config.mode;if(w.selectedDateElem=n,"single"===w.config.mode)w.selectedDates=[a];else if("multiple"===w.config.mode){var o=ve(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else"range"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(S(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(pe("onYearChange"),K()),pe("onMonthChange")}if(De(),J(),be(),i||"range"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():L(n),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l="single"===w.config.mode&&!w.config.enableTime,c="range"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&se()}N()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=A,w._setHoursFromDate=_,w._positionCalendar=ce,w.changeMonth=G,w.changeYear=Q,w.clear=function(e,t){void 0===e&&(e=!0);void 0===t&&(t=!0);w.input.value="",void 0!==w.altInput&&(w.altInput.value="");void 0!==w.mobileInput&&(w.mobileInput.value="");w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===t&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth());if(!0===w.config.enableTime){var n=x(w.config),a=n.hours,i=n.minutes,o=n.seconds;O(a,i,o)}w.redraw(),e&&pe("onChange")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove("open"),void 0!==w._input&&w._input.classList.remove("active"));pe("onClose")},w._createElement=s,w.destroy=function(){void 0!==w.config&&pe("onDestroy");for(var e=w._handlers.length;e--;)w._handlers[e].remove();if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var t=w.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type="text",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput);w.input&&(w.input.type=w.input._type,w.input.classList.remove("flatpickr-input"),w.input.removeAttribute("readonly"));["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=X,w.jumpToDate=P,w.open=function(e,t){void 0===t&&(t=w._positionElement);if(!0===w.isMobile){if(e){e.preventDefault();var n=g(e);n&&n.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void pe("onOpen")}if(w._input.disabled||w.config.inline)return;var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add("open"),w._input.classList.add("active"),pe("onOpen"),ce(t));!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))},w.redraw=de,w.set=function(e,t){if(null!==e&&"object"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==fe[a]&&fe[a].forEach((function(e){return e()}));else w.config[e]=t,void 0!==fe[e]?fe[e].forEach((function(e){return e()})):n.indexOf(e)>-1&&(w.config[e]=c(t));w.redraw(),be(!0)},w.setDate=function(e,t,n){void 0===t&&(t=!1);void 0===n&&(n=w.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(t);me(e,n),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),P(void 0,t),_(),0===w.selectedDates.length&&w.clear(!1);be(t),t&&pe("onChange")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var fe={locale:[le,z],showMonths:[q,k,$],minDate:[P],maxDate:[P],clickOpens:[function(){!0===w.config.clickOpens?(A(w._input,"focus",w.open),A(w._input,"click",w.open)):(w._input.removeEventListener("focus",w.open),w._input.removeEventListener("click",w.open))}]};function me(e,t){var n=[];if(e instanceof Array)n=e.map((function(e){return w.parseDate(e,t)}));else if(e instanceof Date||"number"==typeof e)n=[w.parseDate(e,t)];else if("string"==typeof e)switch(w.config.mode){case"single":case"time":n=[w.parseDate(e,t)];break;case"multiple":n=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,t)}));break;case"range":n=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,t)}))}else w.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?n:n.filter((function(e){return e instanceof Date&&X(e,!1)})),"range"===w.config.mode&&w.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function ge(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function pe(e,t){if(void 0!==w.config){var n=w.config[e];if(void 0!==n&&n.length>0)for(var a=0;n[a]&&a1||"static"===w.config.monthSelectorType?w.monthElements[t].textContent=h(n.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+" ":w.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function we(e){return w.selectedDates.map((function(t){return w.formatDate(t,e)})).filter((function(e,t,n){return"range"!==w.config.mode||w.config.enableTime||n.indexOf(e)===t})).join("range"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):""),w.input.value=we(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=we(w.config.altFormat)),!1!==e&&pe("onValueUpdate")}function Ce(e){var t=g(e),n=w.prevMonthNav.contains(t),a=w.nextMonthNav.contains(t);n||a?G(n?-1:1):w.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?w.changeYear(w.currentYear+1):t.classList.contains("arrowDown")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var t=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,"enable",{get:function(){return w.config._enable},set:function(e){w.config._enable=ge(e)}}),Object.defineProperty(w.config,"disable",{get:function(){return w.config._disable},set:function(e){w.config._disable=ge(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=T.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):l+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=T.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):d+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(w.config,"minDate",{get:function(){return w.config._minDate},set:oe("min")}),Object.defineProperty(w.config,"maxDate",{get:function(){return w.config._maxDate},set:oe("max")});var s=function(e){return function(t){w.config["min"===e?"_minTime":"_maxTime"]=w.parseDate(t,"H:i:S")}};Object.defineProperty(w.config,"minTime",{get:function(){return w.config._minTime},set:s("min")}),Object.defineProperty(w.config,"maxTime",{get:function(){return w.config._maxTime},set:s("max")}),"time"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0);Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(E).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=re().className+" "+w.config.altInputClass);pe("onParseConfig")}(),le(),function(){if(w.input=re(),!w.input)return void w.config.errorHandler(new Error("Invalid input element specified"));w.input._type=w.input.type,w.input.type="text",w.input.classList.add("flatpickr-input"),w._input=w.input,w.config.altInput&&(w.altInput=s(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type="text",w.input.setAttribute("type","hidden"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling));w.config.allowInput||w._input.setAttribute("readonly","readonly");w._positionElement=w.config.positionElement||w._input}(),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||("INPUT"!==w.input.nodeName&&"TEXTAREA"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&me(e,w.config.dateFormat);w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]);void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,"H:i"));void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,"H:i"));w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=w.currentMonth),void 0===t&&(t=w.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=s("div","flatpickr-calendar"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=s("div","flatpickr-months"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=s("span","flatpickr-prev-month"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=s("span","flatpickr-next-month"),w.nextMonthNav.innerHTML=w.config.nextArrow,q(),Object.defineProperty(w,"_hidePrevMonthArrow",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(d(w.prevMonthNav,"flatpickr-disabled",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,"_hideNextMonthArrow",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(d(w.nextMonthNav,"flatpickr-disabled",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],De(),w.monthNav)),w.innerContainer=s("div","flatpickr-innerContainer"),w.config.weekNumbers){var t=function(){w.calendarContainer.classList.add("hasWeeks");var e=s("div","flatpickr-weekwrapper");e.appendChild(s("span","flatpickr-weekday",w.l10n.weekAbbreviation));var t=s("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,a=t.weekNumbers;w.innerContainer.appendChild(n),w.weekNumbers=a,w.weekWrapper=n}w.rContainer=s("div","flatpickr-rContainer"),w.rContainer.appendChild($()),w.daysContainer||(w.daysContainer=s("div","flatpickr-days"),w.daysContainer.tabIndex=-1),J(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add("hasTime"),w.config.noCalendar&&w.calendarContainer.classList.add("noCalendar");var e=x(w.config);w.timeContainer=s("div","flatpickr-time"),w.timeContainer.tabIndex=-1;var t=s("span","flatpickr-time-separator",":"),n=m("flatpickr-hour",{"aria-label":w.l10n.hourAriaLabel});w.hourElement=n.getElementsByTagName("input")[0];var a=m("flatpickr-minute",{"aria-label":w.l10n.minuteAriaLabel});w.minuteElement=a.getElementsByTagName("input")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():e.minutes),w.hourElement.setAttribute("step",w.config.hourIncrement.toString()),w.minuteElement.setAttribute("step",w.config.minuteIncrement.toString()),w.hourElement.setAttribute("min",w.config.time_24hr?"0":"1"),w.hourElement.setAttribute("max",w.config.time_24hr?"23":"12"),w.hourElement.setAttribute("maxlength","2"),w.minuteElement.setAttribute("min","0"),w.minuteElement.setAttribute("max","59"),w.minuteElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(n),w.timeContainer.appendChild(t),w.timeContainer.appendChild(a),w.config.time_24hr&&w.timeContainer.classList.add("time24hr");if(w.config.enableSeconds){w.timeContainer.classList.add("hasSeconds");var i=m("flatpickr-second");w.secondElement=i.getElementsByTagName("input")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():e.seconds),w.secondElement.setAttribute("step",w.minuteElement.getAttribute("step")),w.secondElement.setAttribute("min","0"),w.secondElement.setAttribute("max","59"),w.secondElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(s("span","flatpickr-time-separator",":")),w.timeContainer.appendChild(i)}w.config.time_24hr||(w.amPM=s("span","flatpickr-am-pm",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM));return w.timeContainer}());d(w.calendarContainer,"rangeMode","range"===w.config.mode),d(w.calendarContainer,"animate",!0===w.config.animate),d(w.calendarContainer,"multiMonth",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?"inline":"static"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=s("div","flatpickr-wrapper");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){w.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll("[data-"+e+"]"),(function(t){return A(t,"click",w[e])}))}));if(w.isMobile)return void function(){var e=w.config.enableTime?w.config.noCalendar?"time":"datetime-local":"date";w.mobileInput=s("input",w.input.className+" flatpickr-mobile"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr));w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,"Y-m-d"));w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,"Y-m-d"));w.input.getAttribute("step")&&(w.mobileInput.step=String(w.input.getAttribute("step")));w.input.type="hidden",void 0!==w.altInput&&(w.altInput.type="hidden");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}A(w.mobileInput,"change",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),pe("onChange"),pe("onClose")}))}();var e=l(ie,50);w._debouncedChange=l(N,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&A(w.daysContainer,"mouseover",(function(e){"range"===w.config.mode&&ae(g(e))}));A(window.document.body,"keydown",ne),w.config.inline||w.config.static||A(window,"resize",e);void 0!==window.ontouchstart?A(window.document,"touchstart",Z):A(window.document,"mousedown",Z);A(window.document,"focus",Z,{capture:!0}),!0===w.config.clickOpens&&(A(w._input,"focus",w.open),A(w._input,"click",w.open));void 0!==w.daysContainer&&(A(w.monthNav,"click",Ce),A(w.monthNav,["keyup","increment"],F),A(w.daysContainer,"click",ue));if(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var t=function(e){return g(e).select()};A(w.timeContainer,["increment"],I),A(w.timeContainer,"blur",I,{capture:!0}),A(w.timeContainer,"click",Y),A([w.hourElement,w.minuteElement],["focus","click"],t),void 0!==w.secondElement&&A(w.secondElement,"focus",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&A(w.amPM,"click",(function(e){I(e),N()}))}w.config.allowInput&&A(w._input,"blur",te)}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&_(w.config.noCalendar?w.latestSelectedDateObj:void 0),be(!1)),k();var t=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&t&&ce(),pe("onReady")}(),w}function k(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i').html(that.buttons[key].text).addClass(that.buttons[key].btnClass).prop("disabled",that.buttons[key].isDisabled).css("display",that.buttons[key].isHidden?"none":"").click(function(e){e.preventDefault();var res=that.buttons[key].action.apply(that,[that.buttons[key]]);that.onAction.apply(that,[key,that.buttons[key]]);that._stopCountDown();if(typeof res==="undefined"||res){that.close();}});that.buttons[key].el=button_element;that.buttons[key].setText=function(text){button_element.html(text);};that.buttons[key].addClass=function(className){button_element.addClass(className);};that.buttons[key].removeClass=function(className){button_element.removeClass(className);};that.buttons[key].disable=function(){that.buttons[key].isDisabled=true;button_element.prop("disabled",true);};that.buttons[key].enable=function(){that.buttons[key].isDisabled=false;button_element.prop("disabled",false);};that.buttons[key].show=function(){that.buttons[key].isHidden=false;button_element.css("display","");};that.buttons[key].hide=function(){that.buttons[key].isHidden=true;button_element.css("display","none");};that["$_"+key]=that["$$"+key]=button_element;that.$btnc.append(button_element);});if(total_buttons===0){this.$btnc.hide();}if(this.closeIcon===null&&total_buttons===0){this.closeIcon=true;}if(this.closeIcon){if(this.closeIconClass){var closeHtml='';this.$closeIcon.html(closeHtml);}this.$closeIcon.click(function(e){e.preventDefault();var buttonName=false;var shouldClose=false;var str;if(typeof that.closeIcon==="function"){str=that.closeIcon();}else{str=that.closeIcon;}if(typeof str==="string"&&typeof that.buttons[str]!=="undefined"){buttonName=str;shouldClose=false;}else{if(typeof str==="undefined"||!!(str)===true){shouldClose=true;}else{shouldClose=false;}}if(buttonName){var btnResponse=that.buttons[buttonName].action.apply(that);shouldClose=(typeof btnResponse==="undefined")||!!(btnResponse);}if(shouldClose){that.close();}});this.$closeIcon.show();}else{this.$closeIcon.hide();}},setTitle:function(string,force){force=force||false;if(typeof string!=="undefined"){if(typeof string==="string"){this.title=string;}else{if(typeof string==="function"){if(typeof string.promise==="function"){console.error("Promise was returned from title function, this is not supported.");}var response=string();if(typeof response==="string"){this.title=response;}else{this.title=false;}}else{this.title=false;}}}if(this.isAjaxLoading&&!force){return;}this.$title.html(this.title||"");this.updateTitleContainer();},setIcon:function(iconClass,force){force=force||false;if(typeof iconClass!=="undefined"){if(typeof iconClass==="string"){this.icon=iconClass;}else{if(typeof iconClass==="function"){var response=iconClass();if(typeof response==="string"){this.icon=response;}else{this.icon=false;}}else{this.icon=false;}}}if(this.isAjaxLoading&&!force){return;}this.$icon.html(this.icon?'':"");this.updateTitleContainer();},updateTitleContainer:function(){if(!this.title&&!this.icon){this.$titleContainer.hide();}else{this.$titleContainer.show();}},setContentPrepend:function(content,force){if(!content){return;}this.contentParsed.prepend(content);},setContentAppend:function(content){if(!content){return;}this.contentParsed.append(content);},setContent:function(content,force){force=!!force;var that=this;if(content){this.contentParsed.html("").append(content);}if(this.isAjaxLoading&&!force){return;}this.$content.html("");this.$content.append(this.contentParsed);setTimeout(function(){that.$body.find("input[autofocus]:visible:first").focus();},100);},loadingSpinner:false,showLoading:function(disableButtons){this.loadingSpinner=true;this.$jconfirmBox.addClass("loading");if(disableButtons){this.$btnc.find("button").prop("disabled",true);}},hideLoading:function(enableButtons){this.loadingSpinner=false;this.$jconfirmBox.removeClass("loading");if(enableButtons){this.$btnc.find("button").prop("disabled",false);}},ajaxResponse:false,contentParsed:"",isAjax:false,isAjaxLoading:false,_parseContent:function(){var that=this;var e=" ";if(typeof this.content==="function"){var res=this.content.apply(this);if(typeof res==="string"){this.content=res;}else{if(typeof res==="object"&&typeof res.always==="function"){this.isAjax=true;this.isAjaxLoading=true;res.always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded==="function"){that.contentLoaded(data,status,xhr);}});this.content=e;}else{this.content=e;}}}if(typeof this.content==="string"&&this.content.substr(0,4).toLowerCase()==="url:"){this.isAjax=true;this.isAjaxLoading=true;var u=this.content.substring(4,this.content.length);$.get(u).done(function(html){that.contentParsed.html(html);}).always(function(data,status,xhr){that.ajaxResponse={data:data,status:status,xhr:xhr};that._contentReady.resolve(data,status,xhr);if(typeof that.contentLoaded==="function"){that.contentLoaded(data,status,xhr);}});}if(!this.content){this.content=e;}if(!this.isAjax){this.contentParsed.html(this.content);this.setContent();that._contentReady.resolve();}},_stopCountDown:function(){clearInterval(this.autoCloseInterval);if(this.$cd){this.$cd.remove();}},_startCountDown:function(){var that=this;var opt=this.autoClose.split("|");if(opt.length!==2){console.error("Invalid option for autoClose. example 'close|10000'");return false;}var button_key=opt[0];var time=parseInt(opt[1]);if(typeof this.buttons[button_key]==="undefined"){console.error("Invalid button key '"+button_key+"' for autoClose");return false;}var seconds=Math.ceil(time/1000);this.$cd=$(' ('+seconds+")").appendTo(this["$_"+button_key]);this.autoCloseInterval=setInterval(function(){that.$cd.html(" ("+(seconds-=1)+") ");if(seconds<=0){that["$$"+button_key].trigger("click");that._stopCountDown();}},1000);},_getKey:function(key){switch(key){case 192:return"tilde";case 13:return"enter";case 16:return"shift";case 9:return"tab";case 20:return"capslock";case 17:return"ctrl";case 91:return"win";case 18:return"alt";case 27:return"esc";case 32:return"space";}var initial=String.fromCharCode(key);if(/^[A-z0-9]+$/.test(initial)){return initial.toLowerCase();}else{return false;}},reactOnKey:function(e){var that=this;var a=$(".jconfirm");if(a.eq(a.length-1)[0]!==this.$el[0]){return false;}var key=e.which;if(this.$content.find(":input").is(":focus")&&/13|32/.test(key)){return false;}var keyChar=this._getKey(key);if(keyChar==="esc"&&this.escapeKey){if(this.escapeKey===true){this.$scrollPane.trigger("click");}else{if(typeof this.escapeKey==="string"||typeof this.escapeKey==="function"){var buttonKey;if(typeof this.escapeKey==="function"){buttonKey=this.escapeKey();}else{buttonKey=this.escapeKey;}if(buttonKey){if(typeof this.buttons[buttonKey]==="undefined"){console.warn("Invalid escapeKey, no buttons found with key "+buttonKey);}else{this["$_"+buttonKey].trigger("click");}}}}}$.each(this.buttons,function(key,button){if(button.keys.indexOf(keyChar)!==-1){that["$_"+key].trigger("click");}});},setDialogCenter:function(){console.info("setDialogCenter is deprecated, dialogs are centered with CSS3 tables");},_unwatchContent:function(){clearInterval(this._timer);},close:function(onClosePayload){var that=this;if(typeof this.onClose==="function"){this.onClose(onClosePayload);}this._unwatchContent();$(window).unbind("resize."+this._id);$(window).unbind("keyup."+this._id);$(window).unbind("jcKeyDown."+this._id);if(this.draggable){$(window).unbind("mousemove."+this._id);$(window).unbind("mouseup."+this._id);this.$titleContainer.unbind("mousedown");}that.$el.removeClass(that.loadedClass);$("body").removeClass("jconfirm-no-scroll-"+that._id);that.$jconfirmBoxContainer.removeClass("jconfirm-no-transition");setTimeout(function(){that.$body.addClass(that.closeAnimationParsed);that.$jconfirmBg.addClass("jconfirm-bg-h");var closeTimer=(that.closeAnimation==="none")?1:that.animationSpeed;setTimeout(function(){that.$el.remove();var l=w.jconfirm.instances;var i=w.jconfirm.instances.length-1;for(i;i>=0;i--){if(w.jconfirm.instances[i]._id===that._id){w.jconfirm.instances.splice(i,1);}}if(!w.jconfirm.instances.length){if(that.scrollToPreviousElement&&w.jconfirm.lastFocused&&w.jconfirm.lastFocused.length&&$.contains(document,w.jconfirm.lastFocused[0])){var $lf=w.jconfirm.lastFocused;if(that.scrollToPreviousElementAnimate){var st=$(window).scrollTop();var ot=w.jconfirm.lastFocused.offset().top;var wh=$(window).height();if(!(ot>st&&ot<(st+wh))){var scrollTo=(ot-Math.round((wh/3)));$("html, body").animate({scrollTop:scrollTo},that.animationSpeed,"swing",function(){$lf.focus();});}else{$lf.focus();}}else{$lf.focus();}w.jconfirm.lastFocused=false;}}if(typeof that.onDestroy==="function"){that.onDestroy();}},closeTimer*0.4);},50);return true;},open:function(){if(this.isOpen()){return false;}this._buildHTML();this._bindEvents();this._open();return true;},setStartingPoint:function(){var el=false;if(this.animateFromElement!==true&&this.animateFromElement){el=this.animateFromElement;w.jconfirm.lastClicked=false;}else{if(w.jconfirm.lastClicked&&this.animateFromElement===true){el=w.jconfirm.lastClicked;w.jconfirm.lastClicked=false;}else{return false;}}if(!el){return false;}var offset=el.offset();var iTop=el.outerHeight()/2;var iLeft=el.outerWidth()/2;iTop-=this.$jconfirmBox.outerHeight()/2;iLeft-=this.$jconfirmBox.outerWidth()/2;var sourceTop=offset.top+iTop;sourceTop=sourceTop-this._scrollTop();var sourceLeft=offset.left+iLeft;var wh=$(window).height()/2;var ww=$(window).width()/2;var targetH=wh-this.$jconfirmBox.outerHeight()/2;var targetW=ww-this.$jconfirmBox.outerWidth()/2;sourceTop-=targetH;sourceLeft-=targetW;if(Math.abs(sourceTop)>wh||Math.abs(sourceLeft)>ww){return false;}this.$jconfirmBoxContainer.css("transform","translate("+sourceLeft+"px, "+sourceTop+"px)");},_open:function(){var that=this;if(typeof that.onOpenBefore==="function"){that.onOpenBefore();}this.$body.removeClass(this.animationParsed);this.$jconfirmBg.removeClass("jconfirm-bg-h");this.$body.focus();that.$jconfirmBoxContainer.css("transform","translate("+0+"px, "+0+"px)");setTimeout(function(){that.$body.css(that._getCSS(that.animationSpeed,1));that.$body.css({"transition-property":that.$body.css("transition-property")+", margin"});that.$jconfirmBoxContainer.addClass("jconfirm-no-transition");that._modalReady.resolve();if(typeof that.onOpen==="function"){that.onOpen();}that.$el.addClass(that.loadedClass);},this.animationSpeed);},loadedClass:"jconfirm-open",isClosed:function(){return !this.$el||this.$el.parent().length===0;},isOpen:function(){return !this.isClosed();},toggle:function(){if(!this.isOpen()){this.open();}else{this.close();}}};w.jconfirm.instances=[];w.jconfirm.lastFocused=false;w.jconfirm.pluginDefaults={template:'
',title:"Hello",titleClass:"",type:"default",typeAnimated:true,draggable:true,dragWindowGap:15,dragWindowBorder:true,animateFromElement:true,alignMiddle:true,smoothContent:true,content:"Are you sure to continue?",buttons:{},defaultButtons:{ok:{action:function(){}},close:{action:function(){}}},contentLoaded:function(){},icon:"",lazyOpen:false,bgOpacity:null,theme:"light",animation:"scale",closeAnimation:"scale",animationSpeed:400,animationBounce:1,escapeKey:true,rtl:false,container:"body",containerFluid:false,backgroundDismiss:false,backgroundDismissAnimation:"shake",autoClose:false,closeIcon:null,closeIconClass:false,watchInterval:100,columnClass:"col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1",boxWidth:"50%",scrollToPreviousElement:true,scrollToPreviousElementAnimate:true,useBootstrap:true,offsetTop:40,offsetBottom:40,bootstrapClasses:{container:"container",containerFluid:"container-fluid",row:"row"},onContentReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}};var keyDown=false;$(window).on("keydown",function(e){if(!keyDown){var $target=$(e.target);var pass=false;if($target.closest(".jconfirm-box").length){pass=true;}if(pass){$(window).trigger("jcKeyDown");}keyDown=true;}});$(window).on("keyup",function(){keyDown=false;});w.jconfirm.lastClicked=false;$(document).on("mousedown","button, a, [jc-source]",function(){w.jconfirm.lastClicked=$(this);});})); \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/js/vendor/jquery.matchHeight.js b/plugins/wp-mail-smtp/assets/js/vendor/jquery.matchHeight.js new file mode 100644 index 0000000..48925b5 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/vendor/jquery.matchHeight.js @@ -0,0 +1,388 @@ +/** +* jquery-match-height 0.7.2 by @liabru +* http://brm.io/jquery-match-height/ +* License: MIT +*/ + +;(function(factory) { // eslint-disable-line no-extra-semi + 'use strict'; + if (typeof define === 'function' && define.amd) { + // AMD + define(['jquery'], factory); + } else if (typeof module !== 'undefined' && module.exports) { + // CommonJS + module.exports = factory(require('jquery')); + } else { + // Global + factory(jQuery); + } +})(function($) { + /* + * internal + */ + + var _previousResizeWidth = -1, + _updateTimeout = -1; + + /* + * _parse + * value parse utility function + */ + + var _parse = function(value) { + // parse value and convert NaN to 0 + return parseFloat(value) || 0; + }; + + /* + * _rows + * utility function returns array of jQuery selections representing each row + * (as displayed after float wrapping applied by browser) + */ + + var _rows = function(elements) { + var tolerance = 1, + $elements = $(elements), + lastTop = null, + rows = []; + + // group elements by their top position + $elements.each(function(){ + var $that = $(this), + top = $that.offset().top - _parse($that.css('margin-top')), + lastRow = rows.length > 0 ? rows[rows.length - 1] : null; + + if (lastRow === null) { + // first item on the row, so just push it + rows.push($that); + } else { + // if the row top is the same, add to the row group + if (Math.floor(Math.abs(lastTop - top)) <= tolerance) { + rows[rows.length - 1] = lastRow.add($that); + } else { + // otherwise start a new row group + rows.push($that); + } + } + + // keep track of the last row top + lastTop = top; + }); + + return rows; + }; + + /* + * _parseOptions + * handle plugin options + */ + + var _parseOptions = function(options) { + var opts = { + byRow: true, + property: 'height', + target: null, + remove: false + }; + + if (typeof options === 'object') { + return $.extend(opts, options); + } + + if (typeof options === 'boolean') { + opts.byRow = options; + } else if (options === 'remove') { + opts.remove = true; + } + + return opts; + }; + + /* + * matchHeight + * plugin definition + */ + + var matchHeight = $.fn.matchHeight = function(options) { + var opts = _parseOptions(options); + + // handle remove + if (opts.remove) { + var that = this; + + // remove fixed height from all selected elements + this.css(opts.property, ''); + + // remove selected elements from all groups + $.each(matchHeight._groups, function(key, group) { + group.elements = group.elements.not(that); + }); + + // TODO: cleanup empty groups + + return this; + } + + if (this.length <= 1 && !opts.target) { + return this; + } + + // keep track of this group so we can re-apply later on load and resize events + matchHeight._groups.push({ + elements: this, + options: opts + }); + + // match each element's height to the tallest element in the selection + matchHeight._apply(this, opts); + + return this; + }; + + /* + * plugin global options + */ + + matchHeight.version = '0.7.2'; + matchHeight._groups = []; + matchHeight._throttle = 80; + matchHeight._maintainScroll = false; + matchHeight._beforeUpdate = null; + matchHeight._afterUpdate = null; + matchHeight._rows = _rows; + matchHeight._parse = _parse; + matchHeight._parseOptions = _parseOptions; + + /* + * matchHeight._apply + * apply matchHeight to given elements + */ + + matchHeight._apply = function(elements, options) { + var opts = _parseOptions(options), + $elements = $(elements), + rows = [$elements]; + + // take note of scroll position + var scrollTop = $(window).scrollTop(), + htmlHeight = $('html').outerHeight(true); + + // get hidden parents + var $hiddenParents = $elements.parents().filter(':hidden'); + + // cache the original inline style + $hiddenParents.each(function() { + var $that = $(this); + $that.data('style-cache', $that.attr('style')); + }); + + // temporarily must force hidden parents visible + $hiddenParents.css('display', 'block'); + + // get rows if using byRow, otherwise assume one row + if (opts.byRow && !opts.target) { + + // must first force an arbitrary equal height so floating elements break evenly + $elements.each(function() { + var $that = $(this), + display = $that.css('display'); + + // temporarily force a usable display value + if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') { + display = 'block'; + } + + // cache the original inline style + $that.data('style-cache', $that.attr('style')); + + $that.css({ + 'display': display, + 'padding-top': '0', + 'padding-bottom': '0', + 'margin-top': '0', + 'margin-bottom': '0', + 'border-top-width': '0', + 'border-bottom-width': '0', + 'height': '100px', + 'overflow': 'hidden' + }); + }); + + // get the array of rows (based on element top position) + rows = _rows($elements); + + // revert original inline styles + $elements.each(function() { + var $that = $(this); + $that.attr('style', $that.data('style-cache') || ''); + }); + } + + $.each(rows, function(key, row) { + var $row = $(row), + targetHeight = 0; + + if (!opts.target) { + // skip apply to rows with only one item + if (opts.byRow && $row.length <= 1) { + $row.css(opts.property, ''); + return; + } + + // iterate the row and find the max height + $row.each(function(){ + var $that = $(this), + style = $that.attr('style'), + display = $that.css('display'); + + // temporarily force a usable display value + if (display !== 'inline-block' && display !== 'flex' && display !== 'inline-flex') { + display = 'block'; + } + + // ensure we get the correct actual height (and not a previously set height value) + var css = { 'display': display }; + css[opts.property] = ''; + $that.css(css); + + // find the max height (including padding, but not margin) + if ($that.outerHeight(false) > targetHeight) { + targetHeight = $that.outerHeight(false); + } + + // revert styles + if (style) { + $that.attr('style', style); + } else { + $that.css('display', ''); + } + }); + } else { + // if target set, use the height of the target element + targetHeight = opts.target.outerHeight(false); + } + + // iterate the row and apply the height to all elements + $row.each(function(){ + var $that = $(this), + verticalPadding = 0; + + // don't apply to a target + if (opts.target && $that.is(opts.target)) { + return; + } + + // handle padding and border correctly (required when not using border-box) + if ($that.css('box-sizing') !== 'border-box') { + verticalPadding += _parse($that.css('border-top-width')) + _parse($that.css('border-bottom-width')); + verticalPadding += _parse($that.css('padding-top')) + _parse($that.css('padding-bottom')); + } + + // set the height (accounting for padding and border) + $that.css(opts.property, (targetHeight - verticalPadding) + 'px'); + }); + }); + + // revert hidden parents + $hiddenParents.each(function() { + var $that = $(this); + $that.attr('style', $that.data('style-cache') || null); + }); + + // restore scroll position if enabled + if (matchHeight._maintainScroll) { + $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true)); + } + + return this; + }; + + /* + * matchHeight._applyDataApi + * applies matchHeight to all elements with a data-match-height attribute + */ + + matchHeight._applyDataApi = function() { + var groups = {}; + + // generate groups by their groupId set by elements using data-match-height + $('[data-match-height], [data-mh]').each(function() { + var $this = $(this), + groupId = $this.attr('data-mh') || $this.attr('data-match-height'); + + if (groupId in groups) { + groups[groupId] = groups[groupId].add($this); + } else { + groups[groupId] = $this; + } + }); + + // apply matchHeight to each group + $.each(groups, function() { + this.matchHeight(true); + }); + }; + + /* + * matchHeight._update + * updates matchHeight on all current groups with their correct options + */ + + var _update = function(event) { + if (matchHeight._beforeUpdate) { + matchHeight._beforeUpdate(event, matchHeight._groups); + } + + $.each(matchHeight._groups, function() { + matchHeight._apply(this.elements, this.options); + }); + + if (matchHeight._afterUpdate) { + matchHeight._afterUpdate(event, matchHeight._groups); + } + }; + + matchHeight._update = function(throttle, event) { + // prevent update if fired from a resize event + // where the viewport width hasn't actually changed + // fixes an event looping bug in IE8 + if (event && event.type === 'resize') { + var windowWidth = $(window).width(); + if (windowWidth === _previousResizeWidth) { + return; + } + _previousResizeWidth = windowWidth; + } + + // throttle updates + if (!throttle) { + _update(event); + } else if (_updateTimeout === -1) { + _updateTimeout = setTimeout(function() { + _update(event); + _updateTimeout = -1; + }, matchHeight._throttle); + } + }; + + /* + * bind events + */ + + // apply on DOM ready event + $(matchHeight._applyDataApi); + + // use on or bind where supported + var on = $.fn.on ? 'on' : 'bind'; + + // update heights on load and resize events + $(window)[on]('load', function(event) { + matchHeight._update(false, event); + }); + + // throttled update heights on resize events + $(window)[on]('resize orientationchange', function(event) { + matchHeight._update(true, event); + }); + +}); diff --git a/plugins/wp-mail-smtp/assets/js/vendor/jquery.matchHeight.min.js b/plugins/wp-mail-smtp/assets/js/vendor/jquery.matchHeight.min.js new file mode 100644 index 0000000..fc942dd --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/vendor/jquery.matchHeight.min.js @@ -0,0 +1 @@ +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(l){function c(t){return parseFloat(t)||0}function h(t){var e=l(t),n=null,a=[];return e.each(function(){var t=l(this),e=t.offset().top-c(t.css("margin-top")),o=0a&&(a=t.outerHeight(!1)),e?t.attr("style",e):t.css("display","")})}o.each(function(){var t=l(this),e=0;i.target&&t.is(i.target)||("border-box"!==t.css("box-sizing")&&(e+=c(t.css("border-top-width"))+c(t.css("border-bottom-width")),e+=c(t.css("padding-top"))+c(t.css("padding-bottom"))),t.css(i.property,a-e+"px"))})}),s.each(function(){var t=l(this);t.attr("style",t.data("style-cache")||null)}),d._maintainScroll&&l(window).scrollTop(a/r*l("html").outerHeight(!0)),this},d._applyDataApi=function(){var o={};l("[data-match-height], [data-mh]").each(function(){var t=l(this),e=t.attr("data-mh")||t.attr("data-match-height");o[e]=e in o?o[e].add(t):t}),l.each(o,function(){this.matchHeight(!0)})};function i(t){d._beforeUpdate&&d._beforeUpdate(t,d._groups),l.each(d._groups,function(){d._apply(this.elements,this.options)}),d._afterUpdate&&d._afterUpdate(t,d._groups)}d._update=function(t,e){if(e&&"resize"===e.type){var o=l(window).width();if(o===n)return;n=o}t?-1===a&&(a=setTimeout(function(){i(e),a=-1},d._throttle)):i(e)},l(d._applyDataApi);var t=l.fn.on?"on":"bind";l(window)[t]("load",function(t){d._update(!1,t)}),l(window)[t]("resize orientationchange",function(t){d._update(!0,t)})}); \ No newline at end of file diff --git a/plugins/wp-mail-smtp/assets/js/vendor/lity.min.js b/plugins/wp-mail-smtp/assets/js/vendor/lity.min.js new file mode 100644 index 0000000..40d0f34 --- /dev/null +++ b/plugins/wp-mail-smtp/assets/js/vendor/lity.min.js @@ -0,0 +1,5 @@ +/*! Lity - v2.4.1 - 2020-04-26 +* http://sorgalla.com/lity/ +* Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */ + +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return b(a,c)}):"object"==typeof module&&"object"==typeof module.exports?module.exports=b(a,require("jquery")):a.lity=b(a,a.jQuery||a.Zepto)}("undefined"!=typeof window?window:this,function(a,b){"use strict";function c(a){var b=B();return N&&a.length?(a.one(N,b.resolve),setTimeout(b.resolve,500)):b.resolve(),b.promise()}function d(a,c,d){if(1===arguments.length)return b.extend({},a);if("string"==typeof c){if(void 0===d)return void 0===a[c]?null:a[c];a[c]=d}else b.extend(a,c);return this}function e(a){for(var b,c=decodeURI(a.split("#")[0]).split("&"),d={},e=0,f=c.length;e-1?"&":"?")+b.param(c)}function g(a,b){var c=a.indexOf("#");return-1===c?b:(c>0&&(a=a.substr(c)),b+a)}function h(a){return b('').append(a)}function i(a,c){var d=c.opener()&&c.opener().data("lity-desc")||"Image with no description",e=b(''+d+''),f=B(),g=function(){f.reject(h("Failed loading image"))};return e.on("load",function(){if(0===this.naturalWidth)return g();f.resolve(e)}).on("error",g),f.promise()}function j(a,c){var d,e,f;try{d=b(a)}catch(a){return!1}return!!d.length&&(e=b(''),f=d.hasClass("lity-hide"),c.element().one("lity:remove",function(){e.before(d).remove(),f&&!d.closest(".lity-content").length&&d.addClass("lity-hide")}),d.removeClass("lity-hide").after(e))}function k(a){var c=J.exec(a);return!!c&&o(g(a,f("https://www.youtube"+(c[2]||"")+".com/embed/"+c[4],b.extend({autoplay:1},e(c[5]||"")))))}function l(a){var c=K.exec(a);return!!c&&o(g(a,f("https://player.vimeo.com/video/"+c[3],b.extend({autoplay:1},e(c[4]||"")))))}function m(a){var c=M.exec(a);return!!c&&(0!==a.indexOf("http")&&(a="https:"+a),o(g(a,f("https://www.facebook.com/plugins/video.php?href="+a,b.extend({autoplay:1},e(c[4]||""))))))}function n(a){var b=L.exec(a);return!!b&&o(g(a,f("https://www.google."+b[3]+"/maps?"+b[6],{output:b[6].indexOf("layer=c")>0?"svembed":"embed"})))}function o(a){return'
',closeIcon:!0,boxWidth:"70%"})})},initAddons(){if(l("#wpforms-admin-addons").length){var n=l("#wpforms-addons-list-section-all"),o=l("#wpforms-addons-list-section-installed");if(n.length||o.length){let e,t;o.length&&(e=new List("wpforms-addons-list-section-installed",{valueNames:["addon-link"]})),n.length&&(t=new List("wpforms-addons-list-section-all",{valueNames:["addon-link"]})),l("#wpforms-addons-search").on("keyup search",function(){p.updateAddonSearchResult(this,t,e)})}l(document).on("change",".wpforms-addons-list-item .wpforms-toggle-control input",function(e){if(e.preventDefault(),l(this).hasClass("disabled"))return!1;p.addonToggleNew(l(this))}),l(document).on("click",".wpforms-addons-list-item button",function(e){if(e.preventDefault(),l(this).hasClass("disabled"))return!1;p.addonToggleNew(l(this))}),l(document).on("click","#wpforms-admin-addons .addon-item button",function(e){if(e.preventDefault(),l(this).hasClass("disabled"))return!1;p.addonToggle(l(this))})}},updateAddonSearchResult(e,t,n){let o=l(e).val();o=o.replace(/[.,]/g," ");var e=l("#wpforms-addons-no-results"),s=l("#wpforms-addons-list-section-all"),i=l("#wpforms-addons-list-section-installed"),t=t?t.search(o):[],n=n?n.search(o):[];e.toggle(0===t.length&&0===n.length),s.toggle(0

${"addon"===t?wpforms_admin.addon_error:wpforms_admin.plugin_error}

`):r.append(``),"install"===i?(n=!1,p.removeSpinnerFromButton(a)):"deactivate"===i?n=!0:"activate"===i&&(n=!1)}p.setAddonState(e,i,t,function(e){var t;e.success?(t=e,"install"===i?(o=c.active,n=!0,r.attr("data-plugin",t.data.basename),t.data.is_activated||(o=c.installed,n=!1),a.hide(),a=a.closest(".wpforms-addons-list-item").find(".wpforms-toggle-control input")):"activate"===i?(r.find(".wpforms-addons-list-item-footer-settings-link").fadeIn(150),o=c.active,n=!0):"deactivate"===i&&(r.find(".wpforms-addons-list-item-footer-settings-link").fadeOut(150),o=c.installed,n=!1),r.removeClass(c.active+" "+c.incompatible+" "+c.installed+" "+c.missing).addClass(o)):d(e),p.updateAddonButtonPropertiesAndUI(a,s,r,c,n)},function(){d({data:wpforms_admin.server_error}),p.updateAddonButtonPropertiesAndUI(a,s,r,c,n)})}},addSpinnerToButton(e){var t=e.width();e.data("original-text",e.html()),e.width(t).html('')},removeSpinnerFromButton(e){e.html(e.data("original-text"))},getAddonState(e,t,n){return e.hasClass(t.active)||e.hasClass(t.incompatible)?"deactivate":e.hasClass(t.installed)?"activate":e.hasClass(t.missing)?(p.addSpinnerToButton(n),"install"):""},updateAddonButtonPropertiesAndUI(e,t,n,o,s){e.prop("checked",s),e.prop("disabled",!1),e.siblings(".wpforms-toggle-control-status").html(e.siblings(".wpforms-toggle-control-status").data(s?"on":"off")),0'+d+""),t.find("span.status-label").removeClass("status-active status-installed status-missing").addClass(i).removeClass("button button-primary button-secondary disabled").text(a),o.removeClass("status-active status-installed status-missing").removeClass("button button-primary button-secondary disabled").addClass(i).html(r)):("object"==typeof e.data?"addon"===n?t.find(".actions").append('

'+wpforms_admin.addon_error+"

"):t.find(".actions").append('

'+wpforms_admin.plugin_error+"

"):t.find(".actions").append('

'+e.data+"

"),"install"===s&&"plugin"===n&&o.addClass("status-go-to-url").removeClass("status-missing"),o.html(c)),o.prop("disabled",!1).removeClass("loading"),t.find(".actions").find(".msg.error").length||setTimeout(function(){l(".addon-item .msg").remove()},3e3)},function(e){console.log(e.responseText)})}},initSettings(){l(document).on("wpformsReady",function(){var e,t;l("#wpforms-settings").length&&(e=p.getQueryString("wpforms-integration"),t=p.getQueryString("jump"),e?l("body").animate({scrollTop:l("#wpforms-integration-"+e).offset().top},1e3):t&&l("body").animate({scrollTop:l("#"+t).offset().top},1e3),l(".wpforms-admin-settings-form").conditions([{conditions:{element:"#wpforms-setting-gdpr",type:"checked",operator:"is"},actions:{if:{element:"#wpforms-setting-row-gdpr-disable-uuid,#wpforms-setting-row-gdpr-disable-details",action:"show"},else:{element:"#wpforms-setting-row-gdpr-disable-uuid,#wpforms-setting-row-gdpr-disable-details",action:"hide"}},effect:"appear"},{conditions:{element:"input[name=captcha-provider]:checked",type:"value",operator:"=",condition:"hcaptcha"},actions:{if:[{element:".wpforms-setting-row",action:"show"},{element:".wpforms-setting-recaptcha, #wpforms-setting-row-recaptcha-site-key, #wpforms-setting-row-recaptcha-secret-key, #wpforms-setting-row-recaptcha-fail-msg, .wpforms-setting-turnstile, #wpforms-setting-row-turnstile-heading, #wpforms-setting-row-turnstile-site-key, #wpforms-setting-row-turnstile-secret-key, #wpforms-setting-row-turnstile-theme, #wpforms-setting-row-turnstile-fail-msg",action:"hide"}]},effect:"appear"},{conditions:{element:"input[name=captcha-provider]:checked",type:"value",operator:"=",condition:"recaptcha"},actions:{if:[{element:".wpforms-setting-row",action:"show"},{element:"#wpforms-setting-row-hcaptcha-heading, #wpforms-setting-row-hcaptcha-site-key, #wpforms-setting-row-hcaptcha-secret-key, #wpforms-setting-row-hcaptcha-fail-msg, #wpforms-setting-row-turnstile-heading, #wpforms-setting-row-turnstile-site-key, #wpforms-setting-row-turnstile-secret-key, #wpforms-setting-row-turnstile-theme, #wpforms-setting-row-turnstile-fail-msg",action:"hide"}]},effect:"appear"},{conditions:{element:"input[name=captcha-provider]:checked",type:"value",operator:"=",condition:"turnstile"},actions:{if:[{element:".wpforms-setting-row",action:"show"},{element:"#wpforms-setting-row-hcaptcha-heading, #wpforms-setting-row-hcaptcha-site-key, #wpforms-setting-row-hcaptcha-secret-key, #wpforms-setting-row-hcaptcha-fail-msg, .wpforms-setting-recaptcha, #wpforms-setting-row-recaptcha-site-key, #wpforms-setting-row-recaptcha-secret-key, #wpforms-setting-row-recaptcha-fail-msg",action:"hide"}]},effect:"appear"},{conditions:{element:"input[name=captcha-provider]:checked",type:"value",operator:"=",condition:"none"},actions:{if:[{element:".wpforms-setting-row",action:"hide"},{element:".wpforms-setting-captcha-heading, #wpforms-setting-row-captcha-provider",action:"show"}]},effect:"appear"}]))}),l(document).on("change","#wpforms-setting-row-render-engine input",p.settingsRenderEngineChange),l(document).on("change","#wpforms-setting-disable-css",function(){p.settingsFormStylesAlert(l(this).val())}),l(document).on("click",".wpforms-setting-row-image button",function(e){e.preventDefault(),l(this).hasClass("wpforms-setting-remove-image")?l(this).closest(".wpforms-setting-row-image").find("input").val("").attr("value","").trigger("change").end().find("img").remove():p.imageUploadModal(l(this))}),l(document).on("click","#wpforms-setting-license-key-verify",function(e){e.preventDefault(),p.licenseVerify(l(this))}),l(document).on("click",".wpforms-setting-license-wrapper",function(e){e.preventDefault();e=l("#wpforms-setting-license-key");e.length&&e.prop("disabled")&&p.licenseEditMessage()}),l(document).on("click","#wpforms-setting-license-key-deactivate",function(e){e.preventDefault(),p.licenseDeactivate(l(this))}),l(document).on("click","#wpforms-setting-license-key-refresh",function(e){e.preventDefault(),p.licenseRefresh(l(this))}),l(document).on("click",".wpforms-settings-provider-connect",function(e){e.preventDefault();e=l(this);p.integrationConnect(e)}),l(document).on("click",".wpforms-settings-provider-accounts-list .remove a",function(e){e.preventDefault(),p.integrationDisconnect(l(this))}),l(document).on("click",".wpforms-settings-provider:not(.focus-out) .wpforms-settings-provider-header",function(e){e.preventDefault();let t=l(this);t.parent().find(".wpforms-settings-provider-accounts").stop(!1,!0).slideToggle("",function(){t.parent().find(".wpforms-settings-provider-logo i").toggleClass("fa-chevron-right fa-chevron-down")})}),l(document).on("click",".wpforms-settings-provider-accounts-toggle a",function(e){e.preventDefault();e=l(this).parent().next(".wpforms-settings-provider-accounts-connect");e.find("input[type=text], input[type=password]").val(""),e.stop().slideToggle()}),l(document).on("change","#wpforms-setting-row-captcha-provider input",function(){var e=l("#wpforms-setting-row-captcha-preview");"hcaptcha"===this.value||"turnstile"===this.value?e.removeClass("wpforms-hidden"):"none"===this.value?e.addClass("wpforms-hidden"):l("#wpforms-setting-row-recaptcha-type input:checked").trigger("change"),e.find(".wpforms-captcha-preview").length&&(e.find(".wpforms-captcha-preview").empty(),e.find(".wpforms-captcha-placeholder").removeClass("wpforms-hidden"))}),l(document).on("change","#wpforms-setting-row-recaptcha-type input",function(){l("#wpforms-setting-row-captcha-preview").toggleClass("wpforms-hidden","v2"!==this.value),l("#wpforms-setting-row-recaptcha-v3-threshold").toggleClass("wpforms-hidden","v3"!==this.value)}),l(document).on("change",".wpforms-toggle-control input",function(){var e=l(this),t=e.is(":checked"),n=t?"on":"off",o=e.closest(".wpforms-setting-field"),e=e.closest(".wpforms-toggle-control").find(".wpforms-toggle-control-status"),s=o.find(".wpforms-toggle-desc.desc-on"),o=o.find(".wpforms-toggle-desc.desc-off"),i=0'),t.trigger("change")}).on("close",function(){m.mediaFrame.off("library:selection:add")}),m.mediaFrame.open()},licenseVerify(s){let i=s.closest(".wpforms-setting-row"),a=l("#wpforms-setting-license-key"),e=s.outerWidth(),r=s.text(),t={action:"wpforms_verify_license",nonce:wpforms_admin.nonce,license:a.val()};s.html(m.iconSpinner).css("width",e).prop("disabled",!0),l.post(wpforms_admin.ajax_url,t,function(e){let t="fa fa-check-circle",n="green",o;e.success?(o=e.data.msg,s.hide(),i.find("#wpforms-setting-license-key-info-message").empty().hide(),i.find(".type, .desc, #wpforms-setting-license-key-deactivate").show(),i.find(".type strong").text(e.data.type),l(".wpforms-license-notice").remove(),a.prop("disabled",!0).addClass("wpforms-setting-license-is-valid").attr("value",a.val().replace(/./g,"*"))):(t="fa fa-exclamation-circle",n="orange",o=e.data,i.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide(),a.prop("disabled",!1)),l.alert({title:o.header??!1,content:o.msg??o,icon:t,type:n,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),s.html(r).css("width","auto").prop("disabled",!1)}).fail(function(e){a.prop("disabled",!1),console.log(e.responseText)})},licenseEditMessage(){l.alert({title:wpforms_admin.heads_up,content:wpforms_admin.edit_license,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})},licenseDeactivate(e){let a=l(e),r=a.closest(".wpforms-setting-row");e=a.outerWidth();let c=a.text();var t={action:"wpforms_deactivate_license",nonce:wpforms_admin.nonce};a.html(m.iconSpinner).css("width",e).prop("disabled",!0),l.post(wpforms_admin.ajax_url,t,function(e){let t="fa fa-info-circle",n="blue",o=wpforms_admin.success;var s=e.data,i=s.msg&&"string"==typeof s.msg?s.msg:wpforms_admin.something_went_wrong;e.success?(r.find("#wpforms-setting-license-key").val("").attr("value","").prop({readonly:!1,disabled:!1}).removeClass(),r.find(".wpforms-license-key-deactivate-remove").remove(),r.find("#wpforms-setting-license-key-info-message").html(s.info).show(),r.find("#wpforms-setting-license-key-verify").prop("disabled",!1).show(),r.find(".type, .desc, #wpforms-setting-license-key-deactivate").hide()):(t="fa fa-exclamation-circle",n="orange",o=wpforms_admin.oops),l.alert({title:o,content:i,icon:t,type:n,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}}),a.html(c).css("width","auto").prop("disabled",!1)}).fail(function(e){console.log(e.responseText)})},licenseRefresh(e){let t=l(e),s=t.closest(".wpforms-setting-row"),i=l("#wpforms-setting-license-key"),n={action:"wpforms_refresh_license",nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,n,function(e){let t="fa fa-check-circle",n="green",o;e.success?(o=e.data.msg,s.find(".type strong").text(e.data.type)):(t="fa fa-exclamation-circle",n="orange",o=e.data,s.find(".type, .desc").hide(),i.removeClass("wpforms-setting-license-is-valid").addClass("wpforms-setting-license-is-invalid")),l.alert({title:o.header??!1,content:o.msg??o,icon:t,type:n,buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}).fail(function(e){console.log(e.responseText)})},integrationConnect(t){let e=t.outerWidth(),n=t.text(),o=t.closest(".wpforms-settings-provider"),s={action:"wpforms_settings_provider_add_"+t.data("provider"),data:t.closest("form").serialize(),provider:t.data("provider"),nonce:wpforms_admin.nonce},i=wpforms_admin.provider_auth_error;t.html(wpforms_admin.connecting).css("width",e).prop("disabled",!0),l.post(wpforms_admin.ajax_url,s,function(e){e.success?(o.find(".wpforms-settings-provider-accounts-list ul").append(e.data.html),o.addClass("connected"),t.closest(".wpforms-settings-provider-accounts-connect").stop().slideToggle()):(Object.prototype.hasOwnProperty.call(e,"data")&&Object.prototype.hasOwnProperty.call(e.data,"error_msg")&&(i+="
"+e.data.error_msg),p.integrationError(i))}).fail(function(){p.integrationError(i)}).always(function(){t.html(n).css("width","auto").prop("disabled",!1)})},integrationDisconnect(e){let n=l(e),o=n.parents(".wpforms-settings-provider"),t={action:"wpforms_settings_provider_disconnect_"+n.data("provider"),provider:n.data("provider"),key:n.data("key"),nonce:wpforms_admin.nonce},s=wpforms_admin.provider_delete_error;l.confirm({title:wpforms_admin.heads_up,content:wpforms_admin.provider_delete_confirm,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"],action(){l.post(wpforms_admin.ajax_url,t,function(e){var t;e.success?(n.parent().parent().remove(),void 0!==(t=o.find(".wpforms-settings-provider-accounts-list li").length)&&0!==t||o.removeClass("connected"),l(document).trigger("wpformsProviderRemoved",[o,e])):(Object.prototype.hasOwnProperty.call(e,"data")&&Object.prototype.hasOwnProperty.call(e.data,"error_msg")&&(s+="
"+e.data.error_msg),p.integrationError(s))}).fail(function(){p.integrationError(s)})}},cancel:{text:wpforms_admin.cancel,keys:["esc"]}}})},integrationError(e){l.alert({title:wpforms_admin.something_went_wrong,content:e,icon:"fa fa-exclamation-circle",type:"orange",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})},initTools(){l(document).on("change","#wpforms-tools-form-import, #wpforms-tools-form-other-import, #wpforms-tools-form-export, #wpforms-tools-form-template",function(){var e=l(this);e.parents("form").find("button").attr("aria-disabled",0===e.val().length)}),l(document).on("click","#wpforms-system-information-copy",function(e){e.preventDefault(),p.copySystemInformation()}),l(document).on("click","#wpforms-ssl-verify",function(e){e.preventDefault(),p.verifySSLConnection()}),l(document).on("click","#wpforms-recreate-tables",function(e){e.preventDefault(),p.recreateTables()}),l(document).on("click","#wpforms-importer-forms-submit",function(e){e.preventDefault();e=l("#wpforms-importer-forms input:checked");if(e.length){let t=[];e.each(function(e){t[e]=l(this).val()}),wpforms_admin.isPro?p.importForms(t):p.analyzeForms(t)}else l.alert({title:wpforms_admin.heads_up,content:wpforms_admin.importer_forms_required,icon:"fa fa-info-circle",type:"blue",buttons:{confirm:{text:wpforms_admin.ok,btnClass:"btn-confirm",keys:["enter"]}}})}),l(document).on("click","#wpforms-importer-continue-submit",function(e){e.preventDefault(),p.importForms(m.formIDs)})},copySystemInformation(){l("#wpforms-system-information").select(),document.execCommand("copy")},verifySSLConnection(){let t=l("#wpforms-ssl-verify"),n=t.text(),o=t.outerWidth(),s=t.parent();t.css("width",o).prop("disabled",!0).text(wpforms_admin.testing);var e={action:"wpforms_verify_ssl",nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,e,function(e){p.debug(e),s.find(".wpforms-notice").remove(),e.success&&t.before('
'+e.data.msg+"
"),!e.success&&e.data.msg&&t.before('
'+e.data.msg+"
"),!e.success&&e.data.debug&&t.before('
'+e.data.debug+"
"),t.css("width",o).prop("disabled",!1).text(n)})},recreateTables(){let t=l("#wpforms-recreate-tables"),e=t.text(),n=t.outerWidth(),o=t.parent();t.css("width",n).prop("disabled",!0).text(wpforms_admin.recreating);var s={action:"wpforms_recreate_tables",nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,s,function(e){p.debug(e),o.find(".wpforms-notice").remove(),e.success&&(t.before('
'+e.data.msg+"
"),t.hide()),!e.success&&e.data.msg&&t.before('
'+e.data.msg+"
"),!e.success&&e.data.debug&&t.before('
'+e.data.debug+"
")}).always(function(){t.css("width",n).prop("disabled",!1).text(e)})},analyzeForms(e){var t=l("#wpforms-importer-analyze");t.find(".form-total").text(e.length),t.find(".form-current").text("1"),l("#wpforms-importer-forms").hide(),t.show(),m.analyzeQueue=e,m.analyzed=0,m.analyzeUpgrade=[],m.formIDs=e,p.analyzeForm()},analyzeForm(){let t=l("#wpforms-importer-analyze"),n=_.first(m.analyzeQueue),e=p.getQueryString("provider"),o={action:"wpforms_import_form_"+e,analyze:1,form_id:n,nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,o,function(e){e.success&&(_.isEmpty(e.data.upgrade_plain)&&_.isEmpty(e.data.upgrade_omit)||m.analyzeUpgrade.push({name:e.data.name,fields:_.union(e.data.upgrade_omit,e.data.upgrade_plain)}),m.analyzeQueue=_.without(m.analyzeQueue,n),m.analyzed++,_.isEmpty(m.analyzeQueue)?_.isEmpty(m.analyzeUpgrade)?p.importForms(m.formIDs):(e=wp.template("wpforms-importer-upgrade"),t.find(".upgrade").append(e(m.analyzeUpgrade)),t.find(".upgrade").show(),t.find(".process-analyze").hide()):(t.find(".form-current").text(m.analyzed+1),p.analyzeForm()))})},importForms(e){var t=l("#wpforms-importer-process");t.find(".form-total").text(e.length),t.find(".form-current").text("1"),l("#wpforms-importer-forms, #wpforms-importer-analyze").hide(),t.show(),m.importQueue=e,m.imported=0,p.importForm()},importForm(){let n=l("#wpforms-importer-process"),o=_.first(m.importQueue),e=p.getQueryString("provider"),t={action:"wpforms_import_form_"+e,form_id:o,nonce:wpforms_admin.nonce};l.post(wpforms_admin.ajax_url,t,function(t){if(t.success){let e;e=t.data.error?wp.template("wpforms-importer-status-error"):wp.template("wpforms-importer-status-update"),n.find(".status").prepend(e(t.data)),n.find(".status").show(),m.importQueue=_.without(m.importQueue,o),m.imported++,_.isEmpty(m.importQueue)?(n.find(".process-count").hide(),n.find(".forms-completed").text(m.imported),n.find(".process-completed").show()):(n.find(".form-current").text(m.imported+1),p.importForm())}})},initUpgrades(){l(document).on("click","#wpforms-upgrade-143 button",function(e){e.preventDefault();let t=l(this),n=t.outerWidth(),o=l("#wpforms-upgrade-143 .status"),s={action:"wpforms_upgrade_143",nonce:wpforms_admin.nonce,init:!0,incomplete:t.data("incomplete")};t.html(m.iconSpinner).css("width",n).prop("disabled",!0),l.post(wpforms_admin.ajax_url,s,function(e){e.success&&(m.upgraded=Number(e.data.upgraded),m.upgradeTotal=Number(e.data.total),e=Math.round(Number(m.upgraded)/Number(m.upgradeTotal)*100),t.remove(),o.find(".bar").css("width",e+"%"),o.show().find(".total").text(m.upgradeTotal),o.find(".current").text(m.upgraded),o.find(".percent").text(e+"%"),p.upgrade143())})})},upgrade143(){let n=l("#wpforms-upgrade-143 .status"),e={action:"wpforms_upgrade_143",nonce:wpforms_admin.nonce,upgraded:m.upgraded};l.post(wpforms_admin.ajax_url,e,function(e){var t;e.success&&(m.upgraded=Number(m.upgraded)+Number(e.data.count),t=Math.round(Number(m.upgraded)/Number(m.upgradeTotal)*100),n.find(".bar").css("width",t+"%"),Number(e.data.count)<10?(n.find(".progress-bar").addClass("complete"),n.find(".msg").text(wpforms_admin.upgrade_completed)):(n.find(".current").text(m.upgraded),n.find(".percent").text(t+"%"),p.upgrade143()))})},initFlyoutMenu(){let r=l("#wpforms-flyout");if(0!==r.length){let e=r.find(".wpforms-flyout-head"),t=e.find("img"),n={state:"inactive",srcInactive:t.attr("src"),srcActive:t.data("active")},a=(e.on("click",function(e){e.preventDefault(),"active"===n.state?(r.removeClass("opened"),t.attr("src",n.srcInactive),n.state="inactive"):(r.addClass("opened"),t.attr("src",n.srcActive),n.state="active")}),l("#wpfooter"));if(0!==a.length){let i=l("#wpforms-overview, #wpforms-entries-list, #wpforms-tools.wpforms-tools-tab-action-scheduler, #wpforms-tools.wpforms-tools-tab-logs");l(window).on("resize scroll",_.debounce(function(){var e=a.offset().top,t=e+a.height(),n=0["spam","trash"].includes(e)?{contentAll:wpforms_admin.entry_delete_all_confirm,content:wpforms_admin.entry_delete_n_confirm,action:"delete"}:{contentAll:wpforms_admin.entry_trash_all_confirm,content:wpforms_admin.entry_trash_n_confirm,action:"trash"},initScrollableMenu(){l(document).on("wpformsReady",function(){let t=l(".wpforms-admin-tabs");if(t.length){let e=t.find("li:last-child");wpf.isInViewport(e)||t.addClass("wpforms-admin-tabs--scrollable"),t.on("scroll",function(){t.toggleClass("wpforms-admin-tabs--scrollable",!wpf.isInViewport(e))})}})}};p.init(),window.WPFormsAdmin=p})(jQuery); \ No newline at end of file diff --git a/plugins/wpforms-lite/assets/js/admin/builder/admin-builder-providers.min.js b/plugins/wpforms-lite/assets/js/admin/builder/admin-builder-providers.min.js new file mode 100644 index 0000000..b3e622e --- /dev/null +++ b/plugins/wpforms-lite/assets/js/admin/builder/admin-builder-providers.min.js @@ -0,0 +1 @@ +(c=>{var s,a={settings:{spinner:'',spinnerWhite:''},init:function(){s=this.settings,c(a.ready),a.bindUIActions()},ready:function(){s.form=c("#wpforms-builder-form")},bindUIActions:function(){c(document).on("click",".wpforms-provider-connection-delete",function(e){a.connectionDelete(this,e)}),c(document).on("click",".wpforms-provider-connections-add",function(e){a.connectionAdd(this,e)}),c(document).on("click",".wpforms-provider-account-add button",function(e){a.accountAdd(this,e)}),c(document).on("change",".wpforms-provider-accounts select",function(e){a.accountSelect(this,e)}),c(document).on("change",".wpforms-provider-lists select",function(e){a.accountListSelect(this,e)}),c(document).on("wpformsPanelSwitch",function(e,n){["aweber","campaign-monitor","constant-contact"].some(e=>0')+('

'+wpforms_builder_providers.error_name+"

")).replace(/%type%/g,e);c.confirm({title:!1,content:n,icon:"fa fa-info-circle",type:"blue",buttons:{confirm:{text:wpforms_builder.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){var e=this.$content.find("input#provider-connection-name").val().trim(),n=this.$content.find(".error");if(""===e)return n.show(),!1;a.inputToggle(o,"disable");n={action:"wpforms_provider_ajax_"+t,provider:t,task:"new_connection",name:e,id:s.form.data("id"),nonce:wpforms_builder.nonce};a.fireAJAX(o,n,function(e){var n;e.success?(r.find(".wpforms-builder-provider-connections-default").addClass("wpforms-hidden"),r.find(".wpforms-provider-connections").prepend(e.data.html),(n=r.find(".wpforms-provider-connection").first()).find(".wpforms-provider-accounts option:selected")&&(n.find(".wpforms-provider-accounts option").first().prop("selected",!0),n.find(".wpforms-provider-accounts select").trigger("change"))):a.errorDisplay(e.data.error,i)})}},cancel:{text:wpforms_builder.cancel}}})},accountAdd:function(e,n){n.preventDefault();var n=c(e),e=n.data("provider"),o=n.closest(".wpforms-provider-connection"),r=n.parent(),i=r.find(":input"),t=a.requiredCheck(i,r);if(a.inputToggle(n,"disable"),t)return n.prop("disabled",!1).find("i").remove(),!1;t={action:"wpforms_provider_ajax_"+e,provider:e,connection_id:o.data("connection_id"),task:"new_account",data:a.fakeSerialize(i)};a.fireAJAX(n,t,function(e){e.success?(r.nextAll(".wpforms-connection-block").remove(),r.nextAll(".wpforms-conditional-block").remove(),r.after(e.data.html),r.slideUp(),o.find(".wpforms-provider-accounts select").trigger("change")):a.errorDisplay(e.data.error,r)})},accountSelect:function(e,n){n.preventDefault();var n=c(e),o=n.closest(".wpforms-provider-connection"),r=n.parent(),e=o.data("provider");a.inputToggle(n,"disable"),r.nextAll(".wpforms-connection-block").remove(),r.nextAll(".wpforms-conditional-block").remove(),n.val()?(o.find(".wpforms-provider-account-add").slideUp(),e={action:"wpforms_provider_ajax_"+e,provider:e,connection_id:o.data("connection_id"),task:"select_account",account_id:n.find(":selected").val()},a.fireAJAX(n,e,function(e){e.success?(r.after(e.data.html),o.find(".wpforms-provider-lists option").first().prop("selected",!0),o.find(".wpforms-provider-lists select").trigger("change")):a.errorDisplay(e.data.error,r)})):(o.find(".wpforms-provider-account-add input").val(""),o.find(".wpforms-provider-account-add").slideDown(),a.inputToggle(n,"enable"))},accountListSelect:function(e,n){n.preventDefault();var n=c(e),e=n.closest(".wpforms-provider-connection"),o=n.parent(),r=e.data("provider"),r=(a.inputToggle(n,"disable"),o.nextAll(".wpforms-connection-block").remove(),o.nextAll(".wpforms-conditional-block").remove(),{action:"wpforms_provider_ajax_"+r,provider:r,connection_id:e.data("connection_id"),task:"select_list",account_id:e.find(".wpforms-provider-accounts option:selected").val(),list_id:n.find(":selected").val(),form_id:s.form.data("id")});a.fireAJAX(n,r,function(e){e.success?(o.after(e.data.html),wpf.initTooltips()):a.errorDisplay(e.data.error,o)})},providerPanelConfirm:function(o){wpforms_panel_switch=!0,"providers"!==o||s.form.data("revision")||WPFormsBuilder.formIsSaved()||(wpforms_panel_switch=!1,c.confirm({title:!1,content:wpforms_builder_providers.confirm_save,icon:"fa fa-info-circle",type:"blue",buttons:{confirm:{text:wpforms_builder.ok,btnClass:"btn-confirm",keys:["enter"],action:function(){c("#wpforms-save").trigger("click"),c(document).on("wpformsSaved",function(){let e=wpforms_builder_providers.url;var n=c(`#wpforms-panel-${o} .wpforms-panel-sidebar-section.active`),n=n.length&&"default"!==n.data("section")?n.data("section"):null;n&&(e+="§ion="+n),window.location.href=e})}},cancel:{text:wpforms_builder.cancel}}}))},fireAJAX:function(e,n,o){var r=c(e),e={id:c("#wpforms-builder-form").data("id"),nonce:wpforms_builder.nonce};c.extend(e,n),c.post(wpforms_builder.ajax_url,e,function(e){o(e),a.inputToggle(r,"enable")}).fail(function(e,n,o){console.log(e.responseText)})},inputToggle:function(e,n){e=c(e);"enable"===n?(e.is("select")?e.prop("disabled",!1).next("i"):e.prop("disabled",!1).find("i")).remove():"disable"===n&&(e.is("select")?e.prop("disabled",!0).after(s.spinner):e.prop("disabled",!0).prepend(s.spinnerWhite))},errorDisplay:function(e,n){n.find(".wpforms-error-msg").remove(),n.prepend('

'+e+"

")},requiredCheck:function(e,n){var o=!1;return n.find(".wpforms-alert-required").remove(),e.each(function(e,n){c(n).hasClass("wpforms-required")&&0===c(n).val().length?(c(n).addClass("wpforms-error"),o=!0):c(n).removeClass("wpforms-error")}),o&&n.prepend('

'+wpforms_builder_providers.required_field+"

"),o},fakeSerialize:function(e){e=e.clone();return e.each(function(e,n){c(n).data("name")&&c(n).attr("name",c(n).data("name"))}),e.serialize()},getDefaultConnectionName(e){var n=c(`#${e}-provider`).data("provider-name"),e=a.getCountConnectionsOf(e),n=n+" "+wpforms_builder.connection_label;return e<1?n:""},getCountConnectionsOf(e){return c(`#${e}-provider .wpforms-provider-connection`).length},getProviderClass(e){console.warn('WARNING! Function "WPFormsProviders.getProviderClass()" has been deprecated!');e=e.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("");return void 0===WPForms?.Admin?.Builder?.Providers?.[e]?null:WPForms.Admin.Builder.Providers[e]}};a.init()})(jQuery); \ No newline at end of file diff --git a/plugins/wpforms-lite/assets/js/admin/builder/admin-builder.min.js b/plugins/wpforms-lite/assets/js/admin/builder/admin-builder.min.js new file mode 100644 index 0000000..912014e --- /dev/null +++ b/plugins/wpforms-lite/assets/js/admin/builder/admin-builder.min.js @@ -0,0 +1 @@ +var WPFormsBuilder=window.WPFormsBuilder||((o,t,n)=>{let l,s={},e={},d={settings:{spinner:'',spinnerInline:'',tinymceDefaults:{tinymce:{toolbar1:"bold,italic,underline,blockquote,strikethrough,bullist,numlist,alignleft,aligncenter,alignright,undo,redo,link"},quicktags:!0},pagebreakTop:!1,pagebreakBottom:!1,upload_img_modal:!1,choicesLimit:20,choicesLimitLong:250},init(){t.wpforms_panel_switch=!0,n(d.ready),d.loadModules(),n(t).on("load",function(){"function"==typeof n.ready.then?n.ready.then(d.loadFinalizer):d.loadFinalizer()})},ready(){d.isVisitedViaBackButton()?location.reload():(d.initElementsCache(),n.ajaxSetup({data:{_wp_http_referer:wpf.updateQueryString("_wp_http_referer",null)}}),d.settings.formID=n("#wpforms-builder-form").data("id"))},loadFinalizer(){d.loadModulesPromise?d.loadModulesPromise.finally(d.load):d.load()},load(){if(wpf.getQueryString("newform")&&d.formSave(!1),WPFormsUtils.triggerEvent(l,"wpformsBuilderReady").isDefaultPrevented())return!1;d.UIGeneral.hideLoadingOverlay(),wpf._updateFormState(),wpf._syncTinyMCEState(),wpf.debug("Form Builder loading time:",wpf.timePointDiff("wpformsBuilderReady"),"sec")},initElementsCache(){l=n("#wpforms-builder"),s.$document=n(o),s.$builder=l,e.isWindows=/Win/.test(navigator.userAgent),e.isLinux=/Linux/.test(navigator.userAgent),e.isMac=/Mac/.test(navigator.userAgent),s.$helpButton=n(".js-wpforms-help"),s.$previewButton=n("#wpforms-preview-btn"),s.$embedButton=n("#wpforms-embed"),s.$saveButton=n("#wpforms-save"),s.$exitButton=n("#wpforms-exit"),s.$noFieldsOptions=n("#wpforms-panel-fields .wpforms-no-fields-holder .no-fields"),s.$noFieldsPreview=n("#wpforms-panel-fields .wpforms-no-fields-holder .no-fields-preview"),s.$formPreview=n("#wpforms-panel-fields .wpforms-preview-wrap"),s.$revisionPreview=n("#wpforms-panel-revisions .wpforms-panel-content"),s.defaultEmailSelector=".wpforms-field-option-email .wpforms-field-option-row-default_value input",s.$defaultEmail=n(s.defaultEmailSelector),s.$focusOutTarget=null,s.$nextFieldId=n("#wpforms-field-id"),s.$addFieldsTab=n("#add-fields a"),s.$fieldOptions=n("#wpforms-field-options"),s.$fieldsPreviewWrap=n("#wpforms-panel-fields .wpforms-panel-content-wrap"),s.$sortableFieldsWrap=n("#wpforms-panel-fields .wpforms-field-wrap"),s.$addFieldsButtons=n(".wpforms-add-fields-button").not(".not-draggable").not(".warning-modal").not(".education-modal"),s.$fieldsSidebar=n("#wpforms-panel-fields .wpforms-add-fields"),s.$searchInput=n("#wpforms-search-fields-input"),s.$sidebarToggle=n(".wpforms-panels .wpforms-panel-sidebar-content .wpforms-panel-sidebar-toggle")},getElementsCache(){return{elements:s,browser:e}},loadModules(e=null){e=e||wpforms_builder.js_modules||{};e=Object.entries(e).map(([i,e])=>{e=e.startsWith(wpforms_builder.content_url)?e:"./modules/"+e;return import(e+"?v="+wpforms_builder.version).then(e=>[i,e])});d.loadModulesPromise=Promise.all(e).then(d.initModules).catch(e=>{wpf.debug("Error importing modules:",e)}).finally(()=>{d.loadModulesPromise=null})},async initModules(r){return n.when(n.ready).then(function(){for(let[e,i]of r)WPForms.Admin.Builder[e]=i.default(o,t,n,d,s),l.on("wpformsBuilderModulesInit",()=>{WPForms.Admin.Builder[e].init(),WPFormsUtils.triggerEvent(l,"wpformsBuilderModuleInitialized",[e,WPForms.Admin.Builder[e]])});WPFormsUtils.triggerEvent(l,"wpformsBuilderModulesInit",[r]),WPFormsUtils.triggerEvent(l,"wpformsBuilderModulesLoaded",[r])})},isVisitedViaBackButton(){return performance&&performance.getEntriesByType("navigation").forEach(function(e){if("back_forward"===e.type)return!0}),!1},triggerBuilderEvent(e,i){l.trigger(e,i)}};return d})(document,window,jQuery);WPFormsBuilder.init(); \ No newline at end of file diff --git a/plugins/wpforms-lite/assets/js/admin/builder/chocolate-choices.min.js b/plugins/wpforms-lite/assets/js/admin/builder/chocolate-choices.min.js new file mode 100644 index 0000000..8b2ddeb --- /dev/null +++ b/plugins/wpforms-lite/assets/js/admin/builder/chocolate-choices.min.js @@ -0,0 +1 @@ +let WPFormsChocolateChoices={init(e,n){let l=n.selected?.map?.(String)??[],o=jQuery,c=(e,t)=>{var c=`choice-${t}-`+(new Date).getTime().toString(16),i=String("object"==typeof e?e.value:e),a=o("
",{class:"choice-item"}),i=o("",{type:"checkbox",id:c,value:i,checked:l.includes(i),name:n.name.replace("{index}",t)}),t=o("'+wpforms_form_templates.activating),this.$$cancel.prop("disabled",!0),_.installActivateAddons(a,this,e,t,o),!1}},cancel:{text:wpforms_form_templates.cancel,action(){WPFormsFormTemplates.selectTemplateCancel()}}}})},action(e,t=""){return 1{var n,p={init:function(){l(p.ready)},ready:function(){p.setup(),p.initCategories(),p.events()},setup:function(){n={$builder:l("#wpforms-builder"),$builderForm:l("#wpforms-builder-form"),$helpBtn:l(".js-wpforms-help"),$help:l("#wpforms-builder-help"),$closeBtn:l("#wpforms-builder-help-close"),$search:l("#wpforms-builder-help-search"),$result:l("#wpforms-builder-help-result"),$noResult:l("#wpforms-builder-help-no-result"),$categories:l("#wpforms-builder-help-categories"),$footer:l("#wpforms-builder-help-footer")}},events:function(){n.$helpBtn.on("click",a.openHelp),n.$closeBtn.on("click",a.closeHelp),n.$categories.on("click",".wpforms-builder-help-category header",a.toggleCategory),n.$categories.on("click",".wpforms-builder-help-category button.viewall",a.viewAllCategoryDocs),n.$search.on("keyup","input",_.debounce(a.inputSearch,250)),n.$search.on("click","#wpforms-builder-help-search-clear",a.clearSearch)},initCategories:function(){var e,r;wpf.empty(wpforms_builder_help.docs)?n.$categories.html(wp.template("wpforms-builder-help-categories-error")):(e=wp.template("wpforms-builder-help-categories"),r={categories:wpforms_builder_help.categories,docs:p.getDocsByCategories()},n.$categories.html(e(r)))},getDocsByCategories:function(){var e=wpforms_builder_help.categories,t=wpforms_builder_help.docs||[],i={};return _.each(e,function(e,r){var o=[];_.each(t,function(e){e.categories&&-1{let a={init(){d(e).ready(a.ready)},ready(){a.$builder=d("#wpforms-builder"),a.bindEvents()},bindEvents(){d(e).on("click",".wpforms-image-upload-button",a.openMediaUploader),d(e).on("click",".wpforms-image-remove-button",a.removeImage)},openMediaUploader(e){e.preventDefault();let r=d(this).closest(".wpforms-image-upload-control");e=r.attr("id");a.frames=a.frames??{},a.frames[e]?(a.frame=a.frames[e],a.frame.open()):(a.frame=wpf.initMediaLibrary({extensions:wpforms_builder.upload_image_extensions,extensionsError:wpforms_builder.upload_image_extensions_error,buttonText:wpforms_builder.upload_image_button}),a.frame.on("select",function(){var e=a.frame.state().get("selection").first().toJSON();a.setImage(r,e)}),a.frame.open(),a.frames[e]=a.frame)},getControlElements(e){return{$control:e,$idField:e.find(".wpforms-image-upload-id"),$urlField:e.find(".wpforms-image-upload-url"),$preview:e.find(".wpforms-image-preview img"),$uploadBtn:e.find(".wpforms-image-upload-button"),$removeBtn:e.find(".wpforms-image-remove-button")}},setImage(e,r){var{$idField:o,$urlField:i,$preview:m,$uploadBtn:t,$removeBtn:d}=a.getControlElements(e);m.attr("src",r.url),o.val(r.id),i.val(r.url),t.addClass("wpforms-hidden"),d.removeClass("wpforms-hidden"),WPFormsUtils.triggerEvent(a.$builder,"wpformsImageUploadChange",[e,r])},removeImage(e){e.preventDefault();var e=d(this).closest(".wpforms-image-upload-control"),{$idField:r,$urlField:o,$preview:i,$uploadBtn:m,$removeBtn:t}=a.getControlElements(e);i.attr("src",""),r.val(""),o.val(""),m.removeClass("wpforms-hidden"),t.addClass("wpforms-hidden"),WPFormsUtils.triggerEvent(a.$builder,"wpformsImageUploadChange",[e,null])}};return a})(document,(window,jQuery)),WPForms.Admin.Builder.Settings.ImageUpload.init(); \ No newline at end of file diff --git a/plugins/wpforms-lite/assets/js/admin/builder/modules/builder-providers.min.js b/plugins/wpforms-lite/assets/js/admin/builder/modules/builder-providers.min.js new file mode 100644 index 0000000..397ceb0 --- /dev/null +++ b/plugins/wpforms-lite/assets/js/admin/builder/modules/builder-providers.min.js @@ -0,0 +1,6 @@ +export default function(e,n,a,t,r){let l={init(){l.bcInit(),l.events()},bcInit(){["toggleProviderActiveIcon","isPaymentsEnabled","getPaymentsTogglesSelector"].forEach(e=>{t[e]=l[e]})},events(){},toggleProviderActiveIcon(e){var t=e.closest(".wpforms-panel-content-section").data("provider"),r=["wpforms-panel-field-"+t+"-enable-wrap","wpforms-panel-field-"+t+"-enable_one_time-wrap","wpforms-panel-field-"+t+"-enable_recurring-wrap"];if(t&&r.includes(e.attr("id"))){let n=!1;r.forEach(e=>{e=a("#"+e);e.length&&e.find("input").is(":checked")&&(n=!0)}),a(`.wpforms-panel-sidebar-section[data-section=${t}]`).find(".fa-check-circle-o").toggleClass("wpforms-hidden",!n)}},isPaymentsEnabled(){let e=!1;return a(t.getPaymentsTogglesSelector()).each(function(){if(a(this).prop("checked"))return!(e=!0)}),e},getPaymentsTogglesSelector(){return`.wpforms-panel-content-section-payment-toggle-one-time input, + .wpforms-panel-content-section-payment-toggle-recurring input, + #wpforms-panel-field-stripe-enable, + #wpforms-panel-field-paypal_standard-enable, + #wpforms-panel-field-authorize_net-enable, + #wpforms-panel-field-square-enable`}};return l} \ No newline at end of file diff --git a/plugins/wpforms-lite/assets/js/admin/builder/modules/captcha.min.js b/plugins/wpforms-lite/assets/js/admin/builder/modules/captcha.min.js new file mode 100644 index 0000000..f541020 --- /dev/null +++ b/plugins/wpforms-lite/assets/js/admin/builder/modules/captcha.min.js @@ -0,0 +1 @@ +export default function(e,t,n,a,c){let o=c.$builder,i={init(){i.bcInit(),i.events(),i.captchaToggle()},bcInit(){["captchaToggle","captchaUpdate"].forEach(e=>{a[e]=i[e]})},events(){o.on("change","#wpforms-panel-field-settings-recaptcha",function(){i.captchaToggle()}),o.on("click",".wpforms-panel-content-also-available-item-add-captcha",function(e){e.preventDefault();e=o.find("#wpforms-add-fields-captcha");e.data("action")?e.trigger("click"):a.fieldAdd("captcha",{}).done(function(e){a.panelSwitch("fields"),n("#wpforms-field-"+e.data.field.id).trigger("click")})})},captchaToggle(){var e=o.find(".wpforms-field-recaptcha"),t=n("#wpforms-panel-field-settings-recaptcha"),a=t.data("provider")||"recaptcha";e.length&&(t.is(":checked")?e.show().toggleClass("is-recaptcha","recaptcha"===a):e.hide())},captchaUpdate(){var e={action:"wpforms_update_field_captcha",id:a.settings.formID,nonce:wpforms_builder.nonce};return n.post(wpforms_builder.ajax_url,e,function(c){if(c.success){let e={title:!1,content:!1,icon:"fa fa-exclamation-circle",type:"orange",boxWidth:"450px",buttons:{confirm:{text:wpforms_builder.ok,btnClass:"btn-confirm",keys:["enter"]}}},t=n("#wpforms-panel-field-settings-recaptcha"),a=c.data.current;t.data("provider",c.data.provider),"configured_not_enabled"!==a&&"configured_enabled"!==a||(a=t.prop("checked")?"configured_enabled":"configured_not_enabled",e.buttons.confirm.action=function(){t.prop("checked","configured_not_enabled"===a).trigger("change")}),e.title=c.data.cases[a].title,e.content=c.data.cases[a].content,c.data.cases[a].cancel&&(e.buttons.cancel={text:wpforms_builder.cancel,keys:["esc"]}),n.confirm(e)}else console.log(c)}).fail(function(e){console.log(e.responseText)})}};return i} \ No newline at end of file diff --git a/plugins/wpforms-lite/assets/js/admin/builder/modules/copy-paste.min.js b/plugins/wpforms-lite/assets/js/admin/builder/modules/copy-paste.min.js new file mode 100644 index 0000000..8afc57c --- /dev/null +++ b/plugins/wpforms-lite/assets/js/admin/builder/modules/copy-paste.min.js @@ -0,0 +1,8 @@ +export default function(e,t,n){let p={el:{},init(){p.setup(),p.el.$builder.on("wpformsBuilderReady",p.ready)},ready(){try{p.MultiSelect=WPForms.Admin.Builder.MultiSelect,p.MultiSelectActions=WPForms.Admin.Builder.MultiSelectActions,p.KeyboardShortcuts=WPForms.Admin.Builder.KeyboardShortcuts,p.WPFormsBuilder=WPFormsBuilder,p.FieldLayout=WPForms.Admin.Builder.FieldLayout,p.WPFormsChoicesJS=WPForms.Admin.Builder.WPFormsChoicesJS}catch(e){return void wpf.debug("CopyPaste: Dependency modules are not available.")}var e=WPFormsBuilder.getElementsCache();p.el={...p.el,...e?.elements},p.events()},setup(){p.el.$builder=n("#wpforms-builder"),p.el.$fieldsPanel=p.el.$builder.find(".wpforms-panel-fields")},events(){p.el.$document.on("keydown",p.onKeydown)},onKeydown(e){p.KeyboardShortcuts.pressMetaKey(e)&&!p.KeyboardShortcuts.isUserTypingInField()&&!p.isUserSelectedText()&&p.isFieldsPanelActive()&&("KeyC"===(e=e.originalEvent||e).code?p.copySelectedFieldsToClipboard():"KeyV"===e.code&&p.pasteFieldsFromClipboard())},isUserSelectedText(){return 0p.MultiSelect?.isDuplicationAllowed(e));if(0!==e.length){var t={fieldsData:p.getFieldsData(e),fieldIds:e},t=JSON.stringify(t,null,2);try{localStorage.setItem("wpforms_copied_fields",t),p.showCopyToast(e.length)}catch(e){console.error("Copy/Paste: Failed to store copied fields in localStorage:",e)}}},getFieldsData(e){let l={};return e.forEach(e=>{var t=p.getFieldDataWithHTML(e);t&&(l[e]=t,["layout","repeater"].includes(t.type))&&(l=p.addNestedFieldsToFieldsData(e,l))}),l},addNestedFieldsToFieldsData(e,l){var i=l[e].fieldSettings["columns-json"];if(i?.length){let t=[];i.forEach(e=>{e.fields?.length&&(t=t.concat(e.fields))}),(l={...l,...p.getFieldsData(t)})[e].nestedFieldIds=t}return l},showCopyToast(e){n(".wpforms-copy-toast").remove();var t=p.KeyboardShortcuts.getMetaKeyName(),e=1===e?wpforms_builder.multi_select.copy_toast_single.replace("%1$s",t):wpforms_builder.multi_select.copy_toast_multiple.replace("%1$d",e).replace("%2$s",t);let l=n(` +
+
+ + ${e} +
+
+ `);p.el.$builder.append(l),setTimeout(()=>{l.addClass("wpforms-copy-toast-visible")},10),setTimeout(()=>{l.removeClass("wpforms-copy-toast-visible"),setTimeout(()=>{l.remove()},300)},3e3)},getFieldDataWithHTML(e){var t=n("#wpforms-field-"+e),l=n("#wpforms-field-option-"+e);return 0===t.length||0===l.length?null:{type:t.data("field-type"),id:e,fieldSettings:wpf.getField(e),fieldPreviewHTML:p.getFieldPreviewHTML(t),fieldOptionsHTML:p.getFieldOptionsHTML(l)}},getFieldPreviewHTML(e){var t,l,i=e.data("field-type");return"layout"===i||"repeater"===i?p.getLayoutFieldHTMLWithoutNestedFields(e):(i=p.WPFormsBuilder?.dropdownField,t=e.data("field-id"),(l=i?.helpers.isModernSelect(e.find("> .choices .primary-input")))&&i?.helpers.convertModernToClassic(t),e=e[0].outerHTML,l&&i?.helpers.convertClassicToModern(t),e)},getFieldOptionsHTML(e){return p.replaceChoicesJSWithOriginalSelect(e.clone(!0))[0].outerHTML},replaceChoicesJSWithOriginalSelect(r){return r.find("select.choices__input").each(function(){var t=n(this),i=p.WPFormsChoicesJS?.getRegistryData(t),d=i?.element;if(d){let l=n(d);d=t.attr("id");let e=(t.data("choicesjs")||i?.instance)?.getValue();Array.isArray(e)||(e=e?[e]:[]),l.val(e.map(e=>e.value)),l.find("option").removeAttr("selected"),e.forEach(function(e){let t=l.find(`option[value="${CSS.escape(e.value)}"]`);t.length||(t=n("