!3519 doc(#I5ZOFF): add zh-TW localization file

* doc: 增加繁体中文资源文档
* doc: 更新本地化文档增加 json 文件放置位置说明
* chore: 移动资源文件到项目文件夹
This commit is contained in:
Argo 2022-11-09 15:42:27 +00:00
parent aafaeb6d09
commit d7bd0b4f58
9 changed files with 377 additions and 9 deletions

View File

@ -132,6 +132,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.Topology",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BootstrapBlazor.BarCode", "src\Extensions\Components\BootstrapBlazor.BarCode\BootstrapBlazor.BarCode.csproj", "{7F7F3B85-7B15-485C-8DC2-BAFD8C086957}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localizer", "localizer", "{699C2CBB-AAF3-4F70-B5D0-A3EDBD5D73B8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "localization", "localization", "{1BA43FCA-FA64-449E-A1F1-9C2C4A1D2D3F}"
ProjectSection(SolutionItems) = preProject
localization\de.json = localization\de.json
localization\es.json = localization\es.json
localization\pt.json = localization\pt.json
localization\zh-TW.json = localization\zh-TW.json
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU

338
localization/zh-TW.json Normal file
View File

@ -0,0 +1,338 @@
{
"BootstrapBlazor.Components.AutoComplete": {
"NoDataTip": "無匹配資料",
"PlaceHolder": "請輸入"
},
"BootstrapBlazor.Components.Captcha": {
"HeaderText": "請完成安全認證",
"BarText": "向右滑動填滿拼圖",
"FailedText": "載入失敗",
"LoadText": "正在載入 ...",
"TryText": "再試一次"
},
"BootstrapBlazor.Components.Camera": {
"DeviceLabel": "攝影機",
"InitDevicesString": "正在識別攝影機",
"PlayText": "開啟",
"StopText": "關閉",
"PhotoText": "拍照",
"FrontText": "前面",
"BackText": "後面",
"NotFoundDevicesString": "未找到視訊相關設備"
},
"BootstrapBlazor.Components.Calendar": {
"PreviousYear": "上一年",
"PreviousMonth": "上一月",
"Today": "今天",
"NextMonth": "下一月",
"NextYear": "下一年",
"PreviousWeek": "上一周",
"WeekText": "本周",
"NextWeek": "下一周",
"WeekHeaderText": "周",
"WeekLists": "日,一,二,三,四,五,六",
"WeekNumberText": "第 {0} 周",
"Months": "1,2,3,4,5,6,7,8,9,10,11,12",
"Title": "{0} 年 {1} 月"
},
"BootstrapBlazor.Components.Cascader": {
"PlaceHolder": "請選擇 ..."
},
"BootstrapBlazor.Components.Console": {
"HeaderText": "系統監控",
"LightTitle": "通訊指示燈",
"ClearButtonText": "清除",
"AutoScrollText": "自動捲動"
},
"BootstrapBlazor.Components.DateTimePicker": {
"DatePlaceHolder": "選擇日期",
"TimePlaceHolder": "選擇時間",
"DateTimePlaceHolderText": "請選擇日期時間",
"DatePlaceHolderText": "請選擇日期",
"TimeFormat": "hh\\:mm\\:ss",
"DateFormat": "yyyy-MM-dd",
"DateTimeFormat": "yyyy-MM-dd HH\\:mm\\:ss",
"AiraPrevYearLabel": "前一年",
"AiraNextYearLabel": "後一年",
"AiraPrevMonthLabel": "上一月",
"AiraNextMonthLabel": "下一月",
"ClearButtonText": "清空",
"NowButtonText": "此刻",
"ConfirmButtonText": "確定",
"CancelButtonText": "取消",
"YearText": "{0} 年",
"MonthText": "{0} 月",
"YearPeriodText": "{0} 年 - {1} 年",
"Months": "1,2,3,4,5,6,7,8,9,10,11,12",
"MonthLists": "一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月",
"WeekLists": "日,一,二,三,四,五,六",
"GenericTypeErroMessage": "DateTimePicker 元件僅支援綁定泛型為 DateTime 或者 DateTime?",
"Today": "今天",
"Yesterday": "昨天",
"Weekago": "一周前"
},
"BootstrapBlazor.Components.DateTimeRange": {
"SeparateText": "至",
"StartPlaceHolderText": "開始日期",
"EndPlaceHolderText": "結束日期",
"ClearButtonText": "清空",
"TodayButtonText": "今天",
"ConfirmButtonText": "確定",
"DateFormat": "yyyy-MM-dd",
"Last7Days": "最近 7 天",
"Last30Days": "最近 30 天",
"ThisMonth": "這個月",
"LastMonth": "上個月"
},
"BootstrapBlazor.Components.BootstrapInputNumber": {
"ParsingErrorMessage": "{0}欄位值必須為 Number 類型"
},
"BootstrapBlazor.Components.ResultDialogOption": {
"ButtonYesText": "確認",
"ButtonNoText": "取消",
"ButtonCloseText": "關閉"
},
"BootstrapBlazor.Components.DropdownList": {
"PlaceHolder": "請選擇 ..."
},
"BootstrapBlazor.Components.Editor": {
"PlaceHolder": "點擊後編輯"
},
"BootstrapBlazor.Components.EditorForm": {
"ModelInvalidOperationExceptionMessage": "驗證表單與 {0} 綁定模型不一致",
"PlaceHolderText": "請輸入 ..."
},
"BootstrapBlazor.Components.Empty": {
"Text": "暫無描述"
},
"BootstrapBlazor.Components.EqualToValidator": {
"ErrorMessage": "你的輸入不相同"
},
"BootstrapBlazor.Components.ErrorLogger": {
"ToastTitle": "應用程式錯誤"
},
"BootstrapBlazor.Components.GoTop": {
"TooltipText": "返回頂端"
},
"BootstrapBlazor.Components.Layout": {
"TooltipText": "點擊展開收縮左側菜單"
},
"BootstrapBlazor.Components.Logout": {
"PrefixDisplayNameText": "歡迎",
"PrefixUserNameText": "當前帳號:"
},
"BootstrapBlazor.Components.LogoutLink": {
"Text": "登出"
},
"BootstrapBlazor.Components.Menu": {
"InvalidOperationExceptionMessage": "SideMenu 元件不可以獨立使用,請使用 Menu 元件設置 IsVertical=true"
},
"BootstrapBlazor.Components.ModalDialog": {
"CloseButtonText": "關閉",
"SaveButtonText": "儲存",
"PrintButtonText": "列印"
},
"BootstrapBlazor.Components.MultiSelect": {
"PlaceHolder": "點擊進行多選 ...",
"SelectAllText": "全選",
"ReverseSelectText": "反選",
"ClearText": "清除",
"MinErrorMessage": "最少請選擇 {0} 項",
"MaxErrorMessage": "最多可以選擇 {0} 項"
},
"BootstrapBlazor.Components.Pagination": {
"AiraPageLabel": "分頁元件",
"AiraPrevPageText": "上一頁",
"AiraFirstPageText": "第一頁",
"AiraNextPageText": "下一頁",
"PageInfoText": "顯示第 {0} 到第 {1} 筆記錄",
"TotalInfoText": ",總共 {0} 筆記錄",
"PrePageInfoText": "每頁顯示",
"RowInfoText": "筆記錄",
"LabelString": "第 {0} 頁",
"SelectItemsText": "{0}"
},
"BootstrapBlazor.Components.PopConfirmButton": {
"CloseButtonText": "取消",
"ConfirmButtonText": "確定",
"Content": "你確定要執行此項操作嗎?"
},
"BootstrapBlazor.Components.PrintButton": {
"Text": "列印"
},
"BootstrapBlazor.Components.Search": {
"SearchButtonText": "搜尋"
},
"BootstrapBlazor.Components.Select": {
"PlaceHolder": "請選擇 ..."
},
"BootstrapBlazor.Components.SelectTree": {
"PlaceHolder": "請選擇 ..."
},
"BootstrapBlazor.Components.StringLengthValidator": {
"ErrorMessage": "最多可以輸入 {{0}} 個字元"
},
"BootstrapBlazor.Components.SweetAlert": {
"CloseButtonText": "關閉",
"CancelButtonText": "取消",
"ConfirmButtonText": "確認"
},
"BootstrapBlazor.Components.Switch": {
"OnInnerText": "開",
"OffInnerText": "關"
},
"BootstrapBlazor.Components.Tab": {
"CloseCurrentTabText": "關閉當前標籤",
"CloseOtherTabsText": "關閉其他標籤",
"CloseAllTabsText": "關閉所有標籤",
"NotFoundTabText": "未找到"
},
"BootstrapBlazor.Components.Table": {
"AddButtonText": "新增",
"EditButtonText": "編輯",
"UpdateButtonText": "更新",
"DeleteButtonText": "刪除",
"CancelButtonText": "取消",
"SaveButtonText": "保存",
"CloseButtonText": "關閉",
"CancelDeleteButtonText": "取消",
"ConfirmDeleteButtonText": "刪除",
"ConfirmDeleteContentText": "確認要刪除選中的所有列嗎?",
"RefreshButtonText": "重整",
"CardViewButtonText": "視圖",
"ColumnButtonTitleText": "欄位顯示隱藏控制",
"ColumnButtonText": "欄",
"ExportButtonText": "匯出資料",
"SearchPlaceholderText": "搜尋",
"SearchButtonText": "搜尋",
"ResetSearchButtonText": "清空搜尋",
"AdvanceButtonText": "高級搜尋",
"CheckboxDisplayText": "選擇",
"EditModalTitle": "編輯視窗",
"AddModalTitle": "新建窗口",
"LineNoText": "序號",
"ColumnButtonTemplateHeaderText": "操作",
"SearchTooltip": "<div class='search-input-tooltip'>輸入任意字串全域搜尋</br><kbd>Enter</kbd> 搜索 <kbd>ESC</kbd> 清除搜索</div>",
"SearchModalTitle": "搜尋條件",
"AddButtonToastTitle": "新建資料",
"AddButtonToastContent": "未提供新建資料方法,無法新建資料",
"EditButtonToastTitle": "編輯資料",
"EditButtonToastNotSelectContent": "請選擇要編輯的資料",
"EditButtonToastReadonlyContent": "選項不可編輯",
"EditButtonToastMoreSelectContent": "只能選擇一項要編輯的資料",
"EditButtonToastNoSaveMethodContent": "未提供儲存資料方法,無法編輯資料",
"SaveButtonToastTitle": "儲存資料",
"SaveButtonToastContent": "未提供儲存資料方法,無法儲存資料",
"SaveButtonToastResultContent": "儲存資料{0}, {1} 秒後自動關閉",
"SuccessText": "成功",
"FailText": "失敗",
"DeleteButtonToastTitle": "刪除資料",
"DeleteButtonToastContent": "請選擇要刪除的資料, {0} 秒後自動關閉",
"DeleteButtonToastResultContent": "刪除資料{0}, {1} 秒後自動關閉",
"DeleteButtonToastCanNotDeleteContent": "選中資料中有不可刪除資料, {0} 秒後自動關閉",
"DataServiceInvalidOperationText": "未註冊 'BootstrapBlazor.Components.IDataService`1[{0}]' 服務",
"NotSetOnTreeExpandErrorMessage": "未設置 OnTreeExpand 回檔委託方法",
"UnsetText": "點擊昇冪",
"SortAscText": "點擊降冪",
"SortDescText": "取消排序",
"EmptyText": "無資料",
"ExportToastTitle": "匯出資料",
"ExportToastContent": "匯出資料 {0}{1} 秒後自動關閉",
"ExportToastInProgressContent": "正在匯出資料,請稍後, {0} 秒後自動關閉",
"ExportExcelDropdownItemText": "微軟 Excel 格式"
},
"BootstrapBlazor.Components.EditDialog": {
"CloseButtonText": "關閉",
"SaveButtonText": "儲存"
},
"BootstrapBlazor.Components.TableFilter": {
"Title": "過濾",
"ClearButtonText": "重置",
"FilterButtonText": "確認",
"BoolFilter.AllText": "全部",
"BoolFilter.TrueText": "選中",
"BoolFilter.FalseText": "未選中",
"GreaterThanOrEqual": "大於等於",
"LessThanOrEqual": "小於等於",
"GreaterThan": "大於",
"LessThan": "小於",
"Equal": "等於",
"NotEqual": "不等於",
"Contains": "包含",
"NotContains": "不包含",
"EnumFilter.AllText": "全選"
},
"BootstrapBlazor.Components.FilterLogicItem": {
"And": "並且",
"Or": "或者"
},
"BootstrapBlazor.Components.SearchDialog": {
"ResetButtonText": "重置",
"QueryButtonText": "查詢"
},
"BootstrapBlazor.Components.SwitchButton": {
"OnText": "開",
"OffText": "關"
},
"BootstrapBlazor.Components.Timer": {
"PauseText": "暫停",
"ResumeText": "繼續",
"CancelText": "取消",
"StarText": "開始計時"
},
"BootstrapBlazor.Components.Toggle": {
"OnText": "展開",
"OffText": "收縮"
},
"BootstrapBlazor.Components.Transfer": {
"LeftPanelText": "全部",
"RightPanelText": "已選",
"MinErrorMessage": "最少請選擇{0}項",
"MaxErrorMessage": "最多可選擇{0}項"
},
"BootstrapBlazor.Components.TransferPanel": {
"SearchPlaceHolderString": "請輸入 ...",
"Text": "列表"
},
"BootstrapBlazor.Components.Tree": {
"NotSetOnTreeExpandErrorMessage": "未設置 OnExpandNodeAsync 回檔委託方法"
},
"BootstrapBlazor.Components.UploadBase": {
"DeleteButtonText": "刪除",
"BrowserButtonText": "瀏覽",
"FileExtensions": "檔副檔名必須為以下幾種格式: {0}",
"FileSizeValidation": "檔太大,檔限制大小為 {0}"
},
"BootstrapBlazor.Components.Handwritten": {
"SaveButtonText": "儲存",
"ClearButtonText": "清除"
},
"BootstrapBlazor.Components.SignaturePad": {
"SignAboveLabel": "在框內簽名",
"ClearBtnTitle": "清除",
"SignatureAlertText": "請先簽名",
"ChangeColorBtnTitle": "換顏色",
"UndoBtnTitle": "回復",
"CloseBtnTitle": "關閉",
"SaveBase64BtnTitle": "確定",
"SavePNGBtnTitle": "PNG",
"SaveJPGBtnTitle": "JPG",
"SaveSVGBtnTitle": "SVG"
},
"BootstrapBlazor.Components.NullableBoolItemsAttribute": {
"NullValueDisplayText": "請選擇 ...",
"TrueValueDisplayText": "True",
"FalseValueDisplayText": "False"
},
"BootstrapBlazor.Components.InsertRowMode": {
"Last": "最後",
"First": "最前"
},
"BootstrapBlazor.Components.IconDialog": {
"LabelText": "選擇圖示",
"LabelFullText": "完整內容",
"ButtonText": "點擊複製",
"DialogHeaderText": "請選擇圖示",
"CopiedTooltipText": "複製成功"
}
}

View File

@ -1020,7 +1020,6 @@
"N17": "Due to some systems such as",
"N18": "After the program runs, the thread cannot obtain the cultural information, and the default cultural information can be set through the configuration file",
"N19": "Enable localization",
"N20": "configuration file",
"N21": "pass",
"N22": "Set the fallback culture information, that is, use this configuration culture when the currently requested culture information is not found, through",
@ -1028,7 +1027,6 @@
"N24": "Enable .NET Core localization service",
"N25": "Add Bootstrap Blazor components",
"N26": "Add multi-language support configuration information",
"N27": "Enable localization",
"N28": "Add BootstrapBlazor component",
"N29": "Add localization service configuration information",
@ -1052,7 +1050,6 @@
"N47": "Set up RESX format multilingual resource files such as Program.{CultureName}.resx",
"N48": "Set Json format embedded resource file",
"N49": "Set Json physical path file",
"N50": "or use service extension method",
"N51": "Ignore the loss of localized key-value culture information",
"N52": "Attach your own json multilingual culture resource file such as zh-TW.json",
@ -1066,7 +1063,11 @@
"N60": "Set default culture to zh-CN",
"N61": "Configure whether to display missing localized resource information",
"N62": "Add BootstrapBlazor service",
"N63": "Ignore the loss of localized key-value culture information"
"N63": "Ignore the loss of localized key-value culture information",
"LocalizationFileDesc": "The component built-in localization resource files are <code>en</code> <code>zh</code>. The other localization resource files <code>de</code> <code>es</code> <code>pt</code> <code>zh-TW</code> which are placed in the project folder <code>localization</code>. you can be downloaded by yourself and imported into the project through the injection service <a href=\"https://gitee.com/LongbowEnterprise/BootstrapBlazor/tree/main/localization\" target=\"_blank\"><img src=\"_content/BootstrapBlazor.Shared/images/gitee.svg\" class=\"gitee-icon\"></a> <a href=\"https://github.com/dotnetcore/BootstrapBlazor/tree/main/localization\" target=\"_blank\"><i class=\"fa-brands fa-github github-icon\"></i></a>",
"AdditionalJsonFile": "Additional <code>json</code> localization file",
"ES": "Spanish (es)",
"TW": "中國台灣 (zh-TW)"
},
"BootstrapBlazor.Shared.Pages.Template": {
"Title": "Project Template",

View File

@ -1020,7 +1020,6 @@
"N17": "由于某些系统如",
"N18": "等程序运行后线程无法获得文化信息,可以通过配置文件设置默认文化信息",
"N19": "开启本地化功能",
"N20": "配置文件",
"N21": "通过",
"N22": "设置回退文化信息,即未找到当前请求的文化信息时使用此配置文化,通过",
@ -1028,7 +1027,6 @@
"N24": "启用 .NET 核心本地化服务",
"N25": "增加 Bootstrap Blazor 组件",
"N26": "增加多语言支持配置信息",
"N27": "启用本地化",
"N28": "增加 BootstrapBlazor 组件",
"N29": "增加本地化服务配置信息",
@ -1052,7 +1050,6 @@
"N47": "设置 RESX 格式多语言资源文件 如 Program.{CultureName}.resx",
"N48": "设置 Json 格式嵌入式资源文件",
"N49": "设置 Json 物理路径文件",
"N50": "或者使用服务扩展方法",
"N51": "忽略本地化键值文化信息丢失",
"N52": "附加自己的 json 多语言文化资源文件 如 zh-TW.json",
@ -1066,7 +1063,11 @@
"N60": "设置默认文化为 zh-CN",
"N61": "配置是否显示缺失本地化资源信息",
"N62": "增加 BootstrapBlazor 服务",
"N63": "忽略本地化键值文化信息丢失"
"N63": "忽略本地化键值文化信息丢失",
"LocalizationFileDesc": "组件内置本地化资源文件为 <code>en</code> <code>zh</code> 由网友提供的其他本地化资源文件 <code>de</code> <code>es</code> <code>pt</code> <code>zh-TW</code> 放置在项目文件夹 <code>localization</code> 内,可自行下载通过注入服务引入到项目中 <a href=\"https://gitee.com/LongbowEnterprise/BootstrapBlazor/tree/main/localization\" target=\"_blank\"><img src=\"_content/BootstrapBlazor.Shared/images/gitee.svg\" class=\"gitee-icon\"></a> <a href=\"https://github.com/dotnetcore/BootstrapBlazor/tree/main/localization\" target=\"_blank\"><i class=\"fa-brands fa-github github-icon\"></i></a>",
"AdditionalJsonFile": "额外本地化语言 <code>json</code> 文件",
"ES": "西班牙语es",
"TW": "中國台灣zh-TW"
},
"BootstrapBlazor.Shared.Pages.Template": {
"Title": "项目模板",

View File

@ -8,8 +8,9 @@
</p>
<Tips>
@Localizer["T1"] <a href="https://docs.microsoft.com/zh-cn/aspnet/core/blazor/globalization-localization" target="_blank">@Localizer["T2"]</a>
<div>@Localizer["T1"] <a href="https://docs.microsoft.com/zh-cn/aspnet/core/blazor/globalization-localization" target="_blank">@Localizer["T2"]</a></div>
<div>@Localizer["T3"] <code>wasm</code> @Localizer["T4"] <code>en</code><Anchor Target="lang">@Localizer["T5"]</Anchor></div>
<div>@((MarkupString)Localizer["LocalizationFileDesc"].Value)</div>
</Tips>
<p><b>@Localizer["N1"]</b></p>
@ -21,8 +22,13 @@
<ul class="ul-demo mt-2">
<li>@Localizer["N6"]</li>
<li>@Localizer["N7"]</li>
</ul>
<div class="mt-2">@((MarkupString)Localizer["AdditionalJsonFile"].Value)</div>
<ul class="ul-demo mt-2">
<li>@Localizer["N8"]</li>
<li>@Localizer["N9"]</li>
<li>@Localizer["ES"]</li>
<li>@Localizer["TW"]</li>
</ul>
<div class="mt-2">
@Localizer["N10"] <code>zh-CN</code> @Localizer["N11"] <code>zh-CN</code> @Localizer["N12"]<code>zh-CN</code> @Localizer["N13"] <code>zh</code>

View File

@ -1531,6 +1531,18 @@ section {
--ad-margin-bottom: 0;
}
.gitee-icon {
width: 32px;
height: auto;
}
.github-icon {
font-size: 32px;
line-height: 32px;
vertical-align: middle;
color: #000;
}
@media (max-width: 767.98px) {
.main .top-row:not(.auth) {
display: none;